gnucash master: Multiple changes pushed

Christopher Lam clam at code.gnucash.org
Fri Apr 22 02:54:26 EDT 2022


Updated	 via  https://github.com/Gnucash/gnucash/commit/3e109d0c (commit)
	 via  https://github.com/Gnucash/gnucash/commit/dc620d4b (commit)
	 via  https://github.com/Gnucash/gnucash/commit/d48937cf (commit)
	 via  https://github.com/Gnucash/gnucash/commit/55f1d62f (commit)
	 via  https://github.com/Gnucash/gnucash/commit/f9f76ffc (commit)
	 via  https://github.com/Gnucash/gnucash/commit/3d53af04 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/823302ad (commit)
	 via  https://github.com/Gnucash/gnucash/commit/178ef44d (commit)
	 via  https://github.com/Gnucash/gnucash/commit/efbc12b3 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/37791b60 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/394e0a4b (commit)
	 via  https://github.com/Gnucash/gnucash/commit/27e5515c (commit)
	 via  https://github.com/Gnucash/gnucash/commit/639a88a0 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/a1ca43d1 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/b4587e43 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/de49a7e3 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/e1d52963 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/07a9494d (commit)
	 via  https://github.com/Gnucash/gnucash/commit/560f3125 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/d2ad1aa3 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/7cf3a5d9 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/fae7ea02 (commit)
	from  https://github.com/Gnucash/gnucash/commit/95487eb4 (commit)



commit 3e109d0c3702431801777e40cef12f52c7e458f3
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Fri Apr 22 13:45:13 2022 +0800

    remove deprecated functions in scheme

diff --git a/gnucash/report/html-acct-table.scm b/gnucash/report/html-acct-table.scm
index 9d8952fa3..4aa51f8e5 100644
--- a/gnucash/report/html-acct-table.scm
+++ b/gnucash/report/html-acct-table.scm
@@ -545,20 +545,6 @@
     (gnc:html-acct-table-add-accounts! acct-table accts)
     acct-table))
 
-;; some useful predicates to export
-(define (gnc:account-code-less-p a b)
-  (issue-deprecation-warning "gnc:account-code-less-p is unused.")
-  (gnc:string-locale<? (xaccAccountGetCode a)
-                       (xaccAccountGetCode b)))
-(define (gnc:account-name-less-p a b)
-  (issue-deprecation-warning "gnc:account-name-less-p is unused.")
-  (gnc:string-locale<? (xaccAccountGetName a)
-                       (xaccAccountGetName b)))
-(define (gnc:account-path-less-p a b)
-  (issue-deprecation-warning "gnc:account-path-less-p is deprecated. use gnc:account-full-name<? instead")
-  (gnc:string-locale<? (gnc-account-get-full-name a)
-                       (gnc-account-get-full-name b)))
-
 
 (define (gnc:html-acct-table-add-accounts! acct-table accounts)
   ;; 
diff --git a/gnucash/report/report-utilities.scm b/gnucash/report/report-utilities.scm
index c4756a9d1..f3a11c6a9 100644
--- a/gnucash/report/report-utilities.scm
+++ b/gnucash/report/report-utilities.scm
@@ -232,13 +232,6 @@
   (let ((root (gnc-get-current-root-account)))
     (gnc-account-get-tree-depth root)))
 
-;; Return accountslist *and* their descendant accounts
-(define (gnc:accounts-and-all-descendants accountslist)
-  (issue-deprecation-warning "gnc:accounts-and-all-descendants is \
-now deprecated, use gnc-accounts-and-all-descendants instead. sort \
-with gnc:account-full-name<? if necessary.")
-  (sort (gnc-accounts-and-all-descendants accountslist) gnc:account-full-name<?))
-
 ;;; Here's a statistics collector...  Collects max, min, total, and makes
 ;;; it easy to get at the mean.
 

commit dc620d4b24ef9683feca635f3114556086295ea6
Merge: 95487eb4a d48937cf9
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Fri Apr 22 13:43:47 2022 +0800

    Merge branch 'maint'

diff --cc gnucash/gnome-utils/gnc-main-window.cpp
index 1e4f7ea76,249de0490..39e500136
--- a/gnucash/gnome-utils/gnc-main-window.cpp
+++ b/gnucash/gnome-utils/gnc-main-window.cpp
@@@ -1339,10 -1328,10 +1340,10 @@@ gnc_main_window_prompt_for_save (GtkWid
  
          msg_area = gtk_message_dialog_get_message_area (GTK_MESSAGE_DIALOG(dialog));
          gtk_box_pack_end (GTK_BOX(msg_area), label, TRUE, TRUE, 0);
 -        g_object_set (G_OBJECT (label), "xalign", 0.0, NULL);
 +        g_object_set (G_OBJECT (label), "xalign", 0.0, nullptr);
  
          g_object_set_data (G_OBJECT (dialog), "count-down-label", label);
-         g_timeout_add_seconds (1, (GSourceFunc)auto_save_countdown, dialog);
+         timer_source = g_timeout_add_seconds (1, (GSourceFunc)auto_save_countdown, dialog);
      }
  
      response = gtk_dialog_run (GTK_DIALOG (dialog));

commit d48937cf9c0963edc7f3693b27d77a0abbc3aa1d
Author: Alex Aycinena <alex.aycinena at gmail.com>
Date:   Thu Apr 21 18:51:05 2022 -0700

    Bug #79769 - Allow US Income Tax txf code 296 (Returns and allowances) to be shown and assignable for both income and expense type accounts.

