質問します。10月1日に消費税がアップしましたが
その自己関数を下記の通り作成しました。一応思う通りの
動きはしますが、なんかダサいようで、もっとかっこの良い
関数式はございませんでしょうか。
ご教示お願いします。勉強したいと思います。
車庫証明申請代行手数料は10月1日より消費税は10%
普通申請
普通車 3240円→3300円
軽自動車 2160円→2200円
自社申請(例えばトヨタがトヨタで使用するため証明申請する場合)
普通車、軽自動車 1080円→1100円
再申請(申請したが不許可になって再度申請した場合)
普通車、軽自動車 1080円→1100円
(再申請はした場合TRUE 市内場合 FALSE)
(自社申請の場合 1 市内場合 0 )
Public Function tesuuryou(申請日, 普軽別, 再申請, 自社)
tesuuryou = Null
If IsNull(申請日) Then Exit Function
If 申請日 <= #9/30/2019# And 普軽別 = "普" And 再申請 = False And 自社 = 0 Then
tesuuryou = 3240
ElseIf 申請日 <= #9/30/2019# And 普軽別 = "軽" And 再申請 = False And 自社 = 0 Then
tesuuryou = 2160
ElseIf 申請日 >= #10/1/2019# And 普軽別 = "普" And 再申請 = False And 自社 = 0 Then
tesuuryou = 3300
ElseIf 申請日 >= #10/1/2019# And 普軽別 = "軽" And 再申請 = False And 自社 = 0 Then
tesuuryou = 2200
'再申請
ElseIf 申請日 <= #9/30/2019# And 普軽別 = "普" And 再申請 = True And (自社 = 1 Or 自社 = 0) Then
tesuuryou = 1080
ElseIf 申請日 >= #10/1/2019# And 普軽別 = "軽" And 再申請 = True And (自社 = 1 Or 自社 = 0) Then
tesuuryou = 1100
'自社
ElseIf 申請日 <= #9/30/2019# And (普軽別 = "普" Or 普軽別 = "軽") And (再申請 = True Or 再申請 = False) And 自社 = 1 Then
tesuuryou = 1080
ElseIf 申請日 >= #10/1/2019# And (普軽別 = "普" Or 普軽別 = "軽") And (再申請 = True Or 再申請 = False) And 自社 = 1 Then
tesuuryou = 1100
End If
End Function
単純に
tesuuryou = 基本料金 * 消費税
の形のほうが分かりやすいのでは?後は、せっかくACCESSを使っているのでデータはテーブルへ
・手数料テーブル(普軽別、再申請、自社、手数料)
・消費税テーブル(開始日、税率)
手数料テーブルの「手数料」は税抜き、消費税テーブルの「税率」は税率部分を整数入力想定です。(消費税10%なら整数で10)
hirotonさんさっそくご教示ありがとうございます。
なるほどですね。増税分はばっちり対応するようですね。
じつは9月30日以前の8%分も同じデータとして共存しなければなりません。
その場合は8%分の関数を作ってIIFで分けて使うのでしょうか。
ご教示お願いします。
hirotonさんのを参考にしますと、
消費税テーブルに税率の開始日をそれぞれ用意しておくことで対応できると思いますよ。
もし申請日が2019年9月30日の場合には、
により開始日は「2014/04/01」を取得することができ、
この部分で消費税8%を取得することができます。
9月に軽で再申請した市内、10月に普通で再申請した市内のパターンが抜けてる気がしまうが...ともかく。
テーブル構造を変えたくないのであれば以下でどうでしょうか。
※1円誤差とかその辺は全然考えてないです
※Intでいいんでしたっけ・・・
自分はプログラムの中に固定数値入れるな、と教わったので、
ほんというと手数料自体別テーブルに持って引っ張ったほうがいいんじゃないかと思うし、
消費税テーブルも作ったほうが、いいと思ってます。
手数料の変更や消費税がまた変わったなどの場合に、テーブル数値変えれば対応できますので。
hirotonさんTMGさん希望するかっこいい式です。
ありがとうございました。
また朱色さん参考にさせていただきます。
ありがとうございました。