/// <summary> /// 获取装配信息 /// </summary> /// <param name="productCode">总成编码</param> /// <param name="applicable">适用范围</param> /// <returns>成功返回数据集失败返回错误信息</returns> public DataTable GetProductOrder(string productCode, CE_DebitScheduleApplicable applicable) { string sql = "select 零件编码,零件名称,规格 from View_BASE_ProductOrder" + " where 产品编码='" + productCode + "'and 适用范围 = '" + applicable.ToString() + "' order by 顺序位置"; return(GlobalObject.DatabaseServer.QueryInfo(sql)); }
/// <summary> /// 获取指定产品的排序数据 /// </summary> /// <param name="fetchType">领料类型</param> /// <param name="productCode">产品编码</param> /// <param name="applicable">适用范围</param> /// <param name="isDeletePackGoods">是否剔除整包发料的物品</param> /// <returns>返回获取到的数据</returns> public List <BASE_ProductOrder> GetAllDataList(FetchGoodsType fetchType, string productCode, CE_DebitScheduleApplicable applicable, bool isDeletePackGoods) { DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; var result = from r in dataContxt.BASE_ProductOrder where r.Edition == productCode && r.Applicable == applicable.ToString() select r; if (fetchType == FetchGoodsType.整台领料不含后补充) { result = from r in dataContxt.BASE_ProductOrder where r.Edition == productCode && r.Applicable == applicable.ToString() && r.OnceTheWholeIssue == true select r; } if (isDeletePackGoods) { result = from a in result where !(from b in dataContxt.F_GoodsAttributeRecord where b.AttributeID == (int)CE_GoodsAttributeName.整包发料 select b.GoodsID).Contains(a.GoodsID) select a; } return(result.OrderBy(k => k.Position).ToList()); }
/// <summary> /// 保存领料清单设置 /// </summary> /// <param name="code">产品型号</param> /// <param name="order">需要保存的信息</param> /// <param name="applicable">适用范围</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>保存成功返回True,保存失败返回False</returns> public bool SaveDate(string code, DataTable order, CE_DebitScheduleApplicable applicable, out string error) { error = null; DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; dataContxt.Connection.Open(); dataContxt.Transaction = dataContxt.Connection.BeginTransaction(); try { if (DeleteDate(dataContxt, code, applicable, out error)) { if (!InsertDate(dataContxt, order, applicable, out error)) { return(false); } } else { return(false); } dataContxt.Transaction.Commit(); return(true); } catch (Exception ex) { dataContxt.Transaction.Rollback(); error = ex.Message; return(false); } }
/// <summary> /// 获取整包发料的物品列表 /// </summary> /// <param name="productCode">产品编码</param> /// <param name="applicable">适用范围</param> /// <returns>返回获取到的数据</returns> public List <BASE_ProductOrder> GetPackGoodsList(string productCode, CE_DebitScheduleApplicable applicable) { DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; var result = from r in dataContxt.BASE_ProductOrder where r.Edition == productCode && r.Applicable == applicable.ToString() && (from b in dataContxt.F_GoodsAttributeRecord where b.AttributeID == (int)CE_GoodsAttributeName.整包发料 select b.GoodsID).Contains(r.GoodsID) select r; return(result.ToList()); }
bool 发料清单编制主界面_Form_CommonProcessSubmit(CustomFlowForm form, string advise) { try { List <View_S_DebitSchedule> listInfo = form.ResultInfo as List <View_S_DebitSchedule>; CE_FlowOperationType flowOperationType = GeneralFunction.StringConvertToEnum <CE_FlowOperationType>(form.ResultList[0].ToString()); string edition = form.ResultList[1].ToString(); CE_DebitScheduleApplicable applicable = GeneralFunction.StringConvertToEnum <CE_DebitScheduleApplicable>(form.ResultList[2].ToString()); switch (flowOperationType) { case CE_FlowOperationType.提交: m_findProductOrder.SaveInfo(listInfo, form.FlowInfo_BillNo, edition, applicable); m_findProductOrder.OperationInfo(listInfo, form.FlowInfo_BillNo, edition, applicable); break; case CE_FlowOperationType.暂存: m_findProductOrder.SaveInfo(listInfo, form.FlowInfo_BillNo, edition, applicable); break; case CE_FlowOperationType.回退: break; case CE_FlowOperationType.未知: break; default: break; } if (!m_findProductOrder.IsExist(form.FlowInfo_BillNo)) { MessageDialog.ShowPromptMessage("数据为空,保存失败,如需退出,请直接X掉界面"); return(false); } return(true); } catch (Exception ex) { MessageDialog.ShowPromptMessage(ex.Message); return(false); } }
/// <summary> /// 删除领用总成清单信息 /// </summary> /// <param name="context">数据上下文</param> /// <param name="code">产品型号</param> /// <param name="applicable">适用范围</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>删除成功返回True,删除失败返回False</returns> private bool DeleteDate(DepotManagementDataContext context, string code, CE_DebitScheduleApplicable applicable, out string error) { error = null; try { var varData = from a in context.BASE_ProductOrder where a.Edition == code && a.Applicable == applicable.ToString() select a; context.BASE_ProductOrder.DeleteAllOnSubmit(varData); context.SubmitChanges(); return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 添加领料清单信息 /// </summary> /// <param name="context">数据上下文</param> /// <param name="order">添加的数据信息</param> /// <param name="applicable">适用范围</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>添加成功返回True,添加失败返回False</returns> private bool InsertDate(DepotManagementDataContext context, DataTable order, CE_DebitScheduleApplicable applicable, out string error) { error = null; try { List <BASE_ProductOrder> lisOrder = new List <BASE_ProductOrder>(); if (order.Rows.Count == 0) { return(true); } else { for (int i = 0; i < order.Rows.Count; i++) { BASE_ProductOrder lnqOrder = new BASE_ProductOrder(); lnqOrder.Edition = order.Rows[i]["产品编码"].ToString(); lnqOrder.Applicable = applicable.ToString(); lnqOrder.GoodsID = Convert.ToInt32(order.Rows[i]["物品ID"]); lnqOrder.Redices = Convert.ToDecimal(order.Rows[i]["基数"].ToString()); lnqOrder.Position = Convert.ToInt32(order.Rows[i]["顺序位置"].ToString()); lnqOrder.OnceTheWholeIssue = Convert.ToBoolean(order.Rows[i]["一次性整台份发料"]); lisOrder.Add(lnqOrder); } context.BASE_ProductOrder.InsertAllOnSubmit(lisOrder); } context.SubmitChanges(); return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
void JudgeAssembly(DepotManagementDataContext ctx, List <View_S_DebitSchedule> listInfo, string edition, CE_DebitScheduleApplicable applicable) { if (applicable == CE_DebitScheduleApplicable.售后返修) { edition += " FX"; } bool isZero = true; foreach (View_S_DebitSchedule item in listInfo) { if (item.基数 > 0) { isZero = false; break; } } if (isZero) { var varData = from a in ctx.P_AssemblingBom where a.ProductCode == edition select a; if (varData.Count() > 0) { throw new Exception("【总成】:" + edition + " 存在于【装配BOM】中,请先清除此总成的【装配BOM】再删除"); } } }
/// <summary> /// 根据所属总成获得其领料清单 /// </summary> /// <param name="code">产品型号</param> /// <param name="applicable">适用范围</param> /// <returns>返回领料清单信息</returns> public DataTable GetAllData(string code, CE_DebitScheduleApplicable applicable) { string strSql = "select * from View_BASE_ProductOrder where 产品编码 = '" + code + "' and 适用范围 = '" + applicable.ToString() + "' order by 顺序位置"; return(GlobalObject.DatabaseServer.QueryInfo(strSql)); }
/// <summary> /// 提交发料清单 /// </summary> /// <param name="listInfo">清单明细</param> /// <param name="billNo">单号</param> /// <param name="edition">总成型号</param> /// <param name="applicable">适用范围</param> public void SaveInfo(List <View_S_DebitSchedule> listInfo, string billNo, string edition, CE_DebitScheduleApplicable applicable) { DepotManagementDataContext ctx = CommentParameter.DepotDataContext; ctx.Connection.Open(); ctx.Transaction = ctx.Connection.BeginTransaction(); IFlowServer serverFlow = FlowControlService.ServerModuleFactory.GetServerModule <IFlowServer>(); string billStatus = serverFlow.GetNextBillStatus(billNo); if (billStatus == null) { throw new Exception("单据状态为空,请重新确认"); } try { var varData = from a in ctx.S_DebitSchedule where a.BillNo == billNo select a; ctx.S_DebitSchedule.DeleteAllOnSubmit(varData); ctx.SubmitChanges(); foreach (View_S_DebitSchedule item in listInfo) { S_DebitSchedule templnq = new S_DebitSchedule(); templnq.BillNo = billNo; templnq.Edition = edition; templnq.Applicable = applicable.ToString(); templnq.GoodsID = item.物品ID; templnq.Redices = item.基数; templnq.OnceTheWholeIssue = item.一次性整台份发料; ctx.S_DebitSchedule.InsertOnSubmit(templnq); } ctx.SubmitChanges(); ctx.Transaction.Commit(); } catch (Exception ex) { ctx.Transaction.Rollback(); throw new Exception(ex.Message); } }
/// <summary> /// 操作 /// </summary> /// <param name="listInfo">清单明细</param> /// <param name="billNo">单号</param> /// <param name="edition">总成型号</param> /// <param name="applicable">适用范围</param> public void OperationInfo(List <View_S_DebitSchedule> listInfo, string billNo, string edition, CE_DebitScheduleApplicable applicable) { DepotManagementDataContext ctx = CommentParameter.DepotDataContext; ctx.Connection.Open(); ctx.Transaction = ctx.Connection.BeginTransaction(); try { IFlowServer serverFlow = FlowControlService.ServerModuleFactory.GetServerModule <IFlowServer>(); if (serverFlow.GetNextBillStatus(billNo) == ProductOrderListStatus.单据完成.ToString()) { var varOrder = from a in ctx.BASE_ProductOrder where a.Edition == edition && a.Applicable == applicable.ToString() select a; JudgeAssembly(ctx, listInfo, edition, applicable); ctx.BASE_ProductOrder.DeleteAllOnSubmit(varOrder); ctx.SubmitChanges(); int intOrder = 0; foreach (View_S_DebitSchedule item in listInfo) { if (item.基数 > 0) { BASE_ProductOrder order = new BASE_ProductOrder(); order.Edition = edition; order.Applicable = applicable.ToString(); order.GoodsID = item.物品ID; order.Redices = item.基数; order.OnceTheWholeIssue = item.一次性整台份发料; order.Position = ++intOrder; ctx.BASE_ProductOrder.InsertOnSubmit(order); } } ctx.SubmitChanges(); } ctx.Transaction.Commit(); } catch (Exception ex) { ctx.Transaction.Rollback(); throw new Exception(ex.Message); } }