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); }
/// <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); }
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); }
/// <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>()); }