diff --git a/src/report/report-system/Makefile.am b/src/report/report-system/Makefile.am index 9a7987129d..a6e49a91bd 100644 --- a/src/report/report-system/Makefile.am +++ b/src/report/report-system/Makefile.am @@ -69,10 +69,11 @@ gncscm_DATA = \ gncmodscmdir = ${GNC_SCM_INSTALL_DIR}/gnucash/report/report-system gncmodscm_DATA = \ + account.scm \ collectors.scm \ list-extras.scm \ - report-collectors.scm - + report-collectors.scm \ + split.scm gncscmmoddir = ${GNC_SCM_INSTALL_DIR}/gnucash/report/ gncscmmod_DATA = \ diff --git a/src/report/report-system/account.scm b/src/report/report-system/account.scm new file mode 100644 index 0000000000..787e5f1543 --- /dev/null +++ b/src/report/report-system/account.scm @@ -0,0 +1,62 @@ +(define-module (gnucash report report-system account)) +(use-modules (gnucash gnc-module)) +(use-modules (gnucash gnc-module)) + +(use-modules (srfi srfi-1) + (srfi srfi-13)) + +(gnc:module-begin-syntax (gnc:module-load "gnucash/engine" 0)) + +(export account-same?) +(export account-in-list?) +(export account-in-list-pred) +(export account-in-alist) +(export account-full-nametimepair (localtime (current-time)))) + (account-alist (env-create-test-accounts env)) + (bank-account (cdr (assoc "Bank" account-alist))) + (expense-account (cdr (assoc "Expenses" account-alist))) + (wallet-account (cdr (assoc "Wallet" account-alist))) + (tx1 (env-create-transaction env today bank-account wallet-account (gnc:make-gnc-numeric 20 1))) + (tx2 (env-create-transaction env today bank-account expense-account (gnc:make-gnc-numeric 10 1))) + (splits-tx1 (xaccTransGetSplitList tx1)) + (splits-tx2 (xaccTransGetSplitList tx2))) + (and (split-in-list? (first splits-tx1) splits-tx1) + (split-in-list? (second splits-tx1) splits-tx1) + (not (split-in-list? (first splits-tx1) splits-tx2)) + (not (split-in-list? (second splits-tx1) splits-tx2)) + (not (split-in-list? (first splits-tx1) '()))))) + + + + diff --git a/src/report/standard-reports/budget.scm b/src/report/standard-reports/budget.scm index ab59e67534..00d2d27cb4 100644 --- a/src/report/standard-reports/budget.scm +++ b/src/report/standard-reports/budget.scm @@ -31,6 +31,8 @@ (use-modules (gnucash gettext)) (use-modules (gnucash printf)) +(use-modules (gnucash report report-system account)) +(use-modules (gnucash report report-system split)) (gnc:module-load "gnucash/report/report-system" 0) (gnc:module-load "gnucash/gnome-utils" 0) ;for gnc-build-url @@ -557,47 +559,6 @@ ;;(txt (gnc:make-html-text)) ) - ;; is account in list of accounts? - (define (same-account? a1 a2) - (string=? (gncAccountGetGUID a1) (gncAccountGetGUID a2))) - - (define (same-split? s1 s2) - (string=? (gncSplitGetGUID s1) (gncSplitGetGUID s2))) - - (define account-in-list? - (lambda (account accounts) - (cond - ((null? accounts) #f) - ((same-account? (car accounts) account) #t) - (else (account-in-list? account (cdr accounts)))))) - - (define split-in-list? - (lambda (split splits) - (cond - ((null? splits) #f) - ((same-split? (car splits) split) #t) - (else (split-in-list? split (cdr splits)))))) - - (define account-in-alist - (lambda (account alist) - (cond - ((null? alist) #f) - ((same-account? (caar alist) account) (car alist)) - (else (account-in-alist account (cdr alist)))))) - - ;; helper for sorting of account list - (define (account-full-name