Revision 699804db
Von Moritz Bunkus vor etwa 5 Jahren hinzugefügt
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
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.