Skip to content

Instantly share code, notes, and snippets.

@twada
Last active August 4, 2021 01:50
Show Gist options
  • Save twada/4024ab0b4a385380921aaaa223772f4c to your computer and use it in GitHub Desktop.
Save twada/4024ab0b4a385380921aaaa223772f4c to your computer and use it in GitHub Desktop.

軽減税率の世界

平成31年(2019年)10月1日から、消費税及び地方消費税の税率が 8% から 10% に引き上げられると同時に、消費税の軽減税率制度が実施されます。軽減税率が適用されるのは飲食料品と新聞です。飲食料品は、「食品表示法に規定する食品」(酒税法に規定する酒類を除く)です。

参考

今回はこの軽減税率をテーマとして演習を行います。

なお、本演習は TDD を体験することを主眼としていますので、 プログラミングの速さを競っているのではない 点にご注意ください。 機能を粗く速く実装することよりも、テストを書いて動かすことによるフィードバックを受けながら、 リファクタリングを忘れずに着実に進めていくことの方が、本演習では重要です。

短縮URL: https://bit.ly/2WRl2Dy

シナリオ0: (準備体操)軽減税率の対象であるかどうかを答える

商品が軽減税率の対象であるかどうかを答える機能をテスト駆動で作成しましょう

オロナミンC -> true
リポビタンD -> false

品目例

food 食料品 ※軽減税率対象
beverage 飲料品 ※軽減税率対象
liquor 酒類
drug 医薬品
quasi_drug 医薬部外品

商品例

手巻直火焼き紅しゃけ
食料品
税抜価格 139円

大きなおむすびマヨネーズ
食料品
税抜価格 186円

からあげ棒
食料品
税抜価格 114円

キリン 生茶 555ml ペットボトル
飲料品
税抜価格 140円

オロナミンC
飲料品
税抜価格 105円

キリンチューハイ氷結グレープフルーツ350ml缶
酒類
税抜価格 141円

ストロングゼロ〈ダブルグレープフルーツ〉350ml缶
酒類
税抜価格 141円

新ルルA錠s 50錠
医薬品
税抜価格 871円

リポビタンD
医薬部外品
税抜価格 146円

シナリオ1: 合計金額を求める

複数の商品をそれぞれ複数個購入し、税込の合計金額を求めましょう。

軽減対象商品の税率は 8%、軽減対象外の商品の税率は 10% です(端数は切り捨てとします)。

例1

「手巻直火焼き紅しゃけ(食料品)」を2個 => 税込300円
「キリンチューハイ氷結グレープフルーツ350ml缶(酒類)」を3本 => 税込465円
合計(税込) 765円

※ GUI/CUI は不要で、 765 という integer が返ってくれば OK です

例2

「大きなおむすびマヨネーズ(食料品)」を3個 => 税込602円
「キリン 生茶 555ml ペットボトル(飲料品)」を4本 => 税込604円
「新ルルA錠s50錠(医薬品)」を1瓶 => 税込958円
合計(税込) 2,164円

※ GUI/CUI は不要で、 2164 という integer が返ってくれば OK です

シナリオ2: 税率毎に合計した対価の額を記す

適格簡易請求書(小売業、飲食店業)においては、税率毎に合計した対価の額を記す必要があります

※ 引き続き GUI/CUI は不要です。どういう結果を返すべきかモデリングしましょう。

例1

「手巻直火焼き紅しゃけ(食料品)」を2個 => 税込300円
「キリンチューハイ氷結グレープフルーツ350ml缶(酒類)」を3本 => 税込465円
合計金額(税込) 765円
8% 対象商品合計金額(税込) 300円
内消費税額 22円
10% 対象商品合計金額(税込) 465円
内消費税額 42円

例2

「大きなおむすびマヨネーズ(食料品)」を3個 => 税込602円
「キリン 生茶 555ml ペットボトル(飲料品)」を4本 => 税込604円
「新ルルA錠s50錠(医薬品)」を1瓶 => 税込958円
合計(税込) 2,164円
8% 対象商品合計金額(税込) 1206円
内消費税額 88円
10% 対象商品合計金額(税込) 958円
内消費税額 87円

短縮URL: https://bit.ly/2WRl2Dy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment