/// <summary> /// 根据单据信息操作账务信息与库存信息 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="bill">单据信息</param> public void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_MaterialReturnedInTheDepot bill) { MaterialListReturnedInTheDepot listService = new MaterialListReturnedInTheDepot(); IFinancialDetailManagement serverDetail = ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>(); var result = from r in dataContext.S_MaterialListReturnedInTheDepot where r.Bill_ID == bill.Bill_ID select r; if (result == null || result.Count() == 0) { throw new Exception("获取单据信息失败"); } foreach (var item in result) { S_FetchGoodsDetailBill detailInfo = listService.AssignDetailInfo(dataContext, bill, item); S_Stock stockInfo = listService.AssignStockInfo(dataContext, bill, item); if (detailInfo == null || stockInfo == null) { throw new Exception("获取账务信息或者库存信息失败"); } serverDetail.ProcessFetchGoodsDetail(dataContext, detailInfo, stockInfo); } IStoreServer serviceStore = ServerModuleFactory.GetServerModule <IStoreServer>(); serviceStore.Operation_MES_InProduction(dataContext, bill.Bill_ID); }
/// <summary> /// 操作账务信息与库存信息_出 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="lnqOutPut">单据信息</param> void OperationDetailAndStock_Out(DepotManagementDataContext dataContext, Business_WarehouseInPut_InPut lnqInPut) { string error = ""; IProductCodeServer productCodeService = ServerModule.ServerModuleFactory.GetServerModule <ServerModule.IProductCodeServer>(); CE_MarketingType marketingType = GlobalObject.EnumOperation.OutPutBusinessTypeConvertToMarketingType( GlobalObject.GeneralFunction.StringConvertToEnum <CE_OutPutBusinessType>(lnqInPut.BillType)); IFinancialDetailManagement serverDetail = ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>(); List <View_Business_WarehouseInPut_InPutDetail> listDetail = GetListViewDetailInfo(lnqInPut.BillNo); foreach (View_Business_WarehouseInPut_InPutDetail detail1 in listDetail) { if (!productCodeService.UpdateProductStock(dataContext, lnqInPut.BillNo, marketingType.ToString(), lnqInPut.StorageID, (lnqInPut.StorageID == "05" && marketingType == CE_MarketingType.入库) ? true : false, detail1.物品ID, out error)) { throw new Exception(error); } S_FetchGoodsDetailBill detailInfo = AssignDetailInfo_Out(dataContext, lnqInPut, detail1); S_Stock stockInfo = AssignStockInfo(dataContext, lnqInPut, detail1); if (detailInfo == null || stockInfo == null) { throw new Exception("获取账务信息或者库存信息失败"); } serverDetail.ProcessFetchGoodsDetail(dataContext, detailInfo, stockInfo); } }
private void btnStockUpdate_Click(object sender, EventArgs e) { if (MessageBox.Show("您确定要修改此物品?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { S_Stock stockInfo = CreateStockObject(); stockInfo.ID = (int)dataGridView1.CurrentRow.Cells[0].Value; if (stockInfo.GoodsCode != dataGridView1.CurrentRow.Cells["图号型号"].Value.ToString() || stockInfo.GoodsName != dataGridView1.CurrentRow.Cells["物品名称"].Value.ToString() || stockInfo.Spec != dataGridView1.CurrentRow.Cells["规格"].Value.ToString()) { MessageDialog.ShowErrorMessage("不允许修改物品的图号、名称、规格信息!"); return; } // 获取到修改行索引 int rowIndex = dataGridView1.CurrentRow.Index; if (!m_storeServer.UpdateStore(stockInfo, out m_error)) { MessageDialog.ShowErrorMessage(m_error); } else { MessageBox.Show("修改成功", "提示"); } QueryStock(); } }
/// <summary> /// 赋值库存信息 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="outSourcing">单据信息</param> /// <returns>返回库存信息对象</returns> S_Stock AssignStockInfo(DepotManagementDataContext ctx, S_CheckOutInDepotForOutsourcingBill outSourcing) { View_F_GoodsPlanCost tempGoodsLnq = UniversalFunction.GetGoodsInfo(ctx, outSourcing.GoodsID); if (tempGoodsLnq == null) { throw new Exception("无此物品信息"); } S_Stock stock = new S_Stock(); stock.GoodsID = outSourcing.GoodsID; stock.GoodsCode = tempGoodsLnq.图号型号; stock.GoodsName = tempGoodsLnq.物品名称; stock.Unit = tempGoodsLnq.单位; stock.Spec = tempGoodsLnq.规格; stock.Provider = outSourcing.Provider; stock.ProviderBatchNo = outSourcing.ProviderBatchNo; stock.BatchNo = outSourcing.BatchNo; stock.ShelfArea = outSourcing.ShelfArea; stock.ColumnNumber = outSourcing.ColumnNumber; stock.LayerNumber = outSourcing.LayerNumber; stock.ExistCount = outSourcing.InDepotCount; stock.Date = ServerModule.ServerTime.Time; stock.UnitPrice = outSourcing.UnitPrice; stock.StorageID = outSourcing.StorageID; stock.Version = outSourcing.Version; stock.GoodsStatus = outSourcing.IsOnlyForRepairFlag == true ? 6 : 0; return(stock); }
/// <summary> /// 赋值库存信息 /// </summary> /// <param name="context">数据上下文</param> /// <param name="bill">单据信息</param> /// <param name="item">明细信息</param> /// <returns>返回库存信息对象</returns> public S_Stock AssignStockInfo(DepotManagementDataContext context, S_MaterialRequisition bill, S_MaterialRequisitionGoods item) { F_GoodsPlanCost basicGoods = m_basicGoodsServer.GetGoodsInfo(context, item.GoodsID); if (item.RealCount == 0) { throw new Exception(string.Format("图号:{0}, 名称:{1}, 规格:{2}, 供应商:{3}, 批次号:{4} 的物品实领数为0,请重新输入!", basicGoods.GoodsCode, basicGoods.GoodsName, basicGoods.Spec, item.ProviderCode, item.BatchNo)); } S_Stock stockInfo = new S_Stock(); stockInfo.GoodsID = item.GoodsID; if (basicGoods != null) { stockInfo.GoodsCode = basicGoods.GoodsCode; stockInfo.GoodsName = basicGoods.GoodsName; stockInfo.Spec = basicGoods.Spec; } stockInfo.ExistCount = item.RealCount; stockInfo.Provider = item.ProviderCode; stockInfo.BatchNo = item.BatchNo; stockInfo.StorageID = bill.StorageID; if (item.Remark != null && item.Remark.Contains("无线领料")) { item.Remark = item.Remark.Replace(",无线领料", ""); item.Remark = item.Remark.Replace("无线领料", ""); // 防止用户把前面的逗号删除 } return(stockInfo); }
/// <summary> /// 赋值库存信息 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="bill">单据信息</param> /// <returns>返回库存信息对象</returns> public S_Stock AssignStockInfo(DepotManagementDataContext dataContext, S_CheckOutInDepotBill bill) { S_Stock stock = new S_Stock(); stock.GoodsID = bill.GoodsID; stock.StorageID = bill.StorageID; stock.ShelfArea = bill.ShelfArea; stock.ColumnNumber = bill.ColumnNumber; stock.LayerNumber = bill.LayerNumber; stock.Provider = bill.Provider; stock.ProviderBatchNo = bill.ProviderBatchNo; stock.BatchNo = bill.BatchNo; stock.ExistCount = bill.InDepotCount; stock.UnitPrice = bill.UnitPrice; stock.StorageID = bill.StorageID; stock.Version = bill.Version; if (bill.OnlyForRepairFlag) { stock.GoodsStatus = 6; } return(stock); }
/// <summary> /// 根据单据信息操作账务信息与库存信息 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="bill">单据信息</param> public void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_FrockInDepotBill bill) { MaterialRequisitionGoodsServer goodsService = new MaterialRequisitionGoodsServer(); IFinancialDetailManagement serverDetail = ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>(); var result = from r in dataContext.S_FrockInDepotGoodsBill where r.Bill_ID == bill.Bill_ID select r; if (result == null || result.Count() == 0) { throw new Exception("获取单据信息失败"); } foreach (var item in result) { S_InDepotDetailBill detailInfo = AssignDetailInfo(dataContext, bill, item); S_Stock stockInfo = AssignStockInfo(dataContext, bill, item); if (detailInfo == null || stockInfo == null) { throw new Exception("获取账务信息或者库存信息失败"); } serverDetail.ProcessInDepotDetail(dataContext, detailInfo, stockInfo); } }
/// <summary> /// 定位记录 /// </summary> /// <param name="stockInfo">库存信息</param> /// <returns>定位是否成功的标志</returns> bool PositioningRecord(S_Stock stockInfo) { string strColName = ""; foreach (DataGridViewColumn col in dataGridView1.Columns) { if (col.Visible) { strColName = col.Name; break; } } for (int i = 0; i < dataGridView1.Rows.Count; i++) { if ((string)dataGridView1.Rows[i].Cells["图号型号"].Value == stockInfo.GoodsCode && (string)dataGridView1.Rows[i].Cells["物品名称"].Value == stockInfo.GoodsName && (string)dataGridView1.Rows[i].Cells["规格"].Value == stockInfo.Spec && (string)dataGridView1.Rows[i].Cells["供货单位"].Value == stockInfo.Provider && (string)dataGridView1.Rows[i].Cells["批次号"].Value == stockInfo.BatchNo && (string)dataGridView1.Rows[i].Cells["库房代码"].Value == stockInfo.StorageID) { dataGridView1.FirstDisplayedScrollingRowIndex = i; dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[strColName]; return(true); } } return(false); }
/// <summary> /// 根据界面信息生成库存对象 /// </summary> /// <returns>生成的库存对象</returns> private S_Stock CreateStockObject() { View_F_GoodsPlanCost info = m_basicGoodsServer.GetGoodsInfo(txtCode.Text, txtName.Text, txtSpec.Text, out m_error); S_Stock stockInfo = new S_Stock(); stockInfo.GoodsID = info.序号; stockInfo.GoodsCode = txtCode.Text; stockInfo.GoodsName = txtName.Text; stockInfo.Spec = txtSpec.Text; stockInfo.Provider = txtProvider.Text; stockInfo.ProviderBatchNo = txtProviderBatchNo.Text; stockInfo.BatchNo = txtBatchNo.Text; stockInfo.Version = txtVersion.Text.Trim(); stockInfo.ShelfArea = txtShelf.Text.Trim().ToUpper(); stockInfo.ColumnNumber = txtColumn.Text.Trim().ToUpper(); stockInfo.LayerNumber = txtLayer.Text.Trim().ToUpper(); stockInfo.ExistCount = numCount.Value; stockInfo.Remark = txtRemark.Text; stockInfo.UnitPrice = numFactUnitPrice.Value; stockInfo.InputPerson = BasicInfo.LoginID; stockInfo.GoodsStatus = (int)cmbGoodsStatus.SelectedValue; stockInfo.StorageID = UniversalFunction.GetStorageID(cmbStorage.Text); return(stockInfo); }
private void btnAdd_Click(object sender, EventArgs e) { if (!CheckData()) { return; } if (!UpdateBasicGoodsInfo()) { return; } S_Stock stockInfo = CreateStockObject(); if (PositioningRecord(stockInfo)) { MessageDialog.ShowPromptMessage("此物品信息已经存在, 不能重复添加"); return; } DepotManagementDataContext ctx = CommentParameter.DepotDataContext; m_storeServer.InStore(ctx, stockInfo, CE_SubsidiaryOperationType.未知); ctx.SubmitChanges(); QueryStock(); RefreshControl(); PositioningRecord(stockInfo); chk_PT.Enabled = false; }
private void btnBatchNo_Click(object sender, EventArgs e) { if (m_lnqWSCode == null) { return; } FormQueryInfo form = QueryInfoDialog.GetWorkShopBatchNoInfo(Convert.ToInt32(txtCode.Tag), m_lnqWSCode.WSCode); if (form.ShowDialog() == DialogResult.OK) { txtBatchNo.Text = (string)form.GetDataItem("批次号"); txtBatchNo.Tag = form.GetDataItem("库存数量"); StoreQueryCondition condition = new StoreQueryCondition(); condition.GoodsID = Convert.ToInt32(txtCode.Tag); condition.BatchNo = txtBatchNo.Text; condition.StorageID = m_strStorage; S_Stock tempStock = m_serverStock.GetStockInfo(condition); if (tempStock != null) { txtProvider.Text = tempStock.Provider; txtProviderBatchNo.Text = tempStock.ProviderBatchNo; } else { txtProvider.Text = ""; } } }
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="context">数据库上下文</param> /// <param name="stockInfo">库存信息</param> public void Delete(DepotManagementDataContext context, S_Stock stockInfo) { var result = from r in context.S_InDepotGoodsBarCodeTable where r.GoodsID == stockInfo.GoodsID && r.Provider == stockInfo.Provider && r.BatchNo == stockInfo.BatchNo && r.StorageID == stockInfo.StorageID select r; if (result.Count() > 0) { context.S_InDepotGoodsBarCodeTable.DeleteAllOnSubmit(result); } }
/// <summary> /// 赋值库存信息 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="lnqOutPut">单据信息</param> /// <param name="detail1">明细信息</param> /// <returns>返回库存信息对象</returns> S_Stock AssignStockInfo(DepotManagementDataContext ctx, Business_WarehouseInPut_InPut lnqInPut, View_Business_WarehouseInPut_InPutDetail detail1) { S_Stock tempLnqStock = new S_Stock(); tempLnqStock.GoodsID = detail1.物品ID; tempLnqStock.BatchNo = detail1.批次号; tempLnqStock.Date = ServerTime.Time; tempLnqStock.Provider = detail1.供应商; tempLnqStock.StorageID = lnqInPut.StorageID; tempLnqStock.ExistCount = Convert.ToDecimal(detail1.数量); return(tempLnqStock); }
/// <summary> /// 在添加库存信息时添加条形码信息 /// </summary> /// <param name="context">数据库上下文</param> /// <param name="stockInfo">库存表的一条库存信息</param> public void Add(DepotManagementDataContext context, S_Stock stockInfo) { if (IsExists(context, stockInfo.GoodsID, stockInfo.StorageID, stockInfo.BatchNo, stockInfo.Provider)) { return; } S_InDepotGoodsBarCodeTable lnqBarCodeInfo = new S_InDepotGoodsBarCodeTable(); lnqBarCodeInfo.GoodsID = (int)stockInfo.GoodsID; lnqBarCodeInfo.Provider = stockInfo.Provider; lnqBarCodeInfo.BatchNo = stockInfo.BatchNo; lnqBarCodeInfo.StorageID = stockInfo.StorageID; context.S_InDepotGoodsBarCodeTable.InsertOnSubmit(lnqBarCodeInfo); }
/// <summary> /// 赋值库存信息 /// </summary> /// <param name="context">数据上下文</param> /// <param name="bill">单据信息</param> /// <param name="goodsItem">明细信息</param> /// <returns>返回库存信息对象</returns> public S_Stock AssignStockInfo(DepotManagementDataContext context, S_MaterialReturnedInTheDepot bill, S_MaterialListReturnedInTheDepot goodsItem) { if (goodsItem.ShelfArea == null || goodsItem.ColumnNumber == null || goodsItem.LayerNumber == null) { throw new Exception("仓库货架、层、列等信息不能为空,请修改后重新提交"); } bool blIsOnlyForRepair = false; var resultbill = from a in context.S_MaterialReturnedInTheDepot where a.Bill_ID == bill.Bill_ID select a; if (resultbill.Count() != 1) { throw new Exception("数据不唯一或者为空"); } else { blIsOnlyForRepair = resultbill.Single().IsOnlyForRepair.ToString() == "" ? false : Convert.ToBoolean(resultbill.Single().IsOnlyForRepair); } S_Stock stock = new S_Stock(); // 添加信息到库存 IStoreServer storeServer = ServerModuleFactory.GetServerModule <IStoreServer>(); stock.GoodsID = goodsItem.GoodsID; stock.Provider = goodsItem.Provider; stock.ProviderBatchNo = goodsItem.ProviderBatchNo; stock.BatchNo = goodsItem.BatchNo; stock.ShelfArea = goodsItem.ShelfArea; stock.ColumnNumber = goodsItem.ColumnNumber; stock.LayerNumber = goodsItem.LayerNumber; stock.ExistCount = (decimal)goodsItem.ReturnedAmount; stock.Date = ServerModule.ServerTime.Time; stock.StorageID = bill.StorageID; if (blIsOnlyForRepair) { stock.GoodsStatus = 6; } return(stock); }
/// <summary> /// 赋值库存信息 /// </summary> /// <param name="dataContxt">数据上下文</param> /// <param name="bill">单据信息</param> /// <param name="item">明细信息</param> /// <returns>返回库存信息对象</returns> S_Stock AssignStockInfo(DepotManagementDataContext dataContxt, S_HomemadeRejectBill bill, S_HomemadeRejectList item) { F_GoodsPlanCost info = m_basicGoodsServer.GetGoodsInfo(dataContxt, item.GoodsID); S_Stock stockInfo = new S_Stock(); stockInfo.GoodsID = info.ID; stockInfo.GoodsCode = info.GoodsCode; stockInfo.GoodsName = info.GoodsName; stockInfo.Spec = info.Spec; stockInfo.Provider = item.Provider; stockInfo.BatchNo = item.BatchNo; stockInfo.ExistCount = item.Amount; stockInfo.StorageID = bill.StorageID; return(stockInfo); }
/// <summary> /// 赋值库存信息 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="bill">单据信息</param> /// <returns>返回库存信息对象</returns> S_Stock AssignStockInfo(DepotManagementDataContext dataContext, S_HomemadePartBill bill) { S_Stock stock = new S_Stock(); stock.GoodsID = bill.GoodsID; stock.StorageID = bill.StorageID; stock.ShelfArea = bill.ShelfArea; stock.ColumnNumber = bill.ColumnNumber; stock.LayerNumber = bill.LayerNumber; stock.Provider = bill.Provider; stock.ProviderBatchNo = bill.ProviderBatchNo; stock.BatchNo = bill.BatchNo; stock.ExistCount = bill.InDepotCount; stock.UnitPrice = bill.UnitPrice; stock.StorageID = bill.StorageID; return(stock); }
/// <summary> /// 修改物品库存状态 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="billInfo">单据信息</param> /// <param name="goodsStatus">物品状态</param> public void UpdateStockGoodsStatus(DepotManagementDataContext ctx, Business_QualityManagement_Isolation billInfo, int goodsStatus) { var varData = from a in ctx.S_Stock where a.BatchNo == billInfo.BatchNo && a.GoodsID == billInfo.GoodsID && a.Provider == billInfo.Provider && a.StorageID == billInfo.StorageID select a; if (varData.Count() == 1) { S_Stock tempStok = varData.Single(); tempStok.GoodsStatus = goodsStatus; } else { throw new Exception("库存信息有误,操作失败"); } }
/// <summary> /// 根据单据信息操作账务信息与库存信息 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="bill">单据信息</param> public void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_HomemadePartBill bill) { IFinancialDetailManagement serverDetail = ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>(); S_InDepotDetailBill detailInfo = AssignDetailInfo(dataContext, bill); S_Stock stockInfo = AssignStockInfo(dataContext, bill); if (detailInfo == null || stockInfo == null) { throw new Exception("获取账务信息或者库存信息失败"); } if (bill.DeclareCount < bill.InDepotCount) { throw new Exception("入库数不能大于报检数"); } serverDetail.ProcessInDepotDetail(dataContext, detailInfo, stockInfo); }
/// <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="dataContext">数据上下文</param> /// <param name="bill">单据信息</param> void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_HomemadeRejectBill bill) { IFinancialDetailManagement serverDetail = ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>(); var result = from r in dataContext.S_HomemadeRejectList where r.Bill_ID == bill.Bill_ID select r; foreach (var item in result) { S_InDepotDetailBill detailInfo = AssignDetailInfo(dataContext, bill, item); S_Stock stockInfo = AssignStockInfo(dataContext, bill, item); if (detailInfo == null || stockInfo == null) { throw new Exception("获取账务信息或者库存信息失败"); } serverDetail.ProcessInDepotDetail(dataContext, detailInfo, stockInfo); } }
/// <summary> /// 在更新条形码管理表中的信息 /// </summary> /// <param name="context">数据库上下文</param> /// <param name="oldInfo">旧库存信息</param> /// <param name="newInfo">新库存信息</param> public void Update(DepotManagementDataContext context, S_Stock oldInfo, S_Stock newInfo) { if (IsExists(oldInfo.GoodsID, oldInfo.StorageID, oldInfo.BatchNo, oldInfo.Provider)) { var result = from r in context.S_InDepotGoodsBarCodeTable where r.GoodsID == oldInfo.GoodsID && r.Provider == oldInfo.Provider && r.BatchNo == oldInfo.BatchNo && r.StorageID == oldInfo.StorageID select r; if (result.Count() == 1) { S_InDepotGoodsBarCodeTable lnqBarcode = result.Single(); lnqBarcode.GoodsID = (int)newInfo.GoodsID; lnqBarcode.Provider = newInfo.Provider; lnqBarcode.BatchNo = newInfo.BatchNo; lnqBarcode.StorageID = newInfo.StorageID; } } }
/// <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); } }
/// <summary> /// 赋值库存信息 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="bill">单据信息</param> /// <param name="item">明细信息</param> /// <returns>返回库存信息</returns> public S_Stock AssignStockInfo(DepotManagementDataContext dataContext, S_OrdinaryInDepotBill bill, S_OrdinaryInDepotGoodsBill item) { S_Stock lnqStock = new S_Stock(); lnqStock.GoodsID = item.GoodsID; lnqStock.ProviderBatchNo = item.ProviderBatchNo; lnqStock.BatchNo = item.BatchNo; lnqStock.Provider = bill.Provider; lnqStock.StorageID = bill.StorageID; lnqStock.ShelfArea = item.ShelfArea; lnqStock.ColumnNumber = item.ColumnNumber; lnqStock.LayerNumber = item.LayerNumber; lnqStock.ExistCount = (decimal)item.Amount; lnqStock.UnitPrice = item.UnitPrice; lnqStock.Price = 0; return(lnqStock); }
/// <summary> /// 赋值库存信息 /// </summary> /// <param name="ctx">数据上下文</param> /// <param name="bill">单据信息</param> /// <param name="item">明细信息</param> /// <returns>返回库存信息对象</returns> S_Stock AssignStockInfo(DepotManagementDataContext ctx, S_FrockInDepotBill bill, S_FrockInDepotGoodsBill item) { S_Stock stock = new S_Stock(); stock.GoodsID = item.GoodsID; stock.Provider = CE_WorkShopCode.JJCJ.ToString(); stock.BatchNo = item.BatchNo; stock.ProviderBatchNo = ""; stock.StorageID = bill.StorageID; stock.ShelfArea = item.ShelfArea; stock.ColumnNumber = item.ColumnNumber; stock.LayerNumber = item.LayerNumber; stock.ExistCount = (decimal)item.Amount; stock.UnitPrice = 0; stock.Price = 0; return(stock); }
private void btnUpdate_Click(object sender, EventArgs e) { if (!CheckSelectedRow()) { return; } if (!CheckData()) { return; } if (!UpdateBasicGoodsInfo()) { return; } S_Stock stockInfo = CreateStockObject(); stockInfo.ID = (int)dataGridView1.CurrentRow.Cells[0].Value; if (stockInfo.GoodsCode != dataGridView1.CurrentRow.Cells["图号型号"].Value.ToString().Trim() || stockInfo.GoodsName != dataGridView1.CurrentRow.Cells["物品名称"].Value.ToString().Trim() || stockInfo.Spec != dataGridView1.CurrentRow.Cells["规格"].Value.ToString().Trim()) { MessageDialog.ShowErrorMessage("不允许修改物品的图号、名称、规格信息!"); return; } // 获取到修改行索引 int rowIndex = dataGridView1.CurrentRow.Index; if (!m_storeServer.UpdateStore(stockInfo, out m_error)) { MessageDialog.ShowErrorMessage(m_error); return; } QueryStock(); RefreshControl(); string strColName = ""; foreach (DataGridViewColumn col in dataGridView1.Columns) { if (col.Visible) { strColName = col.Name; break; } } // 自动跳到下一行记录 if (rowIndex != dataGridView1.Rows.Count - 1) { dataGridView1.CurrentCell = dataGridView1.Rows[rowIndex + 1].Cells[strColName]; } dataGridView1.FirstDisplayedScrollingRowIndex = rowIndex; dataGridView1.Focus(); chk_PT.Enabled = false; }
/// <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); } }