[report-utilities] more dump data functions

Two API to dump splits in whole book:
* gnc:dump-book             - splits grouped by account
* gnc:dump-all-transactions - splits grouped by transaction
* gnc:dump-split - dumps single split

Example output -- note (gnc:dump-book) dumps each account followed by
its splits, then account balance. (gnc:dump-all-transactions) dumps all
transactions in date order, each followed by its splits.

(gnc:dump-book)

Account 8e56ef54: <Expense> Comm<USD> Type<Expense>
n Split 5dd1c0a9: 05/11/19 Amt<$200.00> $200.00 Desc<vend1> Memo<AP>
n Split f9cb052f: 05/11/19 Amt<$20.00> $20.00 Desc<emp1> Memo<vouch1>
n Split daafc64b: 05/11/19 Amt<$69.00> $69.00 Desc<vend1> Memo<job-bill>
n Split 5e6af9fe: 14/11/19 Amt<$86.00> $86.00 Desc<emp1> Memo<emp-voucher>
n Split 6d636ea2: 14/11/19 Amt<$46.00> $46.00 Desc<vend1>
n Split e618644b: 14/12/19 Amt<-$100.00> -$100.00 Desc<Vend-USD>
n Split 8be19fbd: 25/12/19 Amt<-$46.00> -$46.00 Desc<Vend-USD> Memo<CN$100-desc>
n Split ee4fe250: 01/04/20 Amt<$32.00> $32.00 Desc<Cell phone>
n Split 2cb02dac: 09/05/20 Amt<-$307.00> -$307.00
         Balance: $0.00 Cleared: $0.00 Reconciled: $0.00

Account 6f39f557: <Closing> Comm<USD> Type<Equity>
n Split 13916652: 09/05/20 Amt<$307.00> $307.00
         Balance: $307.00 Cleared: $0.00 Reconciled: $0.00

Account fa6507e1: <Closing:GBP> Comm<GBP> Type<Equity>
n Split 34ce3c03: 09/05/20 Amt<-£1,293.00> -£1,293.00
         Balance: -£1,293.00 Cleared: £0.00 Reconciled: £0.00

(gnc:dump-all-transactions)

  Trans cfbbc2a4: 12/07/19 Curr GBP  Desc<Customer-GBP>
n Split d12f74b2: 12/07/19 Acc<AR-GBP> Amt<£120.00> £120.00 Desc<Customer-GBP> Memo<due 91+>
n Split 3880e99c: 12/07/19 Acc<Standard Sales> Amt<-£20.00> -£20.00 Desc<Customer-GBP> Memo<due 91+>
n Split 6bd9c7e4: 12/07/19 Acc<Income-GBP> Amt<-£100.00> -£100.00 Desc<Customer-GBP> Memo<due 91+>

  Trans 60344bab: 09/10/19 Curr GBP  Desc<Customer-GBP>
n Split aaca8ee0: 09/10/19 Acc<AR-GBP> Amt<£225.00> £225.00 Desc<Customer-GBP> Memo<due 2-3 months ago>
n Split ee49bde8: 09/10/19 Acc<Standard Sales> Amt<-£20.00> -£20.00 Desc<Customer-GBP> Memo<due 2-3 months ago>
n Split e989e863: 09/10/19 Acc<Reduced Sales> Amt<-£5.00> -£5.00 Desc<Customer-GBP> Memo<due 2-3 months ago>
n Split 91d6cadd: 09/10/19 Acc<Income-GBP> Amt<-£200.00> -£200.00 Desc<Customer-GBP> Memo<due 2-3 months ago
This commit is contained in:
Christopher Lam 2020-08-19 20:19:13 +08:00
parent 705db5aa0b
commit c38740fcd9

View File

@ -1206,7 +1206,7 @@ query instead.")
(define-public (gnc:dump-split s show-acc?) (define-public (gnc:dump-split s show-acc?)
(define txn (xaccSplitGetParent s)) (define txn (xaccSplitGetParent s))
(format #t "~a Split ~a: ~a~a Amt<~a> ~a~a~a\n" (format #t "~a Split ~a: ~a~a Amt<~a> Val<~a> ~a~a~a\n"
(xaccSplitGetReconcile s) (xaccSplitGetReconcile s)
(string-take (gncSplitGetGUID s) 8) (string-take (gncSplitGetGUID s) 8)
(qof-print-date (xaccTransGetDate txn)) (qof-print-date (xaccTransGetDate txn))
@ -1220,10 +1220,12 @@ query instead.")
(xaccTransGetCurrency txn) (xaccTransGetCurrency txn)
(xaccSplitGetValue s))) (xaccSplitGetValue s)))
(maybe-str 'Desc (xaccTransGetDescription txn)) (maybe-str 'Desc (xaccTransGetDescription txn))
(maybe-str 'Action (xaccSplitGetAction s))
(maybe-str 'Memo (xaccSplitGetMemo s)))) (maybe-str 'Memo (xaccSplitGetMemo s))))
(define-public (gnc:dump-all-transactions) (define-public (gnc:dump-all-transactions)
(define query (qof-query-create-for-splits)) (define query (qof-query-create-for-splits))
(define (split-has-no-account? split) (null? (xaccSplitGetAccount split)))
(display "\n(gnc:dump-all-transactions)\n") (display "\n(gnc:dump-all-transactions)\n")
(qof-query-set-book query (gnc-get-current-book)) (qof-query-set-book query (gnc-get-current-book))
(qof-query-set-sort-order query (list SPLIT-TRANS TRANS-DATE-POSTED) '() '()) (qof-query-set-sort-order query (list SPLIT-TRANS TRANS-DATE-POSTED) '() '())
@ -1232,6 +1234,7 @@ query instead.")
(newline) (newline)
(match splits (match splits
(() (qof-query-destroy query)) (() (qof-query-destroy query))
(((? split-has-no-account?) . rest) (lp rest))
((split . rest) ((split . rest)
(let ((trans (xaccSplitGetParent split))) (let ((trans (xaccSplitGetParent split)))
(format #t " Trans ~a: ~a Curr ~a ~a~a\n" (format #t " Trans ~a: ~a Curr ~a ~a~a\n"