/// <summary> /// 更改关联单据号 /// </summary> /// <param name="context">上下文数据集</param> /// <param name="billNo">单据号</param> /// <param name="goodsID">物品ID</param> /// <param name="batchNo">批次号</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>操作成功返回True,操作失败返回False</returns> public bool UpdateAssicotaeBillID(DepotManagementDataContext context, string billNo, int goodsID, string batchNo, out string error) { error = null; try { var varData = from a in context.S_IsolationManageBill where a.GoodsID == goodsID && a.BatchNo == batchNo && a.DJZT == "等待采购退货" select a; if (varData.Count() == 1) { S_IsolationManageBill lnqIsolation = varData.Single(); lnqIsolation.AssociateRejectBillID = billNo; } return(true); } catch (Exception ex) { error = ex.Message; return(false); throw; } }
/// <summary> /// 清除隔离单数据 /// </summary> /// <param name="context">上下文数据集</param> /// <param name="billNo">单据号</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>操作成功返回True,操作失败返回False</returns> private bool ClearDate(DepotManagementDataContext context, string billNo, out string error) { error = null; try { var varData = from a in context.S_IsolationManageBill where a.AssociateRejectBillID == billNo select a; if (varData.Count() > 0) { foreach (var item in varData) { S_IsolationManageBill lnqIsolation = item; lnqIsolation.DJZT = "等待采购退货"; lnqIsolation.AssociateRejectBillID = null; } } return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 新建单据 /// </summary> /// <param name="isolation">不合格品隔离处置单信息</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>操作成功返回True,操作失败返回False</returns> bool InsertNewDate(S_IsolationManageBill isolation, out string error) { error = null; DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; try { var varData = from a in dataContxt.S_IsolationManageBill where a.DJH == isolation.DJH select a; if (varData.Count() == 0) { if (!m_serverStore.ChangeStockStatus(dataContxt, isolation, 3, out error)) { return(false); } dataContxt.S_IsolationManageBill.InsertOnSubmit(isolation); dataContxt.SubmitChanges(); } return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 修改关联的隔离单的单据状态 /// </summary> /// <param name="context">数据上下文</param> /// <param name="billNo">退货单号</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>修改成功返回True,修改失败返回False</returns> private bool UpdateIsolationBillStatus(DepotManagementDataContext context, string billNo, out string error) { error = null; try { var varData1 = from a in context.S_MaterialListRejectBill where a.Bill_ID == billNo select a; foreach (S_MaterialListRejectBill item1 in varData1) { var varData = from a in context.S_IsolationManageBill where a.GoodsID == item1.GoodsID && a.BatchNo == item1.BatchNo && a.Provider == item1.Provider && a.DJZT == "等待采购退货" select a; if (varData.Count() > 0) { foreach (var item in varData) { S_IsolationManageBill lnqIsolation = item; lnqIsolation.DJZT = "等待仓管调入"; string strMsg = string.Format("{0}号不合格品隔离处置单,请仓管处理", billNo.ToString()); m_billMessageServer.PassFlowMessage(billNo, strMsg, m_billMessageServer.GetRoleStringForStorage(lnqIsolation.StorageID).ToString(), true); } } } return(true); } catch (Exception exce) { error = exce.Message; return(false); } }
/// <summary> /// 修改关联的隔离单的单据状态 /// </summary> /// <param name="context">上下文数据集</param> /// <param name="billNo">自制件退货单据号</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>操作成功返回True,操作失败返回False</returns> private bool UpdateIsolationBillStatus(DepotManagementDataContext context, string billNo, out string error) { error = null; try { var varData = from a in context.S_IsolationManageBill where a.AssociateRejectBillID == billNo select a; if (varData.Count() > 0) { foreach (var item in varData) { S_IsolationManageBill lnqIsolation = item; if (lnqIsolation.DJZT != "等待采购退货") { error = "请重新确认退货物品所关联的隔离单单据状态"; return(false); } lnqIsolation.DJZT = "等待仓管调入"; string strMsg = string.Format("{0}号不合格品隔离处置单,请仓管处理", billNo.ToString()); m_billMessageServer.PassFlowMessage(billNo, strMsg, m_billMessageServer.GetRoleStringForStorage(lnqIsolation.StorageID).ToString(), true); } } return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 删除单据 /// </summary> /// <param name="billNo">单据号</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>删除成功返回True,删除失败返回False</returns> public bool ScrapBill(string billNo, out string error) { error = null; DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; try { var varIsolation = from a in dataContxt.S_IsolationManageBill where a.DJH == billNo select a; if (varIsolation.Count() != 1) { error = "记录不唯一"; return(false); } else { S_IsolationManageBill Isalation = varIsolation.Single(); dataContxt.S_IsolationManageBill.DeleteAllOnSubmit(varIsolation); if (!m_serverStore.ChangeStockStatus(dataContxt, Isalation, 0, out error)) { return(false); } dataContxt.SubmitChanges(); } return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 将隔离品调入库房,确认解除隔离 /// </summary> /// <param name="billID">隔离单号</param> /// <param name="message">否认说明</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>操作成功返回True,操作失败返回False</returns> public bool AffrimBill(string billID, string message, out string error) { error = null; try { DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; var varData = from a in dataContxt.S_IsolationManageBill where a.DJH == billID select a; if (varData.Count() != 0) { error = "数据不唯一或者为空"; return(false); } else { S_IsolationManageBill lnqBill = varData.Single(); lnqBill.DJZT = "等待处理结果"; lnqBill.QRRQ = ServerTime.Time; lnqBill.QRRY = BasicInfo.LoginID; lnqBill.QRSM = message; } dataContxt.SubmitChanges(); return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 回退单据 /// </summary> /// <param name="djh">隔离单单号</param> /// <param name="billStatus">回退后的单据状态</param> /// <param name="isolation">隔离单单据信息</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <param name="rebackReason">回退原因</param> /// <returns>回退成功返回True,回退失败返回False</returns> public bool ReturnBill(string djh, string billStatus, S_IsolationManageBill isolation, out string error, string rebackReason) { error = null; DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; try { var varIsolation = from a in dataContxt.S_IsolationManageBill where a.DJH == djh select a; string strMsg = ""; if (varIsolation.Count() == 1) { S_IsolationManageBill lnqIsolation = varIsolation.Single(); switch (billStatus) { case "新建单据": strMsg = string.Format("{0}号不合格品隔离处置单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh); m_billMessageServer.PassFlowMessage(djh, strMsg, lnqIsolation.LRRY, false); lnqIsolation.DJZT = "新建单据"; lnqIsolation.SHRQ = null; lnqIsolation.SHRY = null; lnqIsolation.DCRQ = null; lnqIsolation.DCRY = null; lnqIsolation.CLRQ = null; lnqIsolation.CLRY = null; lnqIsolation.JYRY = null; lnqIsolation.JYRQ = null; lnqIsolation.DRRQ = null; lnqIsolation.DRRY = null; lnqIsolation.QRRQ = null; lnqIsolation.QRRY = null; //lnqIsolation.QRSM = null; //lnqIsolation.RejectMode = null; break; case "等待主管审核": strMsg = string.Format("{0}号不合格品隔离处置单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh); m_billMessageServer.PassFlowMessage(djh, strMsg, lnqIsolation.SHRY, false); lnqIsolation.DJZT = "等待主管审核"; lnqIsolation.SHRQ = null; lnqIsolation.SHRY = null; lnqIsolation.DCRQ = null; lnqIsolation.DCRY = null; lnqIsolation.CLRQ = null; lnqIsolation.CLRY = null; lnqIsolation.JYRY = null; lnqIsolation.JYRQ = null; lnqIsolation.DRRQ = null; lnqIsolation.DRRY = null; lnqIsolation.QRRQ = null; lnqIsolation.QRRY = null; //lnqIsolation.QRSM = null; //lnqIsolation.RejectMode = null; break; case "等待仓管调出": strMsg = string.Format("{0}号不合格品隔离处置单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh); m_billMessageServer.PassFlowMessage(djh, strMsg, lnqIsolation.DCRY, false); lnqIsolation.DJZT = "等待仓管调出"; lnqIsolation.DCRQ = null; lnqIsolation.DCRY = null; lnqIsolation.CLRQ = null; lnqIsolation.CLRY = null; lnqIsolation.JYRY = null; lnqIsolation.JYRQ = null; lnqIsolation.DRRQ = null; lnqIsolation.DRRY = null; lnqIsolation.QRRQ = null; lnqIsolation.QRRY = null; //lnqIsolation.QRSM = null; //lnqIsolation.RejectMode = null; break; case "等待处理结果": strMsg = string.Format("{0}号不合格品隔离处置单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh); m_billMessageServer.PassFlowMessage(djh, strMsg, lnqIsolation.CLRY, false); lnqIsolation.DJZT = "等待处理结果"; lnqIsolation.CLRQ = null; lnqIsolation.CLRY = null; lnqIsolation.JYRY = null; lnqIsolation.JYRQ = null; lnqIsolation.DRRQ = null; lnqIsolation.DRRY = null; lnqIsolation.QRRQ = null; lnqIsolation.QRRY = null; //lnqIsolation.QRSM = null; //lnqIsolation.RejectMode = null; break; case "等待质检结果": strMsg = string.Format("{0}号不合格品隔离处置单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh); m_billMessageServer.PassFlowMessage(djh, strMsg, lnqIsolation.JYRY, false); lnqIsolation.DJZT = "等待质检结果"; lnqIsolation.JYRY = null; lnqIsolation.JYRQ = null; lnqIsolation.DRRQ = null; lnqIsolation.DRRY = null; lnqIsolation.QRRQ = null; lnqIsolation.QRRY = null; //lnqIsolation.QRSM = null; strMsg = string.Format("{0}号不合格品隔离处置单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh); m_billMessageServer.PassFlowMessage(djh, strMsg, CE_RoleEnum.检验员.ToString(), true); break; case "等待质管主管确认": strMsg = string.Format("{0}号不合格品隔离处置单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh); m_billMessageServer.PassFlowMessage(djh, strMsg, lnqIsolation.DRRY, false); lnqIsolation.DJZT = "等待质管主管确认"; lnqIsolation.DRRQ = null; lnqIsolation.DRRY = null; lnqIsolation.QRRQ = null; lnqIsolation.QRRY = null; //lnqIsolation.QRSM = null; break; case "等待采购退货": lnqIsolation.DJZT = "等待采购退货"; strMsg = string.Format("{0}号不合格品隔离处置单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh); m_billMessageServer.PassFlowMessage(djh, strMsg, CE_RoleEnum.采购员.ToString(), true); break; default: break; } dataContxt.SubmitChanges(); } return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 自动生成领料单 /// </summary> /// <param name="context">数据上下文</param> /// <param name="isolation">隔离单单据信息</param> /// <param name="flag">是否为废弃数,若为废弃数则用“废弃数”表示</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>自动生成成功返回True,自动生成失败返回False</returns> private bool CreateMeterialRequisition(DepotManagementDataContext context, S_IsolationManageBill isolation, string flag, out string error) { error = null; MaterialRequisitionServer serverMaterialBill = new MaterialRequisitionServer(); try { string strBillID = m_assignBill.AssignNewNo(serverMaterialBill, CE_BillTypeEnum.领料单.ToString()); var varIsolation = from a in context.S_IsolationManageBill where a.DJH == isolation.DJH select a; S_IsolationManageBill lnqNewIsolation = new S_IsolationManageBill(); if (varIsolation.Count() != 1) { error = "数据不唯一或者为空"; return(false); } else { lnqNewIsolation = varIsolation.Single(); } #region 领料总单 S_MaterialRequisition lnqMater = new S_MaterialRequisition(); lnqMater.Bill_Time = ServerTime.Time; lnqMater.Bill_ID = strBillID; lnqMater.BillStatus = "已出库"; lnqMater.Department = "ZK"; lnqMater.DepartmentDirector = ""; lnqMater.DepotManager = ""; lnqMater.FetchCount = 0; lnqMater.FetchType = "零星领料"; lnqMater.FillInPersonnel = flag == "废弃数" ? "陈岁年" : UniversalFunction.GetPersonnelName(lnqNewIsolation.JYRY); //质管部要求[废弃数]变更编制人为陈岁年 2012.3.15 lnqMater.FillInPersonnelCode = flag == "废弃数" ? "0621" : lnqNewIsolation.JYRY; //质管部要求[废弃数]变更编制人为陈岁年 2012.3.15 lnqMater.OutDepotDate = ServerTime.Time; lnqMater.ProductType = ""; lnqMater.PurposeCode = UniversalFunction.GetPurpose(CE_PickingPurposeProperty.破坏性检测).Code; lnqMater.Remark = flag == "废弃数" ? "不合格品隔离处置单废弃处理,关联的隔离单号: " + isolation.DJH : "不合格品隔离处置单检测报废,关联的隔离单号: " + isolation.DJH; lnqMater.StorageID = isolation.StorageID; lnqMater.AssociatedBillNo = ""; lnqMater.AssociatedBillType = ""; if (!serverMaterialBill.AutoCreateBill(context, lnqMater, out error)) { return(false); } #endregion #region 领料单明细 S_MaterialRequisitionGoods lnqMaterGoods = new S_MaterialRequisitionGoods(); var varMaterialStock = from a in context.S_Stock where a.GoodsID == isolation.GoodsID && a.BatchNo == isolation.BatchNo && a.StorageID == isolation.StorageID && a.Provider == isolation.Provider select a; S_Stock lnqStock = new S_Stock(); if (varMaterialStock.Count() != 1) { error = "数据不唯一或者为空"; return(false); } else { lnqStock = varMaterialStock.Single(); } lnqMaterGoods.BasicCount = 0; lnqMaterGoods.BatchNo = isolation.BatchNo; lnqMaterGoods.Bill_ID = strBillID; lnqMaterGoods.GoodsID = (int)isolation.GoodsID; lnqMaterGoods.ProviderCode = isolation.Provider; lnqMaterGoods.RealCount = flag == "废弃数" ? isolation.QC_FQS : isolation.QC_BFS; lnqMaterGoods.Remark = flag == "废弃数" ? "不合格品隔离处置单废弃处理,关联的隔离单号: " + isolation.DJH : "不合格品隔离处置单检测报废,关联的隔离单号: " + isolation.DJH; lnqMaterGoods.RequestCount = flag == "废弃数" ? isolation.QC_FQS : isolation.QC_BFS; lnqMaterGoods.ShowPosition = 1; MaterialRequisitionGoodsServer serverMaterialGoods = new MaterialRequisitionGoodsServer(); if (!serverMaterialGoods.AutoCreateGoods(context, lnqMaterGoods, out error)) { return(false); } context.SubmitChanges(); #endregion serverMaterialBill.OpertaionDetailAndStock(context, lnqMater); context.SubmitChanges(); m_assignBill.UseBillNo(CE_BillTypeEnum.领料单.ToString(), strBillID); return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 提交信息至数据库,按流程更新单据状态 /// </summary> /// <param name="needBillStatus">要求的单据状态</param> /// <param name="isolation">单据信息</param> /// <param name="error">出现错误时返回的错误信息,没有错误返回null</param> /// <returns>操作是否成功的标志</returns> public bool UpdateBill(string needBillStatus, S_IsolationManageBill isolation, out string error) { error = null; DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; dataContxt.Connection.Open(); dataContxt.Transaction = dataContxt.Connection.BeginTransaction(); try { var varData = from a in dataContxt.S_IsolationManageBill where a.DJH == isolation.DJH select a; if (varData.Count() != 1) { error = "记录不唯一"; return(false); } else { S_IsolationManageBill lnqIsolation = varData.Single(); if (lnqIsolation.DJZT != needBillStatus) { error = "单据当前状态为 [" + lnqIsolation.DJZT + "] 与要求的单据状态 [" + needBillStatus + "] 不一致"; return(false); } if (lnqIsolation.DJZT != isolation.DJZT) { error = "单据状态错误,请重新刷新单据确认单据状态"; return(false); } switch (lnqIsolation.DJZT) { case "等待隔离原因": lnqIsolation.IsolateMeansAndAsk = isolation.IsolateMeansAndAsk; lnqIsolation.IsolateReason = isolation.IsolateReason; if (isolation.IsOutsourcing) { lnqIsolation.DJZT = "等待领料"; } else { lnqIsolation.DJZT = "等待主管审核"; } lnqIsolation.QERQ = ServerTime.Time; lnqIsolation.QERY = BasicInfo.LoginID; lnqIsolation.IsOutsourcing = isolation.IsOutsourcing; break; case "等待主管审核": lnqIsolation.DJZT = "等待仓管调出"; lnqIsolation.SHRY = BasicInfo.LoginID; lnqIsolation.SHRQ = ServerTime.Time; break; case "等待仓管调出": lnqIsolation.DJZT = "等待处理结果"; lnqIsolation.DCRY = BasicInfo.LoginID; lnqIsolation.DCRQ = ServerTime.Time; break; case "等待处理结果": lnqIsolation.DJZT = "等待质检结果"; lnqIsolation.CLRY = BasicInfo.LoginID; lnqIsolation.CLRQ = ServerTime.Time; lnqIsolation.RejectMode = isolation.RejectMode; lnqIsolation.SQE_BHGS = isolation.SQE_BHGS; lnqIsolation.SQE_CLGS = isolation.SQE_CLGS; lnqIsolation.SQE_HGS = isolation.SQE_HGS; break; case "等待质检结果": lnqIsolation.DJZT = "等待质管主管确认"; lnqIsolation.JYRY = BasicInfo.LoginID; lnqIsolation.JYRQ = ServerTime.Time; lnqIsolation.QC_FQS = isolation.QC_FQS; lnqIsolation.QC_BFS = isolation.QC_BFS; lnqIsolation.QC_HGS = isolation.QC_HGS; lnqIsolation.QC_RBS = isolation.QC_RBS; lnqIsolation.QC_THS = isolation.QC_THS; break; case "等待质管主管确认": if (isolation.QC_THS > 0) { lnqIsolation.DJZT = "等待采购退货"; } else { lnqIsolation.DJZT = "等待仓管调入"; } lnqIsolation.QRRY = BasicInfo.LoginID; lnqIsolation.QRRQ = ServerTime.Time; lnqIsolation.QRSM = isolation.QRSM; break; case "等待仓管调入": if (lnqIsolation.DJZT == "单据已完成") { error = "单据不能重复确认"; return(false); } lnqIsolation.DJZT = "单据已完成"; lnqIsolation.DRRY = BasicInfo.LoginID; lnqIsolation.DRRQ = ServerTime.Time; if (!m_serverStore.ChangeStockStatus(dataContxt, isolation, 0, out error)) { return(false); } if ((decimal)lnqIsolation.QC_FQS > 0) { if (!CreateMeterialRequisition(dataContxt, isolation, "废弃数", out error)) { return(false); } } if ((decimal)lnqIsolation.QC_BFS > 0) { if (!CreateMeterialRequisition(dataContxt, isolation, "报废数", out error)) { return(false); } } break; case "单据已完成": lnqIsolation.RejectMode = isolation.RejectMode; lnqIsolation.SQETHRY = BasicInfo.LoginID; lnqIsolation.SQETHRQ = ServerTime.Time; break; default: break; } } dataContxt.SubmitChanges(); dataContxt.Transaction.Commit(); } catch (Exception ex) { error = ex.Message; dataContxt.Transaction.Rollback(); return(false); } return(true); }
/// <summary> /// 提交单据(可重复完成) /// </summary> /// <param name="isolation">不合格品隔离处置单信息</param> /// <param name="flag">标志 True 等待隔离原因 False 等待主管审核</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>操作成功返回True,操作失败返回False</returns> public bool UpdateBill(S_IsolationManageBill isolation, bool flag, out string error) { error = null; DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; try { if (isolation.DJZT == "新建单据") { if (!InsertNewDate(isolation, out error)) { return(false); } } var varData = from a in dataContxt.S_IsolationManageBill where a.DJH == isolation.DJH select a; if (varData.Count() != 1) { error = "记录不唯一"; return(false); } else { S_IsolationManageBill lnqIsolation = varData.Single(); lnqIsolation.DJZT = flag == true ? "等待隔离原因": "等待主管审核"; lnqIsolation.Amount = isolation.Amount; lnqIsolation.GoodsID = isolation.GoodsID; lnqIsolation.BatchNo = isolation.BatchNo; lnqIsolation.StorageID = isolation.StorageID; lnqIsolation.Provider = isolation.Provider; if (!flag) { lnqIsolation.IsolateMeansAndAsk = isolation.IsolateMeansAndAsk; lnqIsolation.IsolateReason = isolation.IsolateReason; } lnqIsolation.CLBM = isolation.CLBM; lnqIsolation.LRRY = BasicInfo.LoginID; lnqIsolation.LRRQ = ServerTime.Time; lnqIsolation.QC_FQS = 0; lnqIsolation.QC_BFS = 0; lnqIsolation.QC_HGS = 0; lnqIsolation.QC_RBS = 0; lnqIsolation.QC_THS = 0; lnqIsolation.SQE_BHGS = 0; lnqIsolation.SQE_CLGS = 0; lnqIsolation.SQE_HGS = 0; lnqIsolation.SHRQ = null; lnqIsolation.SHRY = null; lnqIsolation.DCRQ = null; lnqIsolation.DCRY = null; lnqIsolation.DRRQ = null; lnqIsolation.DRRY = null; lnqIsolation.CLRQ = null; lnqIsolation.CLRY = null; lnqIsolation.JYRQ = null; lnqIsolation.JYRY = null; lnqIsolation.SQETHRQ = null; lnqIsolation.SQETHRY = null; dataContxt.SubmitChanges(); } return(true); } catch (Exception ex) { error = ex.Message; return(false); } }