diff --git a/libgnucash/tax/us/txf.scm b/libgnucash/tax/us/txf.scm
index f07784915..c1a3a7f44 100644
--- a/libgnucash/tax/us/txf.scm
+++ b/libgnucash/tax/us/txf.scm
@@ -174,6 +174,7 @@
     (cons 'N292 #(not-impl "Sched C" "Spouse" 0 #t "" ((1980 ""))))
     (cons 'N319 #(not-impl "Sched C" "Principal business/prof" 2 #t "" ((1980 "A"))))
     (cons 'N293 #(none "Sched C" "Gross receipts or sales" 1 #t "" ((2012 "1") (2011 "1b") (1989 "1") (1980 "1a"))))
+    (cons 'N296 #(none "Sched C" "Returns and allowances" 1 #t "" ((1989 "2") (1980 "1b"))))
     (cons 'N303 #(none "Sched C" "Other business income" 1 #t "" ((1989 "6") (1987 "4") (1981 "4b") (1980 "4"))))
 
     (cons 'N497 #(not-impl "Sched C-EZ" "Schedule C-EZ" 1 #t ""))

commit 55f1d62ff21509d83c66f758a5dc6e8a64156fd7
Author: Petter Reinholdtsen <pere-weblate at hungry.com>
Date:   Thu Apr 21 14:07:37 2022 +0200

    Translation update  by Petter Reinholdtsen <pere-weblate at hungry.com> using Weblate
    
    po/nb.po: 53.6% (2892 of 5390 strings; 1636 fuzzy)
    397 failing checks (7.3%)
    Translation: GnuCash/Program (Norwegian Bokmål)
    Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/nb_NO/
    
    Co-authored-by: Petter Reinholdtsen <pere-weblate at hungry.com>

diff --git a/po/nb.po b/po/nb.po
index fa6625583..d290c49e0 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -12,7 +12,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
 "cgi?product=GnuCash&component=Translations\n"
 "POT-Creation-Date: 2022-03-09 18:00-0800\n"
-"PO-Revision-Date: 2022-03-19 08:55+0000\n"
+"PO-Revision-Date: 2022-04-21 12:07+0000\n"
 "Last-Translator: Petter Reinholdtsen <pere-weblate at hungry.com>\n"
 "Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/gnucash/"
 "gnucash/nb_NO/>\n"
@@ -485,6 +485,10 @@ msgid ""
 "(File[->Most Recently Used-List]).\n"
 "The full path is displayed in the status bar."
 msgstr ""
+"Hvis du vil vite hvilke kataloger de siste GnuCash-filene dine er lagret i, "
+"hold musepekeren over en av oppføringene i historiemenyen\n"
+"(Fil[->Sist brukte-liste]).\n"
+"Hele stien vises i statuslinjen."
 
 #: doc/tip_of_the_day.list.c:24
 msgid ""
@@ -504,17 +508,20 @@ msgid ""
 "Just locate the triangle at the far right of the column headings, and click "
 "it to see the different columns available."
 msgstr ""
+"Det er mulig å endre hvilke kolonner som vises i kontoplanen. Bare finn "
+"trekanten helt til høyre i kolonneoverskriftene, og klikk på den for å se de "
+"forskjellige kolonnene som er tilgjengelige."
 
 #: doc/tip_of_the_day.list.c:33
-#, fuzzy
 msgid ""
 "Click the right mouse button (control-click in Mac OS X) in the Accounts tab "
 "of the main window to bring up the account menu options. Within each "
 "register, clicking the right mouse button brings up the transaction menu "
 "options."
 msgstr ""
-"Bruk høyre museknapp i et hovedvindu for å få frem kontomenyvalgene. I hvert "
-"registreringsvindu henter høyre museknapp frem transaksjonsmenyvalgene."
+"Bruk høyre museknapp (Ctrl-klikk på Mac OS X) i kontofanen til hovedvinduen "
+"for å få frem kontomenyvalgene. Bruk høyre musknapp i hvert "
+"registreringsvindu for å hente frem transaksjonsmenyvalgene."
 
 #: doc/tip_of_the_day.list.c:38
 msgid ""
@@ -537,6 +544,12 @@ msgid ""
 "select \"View\" in the menu bar and check \"Double Line\" or\n"
 "check \"Double Line Mode\" in Preferences:Register Defaults."
 msgstr ""
+"Hver transaksjon har et «Notat»-felt hvor du kan legge inn nyttig "
+"informasjon.\n"
+"\n"
+"For å gjøre det synlig\n"
+"velg «Vis» i menylinjen og kryss av for «Dobbellinjer» eller\n"
+"sjekk «Dobbellinjemodus» i Alternativer: Register Standarder."
 
 #: doc/tip_of_the_day.list.c:50
 #, fuzzy
@@ -552,7 +565,6 @@ msgstr ""
 "\"Vis->Stil\"."
 
 #: doc/tip_of_the_day.list.c:55
-#, fuzzy
 msgid ""
 "As you enter amounts in the register, you can use the GnuCash calculator to "
 "add, subtract, multiply and divide. Simply type the first value, then select "
@@ -560,9 +572,9 @@ msgid ""
 "calculated amount."
 msgstr ""
 "Ved inntasting av beløp under registreringen kan du bruke GnuCash-"
-"kalkulatoren til å addere, subtrahere, multiplisere og dividere. Dette "
-"gjøres ved å skrive inn første verdi, så bruk «+», «-», «*» eller «/», fyll "
-"så inn neste verdi, og trykk enter for å fylle inn kalkulert verdi."
+"kalkulatoren til å legge sammen, trekke fra, gange og dele. Dette gjøres ved "
+"å skrive inn første verdi, så bruk «+», «-», «*» eller «/», fyll så inn "
+"neste verdi, og trykk enter for å fylle inn kalkulert verdi."
 
 #: doc/tip_of_the_day.list.c:60
 #, fuzzy
@@ -670,6 +682,8 @@ msgid ""
 "To raise the accounts menu in the transfer field of a register page, press "
 "the Menu key or the Ctrl-Down key combination."
 msgstr ""
+"For å heve kontomenyen i overføringsfeltet på en registerside, trykk på "
+"menytasten eller Ctrl-Ned tastekombinasjonen."
 
 #: doc/tip_of_the_day.list.c:108
 msgid ""

commit f9f76ffc76d6737174723d49784a0d3b43fd4d91
Author: Aleksandar Hadzhivelichkov <Raphaelo245 at gmail.com>
Date:   Thu Apr 21 14:07:36 2022 +0200

    Translation update  by Aleksandar Hadzhivelichkov <Raphaelo245 at gmail.com> using Weblate
    
    po/glossary/bg.po: 85.1% (184 of 216 strings; 15 fuzzy)
    10 failing checks (4.6%)
    Translation: GnuCash/Glossary (Bulgarian)
    Translate-URL: https://hosted.weblate.org/projects/gnucash/glossary/bg/
    
    Co-authored-by: Aleksandar Hadzhivelichkov <Raphaelo245 at gmail.com>

diff --git a/po/glossary/bg.po b/po/glossary/bg.po
index 41b6ceaa7..ddcf1c4f1 100644
--- a/po/glossary/bg.po
+++ b/po/glossary/bg.po
@@ -2,14 +2,15 @@
 # Copyright (C) 2001 Free Software Foundation, Inc.
 # Christian Stimming <stimming at tuhh.de>, 2001
 # An's Page <anspage at outlook.com>, 2020.
+# Aleksandar Hadzhivelichkov <Raphaelo245 at gmail.com>, 2022.
 msgid ""
 msgstr ""
 "Project-Id-Version: GnuCash 4.8\n"
-"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug.cgi?"
-"product=GnuCash&component=Translations\n"
+"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
+"cgi?product=GnuCash&component=Translations\n"
 "POT-Creation-Date: 2021-12-05 20:11+0100\n"
-"PO-Revision-Date: 2022-01-02 22:54+0000\n"
-"Last-Translator: Anonymous <noreply at weblate.org>\n"
+"PO-Revision-Date: 2022-04-21 01:13+0000\n"
+"Last-Translator: Aleksandar Hadzhivelichkov <Raphaelo245 at gmail.com>\n"
 "Language-Team: Bulgarian <https://hosted.weblate.org/projects/gnucash/"
 "glossary/bg/>\n"
 "Language: bg\n"
@@ -17,7 +18,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.10.1\n"
+"X-Generator: Weblate 4.12-dev\n"
 "X-Poedit-Language: Bulgarian\n"
 "X-Poedit-Country: BULGARIA\n"
 "X-Poedit-SourceCharset: utf-8\n"
@@ -28,7 +29,7 @@ msgstr "Срок"
 
 #. "Opening and closing quote symbols and optionally their key combos like [altgr]+[Y]/[X]. Define the preferred style of quotation, see https://en.wikipedia.org/wiki/Quotation_mark#Summary_table"
 msgid "\"\""
-msgstr ""
+msgstr "\"\""
 
 #. "A detailed record of money spent and received"
 msgid "account"
@@ -48,19 +49,19 @@ msgstr "име на сметка"
 
 #. "The left side of the balance sheet in T account form shows the application of funds in form of assets. Because it contains only assets use assets directly. Complement: Passive. See also: Report Form"
 msgid "account type: Active"
-msgstr "Акаунт сметка : Активен"
+msgstr "тип сметка : действаща"
 
 #. "A thing, esp. owned by a person or company, that has value and can be used or sold to pay debts. Dependent on the context you might use 'account type: Active' instead."
 msgid "account type: Asset"
-msgstr "account type: Актив"
+msgstr "тип сметка: Актив"
 
 #. "in fact: 'Active & Passive', group aka 'Balance Sheet accounts'; complement of 'Profit & Loss'"
 msgid "account type: Assets & Liabilities"
-msgstr "account type: Пасив"
+msgstr "тип сметка: Пасив"
 
 #. "(esp. US) (Brit = current account) a bank account from which money can be withdrawn without previous notice"
 msgid "account type: checking"
-msgstr "account type: разплащателна сметка"
+msgstr "тип сметка: разплащателна сметка"
 
 #. "-"
 msgid "account type: currency"
@@ -114,15 +115,15 @@ msgstr "account type: брокерска сметка"
 
 #. "-"
 msgid "account: parent account"
-msgstr "account: основна сметка"
+msgstr "сметка: основна сметка"
 
 #. "-"
 msgid "account: subaccount"
-msgstr "account: подсметка"
+msgstr "сметка: подсметка"
 
 #. "-"
 msgid "account: top level account"
-msgstr "account: главна сметка"
+msgstr "сметка: главна сметка"
 
 #. "The process of doing something that caused a transaction to happen"
 msgid "Action (register)"

commit 3d53af04b4f898977840404d885dd854c1dc624e
Author: Kárász Attila <cult.edie at gmail.com>
Date:   Wed Apr 20 14:13:08 2022 +0200

    Translation update  by Kárász Attila <cult.edie at gmail.com> using Weblate
    
    po/glossary/hu.po: 85.6% (185 of 216 strings; 25 fuzzy)
    2 failing checks (0.9%)
    Translation: GnuCash/Glossary (Hungarian)
    Translate-URL: https://hosted.weblate.org/projects/gnucash/glossary/hu/
    
    Translation update  by Kárász Attila <cult.edie at gmail.com> using Weblate
    
    po/hu.po: 55.9% (3018 of 5390 strings; 1397 fuzzy)
    530 failing checks (9.8%)
    Translation: GnuCash/Program (Hungarian)
    Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/hu/
    
    Co-authored-by: Kárász Attila <cult.edie at gmail.com>

diff --git a/po/glossary/hu.po b/po/glossary/hu.po
index 698454f27..2d9cd1e6d 100644
--- a/po/glossary/hu.po
+++ b/po/glossary/hu.po
@@ -10,7 +10,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
 "cgi?product=GnuCash&component=Translations\n"
 "POT-Creation-Date: 2021-12-05 20:11+0100\n"
-"PO-Revision-Date: 2022-04-06 09:35+0000\n"
+"PO-Revision-Date: 2022-04-20 12:13+0000\n"
 "Last-Translator: Kárász Attila <cult.edie at gmail.com>\n"
 "Language-Team: Hungarian <https://hosted.weblate.org/projects/gnucash/"
 "glossary/hu/>\n"
@@ -729,7 +729,7 @@ msgstr ""
 
 #. "aka 'running form' is in english speaking countries usually used for the balance sheet in one column. Complement: report form: T Account Form"
 msgid "report form: Vertical Form"
-msgstr ""
+msgstr "report form: Vízszintes elrendezés"
 
 #. "name of an equity account (?); to be distinguished from the opening balance."
 msgid "Retained Earnings"
@@ -741,7 +741,7 @@ msgstr "Fordított tranzakció (Sztornó)"
 
 #. "(In the customer summary report) The total amount of money received because something was sold."
 msgid "sales"
-msgstr ""
+msgstr "értékesítés"
 
 #. "To write data (typically a file) to a storage medium, such as a disk or tape."
 msgid "save, to (to a file)"
@@ -777,7 +777,7 @@ msgstr "osztás"
 
 #. "Alias of 'shares'"
 msgid "stocks"
-msgstr ""
+msgstr "készletek"
 
 #. "Sometimes one old share gets replaced by multiple new like 1 OLD @100¤ by 2 NEW @50¤"
 #, fuzzy
@@ -809,16 +809,18 @@ msgid "tax type: income tax"
 msgstr "Számla típus: Bevétel"
 
 #. "Usually only business users have to handle it, see https://en.wikipedia.org/wiki/Sales_tax."
+#, fuzzy
 msgid "tax type: sales tax"
-msgstr ""
+msgstr "tax type: forgalmi adó"
 
 #. "'Goods and Service Tax' is one form of sales tax."
+#, fuzzy
 msgid "tax type: GST"
-msgstr ""
+msgstr "tax type: GST"
 
 #. "'Value Added Tax' is the other form of sales tax."
 msgid "tax type: VAT"
-msgstr ""
+msgstr "tax type: ÁFA"
 
 #. "If you create a new e.g. style sheet, you can start from a template."
 msgid "template"
@@ -901,7 +903,7 @@ msgid "withdraw (in the reconcile dialog)"
 msgstr "kivét"
 
 msgid "stock"
-msgstr ""
+msgstr "készlet"
 
 msgid "due"
 msgstr "esedékes"
diff --git a/po/hu.po b/po/hu.po
index f0f930619..5b28210b1 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -11,7 +11,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
 "cgi?product=GnuCash&component=Translations\n"
 "POT-Creation-Date: 2022-03-09 18:00-0800\n"
-"PO-Revision-Date: 2022-04-06 09:35+0000\n"
+"PO-Revision-Date: 2022-04-20 12:13+0000\n"
 "Last-Translator: Kárász Attila <cult.edie at gmail.com>\n"
 "Language-Team: Hungarian <https://hosted.weblate.org/projects/gnucash/"
 "gnucash/hu/>\n"
@@ -587,11 +587,12 @@ msgstr "Hely : "
 #: borrowed/goffice/go-charmap-sel.c:476
 #, fuzzy
 msgid "Conversion Direction"
-msgstr "Konverzió kész"
+msgstr "Konverzió Iránya"
 
 #: borrowed/goffice/go-charmap-sel.c:477
+#, fuzzy
 msgid "This value determines which iconv test to perform."
-msgstr ""
+msgstr "Ez az érték határozza meg, hogy melyik iconv tesztet kell végrehajtani."
 
 #: borrowed/goffice/go-optionmenu.c:339
 msgid "Menu"

commit 823302ad5534b19cf1a806652d33452c8ffafe20
Author: ltai0001 <yltaief at gmail.com>
Date:   Wed Apr 20 14:13:07 2022 +0200

    Translation update  by ltai0001 <yltaief at gmail.com> using Weblate
    
    po/ar.po: 74.9% (4039 of 5390 strings; 874 fuzzy)
    368 failing checks (6.8%)
    Translation: GnuCash/Program (Arabic)
    Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/ar/
    
    Translation update  by ltai0001 <yltaief at gmail.com> using Weblate
    
    po/ar.po: 74.9% (4038 of 5390 strings; 875 fuzzy)
    371 failing checks (6.8%)
    Translation: GnuCash/Program (Arabic)
    Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/ar/
    
    Translation update  by ltai0001 <yltaief at gmail.com> using Weblate
    
    po/ar.po: 74.7% (4028 of 5390 strings; 885 fuzzy)
    390 failing checks (7.2%)
    Translation: GnuCash/Program (Arabic)
    Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/ar/
    
    Translation update  by ltai0001 <yltaief at gmail.com> using Weblate
    
    po/ar.po: 74.6% (4026 of 5390 strings; 887 fuzzy)
    395 failing checks (7.3%)
    Translation: GnuCash/Program (Arabic)
    Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/ar/
    
    Translation update  by ltai0001 <yltaief at gmail.com> using Weblate
    
    po/glossary/ar.po: 7.8% (17 of 216 strings; 0 fuzzy)
    0 failing checks (0.0%)
    Translation: GnuCash/Glossary (Arabic)
    Translate-URL: https://hosted.weblate.org/projects/gnucash/glossary/ar/
    
    Co-authored-by: ltai0001 <yltaief at gmail.com>

diff --git a/po/ar.po b/po/ar.po
index 9c4037f81..c22af544d 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -16,7 +16,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
 "cgi?product=GnuCash&component=Translations\n"
 "POT-Creation-Date: 2022-03-09 18:00-0800\n"
-"PO-Revision-Date: 2022-04-10 21:10+0000\n"
+"PO-Revision-Date: 2022-04-20 05:10+0000\n"
 "Last-Translator: ltai0001 <yltaief at gmail.com>\n"
 "Language-Team: Arabic <https://hosted.weblate.org/projects/gnucash/gnucash/"
 "ar/>\n"
@@ -433,9 +433,8 @@ msgid "Western (Windows-1252)"
 msgstr ""
 
 #: borrowed/goffice/go-charmap-sel.c:441
-#, fuzzy
 msgid "Locale: "
-msgstr "لغة النظام:"
+msgstr "لغة النظام: "
 
 #: borrowed/goffice/go-charmap-sel.c:476
 #, fuzzy
@@ -2745,11 +2744,11 @@ msgstr "المجموعات في حساب %s"
 
 #: gnucash/gnome/dialog-order.c:171
 msgid "The Order must be given an ID."
-msgstr "يجب ان يعطى معرف للطلب"
+msgstr "يجب ان يعطى معرف للطلب."
 
 #: gnucash/gnome/dialog-order.c:278
 msgid "The Order must have at least one Entry."
-msgstr "في هذا الطلب تحتاج ادخال واحد على الأقل"
+msgstr "يجب أن يحتوي الطلب على إدخال واحد على الأقل."
 
 #: gnucash/gnome/dialog-order.c:300
 msgid ""
@@ -2989,7 +2988,7 @@ msgstr "يجب إدخال كمية صالحة."
 
 #: gnucash/gnome/dialog-print-check.c:824
 msgid "Cannot save check format file."
-msgstr "لا يمكن hgحفظ. تحقق من نسق الملف."
+msgstr "لا يمكن الحفظ. تحقق من نسق الملف."
 
 #: gnucash/gnome/dialog-print-check.c:826
 #, fuzzy, c-format
@@ -3970,7 +3969,7 @@ msgstr "البحث عن نص"
 #: gnucash/gnome/gnc-plugin-business.c:312
 #: gnucash/gnome/gnc-plugin-business.c:313
 msgid "Initialize Test Data"
-msgstr "تهيئة بيانات الاختبار "
+msgstr "تهيئة بيانات الاختبار"
 
 #: gnucash/gnome/gnc-plugin-business.c:326
 msgid "Assign as payment..."
@@ -4368,9 +4367,9 @@ msgid "All transactions in this account will be deleted."
 msgstr "سيتم حذف جميع المعاملات في هذا الحساب."
 
 #: gnucash/gnome/gnc-plugin-page-account-tree.c:1754
-#, fuzzy, c-format
+#, c-format
 msgid "Its sub-account will be moved to the account %s."
-msgstr "سيتم نقل كل الحسابات الفرعية للحساب %s "
+msgstr "سيتم نقل كل الحسابات الفرعية للحساب %s"
 
 #: gnucash/gnome/gnc-plugin-page-account-tree.c:1760
 #, fuzzy, c-format
@@ -5890,7 +5889,7 @@ msgstr "مسح"
 #: gnucash/import-export/import-match-picker.c:437
 #: gnucash/report/trep-engine.scm:151
 msgid "Reconciled"
-msgstr "تمت التسوية "
+msgstr "تمت التسوية"
 
 #: gnucash/gnome/gnc-plugin-page-register.c:3449
 #: gnucash/gnome-search/search-reconciled.c:230
@@ -6003,7 +6002,7 @@ msgstr "تصدير"
 #. to be used as toolbar button label.
 #: gnucash/gnome/gnc-plugin-page-report.c:1140
 msgid "Save Config"
-msgstr ""
+msgstr "حفظ الخيارات"
 
 #. Translators: This string is meant to be a short alternative for "Save Report Configuration As..."
 #. to be used as toolbar button label.
@@ -6014,7 +6013,7 @@ msgstr "حفظ بإسم ..."
 
 #: gnucash/gnome/gnc-plugin-page-report.c:1144
 msgid "Make Pdf"
-msgstr ""
+msgstr "إنشاء PDF"
 
 #: gnucash/gnome/gnc-plugin-page-report.c:1196
 #, c-format
@@ -6836,7 +6835,7 @@ msgstr "الرصيد النهائي"
 
 #: gnucash/gnome/window-reconcile2.c:1814 gnucash/gnome/window-reconcile.c:2030
 msgid "Reconciled Balance"
-msgstr "تسوية الرصيد "
+msgstr "تسوية الرصيد"
 
 #: gnucash/gnome/window-reconcile2.c:1824 gnucash/gnome/window-reconcile.c:2040
 #: gnucash/report/reports/standard/cash-flow.scm:312
@@ -7499,10 +7498,8 @@ msgid ""
 msgstr ""
 
 #: gnucash/gnome-utils/dialog-account.c:1329
-#, fuzzy
-#| msgid "Cancel the current entry"
 msgid "Cannot change currency"
-msgstr "إلغاء الإدخال الحالي"
+msgstr "لا يمكن تغيير العملة"
 
 #: gnucash/gnome-utils/dialog-account.c:1418
 #, fuzzy
@@ -7577,7 +7574,7 @@ msgid ""
 "Commodity: "
 msgstr ""
 "\n"
-"سلعة:"
+"سلعة: "
 
 #. Translators: Replace here and later CUSIP by the name of your local
 #. National Securities Identifying Number
@@ -7590,7 +7587,7 @@ msgid ""
 "Exchange code (ISIN, CUSIP or similar): "
 msgstr ""
 "\n"
-"كود البورصة (الترقيم الدولي، CUSIP أو ما شابه ذلك):"
+"كود البورصة (الترقيم الدولي، CUSIP أو ما شابه ذلك): "
 
 #: gnucash/gnome-utils/dialog-commodity.c:176
 msgid ""
@@ -7598,7 +7595,7 @@ msgid ""
 "Mnemonic (Ticker symbol or similar): "
 msgstr ""
 "\n"
-"(رمز السهم أو ما شابه ذلك):"
+"(رمز السهم أو ما شابه ذلك): "
 
 #: gnucash/gnome-utils/dialog-commodity.c:275
 #: gnucash/gtkbuilder/dialog-commodity.glade:644
@@ -8075,7 +8072,7 @@ msgstr "المبلغ المدين"
 #: gnucash/gnome-utils/dialog-transfer.c:2060
 #: gnucash/gtkbuilder/dialog-transfer.glade:560
 msgid "To Amount"
-msgstr "القيمةإلى "
+msgstr "القيمة إلى"
 
 #: gnucash/gnome-utils/dialog-utils.c:435
 msgid ""
@@ -8307,7 +8304,7 @@ msgstr "_عرض"
 #: gnucash/gnome-utils/gnc-dense-cal.c:338
 #: gnucash/report/stylesheets/footer.scm:377
 msgid "Date: "
-msgstr "التاريخ:"
+msgstr "التاريخ: "
 
 #: gnucash/gnome-utils/gnc-dense-cal.c:351
 #: gnucash/gnome-utils/gnc-tree-view-sx-list.c:147
@@ -8568,7 +8565,6 @@ msgstr ""
 "البرنامج لمعرفة كيفية انهاء جلسات مستخدمين معلقة ."
 
 #: gnucash/gnome-utils/gnc-file.c:515
-#, fuzzy
 msgid ""
 "The library \"libdbi\" installed on your system doesn't correctly store "
 "large numbers. This means GnuCash cannot use SQL databases correctly. "
@@ -8579,10 +8575,9 @@ msgstr ""
 "المكتبة \"libdbi\" مخزنة في نظامك بشكل لا يحفظ مبالغ كبيرة بشكل صحيح. هذا "
 "يعني أن البرنامج لا يستطيع استخدام قاعدة البيانات. إن البرنامج لن يقوم بفتح "
 "أو حفظ قاعدة البيانات حتى يتم تحميل مكتبة أخرى. أرجو زيارة الموقع التالي "
-"لمزيد من المعلومات https://bugs.gnucash.org/show_bug.cgi?id=611936 "
+"لمزيد من المعلومات https://bugs.gnucash.org/show_bug.cgi?id=611936"
 
 #: gnucash/gnome-utils/gnc-file.c:527
-#, fuzzy
 msgid ""
 "GnuCash could not complete a critical test for the presence of a bug in the "
 "\"libdbi\" library. This may be caused by a permissions misconfiguration of "
@@ -8591,7 +8586,7 @@ msgid ""
 msgstr ""
 "البرنامج لا يستطيع إكمال عملية الإختبار للمكتبة \"libdbi\" بسبب وجود عطل "
 "بها. أرجو زيارة الرابط التالي لمزيد من المعلومات https://bugs.gnucash.org/"
-"show_bug.cgi?id=645216 "
+"show_bug.cgi?id=645216"
 
 #: gnucash/gnome-utils/gnc-file.c:537
 msgid ""
@@ -10303,19 +10298,16 @@ msgid ""
 msgstr ""
 
 #: gnucash/gnucash-cli.cpp:113
-#, fuzzy
 msgid "Name of the report to run\n"
-msgstr "اسم الشركة.\n"
+msgstr "اسم التقرير المراد تشغيله\n"
 
 #: gnucash/gnucash-cli.cpp:115
-#, fuzzy
 msgid "Specify export type\n"
-msgstr "2. حدد نوع الاستيراد\n"
+msgstr "حدد نوع الاستيراد\n"
 
 #: gnucash/gnucash-cli.cpp:117
-#, fuzzy
 msgid "Output file for report\n"
-msgstr "خيارات الخلفية المكررة للتقارير\n"
+msgstr "ملف الإخراج للتقرير\n"
 
 #: gnucash/gnucash-cli.cpp:132
 msgid "Unknown quotes command '{1}'"
@@ -11161,10 +11153,8 @@ msgstr ""
 "في قائمة المطابقة."
 
 #: gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.generic.gschema.xml.in:25
-#, fuzzy
-#| msgid "Add matching transactions below this score"
 msgid "Likely matching transaction within these days"
-msgstr "قم بإضافة العمليات المتطابقة التي لها نقاط أقل من "
+msgstr "العمليات المتطابقة خلال هذه الأيام"
 
 #: gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.generic.gschema.xml.in:26
 #, fuzzy
@@ -11198,7 +11188,7 @@ msgstr ""
 
 #: gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.generic.gschema.xml.in:35
 msgid "Add matching transactions below this score"
-msgstr "قم بإضافة العمليات المتطابقة التي لها نقاط أقل من "
+msgstr "قم بإضافة العمليات المتطابقة التي لها نقاط أقل من"
 
 #: gnucash/gschemas/org.gnucash.GnuCash.dialogs.import.generic.gschema.xml.in:36
 msgid ""
@@ -12010,7 +12000,7 @@ msgid ""
 msgstr ""
 "إذا حددت، يتم تعيين الخيار الافتراضي للدفتر للملفات الجديدة بحيث الصيغة "
 "الرقمي خلية في العرض / التحديث بالسجلات لحقل عمل الانقسام و رقم المعاملة "
-"يظهر على السطر الثاني في وضع خط مزدوج ( غير مرئي في وضع سطر واحد). "
+"يظهر على السطر الثاني في وضع خط مزدوج ( غير مرئي في وضع سطر واحد)."
 
 #: gnucash/gschemas/org.gnucash.GnuCash.gschema.xml.in:241
 #, fuzzy
@@ -13422,11 +13412,12 @@ msgid "Import Preview"
 msgstr "استيراد الحسابات الآن"
 
 #: gnucash/gtkbuilder/assistant-csv-price-import.glade:1014
-#, fuzzy
 msgid ""
 "<b>Press \"Apply\" to add the Prices.\n"
 "\"Cancel\" to abort.</b>"
-msgstr "قم بالضغط على تطبيق لعمل ملف تصدير./nاضغط إلغاء لإيقاف العملية."
+msgstr ""
+"<b>اضغط على \"تطبيق\" لإضافة الأسعار.\n"
+"\"إلغاء\" للإجهاض</b>"
 
 #: gnucash/gtkbuilder/assistant-csv-price-import.glade:1029
 #, fuzzy
@@ -13626,7 +13617,7 @@ msgstr ""
 
 #: gnucash/gtkbuilder/assistant-hierarchy.glade:163
 msgid "<b>Categories</b>"
-msgstr "<b>التصنيفات<b/>"
+msgstr "<b>التصنيفات</b>"
 
 #: gnucash/gtkbuilder/assistant-hierarchy.glade:273
 #: gnucash/gtkbuilder/dialog-account.glade:906
@@ -13635,7 +13626,7 @@ msgstr "مسح الكل"
 
 #: gnucash/gtkbuilder/assistant-hierarchy.glade:311
 msgid "<b>Category Description</b>"
-msgstr "<b>وصف التصنيفات<b/>"
+msgstr "<b>وصف التصنيفات</b>"
 
 #. %s is an account template
 #: gnucash/gtkbuilder/assistant-hierarchy.glade:377
@@ -14018,7 +14009,7 @@ msgstr "وهمية"
 
 #: gnucash/gtkbuilder/assistant-qif-import.glade:30
 msgid "QIF Import Assistant"
-msgstr "مساعد استيراد QIF "
+msgstr "مساعد استيراد QIF"
 
 #. Run the assistant in your language to see GTK's translation of the button labels.
 #: gnucash/gtkbuilder/assistant-qif-import.glade:42
@@ -14361,7 +14352,6 @@ msgstr "استيراد QIF"
 
 #. Run the assistant in your language to see GTK's translation of the button labels.
 #: gnucash/gtkbuilder/assistant-qif-import.glade:1227
-#, fuzzy
 msgid ""
 "\n"
 "If you are importing a QIF file from a bank or other financial institution, "
@@ -14384,7 +14374,7 @@ msgstr ""
 "ستظهر لديك المطابقات أسفل منها. اذا وجدت أن المطابقة صحيحة اضغط عليها. ان "
 "تحديدك سيتم تأكيده في عامود \"مطابق\".\n"
 "\n"
-"اضغط على \"التالي\" لمراجعة نتائج المطابقة. "
+"اضغط على \"التالي\" لمراجعة نتائج المطابقة."
 
 #: gnucash/gtkbuilder/assistant-qif-import.glade:1243
 msgid "Match existing transactions"
@@ -14422,7 +14412,7 @@ msgstr ""
 "اضغط على \"عودة\" لمراجعة مطابقة الحسابات والمجموعات وتعديل اعدادات العملة "
 "أو الإستثمار للحسابات الجديدة أو إضافة ملفات جديدة.\n"
 "\n"
-"اضغط على\"إلغاء\" لإلغاء عملية الاستيراد. "
+"اضغط على\"إلغاء\" لإلغاء عملية الاستيراد."
 
 #: gnucash/gtkbuilder/assistant-qif-import.glade:1361
 msgid "Update your GnuCash accounts"
@@ -15049,7 +15039,7 @@ msgstr "_إظهار الوثائق"
 #: gnucash/gtkbuilder/gnc-plugin-page-register2.glade:561
 #: gnucash/gtkbuilder/gnc-plugin-page-register.glade:406
 msgid "_Reconciled"
-msgstr "تمت التسوية "
+msgstr "_تمت التسوية"
 
 #: gnucash/gtkbuilder/dialog-account-picker.glade:72
 msgid "_Cleared"
@@ -15149,7 +15139,7 @@ msgstr "فتح المستندات المستوردة في علامة تبويب
 
 #: gnucash/gtkbuilder/dialog-bi-import-gui.glade:392
 msgid "Open not yet posted documents in tabs "
-msgstr "فتح المستندات التي لم ترحل في علامة تبويب جديدة"
+msgstr "فتح المستندات التي لم ترحل في علامة تبويب جديدة "
 
 #: gnucash/gtkbuilder/dialog-bi-import-gui.glade:410
 msgid "Don't open imported documents in tabs"
@@ -15533,7 +15523,7 @@ msgstr "حد الائتمان:"
 #: gnucash/gtkbuilder/dialog-customer.glade:566
 #: gnucash/gtkbuilder/dialog-vendor.glade:536
 msgid "Tax Included"
-msgstr "وتشمل الضرائب "
+msgstr "وتشمل الضرائب"
 
 #: gnucash/gtkbuilder/dialog-customer.glade:579
 #: gnucash/gtkbuilder/dialog-tax-table.glade:399
@@ -16057,9 +16047,8 @@ msgstr "حدد مطابقة المعاملات الموجودة"
 
 #. Dialog Select matching transactions
 #: gnucash/gtkbuilder/dialog-import.glade:313
-#, fuzzy
 msgid "Show Reconciled"
-msgstr "تمت التسوية "
+msgstr "تمت التسوية"
 
 #. Dialog Select matching transactions
 #: gnucash/gtkbuilder/dialog-import.glade:374
@@ -16690,7 +16679,7 @@ msgstr "حرف"
 #: gnucash/gtkbuilder/dialog-preferences.glade:821
 #: gnucash/gtkbuilder/gnc-date-format.glade:207
 msgid "Sample"
-msgstr "عينة "
+msgstr "عينة"
 
 #: gnucash/gtkbuilder/dialog-preferences.glade:858
 msgid "Show the Account Color as background"
@@ -16845,9 +16834,8 @@ msgid "days"
 msgstr "أيام"
 
 #: gnucash/gtkbuilder/dialog-preferences.glade:1664
-#, fuzzy
 msgid "<b>_Retain log/backup files</b>"
-msgstr "الإحتفاظ بملفات السجل:"
+msgstr "<b>الا_حتفاظ بملفات السجل/النسخ الاحتياطي</b>"
 
 #: gnucash/gtkbuilder/dialog-preferences.glade:1676
 msgid "Com_press files"
@@ -17844,7 +17832,7 @@ msgstr "أدخل عرض صف/ عمود التقرير"
 
 #: gnucash/gtkbuilder/dialog-report.glade:544
 msgid "_Row span"
-msgstr "_امتداد الصف "
+msgstr "_امتداد الصف"
 
 #: gnucash/gtkbuilder/dialog-report.glade:559
 msgid "_Column span"
@@ -18098,7 +18086,7 @@ msgstr "<b>مرات الحدوث</b>"
 
 #: gnucash/gtkbuilder/dialog-sx.glade:1174
 msgid "Last Occurred: "
-msgstr "حدث آخر:"
+msgstr "حدث آخر: "
 
 #: gnucash/gtkbuilder/dialog-sx.glade:1208
 msgid "Repeats:"
@@ -18295,7 +18283,7 @@ msgstr "UK (31/12/2001)"
 
 #: gnucash/gtkbuilder/gnc-date-format.glade:18
 msgid "Europe (31.12.2001)"
-msgstr "Europe (31.12.2001)"
+msgstr "أوروبا (31.12.2001)"
 
 #: gnucash/gtkbuilder/gnc-date-format.glade:21
 msgid "ISO (2001-12-31)"
@@ -18716,7 +18704,7 @@ msgstr "حدد تاريخ الحدوث أعلاه."
 #: gnucash/gtkbuilder/gnc-frequency.glade:710
 msgctxt "Daily"
 msgid "Every"
-msgstr "كل . يومي"
+msgstr "كل"
 
 #: gnucash/gtkbuilder/gnc-frequency.glade:741
 msgctxt "Daily"
@@ -19129,7 +19117,7 @@ msgstr "سنة"
 
 #: gnucash/gtkbuilder/gnc-recurrence.glade:50
 msgid "Every "
-msgstr "كل"
+msgstr "كل "
 
 #: gnucash/gtkbuilder/gnc-recurrence.glade:62
 msgid ""
@@ -19289,7 +19277,7 @@ msgstr "جديد؟"
 
 #: gnucash/import-export/aqb/assistant-ab-initial.glade:8
 msgid "AqBanking Initial Assistant"
-msgstr "المساعدة الأولية لبرنامج AqBanking "
+msgstr "المساعدة الأولية لبرنامج AqBanking"
 
 #: gnucash/import-export/aqb/assistant-ab-initial.glade:27
 msgid ""
@@ -19347,7 +19335,7 @@ msgstr ""
 
 #: gnucash/import-export/aqb/assistant-ab-initial.glade:96
 msgid "_Start AqBanking Wizard"
-msgstr "إبدأ إعدادات برنامج AqBanking "
+msgstr "إ_بدأ إعدادات برنامج AqBanking"
 
 #: gnucash/import-export/aqb/assistant-ab-initial.glade:113
 msgid "Start Online Banking Wizard"
@@ -20118,7 +20106,7 @@ msgstr "تحديد الملف لاستيراده"
 
 #: gnucash/import-export/aqb/gnc-file-aqb-import.c:140
 msgid "Import module for DTAUS import not found."
-msgstr "لم يتم العثور على ملفات الاستيراد DTAUS "
+msgstr "لم يتم العثور على ملفات الاستيراد DTAUS."
 
 #: gnucash/import-export/aqb/gnc-file-aqb-import.c:295
 #, fuzzy, c-format
@@ -20587,7 +20575,7 @@ msgstr "متعدد الأسطر"
 
 #: gnucash/import-export/bi-import/dialog-bi-import-gui.c:194
 msgid "Import Bills or Invoices from csv"
-msgstr "استيراد فواتير من ملف إكسل"
+msgstr "استيراد فواتير من ملف CVS"
 
 #: gnucash/import-export/bi-import/dialog-bi-import-gui.c:222
 #, c-format
@@ -20787,9 +20775,8 @@ msgstr "إظهار اسم الحساب كامل"
 
 #: gnucash/import-export/csv-exp/csv-transactions-export.c:629
 #: gnucash/import-export/csv-imp/gnc-imp-props-tx.cpp:76
-#, fuzzy
 msgid "Reconcile Date"
-msgstr "تاريخ التسوية "
+msgstr "تاريخ التسوية"
 
 #: gnucash/import-export/csv-exp/gnc-plugin-csv-export.c:54
 msgid "Export Account T_ree to CSV..."
@@ -21274,9 +21261,8 @@ msgid "Transfer Memo"
 msgstr "نقل إلى"
 
 #: gnucash/import-export/csv-imp/gnc-imp-props-tx.cpp:80
-#, fuzzy
 msgid "Transfer Reconciled"
-msgstr "تاريخ التسوية "
+msgstr "تمت تسوية التحويل"
 
 #: gnucash/import-export/csv-imp/gnc-imp-props-tx.cpp:81
 #, fuzzy
@@ -21471,7 +21457,7 @@ msgstr ""
 
 #: gnucash/import-export/import-account-matcher.c:472
 msgid "(Full account ID: "
-msgstr "(كامل معرف الحساب:"
+msgstr "(كامل معرف الحساب: "
 
 #: gnucash/import-export/import-commodity-matcher.c:113
 msgid ""
@@ -21599,7 +21585,7 @@ msgstr "نقل جديد %s إلى (أوتوماتيك) \"%s\""
 #: gnucash/import-export/import-main-matcher.c:1745
 #, c-format
 msgid "New, UNBALANCED (need acct to transfer %s)!"
-msgstr "جديد ، غير متوازن يحتاج الحساب لتحويل %s"
+msgstr "جديد، غير متوازن (يحتاج الحساب لتحويل %s)!"
 
 #: gnucash/import-export/import-main-matcher.c:1763
 #, fuzzy, c-format
@@ -22021,7 +22007,7 @@ msgstr "تم تجاهل بعض الأحرف."
 #: gnucash/import-export/qif-imp/qif-file.scm:185
 #: gnucash/import-export/qif-imp/qif-file.scm:189
 msgid "Converted to: "
-msgstr "تحويل إلى:"
+msgstr "تحويل إلى: "
 
 #: gnucash/import-export/qif-imp/qif-file.scm:188
 msgid "Some characters have been converted according to your locale."
@@ -22139,7 +22125,7 @@ msgstr "العثور على معاملات مكررة"
 #: gnucash/import-export/qif-imp/qif-parse.scm:172
 #, scheme-format
 msgid "Unrecognized account type '~s'. Defaulting to Bank."
-msgstr "نوع الحساب ~a غير معروف العودة للخيار الإفتراضي للبنك."
+msgstr "نوع الحساب ~s غير معروف العودة للخيار الإفتراضي للبنك."
 
 #: gnucash/import-export/qif-imp/qif-parse.scm:235
 #, scheme-format
@@ -22577,7 +22563,7 @@ msgstr "المجموع الفرعي لهذا المدخل"
 
 #: gnucash/register/ledger-core/gncEntryLedgerModel.c:774
 msgid "The total tax of this entry "
-msgstr "الضريبة الإجمالية لهذا المدخل"
+msgstr "الضريبة الإجمالية لهذا المدخل "
 
 #: gnucash/register/ledger-core/gncEntryLedgerModel.c:783
 msgid "Is this entry billable to a customer or job?"
@@ -22779,9 +22765,9 @@ msgid "Tot Shares"
 msgstr "إجمالي الأسهم"
 
 #: gnucash/register/ledger-core/split-register-model.c:537
-#, fuzzy, c-format
+#, c-format
 msgid "Reconciled on %s"
-msgstr "تمت التسوية "
+msgstr "تمت التسوية في %s"
 
 #: gnucash/register/ledger-core/split-register-model.c:1018
 msgid "Scheduled"
@@ -22849,9 +22835,9 @@ msgid ""
 "\n"
 "'%s'"
 msgstr ""
-"لا يمكن تعديل أو حذف هذه الحركة. هذه الحركة :\n"
+"لا يمكن تعديل أو حذف هذه المعاملة. هذه المعاملة حدد ت للقراءة فقط و السبب:\n"
 "\n"
-"للقراءة فقط و السبب %s "
+"'%s'"
 
 #: gnucash/register/ledger-core/split-register-model.c:2209
 #, fuzzy
@@ -23343,13 +23329,12 @@ msgid ""
 "report system, especially your saved reports, for a report with this report-"
 "guid: "
 msgstr ""
-"واحد من التقارير الخاصة بك لديه تقرير-GUID مكرر. يرجى التحقق من نظام "
-"التقرير، وخاصة التقارير المحفوظة، للحصول على تقرير مع هذا التقرير-GUID:"
+"واحد من التقارير الخاصة بك لديه تقرير-GUID مكرر. يرجى التحقق من نظام التقرير،"
+" وخاصة التقارير المحفوظة، للحصول على تقرير مع هذا التقرير-GUID: "
 
 #: gnucash/report/report-core.scm:212
-#, fuzzy
 msgid "Wrong report definition: "
-msgstr "تحميل خيارات التقرير"
+msgstr "تعريف خاطئ للتقرير: "
 
 #: gnucash/report/report-core.scm:213
 msgid " Report is missing a GUID."
@@ -24122,9 +24107,8 @@ msgid "A sample report with examples."
 msgstr "نموذج تقرير مع الأمثلة."
 
 #: gnucash/report/reports/example/sample-graphs.scm:42
-#, fuzzy
 msgid "Sample Graphs"
-msgstr "عينة "
+msgstr "عينة من الرسوم البيانية"
 
 #: gnucash/report/reports/example/sample-graphs.scm:142
 msgid "Pie:"
@@ -24321,7 +24305,7 @@ msgstr "لا تقم بطباعة جميع أسماء الحسابات الاعل
 
 #: gnucash/report/reports/locale-specific/us/taxtxf.scm:220
 msgid "Print all Transfer To/From Accounts"
-msgstr "طباعة كافة حسابات التحويلات من-الي "
+msgstr "طباعة كافة حسابات التحويلات من-الي"
 
 #: gnucash/report/reports/locale-specific/us/taxtxf.scm:221
 msgid "Print all split details for multi-split transactions."
@@ -25478,7 +25462,7 @@ msgstr ""
 #: gnucash/report/reports/standard/balsheet-pnl.scm:76
 #: gnucash/report/trep-engine.scm:568
 msgid "Add summary of options."
-msgstr ""
+msgstr "إضافة ملخص للخيارات."
 
 #: gnucash/report/reports/standard/balsheet-pnl.scm:78
 msgid "Account full name instead of indenting"
@@ -25584,7 +25568,7 @@ msgstr ""
 #: gnucash/report/reports/standard/balsheet-pnl.scm:623
 #: gnucash/report/trep-engine.scm:1603
 msgid "Total For "
-msgstr "إجمالي"
+msgstr "إجمالي "
 
 #: gnucash/report/reports/standard/balsheet-pnl.scm:830
 #, fuzzy
@@ -28279,14 +28263,12 @@ msgid "Amount Due (inc GST)"
 msgstr "المبلغ المستحق"
 
 #: gnucash/report/reports/standard/taxinvoice.scm:306
-#, fuzzy
 msgid "Invoice #: "
-msgstr "الفاتورة"
+msgstr "الفاتورة #: "
 
 #: gnucash/report/reports/standard/taxinvoice.scm:307
-#, fuzzy
 msgid "Reference: "
-msgstr "مرجع"
+msgstr "مرجع: "
 
 #: gnucash/report/reports/standard/taxinvoice.scm:308
 #, fuzzy
@@ -28813,13 +28795,13 @@ msgstr "عمق مشطوف الحواف في الجداول."
 #: gnucash/report/stylesheets/head-or-tail.scm:425
 #: gnucash/report/stylesheets/head-or-tail.scm:519
 msgid "Prepared by: "
-msgstr "أعده:"
+msgstr "من إعداد: "
 
 #: gnucash/report/stylesheets/footer.scm:374
 #: gnucash/report/stylesheets/head-or-tail.scm:433
 #: gnucash/report/stylesheets/head-or-tail.scm:527
 msgid "Prepared for: "
-msgstr "أعدت من أجل:"
+msgstr "أعدت من أجل: "
 
 #: gnucash/report/stylesheets/footer.scm:413
 #: gnucash/report/stylesheets/footer.scm:429
@@ -28927,14 +28909,12 @@ msgstr ""
 #: gnucash/report/stylesheets/head-or-tail.scm:449
 #: gnucash/report/stylesheets/head-or-tail.scm:536
 #: gnucash/report/stylesheets/head-or-tail.scm:543
-#, fuzzy
 msgid "Report Creation Date: "
-msgstr "اختلاف التقرير"
+msgstr "تاريخ إنشاء التقرير: "
 
 #: gnucash/report/stylesheets/head-or-tail.scm:551
-#, fuzzy
 msgid "GnuCash "
-msgstr "جنوكاش"
+msgstr "جنوكاش "
 
 #: gnucash/report/stylesheets/head-or-tail.scm:566
 #: gnucash/report/stylesheets/head-or-tail.scm:570
@@ -29030,9 +29010,8 @@ msgid "Transaction Filter is case insensitive"
 msgstr "تاريخ المعاملة"
 
 #: gnucash/report/trep-engine.scm:122 gnucash/report/trep-engine.scm:197
-#, fuzzy
 msgid "Reconciled Status"
-msgstr "تاريخ التسوية "
+msgstr "حالة التسوية"
 
 #: gnucash/report/trep-engine.scm:123
 msgid "Void Transactions"
@@ -29114,9 +29093,8 @@ msgid "Cleared only"
 msgstr "مسح"
 
 #: gnucash/report/trep-engine.scm:397
-#, fuzzy
 msgid "Reconciled only"
-msgstr "تمت التسوية "
+msgstr "تمت التسوية فقط"
 
 #: gnucash/report/trep-engine.scm:411
 #, fuzzy
@@ -29637,7 +29615,7 @@ msgstr "معرف الشركة الخاص (على سبيل المثال ' معر
 
 #: libgnucash/app-utils/business-prefs.scm:121
 msgid "Default Customer TaxTable"
-msgstr "الجدول الإفتراضي لضرائب العميل"
+msgstr "جدول الضرائب الإفتراضي للعميل"
 
 #: libgnucash/app-utils/business-prefs.scm:122
 msgid "The default tax table to apply to customers."
@@ -29645,7 +29623,7 @@ msgstr "جدول الضرائب الافتراضية التي تنطبق على
 
 #: libgnucash/app-utils/business-prefs.scm:127
 msgid "Default Vendor TaxTable"
-msgstr "الجدول الإفتراضي لضرائب المورد"
+msgstr "جدول الضرائب الإفتراضي للمورد"
 
 #: libgnucash/app-utils/business-prefs.scm:128
 msgid "The default tax table to apply to vendors."
@@ -30306,7 +30284,7 @@ msgstr " (مغلقة)"
 
 #: libgnucash/engine/gncOwner.c:1015
 msgid "Offset between documents: "
-msgstr "مسافة بين الوثائق:"
+msgstr "الإزاحة بين المستندات: "
 
 #: libgnucash/engine/gncOwner.c:1127
 msgid "Lot Link"
@@ -30396,7 +30374,7 @@ msgstr " (x%u)"
 #: libgnucash/engine/Recurrence.c:660
 #, c-format
 msgid "last %s"
-msgstr "last %s"
+msgstr "آخر %s"
 
 #. Translators: %s is the string 1st, 2nd, 3rd and so on, and
 #. %s is an already-localized form of the day of the week.
diff --git a/po/glossary/ar.po b/po/glossary/ar.po
index 3911cfae4..6b0231457 100644
--- a/po/glossary/ar.po
+++ b/po/glossary/ar.po
@@ -8,7 +8,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
 "cgi?product=GnuCash&component=Translations\n"
 "POT-Creation-Date: 2021-12-05 20:11+0100\n"
-"PO-Revision-Date: 2022-03-29 02:07+0000\n"
+"PO-Revision-Date: 2022-04-19 15:11+0000\n"
 "Last-Translator: ltai0001 <yltaief at gmail.com>\n"
 "Language-Team: Arabic <https://hosted.weblate.org/projects/gnucash/glossary/"
 "ar/>\n"
@@ -26,23 +26,23 @@ msgstr ""
 
 #. "Opening and closing quote symbols and optionally their key combos like [altgr]+[Y]/[X]. Define the preferred style of quotation, see https://en.wikipedia.org/wiki/Quotation_mark#Summary_table"
 msgid "\"\""
-msgstr ""
+msgstr "\"\""
 
 #. "A detailed record of money spent and received"
 msgid "account"
-msgstr ""
+msgstr "الحساب"
 
 #. "An alphanumerical key of an account in GnuCash, not at the bank, can be used to sort. Some templates provide them or the user can enter them."
 msgid "account code"
-msgstr ""
+msgstr "رمز الحساب"
 
 #. "the tree view of all accounts"
 msgid "account hierarchy"
-msgstr ""
+msgstr "التسلسل الهرمي للحسابات"
 
 #. "-"
 msgid "account name"
-msgstr ""
+msgstr "إسم الحساب"
 
 #. "The left side of the balance sheet in T account form shows the application of funds in form of assets. Because it contains only assets use assets directly. Complement: Passive. See also: Report Form"
 msgid "account type: Active"
@@ -574,11 +574,11 @@ msgstr ""
 
 #. "Watch out: Although this word exists in gnucash program code, all that program code in gnucash is currently not activated. In the future, it will be used in business accounting as follows: A particular request to make or supply goods, but belonging to a (larger) job. Such a request can come from a customer or be sent to a vendor. An order will probably generate one invoice or bill."
 msgid "order"
-msgstr ""
+msgstr "طلب"
 
 #. "Name of an automatically created account that holds splits that have no account."
 msgid "orphan"
-msgstr ""
+msgstr "بدون أصل"
 
 #. "The customer to (or employee or vendor from) which this invoice is sent - or short your business partner."
 msgid "owner (of bill, invoice or expense voucher)"

commit 178ef44d38fc4efc5d7ef91dfb34823e7d233840
Author: Alex Aycinena <alex.aycinena at gmail.com>
Date:   Wed Apr 20 10:46:25 2022 -0700

    Bug 798471 - include hidden accounts in account tree view in Edit->Tax Report Options->Income Tax Information dialog.

diff --git a/gnucash/gnome/dialog-tax-info.c b/gnucash/gnome/dialog-tax-info.c
index 6b342adf9..06252dcb1 100644
--- a/gnucash/gnome/dialog-tax-info.c
+++ b/gnucash/gnome/dialog-tax-info.c
@@ -847,6 +847,7 @@ tax_info_show_acct_type_accounts (TaxInfoDialog *ti_dialog)
             info.include_type[type] = FALSE;
     }
 
+    info.show_hidden = TRUE;
     gnc_tree_view_account_set_view_info (tree, &info);
 
     load_category_list (ti_dialog);

commit efbc12b321aa8d9ff596c72180c70b3f2ec0f8eb
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Tue Apr 19 22:49:26 2022 +0800

    [gnc-main-window] page->window is not main_window, skip warning
    
    This function gets called for both regular register *and* the embedded
    register in the SX template editor. The latter is not a main_window,
    and launching the SX editor would lead to warnings.

diff --git a/gnucash/gnome-utils/gnc-main-window.c b/gnucash/gnome-utils/gnc-main-window.c
index a543b79aa..249de0490 100644
--- a/gnucash/gnome-utils/gnc-main-window.c
+++ b/gnucash/gnome-utils/gnc-main-window.c
@@ -2481,7 +2481,11 @@ main_window_update_page_set_read_only_icon (GncPluginPage *page,
 
     ENTER(" ");
 
-    g_return_if_fail(page && page->window && GNC_IS_MAIN_WINDOW(page->window));
+    g_return_if_fail (page && page->window);
+
+    if (!GNC_IS_MAIN_WINDOW (page->window))
+        return;
+
     window = GNC_MAIN_WINDOW(page->window);
 
     /* Get the notebook tab widget */

commit 37791b608c6bcfff03365a01c1282419089e5975
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Tue Apr 19 22:42:54 2022 +0800

    [gnc-plugin-page-register] if account==NULL, skip AccountIsPriced
    
    because gnc_plugin_page_register_ui_initial_state may be called for
    non-account registers (eg the sx editor) and account may be null,
    don't call xaccAccountIsPriced on null account.

diff --git a/gnucash/gnome/gnc-plugin-page-register.c b/gnucash/gnome/gnc-plugin-page-register.c
index 136dd52b3..dce7893b3 100644
--- a/gnucash/gnome/gnc-plugin-page-register.c
+++ b/gnucash/gnome/gnc-plugin-page-register.c
@@ -1293,7 +1293,7 @@ gnc_plugin_page_register_ui_initial_state (GncPluginPageRegister* page)
                                "visible", gnc_prefs_is_extra_enabled ());
 
     gnc_plugin_update_actions (action_group, actions_requiring_priced_account,
-                               "sensitive", xaccAccountIsPriced (account));
+                               "sensitive", account && xaccAccountIsPriced (account));
 
     /* Set "style" radio button */
     ledger_type = gnc_ledger_display_type (priv->ledger);

commit 394e0a4b714d0f022a6f07694b013425ae8ebbcb
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Tue Apr 19 22:15:18 2022 +0800

    [gnc-sx-instance-model.c] leak: don't strdup char* for xaccTransSetNotes
    
    For a while now, xaccTransSetNotes would strdup the notes. Don't need
    to strdup it beforehand.

diff --git a/libgnucash/app-utils/gnc-sx-instance-model.c b/libgnucash/app-utils/gnc-sx-instance-model.c
index 924c20b60..6a0583977 100644
--- a/libgnucash/app-utils/gnc-sx-instance-model.c
+++ b/libgnucash/app-utils/gnc-sx-instance-model.c
@@ -1267,9 +1267,7 @@ create_each_transaction_helper(Transaction *template_txn, void *user_data)
 
     /* Bug#500427: copy the notes, if any */
     if (xaccTransGetNotes(template_txn) != NULL)
-    {
-        xaccTransSetNotes(new_txn, g_strdup(xaccTransGetNotes(template_txn)));
-    }
+        xaccTransSetNotes (new_txn, xaccTransGetNotes (template_txn));
 
     xaccTransSetDate(new_txn,
                      g_date_get_day(&creation_data->instance->date),

commit 27e5515c435b976b646ef302f95f470a35b75dd1
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sun Apr 17 23:02:21 2022 +0800

    [gnc-account-sel.c] prepend & reverse while building acct list
    
    and don't use confusing double pointer

diff --git a/gnucash/gnome-utils/gnc-account-sel.c b/gnucash/gnome-utils/gnc-account-sel.c
index 389aa9a03..7178336bf 100644
--- a/gnucash/gnome-utils/gnc-account-sel.c
+++ b/gnucash/gnome-utils/gnc-account-sel.c
@@ -191,7 +191,7 @@ gnc_account_sel_set_hexpand (GNCAccountSel *gas, gboolean expand)
 typedef struct
 {
     GNCAccountSel *gas;
-    GList **outList;
+    GList *outList;
 } account_filter_data;
 
 static void
@@ -203,7 +203,7 @@ gas_populate_list (GNCAccountSel *gas)
     GtkTreeIter iter;
     GtkEntry *entry;
     gint i, active = -1;
-    GList *accts, *ptr, *filteredAccts;
+    GList *accts, *ptr;
     gchar *currentSel, *name;
 
     entry = GTK_ENTRY(gtk_bin_get_child (GTK_BIN(gas->combo)));
@@ -214,15 +214,15 @@ gas_populate_list (GNCAccountSel *gas)
     root = gnc_book_get_root_account (gnc_get_current_book ());
     accts = gnc_account_get_descendants_sorted (root);
 
-    filteredAccts   = NULL;
     atnd.gas        = gas;
-    atnd.outList    = &filteredAccts;
+    atnd.outList    = NULL;
 
     g_list_foreach (accts, gas_filter_accounts, (gpointer)&atnd);
     g_list_free (accts);
+    atnd.outList = g_list_reverse (atnd.outList);
 
     gtk_list_store_clear (gas->store);
-    for (ptr = filteredAccts, i = 0; ptr; ptr = g_list_next(ptr), i++)
+    for (ptr = atnd.outList, i = 0; ptr; ptr = g_list_next(ptr), i++)
     {
         acc = ptr->data;
         name = gnc_account_get_full_name (acc);
@@ -243,7 +243,7 @@ gas_populate_list (GNCAccountSel *gas)
 
     g_signal_handlers_unblock_by_func (gas->combo, combo_changed_cb , gas);
 
-    g_list_free (filteredAccts);
+    g_list_free (atnd.outList);
     if (currentSel)
         g_free (currentSel);
 }
@@ -280,7 +280,7 @@ gas_filter_accounts (gpointer data, gpointer user_data)
             return;
         }
     }
-    *atnd->outList = g_list_append (*atnd->outList, a);
+    atnd->outList = g_list_prepend (atnd->outList, a);
 }
 
 GtkWidget *

commit 639a88a05cd1a2b34e3589f9e34989b1cf42660b
Author: 154pinkchairs <ovehis at riseup.net>
Date:   Sat Apr 16 00:12:06 2022 +0200

    Translation update  by 154pinkchairs <ovehis at riseup.net> using Weblate
    
    po/pl.po: 62.1% (3352 of 5390 strings; 1529 fuzzy)
    586 failing checks (10.8%)
    Translation: GnuCash/Program (Polish)
    Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/pl/
    
    Co-authored-by: 154pinkchairs <ovehis at riseup.net>

diff --git a/po/pl.po b/po/pl.po
index 6215a2026..95b432a43 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -9,7 +9,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
 "cgi?product=GnuCash&component=Translations\n"
 "POT-Creation-Date: 2022-03-09 18:00-0800\n"
-"PO-Revision-Date: 2022-04-13 19:11+0000\n"
+"PO-Revision-Date: 2022-04-15 22:12+0000\n"
 "Last-Translator: 154pinkchairs <ovehis at riseup.net>\n"
 "Language-Team: Polish <https://hosted.weblate.org/projects/gnucash/gnucash/"
 "pl/>\n"
@@ -18083,7 +18083,7 @@ msgstr "_Adres"
 
 #: gnucash/gtkbuilder/dialog-print-check.glade:560
 msgid "Checks on first _page"
-msgstr "Czeki na pierwszej stronie"
+msgstr "Czeki na pierwszej _stronie"
 
 #: gnucash/gtkbuilder/dialog-print-check.glade:660
 msgid "x"
@@ -18417,11 +18417,11 @@ msgstr ""
 
 #: gnucash/gtkbuilder/dialog-sx.glade:694
 msgid "Crea_te in advance"
-msgstr "Utwórz z wyprzedzeniem"
+msgstr "U_twórz z wyprzedzeniem"
 
 #: gnucash/gtkbuilder/dialog-sx.glade:709
 msgid "R_emind in advance"
-msgstr "Przypomnij z wyprzedzeniem"
+msgstr "P_rzypomnij z wyprzedzeniem"
 
 #: gnucash/gtkbuilder/dialog-sx.glade:720
 #, fuzzy

commit a1ca43d11a66491e9c65a6210880d131fc49dbe3
Author: Cow <javier.fserrador at gmail.com>
Date:   Sat Apr 16 00:12:06 2022 +0200

    Translation update  by Cow <javier.fserrador at gmail.com> using Weblate
    
    po/es.po: 100.0% (5390 of 5390 strings; 0 fuzzy)
    0 failing checks (0.0%)
    Translation: GnuCash/Program (Spanish)
    Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/es/
    
    Co-authored-by: Cow <javier.fserrador at gmail.com>

diff --git a/po/es.po b/po/es.po
index 0de607acf..fd3bc3c77 100644
--- a/po/es.po
+++ b/po/es.po
@@ -80,7 +80,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
 "cgi?product=GnuCash&component=Translations\n"
 "POT-Creation-Date: 2022-03-09 18:00-0800\n"
-"PO-Revision-Date: 2022-04-12 19:10+0000\n"
+"PO-Revision-Date: 2022-04-15 13:12+0000\n"
 "Last-Translator: Cow <javier.fserrador at gmail.com>\n"
 "Language-Team: Spanish <https://hosted.weblate.org/projects/gnucash/gnucash/"
 "es/>\n"
@@ -559,7 +559,7 @@ msgid ""
 "The full path is displayed in the status bar."
 msgstr ""
 "Si desea conocer cuales directorios donde están almacenados los archivos "
-"GnuCash recientes, pase el cursor sobre una de las entradas en el menú de "
+"GnuCash recientes, pase el cursor sobre una de los asientos en el menú de "
 "historial\n"
 "(Archivo[->Listado más recientes utilizados]).\n"
 "La ruta completa es representada dentro de la barra de estado."
@@ -7828,7 +7828,7 @@ msgstr "Cabecera de ruta no fijada; se utiliza «%s» en rutas relativas"
 # menú
 #: gnucash/gnome-utils/dialog-doclink-utils.c:426
 msgid "Existing"
-msgstr "Existente"
+msgstr "Existencia"
 
 #: gnucash/gnome-utils/dialog-dup-trans.c:150
 msgid "You can type '+' or '-' to increment or decrement the number."

commit b4587e432ffd7150639f5278b76cd77e98a487b0
Author: John Ralls <jralls at ceridwen.us>
Date:   Sat Apr 16 13:51:10 2022 -0700

    Fix use-after-free in unable to save database dialog.

diff --git a/gnucash/gnome-utils/gnc-main-window.c b/gnucash/gnome-utils/gnc-main-window.c
index a991bbcc9..a543b79aa 100644
--- a/gnucash/gnome-utils/gnc-main-window.c
+++ b/gnucash/gnome-utils/gnc-main-window.c
@@ -1261,6 +1261,7 @@ gnc_main_window_prompt_for_save (GtkWidget *window)
         _("If you don't save, changes from the past %d days and %d hours will be discarded.");
     time64 oldest_change;
     gint minutes, hours, days;
+    guint timer_source = 0;
     if (!gnc_current_session_exist())
         return FALSE;
     session = gnc_get_current_session();
@@ -1330,10 +1331,12 @@ gnc_main_window_prompt_for_save (GtkWidget *window)
         g_object_set (G_OBJECT (label), "xalign", 0.0, NULL);
 
         g_object_set_data (G_OBJECT (dialog), "count-down-label", label);
-        g_timeout_add_seconds (1, (GSourceFunc)auto_save_countdown, dialog);
+        timer_source = g_timeout_add_seconds (1, (GSourceFunc)auto_save_countdown, dialog);
     }
 
     response = gtk_dialog_run (GTK_DIALOG (dialog));
+    if (timer_source)
+        g_source_remove (timer_source);
     gtk_widget_destroy(dialog);
 
     switch (response)

commit de49a7e3709325827217a0d748a164dc7b4c102e
Merge: 07a9494d8 e1d52963e
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Apr 16 07:44:29 2022 +0800

    Merge branch 'maint-account-cpp' breadthwise search into maint #1319


commit e1d52963ed3b2ef7cc57df7e2810c265a43a38f3
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Fri Apr 15 10:46:19 2022 +0800

    [account.cpp] restore breadth-first search for 2 functions
    
    gnc_account_lookup_by_name and gnc_account_lookup_by_code were
    searching breadth-first and accidentally changed to depth-first in
    4.7.
    
    as reported in https://github.com/Gnucash/gnucash/pull/1101#issuecomment-1098146573

diff --git a/libgnucash/engine/Account.cpp b/libgnucash/engine/Account.cpp
index 4140ca1f6..908d43e32 100644
--- a/libgnucash/engine/Account.cpp
+++ b/libgnucash/engine/Account.cpp
@@ -3048,6 +3048,30 @@ gnc_account_get_descendants_sorted (const Account *account)
     return g_list_reverse (list);
 }
 
