gnucash maint: Bug 798005 - Import of QIF file sets expenses to zero, deposits are fine
Christopher Lam
clam at code.gnucash.org
Sun Nov 15 05:36:20 EST 2020
Updated via https://github.com/Gnucash/gnucash/commit/3e2be271 (commit)
from https://github.com/Gnucash/gnucash/commit/e9a117b2 (commit)
commit 3e2be271fc3c8245e4be7f24d6a15ca2116d3ab7
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sun Nov 15 18:31:30 2020 +0800
Bug 798005 - Import of QIF file sets expenses to zero, deposits are fine
recongizes numbers with trailing negative sign.
diff --git a/gnucash/import-export/qif-imp/qif-parse.scm b/gnucash/import-export/qif-imp/qif-parse.scm
index 261c10212..c7fec3cbd 100644
--- a/gnucash/import-export/qif-imp/qif-parse.scm
+++ b/gnucash/import-export/qif-imp/qif-parse.scm
@@ -401,14 +401,17 @@
;; the following is a working refactored function
(define (qif-parse:parse-number/format value-string format)
- (let* ((filtered-string (gnc:string-delete-chars value-string "$'+"))
+ (let* ((has-minus? (string-index value-string #\-))
+ (filtered-string (gnc:string-delete-chars value-string "$'+-"))
(read-string (case format
((decimal) (gnc:string-delete-chars filtered-string ","))
((comma) (gnc:string-replace-char
(gnc:string-delete-chars filtered-string ".")
#\, #\.))
- ((integer) filtered-string))))
- (or (string->number (string-append "#e" read-string)) 0)))
+ ((integer) filtered-string)))
+ (num (or (string->number (string-append "#e" read-string)) 0)))
+ (pk value-string has-minus? filtered-string read-string num)
+ (if has-minus? (- num) num)))
;; input: list of numstrings eg "10.50" "20.54"
;; input: formats to test '(decimal comma integer)
diff --git a/gnucash/import-export/qif-imp/test/test-qif-parse.scm b/gnucash/import-export/qif-imp/test/test-qif-parse.scm
index 8e94ab308..8d7402b4c 100644
--- a/gnucash/import-export/qif-imp/test/test-qif-parse.scm
+++ b/gnucash/import-export/qif-imp/test/test-qif-parse.scm
@@ -228,6 +228,10 @@
-1234
(qif-parse:parse-number/format "-1234" 'integer))
+ (test-equal "qif-parse:parse-number/format 1234-"
+ -1234
+ (qif-parse:parse-number/format "1234-" 'integer))
+
(test-equal "qif-parse:parse-number/format 1234"
1234
(qif-parse:parse-number/format "1234" 'integer))
Summary of changes:
gnucash/import-export/qif-imp/qif-parse.scm | 9 ++++++---
gnucash/import-export/qif-imp/test/test-qif-parse.scm | 4 ++++
2 files changed, 10 insertions(+), 3 deletions(-)
More information about the gnucash-changes
mailing list