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(); }
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; } } } } } } }