Пример #1
0
        private void btnCalculate_Click(object sender, RoutedEventArgs e)
        {
            if (ValidationManager.Validate(this.LayoutRoot))
            {
                RefundVM vm = this.DataContext as RefundVM;
                refundFacade.Calculate(vm, (obj, args) =>
                {
                    vm.SOCashPointRate            = args.Result.SOCashPointRate;
                    vm.DeductPointFromAccount     = args.Result.DeductPointFromAccount;
                    vm.DeductPointFromCurrentCash = args.Result.DeductPointFromCurrentCash;
                    vm.OrgPointAmt       = args.Result.OrgPointAmt;
                    vm.PointAmt          = args.Result.PointAmt;
                    vm.OrgCashAmt        = args.Result.OrgCashAmt;
                    vm.CashAmt           = args.Result.CashAmt;
                    vm.OrgGiftCardAmt    = args.Result.OrgGiftCardAmt;
                    vm.GiftCardAmt       = args.Result.GiftCardAmt;
                    vm.PriceprotectPoint = args.Result.PriceprotectPoint;

                    //刷新界面的初算退款金额
                    vm.RefundItems.ForEach(item =>
                    {
                        RefundItemInfo tmpInfo = args.Result.RefundItems.FirstOrDefault(x => x.RegisterSysNo == item.RegisterSysNo);
                        if (tmpInfo != null)
                        {
                            item.RefundCash = tmpInfo.RefundCash;
                        }
                    });

                    Window.Alert(ResRefundMaintain.Info_OperateSuccessfully);
                });
            }
        }
Пример #2
0
        public IActionResult RefundReebux(RefundVM refund)
        {
            try
            {
                var user       = userManager.GetUserAsync(HttpContext.User).Result;
                var userwallet = walletService.GetWallets().Where(s => s.UserID == user.Id).FirstOrDefault();
                var product    = reebuxService.GetReebux(refund.ReebuxID.Value);

                Refund rf = new Refund();
                rf.Amount          = product.Amount;
                rf.Description     = refund.Description;
                rf.UserID          = user.Id;
                rf.WalletID        = userwallet.Id;
                rf.AddDate         = DateTime.Now;
                rf.Status          = 1;
                rf.IsGranted       = true;
                rf.ReebuxID        = refund.ReebuxID;
                userwallet.Balance = product.Balance;

                refundService.InsertRefund(rf);
                userwallet.Balance -= rf.Amount;
                walletService.UpdateWallet(userwallet);
                return(Ok(new TransactionResponse {
                    Message = "Successfully recieved, We'll verify your request. We will notify you.", IsSuccess = true
                }));
            }
            catch (Exception ex)
            {
                return(Ok(new TransactionResponse {
                    Message = "Something went wrong", IsSuccess = false
                }));
            }
        }
Пример #3
0
        public void CreateRefund(RefundVM refundVM)
        {
            var postRefund = new Fusebill.ApiWrapper.Dto.Post.Refund();

            postRefund.Amount            = refundVM.RefundAmount;
            postRefund.OriginalPaymentId = refundVM.Id;

            ApiClient.PostRefund(postRefund);
        }
Пример #4
0
        private void cmbRefundPayType_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            RefundVM vm = this.DataContext as RefundVM;

            if (vm.RefundPayType == null)
            {
                return;
            }
            vm.ValidationErrors.Clear();
            switch (vm.RefundPayType)
            {
            case RefundPayType.BankRefund:
                txtBankName.IsReadOnly       = false;
                txtBranchBankName.IsReadOnly = false;
                txtCardNo.IsReadOnly         = false;
                txtCardOwnerName.IsReadOnly  = false;

                txtPostAddress.IsReadOnly  = true;
                txtPostCode.IsReadOnly     = true;
                txtReceiverName.IsReadOnly = true;
                break;

            case RefundPayType.PostRefund:
                txtPostAddress.IsReadOnly  = false;
                txtPostCode.IsReadOnly     = false;
                txtReceiverName.IsReadOnly = false;

                txtBankName.IsReadOnly       = true;
                txtBranchBankName.IsReadOnly = true;
                txtCardNo.IsReadOnly         = true;
                txtCardOwnerName.IsReadOnly  = true;

                break;

            case RefundPayType.NetWorkRefund:
                txtBankName.IsReadOnly = false;

                txtBranchBankName.IsReadOnly = true;
                txtCardNo.IsReadOnly         = true;
                txtCardOwnerName.IsReadOnly  = true;
                txtPostAddress.IsReadOnly    = true;
                txtPostCode.IsReadOnly       = true;
                txtReceiverName.IsReadOnly   = true;
                break;

            default:
                txtBankName.IsReadOnly       = true;
                txtBranchBankName.IsReadOnly = true;
                txtCardNo.IsReadOnly         = true;
                txtCardOwnerName.IsReadOnly  = true;
                txtPostAddress.IsReadOnly    = true;
                txtPostCode.IsReadOnly       = true;
                txtReceiverName.IsReadOnly   = true;
                break;
            }
        }
