消費税マスタの作成案!

, , , , ,

上がってほしくない消費税、ですが10%に上がってしまいます。
お客様のシステムで時々あるのですが、昔はそうそうに上がらなかった消費税のため固定や直接指定されているシステムがあったりします。
この機会に汎用的な運用に切り替えるのはいかがでしょう?!

【利点】
・過去の消費税の期間が分かる!
・未来の消費税を前もって登録できる!(消費税変更日に張り付いて変更なんてしなくても大丈夫!)
・軽減税率のように複数の消費税登録時に複数表示が可能になる!

 今回は簡単に作成!消費税マスタ、応用編は簡易経過措置付き★のご紹介!

今回の経過措置は4/1前までの契約の場合は8%
それ以降で、10/1を超えた契約は10%計算です!きゃーーー

<豆知識という名のメモ!>経過措置とは?

企業だと長いスパンでの契約があるかと思います。消費税8%だった時に契約したのに完了時&支払時は10%という時の消費税をどうするか!という決まりだそうです。
ですが、経過措置が適用される契約とされない契約があるそうですのでご注意を!今回のファイルには契約の判別を備え付けておりませんのであしからず!
 詳しくは国税庁のHPで! http://www.nta.go.jp/index.htm
消費税率等の引上げについて(平成31年(2019年)10月1日~)あたりを参照です。(2019年5月情報)

.

見本のファイルはこちら>>ダウンロードファイル
.

★初級レシピ

 マスターに登録した消費税を、どんなレイアウトでもドロップダウンで取得しよう!
★初級1:ドロップダウン表示・・・簡単に表示非表示が行われてなんて便利!
★初級2:表示順指定しちゃうぞ!・・・表示非表示しつつ、選択もしやすくなっちゃう!

①データーベース

【消費税マスタ】
・表示順
・消費税
・消費税開始日
・消費税終了日
・削除フラグ
・表示順
・経過措置開始日(応用編で使用)
・経過措置施行日(応用編で使用)

【システムマスタ】
・ct_1 ...どこでも使えるようにグローバルフィールド

①-1)マスターテーブルの登録方法
消費税情報を登録していきます。
・消費税率を数字で入力、消費税の開始日、終了日の登録を行います。
 開始日終了日を入れることで、事前に消費税の登録が可能に!
・「表示順」は★初級2のドロップダウンリストのソート用です。
・削除フラグチェックのために、消費税0を作成。
・経過措置は応用編にて。

①-2)リレーションシップを作成します
ここで削除フラグとシステムマスターを連結!

削除フラグが1になったものは表示されなくなるようにします。

②値一覧の作成

★初級1ドロップダウン用の値一覧を作成します
名称は「Ci_消費税_フィールド設定」
消費税フィールドを選択し、ここで「次のテーブルから関連レコードの値のみ含める」でシステムマスタ(M0000_System)を選択します。

★初級2ドロップダウン用の値一覧を作成します
名称は「Ci_消費税_ソート」
初級1と同じ設定をしたら、2番目のフィールドを指定し、「2番目のフィールドのみ表示」にチェック。

③レイアウト設定

 フィールドに設定します
 ★初級1ではドロップダウンリストに「Ci_消費税_フィールド設定」
 インスペクタのデータ書式設定でパーセントにしておきます。

 ★初級2ではポップアップメニューで「Ci_消費税_ソート」にします。
 こちらは計算式で%表示するように設定しているので書式設定は不要です。

⑤完成

これで完成です。簡単!簡易!

★応用編レシピ

ここからは応用編!ちょっと難しくなります。タイトルをクリック!

★応用編3レシピ
 スクリプトで取得!現在の日付から判別し、最新の消費税を取得しちゃう!

スクリプト

 既存のスクリプトに設定しやすいように、新規作成スクリプトをかませています。
 メインスクリプトは「T_消費税_シンプル」
 ・消費税マスタを開始日と終了日で検索し、結果の消費税を返すだけです。

 ・受け取った返却値を作成したレコードの消費税にセット!
これで完成です。!

サンプルファイルの新規ボタンを押下して見ましょう!

★応用編4レシピ
 検索の応用です!
 マスターテーブルの経過措置フィールドがここで使用されます

スクリプト設定

 ・契約日は必須になります。
 ・前回の消費税検索でget(日付)で行っていたのを契約日で検索するように変更します。
 ・検索内容は応用編3のレシピとほぼ一緒です。ソートは開始日に変更して、対象のデータを取得。

 ・取得したデータの最初の行を変数にセットして順番にチェックしていきます。
 ・経過措置前の場合は取得した消費税、後の場合は納品日の日付で消費税の取得を行ってます。

 ・納品日は必須ではないです。その場合は契約日の時点の消費税を返します。
 

サンプルファイルの契約日、納品日を変更して、経過措置ボタンを押下して見ましょう!

もっと応用アドバイス
・応用編4をもっとシンプルにしたい!汎用的にしたい!
  という場合は引数を使って、検索スクリプトを分けてしまいましょう!
  引数は日付です。受け取り側は変数にセットしましょう。

・関数が使える方 難易度高め★★★
 アドバンスド機能が使える事前提ですが、関数を作成しちゃいましょう!
 そうすることで、フィールドの計算式で「=税抜金額 * 0.08」と記入しているものに対し「=税抜金額 * gettax(契約日)」と直すだけで、消費税を取得する関数を作成できます。
  今回のソースの場合関数の中身はこんな感じになります。
 Let ( [
%日付=Get(日付);
%一覧 = ExecuteSQL ( "SELECT M0100.\"Fd_経過措置_指定日\"
, M0100.\"Fd_経過措置_施行日\"
, M0100.\"Fn_消費税\"
FROM \"M0100_tax\" AS M0100
WHERE M0100.\"Fd_開始日\" <= ?
AND M0100.\"Fn_削除Fg\" is null
order by M0100.\"Fd_開始日\" desc"
;"¶"; "¶" ;%日付);

$開始日 = GetValue ( %一覧 ; 1);
$終了日 = GetValue ( %一覧 ; 2);
$消費税 = GetValue ( %一覧 ; 3)
<!---- チェック処理省略 --->
];
$消費税
)