+// because gnc_account_lookup_by_name and gnc_account_lookup_by_code
+// are described in Account.h searching breadth-first until 4.6, and
+// accidentally modified to search depth-first from 4.7
+// onwards. Restore breath-first searching in 4.11 onwards to match
+// previous behaviour and function description in Account.h
+static gpointer
+account_foreach_descendant_breadthfirst_until (const Account *acc,
+                                               AccountCb2 thunk,
+                                               gpointer user_data)
+{
+    gpointer result {nullptr};
+
+    g_return_val_if_fail (GNC_IS_ACCOUNT(acc), nullptr);
+    g_return_val_if_fail (thunk, nullptr);
+
+    for (auto node = GET_PRIVATE(acc)->children; !result && node; node = node->next)
+        result = thunk (static_cast<Account*>(node->data), user_data);
+
+    for (auto node = GET_PRIVATE(acc)->children; !result && node; node = node->next)
+        result = account_foreach_descendant_breadthfirst_until (static_cast<Account*>(node->data), thunk, user_data);
+
+    return result;
+}
+
 static gpointer
 is_acct_name (Account *account, gpointer user_data)
 {
@@ -3058,7 +3082,7 @@ is_acct_name (Account *account, gpointer user_data)
 Account *
 gnc_account_lookup_by_name (const Account *parent, const char * name)
 {
-    return (Account*)gnc_account_foreach_descendant_until (parent, is_acct_name, (char*)name);
+    return (Account*)account_foreach_descendant_breadthfirst_until (parent, is_acct_name, (char*)name);
 }
 
 static gpointer
@@ -3071,7 +3095,7 @@ is_acct_code (Account *account, gpointer user_data)
 Account *
 gnc_account_lookup_by_code (const Account *parent, const char * code)
 {
-    return (Account*)gnc_account_foreach_descendant_until (parent, is_acct_code, (char*)code);
+    return (Account*)account_foreach_descendant_breadthfirst_until (parent, is_acct_code, (char*)code);
 }
 
 static gpointer
diff --git a/libgnucash/engine/test/utest-Account.cpp b/libgnucash/engine/test/utest-Account.cpp
index e7072e394..093bc60a9 100644
--- a/libgnucash/engine/test/utest-Account.cpp
+++ b/libgnucash/engine/test/utest-Account.cpp
@@ -195,6 +195,17 @@ static AccountParms complex_accts[] =
 
 };
 
