Esempio n. 1
0
        /// <summary>
        /// 团购Job调用,用于创建AO单
        /// </summary>
        /// <param name="soSysNo">订单系统编号</param>
        /// <param name="refundPayType">退款类型</param>
        /// <param name="note">退款备注</param>
        /// <param name="refundReason">退款原因系统编号,编号来自OverseaServiceManagement.dbo.refundReason</param>
        public virtual void CreateAOForJob(int soSysNo, RefundPayType refundPayType, string note, int? refundReason)
        {
            //0.验证
            SOBaseInfo soInfo = ExternalDomainBroker.GetSOBaseInfo(soSysNo);
            if (soInfo == null)
            {
                ThrowBizException("SOIncomeRefund_SONotFound", soSysNo);
            }
            if (soInfo.Status != SOStatus.Origin && soInfo.Status != SOStatus.WaitingOutStock)
            {   //不为Origin,WaitingOutStock 状态
                ThrowBizException("SOIncomeRefund_CreateAOForGroupJob_SOStatusInvalid", soSysNo);
            }

            var validSOIncome = ObjectFactory<SOIncomeProcessor>.Instance.GetValid(soSysNo, SOIncomeOrderType.SO);
            if (validSOIncome == null)
            {
                ThrowBizException("SOIncomeRefund_CreateAOForGroupJob_ValidSOIncomeNotFound", soSysNo);
            }

            //1.Set data
            //CRL18174:团购订单退款调整,团购订单退款需视不同的支付方式,采用不同的退款类型
            //如果团购订单的退款类型为空,则默认为“退入余额帐户”方式
            //如果退款方式为“网关直接退款",则需要填写“银行名称”
            string bankName = refundPayType == RefundPayType.NetWorkRefund ? ExternalDomainBroker.GetPayType(soInfo.PayTypeSysNo.Value).PayTypeName : "";

            SOIncomeRefundInfo soIncomeRefund = new SOIncomeRefundInfo
            {
                OrderSysNo = soSysNo,
                SOSysNo = soSysNo,
                OrderType = RefundOrderType.AO,
                Status = RefundStatus.Origin,
                Note = note,
                RefundPayType = refundPayType,
                RefundReason = refundReason,
                BankName = bankName
            };
            soIncomeRefund.CompanyCode = soInfo.CompanyCode;
            //AO退 除了礼品卡的全部金额,包括积分、余额、现金
            decimal giftCardPayAmt = validSOIncome.GiftCardPayAmt ?? 0m;
            soIncomeRefund.RefundCashAmt = validSOIncome.OrderAmt - giftCardPayAmt;
            soIncomeRefund.RefundGiftCard = giftCardPayAmt;
            soIncomeRefund.RefundPoint = 0;

            //Negative SOIncome
            validSOIncome.CompanyCode = soInfo.CompanyCode;
            validSOIncome.OrderType = SOIncomeOrderType.AO;
            validSOIncome.OrderAmt = -validSOIncome.OrderAmt;
            validSOIncome.PointPay = -validSOIncome.PointPay;
            validSOIncome.GiftCardPayAmt = -validSOIncome.GiftCardPayAmt;
            validSOIncome.IncomeAmt = -validSOIncome.IncomeAmt;

            PreCheckForCreateAOForJob(soIncomeRefund);

            ObjectFactory<SOIncomeProcessor>.Instance.Create(validSOIncome);

            ObjectFactory<ISOIncomeRefundDA>.Instance.Create(soIncomeRefund);
        }
Esempio n. 2
0
        private void SwitchBankInfoIsEnable(RefundPayType type)
        {
            switch (type)
            {
            case RefundPayType.BankRefund:
            case RefundPayType.NetWorkRefund:
            {
                this.TextBox_BankName.IsEnabled       = this.Text_BranchBankName.IsEnabled = this.Text_CardNo.IsEnabled =
                    this.Text_CardOwnerName.IsEnabled = true;
                this.toolBankInfo.IsExpanded          = true;
                break;
            }

            default:
            {
                this.TextBox_BankName.IsEnabled       = this.Text_BranchBankName.IsEnabled = this.Text_CardNo.IsEnabled =
                    this.Text_CardOwnerName.IsEnabled = false;
                this.toolBankInfo.IsExpanded          = false;
                break;
            }
            }
        }
Esempio n. 3
0
 /// <summary>
 /// 团购Job调用,用于创建AO单
 /// </summary>
 /// <param name="soSysNo">订单系统编号</param>
 /// <param name="refundPayType">退款类型</param>
 /// <param name="note">退款备注</param>
 /// <param name="refundReason">退款原因系统编号,编号来自OverseaServiceManagement.dbo.refundReason</param>
 public void CreateAOForJob(int soSysNo, RefundPayType refundPayType, string note, int?refundReason)
 {
     ObjectFactory <SOIncomeRefundProcessor> .Instance.CreateAOForJob(soSysNo, refundPayType, note, refundReason);
 }