From 0c93bf2085b5cca69cb831fd90a50ed0ec6b8601 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Tue, 16 Aug 2016 11:27:35 +0200 Subject: [PATCH] Bankauszug: Unterzahlung mehrerer Rechnungen verhindern MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Wenn mehrere Rechnungen ausgewählt werden, so verteilt der Algorithmus schlicht den Betrag der Überweisungen auf die Rechnungen in der Reihenfolge, in der die Rechnungen ausgewählt wurden. Dabei wird so lange der volle offene Betrag bezahlt wie möglich, der Rest kommt auf die folgende Rechnung. Allerdings ist für das Programm nicht ersichtlich, welche Anteile welcher Rechnungen des Kunden/Lieferanten tatsächlich damit beglichen wurden. Also muss verhindert werden, dass das passiert; eine Warnung genügt nicht. --- SL/Controller/BankTransaction.pm | 11 +++++------ locale/de/all | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/SL/Controller/BankTransaction.pm b/SL/Controller/BankTransaction.pm index 1ad4d74f9..9f08263f8 100644 --- a/SL/Controller/BankTransaction.pm +++ b/SL/Controller/BankTransaction.pm @@ -481,6 +481,7 @@ sub save_single_bank_transaction { foreach my $invoice (@{ $data{invoices} }) { $n_invoices++ ; + # Check if bank_transaction already has a link to the invoice, may only be linked once per invoice # This might be caused by the user reloading a page and resending the form if (_existing_record_link($bank_transaction, $invoice)) { @@ -491,14 +492,12 @@ sub save_single_bank_transaction { }; } - if ($amount_of_transaction == 0) { - push @warnings, { + if (!$amount_of_transaction && $invoice->open_amount) { + return { %data, - result => 'warning', - message => $::locale->text('There are invoices which could not be paid by bank transaction #1 (Account number: #2, bank code: #3)!', - $bank_transaction->purpose, $bank_transaction->remote_account_number, $bank_transaction->remote_bank_code), + result => 'error', + message => $::locale->text("A payment can only be posted for multiple invoices if the amount to post is equal to or bigger than the sum of the open amounts of the affected invoices."), }; - last; } my $payment_type; diff --git a/locale/de/all b/locale/de/all index fef939df5..1d5897ae2 100755 --- a/locale/de/all +++ b/locale/de/all @@ -54,6 +54,7 @@ $self->{texts} = { 'A directory with the name for the new print templates exists already.' => 'Ein Verzeichnis mit dem selben Namen wie die neuen Druckvorlagen existiert bereits.', 'A lot of the usability of kivitendo has been enhanced with javascript. Although it is currently possible to use every aspect of kivitendo without javascript, we strongly recommend it. In a future version this may change and javascript may be necessary to access advanced features.' => 'Die Bedienung von kivitendo wurde an vielen Stellen mit Javascript verbessert. Obwohl es derzeit möglich ist, jeden Aspekt von kivitendo auch ohne Javascript zu benutzen, empfehlen wir es. In einer zukünftigen Version wird Javascript eventuell notwendig sein um weitergehende Features zu benutzen.', 'A lower-case character is required.' => 'Ein Kleinbuchstabe ist vorgeschrieben.', + 'A payment can only be posted for multiple invoices if the amount to post is equal to or bigger than the sum of the open amounts of the affected invoices.' => 'Eine Zahlung kann nur dann für mehrere Rechnungen verbucht werden, wenn die Zahlung gleich oder größer als die Summe der offenen Beträge der betroffenen Rechnungen ist.', 'A special character is required (valid characters: #1).' => 'Ein Sonderzeichen ist vorgeschrieben (gültige Zeichen: #1).', 'A transaction description is required.' => 'Die Vorgangsbezeichnung muss eingegeben werden.', 'A unit with this name does already exist.' => 'Eine Einheit mit diesem Namen existiert bereits.', @@ -3037,7 +3038,6 @@ $self->{texts} = { 'There are entries in tax where taxkey is NULL.' => 'In der Datenbank sind Steuern ohne Steuerschlüssel vorhanden (in der Tabelle tax Spalte taxkey).', 'There are invalid taxnumbers in use.' => 'Es werden ungültige Steuerautomatik-Konten benutzt.', 'There are invalid transactions in your database.' => 'Sie haben ungültige Buchungen in Ihrer Datenbank.', - 'There are invoices which could not be paid by bank transaction #1 (Account number: #2, bank code: #3)!' => 'Einige Rechnungen konnten nicht durch die Bankbewegung #1 (Kontonummer: #2, Bankleitzahl: #3) bezahlt werden!', 'There are no documents in the WebDAV directory at the moment.' => 'Es befinden sich im WebDAV-Verzeichnis momentan keine Dokumente.', 'There are no entries in the background job history.' => 'Es gibt keine Einträge im Hintergrund-Job-Verlauf.', 'There are no entries that match the filter.' => 'Es gibt keine Einträge, auf die der Filter zutrifft.', -- 2.20.1