using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Admin_OrderWizard_Refund : WebBlocks.AdministrativePage { private int OrderID { get { return (ViewState["OrderID"] == null ? 0 : (int)ViewState["OrderID"]); } set { ViewState["OrderID"] = value; } } private decimal MaxAmount { get { return (decimal)ViewState["MaxAmount"]; } set { ViewState["MaxAmount"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { OrderID = Int32.Parse(Request["OrderID"]); DataRow dr = Database.Orders_GetByOrderID(OrderID); if (!(bool)dr["IsCaptured"] || (string)dr["PaymentMethod"] != "Credit Card") wizRefund.ActiveStepIndex = 1; if (dr["AdminComments"] != DBNull.Value) txtComments.Text = (string)dr["AdminComments"]; // the maximum amount that can be refunded is the amount of the order minus // any amount that has been refunded already. MaxAmount = (decimal)dr["Amount"] - (decimal)dr["RefundAmount"]; txtRefundAmount.Text = String.Format("{0:f}", MaxAmount); } } protected void wizDelay_FinishButtonClick(object sender, WizardNavigationEventArgs e) { Database.Orders_UpdateForProcessing(OrderID, txtComments.Text, null, 5, null, null); Response.Redirect("EditOrder.aspx?OrderID=" + OrderID.ToString()); } protected void btnRefund_Click(object sender, EventArgs e) { decimal RefundAmount = Decimal.Parse(txtRefundAmount.Text); Gateways.GatewayBase gateway = Gateways.GatewayBase.GetGateway(Configuration.Get("Gateways.PaymentGateway")); if (!gateway.CreditFunds(OrderID, RefundAmount)) { DataRow dr = Database.Orders_GetByOrderID(OrderID); litRefund.Text = "
Refunding failed for the following reason:
"; litRefund.Text += (dr["LastResponseText"] == DBNull.Value ? "No Reason" : (string)dr["LastResponseText"]); litRefund.Text += "
"; } else { Database.Orders_SetRefundAmount(OrderID, RefundAmount); litRefund.Text = "Refund successful."; } } }