/// <summary> /// 车间出库业务的处理 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="fetchGoodsDetailInfo">出库业务对象</param> void FetchWorkShop(DepotManagementDataContext ctx, S_FetchGoodsDetailBill fetchGoodsDetailInfo) { if (fetchGoodsDetailInfo == null) { return; } Service_Manufacture_WorkShop.IWorkShopBasic serverWSBasic = Service_Manufacture_WorkShop.ServerModuleFactory.GetServerModule <Service_Manufacture_WorkShop.IWorkShopBasic>(); WS_WorkShopCode tempWSCode = serverWSBasic.GetPersonnelWorkShop(ctx, fetchGoodsDetailInfo.FillInPersonnel); if (Convert.ToBoolean(BasicInfo.BaseSwitchInfo[(int)GlobalObject.CE_SwitchName.开启车间管理模块]) && tempWSCode != null) { WS_Subsidiary tempSubsidiary = new WS_Subsidiary(); tempSubsidiary.BillTime = ServerTime.Time; tempSubsidiary.Applicant = UniversalFunction.GetStorageName(ctx, fetchGoodsDetailInfo.StorageID); tempSubsidiary.Affirm = fetchGoodsDetailInfo.DepotManager; tempSubsidiary.AffirmDate = ServerTime.Time; tempSubsidiary.BatchNo = fetchGoodsDetailInfo.BatchNo; tempSubsidiary.BillNo = fetchGoodsDetailInfo.FetchBIllID; tempSubsidiary.GoodsID = fetchGoodsDetailInfo.GoodsID; tempSubsidiary.Provider = fetchGoodsDetailInfo.Provider; tempSubsidiary.OperationCount = (decimal)fetchGoodsDetailInfo.FetchCount < 0 ? -(decimal)fetchGoodsDetailInfo.FetchCount : (decimal)fetchGoodsDetailInfo.FetchCount; tempSubsidiary.OperationType = fetchGoodsDetailInfo.OperationType; tempSubsidiary.Proposer = fetchGoodsDetailInfo.FillInPersonnel; tempSubsidiary.ProposerDate = fetchGoodsDetailInfo.FillInDate == null ? ServerTime.Time : Convert.ToDateTime(fetchGoodsDetailInfo.FillInDate); tempSubsidiary.UnitPrice = fetchGoodsDetailInfo.UnitPrice; tempSubsidiary.WSCode = tempWSCode.WSCode; tempSubsidiary.Remark = fetchGoodsDetailInfo.Remark; Service_Manufacture_WorkShop.IWorkShopStock serverWSStock = Service_Manufacture_WorkShop.ServerModuleFactory.GetServerModule <Service_Manufacture_WorkShop.IWorkShopStock>(); serverWSStock.OperationSubsidiary(ctx, tempSubsidiary); } }
/// <summary> /// 确认单据 /// </summary> /// <param name="billNo">单据号</param> /// <param name="list">明细信息</param> /// <param name="error">错误信息</param> /// <returns>成功返回True,失败返回False</returns> public bool AffirmBill(string billNo, DataTable list, out string error) { error = null; DepotManagementDataContext ctx = CommentParameter.DepotDataContext; ctx.Connection.Open(); ctx.Transaction = ctx.Connection.BeginTransaction(); try { var varData = from a in ctx.WS_CannibalizeBill where a.BillNo == billNo select a; WS_CannibalizeBill tempBill = new WS_CannibalizeBill(); if (varData.Count() == 1) { tempBill = varData.Single(); if (tempBill.BillStatus != CannibalizeBillStatus.等待确认.ToString()) { throw new Exception("单据状态错误,请重新确认"); } tempBill.BillStatus = CannibalizeBillStatus.单据已完成.ToString(); tempBill.Affirm = BasicInfo.LoginName; tempBill.AffirmDate = ServerTime.Time; } else { throw new Exception("数据不唯一,请重新确认"); } var varCannibalizeWSCode = from a in ctx.WS_CannibalizeWSCode where a.BillNo == tempBill.BillNo select a; ListControl(ctx, tempBill, varCannibalizeWSCode.ToList <WS_CannibalizeWSCode>(), list); ctx.SubmitChanges(); var varOperationType = from a in varCannibalizeWSCode join b in ctx.BASE_SubsidiaryOperationType on a.OperationType equals b.OperationType orderby b.DepartmentType select a; var varGoodsList = from a in ctx.WS_CannibalizeList where a.BillNo == tempBill.BillNo select a; foreach (WS_CannibalizeList tempItem in varGoodsList) { decimal unitPrice = 0; foreach (WS_CannibalizeWSCode item in varOperationType) { WS_Subsidiary tempSubsidiary = new WS_Subsidiary(); tempSubsidiary.BatchNo = tempItem.BatchNo; tempSubsidiary.BillNo = tempBill.BillNo; tempSubsidiary.GoodsID = tempItem.GoodsID; tempSubsidiary.OperationCount = tempItem.OperationCount; tempSubsidiary.OperationType = item.OperationType; tempSubsidiary.Remark = tempItem.Remark; tempSubsidiary.WSCode = item.WSCode; tempSubsidiary.Proposer = tempBill.Proposer; tempSubsidiary.ProposerDate = (DateTime)tempBill.ProposerDate; tempSubsidiary.Affirm = BasicInfo.LoginName; tempSubsidiary.AffirmDate = ServerTime.Time; tempSubsidiary.BillTime = ServerTime.Time; WS_CannibalizeWSCode tempCanWSCode = new WS_CannibalizeWSCode(); tempCanWSCode.BillNo = tempSubsidiary.BillNo; Service_Manufacture_WorkShop.IWorkShopStock serverStock = Service_Manufacture_WorkShop.ServerModuleFactory.GetServerModule <Service_Manufacture_WorkShop.IWorkShopStock>(); switch (item.OperationType) { case (int)CE_SubsidiaryOperationType.车间调出: tempCanWSCode.OperationType = (int)CE_SubsidiaryOperationType.车间调入; WS_WorkShopStock tempWSStock = serverStock.GetStockSingleInfo(tempSubsidiary.WSCode, tempSubsidiary.GoodsID, tempSubsidiary.BatchNo); unitPrice = tempWSStock == null ? 0 : tempWSStock.UnitPrice; tempSubsidiary.UnitPrice = unitPrice; break; case (int)CE_SubsidiaryOperationType.车间调入: tempCanWSCode.OperationType = (int)CE_SubsidiaryOperationType.车间调出; tempSubsidiary.UnitPrice = unitPrice; break; default: break; } tempCanWSCode = GetCannibalizeWSCode(tempCanWSCode); if (tempCanWSCode == null) { throw new Exception("调运车间信息错误"); } Service_Manufacture_WorkShop.IWorkShopBasic serverBasic = Service_Manufacture_WorkShop.ServerModuleFactory.GetServerModule <Service_Manufacture_WorkShop.IWorkShopBasic>(); WS_WorkShopCode tempCode = serverBasic.GetWorkShopCodeInfo(tempCanWSCode.WSCode); if (tempCode == null) { throw new Exception("获取车间名称失败"); } tempSubsidiary.Applicant = tempCode.WSName; serverStock.OperationSubsidiary(ctx, tempSubsidiary); } } ctx.SubmitChanges(); ctx.Transaction.Commit(); return(true); } catch (Exception ex) { ctx.Transaction.Rollback(); error = ex.Message; return(false); } }