コード例 #1
0
        private void touroku()
        {
            bool    w_bl;
            decimal w_suryo;
            //在庫履歴書込み用の番号取得
            decimal w_rireki_no;
            int     w_sign;
            string  w_bikou;
            string  w_nyusyukko;

            if (rb_nyuuko.Checked == true)
            {
                w_rireki_no = tss.GetSeq("01");
                w_sign      = -1;
                w_nyusyukko = "入庫";
            }
            else
            {
                w_rireki_no = tss.GetSeq("02");
                w_sign      = 1;
                w_nyusyukko = "出庫";
            }
            int w_rireki_gyou;  //在庫履歴書込み用の行番号

            for (int i = 0; i < dgv_m.Rows.Count; i++)
            {
                w_rireki_gyou = i + 1;
                w_suryo       = tss.try_string_to_decimal(dgv_m.Rows[i].Cells[7].Value.ToString()) * w_sign;
                w_bikou       = "製品構成を使用した一括" + w_nyusyukko + " 製品CD:" + tb_seihin_cd.Text.ToString() + " 製品構成NO:" + tb_seihin_kousei_no.Text.ToString() + " 処理数:" + tb_suuryo.Text.ToString() + " 使用数:" + dgv_m.Rows[i].Cells[2].Value.ToString();
                w_bl          = tss.zaiko_proc(dgv_m.Rows[i].Cells[0].Value.ToString(), "01", "999999", "9999999999999999", "9999999999999999", w_suryo, w_rireki_no, w_rireki_gyou, w_bikou, "03", "999999", "9999999999999999", "9999999999999999");
                if (w_bl == false)
                {
                    MessageBox.Show("在庫の更新中にエラーが発生しました。データの整合性が崩れた可能性があります。確認してください。");
                }
            }
            MessageBox.Show("登録しました。");
            gamen_clear();
            tb_seihin_cd.Focus();
        }
コード例 #2
0
        private void zaiko_kousin(string in_cd, int in_sign)
        {
            //売上マスタの製品コードから製品マスタを参照し、
            //製品マスタの製品構成番号が入っていたら、製品構成マスタを読み込み、在庫マスタの加減を行い、部品入出庫履歴に書き込む

            DataTable w_dt  = new DataTable(); //更新対象の売上マスタ用
            DataTable w_dt2 = new DataTable(); //製品マスタ用
            DataTable w_dt3 = new DataTable(); //製品構成マスタ用
            DataTable w_dt4 = new DataTable(); //受注マスタの確認用
            int       w_uriage_flg;            //売上方法 0:受注の売上 1:製品を直接売上
            double    w_kagen_su;              //加減する数
            double    w_uriage_su;             //売上数
            double    w_siyou_su;              //使用数
            //在庫履歴書込み用の番号取得
            double w_rireki_no;

            if (in_sign >= 0)
            {
                w_rireki_no = tss.GetSeq("01");
            }
            else
            {
                w_rireki_no = tss.GetSeq("02");
            }
            int w_rireki_gyou = 1;  //在庫履歴書込み用の行番号

            w_dt = tss.OracleSelect("select * from tss_uriage_m where uriage_no = '" + in_cd + "'");
            foreach (DataRow dr in w_dt.Rows)
            {
                //受注の売上か製品の直接売上か判断する
                w_dt4 = tss.OracleSelect("select * from tss_juchu_m where torihikisaki_cd = '" + dr["torihikisaki_cd"].ToString() + "' and juchu_cd1 = '" + dr["juchu_cd1"].ToString() + "' and juchu_cd2 = '" + dr["juchu_cd2"].ToString() + "'");
                if (w_dt4.Rows.Count != 0)
                {
                    //レコードがあった=受注番号が入力された行
                    w_uriage_flg = 0;
                }
                else
                {
                    //レコードが無かった=製品を直接売り上げた行
                    w_uriage_flg = 1;
                }

                //製品マスタの読み込み
                w_dt2 = tss.OracleSelect("select * from tss_seihin_m where seihin_cd = '" + dr["seihin_cd"].ToString() + "'");
                if (w_dt2.Rows.Count >= 1)
                {
                    //製品構成番号が登録されていたら、製品構成マスタを読み込む
                    if (w_dt2.Rows[0]["seihin_kousei_no"].ToString() != null && w_dt2.Rows[0]["seihin_kousei_no"].ToString() != "")
                    {
                        w_dt3 = tss.OracleSelect("select * from tss_seihin_kousei_m where seihin_cd = '" + w_dt2.Rows[0]["seihin_cd"].ToString() + "' and seihin_kousei_no = '" + w_dt2.Rows[0]["seihin_kousei_no"].ToString() + "'");
                        if (w_dt3.Rows.Count >= 1)
                        {
                            foreach (DataRow dr3 in w_dt3.Rows)
                            {
                                //自分を親部品として登録されているレコードを検索し、なければ末端部品と判断し、在庫の加減をする
                                int w_oyako_flg = 0;    //0:末端部品(加減算対象) 1:親部品(加減算しない)
                                for (int i = 0; i < w_dt3.Rows.Count; i++)
                                {
                                    if (dr3["buhin_cd"].ToString() == w_dt3.Rows[i]["oya_buhin_cd"].ToString())
                                    {
                                        w_oyako_flg = 1;
                                        break;
                                    }
                                }
                                //自分に子部品が無ければ加減算する
                                if (w_oyako_flg == 0)
                                {
                                    //マイナス売上の場合はフリー在庫で処理する
                                    //通常売上の場合、受注売上の場合は、ロット在庫から加減し、足りない分はフリー在庫で処理する
                                    //製品の直接売上の場合はフリー在庫で処理する
                                    //全ての在庫処理において数量に変更が発生した場合は、部品入出庫履歴に書き込む→履歴テーブルが無いので今現在は履歴は残さない

                                    double.TryParse(dr["uriage_su"].ToString(), out w_uriage_su);
                                    double.TryParse(dr3["siyou_su"].ToString(), out w_siyou_su);
                                    w_kagen_su = w_uriage_su * w_siyou_su * in_sign;

                                    if (in_sign == -1 || w_uriage_flg == 1)
                                    {
                                        //マイナス売上または製品直接売上の場合はフリー在庫で調整
                                        if (tss.zaiko_proc(dr3["buhin_cd"].ToString(), "01", dr["torihikisaki_cd"].ToString(), "9999999999999999", "9999999999999999", w_kagen_su, w_rireki_no, w_rireki_gyou, in_cd) == false)
                                        {
                                            MessageBox.Show("在庫の消し込み処理でエラーが発生しました。処理を中止します。");
                                            this.Close();
                                        }
                                    }
                                    else
                                    {
                                        //そうでない場合は売上通りに在庫を調整
                                        if (tss.zaiko_proc(dr3["buhin_cd"].ToString(), "02", dr["torihikisaki_cd"].ToString(), dr["juchu_cd1"].ToString(), dr["juchu_cd2"].ToString(), w_kagen_su, w_rireki_no, w_rireki_gyou, in_cd) == false)
                                        {
                                            MessageBox.Show("在庫の消し込み処理でエラーが発生しました。処理を中止します。");
                                            this.Close();
                                        }
                                    }
                                    w_rireki_gyou = tss.ppt_gyou;
                                }
                            }
                        }
                    }
                }
            }
        }