gnucash master: Break circular dependency between owner-report.scm and reports.scm
Geert Janssens
gjanssens at code.gnucash.org
Mon Aug 26 12:53:11 EDT 2019
Updated via https://github.com/Gnucash/gnucash/commit/d7e66f96 (commit)
from https://github.com/Gnucash/gnucash/commit/1fc83100 (commit)
commit d7e66f964933cbb47690b6c9c98cd8e4fc66730d
Author: Geert Janssens <geert at kobaltwit.be>
Date: Mon Aug 26 18:50:33 2019 +0200
Break circular dependency between owner-report.scm and reports.scm
That is:
* move the account lookup from report.scm to owner-report.scm so
there's no need any more to call into reports.scm from within owner-report.scm
* fix the cmake dependency tree to reflect the new changes:
only customer-overview depends directly on code in reports.scm
All other reports don't. reports.scm however does depend on three
standard reports. So:
standard-reports <- reports <- customer-overview
diff --git a/gnucash/report/reports/CMakeLists.txt b/gnucash/report/reports/CMakeLists.txt
index fba8952aa..6fb40637c 100644
--- a/gnucash/report/reports/CMakeLists.txt
+++ b/gnucash/report/reports/CMakeLists.txt
@@ -6,10 +6,6 @@ set (reports_common_SCHEME
aging.scm
)
-set (reports_SCHEME
- reports.scm
-)
-
set (reports_standard_SCHEME
standard/account-piecharts.scm
standard/account-summary.scm
@@ -40,7 +36,6 @@ set (reports_standard_SCHEME
standard/transaction.scm
standard/trial-balance.scm
standard/view-column.scm
- standard/customer-summary.scm
standard/taxinvoice.scm
standard/receipt.scm
standard/invoice.scm
@@ -49,7 +44,11 @@ set (reports_standard_SCHEME
standard/payables.scm
standard/receivables.scm
standard/balsheet-eg.scm
- )
+)
+
+set (reports_standard_SCHEME_2
+ standard/customer-summary.scm # Depends on owner-report
+)
set(reports_example_SCHEME
example/average-balance.scm
@@ -67,6 +66,10 @@ set(reports_de_DE_SCHEME
locale-specific/de_DE/taxtxf.scm
)
+set (reports_SCHEME
+ reports.scm
+)
+
set(scm_rpts_GUILE_DEPENDS
gncmod-html
scm-core-utils
@@ -109,24 +112,17 @@ set(scm_rpt_std_GUILE_DEPENDS
scm-reports-standard-links
)
-gnc_add_scheme_targets(scm-rpt-reports
- "${reports_SCHEME}"
- "gnucash"
- "${scm_rpts_GUILE_DEPENDS}"
- TRUE
-)
-
gnc_add_scheme_targets(scm-reports-common
"${reports_common_SCHEME}"
"gnucash/reports"
- "scm-reports-common-links;scm-rpt-reports;${scm_rpt_std_GUILE_DEPENDS}"
+ "scm-reports-common-links;${scm_rpt_std_GUILE_DEPENDS}"
TRUE
)
gnc_add_scheme_targets(scm-reports-standard
"${reports_standard_SCHEME}"
"gnucash/reports/standard"
- "scm-rpt-reports;${scm_rpt_std_GUILE_DEPENDS}"
+ "scm-reports-common;${scm_rpt_std_GUILE_DEPENDS}"
TRUE
)
@@ -151,8 +147,23 @@ gnc_add_scheme_targets(scm-reports-de_DE
TRUE
)
+gnc_add_scheme_targets(scm-rpt-reports
+ "${reports_SCHEME}"
+ "gnucash"
+ "scm-reports-standard;scm-reports-example;scm-reports-us;scm-reports-de_DE;${scm_rpts_GUILE_DEPENDS};"
+ TRUE
+)
+
+gnc_add_scheme_targets(scm-reports-standard-2
+ "${reports_standard_SCHEME_2}"
+ "gnucash/reports/standard"
+ "scm-rpt-reports"
+ TRUE
+)
+
add_custom_target(scm-reports ALL DEPENDS
scm-reports-standard
+ scm-reports-standard-2
scm-reports-example
scm-reports-common
scm-rpt-reports
@@ -210,7 +221,7 @@ gnc_add_scheme_deprecated_module ("gnucash report standard-reports trial-balance
gnc_add_scheme_deprecated_module ("gnucash report view-column" "gnucash reports standard view-column" "scm-reports-standard" "")
set_local_dist(reports_DIST_local CMakeLists.txt ${reports_SCHEME}
- ${reports_common_SCHEME} ${reports_standard_SCHEME} ${reports_example_SCHEME}
- ${reports_us_SCHEME} ${reports_de_DE_SCHEME})
+ ${reports_common_SCHEME} ${reports_standard_SCHEME} ${reports_standard_SCHEME_2}
+ ${reports_example_SCHEME} ${reports_us_SCHEME} ${reports_de_DE_SCHEME})
set(reports_DIST ${reports_DIST_local} ${reports_support_DIST}
${test_reports_standard_DIST} PARENT_SCOPE)
diff --git a/gnucash/report/reports/reports.scm b/gnucash/report/reports/reports.scm
index af536f85b..b946c71e3 100644
--- a/gnucash/report/reports/reports.scm
+++ b/gnucash/report/reports/reports.scm
@@ -90,7 +90,4 @@
(use-modules (gnucash reports standard owner-report))
(define* (gnc:owner-report-create owner account #:key currency)
- ; Figure out an account to use if nothing exists here.
- (if (null? account)
- (set! account (find-first-account-for-owner owner #:currency currency)))
- (owner-report-create owner account))
+ (owner-report-create owner account #:currency currency))
diff --git a/gnucash/report/reports/standard/owner-report.scm b/gnucash/report/reports/standard/owner-report.scm
index fdcdac3b4..803fffde9 100644
--- a/gnucash/report/reports/standard/owner-report.scm
+++ b/gnucash/report/reports/standard/owner-report.scm
@@ -32,7 +32,6 @@
(use-modules (gnucash gnc-module))
(use-modules (gnucash utilities)) ; for gnc:debug
(use-modules (gnucash gettext))
-(use-modules (gnucash reports))
(gnc:module-load "gnucash/report" 0)
@@ -881,8 +880,11 @@
(gnc:option-set-value account-op account)
(gnc:make-report report-guid options)))
-(define (owner-report-create owner account)
+(define* (owner-report-create owner account #:key currency)
(let ((type (gncOwnerGetType (gncOwnerGetEndOwner owner))))
+ ; Figure out an account to use if nothing exists here.
+ (if (null? account)
+ (set! account (find-first-account-for-owner owner #:currency currency)))
(cond
((eqv? type GNC-OWNER-CUSTOMER)
(owner-report-create-internal customer-report-guid owner account type)) ;; Not sure whether to pass type, or to use the guid in the report function
@@ -904,7 +906,7 @@
(res -1)) ;; XXX -- in this case we should create an error report
(if (not (null? owner))
- (set! res (gnc:owner-report-create owner account)))
+ (set! res (owner-report-create owner account)))
(gncOwnerFree temp-owner)
res))
@@ -915,4 +917,4 @@
(gnc:register-report-hook ACCT-TYPE-PAYABLE #t
gnc:owner-report-create-internal)
-(export find-first-account-for-owner owner-report-create)
+(export owner-report-create)
Summary of changes:
gnucash/report/reports/CMakeLists.txt | 45 +++++++++++++++---------
gnucash/report/reports/reports.scm | 5 +--
gnucash/report/reports/standard/owner-report.scm | 10 +++---
3 files changed, 35 insertions(+), 25 deletions(-)
More information about the gnucash-changes
mailing list