public class AddEditRefundreasonAction extends ActionSupport{

private String command;
private String submitType;

private List transaction;
private String transaction_id;
private String amount;
private String refund_reason;
private String reasonselect;
private String successMsg ;
private String status_id;
String version ; public String execute()
{
try
{
if (null == command)
{
if (!this.displayEdit()) {
return ERROR;
}
}

if ("17".equals(status_id)){
addActionError("Register chargeback Already!You can't register refund!");
return INPUT;
}

if (submitType == null)
return INPUT; if (null == refund_reason || "".equals(refund_reason)) {
addActionError("Refund reason can not be empty!");
return INPUT;
}


if (reasonselect != null && !"Ownreason".equals(reasonselect)) {
refund_reason = reasonselect;
amount = reasonselect;
}

boolean flag = false;
if (command.equals("save"))
{
if (isRefundPresence()) {
addActionError("The data presence! Refund Error!");
return INPUT;
}
flag = this.update();
}
if(!flag){
if(version.equals("11")){
addActionError("Transaction refund request failed.");
this.sendMailForTracsact("Transaction refund request failed. ");
}else{
addActionError("Transaction refund failed. ");
this.sendMailForTracsact("Transaction refund failed. ");
}
return INPUT;
}else{
if(version.equals("11")){
addActionMessage("Transaction refund requested.");
this.sendMailForTracsact("Transaction refund requested.");
}else{
addActionMessage("Transaction refunded. ");
this.sendMailForTracsact("Transaction refunded. ");
}
}
}
catch(Exception ex)
{
addActionError("Transaction refund failed. Exception!");
ex.printStackTrace();
return INPUT;
} return SUCCESS;
} private boolean isRefundPresence() {
boolean flag = false;
try {
List refundList = new DataOperation().selectData("select transaction_id from refund where transaction_id ='" + transaction_id + "'");
if (refundList.size()>0 && refundList != null) {
flag = true;
}
} catch (Exception e) {
addActionError(e.getMessage());
}
return flag;
} private boolean update(){
boolean flag = false;
try{
List submitList = new DataOperation().selectData("select transaction_id,trans_currency,trans_amount,version,(select scandorder_merchant_id from scandorderMerchants where merchant_id=a.merchant_id) as scand_merchant_id,(select merchant_account from merchant where merchant_id=a.merchant_id) as merchant_account,(select merchant_control from merchant where merchant_id=a.merchant_id) as partner_control,bank_id from transaction as a where transaction_id=" + this.transaction_id);
String transaction_id = this.getMailValue(submitList.get(0),"transaction_id");
String trans_currency = this.getMailValue(submitList.get(0),"trans_currency");
String trans_amount = this.getMailValue(submitList.get(0),"trans_amount");
String bank_id = this.getMailValue(submitList.get(0),"bank_id");
version  = this.getMailValue(submitList.get(0),"version");
String merchant_account = this.getMailValue(submitList.get(0),"merchant_account");
String partner_control = this.getMailValue(submitList.get(0),"partner_control");
JavaEncrypt sha1 = new JavaEncrypt();
String urlParm ="&version="+version+"&merchant_account="+merchant_account+
"&control="+sha1.Encrypt(merchant_account+transaction_id+trans_amount+trans_currency+version+partner_control,"SHA-1")+
"&amount="+trans_amount+
"&currency="+trans_currency+
"&order_id="+transaction_id+
"&refund_reason=" + this.refund_reason +
"&is_report_user=1";
String postMessage = "";
if (DBConnection.TESTING_FLAG) {
postMessage = ServerPost.post(urlParm,"https://payment.dnlasia.com:8443/start_refund.php");
} else {
postMessage = ServerPost.post(urlParm,"https://payment.dnlasia.com:8443/start_refund.php");
}
flag=this.checkXml(postMessage);
ReportUser currentUser = (ReportUser) ActionContext.getContext().getSession().get(ORStatics.REPORT_USER);
new DataOperation().insertSystemLog(new SystemLog(currentUser,Constants.SYSTEM_LOG_MODULE_MANAGEMENT, "AddEditRefundReason - TrnID:" + transaction_id + "    USER: " + currentUser.getName(),ActionContext.getContext()));
}
catch(Exception ex)
{
addActionError(ex.getMessage());
}
return flag;
}

private float getSubTotal(Object obj, String header){
float val = 0;
try{
val = Float.parseFloat(UtilityFunction.getStringZero(((HashMap)obj).get(header)));
}
catch(Exception ex){
ex.printStackTrace();
}
return val;
}
private boolean displayEdit(){
boolean flag = false;
try{
transaction = this.getMerchantList();
if(null != transaction && transaction.size() > 0){
String getStatus = UtilityFunction.getString(((HashMap) transaction.get(0)).get("status_id"));
if (getStatus.equals("3") || getStatus.equals("12") || getStatus.equals("9")) {
this.refund_reason = UtilityFunction.getString(((HashMap) transaction.get(0)).get("refund_reason"));
this.amount = UtilityFunction.getString(((HashMap) transaction.get(0)).get("trans_amount"));
this.status_id = UtilityFunction.getString(((HashMap) transaction.get(0)).get("status_id"));
flag = true;
}else {
this.transaction_id = "";
addActionError("Already refund,please reload Unique Transaction Overview!");
}
}else {
this.transaction_id = "";
addActionError("Transaction Error! ");
}
}catch(Exception ex)
{
addActionError(ex.getMessage());
UtilityFunction.exceptionHandle(this, ex, "selectData");
}
return flag;
}

private List getMerchantList() throws Exception{
String sql = "select status_id,refund_reason,FORMAT(trans_amount/100, 2) as trans_amount,status_id from transaction where transaction_id = " + transaction_id;
if (ActionContext.getContext().getSession().get("merchant_id") != null) {
sql  = sql + " and  merchant_id in (" + UtilityFunction.addSlashes(ActionContext.getContext().getSession().get("OwnerMerchant_ID").toString()) + " )";
}

return new DataOperation().selectData(sql);
}这是我的action,我页面有个Amount,Amount 的值用文本框装着,用一个checkbox控制,选中checkbox就不能修改Amount 值,现在我想请教一个问题:如果我那个Amount 值修改比原来的大了,那么就不能save,同时报错误信息。请问各位高手教教怎么在action里面做这个操作。谢谢各位来帮忙。小弟万分感激。