Exemplo n.º 1
0
        /// <summary>
        /// 审核通过的处理
        /// </summary>
        /// <param name="entity"></param>
        protected virtual void PassAudit(SOIncomeRefundInfo entity)
        {

            if (entity.RefundCashAmt > 0
                   && entity.RefundPayType == RefundPayType.GiftCardRefund
                   && (entity.OrderType == RefundOrderType.AO || entity.OrderType == RefundOrderType.OverPayment))
            {
                //调用IM接口创建一张电子礼品卡,礼品卡类型为[CS补偿电子卡]
                var giftCardResultCode = ExternalDomainBroker.CreateElectronicGiftCard(entity.SOSysNo.Value, entity.CustomerSysNo.Value, 1, entity.RefundCashAmt.Value
                    , ECCentral.BizEntity.IM.GiftCardType.Compensate, "退款转礼品卡", entity.CompanyCode);

                //发送邮件通知用户
                SendGiftCardEmail(entity, giftCardResultCode);

                //记录操作日志
                ObjectFactory<ICommonBizInteract>.Instance.CreateOperationLog(
                    GetMessageString("SOIncomeRefund_Log_PassAudit", ServiceContext.Current.UserSysNo, entity.SysNo, entity.RefundCashAmt)
                    , BizLogType.AuditRefund_Update
                    , entity.SysNo.Value
                    , entity.CompanyCode);
            }

            //更新用户账户余额
            if (entity.RefundPayType == RefundPayType.PrepayRefund && entity.RefundCashAmt != 0)
            {
                if (entity.OrderType == RefundOrderType.AO)
                {
                    ExternalDomainBroker.AdjustCustomerPerpayAmount(entity.CustomerSysNo.Value, entity.OrderSysNo.Value, entity.RefundCashAmt.Value, PrepayType.BOReturn, GetMessageString("SOIncomeRefund_AuditAOAdjustBalanceNote"));
                }
                else if (entity.OrderType == RefundOrderType.OverPayment)
                {
                    ExternalDomainBroker.AdjustCustomerPerpayAmount(entity.CustomerSysNo.Value, entity.OrderSysNo.Value, entity.RefundCashAmt.Value, PrepayType.RemitReturn, GetMessageString("SOIncomeRefund_AuditOverPayAdjustBalanceNote"));
                }
                else if (entity.OrderType == RefundOrderType.RO && entity.HaveAutoRMA == true)
                {
                    ExternalDomainBroker.AdjustCustomerPerpayAmount(entity.CustomerSysNo.Value, entity.OrderSysNo.Value, entity.RefundCashAmt.Value, PrepayType.ROReturn, GetMessageString("SOIncomeRefund_AuditROShipRejectPrepayRefundNote"));
                }
                //else if (entity.OrderType == RefundOrderType.RO_Adjsut)
                //{
                //    ExternalDomainBroker.AdjustCustomerPerpayAmount(entity.CustomerSysNo.Value, entity.OrderSysNo.Value, entity.RefundCashAmt.Value, PrepayType.RO_AdjustReturn, GetMessageString("SOIncomeRefund_AuditROAdjustNote"));
                //}
            }
        }