Exemplo n.º 1
0
 /// <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);
     }
 }