mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
[budget] compact find-period-relative-to-current
This commit is contained in:
parent
cd496cbe3c
commit
9d38d7fa8e
@ -580,25 +580,20 @@
|
|||||||
;; adjuster - function that is used for calculation of period relative to current
|
;; adjuster - function that is used for calculation of period relative to current
|
||||||
(define (find-period-relative-to-current budget adjuster)
|
(define (find-period-relative-to-current budget adjuster)
|
||||||
(let* ((now (current-time))
|
(let* ((now (current-time))
|
||||||
(total-periods (gnc-budget-get-num-periods budget) )
|
(total-periods (gnc-budget-get-num-periods budget))
|
||||||
(last-period (- total-periods 1))
|
(last-period (1- total-periods))
|
||||||
(period-start (lambda (x) (gnc-budget-get-period-start-date budget x)))
|
(period-start (lambda (x) (gnc-budget-get-period-start-date budget x)))
|
||||||
(period-end (lambda (x) (gnc-budget-get-period-end-date budget x))))
|
(period-end (lambda (x) (gnc-budget-get-period-end-date budget x))))
|
||||||
(cond ((< now (period-start 0)) 1)
|
(cond ((< now (period-start 0)) 1)
|
||||||
((> now (period-end last-period)) total-periods)
|
((> now (period-end last-period)) total-periods)
|
||||||
( else (let ((found-period
|
(else (let ((found-period
|
||||||
(find (lambda (period)
|
(find (lambda (period)
|
||||||
(and (>= now (period-start period))
|
(<= (period-start period)
|
||||||
(<= now (period-end period))))
|
now
|
||||||
(iota total-periods))))
|
(period-end period)))
|
||||||
(gnc:debug "current period =" found-period)
|
(iota total-periods))))
|
||||||
(if found-period
|
(and found-period
|
||||||
(let ((adjusted (adjuster found-period)))
|
(max 0 (min last-period (adjuster found-period)))))))))
|
||||||
(cond
|
|
||||||
((< adjusted 0) 0)
|
|
||||||
((> adjusted last-period) last-period)
|
|
||||||
(else adjusted)))
|
|
||||||
#f))))))
|
|
||||||
;; Maps type of user selected period to concrete period number, if
|
;; Maps type of user selected period to concrete period number, if
|
||||||
;; user not selected to use range false is returned
|
;; user not selected to use range false is returned
|
||||||
(define (calc-user-period budget use-ranges? period-type period-exact-val)
|
(define (calc-user-period budget use-ranges? period-type period-exact-val)
|
||||||
|
Loading…
Reference in New Issue
Block a user