gnucash maint: Replace overly indirect gnc_business_get_default_tax_table.
John Ralls
jralls at code.gnucash.org
Thu Aug 22 15:37:00 EDT 2019
Updated via https://github.com/Gnucash/gnucash/commit/fcc16538 (commit)
from https://github.com/Gnucash/gnucash/commit/33b1a19e (commit)
commit fcc1653822227bc1d4ad0a6153e08541a5499f37
Author: John Ralls <jralls at ceridwen.us>
Date: Thu Aug 22 12:23:09 2019 -0700
Replace overly indirect gnc_business_get_default_tax_table.
With gncTaxTableGetDefault.
qof_book_get_default_tax_table would have been even better but it
would have created a circular dependency between QofBook and
GncTaxTable.
diff --git a/gnucash/register/ledger-core/gncEntryLedgerLoad.c b/gnucash/register/ledger-core/gncEntryLedgerLoad.c
index 3684755aa..ac8b94cec 100644
--- a/gnucash/register/ledger-core/gncEntryLedgerLoad.c
+++ b/gnucash/register/ledger-core/gncEntryLedgerLoad.c
@@ -34,8 +34,6 @@
#include "gnc-ui-util.h"
#include "recncell.h"
-#include "business-helpers.h"
-
#include "gncEntry.h"
#include "gncEntryLedger.h"
#include "gncEntryLedgerP.h"
@@ -430,16 +428,16 @@ void gnc_entry_ledger_load (GncEntryLedger *ledger, GList *entry_list)
switch (gncOwnerGetType (owner))
{
case GNC_OWNER_CUSTOMER:
- table = gnc_business_get_default_tax_table (ledger->book,
- GNC_OWNER_CUSTOMER);
+ table = gncTaxTableGetDefault (ledger->book,
+ GNC_OWNER_CUSTOMER);
if (gncCustomerGetTaxTableOverride (owner->owner.customer))
table = gncCustomerGetTaxTable (owner->owner.customer);
break;
case GNC_OWNER_VENDOR:
- table = gnc_business_get_default_tax_table (ledger->book,
- GNC_OWNER_VENDOR);
+ table = gncTaxTableGetDefault (ledger->book,
+ GNC_OWNER_VENDOR);
if (gncVendorGetTaxTableOverride (owner->owner.vendor))
table = gncVendorGetTaxTable (owner->owner.vendor);
diff --git a/libgnucash/app-utils/CMakeLists.txt b/libgnucash/app-utils/CMakeLists.txt
index e293ea476..50eedc5ab 100644
--- a/libgnucash/app-utils/CMakeLists.txt
+++ b/libgnucash/app-utils/CMakeLists.txt
@@ -11,7 +11,6 @@ set (app_utils_noinst_HEADERS
set (app_utils_HEADERS
QuickFill.h
- business-helpers.h
business-options.h
file-utils.h
gfec.h
@@ -52,7 +51,6 @@ gnc_add_swig_python_command (swig-app-utils-python
set (app_utils_SOURCES
calculation/expression_parser.c
calculation/fin.c
- business-helpers.c
business-options.c
QuickFill.c
file-utils.c
diff --git a/libgnucash/app-utils/business-helpers.c b/libgnucash/app-utils/business-helpers.c
deleted file mode 100644
index c63a7ef32..000000000
--- a/libgnucash/app-utils/business-helpers.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * business-options.c -- non-GUI helper functions for business features
- *
- * Written By: Derek Atkins <warlord at MIT.EDU>
- * Copyright (C) 2003 Derek Atkins
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, contact:
- *
- * Free Software Foundation Voice: +1-617-542-5942
- * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
- * Boston, MA 02110-1301, USA gnu at gnu.org
- */
-
-#include <config.h>
-
-#include "business-options.h"
-#include "business-helpers.h"
-
-GncTaxTable* gnc_business_get_default_tax_table (QofBook *book, GncOwnerType ownertype)
-{
- GncTaxTable *table = NULL;
- GNCOptionDB *odb;
-
- odb = gnc_option_db_new_for_type (GNC_ID_BOOK);
- qof_book_load_options (book, gnc_option_db_load, odb);
-
- switch (ownertype)
- {
- case GNC_OWNER_CUSTOMER:
- table = gnc_option_db_lookup_taxtable_option (odb,
- "Business",
- "Default Customer TaxTable",
- NULL);
- break;
-
- case GNC_OWNER_VENDOR:
- table = gnc_option_db_lookup_taxtable_option (odb,
- "Business",
- "Default Vendor TaxTable",
- NULL);
- break;
-
- default:
- break;
- }
-
- gnc_option_db_destroy (odb);
- return table;
-}
diff --git a/libgnucash/app-utils/business-helpers.h b/libgnucash/app-utils/business-helpers.h
deleted file mode 100644
index 25032d717..000000000
--- a/libgnucash/app-utils/business-helpers.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * business-helpers.h -- non-GUI helper functions for business features
- *
- * Written By: Derek Atkins <warlord at MIT.EDU>
- * Copyright (C) 2003 Derek Atkins <warlord at MIT.EDU>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, contact:
- *
- * Free Software Foundation Voice: +1-617-542-5942
- * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
- * Boston, MA 02110-1301, USA gnu at gnu.org
- */
-
-#ifndef GNC_BUSINESS_HELPERS_H_
-#define GNC_BUSINESS_HELPERS_H_
-
-#include "gncTaxTable.h"
-#include "gncOwner.h"
-
-
-GncTaxTable* gnc_business_get_default_tax_table (QofBook *book, GncOwnerType ownertype);
-
-
-#endif /* GNC_BUSINESS_HELPERS_H_ */
diff --git a/libgnucash/engine/gncTaxTable.c b/libgnucash/engine/gncTaxTable.c
index 6159d1285..8fa17d1a0 100644
--- a/libgnucash/engine/gncTaxTable.c
+++ b/libgnucash/engine/gncTaxTable.c
@@ -681,6 +681,26 @@ GncTaxTable *gncTaxTableLookupByName (QofBook *book, const char *name)
return NULL;
}
+GncTaxTable*
+gncTaxTableGetDefault (QofBook *book, GncOwnerType type)
+{
+ GSList *path = NULL;
+ const GncGUID *guid = NULL;
+ const char *vendor = "Default Vendor TaxTable";
+ const char *customer = "Default Customer TaxTable";
+ const char *section = "Business";
+
+ g_return_val_if_fail (book != NULL, NULL);
+ g_return_val_if_fail (type == GNC_OWNER_CUSTOMER || \
+ type == GNC_OWNER_VENDOR, NULL);
+ path = g_slist_prepend (path, type == GNC_OWNER_CUSTOMER ? (void*)customer : (void*)vendor);
+ path = g_slist_prepend (path, (void*)section);
+
+ guid = qof_book_get_guid_option (book, path);
+ g_return_val_if_fail (guid, NULL);
+ return gncTaxTableLookup (book, guid);
+}
+
GncTaxTableList * gncTaxTableGetTables (QofBook *book)
{
struct _book_info *bi;
diff --git a/libgnucash/engine/gncTaxTable.h b/libgnucash/engine/gncTaxTable.h
index 5215585e1..4ec0dafb2 100644
--- a/libgnucash/engine/gncTaxTable.h
+++ b/libgnucash/engine/gncTaxTable.h
@@ -60,15 +60,32 @@ typedef struct _gncTaxTableClass GncTaxTableClass;
};
*/
+/**
+ * How to interpret the amount.
+ * You can interpret it as a VALUE or a PERCENT.
+ */
+typedef enum
+{
+ GNC_AMT_TYPE_VALUE = 1, /**< tax is a number */
+ GNC_AMT_TYPE_PERCENT /**< tax is a percentage */
+} GncAmountType;
+
+/** How to interpret the TaxIncluded */
+typedef enum
+{
+ GNC_TAXINCLUDED_YES = 1, /**< tax is included */
+ GNC_TAXINCLUDED_NO, /**< tax is not included */
+ GNC_TAXINCLUDED_USEGLOBAL, /**< use the global setting */
+} GncTaxIncluded;
+
typedef struct _gncTaxTableEntry GncTaxTableEntry;
typedef struct _gncAccountValue GncAccountValue;
#include "Account.h"
#include "qof.h"
-#ifdef GNUCASH_MAJOR_VERSION
#include "gncBusiness.h"
-#endif
+#include "gncOwner.h"
#define GNC_ID_TAXTABLE "gncTaxTable"
@@ -86,23 +103,6 @@ typedef struct _gncAccountValue GncAccountValue;
(G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_TAXTABLE, GncTaxTableClass))
GType gnc_taxtable_get_type(void);
-/**
- * How to interpret the amount.
- * You can interpret it as a VALUE or a PERCENT.
- */
-typedef enum
-{
- GNC_AMT_TYPE_VALUE = 1, /**< tax is a number */
- GNC_AMT_TYPE_PERCENT /**< tax is a percentage */
-} GncAmountType;
-
-/** How to interpret the TaxIncluded */
-typedef enum
-{
- GNC_TAXINCLUDED_YES = 1, /**< tax is included */
- GNC_TAXINCLUDED_NO, /**< tax is not included */
- GNC_TAXINCLUDED_USEGLOBAL, /**< use the global setting */
-} GncTaxIncluded;
const char * gncAmountTypeToString (GncAmountType type);
gboolean gncAmountStringToType (const char *str, GncAmountType *type);
@@ -151,6 +151,7 @@ static inline GncTaxTable *gncTaxTableLookup (const QofBook* book, const GncGUID
}
GncTaxTable *gncTaxTableLookupByName (QofBook *book, const char *name);
+GncTaxTable *gncTaxTableGetDefault (QofBook *book, GncOwnerType type);
typedef GList GncTaxTableList;
GncTaxTableList * gncTaxTableGetTables (QofBook *book);
diff --git a/libgnucash/engine/qofbook.cpp b/libgnucash/engine/qofbook.cpp
index 8e7dc93cf..0042778ad 100644
--- a/libgnucash/engine/qofbook.cpp
+++ b/libgnucash/engine/qofbook.cpp
@@ -1173,6 +1173,18 @@ qof_book_set_string_option(QofBook* book, const char* opt_name, const char* opt_
qof_book_commit_edit(book);
}
+const GncGUID*
+qof_book_get_guid_option(QofBook* book, GSList* path)
+{
+ g_return_val_if_fail(book != nullptr, nullptr);
+ g_return_val_if_fail(path != nullptr, nullptr);
+
+ auto table_value = qof_book_get_option(book, path);
+ if (!table_value)
+ return nullptr;
+ return table_value->get<GncGUID*>();
+}
+
void
qof_book_option_frame_delete (QofBook *book, const char* opt_name)
{
diff --git a/libgnucash/engine/qofbook.h b/libgnucash/engine/qofbook.h
index 39c21f8c3..bc315c80f 100644
--- a/libgnucash/engine/qofbook.h
+++ b/libgnucash/engine/qofbook.h
@@ -375,6 +375,7 @@ char *qof_book_get_counter_format (const QofBook *book,
const char* qof_book_get_string_option(const QofBook* book, const char* opt_name);
void qof_book_set_string_option(QofBook* book, const char* opt_name, const char* opt_val);
+const GncGUID* qof_book_get_guid_option(QofBook* book, GSList* path);
void qof_book_option_frame_delete (QofBook *book, const char* opt_name);
/** Access functions for reading and setting the used-features on this book.
diff --git a/po/POTFILES.in b/po/POTFILES.in
index a8d79d06b..67d490c29 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -506,7 +506,6 @@ gnucash/report/utility-reports/utility-reports.scm
gnucash/report/utility-reports/view-column.scm
gnucash/report/utility-reports/welcome-to-gnucash.scm
libgnucash/app-utils/app-utils.scm
-libgnucash/app-utils/business-helpers.c
libgnucash/app-utils/business-options.c
libgnucash/app-utils/business-options.scm
libgnucash/app-utils/business-prefs.scm
Summary of changes:
gnucash/register/ledger-core/gncEntryLedgerLoad.c | 10 ++--
libgnucash/app-utils/CMakeLists.txt | 2 -
libgnucash/app-utils/business-helpers.c | 60 -----------------------
libgnucash/app-utils/business-helpers.h | 35 -------------
libgnucash/engine/gncTaxTable.c | 20 ++++++++
libgnucash/engine/gncTaxTable.h | 39 ++++++++-------
libgnucash/engine/qofbook.cpp | 12 +++++
libgnucash/engine/qofbook.h | 1 +
po/POTFILES.in | 1 -
9 files changed, 57 insertions(+), 123 deletions(-)
delete mode 100644 libgnucash/app-utils/business-helpers.c
delete mode 100644 libgnucash/app-utils/business-helpers.h
More information about the gnucash-changes
mailing list