/// <summary> /// 返回资金流Model /// </summary> /// <param name="model"></param> /// <param name="personnelInfo"></param> /// <param name="flag">true:有手续费;false:无手续费;</param> /// <returns></returns> public WasteBookInfo AddWasteBookInfo(CostReportInfo model, PersonnelInfo personnelInfo, bool flag) { decimal income; if (flag && model.Poundage > 0) { income = model.Poundage; } else { income = model.RealityCost; } string auditingMan = _personnelManager.GetName(personnelInfo.PersonnelId); string reportMan = _personnelManager.GetName(model.ReportPersonnelId); var dateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var wasteBookTradeCode = _codeManager.GetCode(CodeType.RD); int wasteBookType; string strMan, strDes; if (income > 0) { wasteBookType = (int)WasteBookType.Decrease; strMan = "收款"; strDes = "减少"; } else { wasteBookType = (int)WasteBookType.Increase; strMan = "付款"; strDes = "增加"; } bool isDeposit = (model.ReportKind == (int)CostReportKind.FeeIncome && !string.IsNullOrEmpty(model.DepositNo)); var wasteBookDescription = string.Format("[费用申报(申报编号:{0};费用名称:{1};申报人:{2};" + strMan + "单位:{3};完成打款人:{4};手续费:{5};交易流水号:{6};资金" + strDes + ",{7}" + (isDeposit ? "【押金回收】" : "") + ")]", model.ReportNo, model.ReportName, reportMan, model.PayCompany, auditingMan, model.Poundage.ToString("#0.00"), model.TradeNo, dateTime); var bankInfo = _bankAccountsDao.GetBankAccounts(model.PayBankAccountId); var wasteBookInfo = new WasteBookInfo( Guid.NewGuid(), model.PayBankAccountId, wasteBookTradeCode, wasteBookDescription, -income, //金额 (Int32)AuditingState.Yes, wasteBookType, model.AssumeFilialeId) { LinkTradeCode = model.ReportNo, LinkTradeType = (int)WasteBookLinkTradeType.CostReport, BankTradeCode = string.Empty, State = (int)WasteBookState.Currently, IsOut = bankInfo.IsMain }; return(wasteBookInfo); }
///<summary> ///更改一笔账目 /// </summary> public void UpdateBll(Guid outWasteBookId, string description, decimal income, string tradecode, decimal poundage, Guid bankAccountsId) { DateTime dateCreatedUpdate = DateTime.Now; var wasteBookInfo = _wasteBookDao.GetWasteBook(outWasteBookId); if (wasteBookInfo == null) { return; } string des = string.IsNullOrEmpty(wasteBookInfo.Description)?string.Empty:wasteBookInfo.Description; WasteBookInfo outWasteBookInfo; if (des.IndexOf("[增加资金]", StringComparison.Ordinal) > -1) { outWasteBookInfo = new WasteBookInfo(outWasteBookId, dateCreatedUpdate, description, income, (int)WasteBookType.Increase); } else if (des.IndexOf("[减少资金]", StringComparison.Ordinal) > -1) { outWasteBookInfo = new WasteBookInfo(outWasteBookId, dateCreatedUpdate, description, -income, (int)WasteBookType.Decrease); } else if (des.IndexOf("[付款]", StringComparison.Ordinal) > -1) { outWasteBookInfo = new WasteBookInfo(outWasteBookId, dateCreatedUpdate, description, -income, (int)WasteBookType.Decrease); } else { outWasteBookInfo = new WasteBookInfo(outWasteBookId, dateCreatedUpdate, description, -income, (int)WasteBookType.Decrease); } string inWasteBookIds = _wasteBookDao.GetWasteBookIdForUpdate(tradecode); using (var ts = new TransactionScope(TransactionScopeOption.Required)) { try { _wasteBookDao.Update(outWasteBookInfo); if (des.IndexOf("[增加资金]", StringComparison.Ordinal) <= -1 && des.IndexOf("[减少资金]", StringComparison.Ordinal) <= -1 && des.IndexOf("[付款]", StringComparison.Ordinal) <= -1) { if (!String.IsNullOrEmpty(inWasteBookIds)) { var inWasteBookId = new Guid(inWasteBookIds); var inWasteBookInfo = new WasteBookInfo(inWasteBookId, dateCreatedUpdate, description, income, (int)WasteBookType.Increase); _wasteBookDao.Update(inWasteBookInfo); _wasteBookDao.UpdateBankAccountsId(inWasteBookId, bankAccountsId); } } ts.Complete(); } catch { throw new ApplicationException("转帐同步失败!"); } } }
/// <summary> /// 新建手续费 /// </summary> /// <param name="outBankAccountsId"></param> /// <param name="tradeCode"></param> /// <param name="poundage"></param> /// <param name="filialeId"> </param> public void InsertPoundage(Guid outBankAccountsId, string tradeCode, decimal poundage, Guid filialeId) { DateTime dateCreated = DateTime.Now; decimal outNonceBalance = _wasteBookDao.GetBalance(outBankAccountsId); try { const string PD_DESC = "[转出] [手续费]"; var pdWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), outBankAccountsId, tradeCode, dateCreated, PD_DESC, -poundage, outNonceBalance, (int)AuditingState.Hide, (int)WasteBookType.Decrease, filialeId) { LinkTradeCode = string.Empty, LinkTradeType = (int)WasteBookLinkTradeType.Other }; _wasteBookDao.Insert(pdWasteBookInfo); } catch { throw new ApplicationException("手续费新建失败!"); } }
/// <summary> /// 打款完成 /// </summary> /// <param name="salePlatformId"></param> /// <param name="applyId"></param> protected void PayFinish(Guid salePlatformId, Guid applyId) { var errorMsg = new StringBuilder(); MemberMentionApplyInfo memberMentionApplyInfo = MemberCenterSao.GetMemberMentionApply(salePlatformId, applyId); if (memberMentionApplyInfo.State == (int)MemberMentionState.Process) { var orderNoStr = string.Empty; if (!string.IsNullOrWhiteSpace(memberMentionApplyInfo.OrderNo)) { orderNoStr = string.Format("[订单号:{0}]", memberMentionApplyInfo.OrderNo); } if (!string.IsNullOrWhiteSpace(memberMentionApplyInfo.ThirdPartyOrderNo) || memberMentionApplyInfo.ThirdPartyOrderNo == "-") { orderNoStr = string.Format("{0}[第三方平台订单号:{1}]", orderNoStr, memberMentionApplyInfo.ThirdPartyOrderNo); } var rdescription = string.Format("[余额提现(提现会员:{0};提现申请单号:{1};提现到:{2};操作人:{3}),资金减少,{4})]", memberMentionApplyInfo.UserName, memberMentionApplyInfo.ApplyNo, memberMentionApplyInfo.BankName, Personnel.RealName, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); var info = new WasteBookInfo(Guid.NewGuid(), new Guid(RCB_BankAccountsId.SelectedValue), memberMentionApplyInfo.ApplyNo, rdescription + orderNoStr, -memberMentionApplyInfo.Amount, (Int32)AuditingState.Yes, (Int32)WasteBookType.Decrease, memberMentionApplyInfo.SaleFilialeId) { LinkTradeCode = memberMentionApplyInfo.ApplyNo, LinkTradeType = (int)WasteBookLinkTradeType.WithdrawDeposit, BankTradeCode = string.Empty, State = (int)WasteBookState.Currently, IsOut = false }; var memo = "提现" + memberMentionApplyInfo.ApplyNo + "取走余额;"; var description = "提现" + memberMentionApplyInfo.ApplyNo + ",提走余额;" + Common.WebControl.RetrunUserAndTime("提现受理"); #region 提现 using (var ts = new TransactionScope(TransactionScopeOption.Required)) { try { if (info.Income != 0) { _wasteBook.Insert(info); } string errorMessage; var result = MemberCenterSao.CompleteWithdrawApply(salePlatformId, applyId, memo, description, out errorMessage); if (!result) { throw new Exception("会员名:" + memberMentionApplyInfo.UserName + "提现单号:" + memberMentionApplyInfo.ApplyNo + " " + errorMessage); } //提现打款完成增加操作记录添加 Common.WebControl.AddOperationLog(Personnel.PersonnelId, Personnel.RealName, info.WasteBookId, info.TradeCode, OperationPoint.MemberWithdrawCash.PaySuccess.GetBusinessInfo(), string.Empty); ts.Complete(); } catch (Exception ex) { errorMsg.Append("提现失败!" + ex.Message).Append("\\n"); } finally { ts.Dispose(); } } #endregion #region 发送短信 try { MemberBaseInfo memberBaseInfo = MemberCenterSao.GetUserBase(salePlatformId, memberMentionApplyInfo.MemberId); if (memberBaseInfo != null) { if (!string.IsNullOrEmpty(memberBaseInfo.Mobile)) { //可得完成打款发送短信 var keedeFilialeId = FilialeManager.GetList().First(f => f.Code.ToLower() == "kede").ID; if (memberMentionApplyInfo.SaleFilialeId == keedeFilialeId) { const string MSG = "您好,您的提现申请已收到,现已完成打款,一般2-5个工作日到账,请注意查收。详情可致电4006202020咨询。感谢您对可得网支持!"; MailSMSSao.SendShortMessage(memberMentionApplyInfo.SaleFilialeId, memberMentionApplyInfo.SalePlatformId, memberBaseInfo.Mobile, MSG); } } } } catch (Exception ex) { errorMsg.Append("提现成功,短信发送失败! " + "会员名:" + memberMentionApplyInfo.UserName + "提现单号:" + memberMentionApplyInfo.ApplyNo + " " + ex.Message).Append("\\n"); } #endregion } if (!string.IsNullOrEmpty(errorMsg.ToString())) { throw new Exception(errorMsg.ToString()); } }
/// <summary> /// 对账 /// </summary> /// <param name="lstModify">需要修改状态的往来账列表</param> /// <param name="lstAdd">需要增加的往来账列表</param> /// <param name="wastBookinfo">需要添加的资金流信息</param> public void Checking(IList <ReckoningInfo> lstModify, IList <ReckoningInfo> lstAdd, WasteBookInfo wastBookinfo) { using (var scop = new TransactionScope()) { try { //1.更新被对账往来为已对账 if (lstModify.Count > 0) { _reckoningDao.UpdateCheckState(lstModify, 1); } //2.新增往来账(包括调账) foreach (ReckoningInfo reckoningInfo in lstAdd) { reckoningInfo.AuditingState = (int)AuditingState.Yes; string errorMessage; _reckoningDao.Insert(reckoningInfo, out errorMessage); } //3.资金流 增加一条数据 if (wastBookinfo.Income != 0) { _wasteBookManager.Insert(wastBookinfo); } scop.Complete(); } catch (Exception ex) { throw new Exception("对账失败!", ex); } } }
/// <summary> 转帐 add chenzhongwen /// </summary> /// <param name="inBankAccountsId">转入帐号Id</param> /// <param name="outBankAccountsId">转出帐号Id</param> /// <param name="sum">金额</param> /// <param name="poundage">手续费</param> /// <param name="description">说明</param> /// <param name="tradeCode"></param> /// <param name="outFilialeId">转出公司 </param> /// <param name="inFilialeId"> 转入公司</param> /// <param name="realName"> 操作人</param> public WasteBookInfo NewVirement(Guid inBankAccountsId, Guid outBankAccountsId, decimal sum, decimal poundage, string description, string tradeCode, Guid outFilialeId, Guid inFilialeId, string realName) { WasteBookInfo wasteBookInfo = null; if (inBankAccountsId != Guid.Empty && outBankAccountsId != Guid.Empty && sum > 0) { var inBankInfo = _bankAccounts.GetBankAccounts(inBankAccountsId); var outBankInfo = _bankAccounts.GetBankAccounts(outBankAccountsId); if (inBankInfo == null || outBankInfo == null) { return(null); } var dateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); DateTime dateCreated = DateTime.Now; decimal inNonceBalance = _wasteBookDao.GetBalance(inBankAccountsId); decimal outNonceBalance = _wasteBookDao.GetBalance(outBankAccountsId); string inDescription; string outDescription; Boolean isOut; if (inFilialeId == _reckoningElseFilialeid || outFilialeId == _reckoningElseFilialeid) { isOut = false; } else { isOut = true; } if (outFilialeId == inFilialeId) { inDescription = string.Format("[转入申请(来源银行:{0};申请备注:{1};转出申请人:{2} ;{3})]", outBankInfo.BankName + "-" + outBankInfo.AccountsName, realName, description, dateTime); outDescription = string.Format("[转出申请(目标银行:{0};申请备注:{1};转出申请人:{2};{3})]", inBankInfo.BankName + "-" + inBankInfo.AccountsName, description, realName, dateTime); } else { var inFilialeName = inFilialeId == _reckoningElseFilialeid ? "其他公司" : FilialeManager.Get(inFilialeId).Name; var outFilialeName = outFilialeId == _reckoningElseFilialeid ? "其他公司" : FilialeManager.Get(outFilialeId).Name; inDescription = string.Format("[转入申请(来源公司:{0};来源银行:{1};申请备注:{2};转出申请人:{3} ;{4})]", outFilialeName, outBankInfo.BankName + "-" + outBankInfo.AccountsName, realName, description, dateTime); outDescription = string.Format("[转出申请(目标公司:{0};目标银行:{1};申请备注:{2};转出申请人:{3};{4})]", inFilialeName, inBankInfo.BankName + "-" + inBankInfo.AccountsName, description, realName, dateTime); } const string PD_DESC = "[转出] [手续费]"; var pdWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), outBankAccountsId, tradeCode, dateCreated, PD_DESC, -poundage, outNonceBalance, (int)AuditingState.Hide, (int)WasteBookType.Decrease, outFilialeId) { LinkTradeCode = string.Empty, LinkTradeType = (int)WasteBookLinkTradeType.Other, State = (int)WasteBookState.Currently, IsOut = isOut }; var inWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), inBankAccountsId, tradeCode, dateCreated, inDescription, sum, inNonceBalance, (int)AuditingState.Hide, (int)WasteBookType.Increase, inFilialeId) { LinkTradeCode = string.Empty, LinkTradeType = (int)WasteBookLinkTradeType.Other, State = (int)WasteBookState.Currently, IsOut = isOut }; var outWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), outBankAccountsId, tradeCode, dateCreated, outDescription, -sum, outNonceBalance, (int)AuditingState.No, (int)WasteBookType.Decrease, outFilialeId) { LinkTradeCode = string.Empty, LinkTradeType = (int)WasteBookLinkTradeType.Other, State = (int)WasteBookState.Currently, IsOut = isOut }; using (var ts = new TransactionScope(TransactionScopeOption.Required)) { try { _wasteBookDao.Insert(inWasteBookInfo); if (poundage > 0) { _wasteBookDao.Insert(pdWasteBookInfo); } _wasteBookDao.Insert(outWasteBookInfo); wasteBookInfo = outWasteBookInfo; ts.Complete(); } catch { throw new ApplicationException("转帐同步失败!"); } } } return(wasteBookInfo); }
/// <summary>转帐 /// </summary> /// <param name="inBankAccountsId">转入帐号Id</param> /// <param name="outBankAccountsId">转出帐号Id</param> /// <param name="sum">金额</param> /// <param name="poundage"></param> /// <param name="description">说明</param> /// <param name="tradeCode"></param> /// <param name="filialeId"> </param> public void Virement(Guid inBankAccountsId, Guid outBankAccountsId, decimal sum, decimal poundage, string description, string tradeCode, Guid filialeId) { if (inBankAccountsId != Guid.Empty && outBankAccountsId != Guid.Empty && sum > 0) { DateTime dateCreated = DateTime.Now; decimal inNonceBalance = _wasteBookDao.GetBalance(inBankAccountsId); decimal outNonceBalance = _wasteBookDao.GetBalance(outBankAccountsId); var outBankAccountsInfo = _bankAccounts.GetBankAccounts(outBankAccountsId); var intBankAccountsInfo = _bankAccounts.GetBankAccounts(inBankAccountsId); if (outBankAccountsInfo == null || intBankAccountsInfo == null) { return; } string inDescription = "[转入] [" + outBankAccountsInfo.BankName + "]" + description; var inWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), inBankAccountsId, tradeCode, dateCreated, inDescription, sum, inNonceBalance, (int)AuditingState.Hide, (int)WasteBookType.Increase, filialeId) { LinkTradeCode = string.Empty, LinkTradeType = (int)WasteBookLinkTradeType.Other }; const string PD_DESC = "[转出] [手续费]"; var pdWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), outBankAccountsId, tradeCode, dateCreated, PD_DESC, -poundage, outNonceBalance, (int)AuditingState.Hide, (int)WasteBookType.Decrease, filialeId) { LinkTradeCode = string.Empty, LinkTradeType = (int)WasteBookLinkTradeType.Other }; string outDescription = "[转出] [" + intBankAccountsInfo.BankName + "]" + description; var outWasteBookInfo = new WasteBookInfo(Guid.NewGuid(), outBankAccountsId, tradeCode, dateCreated, outDescription, -sum, outNonceBalance, (int)AuditingState.No, (int)WasteBookType.Decrease, filialeId) { LinkTradeCode = string.Empty, LinkTradeType = (int)WasteBookLinkTradeType.Other }; using (var ts = new TransactionScope(TransactionScopeOption.Required)) { try { _wasteBookDao.Insert(inWasteBookInfo); if (poundage > 0) { _wasteBookDao.Insert(pdWasteBookInfo); } _wasteBookDao.Insert(outWasteBookInfo); ts.Complete(); } catch { throw new ApplicationException("转帐同步失败!"); } } } }