/// <summary> /// Handles the Click event of the btnRefundTransaction control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="T:System.EventArgs"/> instance containing the event data.</param> protected void btnRefundTransaction_Click(object sender, EventArgs e) { try { if (Page.IsValid) { TextBox txtRefundQuantity = null; Order order = new Order(orderId); OrderItem orderItem = null; OrderItem refundedOrderItem = null; Order refundOrder = new Order(order, WebUtility.GetUserName()); foreach (DataGridItem item in dgOrderItems.Items) { txtRefundQuantity = item.Cells[0].FindControl("txtRefundQuantity") as TextBox; if (txtRefundQuantity != null) { int quantity = 0; bool isParsed = int.TryParse(txtRefundQuantity.Text, out quantity); if (isParsed) { orderItem = new OrderItem(item.Cells[0].Text); refundedOrderItem = new OrderItem(); //refundedOrderItem.OrderId = orderItem.OrderId; refundedOrderItem.ProductId = orderItem.ProductId; refundedOrderItem.Name = orderItem.Name; refundedOrderItem.Sku = orderItem.Sku; refundedOrderItem.Quantity = quantity; refundedOrderItem.PricePaid = orderItem.PricePaid; refundedOrderItem.Attributes = orderItem.Attributes; refundedOrderItem.Weight = orderItem.Weight; refundedOrderItem.ItemTax = orderItem.ItemTax; refundedOrderItem.DiscountAmount = orderItem.DiscountAmount; refundOrder.OrderItemCollection.Add(refundedOrderItem); } } } decimal additionalRefundAmount = 0; decimal.TryParse(txtAdditionalRefundAmount.Text, out additionalRefundAmount); refundOrder.ShippingAmount = additionalRefundAmount; Transaction transaction = new TransactionController().FetchByOrderIdAndTransactionTypeId(orderId, (int)TransactionType.Charge); if (transaction.GatewayName == "PayPal Standard") { OrderController.RefundStandard(transaction, refundOrder, WebUtility.GetUserName()); } else { OrderController.Refund(transaction, refundOrder, WebUtility.GetUserName()); } base.MasterPage.MessageCenter.DisplaySuccessMessage(LocalizationUtility.GetText("lblOrderRefunded")); } } catch (PaymentServiceException pse) { Logger.Error(typeof(actions).Name + ".btnRefundTransaction_Click", pse); base.MasterPage.MessageCenter.DisplayFailureMessage(LocalizationUtility.GetPaymentProviderErrorText(pse.Message)); } catch (Exception ex) { Logger.Error(typeof(actions).Name + ".btnRefundTransaction_Click", ex); base.MasterPage.MessageCenter.DisplayCriticalMessage(ex.Message); } }