gnucash maint: Multiple changes pushed

Christopher Lam clam at code.gnucash.org
Wed Feb 20 06:37:39 EST 2019


Updated	 via  https://github.com/Gnucash/gnucash/commit/12d6ace9 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/c045e7c5 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/eab4eeca (commit)
	 via  https://github.com/Gnucash/gnucash/commit/058ef288 (commit)
	from  https://github.com/Gnucash/gnucash/commit/e3160af4 (commit)



commit 12d6ace967647ecc6f13d637e6d312ab737beefc
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Tue Feb 12 18:01:37 2019 +0800

    [commodity-utilities] first/second/third -> car/cadr/caddr

diff --git a/gnucash/report/report-system/commodity-utilities.scm b/gnucash/report/report-system/commodity-utilities.scm
index 1e938ebd9..ddc56546f 100644
--- a/gnucash/report/report-system/commodity-utilities.scm
+++ b/gnucash/report/report-system/commodity-utilities.scm
@@ -92,8 +92,8 @@ construct with gnc:make-gnc-monetary and gnc:monetary->string instead.")
 
 ;; Returns true if the given pricealist element is a non-zero price.
 (define (gnc:price-is-not-zero? elem)
-  (and (second elem)
-       (not (zero? (second elem)))))
+  (and (cadr elem)
+       (not (zero? (cadr elem)))))
 
 ;; Create a list of all prices of 'price-commodity' measured in the currency
 ;; 'report-currency'. The prices are taken from all splits in
@@ -153,32 +153,32 @@ construct with gnc:make-gnc-monetary and gnc:monetary->string instead.")
 
           ;; Try EURO exchange if necessary
           (if (and foreignlist
-                   (not (gnc-commodity-equiv (first foreignlist)
+                   (not (gnc-commodity-equiv (car foreignlist)
                                         report-currency)))
               (let ((exchanged (gnc:exchange-by-euro-numeric
-                                (first foreignlist) (second foreignlist)
+                                (car foreignlist) (cadr foreignlist)
                                 report-currency transaction-date)))
                 (if exchanged
                     (set! foreignlist
                           (list report-currency
                                 (gnc:gnc-monetary-amount exchanged)
-                                (third foreignlist))))))
+                                (caddr foreignlist))))))
 
           (list
            transaction-date
            (if foreignlist
-               (if (not (gnc-commodity-equiv (first foreignlist)
+               (if (not (gnc-commodity-equiv (car foreignlist)
                                              report-currency))
                    (begin
                      (warn "gnc:get-commodity-totalavg-prices: "
                            "Sorry, currency exchange not yet implemented:"
                            (gnc:monetary->string
                             (gnc:make-gnc-monetary
-                             (first foreignlist) (second foreignlist)))
+                             (car foreignlist) (cadr foreignlist)))
                            " (buying "
                            (gnc:monetary->string
                             (gnc:make-gnc-monetary
-                             price-commodity (third foreignlist)))
+                             price-commodity (caddr foreignlist)))
                            ") =? "
                            (gnc:monetary->string
                             (gnc:make-gnc-monetary
@@ -186,11 +186,11 @@ construct with gnc:make-gnc-monetary and gnc:monetary->string instead.")
                      0)
                    (begin
                      (set! total-foreign (gnc-numeric-add total-foreign
-                                                          (third foreignlist)
+                                                          (caddr foreignlist)
                                                           GNC-DENOM-AUTO
                                                           GNC-DENOM-LCD))
                      (set! total-domestic (gnc-numeric-add total-domestic
-                                                           (second foreignlist)
+                                                           (cadr foreignlist)
                                                            GNC-DENOM-AUTO
                                                            GNC-DENOM-LCD))
                      (if (not (zero? total-foreign))
@@ -270,40 +270,40 @@ construct with gnc:make-gnc-monetary and gnc:monetary->string instead.")
                         value-amount share-amount))))
 
         ;; Try EURO exchange if necessary
-        (if (not (gnc-commodity-equiv (first foreignlist)
+        (if (not (gnc-commodity-equiv (car foreignlist)
                                       report-currency))
             (let ((exchanged (gnc:exchange-by-euro-numeric
-                              (first foreignlist) (second foreignlist)
+                              (car foreignlist) (cadr foreignlist)
                               report-currency transaction-date)))
               (if exchanged
                   (set! foreignlist
                         (list report-currency
                               (gnc:gnc-monetary-amount exchanged)
-                              (third foreignlist))))))
+                              (caddr foreignlist))))))
 
         (list
          transaction-date
-         (if (not (gnc-commodity-equiv (first foreignlist)
+         (if (not (gnc-commodity-equiv (car foreignlist)
                                        report-currency))
              (begin
                (warn "get-commodity-inst-prices: "
                      "Sorry, currency exchange not yet implemented:"
                        (gnc:monetary->string
                         (gnc:make-gnc-monetary
-                         (first foreignlist) (second foreignlist)))
+                         (car foreignlist) (cadr foreignlist)))
                        " (buying "
                        (gnc:monetary->string
                         (gnc:make-gnc-monetary
-                         price-commodity (third foreignlist)))
+                         price-commodity (caddr foreignlist)))
                        ") =? "
                        (gnc:monetary->string
                         (gnc:make-gnc-monetary
                          report-currency 0)))
                0)
-             (if (not (zero? (third foreignlist)))
+             (if (not (zero? (caddr foreignlist)))
                  (gnc-numeric-div
-                  (second foreignlist)
-                  (third foreignlist)
+                  (cadr foreignlist)
+                  (caddr foreignlist)
                   GNC-DENOM-AUTO
                   (logior (GNC-DENOM-SIGFIGS 8) GNC-RND-ROUND)) 0)))))
     ;; Get all the interesting splits, sorted by date.
