Skontovorschläge: ungültige Steuer-Zeilen aus acc_trans ignorieren
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 19 Mar 2020 12:15:59 +0000 (13:15 +0100)
committerMoritz Bunkus <m.bunkus@linet.de>
Thu, 6 Aug 2020 12:55:24 +0000 (14:55 +0200)
Buchungen in acc_trans, die das Steuer-Konto ansprechen (also eines,
bei dem chart_link AR_tax oder AP_tax enthält), haben oftmals eine
ungültige Kombination aus taxkey & tax_id (ungültig im Sinne von:
diese Kombination gibt's in der Tabelle tax nicht).

Für Skontoberechnung sind solche Zeilen aber irrelevant. Also sie
einfach überspringen und nicht sterben.

SL/DB/Helper/Payment.pm

index 2cf8db9..dfc5b79 100644 (file)
@@ -483,6 +483,12 @@ sub check_skonto_configuration {
   foreach my $transaction (@{ $self->transactions }) {
     # find all transactions with an AR_amount or AP_amount link
     my $tax = SL::DB::Manager::Tax->get_first( where => [taxkey => $transaction->taxkey, id => $transaction->tax_id ]);
+
+    # acc_trans entries for the taxes (chart_link == A[RP]_tax) often
+    # have combinations of taxkey & tax_id that don't exist in
+    # tax. Those must be skipped.
+    next if !$tax && ($transaction->chart_link !~ m{A[RP]_amount});
+
     croak "no tax for taxkey " . $transaction->{taxkey} unless ref $tax;
 
     $transaction->{chartlinks} = { map { $_ => 1 } split(m/:/, $transaction->chart_link) };