Пример #5
0
 private void btnUpdate_Click(object sender, RoutedEventArgs e)
 {
     if (ValidationManager.Validate(this.LayoutRoot))
     {
         RefundVM vm = this.DataContext as RefundVM;
         refundFacade.Update(vm, (obj, args) =>
         {
             Window.Alert(ResRefundMaintain.Info_OperateSuccessfully);
         });
     }
 }
Пример #6
0
        private void btnGetShipFee_Click(object sender, RoutedEventArgs e)
        {
            RefundVM vm = this.DataContext as RefundVM;

            new RefundFacade(CPApplication.Current.CurrentPage).GetShipFee(vm, (obj, args) =>
            {
                UCShipFeeDetail uc = new UCShipFeeDetail();
                uc.DataContext     = args.Result;
                IDialog dialog     = CPApplication.Current.CurrentPage.Context.Window.ShowDialog(ResRefundMaintain.PopTitle_ShipFeeDetail, uc);
                uc.Dialog          = dialog;
            });
        }
Пример #7
0
        private void LoadRefund()
        {
            if (this.sysNo > 0)
            {
                refundFacade.Load(this.sysNo, (obj, args) =>
                {
                    this.vm = args.Result;

                    SetDataContext();
                });
            }
        }
Пример #8
0
        private void btnCancelSubmitAudit_Click(object sender, RoutedEventArgs e)
        {
            RefundVM vm = this.DataContext as RefundVM;

            refundFacade.CancelSubmitAudit(vm, (obj, args) =>
            {
                vm.Status = args.Result.Status;

                SetButtonStatus();

                Window.Alert(ResRefundMaintain.Info_OperateSuccessfully);
            });
        }
Пример #9
0
        private void btnVoid_Click(object sender, RoutedEventArgs e)
        {
            RefundVM vm = this.DataContext as RefundVM;

            refundFacade.Abandon(vm.SysNo.Value, (obj, args) =>
            {
                vm.Status = args.Result.Status;

                SetButtonStatus();

                Window.Alert(ResRefundMaintain.Info_OperateSuccessfully);
            });
        }
Пример #10
0
        public void CancelSubmitAudit(RefundVM model, EventHandler <RestClientEventArgs <RefundInfo> > callback)
        {
            string     relativeUrl = "/RMAService/Refund/CancelSubmitAudit";
            RefundInfo msg         = ConvertVM(model);

            restClient.Update <RefundInfo>(relativeUrl, msg, (obj, args) =>
            {
                if (args.FaultsHandle())
                {
                    return;
                }
                callback(obj, args);
            });
        }
