diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-01-01 11:46:15 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-01-01 11:46:15 +0100 |
commit | 08f544ceab0a8008cbf70f5ebe9d669a45190a0c (patch) | |
tree | b00e29ddd3406470d78d9715e7c7bbb052571097 | |
parent | 6c566179b25da781478bb66154a8203cc210309b (diff) |
Handle unicode space
-rw-r--r-- | record/komplett/komplett.go | 9 | ||||
-rw-r--r-- | record/komplett/komplett_test.go | 1 | ||||
-rw-r--r-- | record/komplett/testdata/test.json | 15 |
3 files changed, 22 insertions, 3 deletions
diff --git a/record/komplett/komplett.go b/record/komplett/komplett.go index b12b151..edf0e22 100644 --- a/record/komplett/komplett.go +++ b/record/komplett/komplett.go @@ -14,9 +14,10 @@ const ( decimalSeparator = "." thousandSeparator = " " timeLayout = "02.01.2006" - withdrawalPrefix = "kr -" ) +var withdrawalPrefixes = []string{"kr -", "kr\u00a0-"} + // Reader implements a reader for Komplett-encoded (JSON) records. type Reader struct { rd io.Reader @@ -87,8 +88,10 @@ func (r *Reader) Read() ([]record.Record, error) { amount = jr.Amount // New format does not indicate whether transaction amount is positive or negative, so we guess // based on the formatted field. - if strings.HasPrefix(jr.FormattedAmount, withdrawalPrefix) { - amount = -amount + for _, withdrawalPrefix := range withdrawalPrefixes { + if strings.HasPrefix(jr.FormattedAmount, withdrawalPrefix) { + amount = -amount + } } } rs = append(rs, record.Record{ diff --git a/record/komplett/komplett_test.go b/record/komplett/komplett_test.go index 6141b8b..2ba3d92 100644 --- a/record/komplett/komplett_test.go +++ b/record/komplett/komplett_test.go @@ -78,6 +78,7 @@ func TestRead(t *testing.T) { }{ {date(2019, 10, 30), "Varekjøp", -299000}, {date(2019, 10, 30), "Uttak av bonus", 6000}, + {date(2020, 12, 14), "Varekjøp", -9900}, } if len(rs) != len(tests) { t.Fatalf("want %d records, got %d", len(tests), len(rs)) diff --git a/record/komplett/testdata/test.json b/record/komplett/testdata/test.json index 9f9e577..f9864f7 100644 --- a/record/komplett/testdata/test.json +++ b/record/komplett/testdata/test.json @@ -28,5 +28,20 @@ "FormattedAmount": "kr 60,00", "FormattedPostingDate": "30.10.2019", "FormattedDefermentExpiryDate": null + }, + { + "TransactionId": null, + "TransactionRef": null, + "DisplayDescription": "Varekjøp", + "EventNarrative": "", + "DestinationAccountNumber": null, + "Amount": 99.0, + "PostingDate": "/Date(1607900400000)/", + "CanDefer": false, + "IsDeferred": false, + "DefermentPeriod": null, + "FormattedAmount": "kr -99,00", + "FormattedPostingDate": "14.12.2020", + "FormattedDefermentExpiryDate": null } ] |