Update investment lots report to new options API.

This commit is contained in:
John Ralls 2022-12-23 11:06:50 -08:00
parent ea026ff4ee
commit 7b3928c4da

View File

@ -135,73 +135,59 @@
;; will use to display a dialog where the user can select ;; will use to display a dialog where the user can select
;; values for the report's parameters. ;; values for the report's parameters.
(define (options-generator) (define (options-generator)
(let* ((options (gnc:new-options))) (let* ((options (gnc-new-optiondb)))
;; This is just a helper function for making options.
;; See libgnucash/app-utils/options.scm for details.
(define (add-option new-option)
(gnc:register-option options new-option))
;; Accounts tab ;; Accounts tab
(add-option (gnc-register-account-list-limited-option options
(gnc:make-account-list-option
gnc:pagename-accounts gnc:pagename-accounts
optname-accounts optname-accounts
"a" "a"
(N_ "Stock Accounts to report on.") (N_ "Stock Accounts to report on.")
;; default-getter ;; default-getter
(lambda () (filter gnc:account-is-stock? (filter gnc:account-is-stock?
(gnc-account-get-descendants-sorted (gnc-account-get-descendants-sorted
(gnc-get-current-root-account)))) (gnc-get-current-root-account)))
;; value-validator (list ACCT-TYPE-STOCK ACCT-TYPE-MUTUAL))
(lambda (accounts) (list #t
(filter gnc:account-is-stock? accounts)))
#t)) ;; multiple-selection
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
gnc:pagename-accounts gnc:pagename-accounts
optname-zero-shares optname-zero-shares
"b" "b"
(N_ "Include accounts that have a zero share balances.") (N_ "Include accounts that have a zero share balances.")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
gnc:pagename-accounts gnc:pagename-accounts
optname-include-lotless-accounts optname-include-lotless-accounts
"c" "c"
(N_ "Include accounts with no lots") (N_ "Include accounts with no lots")
#f)) #f)
;; Chart tab ;; Chart tab
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-chart pagename-chart
optname-show-chart optname-show-chart
"a" "a"
(N_ "Include a chart that shows lot gains, grouped by account and gain type") (N_ "Include a chart that shows lot gains, grouped by account and gain type")
#t)) #t)
(add-option (gnc-register-multichoice-option options
(gnc:make-multichoice-option
pagename-chart pagename-chart
optname-chart-type optname-chart-type
"b" "b"
(N_ "What kind of chart to include") (N_ "What kind of chart to include")
'bar-stacked "bar-stacked"
(list (vector 'bar (N_ "Bar Chart")) (list (vector 'bar (N_ "Bar Chart"))
(vector 'bar-stacked (N_ "Stacked Bar Chart"))))) (vector 'bar-stacked (N_ "Stacked Bar Chart"))))
(add-option (gnc-register-multichoice-option options
(gnc:make-multichoice-option
pagename-chart pagename-chart
optname-chart-location optname-chart-location
"c" "c"
(N_ "Where to place the chart") (N_ "Where to place the chart")
'top "top"
(list (vector 'top (N_ "Top")) (list (vector 'top (N_ "Top"))
(vector 'bottom (N_ "Bottom"))))) (vector 'bottom (N_ "Bottom"))))
(gnc:options-add-plot-size! (gnc:options-add-plot-size!
options options
@ -213,79 +199,70 @@
(cons 'percent 50.0)) (cons 'percent 50.0))
;; Columns tab ;; Columns tab
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-columns pagename-columns
optname-show-lot-guid-column optname-show-lot-guid-column
"a" "a"
(N_ "Show the lot GUID table column") (N_ "Show the lot GUID table column")
#f)) #f)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-columns pagename-columns
optname-show-date-columns optname-show-date-columns
"b" "b"
(N_ "Show the lot open and close table columns") (N_ "Show the lot open and close table columns")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-columns pagename-columns
optname-show-bought-columns optname-show-bought-columns
"c" "c"
(N_ "Show purchase-related table columns") (N_ "Show purchase-related table columns")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-columns pagename-columns
optname-show-sold-columns optname-show-sold-columns
"d" "d"
(N_ "Show sale-related table columns") (N_ "Show sale-related table columns")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-columns pagename-columns
optname-show-end-columns optname-show-end-columns
"e" "e"
(N_ "Show end date amount and value table columns") (N_ "Show end date amount and value table columns")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-columns pagename-columns
optname-show-realized-gain-columns optname-show-realized-gain-columns
"f" "f"
(N_ "Show realized gain table column(s) for sold shares") (N_ "Show realized gain table column(s) for sold shares")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-columns pagename-columns
optname-show-unrealized-gain-columns optname-show-unrealized-gain-columns
"g" "g"
(N_ "Show unrealized gain table column(s) for unsold shares") (N_ "Show unrealized gain table column(s) for unsold shares")
#t)) #t)
(add-option (gnc-register-multichoice-option options
(gnc:make-multichoice-option
pagename-columns pagename-columns
optname-group-gains-by-age optname-group-gains-by-age
"h" "h"
(N_ "Group gains (and sales?) by long-term (LT) and short-term (ST)") (N_ "Group gains (and sales?) by long-term (LT) and short-term (ST)")
'gains-only "gains-only"
(list (vector 'no (N_ "No")) (list (vector 'no (N_ "No"))
(vector 'gains-only (N_ "Gains Only")) (vector 'gains-only (N_ "Gains Only"))
(vector 'gains-and-sales (N_ "Gains and Sales"))))) (vector 'gains-and-sales (N_ "Gains and Sales"))))
;; Note: Different governments may have different rules regarding how long ;; Note: Different governments may have different rules regarding how long
;; shares must be held to qualify for different tax treatment. So make ;; shares must be held to qualify for different tax treatment. So make
;; configurable the boundary between short-term and long-term capital ;; configurable the boundary between short-term and long-term capital
;; gains. ;; gains.
(add-option (gnc-register-number-range-option options
(gnc:make-number-range-option
pagename-columns pagename-columns
optname-long-term-years optname-long-term-years
"i" "i"
@ -294,49 +271,43 @@
;; year are long-term. ;; year are long-term.
0 ;; lower-bound 0 ;; lower-bound
10E9 ;; upper-bound 10E9 ;; upper-bound
0 ;; num-decimals 1) ;; step-size
1)) ;; step-size
;; Display tab ;; Display tab
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
gnc:pagename-display gnc:pagename-display
optname-show-long-account-names optname-show-long-account-names
"a" "a"
(N_ "Show long (instead of short) account names") (N_ "Show long (instead of short) account names")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
gnc:pagename-display gnc:pagename-display
optname-show-mnemonics optname-show-mnemonics
"b" "b"
(N_ "Show mnemonics with commodity amounts") (N_ "Show mnemonics with commodity amounts")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
gnc:pagename-display gnc:pagename-display
optname-include-closed-lots optname-include-closed-lots
"c" "c"
(N_ "Include closed lots in addition to open lots") (N_ "Include closed lots in addition to open lots")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
gnc:pagename-display gnc:pagename-display
optname-show-blanks-for-zeros optname-show-blanks-for-zeros
"d" "d"
(N_ "Show blank text instead of zero values for inner table cells. Does not apply to footer rows.") (N_ "Show blank text instead of zero values for inner table cells. Does not apply to footer rows.")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
gnc:pagename-display gnc:pagename-display
optname-show-split-rows optname-show-split-rows
"e" "e"
(N_ "Add a row for each split belonging to a lot, under the lot row.") (N_ "Add a row for each split belonging to a lot, under the lot row.")
#f)) #f)
;; General tab ;; General tab
(gnc:options-add-date-interval! (gnc:options-add-date-interval!
@ -348,72 +319,64 @@
optname-report-currency optname-report-currency
"b") "b")
(add-option (gnc-register-multichoice-option options
(gnc:make-multichoice-option
gnc:pagename-general gnc:pagename-general
optname-price-source optname-price-source
"c" (N_ "The source of price information.") 'pricedb-before "c" (N_ "The source of price information.") "pricedb-before"
(list (vector 'pricedb-before (N_ "Last up through report date")) (list (vector 'pricedb-before (N_ "Last up through report date"))
(vector 'pricedb-nearest (N_ "Closest to report date")) (vector 'pricedb-nearest (N_ "Closest to report date"))
(vector 'pricedb-latest (N_ "Most recent"))))) (vector 'pricedb-latest (N_ "Most recent"))))
;; Validation tab ;; Validation tab
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-validation pagename-validation
optname-include-only-accounts-with-warnings optname-include-only-accounts-with-warnings
"a" "a"
(N_ "Only show accounts that contain warnings. This is useful for quickly finding potential lot errors.") (N_ "Only show accounts that contain warnings. This is useful for quickly finding potential lot errors.")
#f)) #f)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-validation pagename-validation
optname-warn-if-multiple-bought-splits optname-warn-if-multiple-bought-splits
"b" "b"
(N_ "Lots with more than one purchase split are not well formed. It may make ambiguous the capital gains age") (N_ "Lots with more than one purchase split are not well formed. It may make ambiguous the capital gains age")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-validation pagename-validation
optname-warn-if-balance-negative optname-warn-if-balance-negative
"c" "c"
(N_ "Lots with a negative balance are not well formed.") (N_ "Lots with a negative balance are not well formed.")
#t)) #t)
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-validation pagename-validation
optname-warn-if-lot-title-blank optname-warn-if-lot-title-blank
"d" "d"
(N_ "Lot titles are optional. This warning applies to titles that are empty or only whitespace.") (N_ "Lot titles are optional. This warning applies to titles that are empty or only whitespace.")
#f)) ;; Defaulting to false, since lot titles are not required. #f) ;; Defaulting to false, since lot titles are not required.
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-validation pagename-validation
optname-warn-if-gains-mismatch optname-warn-if-gains-mismatch
"e" "e"
(N_ "Detect possible errors in 'Realized Gain/Loss' splits that are created when adding a sale split to a lot") (N_ "Detect possible errors in 'Realized Gain/Loss' splits that are created when adding a sale split to a lot")
#t)) #t)
(add-option (gnc-register-multichoice-option options
(gnc:make-multichoice-option
pagename-validation pagename-validation
optname-warn-type-if-split-not-in-lot optname-warn-type-if-split-not-in-lot
"f" (N_ "Detect splits that have not been assigned to a lot.") 'count "f" (N_ "Detect splits that have not been assigned to a lot.") "count"
(list (vector 'no (N_ "No")) (list (vector 'no (N_ "No"))
(vector 'count (N_ "Count")) (vector 'count (N_ "Count"))
(vector 'list (N_ "List"))))) (vector 'list (N_ "List"))))
(add-option (gnc-register-simple-boolean-option options
(gnc:make-simple-boolean-option
pagename-validation pagename-validation
optname-warn-if-balance-mismatch optname-warn-if-balance-mismatch
"g" "g"
(N_ "Balance mismatches may indicate a split that is not yet included in a lot") (N_ "Balance mismatches may indicate a split that is not yet included in a lot")
#t)) #t)
options)) options))