/// <summary> /// 操作借贷明细账 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="detail">借贷明细LINQ数据集</param> public void OperationDetail(DepotManagementDataContext ctx, S_ProductLendReturnDetail detail) { BASE_SubsidiaryOperationType tempOperationType = UniversalFunction.GetSubsidiaryOperationType(detail.OperationType); if (tempOperationType == null) { throw new Exception("明细账操作类型错误,请重新确认"); } else if (tempOperationType.LendReturnType == null) { throw new Exception("借贷业务错误"); } var varData = from a in ctx.S_ProductLendReturnDetail where a.Debtor == detail.Debtor && a.Credit == detail.Credit && a.GoodsID == detail.GoodsID && a.BatchNo == detail.BatchNo && a.Provider == detail.Provider select a; if (varData.Count() > 0) { throw new Exception("相同单据中,物品重复,请重新确认"); } else { ctx.S_ProductLendReturnDetail.InsertOnSubmit(detail); } }
/// <summary> /// 操作明细账(并且操作库存) /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="subsidiary">明细账对象</param> public void OperationSubsidiary(DepotManagementDataContext ctx, WS_Subsidiary subsidiary) { if (!Convert.ToBoolean(BasicInfo.BaseSwitchInfo[(int)GlobalObject.CE_SwitchName.开启车间管理模块])) { return; } Service_Manufacture_WorkShop.IWorkShopProductCode serverProduct = Service_Manufacture_WorkShop.ServerModuleFactory.GetServerModule <Service_Manufacture_WorkShop.IWorkShopProductCode>(); BASE_SubsidiaryOperationType tempOperationType = UniversalFunction.GetSubsidiaryOperationType(subsidiary.OperationType); if (tempOperationType == null) { throw new Exception("明细账操作类型错误,请重新确认"); } serverProduct.OperatorProductCodeStock(ctx, subsidiary.BillNo, subsidiary.GoodsID, subsidiary.OperationType); ctx.WS_Subsidiary.InsertOnSubmit(subsidiary); WS_WorkShopStock tempStock = new WS_WorkShopStock(); tempStock.BatchNo = subsidiary.BatchNo; tempStock.GoodsID = subsidiary.GoodsID; tempStock.StockCount = (bool)tempOperationType.DepartmentType ? subsidiary.OperationCount : -subsidiary.OperationCount; tempStock.WSCode = subsidiary.WSCode; PlusReductionStock(ctx, tempStock); }
/// <summary> /// 借还货出库业务的处理 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="fetchGoodsDetailInfo">出库业务对象</param> void FetchLendReturn_MaterialRequisition(DepotManagementDataContext ctx, S_FetchGoodsDetailBill fetchGoodsDetailInfo) { if (fetchGoodsDetailInfo == null) { return; } if (Convert.ToBoolean(BasicInfo.BaseSwitchInfo[(int)GlobalObject.CE_SwitchName.开启借还货账务管理])) { BASE_SubsidiaryOperationType operationType = UniversalFunction.GetSubsidiaryOperationType(ctx, fetchGoodsDetailInfo.OperationType); if (operationType.LendReturnType != null) { IProductLendReturnService serverLendReturn = ServerModuleFactory.GetServerModule <IProductLendReturnService>(); var varData = from a in ctx.View_S_MaterialRequisitionProductReturnList where a.单据号 == fetchGoodsDetailInfo.FetchBIllID && a.还账物品ID == fetchGoodsDetailInfo.GoodsID && a.还账物品批次号 == fetchGoodsDetailInfo.BatchNo && a.还账物品供应商 == fetchGoodsDetailInfo.Provider select a; if (varData.Count() > 0) { foreach (var item1 in varData) { S_ProductLendRecord tempRecord = serverLendReturn.GetStockSingleInfo(ctx, BasicInfo.DeptCode, fetchGoodsDetailInfo.StorageID, item1.账物品ID, item1.账物品批次号, item1.账物品供应商); if (tempRecord != null) { S_ProductLendReturnDetail tempDetail = new S_ProductLendReturnDetail(); tempDetail.Affirm = fetchGoodsDetailInfo.DepotManager; tempDetail.AffirmDate = ServerTime.Time; tempDetail.BatchNo = item1.账物品批次号; tempDetail.Provider = item1.账物品供应商; tempDetail.BillNo = fetchGoodsDetailInfo.FetchBIllID; tempDetail.BillTime = ServerTime.Time; tempDetail.Credit = fetchGoodsDetailInfo.StorageID; tempDetail.Debtor = BasicInfo.DeptCode; tempDetail.GoodsID = item1.账物品ID; tempDetail.OperationCount = item1.还账数量; tempDetail.OperationType = fetchGoodsDetailInfo.OperationType; tempDetail.Proposer = fetchGoodsDetailInfo.FillInPersonnel; tempDetail.ProposerDate = fetchGoodsDetailInfo.FillInDate == null ? ServerTime.Time : Convert.ToDateTime(fetchGoodsDetailInfo.FillInDate); tempDetail.UnitPrice = 0; serverLendReturn.OperationDetailRecord(ctx, tempDetail); } } } } } }
/// <summary> /// 操作明细账(并且操作库存) /// </summary> /// <param name="subsidiary">明细账对象</param> public void OperationSubsidiary(WS_Subsidiary subsidiary) { if (!Convert.ToBoolean(BasicInfo.BaseSwitchInfo[(int)GlobalObject.CE_SwitchName.开启车间管理模块])) { return; } DepotManagementDataContext ctx = CommentParameter.DepotDataContext; BASE_SubsidiaryOperationType tempOperationType = UniversalFunction.GetSubsidiaryOperationType(subsidiary.OperationType); if (tempOperationType == null) { throw new Exception("明细账操作类型错误,请重新确认"); } var varData = from a in ctx.WS_Subsidiary where a.BillNo == subsidiary.BillNo && a.GoodsID == subsidiary.GoodsID && a.WSCode == subsidiary.WSCode && a.BatchNo == subsidiary.BatchNo select a; if (varData.Count() > 0) { throw new Exception(UniversalFunction.GetGoodsMessage(subsidiary.GoodsID) + " 【批次号】: " + subsidiary.BatchNo + " 相同单据中,物品重复,请重新确认"); } else { subsidiary.BillTime = ServerTime.Time; ctx.WS_Subsidiary.InsertOnSubmit(subsidiary); WS_WorkShopStock tempStock = new WS_WorkShopStock(); tempStock.BatchNo = subsidiary.BatchNo; tempStock.GoodsID = subsidiary.GoodsID; tempStock.StockCount = (bool)tempOperationType.DepartmentType ? subsidiary.OperationCount : -subsidiary.OperationCount; tempStock.WSCode = subsidiary.WSCode; PlusReductionStock(ctx, tempStock); } ctx.SubmitChanges(); }
/// <summary> /// 操作明细与借贷记录 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="detail">明细信息</param> public void OperationDetailRecord(DepotManagementDataContext ctx, S_ProductLendReturnDetail detail) { BASE_SubsidiaryOperationType tempOperationType = UniversalFunction.GetSubsidiaryOperationType(detail.OperationType); if (tempOperationType == null) { throw new Exception("明细账操作类型错误,请重新确认"); } else if (tempOperationType.LendReturnType == null) { throw new Exception("借贷业务错误"); } var varData = from a in ctx.S_ProductLendReturnDetail where a.Debtor == detail.Debtor && a.Credit == detail.Credit && a.GoodsID == detail.GoodsID && a.Provider == detail.Provider && a.BatchNo == detail.BatchNo && a.BillNo == detail.BillNo select a; if (varData.Count() > 0) { throw new Exception("相同单据中,物品重复,请重新确认"); } else { ctx.S_ProductLendReturnDetail.InsertOnSubmit(detail); S_ProductLendRecord tempRecord = new S_ProductLendRecord(); tempRecord.Provider = detail.Provider; tempRecord.BatchNo = detail.BatchNo; tempRecord.CreditCode = detail.Credit; tempRecord.DebtorCode = detail.Debtor; tempRecord.GoodsID = detail.GoodsID; tempRecord.RecordCount = tempOperationType.LendReturnType == true ? detail.OperationCount : -detail.OperationCount; OperationRecord(ctx, tempRecord); } }
/// <summary> /// 借还货出库业务的处理 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="fetchGoodsDetailInfo">出库业务对象</param> void FetchLendReturn(DepotManagementDataContext ctx, S_FetchGoodsDetailBill fetchGoodsDetailInfo) { if (fetchGoodsDetailInfo == null) { return; } if (Convert.ToBoolean(BasicInfo.BaseSwitchInfo[(int)GlobalObject.CE_SwitchName.开启借还货账务管理])) { BASE_SubsidiaryOperationType operationType = UniversalFunction.GetSubsidiaryOperationType(ctx, fetchGoodsDetailInfo.OperationType); if (operationType.LendReturnType != null) { S_ProductLendReturnDetail tempDetail = new S_ProductLendReturnDetail(); tempDetail.Affirm = fetchGoodsDetailInfo.DepotManager; tempDetail.AffirmDate = fetchGoodsDetailInfo.BillTime; tempDetail.BatchNo = fetchGoodsDetailInfo.BatchNo; tempDetail.Provider = fetchGoodsDetailInfo.Provider; tempDetail.BillNo = fetchGoodsDetailInfo.FetchBIllID; tempDetail.BillTime = fetchGoodsDetailInfo.BillTime; tempDetail.Credit = fetchGoodsDetailInfo.StorageID; tempDetail.Debtor = UniversalFunction.GetPersonnelInfo(ctx, fetchGoodsDetailInfo.FillInPersonnel).部门编码; tempDetail.GoodsID = fetchGoodsDetailInfo.GoodsID; tempDetail.OperationCount = fetchGoodsDetailInfo.FetchCount < 0 ? -(decimal)fetchGoodsDetailInfo.FetchCount : (decimal)fetchGoodsDetailInfo.FetchCount; tempDetail.OperationType = fetchGoodsDetailInfo.OperationType; tempDetail.Proposer = fetchGoodsDetailInfo.FillInPersonnel; tempDetail.ProposerDate = fetchGoodsDetailInfo.FillInDate == null ? ServerTime.Time : Convert.ToDateTime(fetchGoodsDetailInfo.FillInDate); tempDetail.Remark = fetchGoodsDetailInfo.Remark; tempDetail.UnitPrice = fetchGoodsDetailInfo.UnitPrice; IProductLendReturnService serverLendReturn = ServerModuleFactory.GetServerModule <IProductLendReturnService>(); serverLendReturn.OperationDetailRecord(ctx, tempDetail); } } }
/// <summary> /// 箱体编码库存操作 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="billNo">单据号</param> /// <param name="goodsID">物品ID</param> /// <param name="operationType">操作类型</param> public void OperatorProductCodeStock(DepotManagementDataContext ctx, string billNo, int goodsID, int operationType) { var varData = from a in ctx.WS_ProductCodeDetail where a.BillNo == billNo && a.GoodsID == goodsID && a.OperationType == operationType select a; foreach (WS_ProductCodeDetail item in varData) { item.IsUse = true; var varStock = from a in ctx.WS_ProductCodeStock where a.GoodsID == item.GoodsID && a.ProductCode == item.ProductCode select a; BASE_SubsidiaryOperationType tempType = UniversalFunction.GetSubsidiaryOperationType(item.OperationType); if (varStock.Count() == 0) { if (!(bool)tempType.DepartmentType) { throw new Exception("业务类型错误,请重新核对"); } else { WS_ProductCodeStock tempStock = new WS_ProductCodeStock(); tempStock.GoodsID = item.GoodsID; tempStock.IsInStock = true; tempStock.ProductCode = item.ProductCode; tempStock.StorageID = item.StorageID; if (item.OperationType == (int)CE_SubsidiaryOperationType.营销退货) { var varMarketingBill = from a in ctx.S_MarketingBill where a.DJH == billNo select a; if (varMarketingBill.Count() != 1) { throw new Exception("营销退货单【" + billNo + "】不存在,业务终止"); } else { if (varMarketingBill.Single().StorageID == "05") { tempStock.IsAfterSale = true; } } } ctx.WS_ProductCodeStock.InsertOnSubmit(tempStock); } } else if (varStock.Count() == 1) { WS_ProductCodeStock tempStock = varStock.Single(); if (tempStock.IsInStock != tempType.DepartmentType) { tempStock.IsInStock = (bool)tempType.DepartmentType; tempStock.StorageID = item.StorageID; if (item.OperationType == (int)CE_SubsidiaryOperationType.营销退货) { var varMarketingBill = from a in ctx.S_MarketingBill where a.DJH == billNo select a; if (varMarketingBill.Count() != 1) { throw new Exception("营销退货单【" + billNo + "】不存在,业务终止"); } else { if (varMarketingBill.Single().StorageID == "05") { tempStock.IsAfterSale = true; } } } } else { throw new Exception("【箱体编码】:" + item.ProductCode + " 发生业务类型异常"); } } else { throw new Exception("【箱体编码】:" + item.ProductCode + " 数据错误"); } } }