オープンソースのERP iDempiereは、標準機能で"明細行単位の消費税額計算"と"伝票単位の消費税額計算"の両方が可能です。しかしながら、その税額計算の結果として保持する税額は税金情報マスタ(C_Tax_ID)単位にサマリーされています。そのため、明細行毎の消費税を把握したい場合は再計算が必要になります。
そこで、JPiereでは、明細行毎の消費税額を計算し、その結果も明細行に保持するようにカスタマイズしました。この事により、明細行毎の消費税額を簡単に確認する事ができます。
【注意】伝票単位の消費税額計算を行っている場合の注意点
消費税の計算上、"伝票単位で消費税額を計算する(伝票の合計金額に対して消費税額を計算する)"のと"明細単位で消費税額を計算する(明細毎に消費税額を計算し、その金額を合計する)"のとでは、端数処理の扱いにより消費税金額が異なる場合があります。
そのため、伝票単位で消費税額を計算する場合は、このカスタマイズで計算した明細単位の消費税額は、参考値として下さい。
カスタマイズ情報
追加エレメント
下記の2つのエレメントをC_OrderLineとC_InvoiceLineのそれぞれのテーブルに追加しています。
◆JP_TaxAmt(税額)
◆JP_TaxBaseAmt(課税標準額)
追加クラス
◆IJPiereTaxProviderFactory
◆JPiereBasePluginJPiereTaxProviderFactory
◆IJPiereTaxProvider
関連するクラス
◆JPiereTaxProvider
IJPiereTaxProviderをInterfaceクラスに追加し、既に実装してあったcalculateTax (MTax m_tax, BigDecimal amount, boolean taxIncluded, int scale, RoundingMode roundingMode) クラスをpublicにしました。
iDempiereの標準のTaxProviderと税額計算ロジックを共有する事により、税額計算の方法を統一させる事ができます。
◆JPiereOrderLineModelValidator
受注伝票明細/発注伝票明細の保存時に呼び出されて、明細単位の消費税額と課税標準額を計算し、JP_TaxAmtとJP_TaxBaseAmtに保存します。
◆JPiereInvoiceLineModelValidator
売上請求伝票明細/仕入請求伝票明細の保存時に呼び出されて、明細単位の消費税額と課税標準額を計算し、JP_TaxAmtとJP_TaxBaseAmtに保存します。