/// <summary> /// 添加往来单位收付款到ERP 返回生成的单据号 /// modifyed by liangcanren 2015-03-13 /// </summary> /// <param name="fundReceiptInfo"></param> /// <returns></returns> public string InsertCompanyFundReceipt(CompanyFundReceiptInfo fundReceiptInfo) { string tradeCode = _codeManager.GetCode(fundReceiptInfo.ReceiptType == (int)CompanyFundReceiptType.Receive ? CodeType.GT : CodeType.PY); if (string.IsNullOrEmpty(tradeCode)) { return(string.Empty); } fundReceiptInfo.ReceiptNo = string.Format("{0}{1}", "S", tradeCode); fundReceiptInfo.IsOut = false; var result = _companyFundReceipt.Insert(fundReceiptInfo); if (result) { return(fundReceiptInfo.ReceiptNo); } return(string.Empty); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> // ReSharper disable once FunctionComplexityOverflow protected void OnFinishClick(object sender, EventArgs e) { if (!_submitController.Enabled) { RAM.Alert("请不要重复提交!"); return; } if (rgCheckHistory.SelectedItems.Count == 0) { RAM.Alert("请选择待完成帐!"); return; } var checkList = new List <CheckDataRecordInfo>(); var dictionary = new Dictionary <Guid, int>(); foreach (GridDataItem item in rgCheckHistory.SelectedItems) { var checkId = new Guid(item.GetDataKeyValue("CheckId").ToString()); var info = _checkDataManagerWrite.GetCheckDataInfoById(checkId); if (info != null) { switch (info.CheckDataState) { case (int)CheckDataState.Finished: checkList.Add(info); dictionary.Add(info.CheckId, info.CheckType); break; default: RAM.Alert("系统提示:选项中存在已完成或处理中对账记录!"); return; } } } var companyList = checkList.GroupBy(act => act.CheckCompanyId).Select(act => act.Key).ToList(); if (companyList.Count > 1) { RAM.Alert("系统提示:多条记录对账只能在同快递公司之间!"); return; } IList <CompanyFundReceiptInfo> receiptList = new List <CompanyFundReceiptInfo>(); var personnelInfo = CurrentSession.Personnel.Get(); IList <ExceptionReckoningInfo> newList = new BindingList <ExceptionReckoningInfo>(); #region [计算当前选择的对账记录需要生成的各公司的收付款记录] //计算当前选择的对账记录需要生成的各公司的收付款记录 foreach (var key in dictionary.Keys) { var list = _checkDataManagerWrite.GetTotalMoney(key); //实际对账金额 (实收金额累计) foreach (var item in list) { decimal totalMoney = 0; decimal serverMoney = 0; decimal exceptionMoney; if (dictionary[key] == (int)ReckoningCheckType.Carriage) { totalMoney -= item.SumFinanceConfirmMoney; serverMoney -= item.SumConfirmMoney; exceptionMoney = item.SumConfirmMoney - item.SumFinanceConfirmMoney; } else { totalMoney += item.SumFinanceConfirmMoney; serverMoney += item.SumConfirmMoney; exceptionMoney = item.SumFinanceConfirmMoney - item.SumConfirmMoney; } if (totalMoney == 0) { continue; } //公司收付款 if (item.IsOut) { var tempInfo = newList.FirstOrDefault(ent => ent.FilialeId == item.FilialeId && ent.IsOut); if (tempInfo != null) { /*------公司账务合并------||-------------------------收款----------------------------||-------------------------付款----------------------------*/ //zal 2015-11-23 if (CKB_Merger.Checked || (totalMoney > 0 && tempInfo.SumFinanceConfirmMoney > 0) || (totalMoney < 0 && tempInfo.SumFinanceConfirmMoney < 0)) { tempInfo.FilialeId = item.FilialeId; tempInfo.FilialeName = item.FilialeName; tempInfo.DiffMoney += exceptionMoney; tempInfo.SumConfirmMoney += serverMoney; tempInfo.SumFinanceConfirmMoney += totalMoney; tempInfo.IsOut = true; } else { var tempInfo1 = new ExceptionReckoningInfo { FilialeId = item.FilialeId, FilialeName = item.FilialeName, DiffMoney = exceptionMoney, SumConfirmMoney = serverMoney, SumFinanceConfirmMoney = totalMoney, IsOut = true }; newList.Add(tempInfo1); } } else { var tempInfo1 = new ExceptionReckoningInfo { FilialeId = item.FilialeId, FilialeName = item.FilialeName, DiffMoney = exceptionMoney, SumConfirmMoney = serverMoney, SumFinanceConfirmMoney = totalMoney, IsOut = true }; newList.Add(tempInfo1); } } else { var tempInfo = newList.FirstOrDefault(ent => ent.FilialeId == _reckoningElseFilialeid && ent.IsOut == false); if (tempInfo != null) { /*------公司账务合并------||-------------------------收款----------------------------||-------------------------付款----------------------------*/ //zal 2015-11-23 if (CKB_Merger.Checked || (totalMoney > 0 && tempInfo.SumFinanceConfirmMoney > 0) || (totalMoney < 0 && tempInfo.SumFinanceConfirmMoney < 0)) { tempInfo.FilialeId = _reckoningElseFilialeid; tempInfo.FilialeName = "ERP"; tempInfo.DiffMoney += exceptionMoney; tempInfo.SumConfirmMoney += serverMoney; tempInfo.SumFinanceConfirmMoney += totalMoney; tempInfo.IsOut = false; } else { var tempInfo1 = new ExceptionReckoningInfo { FilialeId = _reckoningElseFilialeid, FilialeName = "ERP", DiffMoney = exceptionMoney, SumConfirmMoney = serverMoney, SumFinanceConfirmMoney = totalMoney, IsOut = false }; newList.Add(tempInfo1); } } else { var tempInfo1 = new ExceptionReckoningInfo { FilialeId = _reckoningElseFilialeid, FilialeName = "ERP", DiffMoney = exceptionMoney, SumConfirmMoney = serverMoney, SumFinanceConfirmMoney = totalMoney, IsOut = false }; newList.Add(tempInfo1); } } } } #endregion #region [生成个公司收付款单据] //生成个公司收付款单据 foreach (var info in newList) { if (info.IsOut) { //生成往来单位收付款 var receipt = new CompanyFundReceiptInfo { ReceiptNo = _codeManager.GetCode(info.SumFinanceConfirmMoney > 0 ? CodeType.GT : CodeType.PY), ReceiptType = Convert.ToInt32(info.SumFinanceConfirmMoney > 0 ? CompanyFundReceiptType.Receive : CompanyFundReceiptType.Payment), ApplyDateTime = DateTime.Now, ApplicantID = personnelInfo.PersonnelId, PurchaseOrderNo = string.Empty, CompanyID = companyList[0] }; string msg = "{0} 应{1}总额:{2},我方总额:{3},异常总额:{4}"; //确认金额,系统金额,异常金额 msg = string.Format(msg, info.FilialeName, info.SumFinanceConfirmMoney > 0 ? "收" : "付", Math.Abs(info.SumFinanceConfirmMoney).ToString("f2"), Math.Abs(info.SumConfirmMoney).ToString("f2"), Math.Abs(info.DiffMoney).ToString("f2")); receipt.HasInvoice = true; receipt.SettleStartDate = Convert.ToDateTime("1999-09-09"); receipt.SettleEndDate = Convert.ToDateTime("1999-09-09"); receipt.ExpectBalance = Math.Abs(info.SumFinanceConfirmMoney); receipt.RealityBalance = Math.Abs(info.SumFinanceConfirmMoney); receipt.DiscountMoney = 0; receipt.DiscountCaption = string.Empty; receipt.OtherDiscountCaption = "[快递对账生成的收付款]"; receipt.FilialeId = info.FilialeId; receipt.ReceiptStatus = info.SumFinanceConfirmMoney < 0 ? Convert.ToInt32(CompanyFundReceiptState.WaitAuditing) : Convert.ToInt32(CompanyFundReceiptState.WaitInvoice); receipt.StockOrderNos = string.Empty; receipt.Remark = WebControl.RetrunUserAndTime(msg); receipt.IsOut = true; receipt.PaymentDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM")); receiptList.Add(receipt); } else { var receipt = new CompanyFundReceiptInfo { ReceiptNo = _codeManager.GetCode(info.SumFinanceConfirmMoney > 0 ? CodeType.GT : CodeType.PY), ReceiptType = Convert.ToInt32(info.SumFinanceConfirmMoney > 0 ? CompanyFundReceiptType.Receive : CompanyFundReceiptType.Payment), ApplyDateTime = DateTime.Now, ApplicantID = personnelInfo.PersonnelId, PurchaseOrderNo = string.Empty, CompanyID = companyList[0] }; string msg = "{0} 应{1}总额:{2},我方总额:{3},异常总额:{4}"; //确认金额,系统金额,异常金额 msg = string.Format(msg, "其他公司", info.SumFinanceConfirmMoney > 0 ? "收" : "付", Math.Abs(info.SumFinanceConfirmMoney).ToString("f2"), Math.Abs(info.SumConfirmMoney).ToString("f2"), Math.Abs(info.DiffMoney).ToString("f2")); receipt.HasInvoice = false; receipt.SettleStartDate = Convert.ToDateTime("1999-09-09"); receipt.SettleEndDate = Convert.ToDateTime("1999-09-09"); receipt.ExpectBalance = Math.Abs(info.SumFinanceConfirmMoney); receipt.RealityBalance = Math.Abs(info.SumFinanceConfirmMoney); receipt.DiscountMoney = 0; receipt.DiscountCaption = string.Empty; receipt.OtherDiscountCaption = "[快递对账生成的收付款]"; receipt.FilialeId = _reckoningElseFilialeid; receipt.ReceiptStatus = info.SumFinanceConfirmMoney < 0 ? Convert.ToInt32(CompanyFundReceiptState.WaitAuditing) : Convert.ToInt32(CompanyFundReceiptState.Audited); receipt.StockOrderNos = string.Empty; receipt.Remark = WebControl.RetrunUserAndTime(msg); receipt.IsOut = false; receipt.PaymentDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM")); receiptList.Add(receipt); } } #endregion #region [最初处理方式暂注释] //foreach (var key in dictionary.Keys) //{ // //decimal money = checkDataManager.GetTotalMoney(key); // //decimal server = checkDataManager.GetServerMoney(key); // var list = checkDataManager.GetTotalMoney(key); //实际对账金额 (实收金额累计) // IList<ExceptionReckoningInfo> filialeExceptionReckoningInfoList = new BindingList<ExceptionReckoningInfo>(); // IList<ExceptionReckoningInfo> elseExceptionReckoningInfoList = new BindingList<ExceptionReckoningInfo>(); // foreach (var item in list) // { // if (item.IsOut) // filialeExceptionReckoningInfoList.Add(item); // else // elseExceptionReckoningInfoList.Add(item); // } // //生成公司的往来单位收付款 // foreach (var item in filialeExceptionReckoningInfoList) // { // decimal totalMoney = 0; // decimal serverMoney = 0; // decimal exceptionMoney; // if (dictionary[key] == (int)ReckoningCheckType.Carriage) // { // totalMoney -= item.SumFinanceConfirmMoney; // serverMoney -= item.SumConfirmMoney; // exceptionMoney = item.SumConfirmMoney - item.SumFinanceConfirmMoney; // } // else // { // totalMoney += item.SumFinanceConfirmMoney; // serverMoney += item.SumConfirmMoney; // exceptionMoney = item.SumFinanceConfirmMoney - item.SumConfirmMoney; // } // if (totalMoney == 0) continue; // //生成往来单位收付款 // var receipt = new CompanyFundReceiptInfo // { // ReceiptNo = codeManager.GetCode(totalMoney > 0 ? CodeType.GT : CodeType.PY), // ReceiptType = Convert.ToInt32(totalMoney > 0 ? CompanyFundReceiptType.Receive : CompanyFundReceiptType.Payment), // ApplyDateTime = DateTime.Now, // ApplicantID = personnelInfo.PersonnelId, // PurchaseOrderNo = string.Empty, // CompanyID = companyList[0] // }; // string msg = "{0} 应{1}总额:{2},我方总额:{3},异常总额:{4}"; //确认金额,系统金额,异常金额 // msg = string.Format(msg, item.FilialeName, totalMoney > 0 ? "收" : "付", Math.Abs(totalMoney).ToString("f2"), // Math.Abs(serverMoney).ToString("f2"), Math.Abs(exceptionMoney).ToString("f2")); // receipt.HasInvoice = item.IsOut; // receipt.SettleStartDate = Convert.ToDateTime("1999-09-09"); // receipt.SettleEndDate = Convert.ToDateTime("1999-09-09"); // receipt.ExpectBalance = Math.Abs(totalMoney); // receipt.RealityBalance = Math.Abs(totalMoney); // receipt.DiscountMoney = 0; // receipt.DiscountCaption = string.Empty; // receipt.OtherDiscountCaption = "[快递对账生成的收付款]"; // receipt.FilialeId = item.FilialeId; // receipt.ReceiptStatus = totalMoney < 0 // ? Convert.ToInt32(CompanyFundReceiptState.WaitAuditing) // : Convert.ToInt32(CompanyFundReceiptState.WaitInvoice); // receipt.StockOrderNos = string.Empty; // receipt.Remark = WebControl.RetrunUserAndTime(msg); // receipt.IsOut = item.IsOut; // receiptList.Add(receipt); // } // if (elseExceptionReckoningInfoList.Count > 0) // { // decimal totalMoney = 0; // decimal serverMoney = 0; // decimal exceptionMoney; // var sumFinanceConfirmMoney = elseExceptionReckoningInfoList.Sum(ent => ent.SumFinanceConfirmMoney); // var sumConfirmMoney = elseExceptionReckoningInfoList.Sum(ent => ent.SumConfirmMoney); // if (dictionary[key] == (int)ReckoningCheckType.Carriage) // { // totalMoney -= sumFinanceConfirmMoney; // serverMoney -= sumConfirmMoney; // exceptionMoney = sumConfirmMoney - sumFinanceConfirmMoney; // } // else // { // totalMoney += sumFinanceConfirmMoney; // serverMoney += sumConfirmMoney; // exceptionMoney = sumFinanceConfirmMoney - sumConfirmMoney; // } // if (totalMoney == 0) continue; // //生成往来单位收付款 // var receipt = new CompanyFundReceiptInfo // { // ReceiptNo = codeManager.GetCode(totalMoney > 0 ? CodeType.GT : CodeType.PY), // ReceiptType = Convert.ToInt32(totalMoney > 0 ? CompanyFundReceiptType.Receive : CompanyFundReceiptType.Payment), // ApplyDateTime = DateTime.Now, // ApplicantID = personnelInfo.PersonnelId, // PurchaseOrderNo = string.Empty, // CompanyID = companyList[0] // }; // string msg = "{0} 应{1}总额:{2},我方总额:{3},异常总额:{4}"; //确认金额,系统金额,异常金额 // msg = string.Format(msg, "其他公司", totalMoney > 0 ? "收" : "付", Math.Abs(totalMoney).ToString("f2"), Math.Abs(serverMoney).ToString("f2"), Math.Abs(exceptionMoney).ToString("f2")); // receipt.HasInvoice = false; // receipt.SettleStartDate = Convert.ToDateTime("1999-09-09"); // receipt.SettleEndDate = Convert.ToDateTime("1999-09-09"); // receipt.ExpectBalance = Math.Abs(totalMoney); // receipt.RealityBalance = Math.Abs(totalMoney); // receipt.DiscountMoney = 0; // receipt.DiscountCaption = string.Empty; // receipt.OtherDiscountCaption = "[快递对账生成的收付款]"; // receipt.FilialeId = _reckoningElseFilialeid; // receipt.ReceiptStatus = totalMoney < 0 // ? Convert.ToInt32(CompanyFundReceiptState.WaitAuditing) // : Convert.ToInt32(CompanyFundReceiptState.Audited); // receipt.StockOrderNos = string.Empty; // receipt.Remark = WebControl.RetrunUserAndTime(msg); // receipt.IsOut = false; // receiptList.Add(receipt); // } //} #endregion #region 添加往来账,修改往来账 try { using (var scop = new TransactionScope()) { if (receiptList.Count > 0) { ICompanyFundReceipt companyFundReceipt = new DAL.Implement.Inventory.CompanyFundReceipt(GlobalConfig.DB.FromType.Write); foreach (var item in receiptList) { bool isInsert = companyFundReceipt.Insert(item); var info = companyFundReceipt.GetFundReceiptInfoByReceiptNo(item.ReceiptNo); if (isInsert && info.ReceiptID != Guid.Empty) { WebControl.AddOperationLog(personnelInfo.PersonnelId, personnelInfo.RealName, info.ReceiptID, info.ReceiptNo, item.RealityBalance > 0 ? OperationPoint.CurrentReceivedPayment.FillBill.GetBusinessInfo() : OperationPoint.CurrentReceivedPayment.FillPayment.GetBusinessInfo(), string.Empty); WebControl.AddOperationLog(personnelInfo.PersonnelId, personnelInfo.RealName, info.ReceiptID, info.ReceiptNo, OperationPoint.CurrentReceivedPayment.Remarks.GetBusinessInfo(), string.Empty); } } } var mediumReckoning = MediumReckoning.WriteInstance; foreach (var key in dictionary.Keys) { _checkDataManagerWrite.UpdateState(key, (int)CheckDataState.Checked); mediumReckoning.DeleteTempReckoning(key); } scop.Complete(); } _submitController.Submit(); } catch (Exception ex) { RAM.Alert("往来账处理异常:" + ex.Message); return; } //if (!string.IsNullOrWhiteSpace(receiptNo)) //{ // RAM.ResponseScripts.Add(string.Format("return ShowCheckHistoryForm('{0}')", receiptNo)); //} //else //{ RAM.Alert("往来账收付款生成完毕!"); // } #endregion rgCheckHistory.Rebind(); }
/// <summary> /// 供应商对账 /// </summary> /// <param name="checkType">往来单据付款类型</param> /// <param name="receiptInfo">往来单位收付款</param> /// <param name="description">描述备注</param> /// <param name="reckoningInfos">待添加的往来帐</param> /// <param name="stockOrderNos">入库单据集合</param> /// <param name="removeNos"></param> /// <param name="receiveBill">收款单</param> /// <param name="errorMsg">错误信息</param> /// <returns></returns> public static bool CheckCompany(int checkType, CompanyFundReceiptInfo receiptInfo, string description, IList <ReckoningInfo> reckoningInfos, IList <string> stockOrderNos, IList <string> removeNos, out CompanyFundReceiptInfo receiveBill, out string errorMsg) { receiveBill = null; var codeManager = new CodeManager(); ICompanyCussent companyCussent = new CompanyCussent(GlobalConfig.DB.FromType.Write); var companyCussentInfo = companyCussent.GetCompanyCussent(receiptInfo.CompanyID); //判断往来单位是否为内部公司 if (companyCussentInfo == null) { errorMsg = "往来单位信息获取失败"; return(false); } var reckoningId = Guid.NewGuid(); var reckoningInfo = new ReckoningInfo(reckoningId, receiptInfo.FilialeId, receiptInfo.CompanyID, codeManager.GetCode(CodeType.PY), description, receiptInfo.RealityBalance, (int)ReckoningType.Income, (int)ReckoningStateType.Currently, (int)CheckType.IsChecked, (int)AuditingState.Yes, receiptInfo.ReceiptNo, Guid.Empty) { IsOut = receiptInfo.IsOut }; IReckoning reckoning = new Reckoning(GlobalConfig.DB.FromType.Write); var thirdCompanyInfo = companyCussent.GetCompanyByRelevanceFilialeId(receiptInfo.FilialeId); #region 如果公司内部付款时 生成对应的已完成的收款往来单据) if (companyCussentInfo.RelevanceFilialeId != Guid.Empty) { if (thirdCompanyInfo == null) { errorMsg = "付款公司未关联供应商"; return(false); } receiveBill = new CompanyFundReceiptInfo { FilialeId = companyCussentInfo.RelevanceFilialeId, CompanyID = thirdCompanyInfo.CompanyId, PayBankAccountsId = receiptInfo.ReceiveBankAccountId, ReceiptType = (int)CompanyFundReceiptType.Receive, ReceiptStatus = (int)CompanyFundReceiptState.Finish, ReceiptID = Guid.NewGuid(), ReceiptNo = codeManager.GetCode(CodeType.GT), ApplyDateTime = receiptInfo.ApplyDateTime, PurchaseOrderNo = "", ReceiveBankAccountId = Guid.Empty, StockOrderNos = "", DealFlowNo = "", FinishDate = DateTime.Now, AuditingDate = receiptInfo.AuditingDate, AuditorID = receiptInfo.AuditorID, Poundage = 0, ExecuteDateTime = DateTime.Now, Remark = string.Format("[公司内部付款单:{0}]", receiptInfo.ReceiptNo), OtherDiscountCaption = "", DiscountCaption = "", DiscountMoney = 0, DebarStockNos = "", LastRebate = 0, ApplicantID = receiptInfo.ApplicantID, AuditFailureReason = "", CompanyName = thirdCompanyInfo.CompanyName, ExpectBalance = receiptInfo.RealityBalance, HasInvoice = receiptInfo.HasInvoice, RealityBalance = receiptInfo.RealityBalance, IncludeStockNos = "", PaymentDate = receiptInfo.PaymentDate, SettleStartDate = receiptInfo.SettleStartDate, SettleEndDate = receiptInfo.SettleEndDate }; } #endregion switch (checkType) { #region //按采购单进行付款 如果往来单位是关联内部公司:ex:可得向可镜采购 那么可得付完款平账完成 可镜收款完成 平账 case 1: var purchaseOrderNos = receiptInfo.PurchaseOrderNo.Split(','); if (purchaseOrderNos.Length > 1) { IPurchasing purchasing = new Purchasing(GlobalConfig.DB.FromType.Read); foreach (var purchaseOrderNo in purchaseOrderNos) { var totalPrice = purchasing.GetPurchasingAmount(purchaseOrderNo); if (receiptInfo.DiscountMoney != 0) { totalPrice -= Math.Abs(receiptInfo.DiscountMoney); } if (receiptInfo.LastRebate != 0) { totalPrice -= Math.Abs(receiptInfo.LastRebate); } reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), receiptInfo.FilialeId, receiptInfo.CompanyID, codeManager.GetCode(CodeType.PY), description, totalPrice, (int)ReckoningType.Income, (int)ReckoningStateType.Currently, (int)CheckType.IsChecked, (int)AuditingState.Yes, purchaseOrderNo, Guid.Empty) { IsOut = receiptInfo.IsOut, LinkTradeType = (int)ReckoningLinkTradeType.PurchasingNo }); if (companyCussentInfo.RelevanceFilialeId != Guid.Empty) { reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, codeManager.GetCode(CodeType.PY), description, -totalPrice, (int)ReckoningType.Defray, (int)ReckoningStateType.Currently, (int)CheckType.IsChecked, (int)AuditingState.Yes, purchaseOrderNo, Guid.Empty) { IsOut = receiptInfo.IsOut, LinkTradeType = (int)ReckoningLinkTradeType.PurchasingNo }); } } //将物流公司销售出库给销售公司的往来账平掉 reckoning.CheckByPurchaseOrder(purchaseOrderNos, reckoningInfo.FilialeId, receiptInfo.CompanyID, receiptInfo.SettleStartDate); if (companyCussentInfo.RelevanceFilialeId != Guid.Empty) { reckoning.CheckByPurchaseOrder(purchaseOrderNos, companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, receiptInfo.SettleStartDate); } } else { reckoningInfo.LinkTradeCode = receiptInfo.PurchaseOrderNo; reckoningInfo.LinkTradeType = (int)ReckoningLinkTradeType.PurchasingNo; reckoningInfos.Add(reckoningInfo); //将物流公司销售出库给销售公司的往来账平掉 reckoning.CheckByPurchaseOrder(purchaseOrderNos, reckoningInfo.FilialeId, receiptInfo.CompanyID, receiptInfo.SettleStartDate); if (companyCussentInfo.RelevanceFilialeId != Guid.Empty) { reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, codeManager.GetCode(CodeType.PY), description, -receiptInfo.RealityBalance, (int)ReckoningType.Defray, (int)ReckoningStateType.Currently, (int)CheckType.IsChecked, (int)AuditingState.Yes, receiptInfo.PurchaseOrderNo, Guid.Empty) { IsOut = receiptInfo.IsOut, LinkTradeType = (int)ReckoningLinkTradeType.PurchasingNo }); reckoning.CheckByPurchaseOrder(purchaseOrderNos, companyCussentInfo.RelevanceFilialeId, receiptInfo.CompanyID, receiptInfo.SettleStartDate); } } break; #endregion case 2: //按入库单进行付款 var stockNos = receiptInfo.StockOrderNos.Split(','); reckoning.CheckByStorageTradeCode(stockNos, reckoningInfo.FilialeId, receiptInfo.CompanyID, receiptInfo.SettleStartDate); reckoningInfo.LinkTradeType = (int)ReckoningLinkTradeType.StockIn; reckoningInfos.Add(reckoningInfo); if (companyCussentInfo.RelevanceFilialeId != Guid.Empty) { reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, codeManager.GetCode(CodeType.PY), description, -receiptInfo.RealityBalance, (int)ReckoningType.Defray, (int)ReckoningStateType.Currently, (int)CheckType.IsChecked, (int)AuditingState.Yes, receiptInfo.ReceiptNo, Guid.Empty) { IsOut = receiptInfo.IsOut }); reckoning.CheckByStorageTradeCode(stockNos, companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, receiptInfo.SettleStartDate); } break; case 3: //按日期付款 reckoningInfo.LinkTradeType = (int)ReckoningLinkTradeType.CompanyFundReceipt; var result = reckoning.CheckByDate(receiptInfo.CompanyID, reckoningInfo.FilialeId, receiptInfo.SettleStartDate, receiptInfo.SettleEndDate.AddDays(1).AddSeconds(-1), (int)CheckType.NotCheck, stockOrderNos, removeNos); if (result) { if (companyCussentInfo.RelevanceFilialeId != Guid.Empty) { reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, codeManager.GetCode(CodeType.PY), description, -receiptInfo.RealityBalance, (int)ReckoningType.Defray, (int)ReckoningStateType.Currently, (int)CheckType.IsChecked, (int)AuditingState.Yes, receiptInfo.ReceiptNo, Guid.Empty) { IsOut = receiptInfo.IsOut }); //反向更新往来单位和公司的帐务 result = reckoning.CheckByDate(thirdCompanyInfo.CompanyId, companyCussentInfo.RelevanceFilialeId, receiptInfo.SettleStartDate, receiptInfo.SettleEndDate.AddDays(1).AddSeconds(-1), (int)CheckType.NotCheck, stockOrderNos, removeNos); if (!result) { errorMsg = "反向更新往来单位和公司间往来帐状态失败!"; return(false); } } } else { errorMsg = "按日期结算往来帐查询无效!"; return(false); } reckoningInfos.Add(reckoningInfo); break; default: if (companyCussentInfo.RelevanceFilialeId != Guid.Empty) { reckoningInfos.Add(new ReckoningInfo(Guid.NewGuid(), companyCussentInfo.RelevanceFilialeId, thirdCompanyInfo.CompanyId, codeManager.GetCode(CodeType.PY), description, -receiptInfo.RealityBalance, (int)ReckoningType.Defray, (int)ReckoningStateType.Currently, (int)CheckType.IsChecked, (int)AuditingState.Yes, receiptInfo.ReceiptNo, Guid.Empty) { IsOut = receiptInfo.IsOut }); } reckoningInfo.LinkTradeType = (int)ReckoningLinkTradeType.CompanyFundReceipt; reckoningInfos.Add(reckoningInfo); break; } errorMsg = ""; return(true); }