/// <summary> /// 生成领料单明细 /// </summary> /// <param name="dataContxt">LINQ数据上下文</param> /// <param name="antirust">防锈物品信息</param> /// <param name="billID">单据号</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>操作成功返回True,操作失败返回False</returns> public bool CreateMaterialRequisitionGoods(DepotManagementDataContext dataContxt, KF_GoodsAntirust antirust, string billID, out string error) { error = null; try { S_MaterialRequisitionGoods lnqMaterGoods = new S_MaterialRequisitionGoods(); lnqMaterGoods.BasicCount = 0; lnqMaterGoods.BatchNo = antirust.BatchNo; lnqMaterGoods.Bill_ID = billID; lnqMaterGoods.GoodsID = (int)antirust.GoodsID; lnqMaterGoods.ProviderCode = antirust.Provider; lnqMaterGoods.RealCount = Convert.ToDecimal(antirust.AntirustUnqualifiedCount); lnqMaterGoods.Remark = "由防锈报废自动生成"; lnqMaterGoods.RequestCount = Convert.ToDecimal(antirust.AntirustUnqualifiedCount); lnqMaterGoods.ShowPosition = 1; MaterialRequisitionGoodsServer serverMaterialGoods = new MaterialRequisitionGoodsServer(); if (!serverMaterialGoods.AutoCreateGoods(dataContxt, lnqMaterGoods, out error)) { return(false); } //dataContxt.S_MaterialRequisitionGoods.InsertOnSubmit(lnqMaterGoods); return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 审核防锈 /// </summary> /// <param name="goodsTable">需要执行的物品数据表</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>操作成功返回True,操作失败返回False</returns> public bool AuditingAntirustInfo(DataTable goodsTable, out string error) { error = null; try { DepotManagementDataContext contxt = CommentParameter.DepotDataContext; for (int i = 0; i < goodsTable.Rows.Count; i++) { var varData = from a in contxt.S_Stock where a.GoodsID == (int)goodsTable.Rows[i]["物品ID"] && a.BatchNo == goodsTable.Rows[i]["批次号"].ToString() && a.StorageID == goodsTable.Rows[i]["库房ID"].ToString() && a.Provider == goodsTable.Rows[i]["供应商"].ToString() select a; var varAntirust = from a in contxt.KF_GoodsAntirust where a.GoodsID == (int)goodsTable.Rows[i]["物品ID"] && a.BatchNo == goodsTable.Rows[i]["批次号"].ToString() && a.StorageID == goodsTable.Rows[i]["库房ID"].ToString() && a.Provider == goodsTable.Rows[i]["供应商"].ToString() select a; if (varData.Count() != 1) { error = "数据不唯一或者为空"; return(false); } else { S_Stock lnqStock = varData.Single(); KF_GoodsAntirust lnqAntirust = varAntirust.Single(); lnqAntirust.AuditingDate = ServerTime.Time; lnqAntirust.AuditingPersonnel = BasicInfo.LoginName; if (Convert.ToInt32(goodsTable.Rows[i]["不合格数"]) > lnqStock.ExistCount) { error = "【" + lnqStock.GoodsCode.ToString() + "】的批次号[" + lnqStock.BatchNo + "]的物品不合格数不能大于库存数"; return(false); } lnqAntirust.AntirustUnqualifiedCount = Convert.ToInt32(goodsTable.Rows[i]["不合格数"]); if (lnqAntirust.AntirustState.ToString() == "等待审核" && Convert.ToDecimal(lnqAntirust.AntirustUnqualifiedCount) > 0) { lnqAntirust.AntirustState = "等待确认"; } else if (lnqAntirust.AntirustState.ToString() == "等待审核" && Convert.ToDecimal(lnqAntirust.AntirustUnqualifiedCount) == 0) { lnqAntirust.AntirustState = "未防锈"; } else { error = "状态不符,请重新审核"; return(false); } } } contxt.SubmitChanges(); return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 确认防锈 /// </summary> /// <param name="goodsTable">需要执行的物品数据集</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>True 成功 false 失败</returns> public bool AuthorizeAntirustInfo(DataTable goodsTable, out string error) { error = null; MaterialRequisitionServer serverMaterialBill = new MaterialRequisitionServer(); DepotManagementDataContext contxt = CommentParameter.DepotDataContext; contxt.Connection.Open(); contxt.Transaction = contxt.Connection.BeginTransaction(); try { DataTable dtTemp = GlobalObject.DataSetHelper.SelectDistinct("", goodsTable, "库房ID"); for (int k = 0; k < dtTemp.Rows.Count; k++) { DataTable dtgoodsTable = GlobalObject.DataSetHelper.SiftDataTable(goodsTable, "库房ID = '" + dtTemp.Rows[k][0].ToString() + "'", out error); if (error != null) { throw new Exception(error); } string billID = m_assignBill.AssignNewNo(serverMaterialBill, CE_BillTypeEnum.领料单.ToString()); for (int i = 0; i < dtgoodsTable.Rows.Count; i++) { var varStock = from a in contxt.S_Stock where a.GoodsID == (int)dtgoodsTable.Rows[i]["物品ID"] && a.BatchNo == dtgoodsTable.Rows[i]["批次号"].ToString() && a.StorageID == dtgoodsTable.Rows[i]["库房ID"].ToString() && a.Provider == dtgoodsTable.Rows[i]["供应商"].ToString() select a; var varAntirust = from a in contxt.KF_GoodsAntirust where a.GoodsID == (int)dtgoodsTable.Rows[i]["物品ID"] && a.BatchNo == dtgoodsTable.Rows[i]["批次号"].ToString() && a.StorageID == dtgoodsTable.Rows[i]["库房ID"].ToString() && a.Provider == dtgoodsTable.Rows[i]["供应商"].ToString() select a; if (varStock.Count() != 1) { error = "数据不唯一或者为空"; throw new Exception(error); } else { S_Stock lnqStock = varStock.Single(); KF_GoodsAntirust lnqAntirust = varAntirust.Single(); if (Convert.ToDecimal(lnqAntirust.AntirustUnqualifiedCount) > 0) { if (!CreateMaterialRequisitionGoods(contxt, lnqAntirust, billID, out error)) { throw new Exception(error); } } lnqAntirust.AntirustUnqualifiedCount = 0; lnqAntirust.AuthorizePersonnel = BasicInfo.LoginName; if (lnqAntirust.AntirustState.ToString() == "等待确认") { lnqAntirust.AntirustDate = ServerTime.Time; lnqAntirust.AntirustState = "未防锈"; } else { error = "状态不符,请重新确认"; throw new Exception(error); } } } contxt.SubmitChanges(); var requistionVar = from a in contxt.S_MaterialRequisition where a.Bill_ID == billID select a; IMaterialRequisitionServer requisitionService = ServerModule.ServerModuleFactory.GetServerModule <IMaterialRequisitionServer>(); requisitionService.OpertaionDetailAndStock(contxt, requistionVar.Single()); m_assignBill.UseBillNo(CE_BillTypeEnum.领料单.ToString(), billID); } contxt.SubmitChanges(); contxt.Transaction.Commit(); return(true); } catch (Exception ex) { contxt.Transaction.Rollback(); error = ex.Message; return(false); } }