gnucash stable: Multiple changes pushed

Christopher Lam clam at code.gnucash.org
Sat Sep 13 04:26:05 EDT 2025


Updated	 via  https://github.com/Gnucash/gnucash/commit/2798ed7e (commit)
	 via  https://github.com/Gnucash/gnucash/commit/28beaf15 (commit)
	from  https://github.com/Gnucash/gnucash/commit/6b74812f (commit)



commit 2798ed7e8e871edbdaab939a8f323de1dce63aa6
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Sep 13 16:24:07 2025 +0800

    [balsheet-pnl] use gnc:accounts-get-commodities-sorted

diff --git a/gnucash/report/reports/standard/balsheet-pnl.scm b/gnucash/report/reports/standard/balsheet-pnl.scm
index 0e1e42bfa2..de8ed13865 100644
--- a/gnucash/report/reports/standard/balsheet-pnl.scm
+++ b/gnucash/report/reports/standard/balsheet-pnl.scm
@@ -779,7 +779,8 @@ also show overall period profit & loss."))
          ;; missing price, say so.
          (get-exchange-rates-fn
           (lambda (accounts col-idx)
-            (let ((commodities (gnc:accounts-get-commodities accounts common-currency))
+            (let ((commodities (gnc:accounts-get-commodities-sorted
+                                accounts common-currency))
                   (cell (gnc:make-html-text)))
               (for-each
                (lambda (commodity)

commit 28beaf1526a661b69808aa0bff4266288b93faaf
Author: Sherlock <119709043+agwekixj at users.noreply.github.com>
Date:   Fri Sep 12 20:27:39 2025 -0700

    Bug 799661 - Exchange Rate entries displayed in reports in an unstable order
    
    Added gnc:accounts-get-commodities-sorted

diff --git a/gnucash/report/html-utilities.scm b/gnucash/report/html-utilities.scm
index 579dfd2e85..670e424b4b 100644
--- a/gnucash/report/html-utilities.scm
+++ b/gnucash/report/html-utilities.scm
@@ -257,7 +257,7 @@
 (define (gnc:html-make-rates-table currency price-fn accounts)
   (define (cell c) (gnc:make-html-table-cell/markup "number-cell" c))
   (define table (gnc:make-html-table))
-  (let lp ((comm-list (gnc:accounts-get-commodities accounts currency)) (entries 0))
+  (let lp ((comm-list (gnc:accounts-get-commodities-sorted accounts currency)) (entries 0))
     (match comm-list
       (()
        (unless (zero? entries)
diff --git a/gnucash/report/report-utilities.scm b/gnucash/report/report-utilities.scm
index 7a39221f59..68160ffdeb 100644
--- a/gnucash/report/report-utilities.scm
+++ b/gnucash/report/report-utilities.scm
@@ -46,6 +46,7 @@
 (export gnc:decompose-accountlist)
 (export gnc:account-get-type-string-plural)
 (export gnc:accounts-get-commodities)
+(export gnc:accounts-get-commodities-sorted)
 (export gnc:get-current-account-tree-depth)
 (export gnc:accounts-and-all-descendants)
 (export gnc:make-value-collector)
@@ -227,6 +228,17 @@
             (accum (gnc:accounts-get-commodities (cdr accounts) exclude-commodity)))
         (if (or (equal? exclude-commodity comm) (member comm accum)) accum (cons comm accum)))))
 
+(define (gnc:accounts-get-commodities-sorted accounts exclude-commodity)
+  (stable-sort!
+    (stable-sort!
+      (gnc:accounts-get-commodities accounts exclude-commodity)
+      (lambda (a b)
+        (gnc:string-locale<?
+          (gnc-commodity-get-nice-symbol a) (gnc-commodity-get-nice-symbol b))))
+    (lambda (a b)
+      (gnc:string-locale<?
+        (gnc-commodity-get-namespace a) (gnc-commodity-get-namespace b)))))
+
 ;; Returns the depth of the current account hierarchy, that is, the
 ;; maximum level of subaccounts in the tree
 (define (gnc:get-current-account-tree-depth)
diff --git a/gnucash/report/reports/standard/test/test-balsheet-pnl.scm b/gnucash/report/reports/standard/test/test-balsheet-pnl.scm
index 64428a09e9..8c92cf8ad1 100644
--- a/gnucash/report/reports/standard/test/test-balsheet-pnl.scm
+++ b/gnucash/report/reports/standard/test/test-balsheet-pnl.scm
@@ -332,7 +332,7 @@
         '("#200.00" "$340.00" "30. FUNDS" "$14,424.52" "$106,709.00" "$106,709.00")
         (sxml->table-row-col sxml 1 3 6))
       (test-equal "show-rates enabled"
-        '("1. FUNDS" "$480 + 85/104" "#1.00" "$1.70")
+        '("#1.00" "$1.70" "1. FUNDS" "$480 + 85/104")
         (sxml->table-row-col sxml 2 #f #f)))
 
     ;;make-multilevel



Summary of changes:
 gnucash/report/html-utilities.scm                          |  2 +-
 gnucash/report/report-utilities.scm                        | 12 ++++++++++++
 gnucash/report/reports/standard/balsheet-pnl.scm           |  3 ++-
 gnucash/report/reports/standard/test/test-balsheet-pnl.scm |  2 +-
 4 files changed, 16 insertions(+), 3 deletions(-)



More information about the gnucash-changes mailing list