/// <summary>添加往来帐到实体店系统中 /// </summary> /// <param name="reckoningInfo"></param> /// <param name="errorMsg"></param> /// <returns></returns> private bool AddReckoningToEntityShop(ReckoningInfo reckoningInfo, out string errorMsg) { errorMsg = string.Empty; var info = new ReckoningRecordDTO { AccountReceivable = reckoningInfo.AccountReceivable, JoinTotalPrice = reckoningInfo.JoinTotalPrice, AuditingState = true, CompanyID = reckoningInfo.ThirdCompanyID, DateCreated = reckoningInfo.DateCreated, Description = reckoningInfo.Description, ShopID = reckoningInfo.FilialeId, NonceTotalled = reckoningInfo.NonceTotalled, OriginalTradeCode = reckoningInfo.LinkTradeCode, ID = reckoningInfo.ReckoningId, ReckoningType = reckoningInfo.ReckoningType, TradeCode = reckoningInfo.TradeCode }; if (info.CompanyID == info.ShopID) { errorMsg = ("往来公司ID和账目公司ID一样,故无法插入往来帐!"); return(false); } if (!FilialeManager.IsEntityShopFiliale(info.ShopID)) { errorMsg = ("往来公司ID不是门店公司,故无法插入往来帐!"); return(false); } var headFililaleId = FilialeManager.GetShopHeadFilialeId(info.ShopID); var result = PushManager.AddToShop(headFililaleId, "InsertReckoningWithPush", info.TradeCode, info); if (!result) { errorMsg = ("插入门店对ERP应付帐失败!"); return(false); } return(true); }
/// <summary>添加门店应付帐 /// </summary> /// <param name="filialeid"> </param> /// <param name="reckoningInfo"></param> public static bool AddShopFrontReckoning(Guid filialeid, ReckoningInfo reckoningInfo) { var info = new ReckoningRecordDTO { AccountReceivable = reckoningInfo.AccountReceivable, AuditingState = false, CompanyID = reckoningInfo.ThirdCompanyID, DateCreated = reckoningInfo.DateCreated, Description = reckoningInfo.Description, ShopID = reckoningInfo.FilialeId, NonceTotalled = reckoningInfo.NonceTotalled, OriginalTradeCode = reckoningInfo.LinkTradeCode, ID = reckoningInfo.ReckoningId, ReckoningType = reckoningInfo.ReckoningType, TradeCode = reckoningInfo.TradeCode }; using (var client = ClientProxy.CreateShopStoreWcfClient((filialeid))) { var result = client.Instance.InsertReckoningRecord(info); return(result != null && result.IsSuccess); } }
/// <summary>新架构完成订单创建所需往来账 2015-01-19 陈重文 /// </summary> /// <param name="goodsOrderInfo">订单信息</param> /// <param name="goodsOrderDetailInfoList">订单明细</param> /// <param name="goodsOrderDeliverInfo">订单运费信息</param> /// <param name="errorMsg">错误信息</param> /// <returns></returns> public IEnumerable <ReckoningInfo> NewCreateReckoningInfoList(GoodsOrderInfo goodsOrderInfo, IList <GoodsOrderDetailInfo> goodsOrderDetailInfoList, out GoodsOrderDeliverInfo goodsOrderDeliverInfo, out string errorMsg) { if (goodsOrderInfo.HostingFilialeId == Guid.Empty) { goodsOrderInfo.HostingFilialeId = WMSSao.GetHostingFilialeIdByWarehouseIdGoodsTypes(goodsOrderInfo.DeliverWarehouseId, goodsOrderInfo.SaleFilialeId, goodsOrderDetailInfoList.Select(ent => ent.GoodsType).Distinct()); } //所需添加的往来帐集合 IList <ReckoningInfo> reckoningList = new List <ReckoningInfo>(); goodsOrderDeliverInfo = null; var orderCarriageInfo = _wmsSao.GetOrderNoCarriage(goodsOrderInfo.OrderNo, out errorMsg); if (orderCarriageInfo == null) { return(reckoningList); } var carriage = orderCarriageInfo.Carriage; if (carriage != 0) { goodsOrderDeliverInfo = new GoodsOrderDeliverInfo { OrderId = goodsOrderInfo.OrderId, TotalWeight = orderCarriageInfo.PackageWeight == 0 ? 0 : Convert.ToDouble(orderCarriageInfo.PackageWeight) / 1000, CarriageFee = Convert.ToDouble(orderCarriageInfo.Carriage), ExpressId = goodsOrderInfo.ExpressId, ExpressNo = goodsOrderInfo.ExpressNo, MaxWrongValue = 0, ProvinceName = orderCarriageInfo.Province, CityName = orderCarriageInfo.City }; } #region [检查快递往来单位信息] Guid companyId = Express.Instance.Get(goodsOrderInfo.ExpressId).CompanyId; CompanyCussentInfo expressCompanyInfo = _companyCussent.GetCompanyCussent(companyId); if (expressCompanyInfo == null) { errorMsg = "快递公司的往来对账信息没有建立!"; return(new List <ReckoningInfo>()); } #endregion //获取销售公司名称 string saleFilialeName = FilialeManager.GetName(goodsOrderInfo.SaleFilialeId); string hostingFilialeName = FilialeManager.GetName(goodsOrderInfo.HostingFilialeId); #region [运费往来帐] if (carriage > 0) { #region [销售公司对快递公司应付快递运费帐] //销售公司对快递公司的应付快递运费帐 var saleFilialeToCarriage = new ReckoningInfo { ContructType = ContructType.Insert, ReckoningId = Guid.NewGuid(), TradeCode = _codeManager.GetCode(CodeType.PY), DateCreated = DateTime.Now, ReckoningType = (int)ReckoningType.Defray, State = (int)ReckoningStateType.Currently, IsChecked = (int)CheckType.NotCheck, AuditingState = (int)AuditingState.Yes, LinkTradeCode = goodsOrderInfo.ExpressNo, WarehouseId = goodsOrderInfo.DeliverWarehouseId, FilialeId = goodsOrderInfo.HostingFilialeId, ThirdCompanyID = expressCompanyInfo.CompanyId, Description = string.Format("[完成订单,{0}对快递公司{1}运费应付款]", hostingFilialeName, expressCompanyInfo.CompanyName), AccountReceivable = -carriage, JoinTotalPrice = -carriage, ReckoningCheckType = (int)ReckoningCheckType.Carriage, IsOut = goodsOrderInfo.IsOut, LinkTradeType = (int)ReckoningLinkTradeType.Express, }; reckoningList.Add(saleFilialeToCarriage); #endregion } #endregion #region 销售公司对快递公司的订单代收帐 if (goodsOrderInfo.PayMode == (int)PayMode.COD || goodsOrderInfo.PayMode == (int)PayMode.COM) { #region [销售公司对快递公司的订单代收帐] //销售公司对快递公司的订单代收帐 var saleFilialeToRealTotalPrice = new ReckoningInfo { ContructType = ContructType.Insert, ReckoningId = Guid.NewGuid(), TradeCode = _codeManager.GetCode(CodeType.GT), DateCreated = DateTime.Now, ReckoningType = (int)ReckoningType.Income, State = (int)ReckoningStateType.Currently, IsChecked = (int)CheckType.NotCheck, AuditingState = (int)AuditingState.Yes, LinkTradeCode = goodsOrderInfo.ExpressNo, WarehouseId = goodsOrderInfo.DeliverWarehouseId, FilialeId = goodsOrderInfo.SaleFilialeId, ThirdCompanyID = expressCompanyInfo.CompanyId, Description = string.Format("[完成订单,{0}对快递公司{1}的订单应收货款]", saleFilialeName, expressCompanyInfo.CompanyName), AccountReceivable = WebRudder.ReadInstance.CurrencyValue(goodsOrderInfo.RealTotalPrice), ReckoningCheckType = (int)ReckoningCheckType.Collection, IsOut = goodsOrderInfo.IsOut, LinkTradeType = (int)ReckoningLinkTradeType.GoodsOrder, }; reckoningList.Add(saleFilialeToRealTotalPrice); #endregion } #endregion return(reckoningList); }
/// <summary> /// 按指定计算日期、销售公司、物流配送公司、仓库、储位,生成销售公司的采购单和采购入库单 /// </summary> /// <param name="calculateDate"></param> /// <param name="saleFilialeThirdCompanyId">销售公司往来单位Id</param> /// <param name="hostingFilialeId">物流公司ID</param> /// <param name="warehouseId"></param> /// <param name="storageType"></param> internal static void GenerateSaleFilialeStockInAndPurchasing(DateTime calculateDate, Guid saleFilialeThirdCompanyId, Guid hostingFilialeId, Guid warehouseId, int storageType) { var hostingFilialeThirdCompany = _companyCussent.GetCompanyByRelevanceFilialeId(hostingFilialeId); //根据物流公司获取往来单位 if (hostingFilialeThirdCompany == null) { return; } var saleFilialeId = _companyCussent.GetRelevanceFilialeIdByCompanyId(saleFilialeThirdCompanyId); //根据往来单位获取公司 if (saleFilialeId == Guid.Empty) { return; } if (saleFilialeId == hostingFilialeId) { return; } bool isGenerated = SaleFilialeStorageInDal.IsGenerated(calculateDate, saleFilialeId, hostingFilialeThirdCompany.CompanyId, warehouseId, storageType); if (!isGenerated) { var simpleStockRecordDetails = SaleFilialeStorageInDal.GetSaleFilialeStockInDetailList(calculateDate, saleFilialeThirdCompanyId, hostingFilialeId, warehouseId, storageType); if (!simpleStockRecordDetails.Any()) { return; } // 不重新获取采购价,直接取对应的物流配送公司给销售公司的的销售出库单里计算即可得到 var purchasePriceDict = (from item in simpleStockRecordDetails.GroupBy(g => g.GoodsId) select new KeyValuePair <Guid, decimal>(item.Key, item.Sum(s => s.Amount) / item.Sum(s => s.Quantity))) .ToDictionary(kv => kv.Key, kv => kv.Value); //销售公司采购单 var purchasingRecord = new PurchasingInfo { PurchasingID = Guid.NewGuid(), PurchasingNo = _codeManager.GetCode(CodeType.PH), CompanyID = hostingFilialeThirdCompany.CompanyId, CompanyName = hostingFilialeThirdCompany.CompanyName, FilialeID = saleFilialeId, WarehouseID = warehouseId, PurchasingState = (int)PurchasingState.AllComplete, PurchasingType = (int)PurchasingType.AutoInternal, StartTime = calculateDate, EndTime = DateTime.Now, Description = "[内部采购]", PmId = Guid.Empty, PmName = string.Empty, Director = "系统", PersonResponsible = Guid.Empty, ArrivalTime = calculateDate.Date, PurchasingFilialeId = saleFilialeId }; var purchasingRecordDetailList = simpleStockRecordDetails.Select(m => new PurchasingDetailInfo { PurchasingGoodsID = Guid.NewGuid(), PurchasingID = purchasingRecord.PurchasingID, GoodsID = m.RealGoodsId, GoodsName = m.GoodsName, GoodsCode = m.GoodsCode, Specification = m.Specification, CompanyID = hostingFilialeThirdCompany.CompanyId, Price = purchasePriceDict.ContainsKey(m.GoodsId) ? purchasePriceDict[m.GoodsId] : 0, PlanQuantity = m.Quantity, PurchasingGoodsType = (int)PurchasingGoodsType.NoGift, RealityQuantity = m.Quantity, State = 1, Description = "[内部采购]", Units = string.Empty }).ToList(); //销售公司采购进货入库单 var stockRecord = new StorageRecordInfo { StockId = Guid.NewGuid(), TradeCode = _codeManager.GetCode(CodeType.RK), FilialeId = saleFilialeId, WarehouseId = warehouseId, ThirdCompanyID = hostingFilialeThirdCompany.CompanyId, DateCreated = calculateDate.Date, Transactor = "系统操作", Description = "[内部采购]", LogisticsCode = string.Empty, StockType = (int)StorageRecordType.BuyStockIn, StockState = (int)StorageRecordState.Finished, LinkTradeType = (int)StorageRecordLinkTradeType.Purchasing, LinkTradeCode = purchasingRecord.PurchasingNo, LinkTradeID = purchasingRecord.PurchasingID, RelevanceFilialeId = Guid.Empty, RelevanceWarehouseId = Guid.Empty, StockValidation = false, StorageType = storageType, SubtotalQuantity = 0, AccountReceivable = 0, TradeBothPartiesType = (int)TradeBothPartiesType.HostingToSale }; var stockRecordDetailList = simpleStockRecordDetails.Select(m => new StorageRecordDetailInfo { StockId = stockRecord.StockId, GoodsId = m.GoodsId, Specification = m.Specification, Quantity = m.Quantity, UnitPrice = purchasePriceDict.ContainsKey(m.GoodsId) ? purchasePriceDict[m.GoodsId] : 0, GoodsName = m.GoodsName, GoodsCode = m.GoodsCode, RealGoodsId = m.RealGoodsId, Description = "[内部采购]", NonceWarehouseGoodsStock = 0, Units = string.Empty, ShelfType = 1 }).ToList(); List <ReckoningInfo> reckoningInfos = new List <ReckoningInfo>(); var accountReceivable = Math.Round(Math.Abs(stockRecordDetailList.Sum(act => act.Quantity * act.UnitPrice)), 2); //可得采购应付款 var saleFilialeReckoning = new ReckoningInfo(Guid.NewGuid(), stockRecord.FilialeId, stockRecord.ThirdCompanyID, _codeManager.GetCode(CodeType.PY), stockRecord.Description, -accountReceivable, (int)ReckoningType.Defray, (int)ReckoningStateType.Currently, (int)CheckType.NotCheck, (int)AuditingState.Yes, stockRecord.TradeCode, stockRecord.WarehouseId) { LinkTradeType = (int)ReckoningLinkTradeType.StockIn, IsOut = stockRecord.IsOut }; //可镜销售出库应收款 var hostingFilialeReckoning = new ReckoningInfo(Guid.NewGuid(), hostingFilialeId, saleFilialeThirdCompanyId, _codeManager.GetCode(CodeType.PY), stockRecord.Description, accountReceivable, (int)ReckoningType.Income, (int)ReckoningStateType.Currently, (int)CheckType.NotCheck, (int)AuditingState.Yes, stockRecord.TradeCode, stockRecord.WarehouseId) { LinkTradeType = (int)ReckoningLinkTradeType.GoodsOrder, IsOut = stockRecord.IsOut }; reckoningInfos.Add(saleFilialeReckoning); reckoningInfos.Add(hostingFilialeReckoning); using (var tran = new TransactionScope(TransactionScopeOption.Required)) { try { var result = _purchasingManager.Insert(purchasingRecord, purchasingRecordDetailList); if (!result) { LogError(string.Format("生成采购单失败!计算日期:{0},销售公司:{1},物流配送公司:{2},仓库:{3},储位:{4}", calculateDate, saleFilialeId, hostingFilialeId, warehouseId, storageType)); return; } result = _storageManager.AddStorageRecord(stockRecord, stockRecordDetailList); if (!result) { LogError(string.Format("生成采购入库单失败!计算日期:{0},销售公司:{1},物流配送公司:{2},仓库:{3},储位:{4}", calculateDate, saleFilialeId, hostingFilialeId, warehouseId, storageType)); return; } foreach (var reckoningInfo in reckoningInfos) { string errorMessage; result = _reckoning.Insert(reckoningInfo, out errorMessage); if (!result) { LogError(string.Format("生成往来账失败!计算日期:{0},销售公司:{1},物流配送公司:{2},仓库:{3},储位:{4},{5}", calculateDate, saleFilialeId, hostingFilialeId, warehouseId, storageType, errorMessage)); return; } } // 计算即时结算价 var items = _realTimeGrossSettlementManager.CreateByPurchaseStockIn(stockRecord.StockId, calculateDate).ToList(); items.ForEach(m => _realTimeGrossSettlementManager.Calculate(m)); tran.Complete(); LogInfo(string.Format("生成成功!计算日期:{0},销售公司:{1},物流配送公司:{2},仓库:{3},储位:{4}", calculateDate, saleFilialeId, hostingFilialeId, warehouseId, storageType)); } catch (Exception ex) { LogError(string.Format("生成采购单和采购入库单失败!计算日期:{0},销售公司:{1},物流配送公司:{2},仓库:{3},储位:{4}", calculateDate, saleFilialeId, hostingFilialeId, warehouseId, storageType), ex); return; } } } }
/// <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); }