public static CE_SubsidiaryOperationType OutPutBusinessTypeConvertToSubsidiaryOperationType(CE_OutPutBusinessType outPutType) { CE_SubsidiaryOperationType subsdiaryType = CE_SubsidiaryOperationType.未知; switch (outPutType) { case CE_OutPutBusinessType.领料: subsdiaryType = CE_SubsidiaryOperationType.领料; break; case CE_OutPutBusinessType.营销出库: subsdiaryType = CE_SubsidiaryOperationType.营销出库; break; case CE_OutPutBusinessType.营销退货: subsdiaryType = CE_SubsidiaryOperationType.营销退货; break; case CE_OutPutBusinessType.采购退货: subsdiaryType = CE_SubsidiaryOperationType.采购退货; break; case CE_OutPutBusinessType.自制件退货: subsdiaryType = CE_SubsidiaryOperationType.自制件退货; break; default: break; } return(subsdiaryType); }
private void customDataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == -1 && e.RowIndex >= 0 && customDataGridView1.CurrentRow.Cells["物品ID"].Value != null && customDataGridView1.CurrentRow.Cells["物品ID"].Value.ToString().Length > 0) { BarCodeInfo barCode = new BarCodeInfo(); barCode.BatchNo = customDataGridView1.CurrentRow.Cells["批次号"].Value == null ? "" : customDataGridView1.CurrentRow.Cells["批次号"].Value.ToString(); barCode.Count = customDataGridView1.CurrentRow.Cells["数量"].Value == null ? 0 : Convert.ToDecimal(customDataGridView1.CurrentRow.Cells["数量"].Value); barCode.GoodsID = Convert.ToInt32(customDataGridView1.CurrentRow.Cells["物品ID"].Value); View_F_GoodsPlanCost goodsInfo = UniversalFunction.GetGoodsInfo(barCode.GoodsID); barCode.GoodsName = goodsInfo.物品名称; barCode.GoodsCode = goodsInfo.图号型号; barCode.Spec = goodsInfo.规格; CE_BusinessType tempType = CE_BusinessType.库房业务; Service_Manufacture_WorkShop.IWorkShopBasic serverWSBasic = Service_Manufacture_WorkShop.ServerModuleFactory.GetServerModule <Service_Manufacture_WorkShop.IWorkShopBasic>(); WS_WorkShopCode tempWSCode = serverWSBasic.GetWorkShopCodeInfo(txtApplyingDepartment.Tag.ToString()); Dictionary <string, string> tempDic = new Dictionary <string, string>(); CE_InPutBusinessType inPutType = GlobalObject.GeneralFunction.StringConvertToEnum <CE_InPutBusinessType>(cmbBillType.Text); CE_MarketingType marketType = GlobalObject.EnumOperation.InPutBusinessTypeConvertToMarketingType(inPutType); CE_SubsidiaryOperationType subsdiaryType = GlobalObject.EnumOperation.InPutBusinessTypeConvertToSubsidiaryOperationType(inPutType); tempDic.Add("", marketType.ToString()); if (tempWSCode != null) { tempType = CE_BusinessType.综合业务; tempDic.Add(tempWSCode.WSCode, subsdiaryType.ToString()); } 产品编号 frm = new 产品编号(barCode, tempType, txtBillNo.Text, (lbBillStatus.Text != CE_CommonBillStatus.单据完成.ToString()), tempDic); if (frm.ShowDialog() == DialogResult.OK) { customDataGridView1.Rows[e.RowIndex].Cells["数量"].Value = frm.IntCount; } } }
private void btnSubmit_Click(object sender, EventArgs e) { m_enumOperationType = radioButton1.Checked ? CE_SubsidiaryOperationType.物料转换前 : CE_SubsidiaryOperationType.物料转换后; if (numAfter.Value == 0 || numBefore.Value == 0) { MessageDialog.ShowPromptMessage("修改前数量或者修改后数量不能为0"); return; } m_decRatio = numAfter.Value / numBefore.Value; this.DialogResult = DialogResult.OK; this.Close(); }
public static CE_SubsidiaryOperationType InPutBusinessTypeConvertToSubsidiaryOperationType(CE_InPutBusinessType inPutType) { CE_SubsidiaryOperationType subsdiaryType = CE_SubsidiaryOperationType.未知; switch (inPutType) { case CE_InPutBusinessType.生产采购: case CE_InPutBusinessType.样品采购: subsdiaryType = CE_SubsidiaryOperationType.报检入库; break; case CE_InPutBusinessType.委外采购: subsdiaryType = CE_SubsidiaryOperationType.委外报检入库; break; case CE_InPutBusinessType.普通采购: subsdiaryType = CE_SubsidiaryOperationType.普通入库; break; case CE_InPutBusinessType.自制件入库: subsdiaryType = CE_SubsidiaryOperationType.自制件入库; break; case CE_InPutBusinessType.营销入库: subsdiaryType = CE_SubsidiaryOperationType.营销入库; break; case CE_InPutBusinessType.领料退库: subsdiaryType = CE_SubsidiaryOperationType.领料退库; break; case CE_InPutBusinessType.营销退库: subsdiaryType = CE_SubsidiaryOperationType.营销退库; break; default: break; } return(subsdiaryType); }
/// <summary> /// 赋值账务信息 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="billInfo">单据信息</param> /// <param name="listSingle">明细信息</param> /// <param name="operationType">操作类型</param> /// <returns>返回账务信息</returns> S_FetchGoodsDetailBill AssignDetailInfo(DepotManagementDataContext dataContext, S_CannibalizeBill billInfo, S_CannibalizeList listSingle, CE_SubsidiaryOperationType operationType) { S_FetchGoodsDetailBill lnqOutDepot = new S_FetchGoodsDetailBill(); bool flag = false; if (operationType == CE_SubsidiaryOperationType.库房调出) { flag = true; } else if (operationType == CE_SubsidiaryOperationType.库房调入) { flag = false; } else { throw new Exception("业务类型错误"); } lnqOutDepot.ID = Guid.NewGuid(); lnqOutDepot.FetchBIllID = billInfo.DJH; lnqOutDepot.BillTime = ServerTime.Time; lnqOutDepot.GoodsID = (int)listSingle.GoodsID; lnqOutDepot.Provider = listSingle.Provider; lnqOutDepot.BatchNo = listSingle.BatchNo; lnqOutDepot.FetchCount = flag ? listSingle.Count : -listSingle.Count; lnqOutDepot.UnitPrice = (decimal)listSingle.UnitPrice; lnqOutDepot.Price = flag ? (decimal)listSingle.Price : -(decimal)listSingle.Price; lnqOutDepot.Using = flag ? "仓库调拨单:调出" : "仓库调拨:调入"; lnqOutDepot.Department = UniversalFunction.GetStorageName(dataContext, flag ? billInfo.InStoreRoom : billInfo.OutStoreRoom); lnqOutDepot.FillInPersonnel = UniversalFunction.GetPersonnelInfo(dataContext, billInfo.LRRY).姓名; lnqOutDepot.DepartDirector = UniversalFunction.GetPersonnelInfo(dataContext, billInfo.SHRY).姓名; lnqOutDepot.DepotManager = BasicInfo.LoginName; lnqOutDepot.OperationType = flag ? (int)CE_SubsidiaryOperationType.库房调出 : (int)CE_SubsidiaryOperationType.库房调入; lnqOutDepot.Remark = billInfo.Remark; lnqOutDepot.StorageID = flag ? billInfo.OutStoreRoom : billInfo.InStoreRoom; lnqOutDepot.FillInDate = billInfo.LRRQ; return(lnqOutDepot); }
/// <summary> /// 赋值库存信息 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="billInfo">单据信息</param> /// <param name="listSingle">明细信息</param> /// <param name="operationType">操作类型</param> /// <returns>返回库存信息对象</returns> S_Stock AssignStockInfo(DepotManagementDataContext dataContext, S_CannibalizeBill billInfo, S_CannibalizeList listSingle, CE_SubsidiaryOperationType operationType) { S_Stock tempLnqStock = new S_Stock(); tempLnqStock.GoodsID = Convert.ToInt32(listSingle.GoodsID); tempLnqStock.BatchNo = listSingle.BatchNo; tempLnqStock.ExistCount = (decimal)listSingle.Count; tempLnqStock.Date = ServerTime.Time; tempLnqStock.Provider = listSingle.Provider; tempLnqStock.UnitPrice = (decimal)listSingle.UnitPrice; tempLnqStock.Price = tempLnqStock.UnitPrice * tempLnqStock.ExistCount; if (operationType == CE_SubsidiaryOperationType.库房调出) { tempLnqStock.StorageID = billInfo.OutStoreRoom; } else if (operationType == CE_SubsidiaryOperationType.库房调入) { tempLnqStock.StorageID = billInfo.InStoreRoom; } else { throw new Exception("业务类型错误"); } QueryCondition_Store store = new QueryCondition_Store(); store.BatchNo = tempLnqStock.BatchNo; store.GoodsID = tempLnqStock.GoodsID; store.StorageID = billInfo.OutStoreRoom; store.Provider = tempLnqStock.Provider; S_Stock stockInfo = UniversalFunction.GetStockInfo(dataContext, store); tempLnqStock.GoodsStatus = stockInfo.GoodsStatus; tempLnqStock.InputPerson = BasicInfo.LoginID; return(tempLnqStock); }
/// <summary> /// 工具出库业务的处理 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="fetchGoodsDetailInfo">出库业务对象</param> void FetchToolsInfo(DepotManagementDataContext ctx, S_FetchGoodsDetailBill fetchGoodsDetailInfo) { if (fetchGoodsDetailInfo == null) { return; } IToolsManage serverTools = ServerModule.ServerModuleFactory.GetServerModule <IToolsManage>(); if (serverTools.IsTools(ctx, fetchGoodsDetailInfo.GoodsID)) { if (fetchGoodsDetailInfo.StorageID != null && fetchGoodsDetailInfo.StorageID.Trim().Length > 0) { S_MachineAccount_Tools toolsInfo_Storage = new S_MachineAccount_Tools(); toolsInfo_Storage.GoodsID = fetchGoodsDetailInfo.GoodsID; toolsInfo_Storage.Provider = fetchGoodsDetailInfo.Provider; toolsInfo_Storage.StockCount = -(decimal)fetchGoodsDetailInfo.FetchCount; toolsInfo_Storage.StorageCode = fetchGoodsDetailInfo.StorageID; serverTools.OpertionInfo(ctx, toolsInfo_Storage); serverTools.DayToDayAccount(ctx, toolsInfo_Storage, fetchGoodsDetailInfo.FetchBIllID); } CE_SubsidiaryOperationType operationType = (CE_SubsidiaryOperationType)Enum.ToObject(typeof(CE_SubsidiaryOperationType), fetchGoodsDetailInfo.OperationType); if (operationType != CE_SubsidiaryOperationType.营销出库 && operationType != CE_SubsidiaryOperationType.营销退库) { S_MachineAccount_Tools toolsInfo_Department = new S_MachineAccount_Tools(); toolsInfo_Department.GoodsID = fetchGoodsDetailInfo.GoodsID; toolsInfo_Department.Provider = fetchGoodsDetailInfo.Provider; toolsInfo_Department.StockCount = (decimal)fetchGoodsDetailInfo.FetchCount; toolsInfo_Department.StorageCode = UniversalFunction.GetPersonnelInfo(ctx, fetchGoodsDetailInfo.FillInPersonnel).部门编码; serverTools.OpertionInfo(ctx, toolsInfo_Department); serverTools.DayToDayAccount(ctx, toolsInfo_Department, fetchGoodsDetailInfo.FetchBIllID); } } }
/// <summary> /// 根据单据信息操作账务信息与库存信息 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="bill">单据信息</param> /// <param name="operationType">操作类型</param> void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_CannibalizeBill bill, CE_SubsidiaryOperationType operationType) { IFinancialDetailManagement serverDetail = ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>(); var result = from r in dataContext.S_CannibalizeList where r.DJ_ID == bill.ID select r; foreach (var item in result) { S_FetchGoodsDetailBill detailInfo = AssignDetailInfo(dataContext, bill, item, operationType); S_Stock stockInfo = AssignStockInfo(dataContext, bill, item, operationType); if (detailInfo == null || stockInfo == null) { throw new Exception("获取账务信息或者库存信息失败"); } serverDetail.ProcessFetchGoodsDetail(dataContext, detailInfo, stockInfo); } }
public void OperationGaugeStandingBook(DepotManagementDataContext ctx, string billNo, CE_MarketingType type, int operationType) { try { CE_SubsidiaryOperationType subType = (CE_SubsidiaryOperationType)Enum.ToObject(typeof(CE_SubsidiaryOperationType), operationType); var varData = from a in ctx.S_GaugeOperation where a.BillID == billNo select a; foreach (S_GaugeOperation operationInfo in varData) { S_GaugeStandingBook lnqBook = new S_GaugeStandingBook(); var varbook = from a in ctx.S_GaugeStandingBook where a.GaugeCoding == operationInfo.GaugeCoding select a; if (varbook.Count() > 1) { throw new Exception("【物品ID】:" + operationInfo.GoodsID.ToString() + " 【量检具编号】:" + operationInfo.GaugeCoding + ",在【量检具台账】中存在多个,无法进行业务操作"); } if (type == CE_MarketingType.入库) { if (varbook.Count() == 0) { lnqBook = new S_GaugeStandingBook(); lnqBook.GaugeCoding = operationInfo.GaugeCoding; lnqBook.GoodsID = operationInfo.GoodsID; lnqBook.InputDate = ServerTime.Time; lnqBook.ScrapFlag = false; lnqBook.Validity = 0; } else { lnqBook = varbook.Single(); lnqBook.MaterialDate = null; lnqBook.DutyUser = null; lnqBook.ScrapFlag = false; } } else if (type == CE_MarketingType.出库) { if (varbook.Count() == 0) { throw new Exception("【物品ID】:" + operationInfo.GoodsID.ToString() + " 【量检具编号】:" + operationInfo.GaugeCoding + ",不存在【量检具台账】中,无法进行【出库】业务操作"); } lnqBook = varbook.Single(); lnqBook.DutyUser = null; lnqBook.ScrapFlag = false; lnqBook.MaterialDate = ServerTime.Time; if (subType == CE_SubsidiaryOperationType.领料) { lnqBook.MaterialDate = ServerTime.Time; } } } } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// 处理出库明细业务信息 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="fetchGoodsDetailInfo">出库明细信息</param> /// <param name="stockInfo">库存信息</param> public void ProcessFetchGoodsDetail(DepotManagementDataContext ctx, S_FetchGoodsDetailBill fetchGoodsDetailInfo, S_Stock stockInfo) { try { CE_SubsidiaryOperationType operationType = (CE_SubsidiaryOperationType)Enum.ToObject(typeof(CE_SubsidiaryOperationType), fetchGoodsDetailInfo.OperationType); IStoreServer storeService = ServerModule.ServerModuleFactory.GetServerModule <IStoreServer>(); switch (operationType) { case CE_SubsidiaryOperationType.领料: decimal dcSumCount = fetchGoodsDetailInfo.Price; fetchGoodsDetailInfo.Price = fetchGoodsDetailInfo.FetchCount == null ? 0 : fetchGoodsDetailInfo.UnitPrice * (decimal)fetchGoodsDetailInfo.FetchCount; InsertOnSubmitFetchGoodsDetailBill(ctx, fetchGoodsDetailInfo); S_FetchGoodsDetailBill newFetchDetailInfo = AssignmentInfo(fetchGoodsDetailInfo); newFetchDetailInfo.FetchCount = newFetchDetailInfo.FetchCount < dcSumCount ? 0 : newFetchDetailInfo.FetchCount - dcSumCount; FetchToolsInfo(ctx, newFetchDetailInfo); FetchGaugeInfo(ctx, newFetchDetailInfo); FetchLendReturn_MaterialRequisition(ctx, newFetchDetailInfo); if (!fetchGoodsDetailInfo.AssociatedBillNo.Contains("SBW")) { FetchWorkShop(ctx, newFetchDetailInfo); } ctx.SubmitChanges(); // xsy, 2017.11.14 解决更新异常增加 storeService.OutStore(ctx, stockInfo, operationType); ctx.SubmitChanges(); // xsy, 2017.11.14 解决更新异常增加 break; case CE_SubsidiaryOperationType.领料退库: InsertOnSubmitFetchGoodsDetailBill(ctx, fetchGoodsDetailInfo); FetchToolsInfo(ctx, fetchGoodsDetailInfo); InDepotGuagesInfo(ctx, fetchGoodsDetailInfo); if (UniversalFunction.GetStorageInfo(fetchGoodsDetailInfo.StorageID).WorkShopCurrentAccount) { FetchWorkShop(ctx, fetchGoodsDetailInfo); } storeService.InStore(ctx, stockInfo, operationType); break; case CE_SubsidiaryOperationType.报废: FetchToolsInfo(ctx, fetchGoodsDetailInfo); FetchWorkShop(ctx, fetchGoodsDetailInfo); break; case CE_SubsidiaryOperationType.样品耗用: case CE_SubsidiaryOperationType.借货: case CE_SubsidiaryOperationType.还货: FetchLendReturn(ctx, fetchGoodsDetailInfo); FetchToolsInfo(ctx, fetchGoodsDetailInfo); FetchWorkShop(ctx, fetchGoodsDetailInfo); break; case CE_SubsidiaryOperationType.库房调入: case CE_SubsidiaryOperationType.营销退库: InsertOnSubmitFetchGoodsDetailBill(ctx, fetchGoodsDetailInfo); FetchToolsInfo(ctx, fetchGoodsDetailInfo); InDepotGuagesInfo(ctx, fetchGoodsDetailInfo); storeService.InStore(ctx, stockInfo, operationType); break; case CE_SubsidiaryOperationType.库房调出: case CE_SubsidiaryOperationType.营销出库: InsertOnSubmitFetchGoodsDetailBill(ctx, fetchGoodsDetailInfo); FetchToolsInfo(ctx, fetchGoodsDetailInfo); FetchGaugeInfo(ctx, fetchGoodsDetailInfo); storeService.OutStore(ctx, stockInfo, operationType); break; default: break; } } catch (System.Data.Linq.ChangeConflictException) { foreach (System.Data.Linq.ObjectChangeConflict occ in ctx.ChangeConflicts) { //以下是解决冲突的三种方法,选一种即可 // 使用当前数据库中的值,覆盖Linq缓存中实体对象的值 //occ.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues); // 使用Linq缓存中实体对象的值,覆盖当前数据库中的值 occ.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues); // 只更新实体对象中改变的字段的值,其他的保留不变 //occ.Resolve(System.Data.Linq.RefreshMode.KeepChanges); } // 这个地方要注意,Catch方法中,我们前面只是指明了怎样来解决冲突,这个地方还需要再次提交更新,这样的话,值 //才会提交到数据库。 ctx.SubmitChanges(); } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// 处理入库明细业务信息 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="indepotDetailInfo">入库明细信息</param> /// <param name="stockInfo">库存信息</param> public void ProcessInDepotDetail(DepotManagementDataContext ctx, S_InDepotDetailBill indepotDetailInfo, S_Stock stockInfo) { try { CE_SubsidiaryOperationType operationType = (CE_SubsidiaryOperationType)Enum.ToObject(typeof(CE_SubsidiaryOperationType), indepotDetailInfo.OperationType); IStoreServer storeService = ServerModule.ServerModuleFactory.GetServerModule <IStoreServer>(); switch (operationType) { case CE_SubsidiaryOperationType.报检入库: case CE_SubsidiaryOperationType.委外报检入库: InsertOnSubmitInDepotDetailBill(ctx, indepotDetailInfo); InDepotToolsInfo(ctx, indepotDetailInfo); InDepotGuagesInfo(ctx, indepotDetailInfo); storeService.InStore(ctx, stockInfo, operationType); break; case CE_SubsidiaryOperationType.采购退货: InsertOnSubmitInDepotDetailBill(ctx, indepotDetailInfo); InDepotToolsInfo(ctx, indepotDetailInfo); FetchGaugeInfo(ctx, indepotDetailInfo); storeService.OutStore(ctx, stockInfo, operationType); break; case CE_SubsidiaryOperationType.普通入库: InsertOnSubmitInDepotDetailBill(ctx, indepotDetailInfo); InDepotToolsInfo(ctx, indepotDetailInfo); InDepotGuagesInfo(ctx, indepotDetailInfo); storeService.InStore(ctx, stockInfo, operationType); storeService.UpdateAging(ctx, stockInfo, false); break; case CE_SubsidiaryOperationType.营销入库: case CE_SubsidiaryOperationType.自制件入库: case CE_SubsidiaryOperationType.自制件工装入库: InsertOnSubmitInDepotDetailBill(ctx, indepotDetailInfo); InDepotToolsInfo(ctx, indepotDetailInfo); InDepotGuagesInfo(ctx, indepotDetailInfo); InDepotWorkShop(ctx, indepotDetailInfo); storeService.InStore(ctx, stockInfo, operationType); break; case CE_SubsidiaryOperationType.营销退货: case CE_SubsidiaryOperationType.自制件退货: InsertOnSubmitInDepotDetailBill(ctx, indepotDetailInfo); InDepotToolsInfo(ctx, indepotDetailInfo); FetchGaugeInfo(ctx, indepotDetailInfo); InDepotWorkShop(ctx, indepotDetailInfo); storeService.OutStore(ctx, stockInfo, operationType); break; case CE_SubsidiaryOperationType.财务对冲: case CE_SubsidiaryOperationType.财务红冲: InsertOnSubmitInDepotDetailBill(ctx, indepotDetailInfo); break; default: break; } } catch (Exception ex) { throw new Exception(ex.Message); } }