diff --git a/src/import-export/qif-import/qif-dialog-utils.scm b/src/import-export/qif-import/qif-dialog-utils.scm index 148468e8fe..c557ddab51 100644 --- a/src/import-export/qif-import/qif-dialog-utils.scm +++ b/src/import-export/qif-import/qif-dialog-utils.scm @@ -577,6 +577,38 @@ fullname))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; qif-dialog:default-namespace +;; +;; For a given commodity symbol, return a default namespace. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(define (qif-dialog:default-namespace s) + (if (string? s) + (let ((l (string-length s)) + (d (string-index s #\.))) + (cond + ;; Guess NYSE for symbols of 1-3 characters. + ((< l 4) + GNC_COMMODITY_NS_NYSE) + + ;; Guess NYSE for symbols of 1-3 characters + ;; followed by a dot and 1-2 characters. + ((and d + (< l 7) + (< 0 d 4) + (<= 2 (- l d) 3)) + GNC_COMMODITY_NS_NYSE) + + ;; Guess NASDAQ for symbols of 4 characters. + ((= l 4) + GNC_COMMODITY_NS_NASDAQ) + + ;; Otherwise it's probably a fund. + (else + GNC_COMMODITY_NS_MUTUAL))) + GNC_COMMODITY_NS_MUTUAL)) + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; qif-import:update-stock-hash ;; @@ -619,15 +651,21 @@ ;; we know nothing about this security.. we need to ;; ask about it - (let ((ticker-symbol (qif-ticker-map:lookup-ticker ticker-map stock-name))) + (let ((ticker-symbol + (qif-ticker-map:lookup-ticker ticker-map + stock-name)) + (namespace GNC_COMMODITY_NS_MUTUAL)) + (if (not ticker-symbol) - (set! ticker-symbol stock-name)) + (set! ticker-symbol stock-name) + (set! namespace + (qif-dialog:default-namespace ticker-symbol))) (set! names (cons stock-name names)) (hash-set! stock-hash stock-name (gnc-commodity-new book stock-name - GNC_COMMODITY_NS_NYSE + namespace ticker-symbol "" 100000))))))