+static AccountParms complex_accts_duplicated[] =
+{
+    {ACCT_TYPE_EXPENSE, "A", "root", "1A", "", "", "", "", NULL},
+    {ACCT_TYPE_EXPENSE, "B", "root", "1B", "", "", "", "", NULL},
+    {ACCT_TYPE_EXPENSE, "C", "root", "1C", "", "", "", "", NULL},
+    {ACCT_TYPE_EXPENSE, "D", "A", "2D", "", "", "", "", NULL},
+    {ACCT_TYPE_EXPENSE, "E", "B", "2E", "", "", "", "", NULL},
+    {ACCT_TYPE_EXPENSE, "F", "C", "2F", "", "", "", "", NULL},
+    {ACCT_TYPE_EXPENSE, "B", "D", "3B", "", "", "", "", NULL},
+};
+
 static TxnParms lot_txns[] =
 {
     {
@@ -257,6 +268,10 @@ static SetupData complex = {G_N_ELEMENTS (complex_accts),
                             (AccountParms**)(&complex_accts), 0, NULL
                            };
 
+static SetupData complex_duplicated = {G_N_ELEMENTS (complex_accts_duplicated),
+    (AccountParms**)(&complex_accts_duplicated), 0, NULL
+};
+
 static SetupData complex_data = {G_N_ELEMENTS (complex_accts),
                                  (AccountParms**)(&complex_accts),
                                  G_N_ELEMENTS (lot_txns),
@@ -1885,6 +1900,24 @@ test_gnc_account_lookup_by_name (Fixture *fixture, gconstpointer pData)
     g_free (code);
 
 }
+
+/* gnc_account_lookup_by_name
+Account *
+gnc_account_lookup_by_name_duplicated (const Account *parent, const char * name)
+ */
+static void
+test_gnc_account_lookup_by_name_duplicated (Fixture *fixture, gconstpointer pData)
+{
+    Account *root, *target;
+    gchar *code;
+    root = gnc_account_get_root (fixture->acct);
+    target = gnc_account_lookup_by_name (root, "B");
+    g_assert (target != NULL);
+    g_object_get (target, "code", &code, NULL);
+    g_assert_cmpstr (code, == , "1B");
+    g_free (code);
+}
+
 /* gnc_account_lookup_by_code
 Account *
 gnc_account_lookup_by_code (const Account *parent, const char * code)// C: 5 in 3 */
@@ -2789,6 +2822,7 @@ test_suite_account (void)
     GNC_TEST_ADD (suitename, "gnc account get descendants", Fixture, &complex, setup, test_gnc_account_get_descendants,  teardown );
     GNC_TEST_ADD (suitename, "gnc account get descendants sorted", Fixture, &complex, setup, test_gnc_account_get_descendants_sorted,  teardown );
     GNC_TEST_ADD (suitename, "gnc account lookup by name", Fixture, &complex, setup, test_gnc_account_lookup_by_name,  teardown );
+    GNC_TEST_ADD (suitename, "gnc account lookup by name - duplicated", Fixture, &complex_duplicated, setup, test_gnc_account_lookup_by_name_duplicated,  teardown );
     GNC_TEST_ADD (suitename, "gnc account lookup by code", Fixture, &complex, setup, test_gnc_account_lookup_by_code,  teardown );
     GNC_TEST_ADD (suitename, "gnc account lookup by full name helper", Fixture, &complex, setup, test_gnc_account_lookup_by_full_name_helper,  teardown );
     GNC_TEST_ADD (suitename, "gnc account lookup by full name", Fixture, &complex, setup, test_gnc_account_lookup_by_full_name,  teardown );

commit 07a9494d8dd42e56801f1d929953bc44d65adc87
Merge: 07fbcc0e9 560f31250
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Fri Apr 15 12:27:31 2022 +0800

    Merge branch 'maint-progress1' into maint #1306
    
    export and use gnc_accounts_and_all_descendants


commit 560f31250ec8ed15644663475ce4558cdec46bac
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Fri Apr 15 11:15:06 2022 +0800

    [reports] use new function names
    
    gnc:accounts-and-all-descendants-sorted
    gnc-accounts-and-all-descendants

diff --git a/gnucash/report/html-acct-table.scm b/gnucash/report/html-acct-table.scm
index d77ce79da..9d8952fa3 100644
--- a/gnucash/report/html-acct-table.scm
+++ b/gnucash/report/html-acct-table.scm
@@ -697,7 +697,7 @@
           (for-each
            (lambda (acct)
              (this-collector 'merge (get-balance acct-balances acct) #f))
-           (gnc:accounts-and-all-descendants (list account)))
+           (cons account (gnc-account-get-descendants-sorted account)))
           this-collector))
 
       (let lp ((accounts (if less-p (sort accts less-p) accts))
diff --git a/gnucash/report/reports/example/average-balance.scm b/gnucash/report/reports/example/average-balance.scm
index 66a285a49..d0f937b7d 100644
--- a/gnucash/report/reports/example/average-balance.scm
+++ b/gnucash/report/reports/example/average-balance.scm
@@ -296,7 +296,7 @@
          (accounts   (get-option gnc:pagename-accounts (N_ "Accounts")))
          (dosubs?    (get-option gnc:pagename-accounts optname-subacct))
          (accounts (if dosubs?
-                       (gnc:accounts-and-all-descendants accounts)
+                       (gnc-accounts-and-all-descendants accounts)
                        accounts))
          (plot-type  (get-option gnc:pagename-display (N_ "Plot Type")))
          (show-plot? (get-option gnc:pagename-display (N_ "Show plot")))
diff --git a/gnucash/report/reports/example/daily-reports.scm b/gnucash/report/reports/example/daily-reports.scm
index 2dc965866..239aa39cc 100644
--- a/gnucash/report/reports/example/daily-reports.scm
+++ b/gnucash/report/reports/example/daily-reports.scm
@@ -186,7 +186,7 @@
           ;; needed so as to amortize the cpu time properly.
 	  (gnc:report-percent-done 1)
 	  (set! commodity-list (gnc:accounts-get-commodities
-                                (gnc:accounts-and-all-descendants accounts)
+                                (gnc-accounts-and-all-descendants accounts)
                                 report-currency))
           (gnc:report-percent-done 5)
           (set! exchange-fn (gnc:case-exchange-time-fn
@@ -208,7 +208,7 @@
           (gnc:report-percent-done 25)
           (if dosubs?
                (set! accounts
-                 (gnc:accounts-and-all-descendants accounts)))
+                 (gnc-accounts-and-all-descendants accounts)))
           (gnc:report-percent-done 30)
 
           (xaccQueryAddAccountMatch
diff --git a/gnucash/report/reports/standard/account-summary.scm b/gnucash/report/reports/standard/account-summary.scm
index 96b8c273f..cd4259e0a 100644
--- a/gnucash/report/reports/standard/account-summary.scm
+++ b/gnucash/report/reports/standard/account-summary.scm
@@ -444,7 +444,7 @@
             (gnc:html-document-add-object!
              doc (gnc:html-make-rates-table
                   report-commodity price-fn
-                  (gnc:accounts-and-all-descendants accounts))))))
+                  (gnc-accounts-and-all-descendants accounts))))))
 
     (gnc:report-finished)
     doc))