@@ -343,31 +343,31 @@ construct with gnc:make-gnc-monetary and gnc:monetary->string instead.")
 (define (gnc:pricelist-price-find-nearest
          pricelist date)
   (let* ((later (find (lambda (p)
-                        (< date (first p)))
+                        (< date (car p)))
                       pricelist))
          (earlierlist (take-while
                        (lambda (p)
-                         (>= date (first p)))
+                         (>= date (car p)))
                        pricelist))
          (earlier (and (not (null? earlierlist))
                        (last earlierlist))))
     ;;          (if earlier
     ;;              (warn "earlier"
-    ;;                    (qof-print-date (first earlier))
-    ;;                    (gnc-numeric-to-double (second earlier))))
+    ;;                    (qof-print-date (car earlier))
+    ;;                    (gnc-numeric-to-double (cadr earlier))))
     ;;          (if later
     ;;              (warn "later"
-    ;;                    (qof-print-date (first later))
-    ;;                    (gnc-numeric-to-double (second later))))
+    ;;                    (qof-print-date (car later))
+    ;;                    (gnc-numeric-to-double (cadr later))))
 
     (if (and earlier later)
-        (if (< (abs (- date (first earlier)))
-               (abs (- date (first later))))
-            (second earlier)
-            (second later))
+        (if (< (abs (- date (car earlier)))
+               (abs (- date (car later))))
+            (cadr earlier)
+            (cadr later))
         (or
-         (and earlier (second earlier))
-         (and later (second later))))))
+         (and earlier (cadr earlier))
+         (and later (cadr later))))))
 
 
 ;; Find the price of the 'commodity' in the 'pricealist' that is

commit c045e7c5ecb10ab051332693ab6bb9ef5901a452
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Wed Jan 9 08:55:47 2019 +0800

    [commodity-utilities] simplify gnc:uniform-commodity?
    
    old code was confusing; returns non-#f if either of following is true:
    - elts is null list
    - elts is 1-element list
      and report-commodity is a member of this 1-element list
    
    change to much more intelligible code

