mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
REFACTOR: centralize left-cols to a vector-list
This commit is contained in:
parent
7b6ac3a077
commit
005fdb5f43
@ -853,33 +853,106 @@ tags within description, notes or memo. ")
|
|||||||
(left-cols-list
|
(left-cols-list
|
||||||
(append
|
(append
|
||||||
(add-if (column-uses? 'date)
|
(add-if (column-uses? 'date)
|
||||||
(_ "Date"))
|
(vector (_ "Date")
|
||||||
|
(lambda (split transaction-row?)
|
||||||
|
(if transaction-row?
|
||||||
|
(gnc:make-html-table-cell/markup
|
||||||
|
"date-cell"
|
||||||
|
(qof-print-date (xaccTransGetDate (xaccSplitGetParent split))))
|
||||||
|
""))))
|
||||||
|
|
||||||
(add-if (column-uses? 'reconciled-date)
|
(add-if (column-uses? 'reconciled-date)
|
||||||
(_ "Reconciled Date"))
|
(vector (_ "Reconciled Date")
|
||||||
|
(lambda (split transaction-row?)
|
||||||
|
(gnc:make-html-table-cell/markup
|
||||||
|
"date-cell"
|
||||||
|
(let ((date (xaccSplitGetDateReconciled split)))
|
||||||
|
(if (zero? date)
|
||||||
|
""
|
||||||
|
(qof-print-date date)))))))
|
||||||
|
|
||||||
(add-if (column-uses? 'num)
|
(add-if (column-uses? 'num)
|
||||||
(if (and BOOK-SPLIT-ACTION
|
(vector (if (and BOOK-SPLIT-ACTION
|
||||||
(opt-val gnc:pagename-display (N_ "Trans Number")))
|
(opt-val gnc:pagename-display (N_ "Trans Number")))
|
||||||
(_ "Num/T-Num")
|
(_ "Num/T-Num")
|
||||||
(_ "Num")))
|
(_ "Num"))
|
||||||
|
(lambda (split transaction-row?)
|
||||||
|
(define trans (xaccSplitGetParent split))
|
||||||
|
(if transaction-row?
|
||||||
|
(if BOOK-SPLIT-ACTION
|
||||||
|
(let* ((num (gnc-get-num-action trans split))
|
||||||
|
(t-num (if (opt-val gnc:pagename-display (N_ "Trans Number"))
|
||||||
|
(gnc-get-num-action trans #f)
|
||||||
|
""))
|
||||||
|
(num-string (if (string-null? t-num)
|
||||||
|
num
|
||||||
|
(string-append num "/" t-num))))
|
||||||
|
(gnc:make-html-table-cell/markup "text-cell" num-string))
|
||||||
|
(gnc:make-html-table-cell/markup "text-cell"
|
||||||
|
(gnc-get-num-action trans split)))
|
||||||
|
""))))
|
||||||
|
|
||||||
(add-if (column-uses? 'description)
|
(add-if (column-uses? 'description)
|
||||||
(_ "Description"))
|
(vector (_ "Description")
|
||||||
|
(lambda (split transaction-row?)
|
||||||
|
(define trans (xaccSplitGetParent split))
|
||||||
|
(if transaction-row?
|
||||||
|
(gnc:make-html-table-cell/markup
|
||||||
|
"text-cell"
|
||||||
|
(xaccTransGetDescription trans))
|
||||||
|
""))))
|
||||||
|
|
||||||
(add-if (column-uses? 'memo)
|
(add-if (column-uses? 'memo)
|
||||||
(if (column-uses? 'notes)
|
(vector (if (column-uses? 'notes)
|
||||||
(string-append (_ "Memo") "/" (_ "Notes"))
|
(string-append (_ "Memo") "/" (_ "Notes"))
|
||||||
(_ "Memo")))
|
(_ "Memo"))
|
||||||
(add-if (or (column-uses? 'account-name)
|
(lambda (split transaction-row?)
|
||||||
(column-uses? 'account-code))
|
(define trans (xaccSplitGetParent split))
|
||||||
(_ "Account"))
|
(define memo (xaccSplitGetMemo split))
|
||||||
(add-if (or (column-uses? 'other-account-name)
|
(if (and (string-null? memo) (column-uses? 'notes))
|
||||||
(column-uses? 'other-account-code))
|
(xaccTransGetNotes trans)
|
||||||
(_ "Transfer from/to"))
|
memo))))
|
||||||
|
|
||||||
|
(add-if (or (column-uses? 'account-name) (column-uses? 'account-code))
|
||||||
|
(vector (_ "Account")
|
||||||
|
(lambda (split transaction-row?)
|
||||||
|
(define account (xaccSplitGetAccount split))
|
||||||
|
(account-namestring account
|
||||||
|
(column-uses? 'account-code)
|
||||||
|
(column-uses? 'account-name)
|
||||||
|
(column-uses? 'account-full-name)))))
|
||||||
|
|
||||||
|
(add-if (or (column-uses? 'other-account-name) (column-uses? 'other-account-code))
|
||||||
|
(vector (_ "Transfer from/to")
|
||||||
|
(lambda (split transaction-row?)
|
||||||
|
(define other-account (xaccSplitGetAccount (xaccSplitGetOtherSplit split)))
|
||||||
|
(account-namestring other-account
|
||||||
|
(column-uses? 'other-account-code)
|
||||||
|
(column-uses? 'other-account-name)
|
||||||
|
(column-uses? 'other-account-full-name)))))
|
||||||
|
|
||||||
(add-if (column-uses? 'shares)
|
(add-if (column-uses? 'shares)
|
||||||
(_ "Shares"))
|
(vector (_ "Shares")
|
||||||
|
(lambda (split transaction-row?)
|
||||||
|
(gnc:make-html-table-cell/markup
|
||||||
|
"number-cell"
|
||||||
|
(xaccSplitGetAmount split)))))
|
||||||
|
|
||||||
(add-if (column-uses? 'price)
|
(add-if (column-uses? 'price)
|
||||||
(_ "Price")))))
|
(vector (_ "Price")
|
||||||
(if (null? headings-list)
|
(lambda (split transaction-row?)
|
||||||
(list "")
|
(define trans (xaccSplitGetParent split))
|
||||||
headings-list)))
|
(gnc:make-html-table-cell/markup
|
||||||
|
"number-cell"
|
||||||
|
(gnc:make-gnc-monetary (xaccTransGetCurrency trans)
|
||||||
|
(xaccSplitGetSharePrice split)))))))))
|
||||||
|
|
||||||
|
(if (and (null? left-cols-list)
|
||||||
|
(or (opt-val gnc:pagename-display "Totals")
|
||||||
|
(primary-get-info 'renderer-key)
|
||||||
|
(secondary-get-info 'renderer-key)))
|
||||||
|
(list (vector "" (lambda (s t) #f)))
|
||||||
|
left-cols-list)))
|
||||||
|
|
||||||
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;
|
;;
|
||||||
@ -1154,6 +1227,13 @@ tags within description, notes or memo. ")
|
|||||||
(trans (xaccSplitGetParent split))
|
(trans (xaccSplitGetParent split))
|
||||||
(account (xaccSplitGetAccount split)))
|
(account (xaccSplitGetAccount split)))
|
||||||
|
|
||||||
|
(define left-cols
|
||||||
|
(map (lambda (left-col)
|
||||||
|
(let* ((col-fn (vector-ref left-col 1))
|
||||||
|
(col-data (col-fn split transaction-row?)))
|
||||||
|
col-data))
|
||||||
|
left-columns))
|
||||||
|
|
||||||
(define cells
|
(define cells
|
||||||
(map (lambda (cell)
|
(map (lambda (cell)
|
||||||
(let* ((calculator (vector-ref cell 1))
|
(let* ((calculator (vector-ref cell 1))
|
||||||
@ -1164,87 +1244,11 @@ tags within description, notes or memo. ")
|
|||||||
reverse?
|
reverse?
|
||||||
subtotal?)))
|
subtotal?)))
|
||||||
cell-calculators))
|
cell-calculators))
|
||||||
|
|
||||||
(if (column-uses? 'date)
|
|
||||||
(addto! row-contents
|
|
||||||
(if transaction-row?
|
|
||||||
(gnc:make-html-table-cell/markup
|
|
||||||
"date-cell"
|
|
||||||
(qof-print-date (xaccTransGetDate trans)))
|
|
||||||
"")))
|
|
||||||
|
|
||||||
(if (column-uses? 'reconciled-date)
|
|
||||||
(addto! row-contents
|
|
||||||
(gnc:make-html-table-cell/markup
|
|
||||||
"date-cell"
|
|
||||||
(let ((date (xaccSplitGetDateReconciled split)))
|
|
||||||
(if (zero? date)
|
|
||||||
""
|
|
||||||
(qof-print-date date))))))
|
|
||||||
|
|
||||||
(if (column-uses? 'num)
|
|
||||||
(addto! row-contents
|
|
||||||
(if transaction-row?
|
|
||||||
(if BOOK-SPLIT-ACTION
|
|
||||||
(let* ((num (gnc-get-num-action trans split))
|
|
||||||
(t-num (if (if (gnc:lookup-option options
|
|
||||||
gnc:pagename-display
|
|
||||||
(N_ "Trans Number"))
|
|
||||||
(opt-val gnc:pagename-display (N_ "Trans Number"))
|
|
||||||
"")
|
|
||||||
(gnc-get-num-action trans #f)
|
|
||||||
""))
|
|
||||||
(num-string (if (string-null? t-num)
|
|
||||||
num
|
|
||||||
(string-append num "/" t-num))))
|
|
||||||
(gnc:make-html-table-cell/markup "text-cell" num-string))
|
|
||||||
(gnc:make-html-table-cell/markup "text-cell"
|
|
||||||
(gnc-get-num-action trans split)))
|
|
||||||
"")))
|
|
||||||
|
|
||||||
(if (column-uses? 'description)
|
|
||||||
(addto! row-contents
|
|
||||||
(if transaction-row?
|
|
||||||
(gnc:make-html-table-cell/markup
|
|
||||||
"text-cell"
|
|
||||||
(xaccTransGetDescription trans))
|
|
||||||
"")))
|
|
||||||
|
|
||||||
(if (column-uses? 'memo)
|
|
||||||
(let ((memo (xaccSplitGetMemo split)))
|
|
||||||
(if (and (string-null? memo) (column-uses? 'notes))
|
|
||||||
(addto! row-contents (xaccTransGetNotes trans))
|
|
||||||
(addto! row-contents memo))))
|
|
||||||
|
|
||||||
(if (or (column-uses? 'account-name) (column-uses? 'account-code))
|
|
||||||
(addto! row-contents (account-namestring account
|
|
||||||
(column-uses? 'account-code)
|
|
||||||
(column-uses? 'account-name)
|
|
||||||
(column-uses? 'account-full-name))))
|
|
||||||
|
|
||||||
(if (or (column-uses? 'other-account-name) (column-uses? 'other-account-code))
|
|
||||||
(addto! row-contents (account-namestring (xaccSplitGetAccount (xaccSplitGetOtherSplit split))
|
|
||||||
(column-uses? 'other-account-code)
|
|
||||||
(column-uses? 'other-account-name)
|
|
||||||
(column-uses? 'other-account-full-name))))
|
|
||||||
|
|
||||||
(if (column-uses? 'shares)
|
|
||||||
(addto! row-contents (gnc:make-html-table-cell/markup
|
|
||||||
"number-cell"
|
|
||||||
(xaccSplitGetAmount split))))
|
|
||||||
|
|
||||||
(if (column-uses? 'price)
|
|
||||||
(addto! row-contents
|
|
||||||
(gnc:make-html-table-cell/markup
|
|
||||||
"number-cell"
|
|
||||||
(gnc:make-gnc-monetary (xaccTransGetCurrency trans)
|
|
||||||
(xaccSplitGetSharePrice split)))))
|
|
||||||
|
|
||||||
;; hack to ensure cell alignment is corrected when no left columns were selected
|
|
||||||
;; this is needed because subtotal renderer will always insert at least 1 column
|
|
||||||
(if (null? row-contents)
|
|
||||||
(addto! row-contents (gnc:html-make-empty-cell)))
|
|
||||||
|
|
||||||
|
(for-each (lambda (col)
|
||||||
|
(addto! row-contents col))
|
||||||
|
left-cols)
|
||||||
|
|
||||||
(for-each (lambda (cell)
|
(for-each (lambda (cell)
|
||||||
(let ((cell-content (vector-ref cell 0))
|
(let ((cell-content (vector-ref cell 0))
|
||||||
;; reverse? returns a bool - will check if the cell type has reversible sign,
|
;; reverse? returns a bool - will check if the cell type has reversible sign,
|
||||||
|
Loading…
Reference in New Issue
Block a user