Пример #11
0
        public IActionResult AddRefund(long?Id) //orderId
        {
            RefundVM refundVM = new RefundVM();
            string   uNameId  = "";
            string   uName    = "";

            uNameId = returnUserNameId();
            uName   = (_unitOfWork.ApplicationUser.GetAll().Where(q => q.UserName == User.Identity.Name).Select(q => q.Name)).FirstOrDefault();
            if (Id == null)
            {
                refundVM = new RefundVM()
                {
                    refund     = new Refund(),
                    OrdersList = _unitOfWork.Order.GetAll().Where(a => a.OrderStatus == SD.OrderStatusDone && !a.IsAdmin &&
                                                                  !_unitOfWork.Refund.GetAll().Any(q => q.OrderId == a.Id)).
                                 Select(i => new SelectListItem
                    {
                        Text  = i.CustName + "- Id: " + i.Id + " Quantity: " + i.Quantity,
                        Value = i.Id.ToString()
                    })
                };
                ViewBag.UName   = uName;
                ViewBag.ShowMsg = 0;
                ViewBag.failed  = false;
                return(View(refundVM));
            }
            else
            {
                refundVM = new RefundVM()
                {
                    refund     = new Refund(),
                    OrdersList = _unitOfWork.Order.GetAll().Where(a => a.Id == Id).
                                 Select(i => new SelectListItem
                    {
                        Text  = i.CustName + "- Id: " + i.Id + " Quantity: " + i.Quantity,
                        Value = i.Id.ToString()
                    })
                };
                ReturnLabel returnLabel = _unitOfWork.ReturnLabel.GetAll().Where(a => a.OrderId == Id).FirstOrDefault();
                if (returnLabel != null)
                {
                    refundVM.refund.ReturnId = returnLabel.Id;
                }
                ViewBag.UName   = uName;
                ViewBag.ShowMsg = 0;
                ViewBag.failed  = false;
                return(View(refundVM));
            }
        }
Пример #12
0
        /// <summary>
        /// 控制按钮的是否可用状态
        /// </summary>
        private void SetButtonStatus()
        {
            btnUpdate.IsEnabled            = false;
            btnCalculate.IsEnabled         = false;
            btnSubmitAudit.IsEnabled       = false;
            btnCancelSubmitAudit.IsEnabled = false;
            btnVoid.IsEnabled          = false;
            btnRefund.IsEnabled        = false;
            btnRefundBalance.IsEnabled = false;
            btnPrint.IsEnabled         = false;

            RefundVM vm = this.DataContext as RefundVM;

            if (vm.Status == RMARefundStatus.WaitingRefund)
            {
                btnUpdate.IsEnabled      = AuthMgr.HasFunctionPoint(AuthKeyConst.RMA_Refund_Update);
                btnCalculate.IsEnabled   = AuthMgr.HasFunctionPoint(AuthKeyConst.RMA_Refund_Calculate);
                btnSubmitAudit.IsEnabled = AuthMgr.HasFunctionPoint(AuthKeyConst.RMA_Refund_SubmitAudit);
                btnVoid.IsEnabled        = AuthMgr.HasFunctionPoint(AuthKeyConst.RMA_Refund_Abandon);
                vm.RefundItems.ForEach(p => p.CanChangeRefundPriceType = true);
            }
            else if (vm.Status == RMARefundStatus.WaitingAudit)
            {
                btnSubmitAudit.IsEnabled       = false;
                btnCancelSubmitAudit.IsEnabled = AuthMgr.HasFunctionPoint(AuthKeyConst.RMA_Refund_CancelAudit);
                btnRefund.IsEnabled            = AuthMgr.HasFunctionPoint(AuthKeyConst.RMA_Refund_Refund);
                vm.RefundItems.ForEach(p => p.CanChangeRefundPriceType = false);
            }
            else if (vm.Status == RMARefundStatus.Refunded)
            {
                btnRefundBalance.IsEnabled = true;
                btnPrint.IsEnabled         = AuthMgr.HasFunctionPoint(AuthKeyConst.RMA_Refund_Print);
                btnSetInvoiceNo.IsEnabled  = true;
                vm.RefundItems.ForEach(p => p.CanChangeRefundPriceType = false);
            }
            else if (vm.Status == RMARefundStatus.Abandon)
            {
                btnUpdate.IsEnabled            = false;
                btnCalculate.IsEnabled         = false;
                btnSubmitAudit.IsEnabled       = false;
                btnCancelSubmitAudit.IsEnabled = false;
                btnVoid.IsEnabled          = false;
                btnRefund.IsEnabled        = false;
                btnRefundBalance.IsEnabled = false;
                btnPrint.IsEnabled         = false;
                btnSetInvoiceNo.IsEnabled  = false;
                vm.RefundItems.ForEach(p => p.CanChangeRefundPriceType = false);
            }
        }
