示例#1
0
        private static int ProcessCreateRequestToCashRecord(string toCashSysNos, CommissionToCashRecordEntity data)
        {
            int toCashRecordSysNo = 0;

            //开启事务
            TransactionOptions options = new TransactionOptions();

            options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            options.Timeout        = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                if (data.IsHasInvoice == "N")
                {                                                                    //不能提供发票,扣除个人所得税。
                    data.AfterTaxAmt = CalculationPersonalIncomeTax(data.ToCashAmt); //计算去税金额
                }
                toCashRecordSysNo = SyncAutomationDAL.CreateRequestToCashRecord(data);
                if (toCashRecordSysNo <= 0)
                {
                    return(toCashRecordSysNo);
                }
                bool isSuccess = SyncAutomationDAL.UpdateCommissionSettlement(toCashRecordSysNo, toCashSysNos);
                if (!isSuccess)
                {
                    return(toCashRecordSysNo);
                }
                scope.Complete();
            }

            return(toCashRecordSysNo);
        }
示例#2
0
        /// <summary>
        /// 数据合法性 & 准备数据
        /// </summary>
        /// <param name="toCashSysNos"></param>
        private CommissionToCashRecordEntity CheckAndPrepareData(UserInfo userInfo, List <CommissionSettlementEntity> commissionSettlementEntitys, decimal requestAmount, string isHasInvoice)
        {
            //1.获取用户信息
            if (string.IsNullOrEmpty(userInfo.BankCode) ||
                string.IsNullOrEmpty(userInfo.BankName) ||
                string.IsNullOrEmpty(userInfo.BranchBank) ||
                string.IsNullOrEmpty(userInfo.BankCardNumber) ||
                string.IsNullOrEmpty(userInfo.ReceivableName)
                )
            {
                throw new BusinessException("您的收款账户信息不完整,请完善收款信息后再提交兑现申请!");
            }

            //2.计算兑现佣金金额
            //3.校验账户余额
            decimal unRequestAmt = SyncAutomationDAL.GetUnRequestCommissionSettlementAmt(userInfo.SysNo);          //获取当前用户已结算单是为付款的金额

            if (userInfo.BalanceAmt < 0)
            {
                string msg = string.Format("申请兑现时,账户余额不能少于0元!");
                throw new BusinessException(msg);
            }

            if (userInfo.BalanceAmt + requestAmount + unRequestAmt < 0)
            {
                string msg = string.Format("申请兑现后的余额账户不能少于0元!账户余额{0}元,本次申请金额{1}元,未提交申请{2}元", userInfo.BalanceAmt, requestAmount, unRequestAmt);
                throw new BusinessException(msg);
            }

            //4.设置数据
            CommissionToCashRecordEntity recordEntity = new CommissionToCashRecordEntity
            {
                UserSysNo      = userInfo.SysNo,
                Status         = "R",
                ToCashAmt      = requestAmount,
                BankCode       = userInfo.BankCode,
                BankName       = userInfo.BankName,
                BranchBank     = userInfo.BranchBank,
                BankCardNumber = userInfo.BankCardNumber,
                ReceivableName = userInfo.ReceivableName,
                IsHasInvoice   = isHasInvoice,
                InUser         = userInfo.SysNo.ToString()
            };

            return(recordEntity);
        }
示例#3
0
        private void RequestCashPay(UserInfo userInfo, List <CommissionSettlementEntity> commissionList, decimal requestAmount)
        {
            //验证数据
            //准备数据,获取用户收款信息
            CommissionToCashRecordEntity data = CheckAndPrepareData(userInfo, commissionList, requestAmount, userInfo.CanProvideInvoice);

            StringBuilder reqCashSysNoBuilder = new StringBuilder();

            commissionList.ForEach(x =>
            {
                reqCashSysNoBuilder.Append(x.SysNo);
                reqCashSysNoBuilder.Append(",");
            });

            string toCashSysNos = reqCashSysNoBuilder.ToString().TrimEnd(',');

            //更新数据
            //1.创建兑现申请单
            //2.修改对应的佣金结算单信息【CommissionToCashRecordSysNo】
            int toCashSysNo = ProcessCreateRequestToCashRecord(toCashSysNos, data);
        }
示例#4
0
        /// <summary>
        /// 创建佣金兑现申请
        /// </summary>
        /// <param name="data"></param>
        public static int CreateRequestToCashRecord(CommissionToCashRecordEntity recordEntity)
        {
            //1.创建兑现申请单
            //2.修改对应的佣金结算单信息【CommissionToCashRecordSysNo,Status】
            //设置命令对象信息

            DataCommand command = DataCommandManager.GetDataCommand("Settled.CreateRequestToCash");

            command.SetParameterValue("@UserSysNo", recordEntity.UserSysNo);
            command.SetParameterValue("@Status", recordEntity.Status);
            command.SetParameterValue("@ToCashAmt", recordEntity.ToCashAmt);
            command.SetParameterValue("@AfterTaxAmt", recordEntity.AfterTaxAmt);
            command.SetParameterValue("@BankCode", recordEntity.BankCode);
            command.SetParameterValue("@BankName", recordEntity.BankName);
            command.SetParameterValue("@BranchBank", recordEntity.BranchBank);
            command.SetParameterValue("@BankCardNumber", recordEntity.BankCardNumber);
            command.SetParameterValue("@ReceivableName", recordEntity.ReceivableName);
            command.SetParameterValue("@IsHasInvoice", recordEntity.IsHasInvoice);
            command.SetParameterValue("@InUser", recordEntity.InUser);

            return(command.ExecuteScalar <int>());
        }