質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.61%

複数回請求する際の税込金額の整合性について

解決済

回答 5

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,982

score 29

建設業の請求システムを実装しようとしています。
組立時 ○○%, 解体時 ○○% と、複数回請求するのですが、
税込金額の合算が小数点が発生したことにより1円分合わなくなることがあります。

例:
イメージ説明

これを何とか修正したいのですが、良い計算方法が見つかりません。
この問題は請求関連のシステムではよく起こるものだと思うのですが
皆さんはどう対処されているのでしょうか?
合計のあう計算方法があるのでしたら、ご教授ください。

【追記】
1円の差額が発生しているかをチェックして、あれば組立時に含めるといった
方法もあるかと思いますが、それは最終手段にしようかと思っています。
可能であれば、計算式ですっきりできればありがたいです。

【追記2】
今回の件ですが、社内システムなので融通はかなり効くようになっています。
そのため、組立時は切り上げ、解体時は切り捨てなどこちらで仕様を決めることができます。
私が知りたいこととしては、切り上げ、切捨て、四捨五入を使って下記の式が成り立つ計算方法を探しています。

税込金額=【請求金額】*【消費税】
組立金額=【請求金額】*【組立割合(%)】*【消費税】
解体金額=【請求金額】*【解体割合(%)】*【消費税】

これを請求金額がどのような値でも成り立つ計算方法を探しています。
税込金額=組立金額+解体金額

お手数ですが、お願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

checkベストアンサー

+5

まずは、国税庁のサイトを参照してください。
ホーム>税について調べる>タックスアンサー>消費税>税額計算のあらまし>No.6371 端数計算
No.6371 端数計算 
https://www.nta.go.jp/taxanswer/shohi/6371.htm
No.6383 課税標準額に対する消費税額の計算の特例 
https://www.nta.go.jp/taxanswer/shohi/6383.htm

この様な情報を参考にしつつ、
公認会計士、税理士さん、仕様策定者と相談
最終的には、使用者が選択、設定可能な様に実装すると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/14 19:30

    回答有難うございます。
    この情報は参考にさせていただきます。

    もし、仕様面以外にどのような計算式であれば、複数の請求があった場合の
    端数計算があうか教えていただければ助かります。

    キャンセル

  • 2016/04/14 21:06

    式を問う前に、紹介した処以外でも、法令、政令、通達の確認をしてください。
    ⇒なので、公認会計士、税理士、仕様策定者と相談と書いてあります。
     その上で、端数を計上するのかしないのか、
     計上するのであれば、どの様に行うのかは、選択できれば良いわけです。
     計上する場合に、1円端数をどの様に計上するかは、仕様の問題です。
    何故かというと、考え方の問題でもあるからです。
    Odacchiさんが、書かれている様な事が起きるのは、
    企業間の力関係も影響するからです。

    キャンセル

  • 2016/04/14 21:16 編集

    単純には、都度税額を計算するから、1円端数問題がでるので、
    税込み総額の決定金額から、税込み請求額を引いていけば、端数が残りますよね?
    確定時点で、仕様、設定により、適切な処理を行えば良いだけです。
    予め分割請求の回数が判明している場合も、企業間の取決めで、
    端数処理の方法まで、書かれているはずです。

    キャンセル

0

企業によりルールが異なるようで、小数点以下の取り扱いは、「切り捨て」「切り上げ」「四捨五入」かを請求書毎に設定できるような設計にするのがベターです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

私もエクセルで同じような社内での計算表を作っていたのですが、正直、経理担当の考え方次第で仕様が変わってきます。
携帯電話の利用料金をまとめていたのですが、キャリア各社で内税だったり、利用料は外税だけど電話本体の分割料金は内税だったり、国際電話は非課税だったり。
それを合計するわけですから、会社が払っている合計額とそれぞれ細分化した額に差額が出てくるのは仰るように当たり前に発生するのです。
結局私自身は、税法上、どうなっているのか不勉強でわからなかったのですが、経理担当に相談したところ端数は適当に割り振るという指示でしたので、最終合計額と実際の支払った額の差額を求めて、割り振ることが可能な項目に優先順位は特に意識せずに1円ずつ順番に割り振っていきました。
厳密に言うと社内の各部門に割り振られる経費に不公平が発生したので、問題がなかったわけではありません。
どうやっても数学的にルール化はできないと思うので、とにかくコンピュータ的にできる方法で作って社内のものであればあらかじめ社内のパワーバランス?をとれるようにネゴっておくのが重要かと思います。
計算手順をまとめますと、1件1件を切り捨てで計算し、実際と計算の差額を求め、なんらかの優先順位をつけておけば並べ替えて、上から差額がなくなるまで1円ずつ振っていくということになろうかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

要件定義で仕様をどのように決めるかに関しては他の人が回答してくださっているので省略するとして、
プログラミングで小数点以下(浮動小数点)を扱うと厳密な値が出ない場合があります。
これは基本的にコンピュータの数値計算が2進法を用いていることに起因する、言語共通の問題です。
(参考:http://dobon.net/vb/dotnet/beginner/floatingpointerror.html)

小数点以下を厳密に計算・積算するのであれば、それに特化したライブラリの使用が求められる場合があります。
計算に使用する言語がjavaであればBigDecimalクラス、phpだと
http://php.net/manual/ja/ref.bc.php このあたりでしょうか。

求められている回答に合致しているかわかりませんが、もし計算のずれがこのようなコンピュータ内部の浮動小数点計算に起因しているのであれば、上記のようなクラスライブラリを試してみてください。

ちなみに、javascriptでは全ての数値がNumber(浮動小数点)として扱われるので、javascript側で請求の厳密計算はできません。サーバーで計算したものを文字列で返してそのまま画面に描画するのがベターかと思われます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

組立時 ○○%, 解体時 ○○% と、複数回請求するのですが、 

「複数回」とは、組立時と解体時の2回だけでしょうか?

であれば、

税込金額=【請求金額】*【消費税】 
組立金額=何らかの計算式で税込金額から算出した金額
解体金額=【税込金額】-【組立金額】

`
が、最も簡単かつ確実な計算方法ではないでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る