mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
[advanced-portfolio] simplify basis functions
This commit is contained in:
parent
c68f282861
commit
945c11e2b1
@ -184,27 +184,16 @@ by preventing negative stock balances.<br/>")
|
|||||||
|
|
||||||
;; sum up the contents of the b-list built by basis-builder below
|
;; sum up the contents of the b-list built by basis-builder below
|
||||||
(define (sum-basis b-list currency-frac)
|
(define (sum-basis b-list currency-frac)
|
||||||
(if (not (eqv? b-list '()))
|
(fold (lambda (a b) (+ (* (car a) (cdr a)) b)) 0 b-list))
|
||||||
(gnc-numeric-add (gnc-numeric-mul (caar b-list) (cdar b-list) currency-frac GNC-RND-ROUND)
|
|
||||||
(sum-basis (cdr b-list) currency-frac) currency-frac GNC-RND-ROUND)
|
|
||||||
(gnc-numeric-zero)))
|
|
||||||
|
|
||||||
;; sum up the total number of units in the b-list built by
|
;; sum up the total number of units in the b-list built by
|
||||||
;; basis-builder below
|
;; basis-builder below
|
||||||
(define (units-basis b-list)
|
(define (units-basis b-list)
|
||||||
(if (not (eqv? b-list '()))
|
(fold (lambda (a b) (+ (car a) b)) 0 b-list))
|
||||||
(gnc-numeric-add (caar b-list) (units-basis (cdr b-list))
|
|
||||||
units-denom GNC-RND-ROUND)
|
|
||||||
(gnc-numeric-zero)))
|
|
||||||
|
|
||||||
;; apply a ratio to an existing basis-list, useful for splits/mergers and spinoffs
|
;; apply a ratio to an existing basis-list, useful for splits/mergers and spinoffs
|
||||||
;; I need to get a brain and use (map) for this.
|
|
||||||
(define (apply-basis-ratio b-list units-ratio value-ratio)
|
(define (apply-basis-ratio b-list units-ratio value-ratio)
|
||||||
(if (not (eqv? b-list '()))
|
(map (lambda (a) (cons (* units-ratio (car a)) (* value-ratio (cdr a)))) b-list))
|
||||||
(cons (cons (gnc-numeric-mul units-ratio (caar b-list) units-denom GNC-RND-ROUND)
|
|
||||||
(gnc-numeric-mul value-ratio (cdar b-list) price-denom GNC-RND-ROUND))
|
|
||||||
(apply-basis-ratio (cdr b-list) units-ratio value-ratio))
|
|
||||||
'()))
|
|
||||||
|
|
||||||
;; in: b-list: an alist of pair of (num-units . price-per-unit)
|
;; in: b-list: an alist of pair of (num-units . price-per-unit)
|
||||||
;; b-units: units being sold - starts from first pair
|
;; b-units: units being sold - starts from first pair
|
||||||
|
Loading…
Reference in New Issue
Block a user