From d5478951258f808a1e458ebaebb8546e8db7cca4 Mon Sep 17 00:00:00 2001 From: subandi khairun Date: Tue, 8 Apr 2025 12:46:39 +0200 Subject: [PATCH] add tax_calculation_method :ITEM_BASED which changes tax amount validation to item based --- lib/secretariat/invoice.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/secretariat/invoice.rb b/lib/secretariat/invoice.rb index 2aa1047..e572145 100644 --- a/lib/secretariat/invoice.rb +++ b/lib/secretariat/invoice.rb @@ -113,7 +113,12 @@ def valid? @errors << "Base amount and summed tax base amount deviate: #{basis} / #{summed_tax_base_amount}" return false end - if tax_calculation_method != :NONE + if tax_calculation_method == :ITEM_BASED + line_items_tax_amount = line_items.sum(&:tax_amount) + if tax_amount != line_items_tax_amount + @errors << "Tax amount #{tax_amount} and summed up item tax amounts #{line_items_tax_amount} deviate" + end + elsif tax_calculation_method != :NONE taxes.each do |tax| calc_tax = tax.base_amount * BigDecimal(tax.tax_percent) / BigDecimal(100) calc_tax = calc_tax.round(2)