mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Bill Gribble's qif import updates.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@3474 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
e29fc65b3e
commit
556a293d49
16
ChangeLog
16
ChangeLog
@ -1,3 +1,19 @@
|
||||
2001-01-15 Bill Gribble <grib@billgribble.com>
|
||||
|
||||
* src/gnome/druid-qif-import.c: remove printout
|
||||
|
||||
* src/scm/qif-import/qif-parse.scm: Warning dialog on unknown
|
||||
Action type. Add new actions from Q2000.
|
||||
|
||||
* src/scm/qif-import/qif-to-gnc.scm: Fix handling of commissions
|
||||
for (hopefully) the last time. Add new security Action types.
|
||||
Don't puke on unknown Action.
|
||||
|
||||
* src/scm/qif-import/qif-dialog-utils.scm: Change default account
|
||||
for ShrsIn/ShrsOut to 'Retained Earnings', which is a normal
|
||||
account; replaces old policy of stock-denominated Equity
|
||||
subaccounts.
|
||||
|
||||
2001-01-15 Rob Browning <rlb@cs.utexas.edu>
|
||||
|
||||
* configure.in (G_WRAP_LINK_ARGS): require g-wrap 1.1.5. This
|
||||
|
@ -364,7 +364,6 @@ gnc_ui_qif_import_load_file_next_cb(GnomeDruidPage * page,
|
||||
else {
|
||||
/* call the field parser */
|
||||
parse_return = gh_call1(qif_file_parse, gh_car(imported_files));
|
||||
gh_display(parse_return); gh_newline();
|
||||
|
||||
/* warning means the date format is ambiguous. Set up the
|
||||
* format selector page. */
|
||||
|
@ -24,19 +24,27 @@
|
||||
brokerage (gnc:account-separator-char)
|
||||
security))
|
||||
|
||||
(define (default-capital-return-acct brokerage security)
|
||||
(string-append "Cap Return" (gnc:account-separator-char)
|
||||
brokerage (gnc:account-separator-char)
|
||||
security))
|
||||
|
||||
(define (default-cglong-acct brokerage security)
|
||||
(string-append "Cap. gain (long)" (gnc:account-separator-char)
|
||||
brokerage (gnc:account-separator-char)
|
||||
security))
|
||||
|
||||
(define (default-cgmid-acct brokerage security)
|
||||
(string-append "Cap. gain (mid)" (gnc:account-separator-char)
|
||||
brokerage (gnc:account-separator-char)
|
||||
security))
|
||||
|
||||
(define (default-cgshort-acct brokerage security)
|
||||
(string-append "Cap. gain (short)" (gnc:account-separator-char)
|
||||
brokerage (gnc:account-separator-char)
|
||||
security))
|
||||
|
||||
(define (default-equity-holding security)
|
||||
(string-append "Retained Earnings" (gnc:account-separator-char)
|
||||
security))
|
||||
(define (default-equity-holding security) "Retained Earnings")
|
||||
|
||||
(define (default-equity-account) "Retained Earnings")
|
||||
|
||||
@ -44,6 +52,10 @@
|
||||
(string-append "Commissions" (gnc:account-separator-char)
|
||||
brokerage))
|
||||
|
||||
(define (default-margin-interest-acct brokerage)
|
||||
(string-append "Margin Interest" (gnc:account-separator-char)
|
||||
brokerage))
|
||||
|
||||
;; the account-display is a 3-columned list of accounts in the QIF
|
||||
;; import dialog (the "Account" page of the notebook). Column 1 is
|
||||
;; the account name in the QIF file, column 2 is the number of QIF
|
||||
@ -122,20 +134,21 @@
|
||||
;; an interest, dividend, or CG account.
|
||||
(case action
|
||||
((buy buyx sell sellx reinvint reinvdiv reinvsh reinvsg
|
||||
reinvlg shrsin shrsout stksplit)
|
||||
reinvlg reinvmd shrsin shrsout stksplit)
|
||||
(set! qif-account
|
||||
(default-stock-acct from-acct stock-acct))
|
||||
(set! qif-account-types (list GNC-STOCK-TYPE
|
||||
GNC-MUTUAL-TYPE
|
||||
GNC-ASSET-TYPE)))
|
||||
((div cgshort cglong intinc miscinc miscexp xin xout)
|
||||
((div cgshort cgmid cglong intinc miscinc miscexp
|
||||
margint rtrncap xin xout)
|
||||
(set! qif-account from-acct)
|
||||
(set! qif-account-types (list GNC-BANK-TYPE
|
||||
GNC-CCARD-TYPE
|
||||
GNC-CASH-TYPE
|
||||
GNC-ASSET-TYPE)))
|
||||
|
||||
((divx cgshortx cglongx intincx)
|
||||
((divx cgshortx cgmidx cglongx intincx margintx rtrncapx)
|
||||
(set! qif-account
|
||||
(qif-split:category
|
||||
(car (qif-xtn:splits xtn))))
|
||||
@ -204,6 +217,11 @@
|
||||
(set! qif-account
|
||||
(default-cgshort-acct from-acct stock-acct))
|
||||
(set! qif-account-types (list GNC-INCOME-TYPE)))
|
||||
|
||||
((cgmid cgmidx reinvmd)
|
||||
(set! qif-account
|
||||
(default-cgmid-acct from-acct stock-acct))
|
||||
(set! qif-account-types (list GNC-INCOME-TYPE)))
|
||||
|
||||
((cglong cglongx reinvlg)
|
||||
(set! qif-account
|
||||
@ -220,10 +238,20 @@
|
||||
(default-dividend-acct from-acct stock-acct))
|
||||
(set! qif-account-types (list GNC-INCOME-TYPE)))
|
||||
|
||||
((rtrncap rtrncapx)
|
||||
(set! qif-account
|
||||
(default-capital-return-acct from-acct))
|
||||
(set! qif-account-types (list GNC-INCOME-TYPE)))
|
||||
|
||||
((shrsin shrsout)
|
||||
(set! qif-account
|
||||
(default-equity-holding stock-acct))
|
||||
(set! qif-account-types (list GNC-EQUITY-TYPE)))
|
||||
|
||||
((margint margintx)
|
||||
(set! qif-account
|
||||
(default-margin-interest-acct from-acct))
|
||||
(set! qif-account-types (list GNC-EXPENSE-TYPE)))
|
||||
|
||||
((miscinc miscexp miscincx miscexpx)
|
||||
;; these reference a category on the other end
|
||||
|
@ -38,6 +38,7 @@
|
||||
(valid-acct-types
|
||||
'(type:bank type:cash
|
||||
type:ccard type:invst
|
||||
type:port
|
||||
#{type:oth\ a}# #{type:oth\ l}#))
|
||||
(progress-dialog #f)
|
||||
(file-stats (stat path))
|
||||
@ -78,7 +79,7 @@
|
||||
(begin
|
||||
(set! qstate-type (qif-parse:parse-bang-field value))
|
||||
(case qstate-type
|
||||
((type:bank type:cash type:ccard type:invst
|
||||
((type:bank type:cash type:ccard type:invst type:port
|
||||
#{type:oth\ a}# #{type:oth\ l}#)
|
||||
(if ignore-accounts
|
||||
(set! current-account-name last-seen-account-name))
|
||||
@ -109,7 +110,7 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(case qstate-type
|
||||
((type:bank type:cash type:ccard type:invst
|
||||
((type:bank type:cash type:ccard type:invst type:port
|
||||
#{type:oth\ a}# #{type:oth\ l}#)
|
||||
(case tag
|
||||
;; D : transaction date
|
||||
@ -141,7 +142,8 @@
|
||||
;; there's both an action and a number in gnucash,
|
||||
;; one for securities, one for banks.
|
||||
((#\N)
|
||||
(if (eq? qstate-type 'type:invst)
|
||||
(if (or (eq? qstate-type 'type:invst)
|
||||
(eq? qstate-type 'type:port))
|
||||
(qif-xtn:set-action! current-xtn value)
|
||||
(qif-xtn:set-number! current-xtn value)))
|
||||
|
||||
@ -208,8 +210,10 @@
|
||||
opening-balance-payee))
|
||||
(set! first-xtn #f)))
|
||||
|
||||
(if (and (eq? qstate-type 'type:invst)
|
||||
(not (qif-xtn:security-name current-xtn)))
|
||||
(if (and
|
||||
(or (eq? qstate-type 'type:invst)
|
||||
(eq? qstate-type 'type:port))
|
||||
(not (qif-xtn:security-name current-xtn)))
|
||||
(qif-xtn:set-security-name! current-xtn ""))
|
||||
|
||||
(qif-xtn:set-from-acct! current-xtn
|
||||
|
@ -194,57 +194,82 @@
|
||||
'buy)
|
||||
((buyx kaufx)
|
||||
'buyx)
|
||||
((sell) ;; verkaufen
|
||||
'sell)
|
||||
((sellx)
|
||||
'sellx)
|
||||
((div) ;; dividende
|
||||
'div)
|
||||
((divx)
|
||||
'divx)
|
||||
((int intinc aktzu) ;; zinsen
|
||||
'intinc)
|
||||
((intx intincx)
|
||||
'intincx)
|
||||
((cglong) ;; Kapitalgewinnsteuer
|
||||
'cglong)
|
||||
((cglongx)
|
||||
'cglongx)
|
||||
((cgmid) ;; Kapitalgewinnsteuer
|
||||
'cgmid)
|
||||
((cgmidx)
|
||||
'cgmidx)
|
||||
((cgshort)
|
||||
'cgshort)
|
||||
((cgshortx)
|
||||
'cgshortx)
|
||||
((shrsin)
|
||||
'shrsin)
|
||||
((shrsout)
|
||||
'shrsout)
|
||||
((xin)
|
||||
'xin)
|
||||
((xout)
|
||||
'xout)
|
||||
((stksplit)
|
||||
'stksplit)
|
||||
((reinvdiv)
|
||||
'reinvdiv)
|
||||
((reinvint)
|
||||
'reinvint)
|
||||
((reinvsg)
|
||||
'reinvsg)
|
||||
((reinvsh)
|
||||
'reinvsh)
|
||||
((reinvlg reinvkur)
|
||||
'reinvlg)
|
||||
((miscinc)
|
||||
'miscinc)
|
||||
((miscincx)
|
||||
'miscincx)
|
||||
((div) ;; dividende
|
||||
'div)
|
||||
((divx)
|
||||
'divx)
|
||||
; ((exercise)
|
||||
; 'exercise)
|
||||
; ((exercisx)
|
||||
; 'exercisx)
|
||||
; ((expire)
|
||||
; 'expire)
|
||||
; ((grant)
|
||||
; 'grant)
|
||||
((int intinc aktzu) ;; zinsen
|
||||
'intinc)
|
||||
((intx intincx)
|
||||
'intincx)
|
||||
((margint)
|
||||
'margint)
|
||||
((margintx)
|
||||
'margintx)
|
||||
((miscexp)
|
||||
'miscexp)
|
||||
((miscexpx)
|
||||
'miscexpx)
|
||||
((miscinc)
|
||||
'miscinc)
|
||||
((miscincx)
|
||||
'miscincx)
|
||||
((reinvdiv)
|
||||
'reinvdiv)
|
||||
((reinvint)
|
||||
'reinvint)
|
||||
((reinvlg reinvkur)
|
||||
'reinvlg)
|
||||
((reinvmd)
|
||||
'reinvmd)
|
||||
((reinvsg)
|
||||
'reinvsg)
|
||||
((reinvsh)
|
||||
'reinvsh)
|
||||
((reminder)
|
||||
'reminder)
|
||||
((sell) ;; verkaufen
|
||||
'sell)
|
||||
((sellx)
|
||||
'sellx)
|
||||
((shrsin)
|
||||
'shrsin)
|
||||
((shrsout)
|
||||
'shrsout)
|
||||
((stksplit)
|
||||
'stksplit)
|
||||
((xin)
|
||||
'xin)
|
||||
((xout)
|
||||
'xout)
|
||||
; ((vest)
|
||||
; 'vest)
|
||||
(else
|
||||
(display "qif-parse:parse-action-field : unknown action field ")
|
||||
(write read-value) (newline)
|
||||
(gnc:warning-dialog
|
||||
(string-append
|
||||
(sprintf #f "The file contains an unknown Action '%s'.\n"
|
||||
read-value)
|
||||
"Some transactions may be discarded."))
|
||||
#f)))
|
||||
#f))
|
||||
|
||||
|
@ -198,13 +198,15 @@
|
||||
security security
|
||||
gnc-acct-hash account-group))
|
||||
(security
|
||||
(qif-import:find-or-make-acct acctinfo
|
||||
default-currency security
|
||||
gnc-acct-hash account-group))
|
||||
(qif-import:find-or-make-acct
|
||||
acctinfo
|
||||
default-currency security
|
||||
gnc-acct-hash account-group))
|
||||
(#t
|
||||
(qif-import:find-or-make-acct acctinfo
|
||||
default-currency default-currency
|
||||
gnc-acct-hash account-group)))))
|
||||
(qif-import:find-or-make-acct
|
||||
acctinfo
|
||||
default-currency default-currency
|
||||
gnc-acct-hash account-group)))))
|
||||
sorted-accounts-list)
|
||||
|
||||
;; before trying to mark transactions, prune down the list of
|
||||
@ -400,31 +402,28 @@
|
||||
;; "action" encoded in the Number field. It's generally the
|
||||
;; security account (for buys, sells, and reinvests) but can
|
||||
;; also be an interest, dividend, or SG/LG account.
|
||||
(let ((share-price (amt-cvt (qif-xtn:share-price qif-xtn)))
|
||||
(num-shares (amt-cvt (qif-xtn:num-shares qif-xtn)))
|
||||
(split-amt (amt-cvt
|
||||
(qif-split:amount (car (qif-xtn:splits qif-xtn)))))
|
||||
(qif-accts #f)
|
||||
(qif-near-acct #f)
|
||||
(qif-far-acct #f)
|
||||
(qif-commission-acct #f)
|
||||
(far-acct-info #f)
|
||||
(far-acct-name #f)
|
||||
(far-acct #f)
|
||||
(commission-acct #f)
|
||||
(commission-amt (amt-cvt (qif-xtn:commission qif-xtn)))
|
||||
(commission-split #f)
|
||||
(defer-share-price #f)
|
||||
(gnc-far-split (gnc:split-create)))
|
||||
(let* ((share-price (amt-cvt (qif-xtn:share-price qif-xtn)))
|
||||
(num-shares (amt-cvt (qif-xtn:num-shares qif-xtn)))
|
||||
(split-amt (n* share-price num-shares))
|
||||
(xtn-amt (amt-cvt
|
||||
(qif-split:amount (car (qif-xtn:splits qif-xtn)))))
|
||||
(qif-accts #f)
|
||||
(qif-near-acct #f)
|
||||
(qif-far-acct #f)
|
||||
(qif-commission-acct #f)
|
||||
(far-acct-info #f)
|
||||
(far-acct-name #f)
|
||||
(far-acct #f)
|
||||
(commission-acct #f)
|
||||
(commission-amt (amt-cvt (qif-xtn:commission qif-xtn)))
|
||||
(commission-split #f)
|
||||
(defer-share-price #f)
|
||||
(gnc-far-split (gnc:split-create)))
|
||||
|
||||
(if (not num-shares) (set! num-shares (gnc:numeric-zero)))
|
||||
(if (not share-price) (set! share-price (gnc:numeric-zero)))
|
||||
(if (not split-amt) (set! split-amt (n* num-shares share-price)))
|
||||
|
||||
;; it appears that the QIF total line contains the commission.
|
||||
(if commission-amt
|
||||
(set! split-amt (nsub split-amt commission-amt)))
|
||||
|
||||
;; I don't think this should ever happen, but I want
|
||||
;; to keep this check just in case.
|
||||
(if (> (length splits) 1)
|
||||
@ -458,44 +457,54 @@
|
||||
;; the amounts and signs: are shares going in or out?
|
||||
;; are amounts currency or shares?
|
||||
(case qif-action
|
||||
((buy buyx reinvint reinvdiv reinvsg reinvsh reinvlg)
|
||||
((buy buyx reinvint reinvdiv reinvsg reinvsh reinvmd reinvlg)
|
||||
(if (not share-price) (set! share-price (gnc:numeric-zero)))
|
||||
(gnc:split-set-share-amount gnc-near-split num-shares)
|
||||
(gnc:split-set-share-amount gnc-far-split (n- num-shares))
|
||||
(gnc:split-set-value gnc-near-split split-amt)
|
||||
(gnc:split-set-value gnc-far-split (n- split-amt)))
|
||||
(gnc:split-set-value gnc-far-split (n- xtn-amt))
|
||||
(gnc:split-set-share-amount gnc-far-split (n- xtn-amt)))
|
||||
|
||||
((sell sellx)
|
||||
(if (not share-price) (set! share-price (gnc:numeric-zero)))
|
||||
(gnc:split-set-share-amount gnc-near-split (n- num-shares))
|
||||
(gnc:split-set-share-amount gnc-far-split num-shares)
|
||||
(gnc:split-set-value gnc-near-split (n- split-amt))
|
||||
(gnc:split-set-value gnc-far-split split-amt))
|
||||
(gnc:split-set-value gnc-far-split xtn-amt)
|
||||
(gnc:split-set-share-amount gnc-far-split xtn-amt))
|
||||
|
||||
((cgshort cgshortx cglong cglongx intinc intincx div divx
|
||||
miscinc miscincx xin)
|
||||
((cgshort cgshortx cgmid cgmidx cglong cglongx intinc intincx
|
||||
div divx miscinc miscincx xin rtrncap rtrncapx)
|
||||
(gnc:split-set-value gnc-near-split split-amt)
|
||||
(gnc:split-set-value gnc-far-split (n- split-amt))
|
||||
(gnc:split-set-share-amount gnc-near-split split-amt)
|
||||
(gnc:split-set-share-amount gnc-far-split (n- split-amt)))
|
||||
(gnc:split-set-value gnc-far-split (n- xtn-amt))
|
||||
(gnc:split-set-share-amount gnc-far-split (n- xtn-amt)))
|
||||
|
||||
((xout miscexp miscexpx)
|
||||
((xout miscexp miscexpx margint margintx)
|
||||
(gnc:split-set-value gnc-near-split (n- split-amt))
|
||||
(gnc:split-set-value gnc-far-split split-amt)
|
||||
(gnc:split-set-share-amount gnc-near-split (n- split-amt))
|
||||
(gnc:split-set-share-amount gnc-far-split split-amt))
|
||||
(gnc:split-set-value gnc-far-split xtn-amt)
|
||||
(gnc:split-set-share-amount gnc-far-split xtn-amt))
|
||||
|
||||
((shrsin)
|
||||
;; for shrsin, the near account is the security account.
|
||||
;; we'll need to set the share-price after a little
|
||||
;; trickery post-adding-to-account
|
||||
|
||||
;; getting rid of the old equity-acct-per-stock trick.
|
||||
;; you must now have a cash value for the stock.
|
||||
(gnc:split-set-share-amount gnc-near-split num-shares)
|
||||
(gnc:split-set-value gnc-far-split num-shares))
|
||||
(gnc:split-set-value gnc-near-split split-amt)
|
||||
(gnc:split-set-value gnc-far-split (n- xtn-amt))
|
||||
(gnc:split-set-share-amount gnc-far-split (n- xtn-amt)))
|
||||
|
||||
;;; (gnc:split-set-share-amount gnc-near-split num-shares)
|
||||
;;; (gnc:split-set-value gnc-far-split num-shares))
|
||||
|
||||
((shrsout)
|
||||
;; shrsout is like shrsin
|
||||
(gnc:split-set-share-amount gnc-near-split (n- num-shares))
|
||||
(gnc:split-set-value gnc-far-split (n- num-shares)))
|
||||
(gnc:split-set-value gnc-near-split (n- split-amt))
|
||||
(gnc:split-set-value gnc-far-split xtn-amt)
|
||||
(gnc:split-set-share-amount gnc-far-split xtn-amt))
|
||||
|
||||
;; stock splits: QIF just specifies the split ratio, not
|
||||
;; the number of shares in and out, so we have to fetch
|
||||
@ -511,10 +520,8 @@
|
||||
(gnc:split-set-share-amount gnc-near-split out-shares)
|
||||
(gnc:split-set-share-amount gnc-far-split (n- in-shares))
|
||||
(gnc:split-set-value gnc-near-split (n- split-amt))
|
||||
(gnc:split-set-value gnc-far-split split-amt)))
|
||||
(else
|
||||
(display "symbol = " ) (write qif-action) (newline)))
|
||||
|
||||
(gnc:split-set-value gnc-far-split split-amt))))
|
||||
|
||||
(let ((cleared (qif-split:matching-cleared
|
||||
(car (qif-xtn:splits qif-xtn)))))
|
||||
(if (eq? 'cleared cleared)
|
||||
@ -639,7 +646,8 @@
|
||||
;; transactions to match up. Quicken thinks the near
|
||||
;; and far accounts are different than we do.
|
||||
(case action
|
||||
((intincx divx cglongx cgshortx sellx)
|
||||
((intincx divx cglongx cgmidx cgshortx rtrncapx margintx
|
||||
sellx)
|
||||
(set! amount (- amount))
|
||||
(set! near-acct-name (qif-xtn:from-acct xtn))
|
||||
(set! far-acct-name (qif-split:category split)))
|
||||
@ -709,6 +717,7 @@
|
||||
(let ((split (car splits-left)))
|
||||
;; does the account match up?
|
||||
(if (and (qif-split:category-is-account? split)
|
||||
(string? acct-name)
|
||||
(string=? (qif-split:category split) acct-name))
|
||||
;; if so, get the amount
|
||||
(let ((this-amt (qif-split:amount split))
|
||||
@ -784,11 +793,12 @@
|
||||
(begin
|
||||
(case action
|
||||
((buy buyx sell sellx reinvint reinvdiv reinvsg reinvsh
|
||||
reinvlg shrsin shrsout stksplit)
|
||||
reinvlg reinvmd shrsin shrsout stksplit)
|
||||
(set! near-acct-name (default-stock-acct from-acct security)))
|
||||
((div cgshort cglong intinc miscinc miscexp xin xout)
|
||||
((div cgshort cglong cgmid intinc miscinc miscexp
|
||||
rtrncap margint xin xout)
|
||||
(set! near-acct-name from-acct))
|
||||
((divx cgshortx cglongx intincx)
|
||||
((divx cgshortx cglongx cgmidx intincx rtrncapx margintx)
|
||||
(set! near-acct-name
|
||||
(qif-split:category (car (qif-xtn:splits xtn)))))
|
||||
((miscincx miscexpx)
|
||||
@ -812,16 +822,25 @@
|
||||
((cglong cglongx reinvlg)
|
||||
(set! far-acct-name
|
||||
(default-cglong-acct from-acct security)))
|
||||
((cgmid cgmidx reinvmd)
|
||||
(set! far-acct-name
|
||||
(default-cgmid-acct from-acct security)))
|
||||
((intinc intincx reinvint)
|
||||
(set! far-acct-name
|
||||
(default-interest-acct from-acct security)))
|
||||
((margint margintx)
|
||||
(set! far-acct-name
|
||||
(default-margin-interest-acct from-acct)))
|
||||
((rtrncap rtrncapx)
|
||||
(set! far-acct-name
|
||||
(default-return-capital-acct from-acct)))
|
||||
((div divx reinvdiv)
|
||||
(set! far-acct-name
|
||||
(default-dividend-acct from-acct security)))
|
||||
((shrsin shrsout)
|
||||
(set! far-acct-name
|
||||
(default-equity-holding security))))
|
||||
|
||||
|
||||
;; the commission account, if it exists
|
||||
(if (qif-xtn:commission xtn)
|
||||
(set! commission-acct-name
|
||||
@ -890,7 +909,8 @@
|
||||
;; information about what went on, so use it.
|
||||
((and action o-action o-security)
|
||||
(case o-action
|
||||
((buyx sellx cgshortx cglongx intincx divx miscincx miscexpx)
|
||||
((buyx sellx cgshortx cgmidx cglongx intincx divx
|
||||
margintx rtrncapx miscincx miscexpx)
|
||||
(qif-xtn:mark-split xtn split)
|
||||
(qif-import:merge-xtn-info xtn other-xtn)
|
||||
(qif-split:set-matching-cleared!
|
||||
@ -920,6 +940,7 @@
|
||||
(qif-split:set-matching-cleared!
|
||||
split (qif-xtn:cleared other-xtn))))))))))
|
||||
|
||||
|
||||
(define (qif-import:merge-xtn-info from-xtn to-xtn)
|
||||
(if (and (qif-xtn:payee from-xtn)
|
||||
(not (qif-xtn:payee to-xtn)))
|
||||
|
Loading…
Reference in New Issue
Block a user