diff --git a/gnucash/report/reports/standard/budget.scm b/gnucash/report/reports/standard/budget.scm
index a960d50c7..76ba6ee05 100644
--- a/gnucash/report/reports/standard/budget.scm
+++ b/gnucash/report/reports/standard/budget.scm
@@ -686,7 +686,7 @@
                                                    optname-period-collapse-after)))
          (doc (gnc:make-html-document))
          (accounts (if show-subaccts?
-                       (gnc:accounts-and-all-descendants accounts)
+                       (gnc-accounts-and-all-descendants accounts)
                        accounts)))
     ;; end of defines
 
diff --git a/gnucash/report/reports/standard/cash-flow.scm b/gnucash/report/reports/standard/cash-flow.scm
index 1dd900e6f..5a08b5ac0 100644
--- a/gnucash/report/reports/standard/cash-flow.scm
+++ b/gnucash/report/reports/standard/cash-flow.scm
@@ -156,7 +156,7 @@
 
          ;;add subaccounts if requested
          (accounts (if show-subaccts?
-                       (gnc:accounts-and-all-descendants accounts)
+                       (gnc-accounts-and-all-descendants accounts)
                        accounts))
          (accounts (sort accounts gnc:account-full-name<?)))
 
diff --git a/gnucash/report/reports/standard/category-barchart.scm b/gnucash/report/reports/standard/category-barchart.scm
index 6e35961dd..d90de8754 100644
--- a/gnucash/report/reports/standard/category-barchart.scm
+++ b/gnucash/report/reports/standard/category-barchart.scm
@@ -294,7 +294,7 @@ developing over time"))
 
      (else
       (let* ((commodity-list (gnc:accounts-get-commodities
-                              (gnc:accounts-and-all-descendants accounts)
+                              (gnc-accounts-and-all-descendants accounts)
                               report-currency))
              (exchange-fn (gnc:case-exchange-time-fn
                            price-source report-currency
@@ -394,7 +394,7 @@ developing over time"))
                       #:nosplit->elt (gnc:make-gnc-monetary comm 0)))))
            ;; all selected accounts (of report-specific type), *and*
            ;; their descendants (of any type) need to be scanned.
-           (gnc:accounts-and-all-descendants accounts)))
+           (gnc-accounts-and-all-descendants accounts)))
 
         ;; Creates the <balance-list> to be used in the function
         ;; below.
diff --git a/gnucash/report/reports/standard/net-charts.scm b/gnucash/report/reports/standard/net-charts.scm
index 6d9d0f7d5..1f58450f7 100644
--- a/gnucash/report/reports/standard/net-charts.scm
+++ b/gnucash/report/reports/standard/net-charts.scm
@@ -299,7 +299,7 @@
 
     (gnc:report-percent-done 1)
     (set! commodity-list (gnc:accounts-get-commodities
-                          (gnc:accounts-and-all-descendants accounts)
+                          (gnc-accounts-and-all-descendants accounts)
                           report-currency))
     (gnc:report-percent-done 10)
     (set! exchange-fn (gnc:case-exchange-time-fn
diff --git a/gnucash/report/reports/standard/portfolio.scm b/gnucash/report/reports/standard/portfolio.scm
index 45272d12c..020e867de 100644
--- a/gnucash/report/reports/standard/portfolio.scm
+++ b/gnucash/report/reports/standard/portfolio.scm
@@ -195,7 +195,7 @@
     ;(gnc:debug "accounts" accounts)
     (if (not (null? accounts))
         (let* ((commodity-list (gnc:accounts-get-commodities
-                                (gnc:accounts-and-all-descendants accounts)
+                                (gnc-accounts-and-all-descendants accounts)
                                 currency))
                (pricedb (gnc-pricedb-get-db (gnc-get-current-book)))
 	       (exchange-fn (gnc:case-exchange-fn price-source currency to-date))
diff --git a/gnucash/report/reports/standard/test/test-income-gst.scm b/gnucash/report/reports/standard/test/test-income-gst.scm
index a78bb4c64..8c069d8b9 100644
--- a/gnucash/report/reports/standard/test/test-income-gst.scm
+++ b/gnucash/report/reports/standard/test/test-income-gst.scm
@@ -232,10 +232,10 @@
     (define (default-testing-options)
       (let ((options (gnc:make-report-options rpt-uuid)))
         (set-option! options "Accounts" "Sales"
-                     (gnc:accounts-and-all-descendants
+                     (gnc-accounts-and-all-descendants
                       (list (get-acct "Income"))))
         (set-option! options "Accounts" "Purchases"
-                     (gnc:accounts-and-all-descendants
+                     (gnc-accounts-and-all-descendants
                       (list (get-acct "Expenses"))))
         (set-option! options "Accounts" "Tax Accounts"
                      (list (get-acct "Purchases VAT")

commit d2ad1aa35df0ae40fa8ee6a36821db995aaaf7df
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Thu Apr 7 09:49:24 2022 +0800

    [html-acct-table] deprecate gnc:account-path-less-p

diff --git a/gnucash/report/html-acct-table.scm b/gnucash/report/html-acct-table.scm
index 6a04c2fcb..d77ce79da 100644
--- a/gnucash/report/html-acct-table.scm
+++ b/gnucash/report/html-acct-table.scm
@@ -555,6 +555,7 @@
   (gnc:string-locale<? (xaccAccountGetName a)
                        (xaccAccountGetName b)))
 (define (gnc:account-path-less-p a b)
+  (issue-deprecation-warning "gnc:account-path-less-p is deprecated. use gnc:account-full-name<? instead")
   (gnc:string-locale<? (gnc-account-get-full-name a)
                        (gnc-account-get-full-name b)))
 

commit 7cf3a5d93d3dea2e7dc36914024acbaa61bc0a8d
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Apr 2 10:26:39 2022 +0800

    [report-utilities.scm] deprecate gnc:accounts-and-all-descendants

diff --git a/gnucash/report/report-utilities.scm b/gnucash/report/report-utilities.scm
index 126e2aaae..1d2901158 100644
--- a/gnucash/report/report-utilities.scm
+++ b/gnucash/report/report-utilities.scm
@@ -234,9 +234,10 @@
 
 ;; Return accountslist *and* their descendant accounts
 (define (gnc:accounts-and-all-descendants accountslist)
-  (sort-and-delete-duplicates
-   (apply append accountslist (map gnc-account-get-descendants accountslist))
-   gnc:account-path-less-p equal?))
+  (issue-deprecation-warning "gnc:accounts-and-all-descendants is \
+now deprecated, use gnc-accounts-and-all-descendants instead. sort \
+with gnc:account-full-name<? if necessary.")
+  (sort (gnc-accounts-and-all-descendants accountslist) gnc:account-full-name<?))
 
 ;;; Here's a statistics collector...  Collects max, min, total, and makes
 ;;; it easy to get at the mean.
diff --git a/gnucash/report/test/test-report-utilities.scm b/gnucash/report/test/test-report-utilities.scm
index 647540b2d..ce3816673 100644
--- a/gnucash/report/test/test-report-utilities.scm
+++ b/gnucash/report/test/test-report-utilities.scm
@@ -546,9 +546,11 @@
             (account-lookup "GBP Savings")
             (account-lookup "Expenses")
             (account-lookup "Fuel"))
-      (gnc:accounts-and-all-descendants
-       (list (account-lookup "Expenses")
-             (account-lookup "GBP Bank"))))
+      (sort
+       (gnc-accounts-and-all-descendants
+        (list (account-lookup "Expenses")
+              (account-lookup "GBP Bank")))
+       gnc:account-full-name<?))
 
     (teardown)))
 

commit fae7ea02cd078ea08c90bcff57979079d403e22c
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Sat Apr 2 10:26:34 2022 +0800

    [account.cpp] gnc_accounts_and_all_descendants converted from scm
    
    much more efficient than guile algorithm, avoids numerous repeated
    GList<->SCM conversions, and traversals of account descendants.

diff --git a/bindings/engine-common.i b/bindings/engine-common.i
index b4d861dd6..d85e7ef8d 100644
--- a/bindings/engine-common.i
+++ b/bindings/engine-common.i
@@ -48,10 +48,14 @@ AccountList * gnc_account_get_descendants (const Account *account);
 %newobject gnc_account_get_descendants_sorted;
 AccountList * gnc_account_get_descendants_sorted (const Account *account);
 
+%newobject gnc_accounts_and_all_descendants;
+AccountList * gnc_accounts_and_all_descendants (AccountList *accounts);
+
 %ignore gnc_account_get_children;
 %ignore gnc_account_get_children_sorted;
 %ignore gnc_account_get_descendants;
 %ignore gnc_account_get_descendants_sorted;
+%ignore gnc_accounts_and_all_descendants;
 %include <Account.h>
 
 %include <Transaction.h>
diff --git a/libgnucash/engine/Account.cpp b/libgnucash/engine/Account.cpp
index 92f4d2bf5..4140ca1f6 100644
--- a/libgnucash/engine/Account.cpp
+++ b/libgnucash/engine/Account.cpp
@@ -49,6 +49,7 @@ extern "C" {
 
 #include <numeric>
 #include <map>
+#include <unordered_set>
 
 static QofLogModule log_module = GNC_MOD_ACCOUNT;
 
@@ -6228,6 +6229,21 @@ gboolean xaccAccountRegister (void)
     return qof_object_register (&account_object_def);
 }
 
+using AccountSet = std::unordered_set<Account*>;
+static void maybe_add_descendants (Account* acc, gpointer arg)
+{
+    if (static_cast <AccountSet*> (arg)->insert (acc).second)
+        g_list_foreach (GET_PRIVATE(acc)->children, (GFunc) maybe_add_descendants, arg);
+};
+
+GList *
+gnc_accounts_and_all_descendants (GList *accounts)
+{
+    AccountSet accset;
+    g_list_foreach (accounts, (GFunc) maybe_add_descendants, &accset);
+    return std::accumulate (accset.begin(), accset.end(), (GList*) nullptr, g_list_prepend);
+}
+
 /* ======================= UNIT TESTING ACCESS =======================
  * The following functions are for unit testing use only.
  */
diff --git a/libgnucash/engine/Account.h b/libgnucash/engine/Account.h
index 19093036c..868c1b955 100644
--- a/libgnucash/engine/Account.h
+++ b/libgnucash/engine/Account.h
@@ -1620,6 +1620,7 @@ void dxaccAccountSetQuoteTZ (Account *account, const char *tz);
 const char * dxaccAccountGetQuoteTZ (const Account *account);
 /** @} */
 
+GList * gnc_accounts_and_all_descendants (GList *accounts);
 
 /** @name Account parameter names
  @{



Summary of changes:
 bindings/engine-common.i                           |   4 +
 gnucash/gnome-utils/gnc-account-sel.c              |  14 +-
 gnucash/gnome-utils/gnc-main-window.cpp            |  11 +-
 gnucash/gnome/dialog-tax-info.c                    |   1 +
 gnucash/gnome/gnc-plugin-page-register.c           |   2 +-
 gnucash/report/html-acct-table.scm                 |  15 +-
 gnucash/report/report-utilities.scm                |   6 -
 gnucash/report/reports/example/average-balance.scm |   2 +-
 gnucash/report/reports/example/daily-reports.scm   |   4 +-
 .../report/reports/standard/account-summary.scm    |   2 +-
 gnucash/report/reports/standard/budget.scm         |   2 +-
 gnucash/report/reports/standard/cash-flow.scm      |   2 +-
 .../report/reports/standard/category-barchart.scm  |   4 +-
 gnucash/report/reports/standard/net-charts.scm     |   2 +-
 gnucash/report/reports/standard/portfolio.scm      |   2 +-
 .../reports/standard/test/test-income-gst.scm      |   4 +-
 gnucash/report/test/test-report-utilities.scm      |   8 +-
 libgnucash/app-utils/gnc-sx-instance-model.c       |   4 +-
 libgnucash/engine/Account.cpp                      |  44 ++++-
 libgnucash/engine/Account.h                        |   1 +
 libgnucash/engine/test/utest-Account.cpp           |  34 ++++
 libgnucash/tax/us/txf.scm                          |   1 +
 po/ar.po                                           | 180 +++++++++------------
 po/es.po                                           |   6 +-
 po/glossary/ar.po                                  |  16 +-
 po/glossary/bg.po                                  |  27 ++--
 po/glossary/hu.po                                  |  18 ++-
 po/hu.po                                           |   7 +-
 po/nb.po                                           |  30 +++-
 po/pl.po                                           |   8 +-
 30 files changed, 263 insertions(+), 198 deletions(-)



More information about the gnucash-changes mailing list