//计算物料需求 private void btnJS_Click(object sender, EventArgs e) { try { this.Cursor = Cursors.WaitCursor; txtRemark.Focus(); gridView1.UpdateCurrentRow(); MaterialMRPPlanManage MaterialMRPPlanManage = new MaterialMRPPlanManage(); MaterialBOMManage MaterialBOMManage = new MaterialBOMManage(); bool IsExistBom = false; bool IsExistNoBom = false; //string strMaterialID = ""; //string strMaterialName = ""; //检查此客户订单产品是否已经BOM初始化子件情况了 for (int i = 0; i < gridView1.RowCount; i++) { DataRowView dr = (DataRowView)(gridView1.GetRow(i)); if (dr != null) { if (MaterialBOMManage.IsExistBOMByMaterialGuid(dr["MaterialGuID"].ToString()) == false) { IsExistNoBom = true; //strMaterialID = dr["MaterialID"].ToString(); //strMaterialName = dr["MaterialName"].ToString(); } else { IsExistBom = true; } if (IsExistBom == true && IsExistNoBom == true) { this.Cursor = Cursors.Arrow; this.ShowMessage("有BOM与无BOM的物料不能放在一起进行物料需求计算,请分开后再计算物料需求!"); return; } } } if (IsExistBom == true) { //全是BOM的料件计算 //删除临时表中待计算的料件 MaterialMRPPlanManage.DeleteSelectMaterial(txtMaterialMRPPlanGuid.Text); //先将选择的物料插入到临时表中,参与计算 for (int i = 0; i < gridView1.RowCount; i++) { DataRowView dr = (DataRowView)(gridView1.GetRow(i)); if (dr != null) { string strMaterialMRPPlanGuID = txtMaterialMRPPlanGuid.Text; string strMaterialGuid = dr["MaterialGuID"].ToString(); decimal decMaterialSum = 0; if (dr["YCMaterialSum"].ToString().Trim() != "") { decMaterialSum = decimal.Parse(dr["YCMaterialSum"].ToString()); } MaterialMRPPlanManage.InsertIntoSelectMaterial(strMaterialMRPPlanGuID, strMaterialGuid, decMaterialSum); } } //第一步:将产品折成最后的子件,子件数量 MaterialMRPPlanManage.CalcMaterialBomPlan2(txtMaterialMRPPlanGuid.Text); //将半成品与成品折成料件后,得出最后需要采购的料件,最后再反算出库存 DataTable dtl = MaterialMRPPlanManage.sp_Calc(txtMaterialMRPPlanGuid.Text); gridControl2.DataSource = dtl; tabControl1.SelectedIndex = 1; } else { //全是非BOM的料件计算 //删除临时表中待计算的料件 MaterialMRPPlanManage.DeleteSelectMaterial(txtMaterialMRPPlanGuid.Text); //先将选择的物料插入到临时表中,参与计算 for (int i = 0; i < gridView1.RowCount; i++) { DataRowView dr = (DataRowView)(gridView1.GetRow(i)); if (dr != null) { string strMaterialMRPPlanGuID = txtMaterialMRPPlanGuid.Text; string strMaterialGuid = dr["MaterialGuID"].ToString(); decimal decMaterialSum = 0; if (dr["YCMaterialSum"].ToString().Trim() != "") { decMaterialSum = decimal.Parse(dr["YCMaterialSum"].ToString()); } MaterialMRPPlanManage.InsertIntoSelectMaterial(strMaterialMRPPlanGuID, strMaterialGuid, decMaterialSum); } } //将半成品与成品折成料件后,得出最后需要采购的料件,最后再反算出库存 DataTable dtl = MaterialMRPPlanManage.sp_Calc_NoBOM(txtMaterialMRPPlanGuid.Text); gridControl2.DataSource = dtl; tabControl1.SelectedIndex = 1; //按物料编号排序 gridMaterialIDDetail.SortOrder = ColumnSortOrder.Ascending; } this.Cursor = Cursors.Arrow; } catch (Exception err) { this.ShowMessage("计算出错,信息:" + err.Message); this.Cursor = Cursors.Arrow; } }
//修改1 增加对BOM层级的领料 private void btnLevelDrawPlan_Click(object sender, EventArgs e) { if (cboLevel.Text.Trim() == "") { this.ShowMessage("请选择层级!"); cboLevel.Focus(); return; } try { this.Cursor = Cursors.WaitCursor; txtRemark.Focus(); gridView1.UpdateCurrentRow(); DrawPlanManage DrawPlanManage = new DrawPlanManage(); MaterialBOMManage MaterialBOMManage = new MaterialBOMManage(); bool IsExist = false; string strMaterialID = ""; string strMaterialName = ""; //检查此客户订单产品是否已经BOM初始化子件情况了 for (int i = 0; i < gridView1.RowCount; i++) { DataRowView dr = (DataRowView)(gridView1.GetRow(i)); if (dr != null) { if (MaterialBOMManage.IsExistBOMByMaterialGuid(dr["MaterialGuID"].ToString()) == false) { IsExist = true; strMaterialID = dr["MaterialID"].ToString(); strMaterialName = dr["MaterialName"].ToString(); break; } } } if (IsExist == true) { this.ShowMessage("物料编号:" + strMaterialID + ",名称:" + strMaterialName + " 的料件没有BOM,无法计算!"); return; } //删除临时表中待计算的料件 DrawPlanManage.DeleteSelectMaterial(txtDrawPlanGuid.Text); //先将选择的物料插入到临时表中,参与计算 for (int i = 0; i < gridView1.RowCount; i++) { DataRowView dr = (DataRowView)(gridView1.GetRow(i)); if (dr != null) { string strDrawPlanGuID = txtDrawPlanGuid.Text; string strMaterialGuid = dr["MaterialGuID"].ToString(); decimal decMaterialSum = 0; if (dr["YCMaterialSum"].ToString().Trim() != "") { decMaterialSum = decimal.Parse(dr["YCMaterialSum"].ToString()); } DrawPlanManage.InsertIntoSelectMaterial(strDrawPlanGuID, strMaterialGuid, decMaterialSum); } } //开始计算 DataTable dtl = DrawPlanManage.CalcMaterialDrawPlan3(txtDrawPlanGuid.Text, cboLevel.Text.Trim()); gridControl2.DataSource = dtl; tabControl1.SelectedIndex = 1; this.Cursor = Cursors.Arrow; } catch (Exception err) { this.ShowMessage("计算出错,信息:" + err.Message); this.Cursor = Cursors.Arrow; } }