From: Moritz Bunkus Date: Tue, 3 Sep 2019 12:25:51 +0000 (+0200) Subject: BankTransaction: keine Leerzeichen am Ende vom Verwendungszweck einfügen X-Git-Tag: release-3.5.6.1~492 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=699804db8dd6c5bf7a22ce17cc55c034ebc7e1ce;p=kivitendo-erp.git BankTransaction: keine Leerzeichen am Ende vom Verwendungszweck einfügen Wenn man mehrere Felder einfach mit `join(' ', @felder)` zusammenfügt, so entstehen nun mal ein Haufen Leerzeichen, auch wenn alle Felder selber leer sind. Das führt konkret beim Import von Banktransaktionen dazu, dass das Verwendungszweck-Feld, das aus den Feldern `purpose` (ohne Suffix) und `purpose1` bis `purpose13` gebildet wird, sehr viele Leerzeichen am Ende oder in der Mitte hat, wenn die Felder (größtenteils) nicht benutzt werden. Löscht auch bei bestehenden Positionen in der Datenbank Leerzeichen am Ende. Leerzeichen am Anfang oder in der Mitte werden hingegen nicht angefasst. --- diff --git a/SL/Controller/CsvImport/BankTransaction.pm b/SL/Controller/CsvImport/BankTransaction.pm index db22be063..8b5b5e702 100644 --- a/SL/Controller/CsvImport/BankTransaction.pm +++ b/SL/Controller/CsvImport/BankTransaction.pm @@ -175,20 +175,12 @@ sub join_purposes { my $object = $entry->{object}; - my $purpose = join(' ', $entry->{raw_data}->{purpose}, - $entry->{raw_data}->{purpose1}, - $entry->{raw_data}->{purpose2}, - $entry->{raw_data}->{purpose3}, - $entry->{raw_data}->{purpose4}, - $entry->{raw_data}->{purpose5}, - $entry->{raw_data}->{purpose6}, - $entry->{raw_data}->{purpose7}, - $entry->{raw_data}->{purpose8}, - $entry->{raw_data}->{purpose9}, - $entry->{raw_data}->{purpose10}, - $entry->{raw_data}->{purpose11}, - $entry->{raw_data}->{purpose12}, - $entry->{raw_data}->{purpose13} ); + my $purpose = + join ' ', + grep { ($_ // '') !~ m{^ *$} } + map { $entry->{raw_data}->{"purpose$_"} } + ('', 1..13); + $object->purpose($purpose); } diff --git a/sql/Pg-upgrade2/bank_transactions_nuke_trailing_spaces_in_purpose.sql b/sql/Pg-upgrade2/bank_transactions_nuke_trailing_spaces_in_purpose.sql new file mode 100644 index 000000000..8e9bb295b --- /dev/null +++ b/sql/Pg-upgrade2/bank_transactions_nuke_trailing_spaces_in_purpose.sql @@ -0,0 +1,6 @@ +-- @tag: bank_transactions_nuke_trailing_spaces_in_purpose +-- @description: Banktransaktionen: überflüssige Leerzeichen am Ende des Verwendungszwecks entfernen +-- @depends: release_3_5_4 +UPDATE bank_transactions +SET purpose = regexp_replace(purpose, ' +$', '') +WHERE purpose ~ ' +$';