private void btn_seikyu_preview_Click(object sender, EventArgs e) { //請求書印刷 if (tss.User_Kengen_Check(2, 9) == false) { MessageBox.Show("権限がありません"); return; } frm_seikyu_preview frm_skm = new frm_seikyu_preview(); frm_skm.ShowDialog(this); frm_skm.Dispose(); }
private void btn_seikyu_preview_Click(object sender, EventArgs e) { if (tss.User_Kengen_Check(2, 9) == false) { MessageBox.Show("権限がありません"); return; } //請求書印刷 frm_seikyu_preview frm_skm = new frm_seikyu_preview(); frm_skm.ShowDialog(this); frm_skm.Dispose(); }
private void btn_syuukei_Click(object sender, EventArgs e) { if (tss.User_Kengen_Check(2, 5) == false) { MessageBox.Show("権限がありません"); return; } tss.GetUser(); //集計 if (chk_seikyu_simebi() == false) { MessageBox.Show("請求締日に異常があります。"); return; } if (chk_torihikisaki_cd_hani() == false) { MessageBox.Show("取引先コードの範囲指定が正しくありません。"); return; } //売上マスタから、該当する締日のレコードを抽出し、取引先コードのリスト作成する DataTable w_dt_torihikisaki = new DataTable(); w_dt_torihikisaki = tss.OracleSelect("select torihikisaki_cd from tss_uriage_m where TO_CHAR(uriage_simebi,'YYYY/MM/DD') = '" + tb_seikyu_simebi.Text + "' and torihikisaki_cd >= '" + tb_torihikisaki_cd1.Text.ToString() + "' and torihikisaki_cd <= '" + tb_torihikisaki_cd2.Text.ToString() + "' group by torihikisaki_cd"); DataTable w_dt_torihikisaki2 = new DataTable(); //対象締日に売り上げがなかった場合 //画面の請求締日から1か月前の締日を求め、1カ月前の締めレコードがあったら対象にする DataTable w_dt = new DataTable(); DateTime w_datetime; DataTable w_dt_simebi = new DataTable(); string date; //締日 //入力された締日が、末日かどうかのチェック tss.try_string_to_date(tb_seikyu_simebi.Text.ToString()); w_datetime = tss.out_datetime; DateTime w_datetime2 = new DateTime(w_datetime.Year, w_datetime.Month, DateTime.DaysInMonth(w_datetime.Year, w_datetime.Month));; //末日を入れる変数 if (w_datetime == w_datetime2) { //末尾なら99 date = "99"; } else { //末尾でないなら、入力された日付の日 date = (tb_seikyu_simebi.Text.ToString()).Substring(8); } //当月の売り上げはないが、締日のdayを取出し、請求締日条件に一致する取引先で、売掛残高があるリストを抽出 //取引先マスタの入金未完了の金額を求めて繰越額にする w_dt_torihikisaki2 = tss.OracleSelect("select torihikisaki_cd from tss_torihikisaki_m where torihikisaki_cd >= '" + tb_torihikisaki_cd1.Text.ToString() + "' and torihikisaki_cd <= '" + tb_torihikisaki_cd2.Text.ToString() + "' and misyori_nyukingaku != 0 and seikyu_sime_date = '" + date + "'"); //tss.try_string_to_date(tb_seikyu_simebi.Text.ToString()); //w_datetime = tss.out_datetime.AddMonths(-1); //1か月前 //w_dt_simebi = tss.OracleSelect("select * from tss_torihikisaki_m where torihikisaki_cd >= '" + tb_torihikisaki_cd1.Text.ToString() + "' and torihikisaki_cd <= '" + tb_torihikisaki_cd2.Text.ToString() + "'"); //if (w_dt_simebi.Rows[0]["seikyu_sime_date"].ToString() == "99") //{ // w_datetime = new DateTime(w_datetime.Year, w_datetime.Month, DateTime.DaysInMonth(w_datetime.Year, w_datetime.Month)); //末日を求める //} //当月の売り上げはないが、1カ月前の締めレコードがあるリスト //w_dt_torihikisaki2 = tss.OracleSelect("select torihikisaki_cd from tss_urikake_m where torihikisaki_cd >= '" + tb_torihikisaki_cd1.Text.ToString() + "' and torihikisaki_cd <= '" + tb_torihikisaki_cd2.Text.ToString() + "' and uriage_simebi = '" + w_datetime.ToShortDateString() + "'"); //売上があった取引先リストと結合 w_dt_torihikisaki.Merge(w_dt_torihikisaki2); if (w_dt_torihikisaki.Rows.Count == 0) { MessageBox.Show("指定した条件に当てはまるデータがありません"); return; } //取引先コード毎に集計を行い、売掛レコードを作成する DataTable w_dt_urikake = new DataTable(); //売掛マスタの既存レコード確認用 string w_urikake_no; //売掛マスタの既存レコードの請求番号退避用 DataTable w_dt_uriage = new DataTable(); //顧客毎の売上マスタ用 foreach (DataRow dr in w_dt_torihikisaki.Rows) { //初期値リセット w_kurikosi = 0; w_uriage = 0; w_syouhizei = 0; w_nyukin = 0; w_zandaka = 0; w_seikyu = 0; //既に集計済みの場合は、その請求番号を退避させる(再利用する為) w_dt_urikake = tss.OracleSelect("select * from tss_urikake_m where torihikisaki_cd = '" + dr["torihikisaki_cd"].ToString() + "' and uriage_simebi = '" + tb_seikyu_simebi.Text + "'"); if (w_dt_urikake.Rows.Count > 0) { w_urikake_no = w_dt_urikake.Rows[0]["urikake_no"].ToString(); } else { w_urikake_no = ""; } //繰越金額 w_kurikosi = get_kurikosi(dr["torihikisaki_cd"].ToString()); //売上金額と消費税額 w_uriage = get_uriage(dr["torihikisaki_cd"].ToString()); //入金額 w_nyukin = get_nyukin(dr["torihikisaki_cd"].ToString()); //残高 w_zandaka = w_kurikosi + w_uriage + w_syouhizei - w_nyukin; //請求額 w_seikyu = w_uriage + w_syouhizei; //レコード書き込み if (w_urikake_no != "") { //既存のレコードを更新 //既存データの更新の場合、過去売上が訂正され売上額+消費税<>入金額になっている場合があるので、再度入金完了フラグを立て直す decimal w_chk_nyukingaku; //入金額 decimal w_chk_nyukingaku_sa; //入金額-売上-消費税 string w_nyukin_kanryou_flg; w_chk_nyukingaku = tss.try_string_to_decimal(w_dt_urikake.Rows[0]["nyukingaku"].ToString()); w_chk_nyukingaku_sa = w_chk_nyukingaku - w_uriage - w_syouhizei; if (w_chk_nyukingaku_sa == 0) { //入金完了 w_nyukin_kanryou_flg = "1"; } else { if (w_chk_nyukingaku_sa < 0) { //売上+消費税 > 入金額 w_nyukin_kanryou_flg = "0"; } else { //売上+消費税 < 入金額 //入金額を売上+消費税と同額にし、入金済みにして、残った入金額は取引先マスタへスプール w_nyukin_kanryou_flg = "1"; w_chk_nyukingaku = w_uriage + w_syouhizei; tss.OracleUpdate("update tss_torihikisaki_m set MISYORI_NYUKINGAKU = MISYORI_NYUKINGAKU + " + w_chk_nyukingaku.ToString() + " ,update_user_cd = '" + tss.user_cd + "',update_datetime = sysdate where torihikisaki_cd = '" + dr["torihikisaki_cd"].ToString() + "'"); } } tss.OracleUpdate("update tss_urikake_m set kurikosigaku = '" + w_kurikosi.ToString() + "',uriage_kingaku = '" + w_uriage.ToString() + "',syouhizeigaku = '" + w_syouhizei.ToString() + "',nyukingaku = '" + w_chk_nyukingaku.ToString() + "',nyukin_kanryou_flg = '" + w_nyukin_kanryou_flg + "',nyukingaku2 = '" + w_nyukin + "',urikake_zandaka = '" + w_zandaka.ToString() + "',update_user_cd = '" + tss.user_cd + "',update_datetime = sysdate where urikake_no = '" + w_urikake_no + "'"); } else { //新規 decimal w_no; w_no = tss.GetSeq("08"); w_urikake_no = w_no.ToString("0000000000"); tss.OracleInsert("insert into tss_urikake_m (torihikisaki_cd,uriage_simebi,kurikosigaku,uriage_kingaku,syouhizeigaku,nyukingaku,nyukin_kanryou_flg,nyukingaku2,urikake_zandaka,urikake_no,create_user_cd,create_datetime) values ('" + dr["torihikisaki_cd"].ToString() + "','" + tb_seikyu_simebi.Text + "','" + w_kurikosi.ToString() + "','" + w_uriage.ToString() + "','" + w_syouhizei.ToString() + "','0','0','" + w_nyukin.ToString() + "','" + w_zandaka.ToString() + "','" + w_urikake_no + "','" + tss.user_cd + "',sysdate)"); } //売上マスタの請求番号(urikake_no)を更新 tss.OracleUpdate("update tss_uriage_m set urikake_no = '" + w_urikake_no + "',update_user_cd = '" + tss.user_cd + "',update_datetime = sysdate where TO_CHAR(uriage_simebi,'YYYY/MM/DD') = '" + tb_seikyu_simebi.Text + "' and torihikisaki_cd = '" + dr["torihikisaki_cd"].ToString() + "'"); //最後に取引先マスタにスプールされた未処理入金額の消し込みを行う //入金処理の他に、なぜここでもやるのか? //この締め処理で、売上額の増減、新規レコードなどが作成される可能性があるので、全ての処理後に未処理入金額を処理する。 //そうしないと、未処理入金額を自動で処理するタイミングが他にない tss.urikake_kesikomi(dr["torihikisaki_cd"].ToString()); DialogResult result = MessageBox.Show("取引先:" + dr["torihikisaki_cd"].ToString() + " 請求番号:" + w_urikake_no.ToString() + " の請求書を発行しますか?", "確認", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { //請求書印刷 frm_seikyu_preview frm_skm = new frm_seikyu_preview(); frm_skm.in_urikake_no = w_urikake_no.ToString(); //frm_skm.in_torihikisaki_cd1 = tb_torihikisaki_cd1.Text; //frm_skm.in_torihikisaki_cd2 = tb_torihikisaki_cd2.Text; //frm_skm.in_simebi = tb_seikyu_simebi.Text; frm_skm.ShowDialog(this); frm_skm.Dispose(); } } MessageBox.Show("請求締め処理が完了しました。"); gamen_clear(); }