private void btnPrintBarCode_Click(object sender, EventArgs e) { try { if (dataGridView1.CurrentRow == null) { throw new Exception("选择打印的条形码记录行不允许为空!"); } List <View_S_InDepotGoodsBarCodeTable> lstBarCodeInfo = new List <View_S_InDepotGoodsBarCodeTable>(); IBarCodeServer serviceBarCode = ServerModuleFactory.GetServerModule <IBarCodeServer>(); foreach (DataGridViewRow dgvr in this.dataGridView1.SelectedRows) { View_S_InDepotGoodsBarCodeTable barcode = new View_S_InDepotGoodsBarCodeTable(); QueryCondition_Store tempInfo = new QueryCondition_Store(); tempInfo.BatchNo = dgvr.Cells["批次号"].Value.ToString(); tempInfo.GoodsID = Convert.ToInt32(dgvr.Cells["物品ID"].Value); tempInfo.Provider = m_strProvider; tempInfo.StorageID = m_strStorage; S_Stock stockInfo = UniversalFunction.GetStockInfo(tempInfo); View_F_GoodsPlanCost goodsInfo = UniversalFunction.GetGoodsInfo(tempInfo.GoodsID); barcode.条形码 = serviceBarCode.GetBarCode(stockInfo.GoodsID, stockInfo.BatchNo, stockInfo.StorageID, stockInfo.Provider); barcode.图号型号 = goodsInfo.图号型号; barcode.物品名称 = goodsInfo.物品名称; barcode.规格 = goodsInfo.规格; barcode.供货单位 = stockInfo.Provider; barcode.批次号 = stockInfo.BatchNo; barcode.货架 = stockInfo.ShelfArea; barcode.层 = stockInfo.LayerNumber; barcode.列 = stockInfo.ColumnNumber; barcode.材料类别编码 = dgvr.Cells["退货数"].Value.ToString(); barcode.物品ID = stockInfo.GoodsID; lstBarCodeInfo.Add(barcode); } foreach (var item in lstBarCodeInfo) { ServerModule.PrintPartBarcode.PrintBarcodeList(item, Convert.ToDecimal(item.材料类别编码)); } MessageBox.Show("条码全部打印完成"); } catch (Exception ex) { MessageDialog.ShowErrorMessage(ex.Message); } }
/// <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); }
void CreateIsolationBusiness(Business_Sample_ConfirmTheApplication lnqSample) { IRejectIsolationService serviceIsolation = Service_Quality_QC.ServerModuleFactory.GetServerModule <IRejectIsolationService>(); BillNumberControl billNoControl = new BillNumberControl(CE_BillTypeEnum.合格品隔离处置单.ToString(), serviceIsolation); QueryCondition_Store queryInfo = new QueryCondition_Store(); queryInfo.BatchNo = lnqSample.Purchase_BatchNo; queryInfo.GoodsID = lnqSample.Purchase_GoodsID; queryInfo.Provider = lnqSample.Purchase_Provider; queryInfo.StorageID = lnqSample.Purchase_StorageID; List <S_Stock> stockList = UniversalFunction.GetStockInfoList(queryInfo); foreach (S_Stock stockInfo in stockList) { Business_QualityManagement_Isolation lnqIsolation = new Business_QualityManagement_Isolation(); lnqIsolation.BillNo = billNoControl.GetNewBillNo(); lnqIsolation.BatchNo = lnqSample.Purchase_BatchNo; lnqIsolation.GoodsID = lnqSample.Purchase_GoodsID; lnqIsolation.Provider = lnqSample.Purchase_Provider; lnqIsolation.StorageID = stockInfo.StorageID; lnqIsolation.IsolationReason = lnqSample.Review_RectificationItem_Explain; lnqIsolation.GoodsCount = stockInfo.ExistCount; string KeyWords = "【" + UniversalFunction.GetGoodsInfo(lnqIsolation.GoodsID).物品名称 + "】【" + lnqIsolation.BatchNo + "】"; if (!serviceIsolation.IsRepeatIsolation(lnqIsolation.GoodsID, lnqIsolation.BatchNo, lnqIsolation.StorageID)) { serviceIsolation.SaveInfo(lnqIsolation); serviceIsolation.FinishBill(lnqIsolation.BillNo); m_serverFlow.FlowHold(lnqIsolation.BillNo, lnqIsolation.StorageID, "暂存 由【样品确认申请单】:" + lnqSample.BillNo + " 系统自动生成", KeyWords); MessageDialog.ShowPromptMessage("由您填写的相关信息导致此物品已被隔离,且已生成【不合格品隔离处置单】,单号【" + lnqIsolation.BillNo + "】,且【隔离人】是您本人,请及时处理"); } } }
/// <summary> /// 生成领料退库单 /// </summary> /// <param name="context">数据上下文</param> /// <param name="billNo">单据号</param> void InsertReturnBill(DepotManagementDataContext context, string billNo) { IMaterialReturnedInTheDepot serverReturnedBill = ServerModule.ServerModuleFactory.GetServerModule <IMaterialReturnedInTheDepot>(); var varList = from a in context.S_ScrapGoods where a.Bill_ID == billNo && a.ResponsibilityProvider == a.Provider select a; if (varList.Count() == 0) { return; } var varData = from a in context.S_ScrapBill where a.Bill_ID == billNo select a; if (varData.Count() == 0) { return; } S_ScrapBill bill = varData.Single(); //操作主表 S_MaterialReturnedInTheDepot returnBill = new S_MaterialReturnedInTheDepot(); var data1 = from a in context.BASE_MaterialRequisitionPurpose where a.Purpose == bill.ProductType && a.Code.Substring(0, 1) == "F" select a; returnBill.Bill_ID = m_assignBill.AssignNewNo(context, serverReturnedBill, CE_BillTypeEnum.领料退库单.ToString()); returnBill.Bill_Time = ServerTime.Time; returnBill.BillStatus = MaterialReturnedInTheDepotBillStatus.已完成.ToString(); returnBill.Department = bill.DeclareDepartment; returnBill.ReturnType = "其他退库";//退库类别 returnBill.FillInPersonnel = bill.FillInPersonnel; returnBill.FillInPersonnelCode = bill.FillInPersonnelCode; returnBill.DepartmentDirector = bill.DepartmentDirector; returnBill.QualityInputer = ""; returnBill.DepotManager = BasicInfo.LoginName; returnBill.PurposeCode = data1.First().Code; returnBill.ReturnReason = "由【报废单】:" + billNo + " 生成的报废退库"; returnBill.Remark = "系统自动生成"; returnBill.StorageID = "01"; returnBill.ReturnMode = "领料退库";//退库方式 returnBill.IsOnlyForRepair = false; returnBill.InDepotDate = ServerTime.Time; context.S_MaterialReturnedInTheDepot.InsertOnSubmit(returnBill); context.SubmitChanges(); foreach (S_ScrapGoods goodsInfo in varList) { View_F_GoodsPlanCost goodsView = UniversalFunction.GetGoodsInfo(context, goodsInfo.GoodsID); QueryCondition_Store queryInfo = new QueryCondition_Store(); queryInfo.BatchNo = goodsInfo.BatchNo; queryInfo.GoodsID = goodsInfo.GoodsID; queryInfo.StorageID = "01"; S_Stock stockInfo = UniversalFunction.GetStockInfo(context, queryInfo); S_MaterialListReturnedInTheDepot detailInfo = new S_MaterialListReturnedInTheDepot(); detailInfo.BatchNo = goodsInfo.BatchNo; detailInfo.Bill_ID = returnBill.Bill_ID; detailInfo.GoodsID = goodsInfo.GoodsID; detailInfo.Provider = goodsInfo.Provider; detailInfo.ReturnedAmount = goodsInfo.Quantity; detailInfo.Depot = goodsView.物品类别; detailInfo.ColumnNumber = stockInfo == null ? "" : stockInfo.ColumnNumber; detailInfo.LayerNumber = stockInfo == null ? "" : stockInfo.LayerNumber; detailInfo.ShelfArea = stockInfo == null ? "" : stockInfo.ShelfArea; detailInfo.ProviderBatchNo = stockInfo == null ? "" : stockInfo.ProviderBatchNo; detailInfo.Remark = ""; context.S_MaterialListReturnedInTheDepot.InsertOnSubmit(detailInfo); context.SubmitChanges(); } serverReturnedBill.OpertaionDetailAndStock(context, returnBill); context.SubmitChanges(); }
/// <summary> /// 生成采购退货单 /// </summary> /// <param name="context">数据上下文</param> /// <param name="billNo">单据号</param> void InsertRejectBill(DepotManagementDataContext context, string billNo) { string error = null; IMaterialRejectBill serverRejectBill = ServerModule.ServerModuleFactory.GetServerModule <IMaterialRejectBill>(); IMaterialListRejectBill serverRejectListBill = ServerModule.ServerModuleFactory.GetServerModule <IMaterialListRejectBill>(); var varData = from a in context.S_ScrapBill where a.Bill_ID == billNo select a; if (varData.Count() == 0) { return; } S_ScrapBill scarpBill = varData.Single(); List <string> lstProvider = (from a in context.S_ScrapGoods where a.Bill_ID == billNo && a.ResponsibilityProvider == a.Provider select a.Provider).Distinct().ToList(); foreach (string provider in lstProvider) { var dataProviderWork = from a in context.ProviderPrincipal where a.Provider == provider && a.IsMainDuty == true select a; View_HR_Personnel personnelInfo = UniversalFunction.GetPersonnelInfo(context, dataProviderWork.First().PrincipalWorkId); S_MaterialRejectBill bill = new S_MaterialRejectBill(); bill.Bill_ID = m_assignBill.AssignNewNo(context, serverRejectBill, CE_BillTypeEnum.采购退货单.ToString()); bill.Bill_Time = ServerTime.Time; bill.BillStatus = MaterialRejectBillBillStatus.已完成.ToString(); bill.Department = personnelInfo.部门编码; bill.FillInPersonnel = personnelInfo.姓名; bill.FillInPersonnelCode = personnelInfo.工号; bill.DepotManager = BasicInfo.LoginName; bill.Provider = provider; bill.Reason = "由【报废单】:" + billNo + " 生成的报废退货"; bill.Remark = "系统自动生成"; bill.BillType = "总仓库退货单"; bill.StorageID = "01"; bill.OutDepotDate = ServerTime.Time; context.S_MaterialRejectBill.InsertOnSubmit(bill); context.SubmitChanges(); var varData2 = from a in context.S_ScrapGoods where a.Provider == provider && a.Bill_ID == billNo && a.ResponsibilityProvider == a.Provider select a; foreach (S_ScrapGoods goodsInfo in varData2) { string orderForm = GetOrderForm(context, goodsInfo.GoodsID, goodsInfo.BatchNo, provider); if (orderForm == null) { throw new Exception(UniversalFunction.GetGoodsMessage(context, goodsInfo.GoodsID) + " 批次号:【" + goodsInfo.BatchNo + "】 供应商:【" + provider + "】 找不到对应的【订单号】"); } QueryCondition_Store queryInfo = new QueryCondition_Store(); queryInfo.BatchNo = goodsInfo.BatchNo; queryInfo.GoodsID = goodsInfo.GoodsID; queryInfo.StorageID = "01"; S_Stock stockInfo = UniversalFunction.GetStockInfo(context, queryInfo); //插入业务明细信息 S_MaterialListRejectBill goods = new S_MaterialListRejectBill(); goods.Bill_ID = bill.Bill_ID; goods.GoodsID = goodsInfo.GoodsID; goods.Provider = provider; goods.ProviderBatchNo = stockInfo == null ? "" : stockInfo.ProviderBatchNo; goods.BatchNo = goodsInfo.BatchNo; goods.Amount = (decimal)goodsInfo.Quantity; goods.Remark = ""; goods.AssociateID = orderForm; if (!serverRejectListBill.SetPriceInfo(goods.AssociateID, goods, bill.StorageID, out error)) { throw new Exception(error); } context.S_MaterialListRejectBill.InsertOnSubmit(goods); context.SubmitChanges(); } serverRejectBill.OpertaionDetailAndStock(context, bill); context.SubmitChanges(); } }
/// <summary> /// 结束业务 /// </summary> /// <param name="billNo">业务编号</param> public void FinishBill(string billNo) { IFlowServer serviceFlow = FlowControlService.ServerModuleFactory.GetServerModule <IFlowServer>(); Flow_FlowInfo flowInfo = _serviceFlow.GetNowFlowInfo(_serviceFlow.GetBusinessTypeID(CE_BillTypeEnum.合格品隔离处置单, null), billNo); if (flowInfo == null) { throw new Exception("单据状态为空,请重新确认"); } DepotManagementDataContext ctx = CommentParameter.DepotDataContext; ctx.Connection.Open(); ctx.Transaction = ctx.Connection.BeginTransaction(); try { Business_QualityManagement_Isolation billInfo = GetSingleBillInfo(billNo); if (billInfo == null || billInfo.BillNo.Length == 0) { throw new Exception("此单据不存在"); } switch (flowInfo.FlowID) { case 57: UpdateStockGoodsStatus(ctx, billInfo, (int)CE_StockGoodsStatus.隔离); break; case 59: if (billInfo.QC_ScraptCount != null && billInfo.QC_ScraptCount > 0) { InsertIntoMaterialRequisition(ctx, billInfo); } if ((decimal)billInfo.QC_QualifiedCount == billInfo.GoodsCount) { UpdateStockGoodsStatus(ctx, billInfo, (int)CE_StockGoodsStatus.正常); } break; case 60: QueryCondition_Store stockQuery = new QueryCondition_Store(); stockQuery.BatchNo = billInfo.BatchNo; stockQuery.GoodsID = billInfo.GoodsID; stockQuery.StorageID = billInfo.StorageID; stockQuery.Provider = billInfo.Provider; S_Stock stockInfo = UniversalFunction.GetStockInfo(ctx, stockQuery); if (stockInfo == null) { throw new Exception("获取库存信息失败"); } if (billInfo.QC_ConcessionCount == null || billInfo.QC_QualifiedCount == null) { if (stockInfo.ExistCount != billInfo.PH_QualifiedCount) { throw new Exception("此物品的当前库存为【" + stockInfo.ExistCount + "】不等于【处理人】的【合格数】," + "请根据处理方式要求采购员开【领料单】或者【采购退货单】减库存"); } } else { if (stockInfo.ExistCount != billInfo.QC_ConcessionCount + billInfo.QC_QualifiedCount) { throw new Exception("此物品的当前库存为【" + stockInfo.ExistCount + "】不等于【QC】的【让步数】+【合格数】," + "请根据处理方式要求采购员开【领料单】或者【采购退货单】减库存"); } } UpdateStockGoodsStatus(ctx, billInfo, (int)CE_StockGoodsStatus.正常); break; default: break; } ctx.SubmitChanges(); ctx.Transaction.Commit(); } catch (Exception ex) { ctx.Transaction.Rollback(); throw new Exception(ex.Message); } }