diff --git a/gnucash/report/report-system/commodity-utilities.scm b/gnucash/report/report-system/commodity-utilities.scm
index 5737bfdad..1e938ebd9 100644
--- a/gnucash/report/report-system/commodity-utilities.scm
+++ b/gnucash/report/report-system/commodity-utilities.scm
@@ -1032,9 +1032,7 @@ construct with gnc:make-gnc-monetary and gnc:monetary->string instead.")
 (define (gnc:uniform-commodity? amt report-commodity)
   ;; function to see if the commodity-collector amt
   ;; contains any foreign commodities
-  (let ((elts (amt 'format (lambda (comm amt) comm) #f)))
-    (or (null? elts)
-        (and (null? (cdr elts))
-             (member report-commodity
-                     elts
-                     gnc-commodity-equiv)))))
+  (let ((list-of-commodities (amt 'format (lambda (comm amt) comm) #f)))
+    (or (null? list-of-commodities)
+        (and (null? (cdr list-of-commodities))
+             (gnc-commodity-equiv report-commodity (car list-of-commodities))))))

commit eab4eecac85836abff26b4d699f9fd6af1bc8f9b
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Wed Jan 9 08:48:06 2019 +0800

    [commodity-utilities] deprecate gnc-commodity-collector-commodity-count
    
    this function is only used twice in exported functions. inline and
    refactor to be simpler.

diff --git a/gnucash/report/report-system/commodity-utilities.scm b/gnucash/report/report-system/commodity-utilities.scm
index 2cf855140..5737bfdad 100644
--- a/gnucash/report/report-system/commodity-utilities.scm
+++ b/gnucash/report/report-system/commodity-utilities.scm
@@ -1018,6 +1018,8 @@ construct with gnc:make-gnc-monetary and gnc:monetary->string instead.")
          balance)))
 
 (define (gnc-commodity-collector-commodity-count collector)
+  (issue-deprecation-warning
+   "gnc-commodity-collector-commodity-count is deprecated. please inline.")
   (length (collector 'format (lambda (comm amt) comm) #f)))
 
 (define (gnc-commodity-collector-contains-commodity? collector commodity)
@@ -1030,9 +1032,9 @@ construct with gnc:make-gnc-monetary and gnc:monetary->string instead.")
 (define (gnc:uniform-commodity? amt report-commodity)
   ;; function to see if the commodity-collector amt
   ;; contains any foreign commodities
-  (let ((elts (gnc-commodity-collector-commodity-count amt)))
-    (or (zero? elts)
-        (and (= elts 1)
+  (let ((elts (amt 'format (lambda (comm amt) comm) #f)))
+    (or (null? elts)
+        (and (null? (cdr elts))
              (member report-commodity
-                     (amt 'format (lambda (comm amt) comm) #f)
+                     elts
                      gnc-commodity-equiv)))))
diff --git a/gnucash/report/report-system/report-utilities.scm b/gnucash/report/report-system/report-utilities.scm
index 355c42174..3bacd3a28 100644
--- a/gnucash/report/report-system/report-utilities.scm
+++ b/gnucash/report/report-system/report-utilities.scm
@@ -395,9 +395,10 @@ construct gnc:make-gnc-monetary and use gnc:monetary->string instead.")
 ;; usage: (gnc:monetaries-add monetary1 monetary2 ...)
 ;; output: a monetary object
 (define (gnc:monetary+ . monetaries)
-  (let ((coll (apply gnc:monetaries-add monetaries)))
-    (if (= 1 (gnc-commodity-collector-commodity-count coll))
-        (car (coll 'format gnc:make-gnc-monetary #f))
+  (let* ((coll (apply gnc:monetaries-add monetaries))
+         (list-of-monetaries (coll 'format gnc:make-gnc-monetary #f)))
+    (if (null? (cdr list-of-monetaries))
+        (car list-of-monetaries)
         (throw "gnc:monetary+ expects 1 currency " (gnc:strify monetaries)))))
 
 ;; get the account balance at the specified date. if include-children?

commit 058ef28849400111a5e11a6496c12b27ca97ea3c
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Wed Jan 9 08:42:20 2019 +0800

    [commodity-utilities] deprecate gnc-commodity-collector-contains-commodity?
    
    this function is only used once. inline it.

diff --git a/gnucash/report/report-system/commodity-utilities.scm b/gnucash/report/report-system/commodity-utilities.scm
index b8568b9df..2cf855140 100644
--- a/gnucash/report/report-system/commodity-utilities.scm
+++ b/gnucash/report/report-system/commodity-utilities.scm
@@ -1021,6 +1021,8 @@ construct with gnc:make-gnc-monetary and gnc:monetary->string instead.")
   (length (collector 'format (lambda (comm amt) comm) #f)))
 
 (define (gnc-commodity-collector-contains-commodity? collector commodity)
+  (issue-deprecation-warning
+   "gnc-commodity-collector-contains-commodity? is deprecated. please inline.")
   (member commodity
           (collector 'format (lambda (comm amt) comm) #f)
           gnc-commodity-equiv))
@@ -1031,5 +1033,6 @@ construct with gnc:make-gnc-monetary and gnc:monetary->string instead.")
   (let ((elts (gnc-commodity-collector-commodity-count amt)))
     (or (zero? elts)
         (and (= elts 1)
-             (gnc-commodity-collector-contains-commodity?
-              amt report-commodity)))))
+             (member report-commodity
+                     (amt 'format (lambda (comm amt) comm) #f)
+                     gnc-commodity-equiv)))))
diff --git a/gnucash/report/report-system/report-system.scm b/gnucash/report/report-system/report-system.scm
index e7cd393af..7045a9861 100644
--- a/gnucash/report/report-system/report-system.scm
+++ b/gnucash/report/report-system/report-system.scm
@@ -66,7 +66,7 @@
 (export gnc:case-exchange-time-fn)
 (export gnc:sum-collector-commodity)
 (export gnc:sum-collector-stocks)
-(export gnc-commodity-collector-contains-commodity?)
+(export gnc-commodity-collector-contains-commodity?) ;deprecated
 
 ;; options-utilities.scm
 



Summary of changes:
 .../report/report-system/commodity-utilities.scm   | 75 +++++++++++-----------
 gnucash/report/report-system/report-system.scm     |  2 +-
 gnucash/report/report-system/report-utilities.scm  |  7 +-
 3 files changed, 44 insertions(+), 40 deletions(-)



More information about the gnucash-changes mailing list