Esempio n. 1
0
        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();
        }
Esempio n. 2
0
 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();
 }
Esempio n. 3
0
        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();
        }