示例#1
0
        //计算物料需求
        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;
            }
        }