diff --git a/libgnucash/engine/test/test-extras.scm b/libgnucash/engine/test/test-extras.scm index 2e06707db7..6d53edd772 100644 --- a/libgnucash/engine/test/test-extras.scm +++ b/libgnucash/engine/test/test-extras.scm @@ -364,13 +364,111 @@ (list "Petrol"))))) (define (env-create-test-accounts env) - (env-create-account-structure-alist env - (list "Root" - (list (cons 'type ACCT-TYPE-ASSET)) - (list "Bank") - (list "Wallet") - (list "Other") - (list "Expenses" - (list (cons 'type ACCT-TYPE-EXPENSE)))))) - - + (env-create-account-structure-alist + env + (list "Root" + (list (cons 'type ACCT-TYPE-ASSET)) + (list "Bank") + (list "Wallet") + (list "Other") + (list "Expenses" + (list (cons 'type ACCT-TYPE-EXPENSE)))))) + +(define (mnemonic->commodity sym) + (gnc-commodity-table-lookup + (gnc-commodity-table-get-table (gnc-get-current-book)) + (gnc-commodity-get-namespace (gnc-default-report-currency)) + sym)) + +(define-public (create-test-data) + (let* ((env (create-test-env)) + (GBP (mnemonic->commodity "GBP")) + (structure + (list "Root" (list + (cons 'type ACCT-TYPE-ASSET)) + (list "Asset" + (list "Bank") + (list "GBP Bank" (list + (cons 'commodity GBP))) + (list "Wallet")) + (list "Income" (list + (cons 'type ACCT-TYPE-INCOME))) + (list "Income-GBP" (list + (cons 'type ACCT-TYPE-INCOME) + (cons 'commodity GBP))) + (list "Expenses" (list + (cons 'type ACCT-TYPE-EXPENSE))) + (list "Liabilities" (list (cons 'type ACCT-TYPE-LIABILITY))) + (list "Equity" (list + (cons 'type ACCT-TYPE-EQUITY))))) + (account-alist (env-create-account-structure-alist env structure)) + (bank (cdr (assoc "Bank" account-alist))) + (gbp-bank (cdr (assoc "GBP Bank" account-alist))) + (wallet (cdr (assoc "Wallet" account-alist))) + (income (cdr (assoc "Income" account-alist))) + (gbp-income (cdr (assoc "Income-GBP" account-alist))) + (expense (cdr (assoc "Expenses" account-alist))) + (liability (cdr (assoc "Liabilities" account-alist))) + (equity (cdr (assoc "Equity" account-alist)))) + + ;; populate datafile with old transactions + (env-transfer env 01 01 1970 bank expense 5 + #:description "desc-1" #:num "trn1" + #:memo "memo-3") + + (env-transfer env 31 12 1969 income bank 10 + #:description "desc-2" #:num "trn2" + #:void-reason "void" #:notes "notes3") + + (env-transfer env 31 12 1969 income bank 29 + #:description "desc-3" #:num "trn3" + #:reconcile (cons #\c (gnc-dmy2time64 01 03 1970))) + + (env-transfer env 01 02 1970 bank expense 15 + #:description "desc-4" #:num "trn4" + #:notes "notes2" #:memo "memo-1") + + (env-transfer env 10 01 1970 liability expense 10 + #:description "desc-5" #:num "trn5" + #:void-reason "any") + + (env-transfer env 10 01 1970 liability expense 11 + #:description "desc-6" #:num "trn6" + #:notes "notes1") + + (env-transfer env 10 02 1970 bank liability 8 + #:description "desc-7" #:num "trn7" + #:notes "notes1" #:memo "memo-2" + #:reconcile (cons #\y (gnc-dmy2time64 01 03 1970))) + + (env-create-multisplit-transaction + env 14 02 1971 + (list (vector bank -100 -100) + (vector expense 80 80) + (vector wallet 20 20)) + #:description "$100bank -> $80expenses + $20wallet" + #:notes "multisplit") + + (let ((closing-txn (env-transfer + env 31 12 1977 expense equity + 111 #:description "Closing"))) + (xaccTransSetIsClosingTxn closing-txn #t)) + + (env-transfer-foreign env 15 01 2000 gbp-bank bank + 10 14 #:description "GBP 10 to USD 14") + + (env-transfer-foreign env 15 02 2000 bank gbp-bank + 9 6 #:description "USD 9 to GBP 6") + + (for-each + (lambda (m) + (env-transfer env 08 (1+ m) 1978 + gbp-income gbp-bank 51 #:description "#51 income") + (env-transfer env 03 (1+ m) 1978 + income bank 103 #:description "$103 income") + (env-transfer env 15 (1+ m) 1978 + bank expense 22 #:description "$22 expense") + (env-transfer env 09 (1+ m) 1978 + income bank 109 #:description "$109 income")) + (iota 12)) + account-alist))