feat: Zeilenfilter für Auszüge mit mehreren Pockets + Gebühren-Richtung
Der Revolut-Auszug enthält ALLE Produkte in einer Datei – im CHF-Export stehen 533 Giro-Zeilen und 255 Zeilen des Ersparten, jedes mit eigenem Kontostand- Verlauf. Ohne Trennung landeten beide auf demselben Konto und die Pocket- Bewegungen zählten doppelt. - Import-Vorlage kennt einen Zeilenfilter („nur Zeilen aus Spalte X mit Wert Y"), Migration 0012; damit bekommt jedes Pocket sein eigenes Konto - Gebührenzeilen (Betrag 0.00) können Belastung ODER Erstattung sein – beide sehen identisch aus. Die Richtung kommt jetzt aus der Kontostand-Spalte; ohne sie bleibt die Belastung der Normalfall - Tests für beides; 90 grün Nachgerechnet an den echten Auszügen: Raiffeisen 223.37, Revolut CHF 61.88, Erspartes 6.71, Revolut EUR 0.68 – alle vier stimmen zeilengenau mit der Kontostand-Spalte überein. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -371,6 +371,8 @@ class ImportTemplateCreate(BaseModel):
|
||||
skip_rows: int = 0
|
||||
amount_mode: AmountMode = AmountMode.signed
|
||||
column_map: dict[str, int | None] = Field(default_factory=dict)
|
||||
filter_column: int | None = None
|
||||
filter_value: str | None = None
|
||||
|
||||
|
||||
class ImportTemplateUpdate(BaseModel):
|
||||
@@ -383,6 +385,8 @@ class ImportTemplateUpdate(BaseModel):
|
||||
skip_rows: int | None = None
|
||||
amount_mode: AmountMode | None = None
|
||||
column_map: dict[str, int | None] | None = None
|
||||
filter_column: int | None = None
|
||||
filter_value: str | None = None
|
||||
|
||||
|
||||
class ImportTemplateOut(BaseModel):
|
||||
@@ -396,6 +400,8 @@ class ImportTemplateOut(BaseModel):
|
||||
skip_rows: int
|
||||
amount_mode: AmountMode
|
||||
column_map: dict[str, int | None]
|
||||
filter_column: int | None = None
|
||||
filter_value: str | None = None
|
||||
|
||||
|
||||
class ImportBatchOut(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user