diff options
Diffstat (limited to 'record/bulder/bulder.go')
-rw-r--r-- | record/bulder/bulder.go | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/record/bulder/bulder.go b/record/bulder/bulder.go index 3021b52..18ad792 100644 --- a/record/bulder/bulder.go +++ b/record/bulder/bulder.go @@ -31,6 +31,7 @@ func (r *Reader) Read() ([]record.Record, error) { c.Comma = ';' var rs []record.Record line := 0 + oldFormat := false for { csvRecord, err := c.Read() if err == io.EOF { @@ -40,12 +41,13 @@ func (r *Reader) Read() ([]record.Record, error) { return nil, err } line++ - if line == 1 { - continue // Skip header - } if len(csvRecord) < 12 { continue } + if line == 1 { + oldFormat = csvRecord[3] == "Balanse" + continue // Skip header + } t, err := time.Parse("2006-01-02", csvRecord[0]) if err != nil { return nil, fmt.Errorf("invalid time on line %d: %q: %w", line, csvRecord[0], err) @@ -59,16 +61,19 @@ func (r *Reader) Read() ([]record.Record, error) { return nil, fmt.Errorf("invalid amount on line %d: %q: %w", line, amountValue, err) } var balance int64 - balanceValue := csvRecord[3] - if balanceValue != "" { + if balanceValue := csvRecord[3]; oldFormat && balanceValue != "" { balance, err = parseAmount(balanceValue) if err != nil { return nil, fmt.Errorf("invalid balance on line %d: %q: %w", line, balanceValue, err) } } + indexOffset := 0 + if oldFormat { + indexOffset = 1 + } var text strings.Builder - paymentType := csvRecord[8] - paymentText := csvRecord[9] + paymentType := csvRecord[7+indexOffset] + paymentText := csvRecord[8+indexOffset] text.WriteString(paymentType) text.WriteString(",") text.WriteString(paymentText) |