Пример #13
0
        public void Calculate(RefundVM model, EventHandler <RestClientEventArgs <RefundInfo> > callback)
        {
            string     relativeUrl = "/RMAService/Refund/Calculate";
            RefundInfo msg         = ConvertVM(model);

            msg.CompanyCode = CPApplication.Current.CompanyCode;
            restClient.Update <RefundInfo>(relativeUrl, msg, (obj, args) =>
            {
                if (args.FaultsHandle())
                {
                    return;
                }
                callback(obj, args);
            });
        }
Пример #14
0
        private void btnSubmitAudit_Click(object sender, RoutedEventArgs e)
        {
            if (ValidationManager.Validate(this.LayoutRoot))
            {
                RefundVM vm = this.DataContext as RefundVM;
                refundFacade.SubmitAudit(vm, (obj, args) =>
                {
                    vm.Status = args.Result.Status;

                    SetButtonStatus();

                    Window.Alert(ResRefundMaintain.Info_OperateSuccessfully);
                });
            }
        }
Пример #15
0
        private RefundInfo ConvertVM(RefundVM vm)
        {
            RefundInfo refund = vm.ConvertVM <RefundVM, RefundInfo>((s, t) =>
            {
                t.IncomeBankInfo.BankName       = s.BankName;
                t.IncomeBankInfo.BranchBankName = s.BranchBankName;
                t.IncomeBankInfo.CardNumber     = s.CardNumber;
                t.IncomeBankInfo.CardOwnerName  = s.CardOwnerName;
                t.IncomeBankInfo.PostAddress    = s.PostAddress;
                t.IncomeBankInfo.PostCode       = s.PostCode;
                t.IncomeBankInfo.ReceiverName   = s.ReceiverName;
                t.IncomeBankInfo.Note           = s.IncomeNote;
                t.IncomeBankInfo.RefundReason   = s.RefundReason;
            });

            return(refund);
        }
Пример #16
0
        public void GetShipFee(RefundVM vm, EventHandler <RestClientEventArgs <ShippingFeeRsp> > callback)
        {
            string relativeUrl = "/RMAService/Refund/GetShipFee";
            var    msg         = ConvertVM(vm);

            restClient.Query <ShippingFeeRsp>(relativeUrl, msg, (obj, args) =>
            {
                if (args.FaultsHandle())
                {
                    return;
                }

                RestClientEventArgs <ShippingFeeRsp> arg = new RestClientEventArgs <ShippingFeeRsp>(args.Result, viewPage);

                callback(obj, arg);
            });
        }
Пример #17
0
        private void btnCreate_Click(object sender, RoutedEventArgs e)
        {
            btnCreate.Visibility = Visibility.Collapsed;
            int?soSysNo        = this.Registers[0].BasicInfo.SOSysNo;
            int?warehouseSysNo = this.Registers[0].BasicInfo.WarehouseSysNo;

            string msg = string.Empty;

            foreach (var item in this.Registers)
            {
                if (soSysNo == null || soSysNo != item.BasicInfo.SOSysNo)
                {
                    msg = ResCreateRefund.Warning_RegisterMustSameSO;
                    break;
                }
                if (warehouseSysNo == null || warehouseSysNo != item.BasicInfo.WarehouseSysNo)
                {
                    msg = ResCreateRefund.Warning_RegisterMustSameShippedWarehouse;
                    break;
                }
            }
            if (!string.IsNullOrEmpty(msg))
            {
                CPApplication.Current.CurrentPage.Context.Window.Alert(msg, MessageType.Warning);
                return;
            }

            RefundVM vm = new RefundVM();

            vm.SOSysNo           = soSysNo;
            vm.CheckIncomeStatus = !chkNotCheckIncomeStatus.IsChecked.Value;
            this.Registers.ForEach(p =>
            {
                vm.RefundItems.Add(new RefundItemVM {
                    RegisterSysNo = p.BasicInfo.SysNo
                });
            });

            new RefundFacade(CPApplication.Current.CurrentPage).Create(vm, (obj, args) =>
            {
                CPApplication.Current.CurrentPage.Context.Window.Alert(ResCreateRefund.Info_OperateSuccessfully);
                saved = true;
                btnCancel_Click(null, null);
            });
        }
