Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 699804db

Von Moritz Bunkus vor etwa 5 Jahren hinzugefügt

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.

Unterschiede anzeigen:

SL/Controller/CsvImport/BankTransaction.pm
175 175

  
176 176
  my $object = $entry->{object};
177 177

  
178
  my $purpose = join(' ', $entry->{raw_data}->{purpose},
179
                         $entry->{raw_data}->{purpose1},
180
                         $entry->{raw_data}->{purpose2},
181
                         $entry->{raw_data}->{purpose3},
182
                         $entry->{raw_data}->{purpose4},
183
                         $entry->{raw_data}->{purpose5},
184
                         $entry->{raw_data}->{purpose6},
185
                         $entry->{raw_data}->{purpose7},
186
                         $entry->{raw_data}->{purpose8},
187
                         $entry->{raw_data}->{purpose9},
188
                         $entry->{raw_data}->{purpose10},
189
                         $entry->{raw_data}->{purpose11},
190
                         $entry->{raw_data}->{purpose12},
191
                         $entry->{raw_data}->{purpose13} );
178
  my $purpose =
179
    join ' ',
180
    grep { ($_ // '') !~ m{^ *$} }
181
    map  { $entry->{raw_data}->{"purpose$_"} }
182
    ('', 1..13);
183

  
192 184
  $object->purpose($purpose);
193 185

  
194 186
}
sql/Pg-upgrade2/bank_transactions_nuke_trailing_spaces_in_purpose.sql
1
-- @tag: bank_transactions_nuke_trailing_spaces_in_purpose
2
-- @description: Banktransaktionen: überflüssige Leerzeichen am Ende des Verwendungszwecks entfernen
3
-- @depends: release_3_5_4
4
UPDATE bank_transactions
5
SET purpose = regexp_replace(purpose, ' +$', '')
6
WHERE purpose ~ ' +$';

Auch abrufbar als: Unified diff