|
|
|
|
@ -390,6 +390,25 @@ construct gnc:make-gnc-monetary and use gnc:monetary->string instead.")
|
|
|
|
|
(define (gnc-commodity-collector-allzero? collector)
|
|
|
|
|
(every zero? (map cdr (collector 'format cons #f))))
|
|
|
|
|
|
|
|
|
|
;; (gnc:collector+ collectors ...) equiv to (+ collectors ...) and
|
|
|
|
|
;; outputs: a collector
|
|
|
|
|
(define (gnc:collector+ . collectors)
|
|
|
|
|
(let ((res (gnc:make-commodity-collector)))
|
|
|
|
|
(for-each (lambda (coll) (res 'merge coll #f)) collectors)
|
|
|
|
|
res))
|
|
|
|
|
|
|
|
|
|
;; (gnc:collectors- collectors ...) equiv to (- collectors ...), can
|
|
|
|
|
;; also negate single-argument collector. outputs collector
|
|
|
|
|
(define gnc:collector-
|
|
|
|
|
(case-lambda
|
|
|
|
|
(() (error "gnc:collector- needs at least 1 collector argument"))
|
|
|
|
|
((coll) (gnc:collector- (gnc:make-commodity-collector) coll))
|
|
|
|
|
((coll . rest)
|
|
|
|
|
(let ((res (gnc:make-commodity-collector)))
|
|
|
|
|
(res 'merge coll #f)
|
|
|
|
|
(res 'minusmerge (apply gnc:collector+ rest) #f)
|
|
|
|
|
res))))
|
|
|
|
|
|
|
|
|
|
;; add any number of gnc-monetary objects into a commodity-collector
|
|
|
|
|
;; usage: (gnc:monetaries-add monetary1 monetary2 ...)
|
|
|
|
|
;; output: a commodity-collector object
|
|
|
|
|
|