Пример #18
0
        private void btnUpdateFinanceNote_Click(object sender, RoutedEventArgs e)
        {
            RefundVM vm = this.DataContext as RefundVM;

            if (string.IsNullOrEmpty(vm.FinanceNote))
            {
                List <string> members = new List <string>()
                {
                    "FinanceNote"
                };
                vm.ValidationErrors.Add(new System.ComponentModel.DataAnnotations.ValidationResult(ResRefundMaintain.Validation_RequiredField, members));
                txtFinanceNote.Focus();
                return;
            }
            new RefundFacade(CPApplication.Current.CurrentPage).UpdateFinanceNote(vm, (obj, args) =>
            {
                CPApplication.Current.CurrentPage.Context.Window.Alert(ResRefundMaintain.Info_OperateSuccessfully);
            });
        }
Пример #19
0
        public IActionResult AddRefund(RefundVM refundVM)
        {
            bool errAmount = false;

            if (ModelState.IsValid)
            {
                Order order = _unitOfWork.Order.GetAll().Where(a => a.Id == refundVM.refund.OrderId).FirstOrDefault();
                if (refundVM.refund.FullRefund)
                {
                    refundVM.refund.RefundQuantity = order.Quantity;
                }
                if (refundVM.refund.RefundQuantity > order.Quantity || refundVM.refund.RefundQuantity <= 0)
                {
                    ViewBag.ErrAmount = true;
                    errAmount         = true;
                }
                else
                {
                    ViewBag.ErrAmount = false;
                }
                if (!errAmount)
                {
                    bool           ownByWarehouse = _unitOfWork.Product.GetAll().Where(a => a.Id == order.ProductId).Select(a => a.OwnByWarehouse).FirstOrDefault();
                    PaymentBalance paymentBalance = _unitOfWork.PaymentBalance.GetAll().Where(a => a.UserNameId == order.UserNameId).FirstOrDefault();
                    // add refund amount to seller balance
                    double costPerOne = order.Cost / order.Quantity;
                    paymentBalance.Balance = paymentBalance.Balance + costPerOne * refundVM.refund.RefundQuantity;
                    PaymentBalance warehousePaymentBalance = _unitOfWork.PaymentBalance.GetAll().Where(a => a.IsWarehouseBalance).FirstOrDefault();
                    //remove from warehouse if its his product
                    if (ownByWarehouse)
                    {
                        double productCost = _unitOfWork.Product.GetAll().Where(a => a.Id == order.ProductId).Select(a => a.Cost).FirstOrDefault();
                        warehousePaymentBalance.Balance = warehousePaymentBalance.Balance + refundVM.refund.RefundQuantity * productCost;
                    }
                    //if charge warehouse for shipping
                    if (refundVM.refund.ChargeWarehouse)
                    {
                        warehousePaymentBalance.Balance = warehousePaymentBalance.Balance + refundVM.refund.RefundQuantity * SD.shipping_cost;
                    }
                    if (refundVM.refund.RefundQuantity == order.Quantity)
                    {
                        order.OrderStatus = SD.OrderStatusFullRefund;
                    }
                    else
                    {
                        order.OrderStatus = SD.OrderStatusPartialRefund;
                    }
                    _unitOfWork.Order.update(order);
                    _unitOfWork.Refund.Add(refundVM.refund);
                    _unitOfWork.Save();
                }

                ViewBag.ShowMsg = 1;


                //return RedirectToAction(nameof(Index));
            }
            RefundVM refundVM2 = new RefundVM()
            {
                refund     = new Refund(),
                OrdersList = _unitOfWork.Order.GetAll().Where(a => a.Id == refundVM.refund.OrderId).
                             Select(i => new SelectListItem
                {
                    Text  = i.CustName + "- Id: " + i.Id + " Quantity: " + i.Quantity,
                    Value = i.Id.ToString()
                })
            };

            return(View(refundVM2));
        }