CSV-Import: Fix für reflexive Spaltennamen im Mapping
Wenn eine CSV-Datei für den Bank-Import z.B. die Spalten `currency`, `amount`, `local_bank_number` enthalten, so schlug der Import aus gleich zwei Gründen fehl, wenn in der CSV-Spaten-Zuordnung die Namen alle auf sich selber abgebildet wurden, also `current` → `currency`, `amount` → `amount` und `local_bank_number` → `local_bank_number`.
Es stellte sich heraus, dass beim Speichern der CSV-Spalten in der Datenbank hier kivitendo gedacht hat, dass diese drei genannten Spalten auch als Methoden auf den DB-Objekt aufrufbar wären.
Sind sie aber nicht.
Schuld war der Mechanismus, der anhand der vorhandenen Spaltennamen-Zuordnungen (`$mapping`) und dem vorhandenen Spaltenprofil (`$profile`) entschieden hat, welche Namen als Methoden anzuerkennen.
Im konkreten Fall ist es so, dass es sowohl ein solches Mapping als auch ein solches Profil gibt. In dem Fall darf aber ein Name, der zwar als Mapping existiert, dessen gemappter Name aber im Profil nicht existiert, auch nicht als Methodenname aufgefasst und in die `$specs` aufgenommen werden. Statt dessen muss er als »unbekannte Spalte« behandelt werden.
CSV-Import: Fix für reflexive Spaltennamen im Mapping
Wenn eine CSV-Datei für den Bank-Import z.B. die Spalten `currency`,
`amount`, `local_bank_number` enthalten, so schlug der Import aus
gleich zwei Gründen fehl, wenn in der CSV-Spaten-Zuordnung die Namen
alle auf sich selber abgebildet wurden, also `current` → `currency`,
`amount` → `amount` und `local_bank_number` → `local_bank_number`.
Untersuchung ergab die folgenden zwei Probleme:
1. Fehlermeldung `cannot bind reference`
2. Fehlermeldung `can't locate object method "local_bank_number" via
package "SL::DB::BankTransaction"`
Es stellte sich heraus, dass beim Speichern der CSV-Spalten in der
Datenbank hier kivitendo gedacht hat, dass diese drei genannten
Spalten auch als Methoden auf den DB-Objekt aufrufbar wären.
Sind sie aber nicht.
Schuld war der Mechanismus, der anhand der vorhandenen
Spaltennamen-Zuordnungen (`$mapping`) und dem vorhandenen
Spaltenprofil (`$profile`) entschieden hat, welche Namen als Methoden
anzuerkennen.
Im konkreten Fall ist es so, dass es sowohl ein solches Mapping als
auch ein solches Profil gibt. In dem Fall darf aber ein Name, der zwar
als Mapping existiert, dessen gemappter Name aber im Profil nicht
existiert, auch nicht als Methodenname aufgefasst und in die `$specs`
aufgenommen werden. Statt dessen muss er als »unbekannte Spalte«
behandelt werden.