예제 #1
0
        private decimal get_uriage(string in_cd)
        {
            decimal out_decimal;      //戻り値用

            decimal w_zeiritu;        //消費税率
            string  w_syouhizei_kbn;  //消費税算出区分
            decimal w_syouhizei_once; //消費税計算用一時的変数

            //消費税率の読み込み
            tss.try_string_to_date(tb_seikyu_simebi.Text);
            w_zeiritu = tss.get_syouhizeiritu(tss.out_datetime);

            //取引先毎の消費税算出区分の判断
            DataTable w_dt_torihikisaki = new DataTable();

            w_dt_torihikisaki = tss.OracleSelect("select * from tss_torihikisaki_m where torihikisaki_cd = '" + in_cd + "'");
            w_syouhizei_kbn   = w_dt_torihikisaki.Rows[0]["syouhizei_sansyutu_kbn"].ToString();

            //消費税算出区分毎の処理
            out_decimal = 0;
            if (w_syouhizei_kbn == "0")
            {
                //消費税は請求書毎
                //売上の算出
                DataTable w_dt = new DataTable();
                w_dt = tss.OracleSelect("select sum(uriage_kingaku) from tss_uriage_m where torihikisaki_cd = '" + in_cd + "' and TO_CHAR(uriage_simebi,'YYYY/MM/DD') = '" + tb_seikyu_simebi.Text + "'");
                if (w_dt.Rows.Count == 0)
                {
                    out_decimal = 0;
                }
                else
                {
                    out_decimal = tss.try_string_to_decimal(w_dt.Rows[0][0].ToString());
                    //sqlのsum分の場合、必ず1レコードできてしまい、該当データなかった場合の値がnullの為double型に変換できないので、その為の処理
                    if (out_decimal == -999999999)
                    {
                        out_decimal = 0;
                    }
                }
                //消費税の算出
                w_syouhizei = out_decimal * w_zeiritu;
                w_syouhizei = tss.hasu_keisan(in_cd, w_syouhizei);
            }
            if (w_syouhizei_kbn == "1")
            {
                //消費税は明細毎
                DataTable w_dt = new DataTable();
                w_dt = tss.OracleSelect("select * from tss_uriage_m where torihikisaki_cd = '" + in_cd + "' and uriage_simebi = '" + tb_seikyu_simebi.Text + "'");
                if (w_dt.Rows.Count == 0)
                {
                    out_decimal = 0;
                    w_syouhizei = 0;
                }
                else
                {
                    //1明細ずつ、合計と消費税を足す
                    out_decimal = 0;
                    w_syouhizei = 0;
                    foreach (DataRow dr in w_dt.Rows)
                    {
                        out_decimal = out_decimal + tss.try_string_to_decimal(dr["uriage_kingaku"].ToString());
                        //w_syouhizei_once = tss.try_string_to_double(dr["uriage_kingaku"].ToString()) * w_zeiritu;
                        //w_syouhizei = w_syouhizei + tss.hasu_keisan(in_cd, w_syouhizei_once);
                        w_syouhizei = w_syouhizei + tss.try_string_to_decimal(dr["syouhizeigaku"].ToString());
                    }
                }
            }
            if (w_syouhizei_kbn == "2")
            {
                //消費税は伝票毎(売上番号毎)
                DataTable w_dt = new DataTable();
                w_dt = tss.OracleSelect("select sum(uriage_kingaku) from tss_uriage_m where torihikisaki_cd = '" + in_cd + "' and uriage_simebi = '" + tb_seikyu_simebi.Text + "' group by uriage_no");
                if (w_dt.Rows.Count == 0)
                {
                    out_decimal = 0;
                    w_syouhizei = 0;
                }
                else
                {
                    //1売上番号ずつ、合計と消費税を足す
                    out_decimal = 0;
                    w_syouhizei = 0;
                    foreach (DataRow dr in w_dt.Rows)
                    {
                        out_decimal      = out_decimal + tss.try_string_to_decimal(dr[0].ToString());
                        w_syouhizei_once = tss.try_string_to_decimal(dr[0].ToString()) * w_zeiritu;
                        w_syouhizei      = w_syouhizei + tss.hasu_keisan(in_cd, w_syouhizei_once);
                    }
                }
            }
            return(out_decimal);
        }