From 3cb84994450fe9d521e9441291ff03730eeadc98 Mon Sep 17 00:00:00 2001 From: Christian Stimming Date: Tue, 2 Mar 2010 21:41:05 +0000 Subject: [PATCH] Re-indentation of source code, next batch: src/business/* This also strips trailing whitespaces from lines where they existed. This re-indentation was done using astyle-1.24 using the following options: astyle --indent=spaces=4 --brackets=break --pad-oper --pad-header --suffix=none git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@18789 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/business/business-core/gncAddress.c | 432 +- src/business/business-core/gncAddress.h | 12 +- src/business/business-core/gncBillTerm.c | 778 ++-- src/business/business-core/gncBillTerm.h | 15 +- src/business/business-core/gncBillTermP.h | 6 +- src/business/business-core/gncBusGuile.c | 70 +- src/business/business-core/gncBusPeriod.c | 34 +- src/business/business-core/gncBusiness.c | 6 +- src/business/business-core/gncBusiness.h | 2 +- src/business/business-core/gncCustomer.c | 747 ++-- src/business/business-core/gncCustomer.h | 10 +- src/business/business-core/gncCustomerP.h | 2 +- src/business/business-core/gncEmployee.c | 537 +-- src/business/business-core/gncEmployee.h | 6 +- src/business/business-core/gncEmployeeP.h | 4 +- src/business/business-core/gncEntry.c | 1576 +++---- src/business/business-core/gncEntry.h | 52 +- src/business/business-core/gncEntryP.h | 2 +- src/business/business-core/gncInvoice.c | 2404 ++++++----- src/business/business-core/gncInvoice.h | 26 +- src/business/business-core/gncInvoiceP.h | 6 +- src/business/business-core/gncJob.c | 483 ++- src/business/business-core/gncOrder.c | 461 +- src/business/business-core/gncOrder.h | 2 +- src/business/business-core/gncOrderP.h | 2 +- src/business/business-core/gncOwner.c | 692 +-- src/business/business-core/gncOwner.h | 41 +- src/business/business-core/gncOwnerP.h | 2 +- src/business/business-core/gncTaxTable.c | 895 ++-- src/business/business-core/gncTaxTable.h | 41 +- src/business/business-core/gncVendor.c | 663 +-- src/business/business-core/gncVendor.h | 6 +- src/business/business-core/gncVendorP.h | 2 +- .../business-core/sql/gnc-address-sql.c | 202 +- .../business-core/sql/gnc-bill-term-sql.c | 213 +- .../business-core/sql/gnc-customer-sql.c | 157 +- .../business-core/sql/gnc-employee-sql.c | 199 +- .../business-core/sql/gnc-entry-sql.c | 229 +- .../business-core/sql/gnc-invoice-sql.c | 293 +- src/business/business-core/sql/gnc-job-sql.c | 118 +- .../business-core/sql/gnc-order-sql.c | 170 +- .../business-core/sql/gnc-owner-sql.c | 330 +- .../business-core/sql/gnc-tax-table-sql.c | 379 +- .../business-core/sql/gnc-vendor-sql.c | 195 +- .../business-core/test/test-address.c | 89 +- .../business-core/test/test-business.c | 109 +- .../business-core/test/test-customer.c | 257 +- .../business-core/test/test-employee.c | 265 +- src/business/business-core/test/test-job.c | 289 +- .../business-core/test/test-load-module.c | 40 +- src/business/business-core/test/test-vendor.c | 255 +- .../business-core/xml/gnc-address-xml-v2.c | 44 +- .../business-core/xml/gnc-bill-term-xml-v2.c | 707 ++-- .../business-core/xml/gnc-customer-xml-v2.c | 211 +- .../business-core/xml/gnc-employee-xml-v2.c | 171 +- .../business-core/xml/gnc-entry-xml-v2.c | 343 +- .../business-core/xml/gnc-invoice-xml-v2.c | 245 +- .../business-core/xml/gnc-job-xml-v2.c | 165 +- .../business-core/xml/gnc-order-xml-v2.c | 181 +- .../business-core/xml/gnc-owner-xml-v2.c | 201 +- .../business-core/xml/gnc-owner-xml-v2.h | 2 +- .../business-core/xml/gnc-tax-table-xml-v2.c | 665 +-- .../business-core/xml/gnc-vendor-xml-v2.c | 199 +- src/business/business-core/xml/xml-helpers.h | 18 +- .../business-gnome/business-gnome-utils.c | 777 ++-- .../business-gnome/business-gnome-utils.h | 24 +- .../business-gnome/business-options-gnome.c | 477 +-- src/business/business-gnome/business-urls.c | 319 +- .../business-gnome/dialog-billterms.c | 997 ++--- .../business-gnome/dialog-choose-owner.c | 98 +- src/business/business-gnome/dialog-customer.c | 1088 ++--- .../business-gnome/dialog-date-close.c | 595 +-- .../business-gnome/dialog-date-close.h | 46 +- src/business/business-gnome/dialog-employee.c | 928 ++-- src/business/business-gnome/dialog-invoice.c | 3764 +++++++++-------- src/business/business-gnome/dialog-invoice.h | 12 +- src/business/business-gnome/dialog-job.c | 762 ++-- src/business/business-gnome/dialog-job.h | 2 +- src/business/business-gnome/dialog-order.c | 1209 +++--- src/business/business-gnome/dialog-order.h | 2 +- src/business/business-gnome/dialog-payment.c | 792 ++-- src/business/business-gnome/dialog-payment.h | 4 +- src/business/business-gnome/dialog-vendor.c | 853 ++-- .../business-gnome/gnc-plugin-business.c | 1166 ++--- .../business-gnome/gnc-plugin-business.h | 14 +- .../business-gnome/gnc-plugin-page-invoice.c | 946 +++-- .../business-gnome/gnc-plugin-page-invoice.h | 16 +- src/business/business-gnome/search-owner.c | 317 +- src/business/business-gnome/search-owner.h | 16 +- src/business/business-ledger/gncEntryLedger.c | 1189 +++--- src/business/business-ledger/gncEntryLedger.h | 39 +- .../business-ledger/gncEntryLedgerControl.c | 977 ++--- .../business-ledger/gncEntryLedgerDisplay.c | 204 +- .../business-ledger/gncEntryLedgerLayout.c | 362 +- .../business-ledger/gncEntryLedgerLoad.c | 719 ++-- .../business-ledger/gncEntryLedgerModel.c | 1635 +++---- .../business-ledger/gncEntryLedgerP.h | 61 +- .../business-utils/business-options.c | 40 +- .../business-utils/business-options.h | 24 +- .../dialog-tax-table/dialog-tax-table.c | 1072 ++--- 100 files changed, 19954 insertions(+), 18550 deletions(-) diff --git a/src/business/business-core/gncAddress.c b/src/business/business-core/gncAddress.c index 59f269aa6d..85d75c0b71 100644 --- a/src/business/business-core/gncAddress.c +++ b/src/business/business-core/gncAddress.c @@ -33,26 +33,26 @@ #include "gncAddressP.h" #include "gncCustomerP.h" -struct _gncAddress +struct _gncAddress { - QofInstance inst; + QofInstance inst; - QofBook * book; - QofInstance * parent; - gboolean dirty; - char * name; - char * addr1; - char * addr2; - char * addr3; - char * addr4; - char * phone; - char * fax; - char * email; + QofBook * book; + QofInstance * parent; + gboolean dirty; + char * name; + char * addr1; + char * addr2; + char * addr3; + char * addr4; + char * phone; + char * fax; + char * email; }; struct _gncAddressClass { - QofInstanceClass parent_class; + QofInstanceClass parent_class; }; static QofLogModule log_module = GNC_MOD_BUSINESS; @@ -62,15 +62,16 @@ static QofLogModule log_module = GNC_MOD_BUSINESS; G_INLINE_FUNC void mark_address (GncAddress *address); void mark_address (GncAddress *address) { - address->dirty = TRUE; + address->dirty = TRUE; - qof_event_gen (QOF_INSTANCE(address), QOF_EVENT_MODIFY, address->parent); - qof_event_gen (address->parent, QOF_EVENT_MODIFY, NULL); + qof_event_gen (QOF_INSTANCE(address), QOF_EVENT_MODIFY, address->parent); + qof_event_gen (address->parent, QOF_EVENT_MODIFY, NULL); } -enum { +enum +{ PROP_0, - PROP_NAME + PROP_NAME }; /* GObject Initialization */ @@ -95,43 +96,45 @@ gnc_address_finalize(GObject* addrp) static void gnc_address_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GncAddress *address; g_return_if_fail(GNC_IS_ADDRESS(object)); address = GNC_ADDRESS(object); - switch (prop_id) { - case PROP_NAME: - g_value_set_string(value, address->name); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NAME: + g_value_set_string(value, address->name); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } static void gnc_address_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GncAddress *address; g_return_if_fail(GNC_IS_ADDRESS(object)); address = GNC_ADDRESS(object); - switch (prop_id) { - case PROP_NAME: - gncAddressSetName(address, g_value_get_string(value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NAME: + gncAddressSetName(address, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } @@ -139,124 +142,133 @@ static void gnc_address_class_init (GncAddressClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - + gobject_class->dispose = gnc_address_dispose; gobject_class->finalize = gnc_address_finalize; gobject_class->set_property = gnc_address_set_property; gobject_class->get_property = gnc_address_get_property; g_object_class_install_property - (gobject_class, - PROP_NAME, - g_param_spec_string ("name", - "Address Name", - "The address name is an arbitrary string " - "assigned by the user. It is intended to " - "a short string to identify the address.", - NULL, - G_PARAM_READWRITE)); + (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "Address Name", + "The address name is an arbitrary string " + "assigned by the user. It is intended to " + "a short string to identify the address.", + NULL, + G_PARAM_READWRITE)); } /* Create/Destroy functions */ -GncAddress * +GncAddress * gncAddressCreate (QofBook *book, QofInstance *prnt) { - GncAddress *addr; + GncAddress *addr; - if (!book) return NULL; + if (!book) return NULL; - addr = g_object_new (GNC_TYPE_ADDRESS, NULL); - qof_instance_init_data(&addr->inst, GNC_ID_ADDRESS, book); - addr->book = book; - addr->dirty = FALSE; - addr->parent = prnt; + addr = g_object_new (GNC_TYPE_ADDRESS, NULL); + qof_instance_init_data(&addr->inst, GNC_ID_ADDRESS, book); + addr->book = book; + addr->dirty = FALSE; + addr->parent = prnt; - addr->name = CACHE_INSERT (""); - addr->addr1 = CACHE_INSERT (""); - addr->addr2 = CACHE_INSERT (""); - addr->addr3 = CACHE_INSERT (""); - addr->addr4 = CACHE_INSERT (""); - addr->phone = CACHE_INSERT (""); - addr->fax = CACHE_INSERT (""); - addr->email = CACHE_INSERT (""); + addr->name = CACHE_INSERT (""); + addr->addr1 = CACHE_INSERT (""); + addr->addr2 = CACHE_INSERT (""); + addr->addr3 = CACHE_INSERT (""); + addr->addr4 = CACHE_INSERT (""); + addr->phone = CACHE_INSERT (""); + addr->fax = CACHE_INSERT (""); + addr->email = CACHE_INSERT (""); - return addr; + return addr; } -static GncAddress * +static GncAddress * qofAddressCreate (QofBook *book) { - /* The address will get set later by another function */ - return gncAddressCreate(book, NULL); + /* The address will get set later by another function */ + return gncAddressCreate(book, NULL); } static void qofAddressSetOwner(GncAddress *addr, QofInstance *ent) { - if(!addr || !ent) { return; } - if(addr->parent == NULL) { addr->parent = ent; } + if (!addr || !ent) + { + return; + } + if (addr->parent == NULL) + { + addr->parent = ent; + } } static QofInstance* qofAddressGetOwner(const GncAddress *addr) { - if(!addr) { return NULL; } - return addr->parent; + if (!addr) + { + return NULL; + } + return addr->parent; } -GncAddress * +GncAddress * gncCloneAddress (const GncAddress *from, QofInstance *new_parent, QofBook *book) { - GncAddress *addr; + GncAddress *addr; - if (!book) return NULL; + if (!book) return NULL; - addr = g_object_new (GNC_TYPE_ADDRESS, NULL); - qof_instance_init_data(&addr->inst, GNC_ID_ADDRESS, book); - addr->book = book; - addr->dirty = TRUE; - addr->parent = new_parent; + addr = g_object_new (GNC_TYPE_ADDRESS, NULL); + qof_instance_init_data(&addr->inst, GNC_ID_ADDRESS, book); + addr->book = book; + addr->dirty = TRUE; + addr->parent = new_parent; - addr->name = CACHE_INSERT (from->name); - addr->addr1 = CACHE_INSERT (from->addr1); - addr->addr2 = CACHE_INSERT (from->addr2); - addr->addr3 = CACHE_INSERT (from->addr3); - addr->addr4 = CACHE_INSERT (from->addr4); - addr->phone = CACHE_INSERT (from->phone); - addr->fax = CACHE_INSERT (from->fax); - addr->email = CACHE_INSERT (from->email); + addr->name = CACHE_INSERT (from->name); + addr->addr1 = CACHE_INSERT (from->addr1); + addr->addr2 = CACHE_INSERT (from->addr2); + addr->addr3 = CACHE_INSERT (from->addr3); + addr->addr4 = CACHE_INSERT (from->addr4); + addr->phone = CACHE_INSERT (from->phone); + addr->fax = CACHE_INSERT (from->fax); + addr->email = CACHE_INSERT (from->email); - return addr; + return addr; } -void +void gncAddressDestroy (GncAddress *addr) { - if (!addr) return; - qof_instance_set_destroying(addr, TRUE); - gncAddressCommitEdit (addr); + if (!addr) return; + qof_instance_set_destroying(addr, TRUE); + gncAddressCommitEdit (addr); } static void gncAddressFree (GncAddress *addr) { - if (!addr) return; + if (!addr) return; - qof_event_gen (&addr->inst, QOF_EVENT_DESTROY, NULL); + qof_event_gen (&addr->inst, QOF_EVENT_DESTROY, NULL); - CACHE_REMOVE (addr->name); - CACHE_REMOVE (addr->addr1); - CACHE_REMOVE (addr->addr2); - CACHE_REMOVE (addr->addr3); - CACHE_REMOVE (addr->addr4); - CACHE_REMOVE (addr->phone); - CACHE_REMOVE (addr->fax); - CACHE_REMOVE (addr->email); + CACHE_REMOVE (addr->name); + CACHE_REMOVE (addr->addr1); + CACHE_REMOVE (addr->addr2); + CACHE_REMOVE (addr->addr3); + CACHE_REMOVE (addr->addr4); + CACHE_REMOVE (addr->phone); + CACHE_REMOVE (addr->fax); + CACHE_REMOVE (addr->email); - /* qof_instance_release (&addr->inst); */ - g_object_unref (addr); + /* qof_instance_release (&addr->inst); */ + g_object_unref (addr); } @@ -275,209 +287,213 @@ gncAddressFree (GncAddress *addr) void gncAddressSetName (GncAddress *addr, const char *name) { - if (!addr) return; - if (!name) return; - SET_STR(addr, addr->name, name); - mark_address (addr); - gncAddressCommitEdit (addr); + if (!addr) return; + if (!name) return; + SET_STR(addr, addr->name, name); + mark_address (addr); + gncAddressCommitEdit (addr); } void gncAddressSetAddr1 (GncAddress *addr, const char *addr1) { - if (!addr) return; - if (!addr1) return; - SET_STR(addr, addr->addr1, addr1); - mark_address (addr); - gncAddressCommitEdit (addr); + if (!addr) return; + if (!addr1) return; + SET_STR(addr, addr->addr1, addr1); + mark_address (addr); + gncAddressCommitEdit (addr); } void gncAddressSetAddr2 (GncAddress *addr, const char *addr2) { - if (!addr) return; - if (!addr2) return; - SET_STR(addr, addr->addr2, addr2); - mark_address (addr); - gncAddressCommitEdit (addr); + if (!addr) return; + if (!addr2) return; + SET_STR(addr, addr->addr2, addr2); + mark_address (addr); + gncAddressCommitEdit (addr); } void gncAddressSetAddr3 (GncAddress *addr, const char *addr3) { - if (!addr) return; - if (!addr3) return; - SET_STR(addr, addr->addr3, addr3); - mark_address (addr); - gncAddressCommitEdit (addr); + if (!addr) return; + if (!addr3) return; + SET_STR(addr, addr->addr3, addr3); + mark_address (addr); + gncAddressCommitEdit (addr); } void gncAddressSetAddr4 (GncAddress *addr, const char *addr4) { - if (!addr) return; - if (!addr4) return; - SET_STR(addr, addr->addr4, addr4); - mark_address (addr); - gncAddressCommitEdit (addr); + if (!addr) return; + if (!addr4) return; + SET_STR(addr, addr->addr4, addr4); + mark_address (addr); + gncAddressCommitEdit (addr); } void gncAddressSetPhone (GncAddress *addr, const char *phone) { - if (!addr) return; - if (!phone) return; - SET_STR(addr, addr->phone, phone); - mark_address (addr); - gncAddressCommitEdit (addr); + if (!addr) return; + if (!phone) return; + SET_STR(addr, addr->phone, phone); + mark_address (addr); + gncAddressCommitEdit (addr); } void gncAddressSetFax (GncAddress *addr, const char *fax) { - if (!addr) return; - if (!fax) return; - SET_STR(addr, addr->fax, fax); - mark_address (addr); - gncAddressCommitEdit (addr); + if (!addr) return; + if (!fax) return; + SET_STR(addr, addr->fax, fax); + mark_address (addr); + gncAddressCommitEdit (addr); } void gncAddressSetEmail (GncAddress *addr, const char *email) { - if (!addr) return; - if (!email) return; - SET_STR(addr, addr->email, email); - mark_address (addr); - gncAddressCommitEdit (addr); + if (!addr) return; + if (!email) return; + SET_STR(addr, addr->email, email); + mark_address (addr); + gncAddressCommitEdit (addr); } void gncAddressBeginEdit (GncAddress *addr) { - qof_begin_edit (&addr->inst); + qof_begin_edit (&addr->inst); } static void gncAddressOnError (QofInstance *inst, QofBackendError errcode) { - PERR("Address QofBackend Failure: %d", errcode); - gnc_engine_signal_commit_error( errcode ); + PERR("Address QofBackend Failure: %d", errcode); + gnc_engine_signal_commit_error( errcode ); } - + static void gncAddressOnDone (QofInstance *addr) { } static void address_free (QofInstance *inst) { - GncAddress *addr = (GncAddress *) inst; - gncAddressFree (addr); + GncAddress *addr = (GncAddress *) inst; + gncAddressFree (addr); } void gncAddressCommitEdit (GncAddress *addr) { - if (!qof_commit_edit (QOF_INSTANCE(addr))) return; - qof_commit_edit_part2 (&addr->inst, gncAddressOnError, - gncAddressOnDone, address_free); + if (!qof_commit_edit (QOF_INSTANCE(addr))) return; + qof_commit_edit_part2 (&addr->inst, gncAddressOnError, + gncAddressOnDone, address_free); } - + /* Get Functions */ const char * gncAddressGetName (const GncAddress *addr) { - if (!addr) return NULL; - return addr->name; + if (!addr) return NULL; + return addr->name; } const char * gncAddressGetAddr1 (const GncAddress *addr) { - if (!addr) return NULL; - return addr->addr1; + if (!addr) return NULL; + return addr->addr1; } const char * gncAddressGetAddr2 (const GncAddress *addr) { - if (!addr) return NULL; - return addr->addr2; + if (!addr) return NULL; + return addr->addr2; } const char * gncAddressGetAddr3 (const GncAddress *addr) { - if (!addr) return NULL; - return addr->addr3; + if (!addr) return NULL; + return addr->addr3; } const char * gncAddressGetAddr4 (const GncAddress *addr) { - if (!addr) return NULL; - return addr->addr4; + if (!addr) return NULL; + return addr->addr4; } const char * gncAddressGetPhone (const GncAddress *addr) { - if (!addr) return NULL; - return addr->phone; + if (!addr) return NULL; + return addr->phone; } const char * gncAddressGetFax (const GncAddress *addr) { - if (!addr) return NULL; - return addr->fax; + if (!addr) return NULL; + return addr->fax; } const char * gncAddressGetEmail (const GncAddress *addr) { - if (!addr) return NULL; - return addr->email; + if (!addr) return NULL; + return addr->email; } gboolean gncAddressIsDirty (const GncAddress *addr) { - if (!addr) return FALSE; - return addr->dirty; + if (!addr) return FALSE; + return addr->dirty; } void gncAddressClearDirty (GncAddress *addr) { - if (!addr) return; - addr->dirty = FALSE; + if (!addr) return; + addr->dirty = FALSE; } int gncAddressCompare (const GncAddress *a, const GncAddress *b) { - if (!a && !b) return 0; - if (!a && b) return 1; - if (a && !b) return -1; + if (!a && !b) return 0; + if (!a && b) return 1; + if (a && !b) return -1; - return safe_strcmp (a->name, b->name); + return safe_strcmp (a->name, b->name); } static QofObject GncAddressDesc = { - .interface_version = QOF_OBJECT_VERSION, - .e_type = GNC_ID_ADDRESS, - .type_label = "Address", - .create = (gpointer)qofAddressCreate, - .book_begin = NULL, - .book_end = NULL, - .is_dirty = qof_collection_is_dirty, - .mark_clean = qof_collection_mark_clean, - .foreach = qof_collection_foreach, - .printable = NULL, - .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, + .interface_version = QOF_OBJECT_VERSION, + .e_type = GNC_ID_ADDRESS, + .type_label = "Address", + .create = (gpointer)qofAddressCreate, + .book_begin = NULL, + .book_end = NULL, + .is_dirty = qof_collection_is_dirty, + .mark_clean = qof_collection_mark_clean, + .foreach = qof_collection_foreach, + .printable = NULL, + .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, }; gboolean gncAddressRegister (void) { - static QofParam params[] = { + static QofParam params[] = + { - { ADDRESS_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetName, (QofSetterFunc)gncAddressSetName }, - { ADDRESS_ONE, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetAddr1, (QofSetterFunc)gncAddressSetAddr1 }, - { ADDRESS_TWO, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetAddr2, (QofSetterFunc)gncAddressSetAddr2 }, - { ADDRESS_THREE, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetAddr3, (QofSetterFunc)gncAddressSetAddr3 }, - { ADDRESS_FOUR, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetAddr4, (QofSetterFunc)gncAddressSetAddr4 }, - { ADDRESS_PHONE, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetPhone, (QofSetterFunc)gncAddressSetPhone }, - { ADDRESS_FAX, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetFax, (QofSetterFunc)gncAddressSetFax }, - { ADDRESS_EMAIL, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetEmail, (QofSetterFunc)gncAddressSetEmail }, - { ADDRESS_OWNER, QOF_TYPE_CHOICE, (QofAccessFunc)qofAddressGetOwner, (QofSetterFunc)qofAddressSetOwner }, - { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, - { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, - { NULL }, - }; + { ADDRESS_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetName, (QofSetterFunc)gncAddressSetName }, + { ADDRESS_ONE, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetAddr1, (QofSetterFunc)gncAddressSetAddr1 }, + { ADDRESS_TWO, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetAddr2, (QofSetterFunc)gncAddressSetAddr2 }, + { ADDRESS_THREE, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetAddr3, (QofSetterFunc)gncAddressSetAddr3 }, + { ADDRESS_FOUR, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetAddr4, (QofSetterFunc)gncAddressSetAddr4 }, + { ADDRESS_PHONE, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetPhone, (QofSetterFunc)gncAddressSetPhone }, + { ADDRESS_FAX, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetFax, (QofSetterFunc)gncAddressSetFax }, + { ADDRESS_EMAIL, QOF_TYPE_STRING, (QofAccessFunc)gncAddressGetEmail, (QofSetterFunc)gncAddressSetEmail }, + { ADDRESS_OWNER, QOF_TYPE_CHOICE, (QofAccessFunc)qofAddressGetOwner, (QofSetterFunc)qofAddressSetOwner }, + { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, + { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, + { NULL }, + }; - qof_class_register (GNC_ID_ADDRESS, (QofSortFunc)gncAddressCompare, params); - if(!qof_choice_add_class(GNC_ID_CUSTOMER, GNC_ID_ADDRESS, ADDRESS_OWNER)) { return FALSE; } + qof_class_register (GNC_ID_ADDRESS, (QofSortFunc)gncAddressCompare, params); + if (!qof_choice_add_class(GNC_ID_CUSTOMER, GNC_ID_ADDRESS, ADDRESS_OWNER)) + { + return FALSE; + } - return qof_object_register(&GncAddressDesc); + return qof_object_register(&GncAddressDesc); } diff --git a/src/business/business-core/gncAddress.h b/src/business/business-core/gncAddress.h index d70a27a1ba..195fd26873 100644 --- a/src/business/business-core/gncAddress.h +++ b/src/business/business-core/gncAddress.h @@ -93,7 +93,7 @@ typedef struct _gncAddressClass GncAddressClass; (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_ADDRESS, GncAddressClass)) GType gnc_address_get_type(void); -/** @name Create/Destroy functions +/** @name Create/Destroy functions @{ */ GncAddress *gncAddressCreate (QofBook *book, QofInstance *parent); void gncAddressDestroy (GncAddress *addr); @@ -102,7 +102,7 @@ void gncAddressCommitEdit (GncAddress *addr); /** @} */ -/** @name Set functions +/** @name Set functions @{ */ void gncAddressSetName (GncAddress *addr, const char *name); @@ -116,7 +116,7 @@ void gncAddressSetEmail (GncAddress *addr, const char *email); void gncAddressClearDirty (GncAddress *address); /** @} */ -/** @name Get Functions +/** @name Get Functions @{ */ const char * gncAddressGetName (const GncAddress *addr); @@ -131,10 +131,10 @@ const char * gncAddressGetEmail (const GncAddress *addr); gboolean gncAddressIsDirty (const GncAddress *addr); -/** \brief compare two addresses +/** \brief compare two addresses -\return 0 if identical, -1 if a is empty or less than b -and +1 if a is more than b or if b is empty. +\return 0 if identical, -1 if a is empty or less than b +and +1 if a is more than b or if b is empty. */ int gncAddressCompare (const GncAddress *a, const GncAddress *b); diff --git a/src/business/business-core/gncBillTerm.c b/src/business/business-core/gncBillTerm.c index 790527d0a5..5f4cefaa00 100644 --- a/src/business/business-core/gncBillTerm.c +++ b/src/business/business-core/gncBillTerm.c @@ -33,37 +33,37 @@ #include "gnc-engine.h" #include "gncBillTermP.h" -struct _gncBillTerm +struct _gncBillTerm { - QofInstance inst; + QofInstance inst; - /* 'visible' data fields directly manipulated by user */ - char * name; - char * desc; - GncBillTermType type; - gint due_days; - gint disc_days; - gnc_numeric discount; - gint cutoff; + /* 'visible' data fields directly manipulated by user */ + char * name; + char * desc; + GncBillTermType type; + gint due_days; + gint disc_days; + gnc_numeric discount; + gint cutoff; - /* Internal management fields */ - /* See src/doc/business.txt for an explanation of the following */ - /* Code that handles this is *identical* to that in gncTaxTable */ - gint64 refcount; - GncBillTerm * parent; /* if non-null, we are an immutable child */ - GncBillTerm * child; /* if non-null, we have not changed */ - gboolean invisible; - GList * children; /* list of children for disconnection */ + /* Internal management fields */ + /* See src/doc/business.txt for an explanation of the following */ + /* Code that handles this is *identical* to that in gncTaxTable */ + gint64 refcount; + GncBillTerm * parent; /* if non-null, we are an immutable child */ + GncBillTerm * child; /* if non-null, we have not changed */ + gboolean invisible; + GList * children; /* list of children for disconnection */ }; struct _gncBillTermClass { - QofInstanceClass parent_class; + QofInstanceClass parent_class; }; -struct _book_info +struct _book_info { - GList * terms; /* visible terms */ + GList * terms; /* visible terms */ }; static QofLogModule log_module = GNC_MOD_BUSINESS; @@ -89,53 +89,54 @@ FROM_STRING_DEC(GncBillTermType, ENUM_TERMS_TYPE) static inline void mark_term (GncBillTerm *term) { - qof_instance_set_dirty(&term->inst); - qof_event_gen (&term->inst, QOF_EVENT_MODIFY, NULL); + qof_instance_set_dirty(&term->inst); + qof_event_gen (&term->inst, QOF_EVENT_MODIFY, NULL); } static inline void maybe_resort_list (GncBillTerm *term) { - struct _book_info *bi; + struct _book_info *bi; - if (term->parent || term->invisible) return; - bi = qof_book_get_data (qof_instance_get_book(term), _GNC_MOD_NAME); - bi->terms = g_list_sort (bi->terms, (GCompareFunc)gncBillTermCompare); + if (term->parent || term->invisible) return; + bi = qof_book_get_data (qof_instance_get_book(term), _GNC_MOD_NAME); + bi->terms = g_list_sort (bi->terms, (GCompareFunc)gncBillTermCompare); } static inline void addObj (GncBillTerm *term) { - struct _book_info *bi; - bi = qof_book_get_data (qof_instance_get_book(term), _GNC_MOD_NAME); - bi->terms = g_list_insert_sorted (bi->terms, term, - (GCompareFunc)gncBillTermCompare); + struct _book_info *bi; + bi = qof_book_get_data (qof_instance_get_book(term), _GNC_MOD_NAME); + bi->terms = g_list_insert_sorted (bi->terms, term, + (GCompareFunc)gncBillTermCompare); } static inline void remObj (GncBillTerm *term) { - struct _book_info *bi; - bi = qof_book_get_data (qof_instance_get_book(term), _GNC_MOD_NAME); - bi->terms = g_list_remove (bi->terms, term); + struct _book_info *bi; + bi = qof_book_get_data (qof_instance_get_book(term), _GNC_MOD_NAME); + bi->terms = g_list_remove (bi->terms, term); } static inline void gncBillTermAddChild (GncBillTerm *table, GncBillTerm *child) { - g_return_if_fail(qof_instance_get_destroying(table) == FALSE); - table->children = g_list_prepend(table->children, child); + g_return_if_fail(qof_instance_get_destroying(table) == FALSE); + table->children = g_list_prepend(table->children, child); } static inline void gncBillTermRemoveChild (GncBillTerm *table, GncBillTerm *child) { - if (qof_instance_get_destroying(table)) return; - table->children = g_list_remove(table->children, child); + if (qof_instance_get_destroying(table)) return; + table->children = g_list_remove(table->children, child); } /* ============================================================== */ -enum { +enum +{ PROP_0, - PROP_NAME + PROP_NAME }; /* GObject Initialization */ @@ -160,43 +161,45 @@ gnc_billterm_finalize(GObject* btp) static void gnc_billterm_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GncBillTerm *bt; g_return_if_fail(GNC_IS_BILLTERM(object)); bt = GNC_BILLTERM(object); - switch (prop_id) { - case PROP_NAME: - g_value_set_string(value, bt->name); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NAME: + g_value_set_string(value, bt->name); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } static void gnc_billterm_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GncBillTerm *bt; g_return_if_fail(GNC_IS_BILLTERM(object)); bt = GNC_BILLTERM(object); - switch (prop_id) { - case PROP_NAME: - gncBillTermSetName(bt, g_value_get_string(value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NAME: + gncBillTermSetName(bt, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } @@ -204,142 +207,143 @@ static void gnc_billterm_class_init (GncBillTermClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - + gobject_class->dispose = gnc_billterm_dispose; gobject_class->finalize = gnc_billterm_finalize; gobject_class->set_property = gnc_billterm_set_property; gobject_class->get_property = gnc_billterm_get_property; g_object_class_install_property - (gobject_class, - PROP_NAME, - g_param_spec_string ("name", - "BillTerm Name", - "The bill term name is an arbitrary string " - "assigned by the user. It is intended to " - "a short, 10 to 30 character long string " - "that is displayed by the GUI as the " - "billterm mnemonic.", - NULL, - G_PARAM_READWRITE)); + (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "BillTerm Name", + "The bill term name is an arbitrary string " + "assigned by the user. It is intended to " + "a short, 10 to 30 character long string " + "that is displayed by the GUI as the " + "billterm mnemonic.", + NULL, + G_PARAM_READWRITE)); } /* Create/Destroy Functions */ GncBillTerm * gncBillTermCreate (QofBook *book) { - GncBillTerm *term; - if (!book) return NULL; + GncBillTerm *term; + if (!book) return NULL; - term = g_object_new (GNC_TYPE_BILLTERM, NULL); - qof_instance_init_data(&term->inst, _GNC_MOD_NAME, book); - term->name = CACHE_INSERT (""); - term->desc = CACHE_INSERT (""); - term->discount = gnc_numeric_zero (); - addObj (term); - qof_event_gen (&term->inst, QOF_EVENT_CREATE, NULL); - return term; + term = g_object_new (GNC_TYPE_BILLTERM, NULL); + qof_instance_init_data(&term->inst, _GNC_MOD_NAME, book); + term->name = CACHE_INSERT (""); + term->desc = CACHE_INSERT (""); + term->discount = gnc_numeric_zero (); + addObj (term); + qof_event_gen (&term->inst, QOF_EVENT_CREATE, NULL); + return term; } void gncBillTermDestroy (GncBillTerm *term) { - if (!term) return; - DEBUG("destroying bill term %s (%p)", - guid_to_string(qof_instance_get_guid(&term->inst)), term); - qof_instance_set_destroying(term, TRUE); - qof_instance_set_dirty (&term->inst); - gncBillTermCommitEdit (term); + if (!term) return; + DEBUG("destroying bill term %s (%p)", + guid_to_string(qof_instance_get_guid(&term->inst)), term); + qof_instance_set_destroying(term, TRUE); + qof_instance_set_dirty (&term->inst); + gncBillTermCommitEdit (term); } static void gncBillTermFree (GncBillTerm *term) { - GncBillTerm *child; - GList *list; + GncBillTerm *child; + GList *list; - if (!term) return; + if (!term) return; - qof_event_gen (&term->inst, QOF_EVENT_DESTROY, NULL); - CACHE_REMOVE (term->name); - CACHE_REMOVE (term->desc); - remObj (term); + qof_event_gen (&term->inst, QOF_EVENT_DESTROY, NULL); + CACHE_REMOVE (term->name); + CACHE_REMOVE (term->desc); + remObj (term); - if (!qof_instance_get_destroying(term)) - PERR("free a billterm without do_free set!"); + if (!qof_instance_get_destroying(term)) + PERR("free a billterm without do_free set!"); - /* disconnect from parent */ - if (term->parent) - gncBillTermRemoveChild(term->parent, term); + /* disconnect from parent */ + if (term->parent) + gncBillTermRemoveChild(term->parent, term); - /* disconnect from the children */ - for (list = term->children; list; list=list->next) { - child = list->data; - gncBillTermSetParent(child, NULL); - } - g_list_free(term->children); + /* disconnect from the children */ + for (list = term->children; list; list = list->next) + { + child = list->data; + gncBillTermSetParent(child, NULL); + } + g_list_free(term->children); - /* qof_instance_release(&term->inst); */ - g_object_unref (term); + /* qof_instance_release(&term->inst); */ + g_object_unref (term); } GncBillTerm * gncCloneBillTerm (GncBillTerm *from, QofBook *book) { - GList *node; - GncBillTerm *term; + GList *node; + GncBillTerm *term; - if (!book || !from) return NULL; + if (!book || !from) return NULL; - term = g_object_new (GNC_TYPE_BILLTERM, NULL); - qof_instance_init_data(&term->inst, _GNC_MOD_NAME, book); - qof_instance_gemini (&term->inst, &from->inst); + term = g_object_new (GNC_TYPE_BILLTERM, NULL); + qof_instance_init_data(&term->inst, _GNC_MOD_NAME, book); + qof_instance_gemini (&term->inst, &from->inst); - term->name = CACHE_INSERT (from->name); - term->desc = CACHE_INSERT (from->desc); - term->type = from->type; - term->due_days = from->due_days; - term->disc_days = from->disc_days; - term->discount = from->discount; - term->cutoff = from->cutoff; - term->invisible = from->invisible; + term->name = CACHE_INSERT (from->name); + term->desc = CACHE_INSERT (from->desc); + term->type = from->type; + term->due_days = from->due_days; + term->disc_days = from->disc_days; + term->discount = from->discount; + term->cutoff = from->cutoff; + term->invisible = from->invisible; - term->refcount = 0; + term->refcount = 0; - /* Make copies of parents and children. Note that this can be - * a recursive copy ... treat as doubly-linked list. */ - if (from->child) - { - term->child = gncBillTermObtainTwin (from->child, book); - term->child->parent = term; - } - if (from->parent) - { - term->parent = gncBillTermObtainTwin (from->parent, book); - term->parent->child = term; - } - for (node=g_list_last(from->children); node; node=node->next) - { - GncBillTerm *btrm = node->data; - btrm = gncBillTermObtainTwin (btrm, book); - btrm->parent = term; - term->children = g_list_prepend(term->children, btrm); - } + /* Make copies of parents and children. Note that this can be + * a recursive copy ... treat as doubly-linked list. */ + if (from->child) + { + term->child = gncBillTermObtainTwin (from->child, book); + term->child->parent = term; + } + if (from->parent) + { + term->parent = gncBillTermObtainTwin (from->parent, book); + term->parent->child = term; + } + for (node = g_list_last(from->children); node; node = node->next) + { + GncBillTerm *btrm = node->data; + btrm = gncBillTermObtainTwin (btrm, book); + btrm->parent = term; + term->children = g_list_prepend(term->children, btrm); + } - addObj (term); - qof_event_gen (&term->inst, QOF_EVENT_CREATE, NULL); - return term; + addObj (term); + qof_event_gen (&term->inst, QOF_EVENT_CREATE, NULL); + return term; } GncBillTerm * gncBillTermObtainTwin (GncBillTerm *from, QofBook *book) { - GncBillTerm *term; - if (!from) return NULL; + GncBillTerm *term; + if (!from) return NULL; - term = (GncBillTerm *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); - if (!term) - { - term = gncCloneBillTerm (from, book); - } - return term; + term = (GncBillTerm *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); + if (!term) + { + term = gncCloneBillTerm (from, book); + } + return term; } /* ============================================================== */ @@ -347,30 +351,30 @@ gncBillTermObtainTwin (GncBillTerm *from, QofBook *book) void gncBillTermSetName (GncBillTerm *term, const char *name) { - if (!term || !name) return; - SET_STR (term, term->name, name); - mark_term (term); - maybe_resort_list (term); - gncBillTermCommitEdit (term); + if (!term || !name) return; + SET_STR (term, term->name, name); + mark_term (term); + maybe_resort_list (term); + gncBillTermCommitEdit (term); } void gncBillTermSetDescription (GncBillTerm *term, const char *desc) { - if (!term || !desc) return; - SET_STR (term, term->desc, desc); - mark_term (term); - maybe_resort_list (term); - gncBillTermCommitEdit (term); + if (!term || !desc) return; + SET_STR (term, term->desc, desc); + mark_term (term); + maybe_resort_list (term); + gncBillTermCommitEdit (term); } void gncBillTermSetType (GncBillTerm *term, GncBillTermType type) { - if (!term) return; - if (term->type == type) return; - gncBillTermBeginEdit (term); - term->type = type; - mark_term (term); - gncBillTermCommitEdit (term); + if (!term) return; + if (term->type == type) return; + gncBillTermBeginEdit (term); + term->type = type; + mark_term (term); + gncBillTermCommitEdit (term); } /** \brief Convert bill term types from text. */ @@ -379,50 +383,50 @@ FROM_STRING_FUNC(GncBillTermType, ENUM_TERMS_TYPE) static void qofBillTermSetType (GncBillTerm *term, const char *type_label) { - GncBillTermType type; + GncBillTermType type; - type = GncBillTermTypefromString(type_label); - gncBillTermSetType(term, type); + type = GncBillTermTypefromString(type_label); + gncBillTermSetType(term, type); } void gncBillTermSetDueDays (GncBillTerm *term, gint days) { - if (!term) return; - if (term->due_days == days) return; - gncBillTermBeginEdit (term); - term->due_days = days; - mark_term (term); - gncBillTermCommitEdit (term); + if (!term) return; + if (term->due_days == days) return; + gncBillTermBeginEdit (term); + term->due_days = days; + mark_term (term); + gncBillTermCommitEdit (term); } void gncBillTermSetDiscountDays (GncBillTerm *term, gint days) { - if (!term) return; - if (term->disc_days == days) return; - gncBillTermBeginEdit (term); - term->disc_days = days; - mark_term (term); - gncBillTermCommitEdit (term); + if (!term) return; + if (term->disc_days == days) return; + gncBillTermBeginEdit (term); + term->disc_days = days; + mark_term (term); + gncBillTermCommitEdit (term); } void gncBillTermSetDiscount (GncBillTerm *term, gnc_numeric discount) { - if (!term) return; - if (gnc_numeric_eq (term->discount, discount)) return; - gncBillTermBeginEdit (term); - term->discount = discount; - mark_term (term); - gncBillTermCommitEdit (term); + if (!term) return; + if (gnc_numeric_eq (term->discount, discount)) return; + gncBillTermBeginEdit (term); + term->discount = discount; + mark_term (term); + gncBillTermCommitEdit (term); } void gncBillTermSetCutoff (GncBillTerm *term, gint cutoff) { - if (!term) return; - if (term->cutoff == cutoff) return; - gncBillTermBeginEdit (term); - term->cutoff = cutoff; - mark_term (term); - gncBillTermCommitEdit (term); + if (!term) return; + if (term->cutoff == cutoff) return; + gncBillTermBeginEdit (term); + term->cutoff = cutoff; + mark_term (term); + gncBillTermCommitEdit (term); } /* XXX this doesn't seem right. If the parent/child relationship @@ -432,133 +436,135 @@ void gncBillTermSetCutoff (GncBillTerm *term, gint cutoff) */ void gncBillTermSetParent (GncBillTerm *term, GncBillTerm *parent) { - if (!term) return; - gncBillTermBeginEdit (term); - if (term->parent) - gncBillTermRemoveChild(term->parent, term); - term->parent = parent; - if (parent) - gncBillTermAddChild(parent, term); - term->refcount = 0; - if( parent != NULL ) { - gncBillTermMakeInvisible (term); - } - gncBillTermCommitEdit (term); + if (!term) return; + gncBillTermBeginEdit (term); + if (term->parent) + gncBillTermRemoveChild(term->parent, term); + term->parent = parent; + if (parent) + gncBillTermAddChild(parent, term); + term->refcount = 0; + if ( parent != NULL ) + { + gncBillTermMakeInvisible (term); + } + gncBillTermCommitEdit (term); } void gncBillTermSetChild (GncBillTerm *term, GncBillTerm *child) { - if (!term) return; - gncBillTermBeginEdit (term); - term->child = child; - gncBillTermCommitEdit (term); + if (!term) return; + gncBillTermBeginEdit (term); + term->child = child; + gncBillTermCommitEdit (term); } void gncBillTermIncRef (GncBillTerm *term) { - if (!term) return; - if (term->parent || term->invisible) return; /* children dont need refcounts */ - gncBillTermBeginEdit (term); - term->refcount++; - gncBillTermCommitEdit (term); + if (!term) return; + if (term->parent || term->invisible) return; /* children dont need refcounts */ + gncBillTermBeginEdit (term); + term->refcount++; + gncBillTermCommitEdit (term); } void gncBillTermDecRef (GncBillTerm *term) { - if (!term) return; - if (term->parent || term->invisible) return; /* children dont need refcounts */ - gncBillTermBeginEdit (term); - term->refcount--; - g_return_if_fail (term->refcount >= 0); - gncBillTermCommitEdit (term); + if (!term) return; + if (term->parent || term->invisible) return; /* children dont need refcounts */ + gncBillTermBeginEdit (term); + term->refcount--; + g_return_if_fail (term->refcount >= 0); + gncBillTermCommitEdit (term); } void gncBillTermSetRefcount (GncBillTerm *term, gint64 refcount) { - if (!term) return; - term->refcount = refcount; + if (!term) return; + term->refcount = refcount; } void gncBillTermMakeInvisible (GncBillTerm *term) { - if (!term) return; - gncBillTermBeginEdit (term); - term->invisible = TRUE; - remObj (term); - gncBillTermCommitEdit (term); + if (!term) return; + gncBillTermBeginEdit (term); + term->invisible = TRUE; + remObj (term); + gncBillTermCommitEdit (term); } void gncBillTermChanged (GncBillTerm *term) { - if (!term) return; - term->child = NULL; + if (!term) return; + term->child = NULL; } void gncBillTermBeginEdit (GncBillTerm *term) { - qof_begin_edit(&term->inst); + qof_begin_edit(&term->inst); } static void gncBillTermOnError (QofInstance *inst, QofBackendError errcode) { - PERR("BillTerm QofBackend Failure: %d", errcode); - gnc_engine_signal_commit_error( errcode ); + PERR("BillTerm QofBackend Failure: %d", errcode); + gnc_engine_signal_commit_error( errcode ); } static void bill_free (QofInstance *inst) { - GncBillTerm *term = (GncBillTerm *) inst; - gncBillTermFree(term); + GncBillTerm *term = (GncBillTerm *) inst; + gncBillTermFree(term); } static void on_done (QofInstance *inst) {} void gncBillTermCommitEdit (GncBillTerm *term) { - if (!qof_commit_edit (QOF_INSTANCE(term))) return; - qof_commit_edit_part2 (&term->inst, gncBillTermOnError, - on_done, bill_free); + if (!qof_commit_edit (QOF_INSTANCE(term))) return; + qof_commit_edit_part2 (&term->inst, gncBillTermOnError, + on_done, bill_free); } /* Get Functions */ GncBillTerm *gncBillTermLookupByName (QofBook *book, const char *name) { - GList *list = gncBillTermGetTerms (book); + GList *list = gncBillTermGetTerms (book); - for ( ; list; list = list->next) { - GncBillTerm *term = list->data; - if (!safe_strcmp (term->name, name)) - return list->data; - } - return NULL; + for ( ; list; list = list->next) + { + GncBillTerm *term = list->data; + if (!safe_strcmp (term->name, name)) + return list->data; + } + return NULL; } GList * gncBillTermGetTerms (QofBook *book) { - struct _book_info *bi; - if (!book) return NULL; + struct _book_info *bi; + if (!book) return NULL; - bi = qof_book_get_data (book, _GNC_MOD_NAME); - return bi->terms; + bi = qof_book_get_data (book, _GNC_MOD_NAME); + return bi->terms; } const char *gncBillTermGetName (const GncBillTerm *term) { - if (!term) return NULL; - return term->name; + if (!term) return NULL; + return term->name; } const char *gncBillTermGetDescription (const GncBillTerm *term) { - if (!term) return NULL; - return term->desc; + if (!term) return NULL; + return term->desc; } GncBillTermType gncBillTermGetType (const GncBillTerm *term) { - if (!term) return 0; - return term->type; + if (!term) return 0; + return term->type; } /** \brief Convert bill term types to text. */ @@ -567,108 +573,112 @@ AS_STRING_FUNC(GncBillTermType, ENUM_TERMS_TYPE) static const char* qofBillTermGetType (const GncBillTerm *term) { - if (!term) { return NULL; } - return GncBillTermTypeasString(term->type); + if (!term) + { + return NULL; + } + return GncBillTermTypeasString(term->type); } gint gncBillTermGetDueDays (const GncBillTerm *term) { - if (!term) return 0; - return term->due_days; + if (!term) return 0; + return term->due_days; } gint gncBillTermGetDiscountDays (const GncBillTerm *term) { - if (!term) return 0; - return term->disc_days; + if (!term) return 0; + return term->disc_days; } gnc_numeric gncBillTermGetDiscount (const GncBillTerm *term) { - if (!term) return gnc_numeric_zero (); - return term->discount; + if (!term) return gnc_numeric_zero (); + return term->discount; } gint gncBillTermGetCutoff (const GncBillTerm *term) { - if (!term) return 0; - return term->cutoff; + if (!term) return 0; + return term->cutoff; } static GncBillTerm *gncBillTermCopy (const GncBillTerm *term) { - GncBillTerm *t; + GncBillTerm *t; - if (!term) return NULL; - t = gncBillTermCreate (qof_instance_get_book(term)); + if (!term) return NULL; + t = gncBillTermCreate (qof_instance_get_book(term)); - gncBillTermBeginEdit(t); + gncBillTermBeginEdit(t); - gncBillTermSetName (t, term->name); - gncBillTermSetDescription (t, term->desc); + gncBillTermSetName (t, term->name); + gncBillTermSetDescription (t, term->desc); - t->type = term->type; - t->due_days = term->due_days; - t->disc_days = term->disc_days; - t->discount = term->discount; - t->cutoff = term->cutoff; + t->type = term->type; + t->due_days = term->due_days; + t->disc_days = term->disc_days; + t->discount = term->discount; + t->cutoff = term->cutoff; - gncBillTermCommitEdit(t); + gncBillTermCommitEdit(t); - return t; + return t; } GncBillTerm *gncBillTermReturnChild (GncBillTerm *term, gboolean make_new) { - GncBillTerm *child = NULL; + GncBillTerm *child = NULL; - if (!term) return NULL; - if (term->child) return term->child; - if (term->parent || term->invisible) return term; - if (make_new) { - child = gncBillTermCopy (term); - gncBillTermSetChild (term, child); - gncBillTermSetParent (child, term); - } - return child; + if (!term) return NULL; + if (term->child) return term->child; + if (term->parent || term->invisible) return term; + if (make_new) + { + child = gncBillTermCopy (term); + gncBillTermSetChild (term, child); + gncBillTermSetParent (child, term); + } + return child; } GncBillTerm *gncBillTermGetParent (const GncBillTerm *term) { - if (!term) return NULL; - return term->parent; + if (!term) return NULL; + return term->parent; } gint64 gncBillTermGetRefcount (const GncBillTerm *term) { - if (!term) return 0; - return term->refcount; + if (!term) return 0; + return term->refcount; } gboolean gncBillTermGetInvisible (const GncBillTerm *term) { - if (!term) return FALSE; - return term->invisible; + if (!term) return FALSE; + return term->invisible; } int gncBillTermCompare (const GncBillTerm *a, const GncBillTerm *b) { - int ret; + int ret; - if (!a && !b) return 0; - if (!a) return -1; - if (!b) return 1; + if (!a && !b) return 0; + if (!a) return -1; + if (!b) return 1; - ret = safe_strcmp (a->name, b->name); - if (ret) return ret; + ret = safe_strcmp (a->name, b->name); + if (ret) return ret; - return safe_strcmp (a->desc, b->desc); + return safe_strcmp (a->desc, b->desc); } gboolean gncBillTermIsDirty (const GncBillTerm *term) { - if (!term) return FALSE; - return qof_instance_get_dirty_flag(term); + if (!term) return FALSE; + return qof_instance_get_dirty_flag(term); } /********************************************************/ @@ -684,31 +694,35 @@ static void compute_monthyear (const GncBillTerm *term, Timespec post_date, int *month, int *year) { - int iday, imonth, iyear; - int cutoff = term->cutoff; + int iday, imonth, iyear; + int cutoff = term->cutoff; - g_return_if_fail (term->type == GNC_TERM_TYPE_PROXIMO); + g_return_if_fail (term->type == GNC_TERM_TYPE_PROXIMO); - gnc_timespec2dmy (post_date, &iday, &imonth, &iyear); + gnc_timespec2dmy (post_date, &iday, &imonth, &iyear); - if (cutoff <= 0) - cutoff += gnc_timespec_last_mday (post_date); + if (cutoff <= 0) + cutoff += gnc_timespec_last_mday (post_date); - if (iday <= cutoff) { - /* We apply this to next month */ - imonth++; - } else { - /* We apply to the following month */ - imonth += 2; - } + if (iday <= cutoff) + { + /* We apply this to next month */ + imonth++; + } + else + { + /* We apply to the following month */ + imonth += 2; + } - if (imonth > 12) { - iyear++; - imonth -= 12; - } + if (imonth > 12) + { + iyear++; + imonth -= 12; + } - if (month) *month = imonth; - if (year) *year = iyear; + if (month) *month = imonth; + if (year) *year = iyear; } /* XXX explain this, the logic is totally opaque to me. */ @@ -716,98 +730,100 @@ compute_monthyear (const GncBillTerm *term, Timespec post_date, static Timespec compute_time (const GncBillTerm *term, Timespec post_date, int days) { - Timespec res = post_date; - int day, month, year; + Timespec res = post_date; + int day, month, year; - switch (term->type) { - case GNC_TERM_TYPE_DAYS: - res.tv_sec += (SECS_PER_DAY * days); - break; - case GNC_TERM_TYPE_PROXIMO: - compute_monthyear (term, post_date, &month, &year); - day = gnc_date_my_last_mday (month, year); - if (days < day) - day = days; - res = gnc_dmy2timespec (day, month, year); - break; - } - return res; + switch (term->type) + { + case GNC_TERM_TYPE_DAYS: + res.tv_sec += (SECS_PER_DAY * days); + break; + case GNC_TERM_TYPE_PROXIMO: + compute_monthyear (term, post_date, &month, &year); + day = gnc_date_my_last_mday (month, year); + if (days < day) + day = days; + res = gnc_dmy2timespec (day, month, year); + break; + } + return res; } Timespec gncBillTermComputeDueDate (const GncBillTerm *term, Timespec post_date) { - Timespec res = post_date; - if (!term) return res; + Timespec res = post_date; + if (!term) return res; - return compute_time (term, post_date, term->due_days); + return compute_time (term, post_date, term->due_days); } Timespec gncBillTermComputeDiscountDate (const GncBillTerm *term, Timespec post_date) { - Timespec res = post_date; - if (!term) return res; + Timespec res = post_date; + if (!term) return res; - return compute_time (term, post_date, term->disc_days); + return compute_time (term, post_date, term->disc_days); } /* Package-Private functions */ static void _gncBillTermCreate (QofBook *book) { - struct _book_info *bi; + struct _book_info *bi; - if (!book) return; + if (!book) return; - bi = g_new0 (struct _book_info, 1); - qof_book_set_data (book, _GNC_MOD_NAME, bi); + bi = g_new0 (struct _book_info, 1); + qof_book_set_data (book, _GNC_MOD_NAME, bi); } static void _gncBillTermDestroy (QofBook *book) { - struct _book_info *bi; + struct _book_info *bi; - if (!book) return; + if (!book) return; - bi = qof_book_get_data (book, _GNC_MOD_NAME); + bi = qof_book_get_data (book, _GNC_MOD_NAME); - g_list_free (bi->terms); - g_free (bi); + g_list_free (bi->terms); + g_free (bi); } -static QofObject gncBillTermDesc = +static QofObject gncBillTermDesc = { - .interface_version = QOF_OBJECT_VERSION, - .e_type = _GNC_MOD_NAME, - .type_label = "Billing Term", - .create = (gpointer)gncBillTermCreate, - .book_begin = _gncBillTermCreate, - .book_end = _gncBillTermDestroy, - .is_dirty = qof_collection_is_dirty, - .mark_clean = qof_collection_mark_clean, - .foreach = qof_collection_foreach, - .printable = NULL, - .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, + .interface_version = QOF_OBJECT_VERSION, + .e_type = _GNC_MOD_NAME, + .type_label = "Billing Term", + .create = (gpointer)gncBillTermCreate, + .book_begin = _gncBillTermCreate, + .book_end = _gncBillTermDestroy, + .is_dirty = qof_collection_is_dirty, + .mark_clean = qof_collection_mark_clean, + .foreach = qof_collection_foreach, + .printable = NULL, + .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, }; gboolean gncBillTermRegister (void) { - static QofParam params[] = { - { GNC_BILLTERM_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncBillTermGetName, (QofSetterFunc)gncBillTermSetName }, - { GNC_BILLTERM_DESC, QOF_TYPE_STRING, (QofAccessFunc)gncBillTermGetDescription, (QofSetterFunc)gncBillTermSetDescription }, - { GNC_BILLTERM_TYPE, QOF_TYPE_STRING, (QofAccessFunc)qofBillTermGetType, (QofSetterFunc)qofBillTermSetType }, - { GNC_BILLTERM_DUEDAYS, QOF_TYPE_INT32, (QofAccessFunc)gncBillTermGetDueDays, (QofSetterFunc)gncBillTermSetDueDays }, - { GNC_BILLTERM_DISCDAYS, QOF_TYPE_INT32, (QofAccessFunc)gncBillTermGetDiscountDays, (QofSetterFunc)gncBillTermSetDiscountDays }, - { GNC_BILLTERM_DISCOUNT, QOF_TYPE_NUMERIC, (QofAccessFunc)gncBillTermGetDiscount, (QofSetterFunc)gncBillTermSetDiscount }, - { GNC_BILLTERM_CUTOFF, QOF_TYPE_INT32, (QofAccessFunc)gncBillTermGetCutoff, (QofSetterFunc)gncBillTermSetCutoff }, - { GNC_BILLTERM_REFCOUNT, QOF_TYPE_INT64, (QofAccessFunc)gncBillTermGetRefcount, NULL }, - { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, - { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { GNC_BILLTERM_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncBillTermGetName, (QofSetterFunc)gncBillTermSetName }, + { GNC_BILLTERM_DESC, QOF_TYPE_STRING, (QofAccessFunc)gncBillTermGetDescription, (QofSetterFunc)gncBillTermSetDescription }, + { GNC_BILLTERM_TYPE, QOF_TYPE_STRING, (QofAccessFunc)qofBillTermGetType, (QofSetterFunc)qofBillTermSetType }, + { GNC_BILLTERM_DUEDAYS, QOF_TYPE_INT32, (QofAccessFunc)gncBillTermGetDueDays, (QofSetterFunc)gncBillTermSetDueDays }, + { GNC_BILLTERM_DISCDAYS, QOF_TYPE_INT32, (QofAccessFunc)gncBillTermGetDiscountDays, (QofSetterFunc)gncBillTermSetDiscountDays }, + { GNC_BILLTERM_DISCOUNT, QOF_TYPE_NUMERIC, (QofAccessFunc)gncBillTermGetDiscount, (QofSetterFunc)gncBillTermSetDiscount }, + { GNC_BILLTERM_CUTOFF, QOF_TYPE_INT32, (QofAccessFunc)gncBillTermGetCutoff, (QofSetterFunc)gncBillTermSetCutoff }, + { GNC_BILLTERM_REFCOUNT, QOF_TYPE_INT64, (QofAccessFunc)gncBillTermGetRefcount, NULL }, + { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, + { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, + { NULL }, + }; - qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncBillTermCompare, params); + qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncBillTermCompare, params); - return qof_object_register (&gncBillTermDesc); + return qof_object_register (&gncBillTermDesc); } diff --git a/src/business/business-core/gncBillTerm.h b/src/business/business-core/gncBillTerm.h index d880dfa927..303e6dd7b5 100644 --- a/src/business/business-core/gncBillTerm.h +++ b/src/business/business-core/gncBillTerm.h @@ -79,13 +79,14 @@ GType gnc_billterm_get_type(void); DEFINE_ENUM(GncBillTermType, ENUM_TERMS_TYPE) #else -typedef enum { - GNC_TERM_TYPE_DAYS = 1, - GNC_TERM_TYPE_PROXIMO, +typedef enum +{ + GNC_TERM_TYPE_DAYS = 1, + GNC_TERM_TYPE_PROXIMO, } GncBillTermType; #endif -/** @name Create/Destroy Functions +/** @name Create/Destroy Functions @{ */ GncBillTerm * gncBillTermCreate (QofBook *book); void gncBillTermDestroy (GncBillTerm *term); @@ -97,7 +98,7 @@ void gncBillTermBeginEdit (GncBillTerm *term); void gncBillTermCommitEdit (GncBillTerm *term); /** @} */ -/** @name Set Functions +/** @name Set Functions @{ */ void gncBillTermSetName (GncBillTerm *term, const char *name); @@ -110,10 +111,10 @@ void gncBillTermSetCutoff (GncBillTerm *term, gint cutoff); /** @} */ -/** @name Get Functions +/** @name Get Functions @{ */ /** Return a pointer to the instance gncBillTerm that is identified - * by the guid, and is residing in the book. Returns NULL if the + * by the guid, and is residing in the book. Returns NULL if the * instance can't be found. * Equivalent function prototype is * GncBillTerm * gncBillTermLookup (QofBook *book, const GUID *guid); diff --git a/src/business/business-core/gncBillTermP.h b/src/business/business-core/gncBillTermP.h index 18a41df8e7..5de3cae832 100644 --- a/src/business/business-core/gncBillTermP.h +++ b/src/business/business-core/gncBillTermP.h @@ -42,9 +42,9 @@ gboolean gncBillTermGetInvisible (const GncBillTerm *term); /** The gncCloneBillTerm() routine makes a copy of the indicated * bill term, placing it in the indicated book. It copies - * the name, description, type, due-days, discount, etc. + * the name, description, type, due-days, discount, etc. * It also copies (as needed) both parents and children, so that - * the parent-child relationship is correctly mirrored in the + * the parent-child relationship is correctly mirrored in the * clone. * XXX the refcount is mis-handled. This needs fixin.... * It then adds a pair of 'gemini' kvp pointers so that each copy @@ -59,7 +59,7 @@ GncBillTerm * gncCloneBillTerm (GncBillTerm *from, QofBook *); * gncCloneBillTerm()) and placed into the book. * * We called this routine 'Obtain' instead of "Get" to distinguish - * it from the other Get routines, which work in fundamentally + * it from the other Get routines, which work in fundamentally * different ways. */ GncBillTerm * gncBillTermObtainTwin (GncBillTerm *from, QofBook *book); diff --git a/src/business/business-core/gncBusGuile.c b/src/business/business-core/gncBusGuile.c index 10dc832ab5..80b129342e 100644 --- a/src/business/business-core/gncBusGuile.c +++ b/src/business/business-core/gncBusGuile.c @@ -32,61 +32,61 @@ static swig_type_info * get_acct_type () { - static swig_type_info * account_type = NULL; + static swig_type_info * account_type = NULL; - if (!account_type) - account_type = SWIG_TypeQuery("_p_Account"); + if (!account_type) + account_type = SWIG_TypeQuery("_p_Account"); - return account_type; + return account_type; } int gnc_account_value_pointer_p (SCM arg) { - swig_type_info * account_type = get_acct_type(); + swig_type_info * account_type = get_acct_type(); - return (scm_is_pair (arg) && - SWIG_IsPointerOfType(SCM_CAR (arg), account_type) && - gnc_numeric_p (SCM_CDR (arg))); + return (scm_is_pair (arg) && + SWIG_IsPointerOfType(SCM_CAR (arg), account_type) && + gnc_numeric_p (SCM_CDR (arg))); } GncAccountValue * gnc_scm_to_account_value_ptr (SCM valuearg) { - GncAccountValue *res; - Account *acc = NULL; - gnc_numeric value; - swig_type_info * account_type = get_acct_type(); - SCM val; + GncAccountValue *res; + Account *acc = NULL; + gnc_numeric value; + swig_type_info * account_type = get_acct_type(); + SCM val; - /* Get the account */ - val = SCM_CAR (valuearg); - if (!SWIG_IsPointerOfType (val, account_type)) - return NULL; + /* Get the account */ + val = SCM_CAR (valuearg); + if (!SWIG_IsPointerOfType (val, account_type)) + return NULL; - acc = SWIG_MustGetPtr(val, account_type, 1, 0); + acc = SWIG_MustGetPtr(val, account_type, 1, 0); - /* Get the value */ - val = SCM_CDR (valuearg); - value = gnc_scm_to_numeric (val); + /* Get the value */ + val = SCM_CDR (valuearg); + value = gnc_scm_to_numeric (val); - /* Build and return the object */ - res = g_new0 (GncAccountValue, 1); - res->account = acc; - res->value = value; - return res; + /* Build and return the object */ + res = g_new0 (GncAccountValue, 1); + res->account = acc; + res->value = value; + return res; } SCM gnc_account_value_ptr_to_scm (GncAccountValue *av) { - swig_type_info * account_type = get_acct_type(); - gnc_commodity * com; - gnc_numeric val; + swig_type_info * account_type = get_acct_type(); + gnc_commodity * com; + gnc_numeric val; - if (!av) return SCM_BOOL_F; + if (!av) return SCM_BOOL_F; - com = xaccAccountGetCommodity (av->account); - val = gnc_numeric_convert (av->value, gnc_commodity_get_fraction (com), - GNC_RND_ROUND); + com = xaccAccountGetCommodity (av->account); + val = gnc_numeric_convert (av->value, gnc_commodity_get_fraction (com), + GNC_RND_ROUND); - return scm_cons (SWIG_NewPointerObj(av->account, account_type, 0), - gnc_numeric_to_scm (val)); + return scm_cons (SWIG_NewPointerObj(av->account, account_type, 0), + gnc_numeric_to_scm (val)); } diff --git a/src/business/business-core/gncBusPeriod.c b/src/business/business-core/gncBusPeriod.c index 715a83f09e..527c6bbef1 100644 --- a/src/business/business-core/gncBusPeriod.c +++ b/src/business/business-core/gncBusPeriod.c @@ -1,29 +1,29 @@ /* XXX TODO: --- contemplate a per-collection (per type) edit/commmit-edit, +-- contemplate a per-collection (per type) edit/commmit-edit, clone, dirty, etc. functions some more ... --- turn clone into a generic object callback, so that +-- turn clone into a generic object callback, so that the ObtainTwin could be qof_instance_obtain_twin, a generic function. (right now its copied everywhere) -- contemplate copy-on-write, and the true need for cloning, and how to avoid excess cloning for the SQL backend. --- billterm and taxtables are incompletely cloned, not sure +-- billterm and taxtables are incompletely cloned, not sure what to do with refcount, ask warlord, need to explore. -- The following business objects have an id/name/desc/active this could be abstracted into an common object. vendor (customer) bill term (but bill terms doesn't have id or active) - job + job -- gncVendor should be a base class to gncCustomer (they're identical, but customer adds more stuff). - Employee could be base class for vendor, its got some of the + Employee could be base class for vendor, its got some of the things (name, addr, active, currency) -- TaxTable and BillTerm have common parent/child code. @@ -33,7 +33,7 @@ XXX TODO: -- finish clone of invoice, entry, --- jobs in the vendor job list that are no longer active should +-- jobs in the vendor job list that are no longer active should be kept back in old book, removed from new book?? ditto jobs in the customer list ?? @@ -51,22 +51,22 @@ XXX TODO: void gncCustomerCopyAll (QofBook *dest_book, QofBook *src_book) { - + } -static void +static void bill_term_copy_helper (gpointer object, gpointer user_data) { - QofBook *dest_book = user_data; - gncBillTerm *src_term = object; - gncCloneBillTerm (src_term, dest_book); + QofBook *dest_book = user_data; + gncBillTerm *src_term = object; + gncCloneBillTerm (src_term, dest_book); } void gncBillTermCopyAll (QofBook *dest_book, QofBook *src_book) { - qof_object_foreach (GNC_BILLTERM_MODULE_NAME, - src_book, bill_term_copy_helper, dest_book); + qof_object_foreach (GNC_BILLTERM_MODULE_NAME, + src_book, bill_term_copy_helper, dest_book); } @@ -74,8 +74,8 @@ gncBillTermCopyAll (QofBook *dest_book, QofBook *src_book) partition (QofBook *dest_book, QofBook *src_book) { - /* Copy all bill terms first, since the CustomerCopy expects - * these to be in place already. */ -/* XXX not strictly needed, the customer can pull their own .. ? */ - gncBillTermCopyAll (dest_book, src_book); + /* Copy all bill terms first, since the CustomerCopy expects + * these to be in place already. */ + /* XXX not strictly needed, the customer can pull their own .. ? */ + gncBillTermCopyAll (dest_book, src_book); } diff --git a/src/business/business-core/gncBusiness.c b/src/business/business-core/gncBusiness.c index 8a6f6de6d5..2fa4ceb89a 100644 --- a/src/business/business-core/gncBusiness.c +++ b/src/business/business-core/gncBusiness.c @@ -1,5 +1,5 @@ /* - * gncBusiness.c -- Business helper functions + * gncBusiness.c -- Business helper functions * Copyright (C) 2002 Derek Atkins * Author: Derek Atkins * @@ -28,7 +28,7 @@ #include "gncBusiness.h" #include "gncBusinessP.h" -/* This file is currently unused; - * its contents have been moved to qofid.[ch] +/* This file is currently unused; + * its contents have been moved to qofid.[ch] */ // void gncBusinessInitialize (int argc, char **argv) {} diff --git a/src/business/business-core/gncBusiness.h b/src/business/business-core/gncBusiness.h index 6b0526d45f..cdeb014fc5 100644 --- a/src/business/business-core/gncBusiness.h +++ b/src/business/business-core/gncBusiness.h @@ -20,7 +20,7 @@ /** @addtogroup Engine @{ */ /** @addtogroup Business - The Business Engine provides a set of structures for + The Business Engine provides a set of structures for that provide small-business accounting features. @{ */ diff --git a/src/business/business-core/gncCustomer.c b/src/business/business-core/gncCustomer.c index 4e29d93196..5bf93c8d3e 100644 --- a/src/business/business-core/gncCustomer.c +++ b/src/business/business-core/gncCustomer.c @@ -47,34 +47,34 @@ static gint gs_address_event_handler_id = 0; static void listen_for_address_events(QofInstance *entity, QofEventId event_type, - gpointer user_data, gpointer event_data); + gpointer user_data, gpointer event_data); struct _gncCustomer { - QofInstance inst; + QofInstance inst; - /* The following fields are identical to 'vendor' */ - char * id; - char * name; - char * notes; - GncBillTerm * terms; - GncAddress * addr; - gnc_commodity * currency; - GncTaxTable* taxtable; - gboolean taxtable_override; - GncTaxIncluded taxincluded; - gboolean active; - GList * jobs; + /* The following fields are identical to 'vendor' */ + char * id; + char * name; + char * notes; + GncBillTerm * terms; + GncAddress * addr; + gnc_commodity * currency; + GncTaxTable* taxtable; + gboolean taxtable_override; + GncTaxIncluded taxincluded; + gboolean active; + GList * jobs; - /* The following fields are unique to 'customer' */ - gnc_numeric credit; - gnc_numeric discount; - GncAddress * shipaddr; + /* The following fields are unique to 'customer' */ + gnc_numeric credit; + gnc_numeric discount; + GncAddress * shipaddr; }; struct _gncCustomerClass { - QofInstanceClass parent_class; + QofInstanceClass parent_class; }; static QofLogModule log_module = GNC_MOD_BUSINESS; @@ -87,15 +87,16 @@ static QofLogModule log_module = GNC_MOD_BUSINESS; G_INLINE_FUNC void mark_customer (GncCustomer *customer); void mark_customer (GncCustomer *customer) { - qof_instance_set_dirty(&customer->inst); - qof_event_gen (&customer->inst, QOF_EVENT_MODIFY, NULL); + qof_instance_set_dirty(&customer->inst); + qof_event_gen (&customer->inst, QOF_EVENT_MODIFY, NULL); } /* ============================================================== */ -enum { +enum +{ PROP_0, - PROP_NAME + PROP_NAME }; /* GObject Initialization */ @@ -120,43 +121,45 @@ gnc_customer_finalize(GObject* custp) static void gnc_customer_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GncCustomer *cust; g_return_if_fail(GNC_IS_CUSTOMER(object)); cust = GNC_CUSTOMER(object); - switch (prop_id) { - case PROP_NAME: - g_value_set_string(value, cust->name); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NAME: + g_value_set_string(value, cust->name); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } static void gnc_customer_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GncCustomer *cust; g_return_if_fail(GNC_IS_CUSTOMER(object)); cust = GNC_CUSTOMER(object); - switch (prop_id) { - case PROP_NAME: - gncCustomerSetName(cust, g_value_get_string(value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NAME: + gncCustomerSetName(cust, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } @@ -164,144 +167,146 @@ static void gnc_customer_class_init (GncCustomerClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - + gobject_class->dispose = gnc_customer_dispose; gobject_class->finalize = gnc_customer_finalize; gobject_class->set_property = gnc_customer_set_property; gobject_class->get_property = gnc_customer_get_property; g_object_class_install_property - (gobject_class, - PROP_NAME, - g_param_spec_string ("name", - "Customer Name", - "The customer is an arbitrary string " - "assigned by the user which provides the " - "customer name.", - NULL, - G_PARAM_READWRITE)); + (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "Customer Name", + "The customer is an arbitrary string " + "assigned by the user which provides the " + "customer name.", + NULL, + G_PARAM_READWRITE)); } /* Create/Destroy Functions */ GncCustomer *gncCustomerCreate (QofBook *book) { - GncCustomer *cust; + GncCustomer *cust; - if (!book) return NULL; + if (!book) return NULL; - cust = g_object_new (GNC_TYPE_CUSTOMER, NULL); - qof_instance_init_data (&cust->inst, _GNC_MOD_NAME, book); + cust = g_object_new (GNC_TYPE_CUSTOMER, NULL); + qof_instance_init_data (&cust->inst, _GNC_MOD_NAME, book); - cust->id = CACHE_INSERT (""); - cust->name = CACHE_INSERT (""); - cust->notes = CACHE_INSERT (""); - cust->addr = gncAddressCreate (book, &cust->inst); - cust->taxincluded = GNC_TAXINCLUDED_USEGLOBAL; - cust->active = TRUE; - cust->jobs = NULL; + cust->id = CACHE_INSERT (""); + cust->name = CACHE_INSERT (""); + cust->notes = CACHE_INSERT (""); + cust->addr = gncAddressCreate (book, &cust->inst); + cust->taxincluded = GNC_TAXINCLUDED_USEGLOBAL; + cust->active = TRUE; + cust->jobs = NULL; - cust->discount = gnc_numeric_zero(); - cust->credit = gnc_numeric_zero(); - cust->shipaddr = gncAddressCreate (book, &cust->inst); + cust->discount = gnc_numeric_zero(); + cust->credit = gnc_numeric_zero(); + cust->shipaddr = gncAddressCreate (book, &cust->inst); - if (gs_address_event_handler_id == 0) { - gs_address_event_handler_id = qof_event_register_handler(listen_for_address_events, NULL); - } + if (gs_address_event_handler_id == 0) + { + gs_address_event_handler_id = qof_event_register_handler(listen_for_address_events, NULL); + } - qof_event_gen (&cust->inst, QOF_EVENT_CREATE, NULL); + qof_event_gen (&cust->inst, QOF_EVENT_CREATE, NULL); - return cust; + return cust; } /** Create a copy of a customer, placing the copy into a new book. */ GncCustomer * gncCloneCustomer (GncCustomer *from, QofBook *book) { - GList *node; - GncCustomer *cust; + GList *node; + GncCustomer *cust; - cust = g_object_new (GNC_TYPE_CUSTOMER, NULL); + cust = g_object_new (GNC_TYPE_CUSTOMER, NULL); - qof_instance_init_data (&cust->inst, _GNC_MOD_NAME, book); - qof_instance_gemini (&cust->inst, &from->inst); + qof_instance_init_data (&cust->inst, _GNC_MOD_NAME, book); + qof_instance_gemini (&cust->inst, &from->inst); - cust->id = CACHE_INSERT (from->id); - cust->name = CACHE_INSERT (from->name); - cust->notes = CACHE_INSERT (from->notes); - cust->discount = from->discount; - cust->credit = from->credit; - cust->taxincluded = from->taxincluded; - cust->active = from->active; - cust->taxtable_override = from->taxtable_override; + cust->id = CACHE_INSERT (from->id); + cust->name = CACHE_INSERT (from->name); + cust->notes = CACHE_INSERT (from->notes); + cust->discount = from->discount; + cust->credit = from->credit; + cust->taxincluded = from->taxincluded; + cust->active = from->active; + cust->taxtable_override = from->taxtable_override; - cust->addr = gncCloneAddress (from->addr, &cust->inst, book); - cust->shipaddr = gncCloneAddress (from->shipaddr, &cust->inst, book); + cust->addr = gncCloneAddress (from->addr, &cust->inst, book); + cust->shipaddr = gncCloneAddress (from->shipaddr, &cust->inst, book); - /* Find the matching currency in the new book, assumes - * currency has already been copied into new book. */ - cust->currency = gnc_commodity_obtain_twin (from->currency, book); + /* Find the matching currency in the new book, assumes + * currency has already been copied into new book. */ + cust->currency = gnc_commodity_obtain_twin (from->currency, book); - /* Find the matching bill term, tax table in the new book */ - cust->terms = gncBillTermObtainTwin(from->terms, book); - cust->taxtable = gncTaxTableObtainTwin (from->taxtable, book); + /* Find the matching bill term, tax table in the new book */ + cust->terms = gncBillTermObtainTwin(from->terms, book); + cust->taxtable = gncTaxTableObtainTwin (from->taxtable, book); - for (node=g_list_last(cust->jobs); node; node=node->next) - { - GncJob *job = node->data; - job = gncJobObtainTwin (job, book); - cust->jobs = g_list_prepend(cust->jobs, job); - } + for (node = g_list_last(cust->jobs); node; node = node->next) + { + GncJob *job = node->data; + job = gncJobObtainTwin (job, book); + cust->jobs = g_list_prepend(cust->jobs, job); + } - qof_event_gen (&cust->inst, QOF_EVENT_CREATE, NULL); + qof_event_gen (&cust->inst, QOF_EVENT_CREATE, NULL); - return cust; + return cust; } void gncCustomerDestroy (GncCustomer *cust) { - if (!cust) return; - qof_instance_set_destroying(cust, TRUE); - qof_instance_set_dirty (&cust->inst); - gncCustomerCommitEdit (cust); + if (!cust) return; + qof_instance_set_destroying(cust, TRUE); + qof_instance_set_dirty (&cust->inst); + gncCustomerCommitEdit (cust); } static void gncCustomerFree (GncCustomer *cust) { - if (!cust) return; + if (!cust) return; - qof_event_gen (&cust->inst, QOF_EVENT_DESTROY, NULL); + qof_event_gen (&cust->inst, QOF_EVENT_DESTROY, NULL); - CACHE_REMOVE (cust->id); - CACHE_REMOVE (cust->name); - CACHE_REMOVE (cust->notes); - gncAddressBeginEdit (cust->addr); - gncAddressDestroy (cust->addr); - gncAddressBeginEdit (cust->shipaddr); - gncAddressDestroy (cust->shipaddr); - g_list_free (cust->jobs); + CACHE_REMOVE (cust->id); + CACHE_REMOVE (cust->name); + CACHE_REMOVE (cust->notes); + gncAddressBeginEdit (cust->addr); + gncAddressDestroy (cust->addr); + gncAddressBeginEdit (cust->shipaddr); + gncAddressDestroy (cust->shipaddr); + g_list_free (cust->jobs); - if (cust->terms) - gncBillTermDecRef (cust->terms); - if (cust->taxtable) { - gncTaxTableDecRef (cust->taxtable); - } + if (cust->terms) + gncBillTermDecRef (cust->terms); + if (cust->taxtable) + { + gncTaxTableDecRef (cust->taxtable); + } - /* qof_instance_release (&cust->inst); */ - g_object_unref (cust); + /* qof_instance_release (&cust->inst); */ + g_object_unref (cust); } GncCustomer * gncCustomerObtainTwin (GncCustomer *from, QofBook *book) { - GncCustomer *cust; - if (!from) return NULL; + GncCustomer *cust; + if (!from) return NULL; - cust = (GncCustomer *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); - if (!cust) - { - cust = gncCloneCustomer (from, book); - } - return cust; + cust = (GncCustomer *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); + if (!cust) + { + cust = gncCloneCustomer (from, book); + } + return cust; } /* ============================================================== */ @@ -319,180 +324,183 @@ gncCustomerObtainTwin (GncCustomer *from, QofBook *book) void gncCustomerSetID (GncCustomer *cust, const char *id) { - if (!cust) return; - if (!id) return; - SET_STR(cust, cust->id, id); - mark_customer (cust); - gncCustomerCommitEdit (cust); + if (!cust) return; + if (!id) return; + SET_STR(cust, cust->id, id); + mark_customer (cust); + gncCustomerCommitEdit (cust); } void gncCustomerSetName (GncCustomer *cust, const char *name) { - if (!cust) return; - if (!name) return; - SET_STR(cust, cust->name, name); - mark_customer (cust); - gncCustomerCommitEdit (cust); + if (!cust) return; + if (!name) return; + SET_STR(cust, cust->name, name); + mark_customer (cust); + gncCustomerCommitEdit (cust); } void gncCustomerSetNotes (GncCustomer *cust, const char *notes) { - if (!cust) return; - if (!notes) return; - SET_STR(cust, cust->notes, notes); - mark_customer (cust); - gncCustomerCommitEdit (cust); + if (!cust) return; + if (!notes) return; + SET_STR(cust, cust->notes, notes); + mark_customer (cust); + gncCustomerCommitEdit (cust); } void gncCustomerSetTerms (GncCustomer *cust, GncBillTerm *terms) { - if (!cust) return; - if (cust->terms == terms) return; + if (!cust) return; + if (cust->terms == terms) return; - gncCustomerBeginEdit (cust); - if (cust->terms) - gncBillTermDecRef (cust->terms); - cust->terms = terms; - if (cust->terms) - gncBillTermIncRef (cust->terms); - mark_customer (cust); - gncCustomerCommitEdit (cust); + gncCustomerBeginEdit (cust); + if (cust->terms) + gncBillTermDecRef (cust->terms); + cust->terms = terms; + if (cust->terms) + gncBillTermIncRef (cust->terms); + mark_customer (cust); + gncCustomerCommitEdit (cust); } void gncCustomerSetTaxIncluded (GncCustomer *cust, GncTaxIncluded taxincl) { - if (!cust) return; - if (taxincl == cust->taxincluded) return; - gncCustomerBeginEdit (cust); - cust->taxincluded = taxincl; - mark_customer (cust); - gncCustomerCommitEdit (cust); + if (!cust) return; + if (taxincl == cust->taxincluded) return; + gncCustomerBeginEdit (cust); + cust->taxincluded = taxincl; + mark_customer (cust); + gncCustomerCommitEdit (cust); } void gncCustomerSetActive (GncCustomer *cust, gboolean active) { - if (!cust) return; - if (active == cust->active) return; - gncCustomerBeginEdit (cust); - cust->active = active; - mark_customer (cust); - gncCustomerCommitEdit (cust); + if (!cust) return; + if (active == cust->active) return; + gncCustomerBeginEdit (cust); + cust->active = active; + mark_customer (cust); + gncCustomerCommitEdit (cust); } void gncCustomerSetDiscount (GncCustomer *cust, gnc_numeric discount) { - if (!cust) return; - if (gnc_numeric_equal (discount, cust->discount)) return; - gncCustomerBeginEdit (cust); - cust->discount = discount; - mark_customer (cust); - gncCustomerCommitEdit (cust); + if (!cust) return; + if (gnc_numeric_equal (discount, cust->discount)) return; + gncCustomerBeginEdit (cust); + cust->discount = discount; + mark_customer (cust); + gncCustomerCommitEdit (cust); } void gncCustomerSetCredit (GncCustomer *cust, gnc_numeric credit) { - if (!cust) return; - if (gnc_numeric_equal (credit, cust->credit)) return; - gncCustomerBeginEdit (cust); - cust->credit = credit; - mark_customer (cust); - gncCustomerCommitEdit (cust); + if (!cust) return; + if (gnc_numeric_equal (credit, cust->credit)) return; + gncCustomerBeginEdit (cust); + cust->credit = credit; + mark_customer (cust); + gncCustomerCommitEdit (cust); } void gncCustomerSetCurrency (GncCustomer *cust, gnc_commodity *currency) { - if (!cust || !currency) return; - if (cust->currency && gnc_commodity_equal (cust->currency, currency)) return; - gncCustomerBeginEdit (cust); - cust->currency = currency; - mark_customer (cust); - gncCustomerCommitEdit (cust); + if (!cust || !currency) return; + if (cust->currency && gnc_commodity_equal (cust->currency, currency)) return; + gncCustomerBeginEdit (cust); + cust->currency = currency; + mark_customer (cust); + gncCustomerCommitEdit (cust); } void gncCustomerSetTaxTableOverride (GncCustomer *customer, gboolean override) { - if (!customer) return; - if (customer->taxtable_override == override) return; - gncCustomerBeginEdit (customer); - customer->taxtable_override = override; - mark_customer (customer); - gncCustomerCommitEdit (customer); + if (!customer) return; + if (customer->taxtable_override == override) return; + gncCustomerBeginEdit (customer); + customer->taxtable_override = override; + mark_customer (customer); + gncCustomerCommitEdit (customer); } void gncCustomerSetTaxTable (GncCustomer *customer, GncTaxTable *table) { - if (!customer) return; - if (customer->taxtable == table) return; + if (!customer) return; + if (customer->taxtable == table) return; - gncCustomerBeginEdit (customer); - if (customer->taxtable) - gncTaxTableDecRef (customer->taxtable); - if (table) - gncTaxTableIncRef (table); - customer->taxtable = table; - mark_customer (customer); - gncCustomerCommitEdit (customer); + gncCustomerBeginEdit (customer); + if (customer->taxtable) + gncTaxTableDecRef (customer->taxtable); + if (table) + gncTaxTableIncRef (table); + customer->taxtable = table; + mark_customer (customer); + gncCustomerCommitEdit (customer); } /* Note that JobList changes do not affect the "dirtiness" of the customer */ void gncCustomerAddJob (GncCustomer *cust, GncJob *job) { - if (!cust) return; - if (!job) return; + if (!cust) return; + if (!job) return; - if (g_list_index(cust->jobs, job) == -1) - cust->jobs = g_list_insert_sorted (cust->jobs, job, - (GCompareFunc)gncJobCompare); + if (g_list_index(cust->jobs, job) == -1) + cust->jobs = g_list_insert_sorted (cust->jobs, job, + (GCompareFunc)gncJobCompare); - qof_event_gen (&cust->inst, QOF_EVENT_MODIFY, NULL); + qof_event_gen (&cust->inst, QOF_EVENT_MODIFY, NULL); } void gncCustomerRemoveJob (GncCustomer *cust, GncJob *job) { - GList *node; + GList *node; - if (!cust) return; - if (!job) return; + if (!cust) return; + if (!job) return; - node = g_list_find (cust->jobs, job); - if (!node) { - /* PERR ("split not in account"); */ - } else { - cust->jobs = g_list_remove_link (cust->jobs, node); - g_list_free_1 (node); - } - qof_event_gen (&cust->inst, QOF_EVENT_MODIFY, NULL); + node = g_list_find (cust->jobs, job); + if (!node) + { + /* PERR ("split not in account"); */ + } + else + { + cust->jobs = g_list_remove_link (cust->jobs, node); + g_list_free_1 (node); + } + qof_event_gen (&cust->inst, QOF_EVENT_MODIFY, NULL); } void gncCustomerBeginEdit (GncCustomer *cust) { - qof_begin_edit (&cust->inst); + qof_begin_edit (&cust->inst); } static void gncCustomerOnError (QofInstance *inst, QofBackendError errcode) { - PERR("Customer QofBackend Failure: %d", errcode); - gnc_engine_signal_commit_error( errcode ); + PERR("Customer QofBackend Failure: %d", errcode); + gnc_engine_signal_commit_error( errcode ); } static void gncCustomerOnDone (QofInstance *inst) { - GncCustomer *cust = (GncCustomer *) inst; - gncAddressClearDirty (cust->addr); - gncAddressClearDirty (cust->shipaddr); + GncCustomer *cust = (GncCustomer *) inst; + gncAddressClearDirty (cust->addr); + gncAddressClearDirty (cust->shipaddr); } static void cust_free (QofInstance *inst) { - GncCustomer *cust = (GncCustomer *) inst; - gncCustomerFree (cust); + GncCustomer *cust = (GncCustomer *) inst; + gncCustomerFree (cust); } void gncCustomerCommitEdit (GncCustomer *cust) { - if (!qof_commit_edit (QOF_INSTANCE(cust))) return; - qof_commit_edit_part2 (&cust->inst, gncCustomerOnError, - gncCustomerOnDone, cust_free); + if (!qof_commit_edit (QOF_INSTANCE(cust))) return; + qof_commit_edit_part2 (&cust->inst, gncCustomerOnError, + gncCustomerOnDone, cust_free); } /* ============================================================== */ @@ -500,150 +508,168 @@ void gncCustomerCommitEdit (GncCustomer *cust) const char * gncCustomerGetID (const GncCustomer *cust) { - if (!cust) return NULL; - return cust->id; + if (!cust) return NULL; + return cust->id; } const char * gncCustomerGetName (const GncCustomer *cust) { - if (!cust) return NULL; - return cust->name; + if (!cust) return NULL; + return cust->name; } GncAddress * gncCustomerGetAddr (const GncCustomer *cust) { - if (!cust) return NULL; - return cust->addr; + if (!cust) return NULL; + return cust->addr; } static void qofCustomerSetAddr (GncCustomer *cust, QofInstance *addr_ent) { - GncAddress *addr; + GncAddress *addr; - if(!cust || !addr_ent) { return; } - addr = (GncAddress*)addr_ent; - if(addr == cust->addr) { return; } - if(cust->addr != NULL) { - gncAddressBeginEdit(cust->addr); - gncAddressDestroy(cust->addr); - } - gncCustomerBeginEdit(cust); - cust->addr = addr; - gncCustomerCommitEdit(cust); + if (!cust || !addr_ent) + { + return; + } + addr = (GncAddress*)addr_ent; + if (addr == cust->addr) + { + return; + } + if (cust->addr != NULL) + { + gncAddressBeginEdit(cust->addr); + gncAddressDestroy(cust->addr); + } + gncCustomerBeginEdit(cust); + cust->addr = addr; + gncCustomerCommitEdit(cust); } static void qofCustomerSetShipAddr (GncCustomer *cust, QofInstance *ship_addr_ent) { - GncAddress *ship_addr; + GncAddress *ship_addr; - if(!cust || !ship_addr_ent) { return; } - ship_addr = (GncAddress*)ship_addr_ent; - if(ship_addr == cust->shipaddr) { return; } - if(cust->shipaddr != NULL) { - gncAddressBeginEdit(cust->shipaddr); - gncAddressDestroy(cust->shipaddr); - } - gncCustomerBeginEdit(cust); - cust->shipaddr = ship_addr; - gncCustomerCommitEdit(cust); + if (!cust || !ship_addr_ent) + { + return; + } + ship_addr = (GncAddress*)ship_addr_ent; + if (ship_addr == cust->shipaddr) + { + return; + } + if (cust->shipaddr != NULL) + { + gncAddressBeginEdit(cust->shipaddr); + gncAddressDestroy(cust->shipaddr); + } + gncCustomerBeginEdit(cust); + cust->shipaddr = ship_addr; + gncCustomerCommitEdit(cust); } GncAddress * gncCustomerGetShipAddr (const GncCustomer *cust) { - if (!cust) return NULL; - return cust->shipaddr; + if (!cust) return NULL; + return cust->shipaddr; } const char * gncCustomerGetNotes (const GncCustomer *cust) { - if (!cust) return NULL; - return cust->notes; + if (!cust) return NULL; + return cust->notes; } GncBillTerm * gncCustomerGetTerms (const GncCustomer *cust) { - if (!cust) return NULL; - return cust->terms; + if (!cust) return NULL; + return cust->terms; } GncTaxIncluded gncCustomerGetTaxIncluded (const GncCustomer *cust) { - if (!cust) return GNC_TAXINCLUDED_USEGLOBAL; - return cust->taxincluded; + if (!cust) return GNC_TAXINCLUDED_USEGLOBAL; + return cust->taxincluded; } gnc_commodity * gncCustomerGetCurrency (const GncCustomer *cust) { - if (!cust) return NULL; - return cust->currency; + if (!cust) return NULL; + return cust->currency; } gboolean gncCustomerGetActive (const GncCustomer *cust) { - if (!cust) return FALSE; - return cust->active; + if (!cust) return FALSE; + return cust->active; } gnc_numeric gncCustomerGetDiscount (const GncCustomer *cust) { - if (!cust) return gnc_numeric_zero(); - return cust->discount; + if (!cust) return gnc_numeric_zero(); + return cust->discount; } gnc_numeric gncCustomerGetCredit (const GncCustomer *cust) { - if (!cust) return gnc_numeric_zero(); - return cust->credit; + if (!cust) return gnc_numeric_zero(); + return cust->credit; } gboolean gncCustomerGetTaxTableOverride (const GncCustomer *customer) { - if (!customer) return FALSE; - return customer->taxtable_override; + if (!customer) return FALSE; + return customer->taxtable_override; } GncTaxTable* gncCustomerGetTaxTable (const GncCustomer *customer) { - if (!customer) return NULL; - return customer->taxtable; + if (!customer) return NULL; + return customer->taxtable; } GList * gncCustomerGetJoblist (const GncCustomer *cust, gboolean show_all) { - if (!cust) return NULL; + if (!cust) return NULL; - if (show_all) { - return (g_list_copy (cust->jobs)); - } else { - GList *list = NULL, *iterator; - for (iterator = cust->jobs; iterator; iterator=iterator->next) { - GncJob *j = iterator->data; - if (gncJobGetActive (j)) - list = g_list_append (list, j); + if (show_all) + { + return (g_list_copy (cust->jobs)); + } + else + { + GList *list = NULL, *iterator; + for (iterator = cust->jobs; iterator; iterator = iterator->next) + { + GncJob *j = iterator->data; + if (gncJobGetActive (j)) + list = g_list_append (list, j); + } + return list; } - return list; - } } gboolean gncCustomerIsDirty (GncCustomer *cust) { - if (!cust) return FALSE; - return (qof_instance_is_dirty(&cust->inst) || - gncAddressIsDirty (cust->addr) || - gncAddressIsDirty (cust->shipaddr)); + if (!cust) return FALSE; + return (qof_instance_is_dirty(&cust->inst) || + gncAddressIsDirty (cust->addr) || + gncAddressIsDirty (cust->shipaddr)); } /* Other functions */ int gncCustomerCompare (const GncCustomer *a, const GncCustomer *b) { - if (!a && !b) return 0; - if (!a && b) return 1; - if (a && !b) return -1; + if (!a && !b) return 0; + if (!a && b) return 1; + if (a && !b) return -1; - return(strcmp(a->name, b->name)); + return(strcmp(a->name, b->name)); } /** @@ -657,80 +683,99 @@ int gncCustomerCompare (const GncCustomer *a, const GncCustomer *b) */ static void listen_for_address_events(QofInstance *entity, QofEventId event_type, - gpointer user_data, gpointer event_data) + gpointer user_data, gpointer event_data) { - GncCustomer* cust; + GncCustomer* cust; - if ((event_type & QOF_EVENT_MODIFY) == 0) { - return; - } - if (!GNC_IS_ADDRESS(entity)) { - return; - } - if (!GNC_IS_CUSTOMER(event_data)) { - return; - } - cust = GNC_CUSTOMER(event_data); - gncCustomerBeginEdit(cust); - mark_customer(cust); - gncCustomerCommitEdit(cust); + if ((event_type & QOF_EVENT_MODIFY) == 0) + { + return; + } + if (!GNC_IS_ADDRESS(entity)) + { + return; + } + if (!GNC_IS_CUSTOMER(event_data)) + { + return; + } + cust = GNC_CUSTOMER(event_data); + gncCustomerBeginEdit(cust); + mark_customer(cust); + gncCustomerCommitEdit(cust); } /* ============================================================== */ /* Package-Private functions */ static const char * _gncCustomerPrintable (gpointer item) { // GncCustomer *c = item; - if (!item) return "failed"; - return gncCustomerGetName((GncCustomer*)item); + if (!item) return "failed"; + return gncCustomerGetName((GncCustomer*)item); } static QofObject gncCustomerDesc = { - .interface_version = QOF_OBJECT_VERSION, - .e_type = _GNC_MOD_NAME, - .type_label = "Customer", - .create = (gpointer)gncCustomerCreate, - .book_begin = NULL, - .book_end = NULL, - .is_dirty = qof_collection_is_dirty, - .mark_clean = qof_collection_mark_clean, - .foreach = qof_collection_foreach, - .printable = (const char* (*)(gpointer))gncCustomerGetName, - .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, + .interface_version = QOF_OBJECT_VERSION, + .e_type = _GNC_MOD_NAME, + .type_label = "Customer", + .create = (gpointer)gncCustomerCreate, + .book_begin = NULL, + .book_end = NULL, + .is_dirty = qof_collection_is_dirty, + .mark_clean = qof_collection_mark_clean, + .foreach = qof_collection_foreach, + .printable = (const char * (*)(gpointer))gncCustomerGetName, + .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, }; gboolean gncCustomerRegister (void) { - static QofParam params[] = { - { CUSTOMER_ID, QOF_TYPE_STRING, (QofAccessFunc)gncCustomerGetID, (QofSetterFunc)gncCustomerSetID }, - { CUSTOMER_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncCustomerGetName, (QofSetterFunc)gncCustomerSetName }, - { CUSTOMER_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncCustomerGetNotes, (QofSetterFunc)gncCustomerSetNotes }, - { CUSTOMER_DISCOUNT, QOF_TYPE_NUMERIC, (QofAccessFunc)gncCustomerGetDiscount, - (QofSetterFunc)gncCustomerSetDiscount }, - { CUSTOMER_CREDIT, QOF_TYPE_NUMERIC, (QofAccessFunc)gncCustomerGetCredit, - (QofSetterFunc)gncCustomerSetCredit }, - { CUSTOMER_ADDR, GNC_ID_ADDRESS, (QofAccessFunc)gncCustomerGetAddr, (QofSetterFunc)qofCustomerSetAddr }, - { CUSTOMER_SHIPADDR, GNC_ID_ADDRESS, (QofAccessFunc)gncCustomerGetShipAddr, (QofSetterFunc)qofCustomerSetShipAddr }, - { CUSTOMER_TT_OVER, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncCustomerGetTaxTableOverride, - (QofSetterFunc)gncCustomerSetTaxTableOverride }, - { CUSTOMER_TERMS, GNC_ID_BILLTERM, (QofAccessFunc)gncCustomerGetTerms, (QofSetterFunc)gncCustomerSetTerms }, - { CUSTOMER_SLOTS, QOF_TYPE_KVP, (QofAccessFunc)qof_instance_get_slots, NULL }, - { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncCustomerGetActive, (QofSetterFunc)gncCustomerSetActive }, - { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, - { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { CUSTOMER_ID, QOF_TYPE_STRING, (QofAccessFunc)gncCustomerGetID, (QofSetterFunc)gncCustomerSetID }, + { CUSTOMER_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncCustomerGetName, (QofSetterFunc)gncCustomerSetName }, + { CUSTOMER_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncCustomerGetNotes, (QofSetterFunc)gncCustomerSetNotes }, + { + CUSTOMER_DISCOUNT, QOF_TYPE_NUMERIC, (QofAccessFunc)gncCustomerGetDiscount, + (QofSetterFunc)gncCustomerSetDiscount + }, + { + CUSTOMER_CREDIT, QOF_TYPE_NUMERIC, (QofAccessFunc)gncCustomerGetCredit, + (QofSetterFunc)gncCustomerSetCredit + }, + { CUSTOMER_ADDR, GNC_ID_ADDRESS, (QofAccessFunc)gncCustomerGetAddr, (QofSetterFunc)qofCustomerSetAddr }, + { CUSTOMER_SHIPADDR, GNC_ID_ADDRESS, (QofAccessFunc)gncCustomerGetShipAddr, (QofSetterFunc)qofCustomerSetShipAddr }, + { + CUSTOMER_TT_OVER, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncCustomerGetTaxTableOverride, + (QofSetterFunc)gncCustomerSetTaxTableOverride + }, + { CUSTOMER_TERMS, GNC_ID_BILLTERM, (QofAccessFunc)gncCustomerGetTerms, (QofSetterFunc)gncCustomerSetTerms }, + { CUSTOMER_SLOTS, QOF_TYPE_KVP, (QofAccessFunc)qof_instance_get_slots, NULL }, + { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncCustomerGetActive, (QofSetterFunc)gncCustomerSetActive }, + { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, + { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, + { NULL }, + }; - if(!qof_choice_add_class(GNC_ID_INVOICE, GNC_ID_CUSTOMER, INVOICE_OWNER)) { return FALSE; } - if(!qof_choice_add_class(GNC_ID_JOB, GNC_ID_CUSTOMER, JOB_OWNER)) { return FALSE; } - qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncCustomerCompare,params); - if(!qof_choice_create(GNC_ID_CUSTOMER)) { return FALSE;} - /* temp */ - _gncCustomerPrintable(NULL); - return qof_object_register (&gncCustomerDesc); + if (!qof_choice_add_class(GNC_ID_INVOICE, GNC_ID_CUSTOMER, INVOICE_OWNER)) + { + return FALSE; + } + if (!qof_choice_add_class(GNC_ID_JOB, GNC_ID_CUSTOMER, JOB_OWNER)) + { + return FALSE; + } + qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncCustomerCompare, params); + if (!qof_choice_create(GNC_ID_CUSTOMER)) + { + return FALSE; + } + /* temp */ + _gncCustomerPrintable(NULL); + return qof_object_register (&gncCustomerDesc); } gint64 gncCustomerNextID (QofBook *book) { - return qof_book_get_counter (book, _GNC_MOD_NAME); + return qof_book_get_counter (book, _GNC_MOD_NAME); } diff --git a/src/business/business-core/gncCustomer.h b/src/business/business-core/gncCustomer.h index e30011a334..3e5eebcb04 100644 --- a/src/business/business-core/gncCustomer.h +++ b/src/business/business-core/gncCustomer.h @@ -24,7 +24,7 @@ /** @addtogroup Customer @{ */ /** @file gncCustomer.h - @brief Core Customer Interface + @brief Core Customer Interface @author Copyright (C) 2001,2002 Derek Atkins */ @@ -78,7 +78,7 @@ typedef struct _gncCustomerClass GncCustomerClass; (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_CUSTOMER, GncCustomerClass)) GType gnc_customer_get_type(void); -/** @name Create/Destroy Functions +/** @name Create/Destroy Functions @{ */ GncCustomer *gncCustomerCreate (QofBook *book); void gncCustomerDestroy (GncCustomer *customer); @@ -86,7 +86,7 @@ void gncCustomerBeginEdit (GncCustomer *customer); void gncCustomerCommitEdit (GncCustomer *customer); /** @} */ -/** @name Set Functions +/** @name Set Functions @{ */ void gncCustomerSetID (GncCustomer *customer, const char *id); @@ -107,10 +107,10 @@ void gncCustomerRemoveJob (GncCustomer *customer, GncJob *job); /** @} */ -/** @name Get Functions +/** @name Get Functions @{ */ /** Return a pointer to the instance gncCustomer that is identified - * by the guid, and is residing in the book. Returns NULL if the + * by the guid, and is residing in the book. Returns NULL if the * instance can't be found. * Equivalent function prototype is * GncCustomer * gncCustomerLookup (QofBook *book, const GUID *guid); diff --git a/src/business/business-core/gncCustomerP.h b/src/business/business-core/gncCustomerP.h index 72f93f5ce5..80e2055988 100644 --- a/src/business/business-core/gncCustomerP.h +++ b/src/business/business-core/gncCustomerP.h @@ -37,7 +37,7 @@ gint64 gncCustomerNextID (QofBook *book); /** The gncCloneCustomer() routine makes a copy of the indicated * customer, placing it in the indicated book. It copies * the addresses, credits, currency, billing terms and jobs. - * It then adds a pair of 'gemini' kvp pointers so that each copy + * It then adds a pair of 'gemini' kvp pointers so that each copy * can be found from the other. */ GncCustomer * gncCloneCustomer (GncCustomer *from, QofBook *book); diff --git a/src/business/business-core/gncEmployee.c b/src/business/business-core/gncEmployee.c index 36bb37beeb..9386e07839 100644 --- a/src/business/business-core/gncEmployee.c +++ b/src/business/business-core/gncEmployee.c @@ -39,28 +39,28 @@ static gint gs_address_event_handler_id = 0; static void listen_for_address_events(QofInstance *entity, QofEventId event_type, - gpointer user_data, gpointer event_data); + gpointer user_data, gpointer event_data); -struct _gncEmployee +struct _gncEmployee { - QofInstance inst; - char * id; - char * username; - GncAddress * addr; - gnc_commodity * currency; - gboolean active; - - char * language; - char * acl; - gnc_numeric workday; - gnc_numeric rate; + QofInstance inst; + char * id; + char * username; + GncAddress * addr; + gnc_commodity * currency; + gboolean active; - Account * ccard_acc; + char * language; + char * acl; + gnc_numeric workday; + gnc_numeric rate; + + Account * ccard_acc; }; struct _gncEmployeeClass { - QofInstanceClass parent_class; + QofInstanceClass parent_class; }; static QofLogModule log_module = GNC_MOD_BUSINESS; @@ -70,15 +70,16 @@ static QofLogModule log_module = GNC_MOD_BUSINESS; G_INLINE_FUNC void mark_employee (GncEmployee *employee); void mark_employee (GncEmployee *employee) { - qof_instance_set_dirty(&employee->inst); - qof_event_gen (&employee->inst, QOF_EVENT_MODIFY, NULL); + qof_instance_set_dirty(&employee->inst); + qof_event_gen (&employee->inst, QOF_EVENT_MODIFY, NULL); } /* ============================================================== */ -enum { +enum +{ PROP_0, - PROP_USERNAME + PROP_USERNAME }; /* GObject Initialization */ @@ -103,43 +104,45 @@ gnc_employee_finalize(GObject* empp) static void gnc_employee_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GncEmployee *emp; g_return_if_fail(GNC_IS_EMPLOYEE(object)); emp = GNC_EMPLOYEE(object); - switch (prop_id) { - case PROP_USERNAME: - g_value_set_string(value, emp->username); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_USERNAME: + g_value_set_string(value, emp->username); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } static void gnc_employee_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GncEmployee *emp; g_return_if_fail(GNC_IS_EMPLOYEE(object)); emp = GNC_EMPLOYEE(object); - switch (prop_id) { - case PROP_USERNAME: - gncEmployeeSetUsername(emp, g_value_get_string(value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_USERNAME: + gncEmployeeSetUsername(emp, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } @@ -147,116 +150,117 @@ static void gnc_employee_class_init (GncEmployeeClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - + gobject_class->dispose = gnc_employee_dispose; gobject_class->finalize = gnc_employee_finalize; gobject_class->set_property = gnc_employee_set_property; gobject_class->get_property = gnc_employee_get_property; g_object_class_install_property - (gobject_class, - PROP_USERNAME, - g_param_spec_string ("name", - "Employee Name", - "The employee name is an arbitrary string " - "assigned by the user which provides the employee " - "name.", - NULL, - G_PARAM_READWRITE)); + (gobject_class, + PROP_USERNAME, + g_param_spec_string ("name", + "Employee Name", + "The employee name is an arbitrary string " + "assigned by the user which provides the employee " + "name.", + NULL, + G_PARAM_READWRITE)); } /* Create/Destroy Functions */ GncEmployee *gncEmployeeCreate (QofBook *book) { - GncEmployee *employee; + GncEmployee *employee; - if (!book) return NULL; + if (!book) return NULL; - employee = g_object_new (GNC_TYPE_EMPLOYEE, NULL); - qof_instance_init_data (&employee->inst, _GNC_MOD_NAME, book); - - employee->id = CACHE_INSERT (""); - employee->username = CACHE_INSERT (""); - employee->language = CACHE_INSERT (""); - employee->acl = CACHE_INSERT (""); - employee->addr = gncAddressCreate (book, &employee->inst); - employee->workday = gnc_numeric_zero(); - employee->rate = gnc_numeric_zero(); - employee->active = TRUE; - - if (gs_address_event_handler_id == 0) { - gs_address_event_handler_id = qof_event_register_handler(listen_for_address_events, NULL); - } + employee = g_object_new (GNC_TYPE_EMPLOYEE, NULL); + qof_instance_init_data (&employee->inst, _GNC_MOD_NAME, book); - qof_event_gen (&employee->inst, QOF_EVENT_CREATE, NULL); + employee->id = CACHE_INSERT (""); + employee->username = CACHE_INSERT (""); + employee->language = CACHE_INSERT (""); + employee->acl = CACHE_INSERT (""); + employee->addr = gncAddressCreate (book, &employee->inst); + employee->workday = gnc_numeric_zero(); + employee->rate = gnc_numeric_zero(); + employee->active = TRUE; - return employee; + if (gs_address_event_handler_id == 0) + { + gs_address_event_handler_id = qof_event_register_handler(listen_for_address_events, NULL); + } + + qof_event_gen (&employee->inst, QOF_EVENT_CREATE, NULL); + + return employee; } void gncEmployeeDestroy (GncEmployee *employee) { - if (!employee) return; - qof_instance_set_destroying(employee, TRUE); - gncEmployeeCommitEdit(employee); + if (!employee) return; + qof_instance_set_destroying(employee, TRUE); + gncEmployeeCommitEdit(employee); } static void gncEmployeeFree (GncEmployee *employee) { - if (!employee) return; + if (!employee) return; - qof_event_gen (&employee->inst, QOF_EVENT_DESTROY, NULL); + qof_event_gen (&employee->inst, QOF_EVENT_DESTROY, NULL); - CACHE_REMOVE (employee->id); - CACHE_REMOVE (employee->username); - CACHE_REMOVE (employee->language); - CACHE_REMOVE (employee->acl); - gncAddressBeginEdit (employee->addr); - gncAddressDestroy (employee->addr); + CACHE_REMOVE (employee->id); + CACHE_REMOVE (employee->username); + CACHE_REMOVE (employee->language); + CACHE_REMOVE (employee->acl); + gncAddressBeginEdit (employee->addr); + gncAddressDestroy (employee->addr); - /* qof_instance_release (&employee->inst); */ - g_object_unref (employee); + /* qof_instance_release (&employee->inst); */ + g_object_unref (employee); } GncEmployee * gncCloneEmployee (GncEmployee *from, QofBook *book) { - GncEmployee *employee; - if (!book || !from) return NULL; + GncEmployee *employee; + if (!book || !from) return NULL; - employee = g_object_new (GNC_TYPE_EMPLOYEE, NULL); - qof_instance_init_data(&employee->inst, _GNC_MOD_NAME, book); - qof_instance_gemini (&employee->inst, &from->inst); + employee = g_object_new (GNC_TYPE_EMPLOYEE, NULL); + qof_instance_init_data(&employee->inst, _GNC_MOD_NAME, book); + qof_instance_gemini (&employee->inst, &from->inst); - employee->id = CACHE_INSERT (from->id); - employee->username = CACHE_INSERT (from->username); - employee->language = CACHE_INSERT (from->language); - employee->acl = CACHE_INSERT (from->acl); - employee->addr = gncCloneAddress (from->addr, &employee->inst, book); - employee->workday = from->workday; - employee->rate = from->rate; - employee->active = from->active; - employee->currency = gnc_commodity_obtain_twin(from->currency, book); - employee->ccard_acc = - GNC_ACCOUNT(qof_instance_lookup_twin(QOF_INSTANCE(from->ccard_acc), book)); - - qof_event_gen (&employee->inst, QOF_EVENT_CREATE, NULL); + employee->id = CACHE_INSERT (from->id); + employee->username = CACHE_INSERT (from->username); + employee->language = CACHE_INSERT (from->language); + employee->acl = CACHE_INSERT (from->acl); + employee->addr = gncCloneAddress (from->addr, &employee->inst, book); + employee->workday = from->workday; + employee->rate = from->rate; + employee->active = from->active; + employee->currency = gnc_commodity_obtain_twin(from->currency, book); + employee->ccard_acc = + GNC_ACCOUNT(qof_instance_lookup_twin(QOF_INSTANCE(from->ccard_acc), book)); - return employee; + qof_event_gen (&employee->inst, QOF_EVENT_CREATE, NULL); + + return employee; } GncEmployee * gncEmployeeObtainTwin (GncEmployee *from, QofBook *book) { - GncEmployee *employee; - if (!book) return NULL; + GncEmployee *employee; + if (!book) return NULL; - employee = (GncEmployee *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); - if (!employee) - { - employee = gncCloneEmployee (from, book); - } + employee = (GncEmployee *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); + if (!employee) + { + employee = gncCloneEmployee (from, book); + } - return employee; + return employee; } /* ============================================================== */ @@ -274,207 +278,214 @@ gncEmployeeObtainTwin (GncEmployee *from, QofBook *book) void gncEmployeeSetID (GncEmployee *employee, const char *id) { - if (!employee) return; - if (!id) return; - SET_STR(employee, employee->id, id); - mark_employee (employee); - gncEmployeeCommitEdit (employee); + if (!employee) return; + if (!id) return; + SET_STR(employee, employee->id, id); + mark_employee (employee); + gncEmployeeCommitEdit (employee); } void gncEmployeeSetUsername (GncEmployee *employee, const char *username) { - if (!employee) return; - if (!username) return; - SET_STR(employee, employee->username, username); - mark_employee (employee); - gncEmployeeCommitEdit (employee); + if (!employee) return; + if (!username) return; + SET_STR(employee, employee->username, username); + mark_employee (employee); + gncEmployeeCommitEdit (employee); } void gncEmployeeSetLanguage (GncEmployee *employee, const char *language) { - if (!employee) return; - if (!language) return; - SET_STR(employee, employee->language, language); - mark_employee (employee); - gncEmployeeCommitEdit (employee); + if (!employee) return; + if (!language) return; + SET_STR(employee, employee->language, language); + mark_employee (employee); + gncEmployeeCommitEdit (employee); } void gncEmployeeSetAcl (GncEmployee *employee, const char *acl) { - if (!employee) return; - if (!acl) return; - SET_STR(employee, employee->acl, acl); - mark_employee (employee); - gncEmployeeCommitEdit (employee); + if (!employee) return; + if (!acl) return; + SET_STR(employee, employee->acl, acl); + mark_employee (employee); + gncEmployeeCommitEdit (employee); } void gncEmployeeSetWorkday (GncEmployee *employee, gnc_numeric workday) { - if (!employee) return; - if (gnc_numeric_equal (workday, employee->workday)) return; - gncEmployeeBeginEdit (employee); - employee->workday = workday; - mark_employee (employee); - gncEmployeeCommitEdit (employee); + if (!employee) return; + if (gnc_numeric_equal (workday, employee->workday)) return; + gncEmployeeBeginEdit (employee); + employee->workday = workday; + mark_employee (employee); + gncEmployeeCommitEdit (employee); } void gncEmployeeSetRate (GncEmployee *employee, gnc_numeric rate) { - if (!employee) return; - if (gnc_numeric_equal (rate, employee->rate)) return; - gncEmployeeBeginEdit (employee); - employee->rate = rate; - mark_employee (employee); - gncEmployeeCommitEdit (employee); + if (!employee) return; + if (gnc_numeric_equal (rate, employee->rate)) return; + gncEmployeeBeginEdit (employee); + employee->rate = rate; + mark_employee (employee); + gncEmployeeCommitEdit (employee); } void gncEmployeeSetCurrency (GncEmployee *employee, gnc_commodity *currency) { - if (!employee || !currency) return; - if (employee->currency && - gnc_commodity_equal (employee->currency, currency)) - return; - gncEmployeeBeginEdit (employee); - employee->currency = currency; - mark_employee (employee); - gncEmployeeCommitEdit (employee); + if (!employee || !currency) return; + if (employee->currency && + gnc_commodity_equal (employee->currency, currency)) + return; + gncEmployeeBeginEdit (employee); + employee->currency = currency; + mark_employee (employee); + gncEmployeeCommitEdit (employee); } void gncEmployeeSetActive (GncEmployee *employee, gboolean active) { - if (!employee) return; - if (active == employee->active) return; - gncEmployeeBeginEdit (employee); - employee->active = active; - mark_employee (employee); - gncEmployeeCommitEdit (employee); + if (!employee) return; + if (active == employee->active) return; + gncEmployeeBeginEdit (employee); + employee->active = active; + mark_employee (employee); + gncEmployeeCommitEdit (employee); } void gncEmployeeSetCCard (GncEmployee *employee, Account* ccard_acc) { - if (!employee) return; - if (ccard_acc == employee->ccard_acc) return; - gncEmployeeBeginEdit (employee); - employee->ccard_acc = ccard_acc; - mark_employee (employee); - gncEmployeeCommitEdit (employee); + if (!employee) return; + if (ccard_acc == employee->ccard_acc) return; + gncEmployeeBeginEdit (employee); + employee->ccard_acc = ccard_acc; + mark_employee (employee); + gncEmployeeCommitEdit (employee); } void qofEmployeeSetAddr (GncEmployee *employee, QofInstance *addr_ent) { - GncAddress *addr; + GncAddress *addr; - if(!employee || !addr_ent) { return; } - addr = (GncAddress*)addr_ent; - if(addr == employee->addr) { return; } - if(employee->addr != NULL) { - gncAddressBeginEdit(employee->addr); - gncAddressDestroy(employee->addr); - } - gncEmployeeBeginEdit(employee); - employee->addr = addr; - gncEmployeeCommitEdit(employee); + if (!employee || !addr_ent) + { + return; + } + addr = (GncAddress*)addr_ent; + if (addr == employee->addr) + { + return; + } + if (employee->addr != NULL) + { + gncAddressBeginEdit(employee->addr); + gncAddressDestroy(employee->addr); + } + gncEmployeeBeginEdit(employee); + employee->addr = addr; + gncEmployeeCommitEdit(employee); } /* ============================================================== */ /* Get Functions */ const char * gncEmployeeGetID (const GncEmployee *employee) { - if (!employee) return NULL; - return employee->id; + if (!employee) return NULL; + return employee->id; } const char * gncEmployeeGetUsername (const GncEmployee *employee) { - if (!employee) return NULL; - return employee->username; + if (!employee) return NULL; + return employee->username; } GncAddress * gncEmployeeGetAddr (const GncEmployee *employee) { - if (!employee) return NULL; - return employee->addr; + if (!employee) return NULL; + return employee->addr; } const char * gncEmployeeGetLanguage (const GncEmployee *employee) { - if (!employee) return NULL; - return employee->language; + if (!employee) return NULL; + return employee->language; } const char * gncEmployeeGetAcl (const GncEmployee *employee) { - if (!employee) return NULL; - return employee->acl; + if (!employee) return NULL; + return employee->acl; } gnc_numeric gncEmployeeGetWorkday (const GncEmployee *employee) { - if (!employee) return gnc_numeric_zero(); - return employee->workday; + if (!employee) return gnc_numeric_zero(); + return employee->workday; } gnc_numeric gncEmployeeGetRate (const GncEmployee *employee) { - if (!employee) return gnc_numeric_zero(); - return employee->rate; + if (!employee) return gnc_numeric_zero(); + return employee->rate; } gnc_commodity * gncEmployeeGetCurrency (const GncEmployee *employee) { - if (!employee) return NULL; - return employee->currency; + if (!employee) return NULL; + return employee->currency; } gboolean gncEmployeeGetActive (const GncEmployee *employee) { - if (!employee) return FALSE; - return employee->active; + if (!employee) return FALSE; + return employee->active; } Account * gncEmployeeGetCCard (const GncEmployee *employee) { - if (!employee) return NULL; - return employee->ccard_acc; + if (!employee) return NULL; + return employee->ccard_acc; } gboolean gncEmployeeIsDirty (const GncEmployee *employee) { - if (!employee) return FALSE; - return (qof_instance_get_dirty_flag(employee) - || gncAddressIsDirty (employee->addr)); + if (!employee) return FALSE; + return (qof_instance_get_dirty_flag(employee) + || gncAddressIsDirty (employee->addr)); } void gncEmployeeBeginEdit (GncEmployee *employee) { - qof_begin_edit(&employee->inst); + qof_begin_edit(&employee->inst); } static void gncEmployeeOnError (QofInstance *employee, QofBackendError errcode) { - PERR("Employee QofBackend Failure: %d", errcode); - gnc_engine_signal_commit_error( errcode ); + PERR("Employee QofBackend Failure: %d", errcode); + gnc_engine_signal_commit_error( errcode ); } static void gncEmployeeOnDone (QofInstance *inst) { - GncEmployee *employee = (GncEmployee *) inst; - gncAddressClearDirty (employee->addr); + GncEmployee *employee = (GncEmployee *) inst; + gncAddressClearDirty (employee->addr); } static void emp_free (QofInstance *inst) { - GncEmployee *employee = (GncEmployee *) inst; - gncEmployeeFree (employee); + GncEmployee *employee = (GncEmployee *) inst; + gncEmployeeFree (employee); } void gncEmployeeCommitEdit (GncEmployee *employee) { - if (!qof_commit_edit (QOF_INSTANCE(employee))) return; - qof_commit_edit_part2 (&employee->inst, gncEmployeeOnError, - gncEmployeeOnDone, emp_free); + if (!qof_commit_edit (QOF_INSTANCE(employee))) return; + qof_commit_edit_part2 (&employee->inst, gncEmployeeOnError, + gncEmployeeOnDone, emp_free); } /* ============================================================== */ @@ -482,20 +493,20 @@ void gncEmployeeCommitEdit (GncEmployee *employee) int gncEmployeeCompare (const GncEmployee *a, const GncEmployee *b) { - if (!a && !b) return 0; - if (!a && b) return 1; - if (a && !b) return -1; + if (!a && !b) return 0; + if (!a && b) return 1; + if (a && !b) return -1; - return(strcmp(a->username, b->username)); + return(strcmp(a->username, b->username)); } /* Package-Private functions */ static const char * _gncEmployeePrintable (gpointer item) { - GncEmployee *v = item; - if (!item) return NULL; - return gncAddressGetName(v->addr); + GncEmployee *v = item; + if (!item) return NULL; + return gncAddressGetName(v->addr); } /** @@ -509,66 +520,76 @@ static const char * _gncEmployeePrintable (gpointer item) */ static void listen_for_address_events(QofInstance *entity, QofEventId event_type, - gpointer user_data, gpointer event_data) + gpointer user_data, gpointer event_data) { - GncEmployee* empl; + GncEmployee* empl; - if ((event_type & QOF_EVENT_MODIFY) == 0) { - return; - } - if (!GNC_IS_ADDRESS(entity)) { - return; - } - if (!GNC_IS_EMPLOYEE(event_data)) { - return; - } - empl = GNC_EMPLOYEE(event_data); - gncEmployeeBeginEdit(empl); - mark_employee(empl); - gncEmployeeCommitEdit(empl); + if ((event_type & QOF_EVENT_MODIFY) == 0) + { + return; + } + if (!GNC_IS_ADDRESS(entity)) + { + return; + } + if (!GNC_IS_EMPLOYEE(event_data)) + { + return; + } + empl = GNC_EMPLOYEE(event_data); + gncEmployeeBeginEdit(empl); + mark_employee(empl); + gncEmployeeCommitEdit(empl); } -static QofObject gncEmployeeDesc = +static QofObject gncEmployeeDesc = { - .interface_version = QOF_OBJECT_VERSION, - .e_type = _GNC_MOD_NAME, - .type_label = "Employee", - .create = (gpointer)gncEmployeeCreate, - .book_begin = NULL, - .book_end = NULL, - .is_dirty = qof_collection_is_dirty, - .mark_clean = qof_collection_mark_clean, - .foreach = qof_collection_foreach, - .printable = _gncEmployeePrintable, - .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, + .interface_version = QOF_OBJECT_VERSION, + .e_type = _GNC_MOD_NAME, + .type_label = "Employee", + .create = (gpointer)gncEmployeeCreate, + .book_begin = NULL, + .book_end = NULL, + .is_dirty = qof_collection_is_dirty, + .mark_clean = qof_collection_mark_clean, + .foreach = qof_collection_foreach, + .printable = _gncEmployeePrintable, + .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, }; gboolean gncEmployeeRegister (void) { - static QofParam params[] = { - { EMPLOYEE_ID, QOF_TYPE_STRING, (QofAccessFunc)gncEmployeeGetID, (QofSetterFunc)gncEmployeeSetID }, - { EMPLOYEE_USERNAME, QOF_TYPE_STRING, (QofAccessFunc)gncEmployeeGetUsername, - (QofSetterFunc)gncEmployeeSetUsername }, - { EMPLOYEE_LANGUAGE, QOF_TYPE_STRING, (QofAccessFunc)gncEmployeeGetLanguage, - (QofSetterFunc)gncEmployeeSetLanguage }, - { EMPLOYEE_ACL, QOF_TYPE_STRING, (QofAccessFunc)gncEmployeeGetAcl, (QofSetterFunc)gncEmployeeSetAcl }, - { EMPLOYEE_WORKDAY, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEmployeeGetWorkday, - (QofSetterFunc)gncEmployeeSetWorkday }, - { EMPLOYEE_RATE, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEmployeeGetRate, (QofSetterFunc)gncEmployeeSetRate }, - { EMPLOYEE_ADDR, GNC_ID_ADDRESS, (QofAccessFunc)gncEmployeeGetAddr, (QofSetterFunc)qofEmployeeSetAddr }, - { EMPLOYEE_CC, GNC_ID_ACCOUNT, (QofAccessFunc)gncEmployeeGetCCard, (QofSetterFunc)gncEmployeeSetCCard }, - { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEmployeeGetActive, (QofSetterFunc)gncEmployeeSetActive }, - { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, - { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { EMPLOYEE_ID, QOF_TYPE_STRING, (QofAccessFunc)gncEmployeeGetID, (QofSetterFunc)gncEmployeeSetID }, + { + EMPLOYEE_USERNAME, QOF_TYPE_STRING, (QofAccessFunc)gncEmployeeGetUsername, + (QofSetterFunc)gncEmployeeSetUsername + }, + { + EMPLOYEE_LANGUAGE, QOF_TYPE_STRING, (QofAccessFunc)gncEmployeeGetLanguage, + (QofSetterFunc)gncEmployeeSetLanguage + }, + { EMPLOYEE_ACL, QOF_TYPE_STRING, (QofAccessFunc)gncEmployeeGetAcl, (QofSetterFunc)gncEmployeeSetAcl }, + { + EMPLOYEE_WORKDAY, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEmployeeGetWorkday, + (QofSetterFunc)gncEmployeeSetWorkday + }, + { EMPLOYEE_RATE, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEmployeeGetRate, (QofSetterFunc)gncEmployeeSetRate }, + { EMPLOYEE_ADDR, GNC_ID_ADDRESS, (QofAccessFunc)gncEmployeeGetAddr, (QofSetterFunc)qofEmployeeSetAddr }, + { EMPLOYEE_CC, GNC_ID_ACCOUNT, (QofAccessFunc)gncEmployeeGetCCard, (QofSetterFunc)gncEmployeeSetCCard }, + { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEmployeeGetActive, (QofSetterFunc)gncEmployeeSetActive }, + { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, + { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, + { NULL }, + }; - qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncEmployeeCompare,params); + qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncEmployeeCompare, params); - return qof_object_register (&gncEmployeeDesc); + return qof_object_register (&gncEmployeeDesc); } gint64 gncEmployeeNextID (QofBook *book) { - return qof_book_get_counter (book, _GNC_MOD_NAME); + return qof_book_get_counter (book, _GNC_MOD_NAME); } diff --git a/src/business/business-core/gncEmployee.h b/src/business/business-core/gncEmployee.h index e0a3e482f6..96d9fde511 100644 --- a/src/business/business-core/gncEmployee.h +++ b/src/business/business-core/gncEmployee.h @@ -53,7 +53,7 @@ typedef struct _gncEmployeeClass GncEmployeeClass; (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_EMPLOYEE, GncEmployeeClass)) GType gnc_employee_get_type(void); -/** @name Create/Destroy Functions +/** @name Create/Destroy Functions @{ */ GncEmployee *gncEmployeeCreate (QofBook *book); void gncEmployeeDestroy (GncEmployee *employee); @@ -62,7 +62,7 @@ void gncEmployeeCommitEdit (GncEmployee *employee); int gncEmployeeCompare (const GncEmployee *a, const GncEmployee *b); /** @} */ -/** @name Set Functions +/** @name Set Functions @{ */ void gncEmployeeSetID (GncEmployee *employee, const char *id); void gncEmployeeSetUsername (GncEmployee *employee, const char *username); @@ -77,7 +77,7 @@ void qofEmployeeSetAddr (GncEmployee *employee, QofInstance *addr_ent); /** @} */ -/** @name Get Functions +/** @name Get Functions @{ */ QofBook * gncEmployeeGetBook (GncEmployee *employee); const char * gncEmployeeGetID (const GncEmployee *employee); diff --git a/src/business/business-core/gncEmployeeP.h b/src/business/business-core/gncEmployeeP.h index 1c49aec536..07d1ef9d79 100644 --- a/src/business/business-core/gncEmployeeP.h +++ b/src/business/business-core/gncEmployeeP.h @@ -38,7 +38,7 @@ gint64 gncEmployeeNextID (QofBook *book); * employee, placing it in the indicated book. It copies * the username, address, currency, ccard account, etc. * It also copies (as needed) both parents and children, so that - * the parent-child relationship is correctly mirrored in the + * the parent-child relationship is correctly mirrored in the * clone. * It then adds a pair of 'gemini' kvp pointers so that each copy * can be found from the other. @@ -52,7 +52,7 @@ GncEmployee * gncCloneEmployee (GncEmployee *from, QofBook *); * gncCloneEmployee()) and placed into the book. * * We called this routine 'Obtain' instead of "Get" to distinguish - * it from the other Get routines, which work in fundamentally + * it from the other Get routines, which work in fundamentally * different ways. */ GncEmployee * gncEmployeeObtainTwin (GncEmployee *from, QofBook *book); diff --git a/src/business/business-core/gncEntry.c b/src/business/business-core/gncEntry.c index 9697a43667..1c0a99194c 100644 --- a/src/business/business-core/gncEntry.c +++ b/src/business/business-core/gncEntry.c @@ -36,69 +36,69 @@ #include "gncInvoice.h" #include "gncOrder.h" -struct _gncEntry +struct _gncEntry { - QofInstance inst; + QofInstance inst; - Timespec date; - Timespec date_entered; - char * desc; - char * action; - char * notes; - gnc_numeric quantity; + Timespec date; + Timespec date_entered; + char * desc; + char * action; + char * notes; + gnc_numeric quantity; - /* customer invoice data */ - Account * i_account; - gnc_numeric i_price; - gboolean i_taxable; - gboolean i_taxincluded; - GncTaxTable * i_tax_table; - gnc_numeric i_discount; - GncAmountType i_disc_type; - GncDiscountHow i_disc_how; + /* customer invoice data */ + Account * i_account; + gnc_numeric i_price; + gboolean i_taxable; + gboolean i_taxincluded; + GncTaxTable * i_tax_table; + gnc_numeric i_discount; + GncAmountType i_disc_type; + GncDiscountHow i_disc_how; - /* vendor bill data */ - Account * b_account; - gnc_numeric b_price; - gboolean b_taxable; - gboolean b_taxincluded; - GncTaxTable * b_tax_table; - gboolean billable; - GncOwner billto; + /* vendor bill data */ + Account * b_account; + gnc_numeric b_price; + gboolean b_taxable; + gboolean b_taxincluded; + GncTaxTable * b_tax_table; + gboolean billable; + GncOwner billto; - /* employee bill data */ - GncEntryPaymentType b_payment; + /* employee bill data */ + GncEntryPaymentType b_payment; - /* my parent(s) */ - GncOrder * order; - GncInvoice * invoice; - GncInvoice * bill; + /* my parent(s) */ + GncOrder * order; + GncInvoice * invoice; + GncInvoice * bill; - /* CACHED VALUES */ - gboolean values_dirty; + /* CACHED VALUES */ + gboolean values_dirty; - /* customer invoice */ - gnc_numeric i_value; - gnc_numeric i_value_rounded; - GList * i_tax_values; - gnc_numeric i_tax_value; - gnc_numeric i_tax_value_rounded; - gnc_numeric i_disc_value; - gnc_numeric i_disc_value_rounded; - Timespec i_taxtable_modtime; + /* customer invoice */ + gnc_numeric i_value; + gnc_numeric i_value_rounded; + GList * i_tax_values; + gnc_numeric i_tax_value; + gnc_numeric i_tax_value_rounded; + gnc_numeric i_disc_value; + gnc_numeric i_disc_value_rounded; + Timespec i_taxtable_modtime; - /* vendor bill */ - gnc_numeric b_value; - gnc_numeric b_value_rounded; - GList * b_tax_values; - gnc_numeric b_tax_value; - gnc_numeric b_tax_value_rounded; - Timespec b_taxtable_modtime; + /* vendor bill */ + gnc_numeric b_value; + gnc_numeric b_value_rounded; + GList * b_tax_values; + gnc_numeric b_tax_value; + gnc_numeric b_tax_value_rounded; + Timespec b_taxtable_modtime; }; struct _gncEntryClass { - QofInstanceClass parent_class; + QofInstanceClass parent_class; }; static QofLogModule log_module = GNC_MOD_BUSINESS; @@ -110,51 +110,51 @@ static QofLogModule log_module = GNC_MOD_BUSINESS; const char * gncEntryDiscountHowToString (GncDiscountHow how) { - switch(how) - { - GNC_RETURN_ENUM_AS_STRING(GNC_DISC_PRETAX, "PRETAX"); - GNC_RETURN_ENUM_AS_STRING(GNC_DISC_SAMETIME, "SAMETIME"); - GNC_RETURN_ENUM_AS_STRING(GNC_DISC_POSTTAX, "POSTTAX"); + switch (how) + { + GNC_RETURN_ENUM_AS_STRING(GNC_DISC_PRETAX, "PRETAX"); + GNC_RETURN_ENUM_AS_STRING(GNC_DISC_SAMETIME, "SAMETIME"); + GNC_RETURN_ENUM_AS_STRING(GNC_DISC_POSTTAX, "POSTTAX"); default: - g_warning ("asked to translate unknown discount-how %d.\n", how); - break; - } - return(NULL); + g_warning ("asked to translate unknown discount-how %d.\n", how); + break; + } + return(NULL); } const char * gncEntryPaymentTypeToString (GncEntryPaymentType type) { - switch(type) - { - GNC_RETURN_ENUM_AS_STRING(GNC_PAYMENT_CASH, "CASH"); - GNC_RETURN_ENUM_AS_STRING(GNC_PAYMENT_CARD, "CARD"); + switch (type) + { + GNC_RETURN_ENUM_AS_STRING(GNC_PAYMENT_CASH, "CASH"); + GNC_RETURN_ENUM_AS_STRING(GNC_PAYMENT_CARD, "CARD"); default: - g_warning ("asked to translate unknown payment type %d.\n", type); - break; - } - return(NULL); + g_warning ("asked to translate unknown payment type %d.\n", type); + break; + } + return(NULL); } #undef GNC_RETURN_ENUM_AS_STRING #define GNC_RETURN_ON_MATCH(s,x,r) \ if(safe_strcmp((s), (str)) == 0) { *(r) = x; return(TRUE); } gboolean gncEntryDiscountStringToHow (const char *str, GncDiscountHow *how) { - GNC_RETURN_ON_MATCH ("PRETAX", GNC_DISC_PRETAX, how); - GNC_RETURN_ON_MATCH ("SAMETIME", GNC_DISC_SAMETIME, how); - GNC_RETURN_ON_MATCH ("POSTTAX", GNC_DISC_POSTTAX, how); - g_warning ("asked to translate unknown discount-how string %s.\n", - str ? str : "(null)"); + GNC_RETURN_ON_MATCH ("PRETAX", GNC_DISC_PRETAX, how); + GNC_RETURN_ON_MATCH ("SAMETIME", GNC_DISC_SAMETIME, how); + GNC_RETURN_ON_MATCH ("POSTTAX", GNC_DISC_POSTTAX, how); + g_warning ("asked to translate unknown discount-how string %s.\n", + str ? str : "(null)"); - return(FALSE); + return(FALSE); } gboolean gncEntryPaymentStringToType (const char *str, GncEntryPaymentType *type) { - GNC_RETURN_ON_MATCH ("CASH", GNC_PAYMENT_CASH, type); - GNC_RETURN_ON_MATCH ("CARD", GNC_PAYMENT_CARD, type); - g_warning ("asked to translate unknown discount-how string %s.\n", - str ? str : "(null)"); + GNC_RETURN_ON_MATCH ("CASH", GNC_PAYMENT_CASH, type); + GNC_RETURN_ON_MATCH ("CARD", GNC_PAYMENT_CARD, type); + g_warning ("asked to translate unknown discount-how string %s.\n", + str ? str : "(null)"); - return(FALSE); + return(FALSE); } #undef GNC_RETURN_ON_MATCH @@ -173,15 +173,16 @@ gboolean gncEntryPaymentStringToType (const char *str, GncEntryPaymentType *type G_INLINE_FUNC void mark_entry (GncEntry *entry); void mark_entry (GncEntry *entry) { - qof_instance_set_dirty(&entry->inst); - qof_event_gen (&entry->inst, QOF_EVENT_MODIFY, NULL); + qof_instance_set_dirty(&entry->inst); + qof_event_gen (&entry->inst, QOF_EVENT_MODIFY, NULL); } /* ================================================================ */ -enum { +enum +{ PROP_0, - PROP_DESCRIPTION + PROP_DESCRIPTION }; /* GObject Initialization */ @@ -206,43 +207,45 @@ gnc_entry_finalize(GObject* entryp) static void gnc_entry_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GncEntry *entry; g_return_if_fail(GNC_IS_ENTRY(object)); entry = GNC_ENTRY(object); - switch (prop_id) { - case PROP_DESCRIPTION: - g_value_set_string(value, entry->desc); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_DESCRIPTION: + g_value_set_string(value, entry->desc); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } static void gnc_entry_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GncEntry *entry; g_return_if_fail(GNC_IS_ENTRY(object)); entry = GNC_ENTRY(object); - switch (prop_id) { - case PROP_DESCRIPTION: - gncEntrySetDescription(entry, g_value_get_string(value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_DESCRIPTION: + gncEntrySetDescription(entry, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } @@ -250,107 +253,107 @@ static void gnc_entry_class_init (GncEntryClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - + gobject_class->dispose = gnc_entry_dispose; gobject_class->finalize = gnc_entry_finalize; gobject_class->set_property = gnc_entry_set_property; gobject_class->get_property = gnc_entry_get_property; g_object_class_install_property - (gobject_class, - PROP_DESCRIPTION, - g_param_spec_string ("description", - "Entry Description", - "The description is an arbitrary string " - "assigned by the user. It provides identification " - "for this entry.", - NULL, - G_PARAM_READWRITE)); + (gobject_class, + PROP_DESCRIPTION, + g_param_spec_string ("description", + "Entry Description", + "The description is an arbitrary string " + "assigned by the user. It provides identification " + "for this entry.", + NULL, + G_PARAM_READWRITE)); } /* Create/Destroy Functions */ GncEntry *gncEntryCreate (QofBook *book) { - GncEntry *entry; - gnc_numeric zero = gnc_numeric_zero (); + GncEntry *entry; + gnc_numeric zero = gnc_numeric_zero (); - if (!book) return NULL; + if (!book) return NULL; - entry = g_object_new (GNC_TYPE_ENTRY, NULL); - qof_instance_init_data (&entry->inst, _GNC_MOD_NAME, book); + entry = g_object_new (GNC_TYPE_ENTRY, NULL); + qof_instance_init_data (&entry->inst, _GNC_MOD_NAME, book); - entry->desc = CACHE_INSERT (""); - entry->action = CACHE_INSERT (""); - entry->notes = CACHE_INSERT (""); - entry->quantity = zero; + entry->desc = CACHE_INSERT (""); + entry->action = CACHE_INSERT (""); + entry->notes = CACHE_INSERT (""); + entry->quantity = zero; - entry->i_price = zero; - entry->i_taxable = TRUE; - entry->i_discount = zero; - entry->i_disc_type = GNC_AMT_TYPE_PERCENT; - entry->i_disc_how = GNC_DISC_PRETAX; + entry->i_price = zero; + entry->i_taxable = TRUE; + entry->i_discount = zero; + entry->i_disc_type = GNC_AMT_TYPE_PERCENT; + entry->i_disc_how = GNC_DISC_PRETAX; - entry->b_price = zero; - entry->b_taxable = TRUE; - entry->billto.type = GNC_OWNER_CUSTOMER; - entry->b_payment = GNC_PAYMENT_CASH; + entry->b_price = zero; + entry->b_taxable = TRUE; + entry->billto.type = GNC_OWNER_CUSTOMER; + entry->b_payment = GNC_PAYMENT_CASH; - entry->values_dirty = TRUE; + entry->values_dirty = TRUE; - qof_event_gen (&entry->inst, QOF_EVENT_CREATE, NULL); + qof_event_gen (&entry->inst, QOF_EVENT_CREATE, NULL); - return entry; + return entry; } void gncEntryDestroy (GncEntry *entry) { - if (!entry) return; - qof_instance_set_destroying(entry, TRUE); - gncEntryCommitEdit(entry); + if (!entry) return; + qof_instance_set_destroying(entry, TRUE); + gncEntryCommitEdit(entry); } static void gncEntryFree (GncEntry *entry) { - if (!entry) return; + if (!entry) return; - qof_event_gen (&entry->inst, QOF_EVENT_DESTROY, NULL); + qof_event_gen (&entry->inst, QOF_EVENT_DESTROY, NULL); - CACHE_REMOVE (entry->desc); - CACHE_REMOVE (entry->action); - CACHE_REMOVE (entry->notes); - if (entry->i_tax_values) - gncAccountValueDestroy (entry->i_tax_values); - if (entry->b_tax_values) - gncAccountValueDestroy (entry->b_tax_values); - if (entry->i_tax_table) - gncTaxTableDecRef (entry->i_tax_table); - if (entry->b_tax_table) - gncTaxTableDecRef (entry->b_tax_table); + CACHE_REMOVE (entry->desc); + CACHE_REMOVE (entry->action); + CACHE_REMOVE (entry->notes); + if (entry->i_tax_values) + gncAccountValueDestroy (entry->i_tax_values); + if (entry->b_tax_values) + gncAccountValueDestroy (entry->b_tax_values); + if (entry->i_tax_table) + gncTaxTableDecRef (entry->i_tax_table); + if (entry->b_tax_table) + gncTaxTableDecRef (entry->b_tax_table); - /* qof_instance_release (&entry->inst); */ - g_object_unref (entry); + /* qof_instance_release (&entry->inst); */ + g_object_unref (entry); } GncEntry * gncCloneEntry (GncEntry *from, QofBook *book) { - /* XXX unfinished */ - return NULL; + /* XXX unfinished */ + return NULL; } GncEntry * gncEntryObtainTwin (GncEntry *from, QofBook *book) { - GncEntry *entry; - if (!book) return NULL; + GncEntry *entry; + if (!book) return NULL; - entry = (GncEntry *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); - if (!entry) - { - entry = gncCloneEntry (from, book); - } + entry = (GncEntry *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); + if (!entry) + { + entry = gncCloneEntry (from, book); + } - return entry; + return entry; } @@ -359,372 +362,373 @@ gncEntryObtainTwin (GncEntry *from, QofBook *book) void gncEntrySetDate (GncEntry *entry, Timespec date) { - gboolean first_date = FALSE; - Timespec zero_time = { 0, 0 }; + gboolean first_date = FALSE; + Timespec zero_time = { 0, 0 }; - if (!entry) return; - if (timespec_equal (&entry->date, &date)) return; - if (timespec_equal (&entry->date, &zero_time)) - first_date = TRUE; - gncEntryBeginEdit (entry); - entry->date = date; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (timespec_equal (&entry->date, &date)) return; + if (timespec_equal (&entry->date, &zero_time)) + first_date = TRUE; + gncEntryBeginEdit (entry); + entry->date = date; + mark_entry (entry); + gncEntryCommitEdit (entry); - /* Don't re-sort the first time we set the date on this entry */ - if (!first_date) { - if (entry->invoice) - gncInvoiceSortEntries(entry->invoice); - if (entry->bill) - gncInvoiceSortEntries(entry->bill); - } + /* Don't re-sort the first time we set the date on this entry */ + if (!first_date) + { + if (entry->invoice) + gncInvoiceSortEntries(entry->invoice); + if (entry->bill) + gncInvoiceSortEntries(entry->bill); + } } void gncEntrySetDateEntered (GncEntry *entry, Timespec date) { - if (!entry) return; - if (timespec_equal (&entry->date_entered, &date)) return; - gncEntryBeginEdit (entry); - entry->date_entered = date; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (timespec_equal (&entry->date_entered, &date)) return; + gncEntryBeginEdit (entry); + entry->date_entered = date; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetDescription (GncEntry *entry, const char *desc) { - if (!entry || !desc) return; - SET_STR (entry, entry->desc, desc); - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry || !desc) return; + SET_STR (entry, entry->desc, desc); + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetAction (GncEntry *entry, const char *action) { - if (!entry || !action) return; - SET_STR (entry,entry->action, action); - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry || !action) return; + SET_STR (entry, entry->action, action); + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetNotes (GncEntry *entry, const char *notes) { - if (!entry || !notes) return; - SET_STR (entry, entry->notes, notes); - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry || !notes) return; + SET_STR (entry, entry->notes, notes); + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetQuantity (GncEntry *entry, gnc_numeric quantity) { - if (!entry) return; - if (gnc_numeric_eq (entry->quantity, quantity)) return; - gncEntryBeginEdit (entry); - entry->quantity = quantity; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (gnc_numeric_eq (entry->quantity, quantity)) return; + gncEntryBeginEdit (entry); + entry->quantity = quantity; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } /* Customer Invoices */ void gncEntrySetInvAccount (GncEntry *entry, Account *acc) { - if (!entry) return; - if (entry->i_account == acc) return; - gncEntryBeginEdit (entry); - entry->i_account = acc; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->i_account == acc) return; + gncEntryBeginEdit (entry); + entry->i_account = acc; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetInvPrice (GncEntry *entry, gnc_numeric price) { - if (!entry) return; - if (gnc_numeric_eq (entry->i_price, price)) return; - gncEntryBeginEdit (entry); - entry->i_price = price; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (gnc_numeric_eq (entry->i_price, price)) return; + gncEntryBeginEdit (entry); + entry->i_price = price; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetInvTaxable (GncEntry *entry, gboolean taxable) { - if (!entry) return; - if (entry->i_taxable == taxable) return; - gncEntryBeginEdit (entry); - entry->i_taxable = taxable; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->i_taxable == taxable) return; + gncEntryBeginEdit (entry); + entry->i_taxable = taxable; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetInvTaxIncluded (GncEntry *entry, gboolean taxincluded) { - if (!entry) return; - if (entry->i_taxincluded == taxincluded) return; - gncEntryBeginEdit (entry); - entry->i_taxincluded = taxincluded; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->i_taxincluded == taxincluded) return; + gncEntryBeginEdit (entry); + entry->i_taxincluded = taxincluded; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetInvTaxTable (GncEntry *entry, GncTaxTable *table) { - if (!entry) return; - if (entry->i_tax_table == table) return; - gncEntryBeginEdit (entry); - if (entry->i_tax_table) - gncTaxTableDecRef (entry->i_tax_table); - if (table) - gncTaxTableIncRef (table); - entry->i_tax_table = table; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->i_tax_table == table) return; + gncEntryBeginEdit (entry); + if (entry->i_tax_table) + gncTaxTableDecRef (entry->i_tax_table); + if (table) + gncTaxTableIncRef (table); + entry->i_tax_table = table; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetInvDiscount (GncEntry *entry, gnc_numeric discount) { - if (!entry) return; - if (gnc_numeric_eq (entry->i_discount, discount)) return; - gncEntryBeginEdit (entry); - entry->i_discount = discount; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (gnc_numeric_eq (entry->i_discount, discount)) return; + gncEntryBeginEdit (entry); + entry->i_discount = discount; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetInvDiscountType (GncEntry *entry, GncAmountType type) { - if (!entry) return; - if (entry->i_disc_type == type) return; + if (!entry) return; + if (entry->i_disc_type == type) return; - gncEntryBeginEdit (entry); - entry->i_disc_type = type; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + gncEntryBeginEdit (entry); + entry->i_disc_type = type; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetInvDiscountHow (GncEntry *entry, GncDiscountHow how) { - if (!entry) return; - if (entry->i_disc_how == how) return; + if (!entry) return; + if (entry->i_disc_how == how) return; - gncEntryBeginEdit (entry); - entry->i_disc_how = how; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + gncEntryBeginEdit (entry); + entry->i_disc_how = how; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void qofEntrySetInvDiscType (GncEntry *entry, const char *type_string) { - GncAmountType type; + GncAmountType type; - if (!entry) return; - gncAmountStringToType(type_string, &type); - if (entry->i_disc_type == type) return; - gncEntryBeginEdit (entry); - entry->i_disc_type = type; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + gncAmountStringToType(type_string, &type); + if (entry->i_disc_type == type) return; + gncEntryBeginEdit (entry); + entry->i_disc_type = type; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void qofEntrySetInvDiscHow (GncEntry *entry, const char *type) { - GncDiscountHow how; + GncDiscountHow how; - if (!entry) return; - gncEntryBeginEdit (entry); - gncEntryDiscountStringToHow(type, &how); - if (entry->i_disc_how == how) return; - entry->i_disc_how = how; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + gncEntryBeginEdit (entry); + gncEntryDiscountStringToHow(type, &how); + if (entry->i_disc_how == how) return; + entry->i_disc_how = how; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } /* Vendor Bills */ void gncEntrySetBillAccount (GncEntry *entry, Account *acc) { - if (!entry) return; - if (entry->b_account == acc) return; - gncEntryBeginEdit (entry); - entry->b_account = acc; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->b_account == acc) return; + gncEntryBeginEdit (entry); + entry->b_account = acc; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetBillPrice (GncEntry *entry, gnc_numeric price) { - if (!entry) return; - if (gnc_numeric_eq (entry->b_price, price)) return; - gncEntryBeginEdit (entry); - entry->b_price = price; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (gnc_numeric_eq (entry->b_price, price)) return; + gncEntryBeginEdit (entry); + entry->b_price = price; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetBillTaxable (GncEntry *entry, gboolean taxable) { - if (!entry) return; - if (entry->b_taxable == taxable) return; - gncEntryBeginEdit (entry); - entry->b_taxable = taxable; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->b_taxable == taxable) return; + gncEntryBeginEdit (entry); + entry->b_taxable = taxable; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetBillTaxIncluded (GncEntry *entry, gboolean taxincluded) { - if (!entry) return; - if (entry->b_taxincluded == taxincluded) return; - gncEntryBeginEdit (entry); - entry->b_taxincluded = taxincluded; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->b_taxincluded == taxincluded) return; + gncEntryBeginEdit (entry); + entry->b_taxincluded = taxincluded; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetBillTaxTable (GncEntry *entry, GncTaxTable *table) { - if (!entry) return; - if (entry->b_tax_table == table) return; - gncEntryBeginEdit (entry); - if (entry->b_tax_table) - gncTaxTableDecRef (entry->b_tax_table); - if (table) - gncTaxTableIncRef (table); - entry->b_tax_table = table; - entry->values_dirty = TRUE; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->b_tax_table == table) return; + gncEntryBeginEdit (entry); + if (entry->b_tax_table) + gncTaxTableDecRef (entry->b_tax_table); + if (table) + gncTaxTableIncRef (table); + entry->b_tax_table = table; + entry->values_dirty = TRUE; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetBillable (GncEntry *entry, gboolean billable) { - if (!entry) return; - if (entry->billable == billable) return; + if (!entry) return; + if (entry->billable == billable) return; - gncEntryBeginEdit (entry); - entry->billable = billable; - mark_entry (entry); - gncEntryCommitEdit (entry); + gncEntryBeginEdit (entry); + entry->billable = billable; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetBillTo (GncEntry *entry, GncOwner *billto) { - if (!entry || !billto) return; - if (gncOwnerEqual (&entry->billto, billto)) return; + if (!entry || !billto) return; + if (gncOwnerEqual (&entry->billto, billto)) return; - gncEntryBeginEdit (entry); - gncOwnerCopy (billto, &entry->billto); - mark_entry (entry); - gncEntryCommitEdit (entry); + gncEntryBeginEdit (entry); + gncOwnerCopy (billto, &entry->billto); + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntrySetBillPayment (GncEntry *entry, GncEntryPaymentType type) { - if (!entry) return; - if (entry->b_payment == type) return; - gncEntryBeginEdit (entry); - entry->b_payment = type; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->b_payment == type) return; + gncEntryBeginEdit (entry); + entry->b_payment = type; + mark_entry (entry); + gncEntryCommitEdit (entry); } /* Called from gncOrder when we're added to the Order */ void gncEntrySetOrder (GncEntry *entry, GncOrder *order) { - if (!entry) return; - if (entry->order == order) return; - gncEntryBeginEdit (entry); - entry->order = order; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->order == order) return; + gncEntryBeginEdit (entry); + entry->order = order; + mark_entry (entry); + gncEntryCommitEdit (entry); - /* Generate an event modifying the Order's end-owner */ -#if 0 - qof_event_gen (gncOwnerGetEndGUID (gncOrderGetOwner (order)), - QOF_EVENT_MODIFY, NULL); + /* Generate an event modifying the Order's end-owner */ +#if 0 + qof_event_gen (gncOwnerGetEndGUID (gncOrderGetOwner (order)), + QOF_EVENT_MODIFY, NULL); #endif } /* called from gncInvoice when we're added to the Invoice */ void gncEntrySetInvoice (GncEntry *entry, GncInvoice *invoice) { - if (!entry) return; - if (entry->invoice == invoice) return; - gncEntryBeginEdit (entry); - entry->invoice = invoice; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->invoice == invoice) return; + gncEntryBeginEdit (entry); + entry->invoice = invoice; + mark_entry (entry); + gncEntryCommitEdit (entry); } /* called from gncInvoice when we're added to the Invoice/Bill */ void gncEntrySetBill (GncEntry *entry, GncInvoice *bill) { - if (!entry) return; - if (entry->bill == bill) return; - gncEntryBeginEdit (entry); - entry->bill = bill; - mark_entry (entry); - gncEntryCommitEdit (entry); + if (!entry) return; + if (entry->bill == bill) return; + gncEntryBeginEdit (entry); + entry->bill = bill; + mark_entry (entry); + gncEntryCommitEdit (entry); } void gncEntryCopy (const GncEntry *src, GncEntry *dest) { - if (!src || !dest) return; + if (!src || !dest) return; - gncEntryBeginEdit (dest); - dest->date = src->date; - dest->date_entered = src->date_entered; /* ??? */ - gncEntrySetDescription (dest, src->desc); - gncEntrySetAction (dest, src->action); - gncEntrySetNotes (dest, src->notes); - dest->quantity = src->quantity; + gncEntryBeginEdit (dest); + dest->date = src->date; + dest->date_entered = src->date_entered; /* ??? */ + gncEntrySetDescription (dest, src->desc); + gncEntrySetAction (dest, src->action); + gncEntrySetNotes (dest, src->notes); + dest->quantity = src->quantity; - dest->i_account = src->i_account; - dest->i_price = src->i_price; - dest->i_taxable = src->i_taxable; - dest->i_taxincluded = src->i_taxincluded; - dest->i_discount = src->i_discount; - dest->i_disc_type = src->i_disc_type; - dest->i_disc_how = src->i_disc_how; + dest->i_account = src->i_account; + dest->i_price = src->i_price; + dest->i_taxable = src->i_taxable; + dest->i_taxincluded = src->i_taxincluded; + dest->i_discount = src->i_discount; + dest->i_disc_type = src->i_disc_type; + dest->i_disc_how = src->i_disc_how; - /* vendor bill data */ - dest->b_account = src->b_account; - dest->b_price = src->b_price; - dest->b_taxable = src->b_taxable; - dest->b_taxincluded = src->b_taxincluded; - dest->billable = src->billable; - dest->billto = src->billto; + /* vendor bill data */ + dest->b_account = src->b_account; + dest->b_price = src->b_price; + dest->b_taxable = src->b_taxable; + dest->b_taxincluded = src->b_taxincluded; + dest->billable = src->billable; + dest->billto = src->billto; - if (src->i_tax_table) - gncEntrySetInvTaxTable (dest, src->i_tax_table); + if (src->i_tax_table) + gncEntrySetInvTaxTable (dest, src->i_tax_table); - if (src->b_tax_table) - gncEntrySetBillTaxTable (dest, src->b_tax_table); + if (src->b_tax_table) + gncEntrySetBillTaxTable (dest, src->b_tax_table); - if (src->order) - gncOrderAddEntry (src->order, dest); + if (src->order) + gncOrderAddEntry (src->order, dest); - if (src->invoice) - gncInvoiceAddEntry (src->invoice, dest); + if (src->invoice) + gncInvoiceAddEntry (src->invoice, dest); - if (src->bill) - gncBillAddEntry (src->bill, dest); + if (src->bill) + gncBillAddEntry (src->bill, dest); - dest->values_dirty = TRUE; - gncEntryCommitEdit (dest); + dest->values_dirty = TRUE; + gncEntryCommitEdit (dest); } /* ================================================================ */ @@ -732,176 +736,180 @@ void gncEntryCopy (const GncEntry *src, GncEntry *dest) Timespec gncEntryGetDate (const GncEntry *entry) { - Timespec ts; ts.tv_sec = 0; ts.tv_nsec = 0; - if (!entry) return ts; - return entry->date; + Timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 0; + if (!entry) return ts; + return entry->date; } Timespec gncEntryGetDateEntered (const GncEntry *entry) { - Timespec ts; ts.tv_sec = 0; ts.tv_nsec = 0; - if (!entry) return ts; - return entry->date_entered; + Timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 0; + if (!entry) return ts; + return entry->date_entered; } const char * gncEntryGetDescription (const GncEntry *entry) { - if (!entry) return NULL; - return entry->desc; + if (!entry) return NULL; + return entry->desc; } const char * gncEntryGetAction (const GncEntry *entry) { - if (!entry) return NULL; - return entry->action; + if (!entry) return NULL; + return entry->action; } const char * gncEntryGetNotes (const GncEntry *entry) { - if (!entry) return NULL; - return entry->notes; + if (!entry) return NULL; + return entry->notes; } gnc_numeric gncEntryGetQuantity (const GncEntry *entry) { - if (!entry) return gnc_numeric_zero(); - return entry->quantity; + if (!entry) return gnc_numeric_zero(); + return entry->quantity; } /* Customer Invoice */ Account * gncEntryGetInvAccount (const GncEntry *entry) { - if (!entry) return NULL; - return entry->i_account; + if (!entry) return NULL; + return entry->i_account; } gnc_numeric gncEntryGetInvPrice (const GncEntry *entry) { - if (!entry) return gnc_numeric_zero(); - return entry->i_price; + if (!entry) return gnc_numeric_zero(); + return entry->i_price; } gnc_numeric gncEntryGetInvDiscount (const GncEntry *entry) { - if (!entry) return gnc_numeric_zero(); - return entry->i_discount; + if (!entry) return gnc_numeric_zero(); + return entry->i_discount; } GncAmountType gncEntryGetInvDiscountType (const GncEntry *entry) { - if (!entry) return 0; - return entry->i_disc_type; + if (!entry) return 0; + return entry->i_disc_type; } GncDiscountHow gncEntryGetInvDiscountHow (const GncEntry *entry) { - if (!entry) return 0; - return entry->i_disc_how; + if (!entry) return 0; + return entry->i_disc_how; } char* qofEntryGetInvDiscType (const GncEntry *entry) { - char *type_string; + char *type_string; - if (!entry) return 0; - type_string = g_strdup(gncAmountTypeToString(entry->i_disc_type)); - return type_string; + if (!entry) return 0; + type_string = g_strdup(gncAmountTypeToString(entry->i_disc_type)); + return type_string; } char* qofEntryGetInvDiscHow (const GncEntry *entry) { - char *type_string; + char *type_string; - if (!entry) return 0; - type_string = g_strdup(gncEntryDiscountHowToString(entry->i_disc_how)); - return type_string; + if (!entry) return 0; + type_string = g_strdup(gncEntryDiscountHowToString(entry->i_disc_how)); + return type_string; } gboolean gncEntryGetInvTaxable (const GncEntry *entry) { - if (!entry) return FALSE; - return entry->i_taxable; + if (!entry) return FALSE; + return entry->i_taxable; } gboolean gncEntryGetInvTaxIncluded (const GncEntry *entry) { - if (!entry) return FALSE; - return entry->i_taxincluded; + if (!entry) return FALSE; + return entry->i_taxincluded; } GncTaxTable * gncEntryGetInvTaxTable (const GncEntry *entry) { - if (!entry) return NULL; - return entry->i_tax_table; + if (!entry) return NULL; + return entry->i_tax_table; } /* vendor bills */ Account * gncEntryGetBillAccount (const GncEntry *entry) { - if (!entry) return NULL; - return entry->b_account; + if (!entry) return NULL; + return entry->b_account; } gnc_numeric gncEntryGetBillPrice (const GncEntry *entry) { - if (!entry) return gnc_numeric_zero(); - return entry->b_price; + if (!entry) return gnc_numeric_zero(); + return entry->b_price; } gboolean gncEntryGetBillTaxable (const GncEntry *entry) { - if (!entry) return FALSE; - return entry->b_taxable; + if (!entry) return FALSE; + return entry->b_taxable; } gboolean gncEntryGetBillTaxIncluded (const GncEntry *entry) { - if (!entry) return FALSE; - return entry->b_taxincluded; + if (!entry) return FALSE; + return entry->b_taxincluded; } GncTaxTable * gncEntryGetBillTaxTable (const GncEntry *entry) { - if (!entry) return NULL; - return entry->b_tax_table; + if (!entry) return NULL; + return entry->b_tax_table; } gboolean gncEntryGetBillable (const GncEntry *entry) { - if (!entry) return FALSE; - return entry->billable; + if (!entry) return FALSE; + return entry->billable; } GncOwner * gncEntryGetBillTo (GncEntry *entry) { - if (!entry) return NULL; - return &entry->billto; + if (!entry) return NULL; + return &entry->billto; } GncEntryPaymentType gncEntryGetBillPayment (const GncEntry* entry) { - if (!entry) return 0; - return entry->b_payment; + if (!entry) return 0; + return entry->b_payment; } GncInvoice * gncEntryGetInvoice (const GncEntry *entry) { - if (!entry) return NULL; - return entry->invoice; + if (!entry) return NULL; + return entry->invoice; } GncInvoice * gncEntryGetBill (const GncEntry *entry) { - if (!entry) return NULL; - return entry->bill; + if (!entry) return NULL; + return entry->bill; } GncOrder * gncEntryGetOrder (const GncEntry *entry) { - if (!entry) return NULL; - return entry->order; + if (!entry) return NULL; + return entry->order; } /* ================================================================ */ @@ -939,428 +947,462 @@ GncOrder * gncEntryGetOrder (const GncEntry *entry) * to let a consumer know how much they saved. */ void gncEntryComputeValue (gnc_numeric qty, gnc_numeric price, - const GncTaxTable *tax_table, gboolean tax_included, - gnc_numeric discount, GncAmountType discount_type, - GncDiscountHow discount_how, int SCU, - gnc_numeric *value, gnc_numeric *discount_value, - GList **tax_value) + const GncTaxTable *tax_table, gboolean tax_included, + gnc_numeric discount, GncAmountType discount_type, + GncDiscountHow discount_how, int SCU, + gnc_numeric *value, gnc_numeric *discount_value, + GList **tax_value) { - gnc_numeric aggregate; - gnc_numeric pretax; - gnc_numeric result; - gnc_numeric tax; - gnc_numeric percent = gnc_numeric_create (100, 1); - gnc_numeric tpercent = gnc_numeric_zero (); - gnc_numeric tvalue = gnc_numeric_zero (); + gnc_numeric aggregate; + gnc_numeric pretax; + gnc_numeric result; + gnc_numeric tax; + gnc_numeric percent = gnc_numeric_create (100, 1); + gnc_numeric tpercent = gnc_numeric_zero (); + gnc_numeric tvalue = gnc_numeric_zero (); - GList * entries = gncTaxTableGetEntries (tax_table); - GList * node; + GList * entries = gncTaxTableGetEntries (tax_table); + GList * node; - /* Step 1: compute the aggregate price */ + /* Step 1: compute the aggregate price */ - aggregate = gnc_numeric_mul (qty, price, GNC_DENOM_AUTO, GNC_DENOM_LCD); + aggregate = gnc_numeric_mul (qty, price, GNC_DENOM_AUTO, GNC_DENOM_LCD); - /* Step 2: compute the pre-tax aggregate */ + /* Step 2: compute the pre-tax aggregate */ - /* First, compute the aggregate tpercent and tvalue numbers */ - for (node = entries; node; node = node->next) { - GncTaxTableEntry *entry = node->data; - gnc_numeric amount = gncTaxTableEntryGetAmount (entry); + /* First, compute the aggregate tpercent and tvalue numbers */ + for (node = entries; node; node = node->next) + { + GncTaxTableEntry *entry = node->data; + gnc_numeric amount = gncTaxTableEntryGetAmount (entry); - switch (gncTaxTableEntryGetType (entry)) { - case GNC_AMT_TYPE_VALUE: - tvalue = gnc_numeric_add (tvalue, amount, GNC_DENOM_AUTO, - GNC_DENOM_LCD); - break; - case GNC_AMT_TYPE_PERCENT: - tpercent = gnc_numeric_add (tpercent, amount, GNC_DENOM_AUTO, - GNC_DENOM_LCD); - break; - default: - g_warning ("Unknown tax type: %d", gncTaxTableEntryGetType (entry)); + switch (gncTaxTableEntryGetType (entry)) + { + case GNC_AMT_TYPE_VALUE: + tvalue = gnc_numeric_add (tvalue, amount, GNC_DENOM_AUTO, + GNC_DENOM_LCD); + break; + case GNC_AMT_TYPE_PERCENT: + tpercent = gnc_numeric_add (tpercent, amount, GNC_DENOM_AUTO, + GNC_DENOM_LCD); + break; + default: + g_warning ("Unknown tax type: %d", gncTaxTableEntryGetType (entry)); + } } - } - /* now we need to convert from 5% -> .05 */ - tpercent = gnc_numeric_div (tpercent, percent, GNC_DENOM_AUTO, - GNC_DENOM_LCD); + /* now we need to convert from 5% -> .05 */ + tpercent = gnc_numeric_div (tpercent, percent, GNC_DENOM_AUTO, + GNC_DENOM_LCD); - /* Next, actually compute the pre-tax aggregate value based on the - * taxincluded flag. - */ - if (tax_table && tax_included) { - /* Back-compute the pre-tax aggregate value. - * We know that aggregate = pretax + pretax*tpercent + tvalue, so - * pretax = (aggregate-tvalue)/(1+tpercent) + /* Next, actually compute the pre-tax aggregate value based on the + * taxincluded flag. */ - pretax = gnc_numeric_sub (aggregate, tvalue, GNC_DENOM_AUTO, - GNC_DENOM_LCD); - pretax = gnc_numeric_div (pretax, - gnc_numeric_add (tpercent, - gnc_numeric_create (1, 1), - GNC_DENOM_AUTO, GNC_DENOM_LCD), - GNC_DENOM_AUTO, GNC_DENOM_LCD); - } else { - pretax = aggregate; - } - - /* Step 3: apply discount and taxes in the appropriate order */ - - /* - * There are two ways to apply discounts and taxes. In one way, you - * always compute the discount off the pretax number, and compute - * the taxes off of either the pretax value or "pretax-discount" - * value. In the other way, you always compute the tax on "pretax", - * and compute the discount on either "pretax" or "pretax+taxes". - * - * I don't know which is the "correct" way. - */ - - /* - * Type: discount tax - * PRETAX pretax pretax-discount - * SAMETIME pretax pretax - * POSTTAX pretax+tax pretax - */ - - switch (discount_how) { - case GNC_DISC_PRETAX: - case GNC_DISC_SAMETIME: - /* compute the discount from pretax */ - - if (discount_type == GNC_AMT_TYPE_PERCENT) { - discount = gnc_numeric_div (discount, percent, GNC_DENOM_AUTO, - GNC_DENOM_LCD); - discount = gnc_numeric_mul (pretax, discount, GNC_DENOM_AUTO, - GNC_DENOM_LCD); + if (tax_table && tax_included) + { + /* Back-compute the pre-tax aggregate value. + * We know that aggregate = pretax + pretax*tpercent + tvalue, so + * pretax = (aggregate-tvalue)/(1+tpercent) + */ + pretax = gnc_numeric_sub (aggregate, tvalue, GNC_DENOM_AUTO, + GNC_DENOM_LCD); + pretax = gnc_numeric_div (pretax, + gnc_numeric_add (tpercent, + gnc_numeric_create (1, 1), + GNC_DENOM_AUTO, GNC_DENOM_LCD), + GNC_DENOM_AUTO, GNC_DENOM_LCD); + } + else + { + pretax = aggregate; } - result = gnc_numeric_sub (pretax, discount, GNC_DENOM_AUTO, GNC_DENOM_LCD); + /* Step 3: apply discount and taxes in the appropriate order */ - /* Figure out when to apply the tax, pretax or pretax-discount */ - if (discount_how == GNC_DISC_PRETAX) - pretax = result; - break; + /* + * There are two ways to apply discounts and taxes. In one way, you + * always compute the discount off the pretax number, and compute + * the taxes off of either the pretax value or "pretax-discount" + * value. In the other way, you always compute the tax on "pretax", + * and compute the discount on either "pretax" or "pretax+taxes". + * + * I don't know which is the "correct" way. + */ - case GNC_DISC_POSTTAX: - /* compute discount on pretax+taxes */ + /* + * Type: discount tax + * PRETAX pretax pretax-discount + * SAMETIME pretax pretax + * POSTTAX pretax+tax pretax + */ - if (discount_type == GNC_AMT_TYPE_PERCENT) { - gnc_numeric after_tax; + switch (discount_how) + { + case GNC_DISC_PRETAX: + case GNC_DISC_SAMETIME: + /* compute the discount from pretax */ - tax = gnc_numeric_mul (pretax, tpercent, GNC_DENOM_AUTO, GNC_DENOM_LCD); - after_tax = gnc_numeric_add (pretax, tax, GNC_DENOM_AUTO, GNC_DENOM_LCD); - after_tax = gnc_numeric_add (after_tax, tvalue, GNC_DENOM_AUTO, - GNC_DENOM_LCD); - discount = gnc_numeric_div (discount, percent, GNC_DENOM_AUTO, - GNC_DENOM_LCD); - discount = gnc_numeric_mul (after_tax, discount, GNC_DENOM_AUTO, - GNC_DENOM_LCD); + if (discount_type == GNC_AMT_TYPE_PERCENT) + { + discount = gnc_numeric_div (discount, percent, GNC_DENOM_AUTO, + GNC_DENOM_LCD); + discount = gnc_numeric_mul (pretax, discount, GNC_DENOM_AUTO, + GNC_DENOM_LCD); + } + + result = gnc_numeric_sub (pretax, discount, GNC_DENOM_AUTO, GNC_DENOM_LCD); + + /* Figure out when to apply the tax, pretax or pretax-discount */ + if (discount_how == GNC_DISC_PRETAX) + pretax = result; + break; + + case GNC_DISC_POSTTAX: + /* compute discount on pretax+taxes */ + + if (discount_type == GNC_AMT_TYPE_PERCENT) + { + gnc_numeric after_tax; + + tax = gnc_numeric_mul (pretax, tpercent, GNC_DENOM_AUTO, GNC_DENOM_LCD); + after_tax = gnc_numeric_add (pretax, tax, GNC_DENOM_AUTO, GNC_DENOM_LCD); + after_tax = gnc_numeric_add (after_tax, tvalue, GNC_DENOM_AUTO, + GNC_DENOM_LCD); + discount = gnc_numeric_div (discount, percent, GNC_DENOM_AUTO, + GNC_DENOM_LCD); + discount = gnc_numeric_mul (after_tax, discount, GNC_DENOM_AUTO, + GNC_DENOM_LCD); + } + + result = gnc_numeric_sub (pretax, discount, GNC_DENOM_AUTO, GNC_DENOM_LCD); + break; + + default: + g_warning ("unknown DiscountHow value: %d", discount_how); } - result = gnc_numeric_sub (pretax, discount, GNC_DENOM_AUTO, GNC_DENOM_LCD); - break; + /* Step 4: return the requested results. */ - default: - g_warning ("unknown DiscountHow value: %d", discount_how); - } + /* result == amount merchant gets + * discount == amount of discount + * need to compute taxes (based on 'pretax') if the caller wants it. + */ - /* Step 4: return the requested results. */ - - /* result == amount merchant gets - * discount == amount of discount - * need to compute taxes (based on 'pretax') if the caller wants it. - */ - - if (discount_value != NULL) { - if (SCU) discount = gnc_numeric_convert(discount, SCU, GNC_RND_ROUND); - *discount_value = discount; - } - - if (value != NULL) { - if (SCU) result = gnc_numeric_convert(result, SCU, GNC_RND_ROUND); - *value = result; - } - - /* Now... Compute the list of tax values (if the caller wants it) */ - - if (tax_value != NULL) { - GList * taxes = NULL; - - for (node = entries; node; node = node->next) { - GncTaxTableEntry *entry = node->data; - Account *acc = gncTaxTableEntryGetAccount (entry); - gnc_numeric amount = gncTaxTableEntryGetAmount (entry); - - g_return_if_fail (acc); - - switch (gncTaxTableEntryGetType (entry)) { - case GNC_AMT_TYPE_VALUE: - if (SCU) amount = gnc_numeric_convert(amount, SCU, GNC_RND_ROUND); - taxes = gncAccountValueAdd (taxes, acc, amount); - break; - case GNC_AMT_TYPE_PERCENT: - amount = gnc_numeric_div (amount, percent, GNC_DENOM_AUTO, - GNC_DENOM_LCD); - tax = gnc_numeric_mul (pretax, amount, GNC_DENOM_AUTO, GNC_DENOM_LCD); - if (SCU) tax = gnc_numeric_convert(tax, SCU, GNC_RND_ROUND); - taxes = gncAccountValueAdd (taxes, acc, tax); - break; - default: - break; - } + if (discount_value != NULL) + { + if (SCU) discount = gnc_numeric_convert(discount, SCU, GNC_RND_ROUND); + *discount_value = discount; } - *tax_value = taxes; - } - return; + if (value != NULL) + { + if (SCU) result = gnc_numeric_convert(result, SCU, GNC_RND_ROUND); + *value = result; + } + + /* Now... Compute the list of tax values (if the caller wants it) */ + + if (tax_value != NULL) + { + GList * taxes = NULL; + + for (node = entries; node; node = node->next) + { + GncTaxTableEntry *entry = node->data; + Account *acc = gncTaxTableEntryGetAccount (entry); + gnc_numeric amount = gncTaxTableEntryGetAmount (entry); + + g_return_if_fail (acc); + + switch (gncTaxTableEntryGetType (entry)) + { + case GNC_AMT_TYPE_VALUE: + if (SCU) amount = gnc_numeric_convert(amount, SCU, GNC_RND_ROUND); + taxes = gncAccountValueAdd (taxes, acc, amount); + break; + case GNC_AMT_TYPE_PERCENT: + amount = gnc_numeric_div (amount, percent, GNC_DENOM_AUTO, + GNC_DENOM_LCD); + tax = gnc_numeric_mul (pretax, amount, GNC_DENOM_AUTO, GNC_DENOM_LCD); + if (SCU) tax = gnc_numeric_convert(tax, SCU, GNC_RND_ROUND); + taxes = gncAccountValueAdd (taxes, acc, tax); + break; + default: + break; + } + } + *tax_value = taxes; + } + + return; } static int get_entry_commodity_denom (const GncEntry *entry) { - gnc_commodity *c; - if (!entry) - return 0; - if (entry->invoice) { - c = gncInvoiceGetCurrency (entry->invoice); - if (c) - return (gnc_commodity_get_fraction (c)); - } - if (entry->bill) { - c = gncInvoiceGetCurrency (entry->bill); - if (c) - return (gnc_commodity_get_fraction (c)); - } - return 100000; + gnc_commodity *c; + if (!entry) + return 0; + if (entry->invoice) + { + c = gncInvoiceGetCurrency (entry->invoice); + if (c) + return (gnc_commodity_get_fraction (c)); + } + if (entry->bill) + { + c = gncInvoiceGetCurrency (entry->bill); + if (c) + return (gnc_commodity_get_fraction (c)); + } + return 100000; } static void gncEntryRecomputeValues (GncEntry *entry) { - int denom; + int denom; - /* See if either tax table changed since we last computed values */ - if (entry->i_tax_table) { - Timespec modtime = gncTaxTableLastModified (entry->i_tax_table); - if (timespec_cmp (&entry->i_taxtable_modtime, &modtime)) { - entry->values_dirty = TRUE; - entry->i_taxtable_modtime = modtime; + /* See if either tax table changed since we last computed values */ + if (entry->i_tax_table) + { + Timespec modtime = gncTaxTableLastModified (entry->i_tax_table); + if (timespec_cmp (&entry->i_taxtable_modtime, &modtime)) + { + entry->values_dirty = TRUE; + entry->i_taxtable_modtime = modtime; + } } - } - if (entry->b_tax_table) { - Timespec modtime = gncTaxTableLastModified (entry->b_tax_table); - if (timespec_cmp (&entry->b_taxtable_modtime, &modtime)) { - entry->values_dirty = TRUE; - entry->b_taxtable_modtime = modtime; + if (entry->b_tax_table) + { + Timespec modtime = gncTaxTableLastModified (entry->b_tax_table); + if (timespec_cmp (&entry->b_taxtable_modtime, &modtime)) + { + entry->values_dirty = TRUE; + entry->b_taxtable_modtime = modtime; + } } - } - if (!entry->values_dirty) - return; + if (!entry->values_dirty) + return; - /* Clear the last-computed tax values */ - if (entry->i_tax_values) { - gncAccountValueDestroy (entry->i_tax_values); - entry->i_tax_values = NULL; - } - if (entry->b_tax_values) { - gncAccountValueDestroy (entry->b_tax_values); - entry->b_tax_values = NULL; - } + /* Clear the last-computed tax values */ + if (entry->i_tax_values) + { + gncAccountValueDestroy (entry->i_tax_values); + entry->i_tax_values = NULL; + } + if (entry->b_tax_values) + { + gncAccountValueDestroy (entry->b_tax_values); + entry->b_tax_values = NULL; + } - /* Determine the commodity denominator */ - denom = get_entry_commodity_denom (entry); + /* Determine the commodity denominator */ + denom = get_entry_commodity_denom (entry); - /* Compute the invoice values */ - gncEntryComputeValue (entry->quantity, entry->i_price, - (entry->i_taxable ? entry->i_tax_table : NULL), - entry->i_taxincluded, - entry->i_discount, entry->i_disc_type, - entry->i_disc_how, - denom, - &(entry->i_value), &(entry->i_disc_value), - &(entry->i_tax_values)); + /* Compute the invoice values */ + gncEntryComputeValue (entry->quantity, entry->i_price, + (entry->i_taxable ? entry->i_tax_table : NULL), + entry->i_taxincluded, + entry->i_discount, entry->i_disc_type, + entry->i_disc_how, + denom, + &(entry->i_value), &(entry->i_disc_value), + &(entry->i_tax_values)); - /* Compute the bill values */ - gncEntryComputeValue (entry->quantity, entry->b_price, - (entry->b_taxable ? entry->b_tax_table : NULL), - entry->b_taxincluded, - gnc_numeric_zero(), GNC_AMT_TYPE_VALUE, GNC_DISC_PRETAX, - denom, - &(entry->b_value), NULL, &(entry->b_tax_values)); + /* Compute the bill values */ + gncEntryComputeValue (entry->quantity, entry->b_price, + (entry->b_taxable ? entry->b_tax_table : NULL), + entry->b_taxincluded, + gnc_numeric_zero(), GNC_AMT_TYPE_VALUE, GNC_DISC_PRETAX, + denom, + &(entry->b_value), NULL, &(entry->b_tax_values)); - entry->i_value_rounded = gnc_numeric_convert (entry->i_value, denom, - GNC_RND_ROUND); - entry->i_disc_value_rounded = gnc_numeric_convert (entry->i_disc_value, denom, - GNC_RND_ROUND); - entry->i_tax_value = gncAccountValueTotal (entry->i_tax_values); - entry->i_tax_value_rounded = gnc_numeric_convert (entry->i_tax_value, denom, - GNC_RND_ROUND); + entry->i_value_rounded = gnc_numeric_convert (entry->i_value, denom, + GNC_RND_ROUND); + entry->i_disc_value_rounded = gnc_numeric_convert (entry->i_disc_value, denom, + GNC_RND_ROUND); + entry->i_tax_value = gncAccountValueTotal (entry->i_tax_values); + entry->i_tax_value_rounded = gnc_numeric_convert (entry->i_tax_value, denom, + GNC_RND_ROUND); - entry->b_value_rounded = gnc_numeric_convert (entry->b_value, denom, - GNC_RND_ROUND); - entry->b_tax_value = gncAccountValueTotal (entry->b_tax_values); - entry->b_tax_value_rounded = gnc_numeric_convert (entry->b_tax_value, denom, - GNC_RND_ROUND); - entry->values_dirty = FALSE; + entry->b_value_rounded = gnc_numeric_convert (entry->b_value, denom, + GNC_RND_ROUND); + entry->b_tax_value = gncAccountValueTotal (entry->b_tax_values); + entry->b_tax_value_rounded = gnc_numeric_convert (entry->b_tax_value, denom, + GNC_RND_ROUND); + entry->values_dirty = FALSE; } void gncEntryGetValue (GncEntry *entry, gboolean is_inv, gnc_numeric *value, - gnc_numeric *discount_value, gnc_numeric *tax_value, - GList **tax_values) + gnc_numeric *discount_value, gnc_numeric *tax_value, + GList **tax_values) { - if (!entry) return; - gncEntryRecomputeValues (entry); - if (value) - *value = (is_inv ? entry->i_value : entry->b_value); - if (discount_value) - *discount_value = (is_inv ? entry->i_disc_value : gnc_numeric_zero()); - if (tax_value) - *tax_value = (is_inv ? entry->i_tax_value : entry->b_tax_value); - if (tax_values) - *tax_values = (is_inv ? entry->i_tax_values : entry->b_tax_values); + if (!entry) return; + gncEntryRecomputeValues (entry); + if (value) + *value = (is_inv ? entry->i_value : entry->b_value); + if (discount_value) + *discount_value = (is_inv ? entry->i_disc_value : gnc_numeric_zero()); + if (tax_value) + *tax_value = (is_inv ? entry->i_tax_value : entry->b_tax_value); + if (tax_values) + *tax_values = (is_inv ? entry->i_tax_values : entry->b_tax_values); } gnc_numeric gncEntryReturnValue (GncEntry *entry, gboolean is_inv) { - if (!entry) return gnc_numeric_zero(); - gncEntryRecomputeValues (entry); - return (is_inv ? entry->i_value_rounded : entry->b_value_rounded); + if (!entry) return gnc_numeric_zero(); + gncEntryRecomputeValues (entry); + return (is_inv ? entry->i_value_rounded : entry->b_value_rounded); } gnc_numeric gncEntryReturnTaxValue (GncEntry *entry, gboolean is_inv) { - if (!entry) return gnc_numeric_zero(); - gncEntryRecomputeValues (entry); - return (is_inv ? entry->i_tax_value_rounded : entry->b_tax_value_rounded); + if (!entry) return gnc_numeric_zero(); + gncEntryRecomputeValues (entry); + return (is_inv ? entry->i_tax_value_rounded : entry->b_tax_value_rounded); } AccountValueList * gncEntryReturnTaxValues (GncEntry *entry, gboolean is_inv) { - if (!entry) return NULL; - gncEntryRecomputeValues (entry); - return (is_inv ? entry->i_tax_values : entry->b_tax_values); + if (!entry) return NULL; + gncEntryRecomputeValues (entry); + return (is_inv ? entry->i_tax_values : entry->b_tax_values); } gnc_numeric gncEntryReturnDiscountValue (GncEntry *entry, gboolean is_inv) { - if (!entry) return gnc_numeric_zero(); - gncEntryRecomputeValues (entry); - return (is_inv ? entry->i_disc_value_rounded : gnc_numeric_zero()); + if (!entry) return gnc_numeric_zero(); + gncEntryRecomputeValues (entry); + return (is_inv ? entry->i_disc_value_rounded : gnc_numeric_zero()); } /* XXXX this exsitnace of this routine is just wrong */ gboolean gncEntryIsOpen (const GncEntry *entry) { - if (!entry) return FALSE; - return (qof_instance_get_editlevel(entry) > 0); + if (!entry) return FALSE; + return (qof_instance_get_editlevel(entry) > 0); } /* ================================================================ */ void gncEntryBeginEdit (GncEntry *entry) { - qof_begin_edit(&entry->inst); + qof_begin_edit(&entry->inst); } static void gncEntryOnError (QofInstance *entry, QofBackendError errcode) { - PERR("Entry QofBackend Failure: %d", errcode); - gnc_engine_signal_commit_error( errcode ); + PERR("Entry QofBackend Failure: %d", errcode); + gnc_engine_signal_commit_error( errcode ); } static void gncEntryOnDone (QofInstance *inst) {} static void entry_free (QofInstance *inst) { - GncEntry *entry = (GncEntry *)inst; - gncEntryFree (entry); + GncEntry *entry = (GncEntry *)inst; + gncEntryFree (entry); } void gncEntryCommitEdit (GncEntry *entry) { - if (!qof_commit_edit (QOF_INSTANCE(entry))) return; - qof_commit_edit_part2 (&entry->inst, gncEntryOnError, - gncEntryOnDone, entry_free); + if (!qof_commit_edit (QOF_INSTANCE(entry))) return; + qof_commit_edit_part2 (&entry->inst, gncEntryOnError, + gncEntryOnDone, entry_free); } int gncEntryCompare (const GncEntry *a, const GncEntry *b) { - int compare; + int compare; - if (a == b) return 0; - if (!a && b) return -1; - if (a && !b) return 1; + if (a == b) return 0; + if (!a && b) return -1; + if (a && !b) return 1; - compare = timespec_cmp (&(a->date), &(b->date)); - if (compare) return compare; + compare = timespec_cmp (&(a->date), &(b->date)); + if (compare) return compare; - compare = timespec_cmp (&(a->date_entered), &(b->date_entered)); - if (compare) return compare; + compare = timespec_cmp (&(a->date_entered), &(b->date_entered)); + if (compare) return compare; - compare = safe_strcmp (a->desc, b->desc); - if (compare) return compare; + compare = safe_strcmp (a->desc, b->desc); + if (compare) return compare; - compare = safe_strcmp (a->action, b->action); - if (compare) return compare; + compare = safe_strcmp (a->action, b->action); + if (compare) return compare; - return qof_instance_guid_compare(a, b); + return qof_instance_guid_compare(a, b); } /* ============================================================= */ /* Object declaration */ -static QofObject gncEntryDesc = +static QofObject gncEntryDesc = { - .interface_version = QOF_OBJECT_VERSION, - .e_type = _GNC_MOD_NAME, - .type_label = "Order/Invoice/Bill Entry", - .create = (gpointer)gncEntryCreate, - .book_begin = NULL, - .book_end = NULL, - .is_dirty = qof_collection_is_dirty, - .mark_clean = qof_collection_mark_clean, - .foreach = qof_collection_foreach, - .printable = NULL, - .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, + .interface_version = QOF_OBJECT_VERSION, + .e_type = _GNC_MOD_NAME, + .type_label = "Order/Invoice/Bill Entry", + .create = (gpointer)gncEntryCreate, + .book_begin = NULL, + .book_end = NULL, + .is_dirty = qof_collection_is_dirty, + .mark_clean = qof_collection_mark_clean, + .foreach = qof_collection_foreach, + .printable = NULL, + .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, }; gboolean gncEntryRegister (void) { - static QofParam params[] = { - { ENTRY_DATE, QOF_TYPE_DATE, (QofAccessFunc)gncEntryGetDate, (QofSetterFunc)gncEntrySetDate }, - { ENTRY_DATE_ENTERED, QOF_TYPE_DATE, (QofAccessFunc)gncEntryGetDateEntered, (QofSetterFunc)gncEntrySetDateEntered }, - { ENTRY_DESC, QOF_TYPE_STRING, (QofAccessFunc)gncEntryGetDescription, (QofSetterFunc)gncEntrySetDescription }, - { ENTRY_ACTION, QOF_TYPE_STRING, (QofAccessFunc)gncEntryGetAction, (QofSetterFunc)gncEntrySetAction }, - { ENTRY_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncEntryGetNotes, (QofSetterFunc)gncEntrySetNotes }, - { ENTRY_QTY, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEntryGetQuantity, (QofSetterFunc)gncEntrySetQuantity }, - { ENTRY_IPRICE, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEntryGetInvPrice, (QofSetterFunc)gncEntrySetInvPrice }, - { ENTRY_BPRICE, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEntryGetBillPrice, (QofSetterFunc)gncEntrySetBillPrice }, - { ENTRY_INVOICE, GNC_ID_INVOICE, (QofAccessFunc)gncEntryGetInvoice, NULL }, - { ENTRY_IACCT, GNC_ID_ACCOUNT, (QofAccessFunc)gncEntryGetInvAccount, (QofSetterFunc)gncEntrySetInvAccount }, - { ENTRY_BACCT, GNC_ID_ACCOUNT, (QofAccessFunc)gncEntryGetBillAccount, (QofSetterFunc)gncEntrySetBillAccount }, - { ENTRY_BILL, GNC_ID_INVOICE, (QofAccessFunc)gncEntryGetBill, NULL }, - { ENTRY_INV_DISC_TYPE, QOF_TYPE_STRING, (QofAccessFunc)qofEntryGetInvDiscType, - (QofSetterFunc)qofEntrySetInvDiscType }, - { ENTRY_INV_DISC_HOW, QOF_TYPE_STRING, (QofAccessFunc)qofEntryGetInvDiscHow, - (QofSetterFunc)qofEntrySetInvDiscHow }, - { ENTRY_INV_TAXABLE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEntryGetInvTaxable, - (QofSetterFunc)gncEntrySetInvTaxable }, - { ENTRY_INV_TAX_INC, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEntryGetInvTaxIncluded, - (QofSetterFunc)gncEntrySetInvTaxIncluded }, - { ENTRY_BILL_TAXABLE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEntryGetInvTaxable, - (QofSetterFunc)gncEntrySetInvTaxable }, - { ENTRY_BILL_TAX_INC, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEntryGetBillTaxIncluded, - (QofSetterFunc)gncEntrySetBillTaxIncluded }, - { ENTRY_BILLABLE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEntryGetBillable, (QofSetterFunc)gncEntrySetBillable }, - { ENTRY_BILLTO, GNC_ID_OWNER, (QofAccessFunc)gncEntryGetBillTo, (QofSetterFunc)gncEntrySetBillTo }, - { ENTRY_ORDER, GNC_ID_ORDER, (QofAccessFunc)gncEntryGetOrder, NULL }, - { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, - { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { ENTRY_DATE, QOF_TYPE_DATE, (QofAccessFunc)gncEntryGetDate, (QofSetterFunc)gncEntrySetDate }, + { ENTRY_DATE_ENTERED, QOF_TYPE_DATE, (QofAccessFunc)gncEntryGetDateEntered, (QofSetterFunc)gncEntrySetDateEntered }, + { ENTRY_DESC, QOF_TYPE_STRING, (QofAccessFunc)gncEntryGetDescription, (QofSetterFunc)gncEntrySetDescription }, + { ENTRY_ACTION, QOF_TYPE_STRING, (QofAccessFunc)gncEntryGetAction, (QofSetterFunc)gncEntrySetAction }, + { ENTRY_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncEntryGetNotes, (QofSetterFunc)gncEntrySetNotes }, + { ENTRY_QTY, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEntryGetQuantity, (QofSetterFunc)gncEntrySetQuantity }, + { ENTRY_IPRICE, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEntryGetInvPrice, (QofSetterFunc)gncEntrySetInvPrice }, + { ENTRY_BPRICE, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEntryGetBillPrice, (QofSetterFunc)gncEntrySetBillPrice }, + { ENTRY_INVOICE, GNC_ID_INVOICE, (QofAccessFunc)gncEntryGetInvoice, NULL }, + { ENTRY_IACCT, GNC_ID_ACCOUNT, (QofAccessFunc)gncEntryGetInvAccount, (QofSetterFunc)gncEntrySetInvAccount }, + { ENTRY_BACCT, GNC_ID_ACCOUNT, (QofAccessFunc)gncEntryGetBillAccount, (QofSetterFunc)gncEntrySetBillAccount }, + { ENTRY_BILL, GNC_ID_INVOICE, (QofAccessFunc)gncEntryGetBill, NULL }, + { + ENTRY_INV_DISC_TYPE, QOF_TYPE_STRING, (QofAccessFunc)qofEntryGetInvDiscType, + (QofSetterFunc)qofEntrySetInvDiscType + }, + { + ENTRY_INV_DISC_HOW, QOF_TYPE_STRING, (QofAccessFunc)qofEntryGetInvDiscHow, + (QofSetterFunc)qofEntrySetInvDiscHow + }, + { + ENTRY_INV_TAXABLE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEntryGetInvTaxable, + (QofSetterFunc)gncEntrySetInvTaxable + }, + { + ENTRY_INV_TAX_INC, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEntryGetInvTaxIncluded, + (QofSetterFunc)gncEntrySetInvTaxIncluded + }, + { + ENTRY_BILL_TAXABLE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEntryGetInvTaxable, + (QofSetterFunc)gncEntrySetInvTaxable + }, + { + ENTRY_BILL_TAX_INC, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEntryGetBillTaxIncluded, + (QofSetterFunc)gncEntrySetBillTaxIncluded + }, + { ENTRY_BILLABLE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncEntryGetBillable, (QofSetterFunc)gncEntrySetBillable }, + { ENTRY_BILLTO, GNC_ID_OWNER, (QofAccessFunc)gncEntryGetBillTo, (QofSetterFunc)gncEntrySetBillTo }, + { ENTRY_ORDER, GNC_ID_ORDER, (QofAccessFunc)gncEntryGetOrder, NULL }, + { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, + { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, + { NULL }, + }; - qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncEntryCompare, params); + qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncEntryCompare, params); - return qof_object_register (&gncEntryDesc); + return qof_object_register (&gncEntryDesc); } diff --git a/src/business/business-core/gncEntry.h b/src/business/business-core/gncEntry.h index 2973799b9c..375ea0c619 100644 --- a/src/business/business-core/gncEntry.h +++ b/src/business/business-core/gncEntry.h @@ -34,15 +34,17 @@ typedef struct _gncEntry GncEntry; typedef struct _gncEntryClass GncEntryClass; -typedef enum { - GNC_PAYMENT_CASH = 1, - GNC_PAYMENT_CARD +typedef enum +{ + GNC_PAYMENT_CASH = 1, + GNC_PAYMENT_CARD } GncEntryPaymentType; -typedef enum { - GNC_DISC_PRETAX = 1, - GNC_DISC_SAMETIME, - GNC_DISC_POSTTAX +typedef enum +{ + GNC_DISC_PRETAX = 1, + GNC_DISC_SAMETIME, + GNC_DISC_POSTTAX } GncDiscountHow; #ifdef GNUCASH_MAJOR_VERSION @@ -84,7 +86,7 @@ gboolean gncEntryDiscountStringToHow (const char *str, GncDiscountHow *how); const char * gncEntryPaymentTypeToString (GncEntryPaymentType type); gboolean gncEntryPaymentStringToType (const char *str, GncEntryPaymentType *type); -/** @name Create/Destroy Functions +/** @name Create/Destroy Functions @{ */ GncEntry *gncEntryCreate (QofBook *book); void gncEntryDestroy (GncEntry *entry); @@ -92,7 +94,7 @@ void gncEntryDestroy (GncEntry *entry); /* SET FUNCTIONS */ -/** @name Generic (shared) data +/** @name Generic (shared) data @{ */ void gncEntrySetDate (GncEntry *entry, Timespec date); void gncEntrySetDateEntered (GncEntry *entry, Timespec date); @@ -102,7 +104,7 @@ void gncEntrySetNotes (GncEntry *entry, const char *notes); void gncEntrySetQuantity (GncEntry *entry, gnc_numeric quantity); /** @} */ -/** @name Customer Invoices +/** @name Customer Invoices @{ */ void gncEntrySetInvAccount (GncEntry *entry, Account *acc); void gncEntrySetInvPrice (GncEntry *entry, gnc_numeric price); @@ -116,7 +118,7 @@ void qofEntrySetInvDiscType (GncEntry *entry, const char *type); void qofEntrySetInvDiscHow (GncEntry *entry, const char *type); /** @} */ -/** @name Vendor Bills (and Employee Expenses) +/** @name Vendor Bills (and Employee Expenses) @{ */ void gncEntrySetBillAccount (GncEntry *entry, Account *acc); void gncEntrySetBillPrice (GncEntry *entry, gnc_numeric price); @@ -127,13 +129,13 @@ void gncEntrySetBillable (GncEntry *entry, gboolean billable); void gncEntrySetBillTo (GncEntry *entry, GncOwner *billto); /** @} */ -/** @name employee-stuff +/** @name employee-stuff @{ */ void gncEntrySetBillPayment (GncEntry *entry, GncEntryPaymentType type); /** @} */ /* GET FUNCTIONS */ -/** @name Generic (shared) data +/** @name Generic (shared) data @{ */ Timespec gncEntryGetDate (const GncEntry *entry); Timespec gncEntryGetDateEntered (const GncEntry *entry); @@ -143,7 +145,7 @@ const char * gncEntryGetNotes (const GncEntry *notes); gnc_numeric gncEntryGetQuantity (const GncEntry *entry); /** @} */ -/** @name Customer Invoices +/** @name Customer Invoices @{ */ Account * gncEntryGetInvAccount (const GncEntry *entry); gnc_numeric gncEntryGetInvPrice (const GncEntry *entry); @@ -157,7 +159,7 @@ gboolean gncEntryGetInvTaxIncluded (const GncEntry *entry); GncTaxTable * gncEntryGetInvTaxTable (const GncEntry *entry); /** @} */ -/** @name Vendor Bills (and Employee Expenses) +/** @name Vendor Bills (and Employee Expenses) @{ */ Account * gncEntryGetBillAccount (const GncEntry *entry); gnc_numeric gncEntryGetBillPrice (const GncEntry *entry); @@ -172,7 +174,7 @@ GncEntryPaymentType gncEntryGetBillPayment (const GncEntry* entry); void gncEntryCopy (const GncEntry *src, GncEntry *dest); -/** @name Getting Values +/** @name Getting Values * The first three return the rounded values -- the last returns the * list of unrounded account-values. The list belongs to the entry @@ -197,16 +199,16 @@ AccountValueList * gncEntryReturnTaxValues (GncEntry *entry, gboolean is_inv); * values from these two functions are NOT rounded. */ void gncEntryGetValue (GncEntry *entry, gboolean is_inv, gnc_numeric *value, - gnc_numeric *discount, gnc_numeric *tax_value, - GList **tax_values); + gnc_numeric *discount, gnc_numeric *tax_value, + GList **tax_values); void gncEntryComputeValue (gnc_numeric qty, gnc_numeric price, - const GncTaxTable *tax_table, gboolean tax_included, - gnc_numeric discount, GncAmountType discount_type, - GncDiscountHow discount_how, int SCU, - /* return values */ - gnc_numeric *value, gnc_numeric *discount_value, - GList **tax_values); + const GncTaxTable *tax_table, gboolean tax_included, + gnc_numeric discount, GncAmountType discount_type, + GncDiscountHow discount_how, int SCU, + /* return values */ + gnc_numeric *value, gnc_numeric *discount_value, + GList **tax_values); /** @} */ @@ -215,7 +217,7 @@ GncInvoice * gncEntryGetInvoice (const GncEntry *entry); GncInvoice * gncEntryGetBill (const GncEntry *entry); /** Return a pointer to the instance gncEntry that is identified - * by the guid, and is residing in the book. Returns NULL if the + * by the guid, and is residing in the book. Returns NULL if the * instance can't be found. * Equivalent function prototype is * GncEntry * gncEntryLookup (QofBook *book, const GUID *guid); diff --git a/src/business/business-core/gncEntryP.h b/src/business/business-core/gncEntryP.h index d853edf08f..e65dd1d5a2 100644 --- a/src/business/business-core/gncEntryP.h +++ b/src/business/business-core/gncEntryP.h @@ -54,7 +54,7 @@ GncEntry * gncCloneEntry (GncEntry *from, QofBook *); * gncCloneEntry()) and placed into the book. * * We called this routine 'Obtain' instead of "Get" to distinguish - * it from the other Get routines, which work in fundamentally + * it from the other Get routines, which work in fundamentally * different ways. */ GncEntry * gncEntryObtainTwin (GncEntry *from, QofBook *book); diff --git a/src/business/business-core/gncInvoice.c b/src/business/business-core/gncInvoice.c index b737b1e26b..4b53056cc1 100644 --- a/src/business/business-core/gncInvoice.c +++ b/src/business/business-core/gncInvoice.c @@ -42,37 +42,37 @@ #include "gncInvoiceP.h" #include "gncOwnerP.h" -struct _gncInvoice +struct _gncInvoice { - QofInstance inst; - - char *id; - char *notes; - gboolean active; + QofInstance inst; - char *billing_id; - char *printname; - GncBillTerm *terms; - GList *entries; - GList *prices; - GncOwner owner; - GncOwner billto; - GncJob *job; - Timespec date_opened; - Timespec date_posted; + char *id; + char *notes; + gboolean active; - gnc_numeric to_charge_amount; + char *billing_id; + char *printname; + GncBillTerm *terms; + GList *entries; + GList *prices; + GncOwner owner; + GncOwner billto; + GncJob *job; + Timespec date_opened; + Timespec date_posted; - gnc_commodity * currency; + gnc_numeric to_charge_amount; - Account *posted_acc; - Transaction *posted_txn; - GNCLot *posted_lot; + gnc_commodity * currency; + + Account *posted_acc; + Transaction *posted_txn; + GNCLot *posted_lot; }; struct _gncInvoiceClass { - QofInstanceClass parent_class; + QofInstanceClass parent_class; }; static QofLogModule log_module = GNC_MOD_BUSINESS; @@ -96,8 +96,8 @@ static void mark_invoice (GncInvoice *invoice); static void mark_invoice (GncInvoice *invoice) { - qof_instance_set_dirty(&invoice->inst); - qof_event_gen (&invoice->inst, QOF_EVENT_MODIFY, NULL); + qof_instance_set_dirty(&invoice->inst); + qof_event_gen (&invoice->inst, QOF_EVENT_MODIFY, NULL); } QofBook * gncInvoiceGetBook(GncInvoice *x) @@ -107,9 +107,10 @@ QofBook * gncInvoiceGetBook(GncInvoice *x) /* ================================================================== */ -enum { +enum +{ PROP_0, - PROP_NOTES + PROP_NOTES }; /* GObject Initialization */ @@ -134,43 +135,45 @@ gnc_invoice_finalize(GObject* invp) static void gnc_invoice_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GncInvoice *inv; g_return_if_fail(GNC_IS_INVOICE(object)); inv = GNC_INVOICE(object); - switch (prop_id) { - case PROP_NOTES: - g_value_set_string(value, inv->notes); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NOTES: + g_value_set_string(value, inv->notes); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } static void gnc_invoice_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GncInvoice *inv; g_return_if_fail(GNC_IS_INVOICE(object)); inv = GNC_INVOICE(object); - switch (prop_id) { - case PROP_NOTES: - gncInvoiceSetNotes(inv, g_value_get_string(value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NOTES: + gncInvoiceSetNotes(inv, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } @@ -178,149 +181,149 @@ static void gnc_invoice_class_init (GncInvoiceClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - + gobject_class->dispose = gnc_invoice_dispose; gobject_class->finalize = gnc_invoice_finalize; gobject_class->set_property = gnc_invoice_set_property; gobject_class->get_property = gnc_invoice_get_property; g_object_class_install_property - (gobject_class, - PROP_NOTES, - g_param_spec_string ("notes", - "Invoice Notes", - "The invoice notes is an arbitrary string " - "assigned by the user to provide notes regarding " - "this invoice.", - NULL, - G_PARAM_READWRITE)); + (gobject_class, + PROP_NOTES, + g_param_spec_string ("notes", + "Invoice Notes", + "The invoice notes is an arbitrary string " + "assigned by the user to provide notes regarding " + "this invoice.", + NULL, + G_PARAM_READWRITE)); } /* Create/Destroy Functions */ GncInvoice *gncInvoiceCreate (QofBook *book) { - GncInvoice *invoice; + GncInvoice *invoice; - if (!book) return NULL; + if (!book) return NULL; - invoice = g_object_new (GNC_TYPE_INVOICE, NULL); - qof_instance_init_data (&invoice->inst, _GNC_MOD_NAME, book); + invoice = g_object_new (GNC_TYPE_INVOICE, NULL); + qof_instance_init_data (&invoice->inst, _GNC_MOD_NAME, book); - invoice->id = CACHE_INSERT (""); - invoice->notes = CACHE_INSERT (""); - invoice->billing_id = CACHE_INSERT (""); + invoice->id = CACHE_INSERT (""); + invoice->notes = CACHE_INSERT (""); + invoice->billing_id = CACHE_INSERT (""); - invoice->billto.type = GNC_OWNER_CUSTOMER; - invoice->active = TRUE; + invoice->billto.type = GNC_OWNER_CUSTOMER; + invoice->active = TRUE; - invoice->to_charge_amount = gnc_numeric_zero(); + invoice->to_charge_amount = gnc_numeric_zero(); - qof_event_gen (&invoice->inst, QOF_EVENT_CREATE, NULL); + qof_event_gen (&invoice->inst, QOF_EVENT_CREATE, NULL); - return invoice; + return invoice; } void gncInvoiceDestroy (GncInvoice *invoice) { - if (!invoice) return; - qof_instance_set_destroying(invoice, TRUE); - gncInvoiceCommitEdit (invoice); + if (!invoice) return; + qof_instance_set_destroying(invoice, TRUE); + gncInvoiceCommitEdit (invoice); } static void gncInvoiceFree (GncInvoice *invoice) { - if (!invoice) return; + if (!invoice) return; - qof_event_gen (&invoice->inst, QOF_EVENT_DESTROY, NULL); + qof_event_gen (&invoice->inst, QOF_EVENT_DESTROY, NULL); - CACHE_REMOVE (invoice->id); - CACHE_REMOVE (invoice->notes); - CACHE_REMOVE (invoice->billing_id); - g_list_free (invoice->entries); - g_list_free (invoice->prices); + CACHE_REMOVE (invoice->id); + CACHE_REMOVE (invoice->notes); + CACHE_REMOVE (invoice->billing_id); + g_list_free (invoice->entries); + g_list_free (invoice->prices); - if (invoice->printname) g_free (invoice->printname); + if (invoice->printname) g_free (invoice->printname); - if (invoice->terms) - gncBillTermDecRef (invoice->terms); + if (invoice->terms) + gncBillTermDecRef (invoice->terms); - /* qof_instance_release (&invoice->inst); */ - g_object_unref (invoice); + /* qof_instance_release (&invoice->inst); */ + g_object_unref (invoice); } GncInvoice * gncCloneInvoice (GncInvoice *from, QofBook *book) { - GList *node; - GncInvoice *invoice; + GList *node; + GncInvoice *invoice; - if (!book) return NULL; + if (!book) return NULL; - invoice = g_object_new (GNC_TYPE_INVOICE, NULL); - qof_instance_init_data (&invoice->inst, _GNC_MOD_NAME, book); + invoice = g_object_new (GNC_TYPE_INVOICE, NULL); + qof_instance_init_data (&invoice->inst, _GNC_MOD_NAME, book); - invoice->id = CACHE_INSERT (from->id); - invoice->notes = CACHE_INSERT (from->notes); - invoice->billing_id = CACHE_INSERT (from->billing_id); - invoice->active = from->active; + invoice->id = CACHE_INSERT (from->id); + invoice->notes = CACHE_INSERT (from->notes); + invoice->billing_id = CACHE_INSERT (from->billing_id); + invoice->active = from->active; - invoice->billto = gncCloneOwner (&from->billto, book); - invoice->owner = gncCloneOwner (&from->owner, book); - invoice->job = (GncJob*)gncJobObtainTwin (from->job, book); - invoice->terms = gncBillTermObtainTwin (from->terms, book); - gncBillTermIncRef (invoice->terms); + invoice->billto = gncCloneOwner (&from->billto, book); + invoice->owner = gncCloneOwner (&from->owner, book); + invoice->job = (GncJob*)gncJobObtainTwin (from->job, book); + invoice->terms = gncBillTermObtainTwin (from->terms, book); + gncBillTermIncRef (invoice->terms); - invoice->to_charge_amount = from->to_charge_amount; - invoice->printname = NULL; /* that's right, NULL. See below. */ - invoice->date_opened = from->date_opened; - invoice->date_posted = from->date_posted; + invoice->to_charge_amount = from->to_charge_amount; + invoice->printname = NULL; /* that's right, NULL. See below. */ + invoice->date_opened = from->date_opened; + invoice->date_posted = from->date_posted; - invoice->currency = gnc_commodity_obtain_twin (from->currency, book); + invoice->currency = gnc_commodity_obtain_twin (from->currency, book); - invoice->entries = NULL; - for (node = g_list_last(from->entries); node; node=node->next) - { - GncEntry *entry = node->data; - entry = gncEntryObtainTwin (entry, book); - invoice->entries = g_list_prepend (invoice->entries, entry); - } + invoice->entries = NULL; + for (node = g_list_last(from->entries); node; node = node->next) + { + GncEntry *entry = node->data; + entry = gncEntryObtainTwin (entry, book); + invoice->entries = g_list_prepend (invoice->entries, entry); + } - invoice->prices = NULL; - for (node = g_list_last(from->prices); node; node=node->next) - { - GNCPrice *price = node->data; - price = gnc_price_clone(price, book); - invoice->prices = g_list_prepend (invoice->prices, price); - } + invoice->prices = NULL; + for (node = g_list_last(from->prices); node; node = node->next) + { + GNCPrice *price = node->data; + price = gnc_price_clone(price, book); + invoice->prices = g_list_prepend (invoice->prices, price); + } - /* XXX should probably be obtain-twin not lookup-twin */ - invoice->posted_acc = - GNC_ACCOUNT(qof_instance_lookup_twin(QOF_INSTANCE(from->posted_acc), book)); + /* XXX should probably be obtain-twin not lookup-twin */ + invoice->posted_acc = + GNC_ACCOUNT(qof_instance_lookup_twin(QOF_INSTANCE(from->posted_acc), book)); #if 0 -XXX not done */ - Transaction * posted_txn; - GNCLot * posted_lot; + XXX not done * / + Transaction * posted_txn; + GNCLot * posted_lot; #endif - qof_event_gen (&invoice->inst, QOF_EVENT_CREATE, NULL); + qof_event_gen (&invoice->inst, QOF_EVENT_CREATE, NULL); - return invoice; + return invoice; } GncInvoice * gncInvoiceObtainTwin (GncInvoice *from, QofBook *book) { - GncInvoice *invoice; - if (!book) return NULL; + GncInvoice *invoice; + if (!book) return NULL; - invoice = (GncInvoice *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); - if (!invoice) - { - invoice = gncCloneInvoice (from, book); - } + invoice = (GncInvoice *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); + if (!invoice) + { + invoice = gncCloneInvoice (from, book); + } - return invoice; + return invoice; } /* ================================================================== */ @@ -328,257 +331,263 @@ gncInvoiceObtainTwin (GncInvoice *from, QofBook *book) void gncInvoiceSetID (GncInvoice *invoice, const char *id) { - if (!invoice || !id) return; - SET_STR (invoice, invoice->id, id); - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice || !id) return; + SET_STR (invoice, invoice->id, id); + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetOwner (GncInvoice *invoice, GncOwner *owner) { - if (!invoice || !owner) return; - if (gncOwnerEqual (&invoice->owner, owner)) return; - gncInvoiceBeginEdit (invoice); - gncOwnerCopy (owner, &invoice->owner); - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice || !owner) return; + if (gncOwnerEqual (&invoice->owner, owner)) return; + gncInvoiceBeginEdit (invoice); + gncOwnerCopy (owner, &invoice->owner); + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } static void qofInvoiceSetOwner (GncInvoice *invoice, QofInstance *ent) { - if(!invoice || !ent) { return; } - gncInvoiceBeginEdit (invoice); - qofOwnerSetEntity(&invoice->owner, ent); - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice || !ent) + { + return; + } + gncInvoiceBeginEdit (invoice); + qofOwnerSetEntity(&invoice->owner, ent); + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } static void qofInvoiceSetBillTo (GncInvoice *invoice, QofInstance *ent) { - if(!invoice || !ent) { return; } - gncInvoiceBeginEdit (invoice); - qofOwnerSetEntity(&invoice->billto, ent); - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice || !ent) + { + return; + } + gncInvoiceBeginEdit (invoice); + qofOwnerSetEntity(&invoice->billto, ent); + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetDateOpened (GncInvoice *invoice, Timespec date) { - if (!invoice) return; - if (timespec_equal (&invoice->date_opened, &date)) return; - gncInvoiceBeginEdit (invoice); - invoice->date_opened = date; - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice) return; + if (timespec_equal (&invoice->date_opened, &date)) return; + gncInvoiceBeginEdit (invoice); + invoice->date_opened = date; + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetDatePosted (GncInvoice *invoice, Timespec date) { - if (!invoice) return; - if (timespec_equal (&invoice->date_posted, &date)) return; - gncInvoiceBeginEdit (invoice); - invoice->date_posted = date; - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice) return; + if (timespec_equal (&invoice->date_posted, &date)) return; + gncInvoiceBeginEdit (invoice); + invoice->date_posted = date; + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetTerms (GncInvoice *invoice, GncBillTerm *terms) { - if (!invoice) return; - if (invoice->terms == terms) return; - gncInvoiceBeginEdit (invoice); - if (invoice->terms) - gncBillTermDecRef (invoice->terms); - invoice->terms = terms; - if (invoice->terms) - gncBillTermIncRef (invoice->terms); - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice) return; + if (invoice->terms == terms) return; + gncInvoiceBeginEdit (invoice); + if (invoice->terms) + gncBillTermDecRef (invoice->terms); + invoice->terms = terms; + if (invoice->terms) + gncBillTermIncRef (invoice->terms); + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetBillingID (GncInvoice *invoice, const char *billing_id) { - if (!invoice) return; - SET_STR (invoice, invoice->billing_id, billing_id); - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice) return; + SET_STR (invoice, invoice->billing_id, billing_id); + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetNotes (GncInvoice *invoice, const char *notes) { - if (!invoice || !notes) return; - SET_STR (invoice, invoice->notes, notes); - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice || !notes) return; + SET_STR (invoice, invoice->notes, notes); + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetActive (GncInvoice *invoice, gboolean active) { - if (!invoice) return; - if (invoice->active == active) return; - gncInvoiceBeginEdit (invoice); - invoice->active = active; - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice) return; + if (invoice->active == active) return; + gncInvoiceBeginEdit (invoice); + invoice->active = active; + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetCurrency (GncInvoice *invoice, gnc_commodity *currency) { - if (!invoice || !currency) return; - if (invoice->currency && - gnc_commodity_equal (invoice->currency, currency)) - return; - gncInvoiceBeginEdit (invoice); - invoice->currency = currency; - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice || !currency) return; + if (invoice->currency && + gnc_commodity_equal (invoice->currency, currency)) + return; + gncInvoiceBeginEdit (invoice); + invoice->currency = currency; + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetBillTo (GncInvoice *invoice, GncOwner *billto) { - if (!invoice || !billto) return; - if (gncOwnerEqual (&invoice->billto, billto)) return; + if (!invoice || !billto) return; + if (gncOwnerEqual (&invoice->billto, billto)) return; - gncInvoiceBeginEdit (invoice); - gncOwnerCopy (billto, &invoice->billto); - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + gncInvoiceBeginEdit (invoice); + gncOwnerCopy (billto, &invoice->billto); + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetToChargeAmount (GncInvoice *invoice, gnc_numeric amount) { - if (!invoice) return; - if (gnc_numeric_equal (invoice->to_charge_amount, amount)) return; - gncInvoiceBeginEdit (invoice); - invoice->to_charge_amount = amount; - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + if (!invoice) return; + if (gnc_numeric_equal (invoice->to_charge_amount, amount)) return; + gncInvoiceBeginEdit (invoice); + invoice->to_charge_amount = amount; + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetPostedTxn (GncInvoice *invoice, Transaction *txn) { - if (!invoice) return; - g_return_if_fail (invoice->posted_txn == NULL); + if (!invoice) return; + g_return_if_fail (invoice->posted_txn == NULL); - gncInvoiceBeginEdit (invoice); - invoice->posted_txn = txn; - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + gncInvoiceBeginEdit (invoice); + invoice->posted_txn = txn; + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetPostedLot (GncInvoice *invoice, GNCLot *lot) { - if (!invoice) return; - g_return_if_fail (invoice->posted_lot == NULL); + if (!invoice) return; + g_return_if_fail (invoice->posted_lot == NULL); - gncInvoiceBeginEdit (invoice); - invoice->posted_lot = lot; - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + gncInvoiceBeginEdit (invoice); + invoice->posted_lot = lot; + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceSetPostedAcc (GncInvoice *invoice, Account *acc) { - if (!invoice) return; - g_return_if_fail (invoice->posted_acc == NULL); + if (!invoice) return; + g_return_if_fail (invoice->posted_acc == NULL); - gncInvoiceBeginEdit (invoice); - invoice->posted_acc = acc; - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + gncInvoiceBeginEdit (invoice); + invoice->posted_acc = acc; + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); } void gncInvoiceAddEntry (GncInvoice *invoice, GncEntry *entry) { - GncInvoice *old; + GncInvoice *old; - if (!invoice || !entry) return; + if (!invoice || !entry) return; - old = gncEntryGetInvoice (entry); - if (old == invoice) return; /* I already own this one */ - if (old) gncInvoiceRemoveEntry (old, entry); + old = gncEntryGetInvoice (entry); + if (old == invoice) return; /* I already own this one */ + if (old) gncInvoiceRemoveEntry (old, entry); - gncEntrySetInvoice (entry, invoice); - invoice->entries = g_list_insert_sorted (invoice->entries, entry, - (GCompareFunc)gncEntryCompare); - mark_invoice (invoice); + gncEntrySetInvoice (entry, invoice); + invoice->entries = g_list_insert_sorted (invoice->entries, entry, + (GCompareFunc)gncEntryCompare); + mark_invoice (invoice); } void gncInvoiceRemoveEntry (GncInvoice *invoice, GncEntry *entry) { - if (!invoice || !entry) return; + if (!invoice || !entry) return; - gncEntrySetInvoice (entry, NULL); - invoice->entries = g_list_remove (invoice->entries, entry); - mark_invoice (invoice); + gncEntrySetInvoice (entry, NULL); + invoice->entries = g_list_remove (invoice->entries, entry); + mark_invoice (invoice); } void gncInvoiceAddPrice (GncInvoice *invoice, GNCPrice *price) { - if (!invoice || !price) return; + if (!invoice || !price) return; - invoice->prices = g_list_prepend(invoice->prices, price); - mark_invoice (invoice); + invoice->prices = g_list_prepend(invoice->prices, price); + mark_invoice (invoice); } void gncInvoiceRemovePrice (GncInvoice *invoice, GNCPrice *price) { - if (!invoice || !price) return; + if (!invoice || !price) return; - invoice->prices = g_list_remove (invoice->prices, price); - mark_invoice (invoice); + invoice->prices = g_list_remove (invoice->prices, price); + mark_invoice (invoice); } void gncBillAddEntry (GncInvoice *bill, GncEntry *entry) { - GncInvoice *old; + GncInvoice *old; - if (!bill || !entry) return; + if (!bill || !entry) return; - old = gncEntryGetBill (entry); - if (old == bill) return; /* I already own this one */ - if (old) gncBillRemoveEntry (old, entry); + old = gncEntryGetBill (entry); + if (old == bill) return; /* I already own this one */ + if (old) gncBillRemoveEntry (old, entry); - gncEntrySetBill (entry, bill); - bill->entries = g_list_insert_sorted (bill->entries, entry, - (GCompareFunc)gncEntryCompare); - mark_invoice (bill); + gncEntrySetBill (entry, bill); + bill->entries = g_list_insert_sorted (bill->entries, entry, + (GCompareFunc)gncEntryCompare); + mark_invoice (bill); } void gncBillRemoveEntry (GncInvoice *bill, GncEntry *entry) { - if (!bill || !entry) return; + if (!bill || !entry) return; - gncEntrySetBill (entry, NULL); - bill->entries = g_list_remove (bill->entries, entry); - mark_invoice (bill); + gncEntrySetBill (entry, NULL); + bill->entries = g_list_remove (bill->entries, entry); + mark_invoice (bill); } void gncBillAddPrice (GncInvoice *bill, GNCPrice *price) { - if (!bill || !price) return; + if (!bill || !price) return; - bill->prices = g_list_prepend(bill->prices, price); - mark_invoice (bill); + bill->prices = g_list_prepend(bill->prices, price); + mark_invoice (bill); } void gncBillRemovePrice (GncInvoice *bill, GNCPrice *price) { - if (!bill || !price) return; + if (!bill || !price) return; - bill->prices = g_list_remove (bill->prices, price); - mark_invoice (bill); + bill->prices = g_list_remove (bill->prices, price); + mark_invoice (bill); } void gncInvoiceSortEntries (GncInvoice *invoice) { - if (!invoice) return; - invoice->entries = g_list_sort(invoice->entries, - (GCompareFunc)gncEntryCompare); - mark_invoice(invoice); + if (!invoice) return; + invoice->entries = g_list_sort(invoice->entries, + (GCompareFunc)gncEntryCompare); + mark_invoice(invoice); } /* ================================================================== */ @@ -586,881 +595,934 @@ void gncInvoiceSortEntries (GncInvoice *invoice) const char * gncInvoiceGetID (const GncInvoice *invoice) { - if (!invoice) return NULL; - return invoice->id; + if (!invoice) return NULL; + return invoice->id; } GncOwner * gncInvoiceGetOwner (GncInvoice *invoice) { - if (!invoice) return NULL; - return &invoice->owner; + if (!invoice) return NULL; + return &invoice->owner; } static QofInstance* qofInvoiceGetOwner (GncInvoice *invoice) { - GncOwner *owner; + GncOwner *owner; - if(!invoice) { return NULL; } - owner = &invoice->owner; - return QOF_INSTANCE(owner); + if (!invoice) + { + return NULL; + } + owner = &invoice->owner; + return QOF_INSTANCE(owner); } static QofInstance* qofInvoiceGetBillTo (GncInvoice *invoice) { - GncOwner *billto; + GncOwner *billto; - if(!invoice) { return NULL; } - billto = &invoice->billto; - return QOF_INSTANCE(billto); + if (!invoice) + { + return NULL; + } + billto = &invoice->billto; + return QOF_INSTANCE(billto); } Timespec gncInvoiceGetDateOpened (const GncInvoice *invoice) { - Timespec ts; ts.tv_sec = 0; ts.tv_nsec = 0; - if (!invoice) return ts; - return invoice->date_opened; + Timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 0; + if (!invoice) return ts; + return invoice->date_opened; } Timespec gncInvoiceGetDatePosted (const GncInvoice *invoice) { - Timespec ts; ts.tv_sec = 0; ts.tv_nsec = 0; - if (!invoice) return ts; - return invoice->date_posted; + Timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 0; + if (!invoice) return ts; + return invoice->date_posted; } Timespec gncInvoiceGetDateDue (const GncInvoice *invoice) { - Transaction *txn; - Timespec ts; ts.tv_sec = 0; ts.tv_nsec = 0; - if (!invoice) return ts; - txn = gncInvoiceGetPostedTxn (invoice); - if (!txn) return ts; - return xaccTransRetDateDueTS (txn); + Transaction *txn; + Timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 0; + if (!invoice) return ts; + txn = gncInvoiceGetPostedTxn (invoice); + if (!txn) return ts; + return xaccTransRetDateDueTS (txn); } GncBillTerm * gncInvoiceGetTerms (const GncInvoice *invoice) { - if (!invoice) return NULL; - return invoice->terms; + if (!invoice) return NULL; + return invoice->terms; } const char * gncInvoiceGetBillingID (const GncInvoice *invoice) { - if (!invoice) return NULL; - return invoice->billing_id; + if (!invoice) return NULL; + return invoice->billing_id; } const char * gncInvoiceGetNotes (const GncInvoice *invoice) { - if (!invoice) return NULL; - return invoice->notes; + if (!invoice) return NULL; + return invoice->notes; } GncOwnerType gncInvoiceGetOwnerType (GncInvoice *invoice) { - GncOwner *owner; - g_return_val_if_fail (invoice, GNC_OWNER_NONE); + GncOwner *owner; + g_return_val_if_fail (invoice, GNC_OWNER_NONE); - owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (invoice)); - return (gncOwnerGetType (owner)); + owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (invoice)); + return (gncOwnerGetType (owner)); } static gnc_numeric gncInvoiceGetTotalInternal (GncInvoice *invoice, gboolean use_value, - gboolean use_tax, - gboolean use_payment_type, GncEntryPaymentType type) + gboolean use_tax, + gboolean use_payment_type, GncEntryPaymentType type) { - GList *node; - gnc_numeric total = gnc_numeric_zero(); - gboolean reverse; + GList *node; + gnc_numeric total = gnc_numeric_zero(); + gboolean reverse; - g_return_val_if_fail (invoice, total); + g_return_val_if_fail (invoice, total); - reverse = (gncInvoiceGetOwnerType (invoice) == GNC_OWNER_CUSTOMER); + reverse = (gncInvoiceGetOwnerType (invoice) == GNC_OWNER_CUSTOMER); - for (node = gncInvoiceGetEntries(invoice); node; node = node->next) { - GncEntry *entry = node->data; - gnc_numeric value, tax; + for (node = gncInvoiceGetEntries(invoice); node; node = node->next) + { + GncEntry *entry = node->data; + gnc_numeric value, tax; - if (use_payment_type && gncEntryGetBillPayment (entry) != type) - continue; + if (use_payment_type && gncEntryGetBillPayment (entry) != type) + continue; - gncEntryGetValue (entry, reverse, &value, NULL, &tax, NULL); - - if (gnc_numeric_check (value) == GNC_ERROR_OK) { - if (use_value) - total = gnc_numeric_add (total, value, GNC_DENOM_AUTO, GNC_DENOM_LCD); - } else - g_warning ("bad value in our entry"); + gncEntryGetValue (entry, reverse, &value, NULL, &tax, NULL); - if (gnc_numeric_check (tax) == GNC_ERROR_OK) { - if (use_tax) - total = gnc_numeric_add (total, tax, GNC_DENOM_AUTO, GNC_DENOM_LCD); - } else - g_warning ("bad tax-value in our entry"); - } - return total; + if (gnc_numeric_check (value) == GNC_ERROR_OK) + { + if (use_value) + total = gnc_numeric_add (total, value, GNC_DENOM_AUTO, GNC_DENOM_LCD); + } + else + g_warning ("bad value in our entry"); + + if (gnc_numeric_check (tax) == GNC_ERROR_OK) + { + if (use_tax) + total = gnc_numeric_add (total, tax, GNC_DENOM_AUTO, GNC_DENOM_LCD); + } + else + g_warning ("bad tax-value in our entry"); + } + return total; } gnc_numeric gncInvoiceGetTotal (GncInvoice *invoice) { - if (!invoice) return gnc_numeric_zero(); - return gncInvoiceGetTotalInternal(invoice, TRUE, TRUE, FALSE, 0); + if (!invoice) return gnc_numeric_zero(); + return gncInvoiceGetTotalInternal(invoice, TRUE, TRUE, FALSE, 0); } gnc_numeric gncInvoiceGetTotalSubtotal (GncInvoice *invoice) { - if (!invoice) return gnc_numeric_zero(); - return gncInvoiceGetTotalInternal(invoice, TRUE, FALSE, FALSE, 0); + if (!invoice) return gnc_numeric_zero(); + return gncInvoiceGetTotalInternal(invoice, TRUE, FALSE, FALSE, 0); } gnc_numeric gncInvoiceGetTotalTax (GncInvoice *invoice) { - if (!invoice) return gnc_numeric_zero(); - return gncInvoiceGetTotalInternal(invoice, FALSE, TRUE, FALSE, 0); + if (!invoice) return gnc_numeric_zero(); + return gncInvoiceGetTotalInternal(invoice, FALSE, TRUE, FALSE, 0); } gnc_numeric gncInvoiceGetTotalOf (GncInvoice *invoice, GncEntryPaymentType type) { - if (!invoice) return gnc_numeric_zero(); - return gncInvoiceGetTotalInternal(invoice, TRUE, TRUE, TRUE, type); + if (!invoice) return gnc_numeric_zero(); + return gncInvoiceGetTotalInternal(invoice, TRUE, TRUE, TRUE, type); } const char * gncInvoiceGetType (GncInvoice *invoice) { - if (!invoice) return NULL; + if (!invoice) return NULL; - switch (gncInvoiceGetOwnerType (invoice)) { - case GNC_OWNER_CUSTOMER: - return _("Invoice"); - case GNC_OWNER_VENDOR: - return _("Bill"); - case GNC_OWNER_EMPLOYEE: - return _("Expense"); - default: - return NULL; - } + switch (gncInvoiceGetOwnerType (invoice)) + { + case GNC_OWNER_CUSTOMER: + return _("Invoice"); + case GNC_OWNER_VENDOR: + return _("Bill"); + case GNC_OWNER_EMPLOYEE: + return _("Expense"); + default: + return NULL; + } } gnc_commodity * gncInvoiceGetCurrency (const GncInvoice *invoice) { - if (!invoice) return NULL; - return invoice->currency; + if (!invoice) return NULL; + return invoice->currency; } GncOwner * gncInvoiceGetBillTo (GncInvoice *invoice) { - if (!invoice) return NULL; - return &invoice->billto; + if (!invoice) return NULL; + return &invoice->billto; } GNCLot * gncInvoiceGetPostedLot (const GncInvoice *invoice) { - if (!invoice) return NULL; - return invoice->posted_lot; + if (!invoice) return NULL; + return invoice->posted_lot; } Transaction * gncInvoiceGetPostedTxn (const GncInvoice *invoice) { - if (!invoice) return NULL; - return invoice->posted_txn; + if (!invoice) return NULL; + return invoice->posted_txn; } Account * gncInvoiceGetPostedAcc (const GncInvoice *invoice) { - if (!invoice) return NULL; - return invoice->posted_acc; + if (!invoice) return NULL; + return invoice->posted_acc; } gboolean gncInvoiceGetActive (const GncInvoice *invoice) { - if (!invoice) return FALSE; - return invoice->active; + if (!invoice) return FALSE; + return invoice->active; } gnc_numeric gncInvoiceGetToChargeAmount (const GncInvoice *invoice) { - if (!invoice) return gnc_numeric_zero(); - return invoice->to_charge_amount; + if (!invoice) return gnc_numeric_zero(); + return invoice->to_charge_amount; } EntryList * gncInvoiceGetEntries (GncInvoice *invoice) { - if (!invoice) return NULL; - return invoice->entries; + if (!invoice) return NULL; + return invoice->entries; } GList * gncInvoiceGetPrices(GncInvoice *invoice) { - if (!invoice) return NULL; - return invoice->prices; + if (!invoice) return NULL; + return invoice->prices; } GNCPrice * gncInvoiceGetPrice(GncInvoice *invoice, gnc_commodity *commodity) { - GList *node=g_list_first(invoice->prices); + GList *node = g_list_first(invoice->prices); - while (node != NULL) - { - GNCPrice *curr = (GNCPrice*)node->data; + while (node != NULL) + { + GNCPrice *curr = (GNCPrice*)node->data; - if (gnc_commodity_equal(commodity, gnc_price_get_commodity(curr))) - return curr; + if (gnc_commodity_equal(commodity, gnc_price_get_commodity(curr))) + return curr; - node = g_list_next(node); - } + node = g_list_next(node); + } - return NULL; + return NULL; } static QofCollection* qofInvoiceGetEntries (GncInvoice *invoice) { - QofCollection *entry_coll; - GList *list; - QofInstance *entry; + QofCollection *entry_coll; + GList *list; + QofInstance *entry; - entry_coll = qof_collection_new(GNC_ID_ENTRY); - for(list = gncInvoiceGetEntries(invoice); list != NULL; list = list->next) - { - entry = QOF_INSTANCE(list->data); - qof_collection_add_entity(entry_coll, entry); - } - return entry_coll; + entry_coll = qof_collection_new(GNC_ID_ENTRY); + for (list = gncInvoiceGetEntries(invoice); list != NULL; list = list->next) + { + entry = QOF_INSTANCE(list->data); + qof_collection_add_entity(entry_coll, entry); + } + return entry_coll; } static void qofInvoiceEntryCB (QofInstance *ent, gpointer user_data) { - GncInvoice *invoice; + GncInvoice *invoice; - invoice = (GncInvoice*)user_data; - if(!invoice || !ent) { return; } - switch (gncInvoiceGetOwnerType (invoice)) { - case GNC_OWNER_VENDOR: { - gncBillAddEntry (invoice, (GncEntry*) ent); - break; - } - default : { - gncInvoiceAddEntry(invoice, (GncEntry*)ent); - break; - } - } + invoice = (GncInvoice*)user_data; + if (!invoice || !ent) + { + return; + } + switch (gncInvoiceGetOwnerType (invoice)) + { + case GNC_OWNER_VENDOR: + { + gncBillAddEntry (invoice, (GncEntry*) ent); + break; + } + default : + { + gncInvoiceAddEntry(invoice, (GncEntry*)ent); + break; + } + } } -static void +static void qofInvoiceSetEntries(GncInvoice *invoice, QofCollection *entry_coll) { - if(!entry_coll) { return; } - if(0 == safe_strcmp(qof_collection_get_type(entry_coll), GNC_ID_ENTRY)) - { - qof_collection_foreach(entry_coll, qofInvoiceEntryCB, invoice); - } + if (!entry_coll) + { + return; + } + if (0 == safe_strcmp(qof_collection_get_type(entry_coll), GNC_ID_ENTRY)) + { + qof_collection_foreach(entry_coll, qofInvoiceEntryCB, invoice); + } } static GncJob* qofInvoiceGetJob (const GncInvoice *invoice) { - if(!invoice) { return NULL; } - return invoice->job; + if (!invoice) + { + return NULL; + } + return invoice->job; } -static void +static void qofInvoiceSetJob (GncInvoice *invoice, GncJob *job) { - if(!invoice) { return; } - invoice->job = job; + if (!invoice) + { + return; + } + invoice->job = job; } static void gncInvoiceDetachFromLot (GNCLot *lot) { - KvpFrame *kvp; + KvpFrame *kvp; - if (!lot) return; + if (!lot) return; - kvp = gnc_lot_get_slots (lot); - kvp_frame_set_slot_path (kvp, NULL, GNC_INVOICE_ID, GNC_INVOICE_GUID, NULL); + kvp = gnc_lot_get_slots (lot); + kvp_frame_set_slot_path (kvp, NULL, GNC_INVOICE_ID, GNC_INVOICE_GUID, NULL); } static void gncInvoiceAttachToLot (GncInvoice *invoice, GNCLot *lot) { - KvpFrame *kvp; - KvpValue *value; - - if (!invoice || !lot) - return; + KvpFrame *kvp; + KvpValue *value; - if (invoice->posted_lot) return; /* Cannot reset invoice's lot */ + if (!invoice || !lot) + return; - kvp = gnc_lot_get_slots (lot); - value = kvp_value_new_guid (qof_instance_get_guid (QOF_INSTANCE(invoice))); - kvp_frame_set_slot_path (kvp, value, GNC_INVOICE_ID, GNC_INVOICE_GUID, NULL); - kvp_value_delete (value); - gncInvoiceSetPostedLot (invoice, lot); + if (invoice->posted_lot) return; /* Cannot reset invoice's lot */ + + kvp = gnc_lot_get_slots (lot); + value = kvp_value_new_guid (qof_instance_get_guid (QOF_INSTANCE(invoice))); + kvp_frame_set_slot_path (kvp, value, GNC_INVOICE_ID, GNC_INVOICE_GUID, NULL); + kvp_value_delete (value); + gncInvoiceSetPostedLot (invoice, lot); } GncInvoice * gncInvoiceGetInvoiceFromLot (GNCLot *lot) { - KvpFrame *kvp; - KvpValue *value; - GUID *guid; - QofBook *book; + KvpFrame *kvp; + KvpValue *value; + GUID *guid; + QofBook *book; - if (!lot) return NULL; + if (!lot) return NULL; - book = gnc_lot_get_book (lot); - kvp = gnc_lot_get_slots (lot); - value = kvp_frame_get_slot_path (kvp, GNC_INVOICE_ID, GNC_INVOICE_GUID, NULL); - if (!value) return NULL; + book = gnc_lot_get_book (lot); + kvp = gnc_lot_get_slots (lot); + value = kvp_frame_get_slot_path (kvp, GNC_INVOICE_ID, GNC_INVOICE_GUID, NULL); + if (!value) return NULL; - guid = kvp_value_get_guid (value); - return gncInvoiceLookup(book, guid); + guid = kvp_value_get_guid (value); + return gncInvoiceLookup(book, guid); } static void gncInvoiceAttachToTxn (GncInvoice *invoice, Transaction *txn) { - KvpFrame *kvp; - KvpValue *value; - - if (!invoice || !txn) - return; + KvpFrame *kvp; + KvpValue *value; - if (invoice->posted_txn) return; /* Cannot reset invoice's txn */ + if (!invoice || !txn) + return; - xaccTransBeginEdit (txn); - kvp = xaccTransGetSlots (txn); - value = kvp_value_new_guid (qof_instance_get_guid(QOF_INSTANCE(invoice))); - kvp_frame_set_slot_path (kvp, value, GNC_INVOICE_ID, GNC_INVOICE_GUID, NULL); - kvp_value_delete (value); - xaccTransSetTxnType (txn, TXN_TYPE_INVOICE); - xaccTransCommitEdit (txn); - gncInvoiceSetPostedTxn (invoice, txn); + if (invoice->posted_txn) return; /* Cannot reset invoice's txn */ + + xaccTransBeginEdit (txn); + kvp = xaccTransGetSlots (txn); + value = kvp_value_new_guid (qof_instance_get_guid(QOF_INSTANCE(invoice))); + kvp_frame_set_slot_path (kvp, value, GNC_INVOICE_ID, GNC_INVOICE_GUID, NULL); + kvp_value_delete (value); + xaccTransSetTxnType (txn, TXN_TYPE_INVOICE); + xaccTransCommitEdit (txn); + gncInvoiceSetPostedTxn (invoice, txn); } -GncInvoice * +GncInvoice * gncInvoiceGetInvoiceFromTxn (const Transaction *txn) { - KvpFrame *kvp; - KvpValue *value; - GUID *guid; - QofBook *book; + KvpFrame *kvp; + KvpValue *value; + GUID *guid; + QofBook *book; - if (!txn) return NULL; + if (!txn) return NULL; - book = xaccTransGetBook (txn); - kvp = xaccTransGetSlots (txn); - value = kvp_frame_get_slot_path (kvp, GNC_INVOICE_ID, GNC_INVOICE_GUID, NULL); - if (!value) return NULL; + book = xaccTransGetBook (txn); + kvp = xaccTransGetSlots (txn); + value = kvp_frame_get_slot_path (kvp, GNC_INVOICE_ID, GNC_INVOICE_GUID, NULL); + if (!value) return NULL; - guid = kvp_value_get_guid (value); - return gncInvoiceLookup(book,guid); + guid = kvp_value_get_guid (value); + return gncInvoiceLookup(book, guid); } -struct lotmatch { - GncOwner *owner; - gboolean reverse; +struct lotmatch +{ + GncOwner *owner; + gboolean reverse; }; static gboolean gnc_lot_match_owner_payment (GNCLot *lot, gpointer user_data) { - struct lotmatch *lm = user_data; - GncOwner owner_def, *owner; - gnc_numeric balance = gnc_lot_get_balance (lot); + struct lotmatch *lm = user_data; + GncOwner owner_def, *owner; + gnc_numeric balance = gnc_lot_get_balance (lot); - /* Is this a payment lot */ - if (gnc_numeric_positive_p (lm->reverse ? balance : - gnc_numeric_neg (balance))) - return FALSE; + /* Is this a payment lot */ + if (gnc_numeric_positive_p (lm->reverse ? balance : + gnc_numeric_neg (balance))) + return FALSE; - /* Is there an invoice attached? */ - if (gncInvoiceGetInvoiceFromLot (lot)) - return FALSE; + /* Is there an invoice attached? */ + if (gncInvoiceGetInvoiceFromLot (lot)) + return FALSE; - /* Is it ours? */ - if (!gncOwnerGetOwnerFromLot (lot, &owner_def)) - return FALSE; - owner = gncOwnerGetEndOwner (&owner_def); + /* Is it ours? */ + if (!gncOwnerGetOwnerFromLot (lot, &owner_def)) + return FALSE; + owner = gncOwnerGetEndOwner (&owner_def); - return gncOwnerEqual (owner, lm->owner); + return gncOwnerEqual (owner, lm->owner); } Transaction * gncInvoicePostToAccount (GncInvoice *invoice, Account *acc, - Timespec *post_date, Timespec *due_date, - const char * memo, gboolean accumulatesplits) + Timespec *post_date, Timespec *due_date, + const char * memo, gboolean accumulatesplits) { - Transaction *txn; - QofBook *book; - GNCLot *lot = NULL; - GList *iter; - GList *splitinfo = NULL; - gnc_numeric total; - gboolean reverse; - const char *name, *type; - char *lot_title; - Account *ccard_acct = NULL; - GncOwner *owner; + Transaction *txn; + QofBook *book; + GNCLot *lot = NULL; + GList *iter; + GList *splitinfo = NULL; + gnc_numeric total; + gboolean reverse; + const char *name, *type; + char *lot_title; + Account *ccard_acct = NULL; + GncOwner *owner; - if (!invoice || !acc) return NULL; + if (!invoice || !acc) return NULL; - gncInvoiceBeginEdit (invoice); - book = qof_instance_get_book(invoice); + gncInvoiceBeginEdit (invoice); + book = qof_instance_get_book(invoice); - /* Stabilize the Billing Terms of this invoice */ - if (invoice->terms) - gncInvoiceSetTerms (invoice, - gncBillTermReturnChild (invoice->terms, TRUE)); + /* Stabilize the Billing Terms of this invoice */ + if (invoice->terms) + gncInvoiceSetTerms (invoice, + gncBillTermReturnChild (invoice->terms, TRUE)); - /* Figure out if we need to "reverse" the numbers. */ - reverse = (gncInvoiceGetOwnerType (invoice) == GNC_OWNER_CUSTOMER); + /* Figure out if we need to "reverse" the numbers. */ + reverse = (gncInvoiceGetOwnerType (invoice) == GNC_OWNER_CUSTOMER); - /* Figure out if we need to separate out "credit-card" items */ - owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (invoice)); - if (gncInvoiceGetOwnerType (invoice) == GNC_OWNER_EMPLOYEE) - ccard_acct = gncEmployeeGetCCard (gncOwnerGetEmployee (owner)); + /* Figure out if we need to separate out "credit-card" items */ + owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (invoice)); + if (gncInvoiceGetOwnerType (invoice) == GNC_OWNER_EMPLOYEE) + ccard_acct = gncEmployeeGetCCard (gncOwnerGetEmployee (owner)); - /* Find an existing payment-lot for this owner */ - { - LotList *lot_list; - struct lotmatch lm; - - lm.reverse = reverse; - lm.owner = owner; - - lot_list = xaccAccountFindOpenLots (acc, gnc_lot_match_owner_payment, - &lm, NULL); - if (lot_list) - lot = lot_list->data; - - g_list_free (lot_list); - } - - /* Create a new lot for this invoice, if we need to do so */ - if (!lot) - lot = gnc_lot_new (book); - gnc_lot_begin_edit (lot); - - type = gncInvoiceGetType (invoice); - - /* Set the lot title */ - lot_title = g_strdup_printf ("%s %s", type, gncInvoiceGetID (invoice)); - gnc_lot_set_title (lot, lot_title); - g_free (lot_title); - - /* Create a new transaction */ - txn = xaccMallocTransaction (book); - xaccTransBeginEdit (txn); - - name = gncOwnerGetName (gncOwnerGetEndOwner (gncInvoiceGetOwner (invoice))); - - /* Set Transaction Description (Owner Name) , Num (invoice ID), Currency */ - xaccTransSetDescription (txn, name ? name : ""); - xaccTransSetNum (txn, gncInvoiceGetID (invoice)); - xaccTransSetCurrency (txn, invoice->currency); - - /* Entered and Posted at date */ - xaccTransSetDateEnteredSecs (txn, time(NULL)); - if (post_date) { - xaccTransSetDatePostedTS (txn, post_date); - gncInvoiceSetDatePosted (invoice, *post_date); - } - - if (due_date) - xaccTransSetDateDueTS (txn, due_date); - - /* Iterate through the entries; sum up everything for each account. - * then create the appropriate splits in this txn. - */ - total = gnc_numeric_zero(); - for (iter = gncInvoiceGetEntries(invoice); iter; iter = iter->next) { - gnc_numeric value, tax; - GList *taxes; - GncEntry * entry = iter->data; - Account *this_acc; - - /* Stabilize the TaxTable in this entry */ - gncEntryBeginEdit (entry); - if (reverse) - gncEntrySetInvTaxTable - (entry, gncTaxTableReturnChild (gncEntryGetInvTaxTable (entry), TRUE)); - else { - gncEntrySetBillTaxTable - (entry, gncTaxTableReturnChild (gncEntryGetBillTaxTable (entry), TRUE)); - - /* If this is a bill, and the entry is billable, copy the price */ - if (gncEntryGetBillable (entry)) - gncEntrySetInvPrice (entry, gncEntryGetBillPrice (entry)); - } - gncEntryCommitEdit (entry); - - /* Obtain the Entry's Value and TaxValues */ - gncEntryGetValue (entry, reverse, &value, NULL, &tax, &taxes); - - /* add the value for the account split */ - this_acc = (reverse ? gncEntryGetInvAccount (entry) : - gncEntryGetBillAccount (entry)); - if (this_acc) { - if (gnc_numeric_check (value) == GNC_ERROR_OK) { - if (accumulatesplits) { - splitinfo = gncAccountValueAdd (splitinfo, this_acc, value); - } else { - Split *split; - - split = xaccMallocSplit (book); - /* set action and memo? */ - - xaccSplitSetMemo (split, gncEntryGetDescription (entry)); - xaccSplitSetAction (split, type); - - /* Need to insert this split into the account AND txn before - * we set the Base Value. Otherwise SetBaseValue complains - * that we don't have an account and fails to set the value. - */ - xaccAccountBeginEdit (this_acc); - xaccAccountInsertSplit (this_acc, split); - xaccAccountCommitEdit (this_acc); - xaccTransAppendSplit (txn, split); - - if (gnc_commodity_equal(xaccAccountGetCommodity(this_acc), invoice->currency)) - { - xaccSplitSetBaseValue (split, (reverse ? gnc_numeric_neg (value) - : value), - invoice->currency); - } - else - { - /*need to do conversion */ - GNCPrice *price = gncInvoiceGetPrice(invoice, xaccAccountGetCommodity(this_acc)); - - if (price == NULL) - { - /*This is an error, which shouldn't even be able to happen. - We can't really do anything sensible about it, and this is - a user-interface free zone so we can't try asking the user - again either, have to return NULL*/ - return NULL; - } - else - { - gnc_numeric converted_amount; - xaccSplitSetValue(split, (reverse ? gnc_numeric_neg(value): value)); - converted_amount = gnc_numeric_div(value, gnc_price_get_value(price), GNC_DENOM_AUTO, GNC_HOW_RND_ROUND); - printf("converting from %f to %f\n", gnc_numeric_to_double(value), gnc_numeric_to_double(converted_amount)); - xaccSplitSetAmount(split, reverse ? gnc_numeric_neg(converted_amount): converted_amount); - } - } - } - - /* If there is a credit-card account, and this is a CCard - * payment type, the don't add it to the total, and instead - * create a split to the CC Acct with a memo of the entry - * description instead of the provided memo. Note that the - * value reversal is the same as the post account. - * - * Note: we don't have to worry about the tax values -- - * expense vouchers don't have them. - */ - if (ccard_acct && gncEntryGetBillPayment (entry) == GNC_PAYMENT_CARD) { - Split *split; - - split = xaccMallocSplit (book); - /* set action? */ - xaccSplitSetMemo (split, gncEntryGetDescription (entry)); - xaccSplitSetAction (split, type); - xaccAccountBeginEdit (ccard_acct); - xaccAccountInsertSplit (ccard_acct, split); - xaccAccountCommitEdit (ccard_acct); - xaccTransAppendSplit (txn, split); - xaccSplitSetBaseValue (split, (reverse ? value : gnc_numeric_neg (value)), - invoice->currency); - - } else - total = gnc_numeric_add (total, value, GNC_DENOM_AUTO, GNC_DENOM_LCD); - - } else - g_warning ("bad value in our entry"); - } - - /* now merge in the TaxValues */ - splitinfo = gncAccountValueAddList (splitinfo, taxes); - - /* ... and add the tax total */ - if (gnc_numeric_check (tax) == GNC_ERROR_OK) - total = gnc_numeric_add (total, tax, GNC_DENOM_AUTO, GNC_DENOM_LCD); - else - g_warning ("bad tax in our entry"); - - } /* for */ - - /* Iterate through the splitinfo list and generate the splits */ - for (iter = splitinfo; iter; iter = iter->next) { - Split *split; - GncAccountValue *acc_val = iter->data; - - split = xaccMallocSplit (book); - /* set action and memo? */ - - xaccSplitSetMemo (split, memo); - xaccSplitSetAction (split, type); - - xaccAccountBeginEdit (acc_val->account); - xaccAccountInsertSplit (acc_val->account, split); - xaccAccountCommitEdit (acc_val->account); - xaccTransAppendSplit (txn, split); - - if (gnc_commodity_equal(xaccAccountGetCommodity(acc_val->account), invoice->currency)) + /* Find an existing payment-lot for this owner */ { - xaccSplitSetBaseValue (split, (reverse ? gnc_numeric_neg (acc_val->value) - : acc_val->value), - invoice->currency); - } - else - { - /*need to do conversion */ - GNCPrice *price = gncInvoiceGetPrice(invoice, xaccAccountGetCommodity(acc_val->account)); + LotList *lot_list; + struct lotmatch lm; - if (price == NULL) + lm.reverse = reverse; + lm.owner = owner; + + lot_list = xaccAccountFindOpenLots (acc, gnc_lot_match_owner_payment, + &lm, NULL); + if (lot_list) + lot = lot_list->data; + + g_list_free (lot_list); + } + + /* Create a new lot for this invoice, if we need to do so */ + if (!lot) + lot = gnc_lot_new (book); + gnc_lot_begin_edit (lot); + + type = gncInvoiceGetType (invoice); + + /* Set the lot title */ + lot_title = g_strdup_printf ("%s %s", type, gncInvoiceGetID (invoice)); + gnc_lot_set_title (lot, lot_title); + g_free (lot_title); + + /* Create a new transaction */ + txn = xaccMallocTransaction (book); + xaccTransBeginEdit (txn); + + name = gncOwnerGetName (gncOwnerGetEndOwner (gncInvoiceGetOwner (invoice))); + + /* Set Transaction Description (Owner Name) , Num (invoice ID), Currency */ + xaccTransSetDescription (txn, name ? name : ""); + xaccTransSetNum (txn, gncInvoiceGetID (invoice)); + xaccTransSetCurrency (txn, invoice->currency); + + /* Entered and Posted at date */ + xaccTransSetDateEnteredSecs (txn, time(NULL)); + if (post_date) + { + xaccTransSetDatePostedTS (txn, post_date); + gncInvoiceSetDatePosted (invoice, *post_date); + } + + if (due_date) + xaccTransSetDateDueTS (txn, due_date); + + /* Iterate through the entries; sum up everything for each account. + * then create the appropriate splits in this txn. + */ + total = gnc_numeric_zero(); + for (iter = gncInvoiceGetEntries(invoice); iter; iter = iter->next) + { + gnc_numeric value, tax; + GList *taxes; + GncEntry * entry = iter->data; + Account *this_acc; + + /* Stabilize the TaxTable in this entry */ + gncEntryBeginEdit (entry); + if (reverse) + gncEntrySetInvTaxTable + (entry, gncTaxTableReturnChild (gncEntryGetInvTaxTable (entry), TRUE)); + else { - /*This is an error, which shouldn't even be able to happen. - We can't really do anything sensible about it, and this is - a user-interface free zone so we can't try asking the user - again either, have to return NULL*/ - return NULL; + gncEntrySetBillTaxTable + (entry, gncTaxTableReturnChild (gncEntryGetBillTaxTable (entry), TRUE)); + + /* If this is a bill, and the entry is billable, copy the price */ + if (gncEntryGetBillable (entry)) + gncEntrySetInvPrice (entry, gncEntryGetBillPrice (entry)); + } + gncEntryCommitEdit (entry); + + /* Obtain the Entry's Value and TaxValues */ + gncEntryGetValue (entry, reverse, &value, NULL, &tax, &taxes); + + /* add the value for the account split */ + this_acc = (reverse ? gncEntryGetInvAccount (entry) : + gncEntryGetBillAccount (entry)); + if (this_acc) + { + if (gnc_numeric_check (value) == GNC_ERROR_OK) + { + if (accumulatesplits) + { + splitinfo = gncAccountValueAdd (splitinfo, this_acc, value); + } + else + { + Split *split; + + split = xaccMallocSplit (book); + /* set action and memo? */ + + xaccSplitSetMemo (split, gncEntryGetDescription (entry)); + xaccSplitSetAction (split, type); + + /* Need to insert this split into the account AND txn before + * we set the Base Value. Otherwise SetBaseValue complains + * that we don't have an account and fails to set the value. + */ + xaccAccountBeginEdit (this_acc); + xaccAccountInsertSplit (this_acc, split); + xaccAccountCommitEdit (this_acc); + xaccTransAppendSplit (txn, split); + + if (gnc_commodity_equal(xaccAccountGetCommodity(this_acc), invoice->currency)) + { + xaccSplitSetBaseValue (split, (reverse ? gnc_numeric_neg (value) + : value), + invoice->currency); + } + else + { + /*need to do conversion */ + GNCPrice *price = gncInvoiceGetPrice(invoice, xaccAccountGetCommodity(this_acc)); + + if (price == NULL) + { + /*This is an error, which shouldn't even be able to happen. + We can't really do anything sensible about it, and this is + a user-interface free zone so we can't try asking the user + again either, have to return NULL*/ + return NULL; + } + else + { + gnc_numeric converted_amount; + xaccSplitSetValue(split, (reverse ? gnc_numeric_neg(value) : value)); + converted_amount = gnc_numeric_div(value, gnc_price_get_value(price), GNC_DENOM_AUTO, GNC_HOW_RND_ROUND); + printf("converting from %f to %f\n", gnc_numeric_to_double(value), gnc_numeric_to_double(converted_amount)); + xaccSplitSetAmount(split, reverse ? gnc_numeric_neg(converted_amount) : converted_amount); + } + } + } + + /* If there is a credit-card account, and this is a CCard + * payment type, the don't add it to the total, and instead + * create a split to the CC Acct with a memo of the entry + * description instead of the provided memo. Note that the + * value reversal is the same as the post account. + * + * Note: we don't have to worry about the tax values -- + * expense vouchers don't have them. + */ + if (ccard_acct && gncEntryGetBillPayment (entry) == GNC_PAYMENT_CARD) + { + Split *split; + + split = xaccMallocSplit (book); + /* set action? */ + xaccSplitSetMemo (split, gncEntryGetDescription (entry)); + xaccSplitSetAction (split, type); + xaccAccountBeginEdit (ccard_acct); + xaccAccountInsertSplit (ccard_acct, split); + xaccAccountCommitEdit (ccard_acct); + xaccTransAppendSplit (txn, split); + xaccSplitSetBaseValue (split, (reverse ? value : gnc_numeric_neg (value)), + invoice->currency); + + } + else + total = gnc_numeric_add (total, value, GNC_DENOM_AUTO, GNC_DENOM_LCD); + + } + else + g_warning ("bad value in our entry"); + } + + /* now merge in the TaxValues */ + splitinfo = gncAccountValueAddList (splitinfo, taxes); + + /* ... and add the tax total */ + if (gnc_numeric_check (tax) == GNC_ERROR_OK) + total = gnc_numeric_add (total, tax, GNC_DENOM_AUTO, GNC_DENOM_LCD); + else + g_warning ("bad tax in our entry"); + + } /* for */ + + /* Iterate through the splitinfo list and generate the splits */ + for (iter = splitinfo; iter; iter = iter->next) + { + Split *split; + GncAccountValue *acc_val = iter->data; + + split = xaccMallocSplit (book); + /* set action and memo? */ + + xaccSplitSetMemo (split, memo); + xaccSplitSetAction (split, type); + + xaccAccountBeginEdit (acc_val->account); + xaccAccountInsertSplit (acc_val->account, split); + xaccAccountCommitEdit (acc_val->account); + xaccTransAppendSplit (txn, split); + + if (gnc_commodity_equal(xaccAccountGetCommodity(acc_val->account), invoice->currency)) + { + xaccSplitSetBaseValue (split, (reverse ? gnc_numeric_neg (acc_val->value) + : acc_val->value), + invoice->currency); } else { - gnc_numeric converted_amount; - xaccSplitSetValue(split, (reverse ? gnc_numeric_neg(acc_val->value): acc_val->value)); - converted_amount = gnc_numeric_div(acc_val->value, gnc_price_get_value(price), GNC_DENOM_AUTO, GNC_HOW_RND_ROUND); - printf("converting from %f to %f\n", gnc_numeric_to_double(acc_val->value), gnc_numeric_to_double(converted_amount)); + /*need to do conversion */ + GNCPrice *price = gncInvoiceGetPrice(invoice, xaccAccountGetCommodity(acc_val->account)); - xaccSplitSetAmount(split, reverse ? gnc_numeric_neg(converted_amount): converted_amount); + if (price == NULL) + { + /*This is an error, which shouldn't even be able to happen. + We can't really do anything sensible about it, and this is + a user-interface free zone so we can't try asking the user + again either, have to return NULL*/ + return NULL; + } + else + { + gnc_numeric converted_amount; + xaccSplitSetValue(split, (reverse ? gnc_numeric_neg(acc_val->value) : acc_val->value)); + converted_amount = gnc_numeric_div(acc_val->value, gnc_price_get_value(price), GNC_DENOM_AUTO, GNC_HOW_RND_ROUND); + printf("converting from %f to %f\n", gnc_numeric_to_double(acc_val->value), gnc_numeric_to_double(converted_amount)); + + xaccSplitSetAmount(split, reverse ? gnc_numeric_neg(converted_amount) : converted_amount); + } } } - } - /* If there is a ccard account, we may have an additional "to_card" payment. - * we should make that now.. - */ - if (ccard_acct && !gnc_numeric_zero_p (invoice->to_charge_amount)) { - Split *split = xaccMallocSplit (book); + /* If there is a ccard account, we may have an additional "to_card" payment. + * we should make that now.. + */ + if (ccard_acct && !gnc_numeric_zero_p (invoice->to_charge_amount)) + { + Split *split = xaccMallocSplit (book); - /* Set memo. action? */ - xaccSplitSetMemo (split, _("Extra to Charge Card")); - xaccSplitSetAction (split, type); - - xaccAccountBeginEdit (ccard_acct); - xaccAccountInsertSplit (ccard_acct, split); - xaccAccountCommitEdit (ccard_acct); - xaccTransAppendSplit (txn, split); - xaccSplitSetBaseValue (split, (reverse ? invoice->to_charge_amount : - gnc_numeric_neg(invoice->to_charge_amount)), - invoice->currency); + /* Set memo. action? */ + xaccSplitSetMemo (split, _("Extra to Charge Card")); + xaccSplitSetAction (split, type); - total = gnc_numeric_sub (total, invoice->to_charge_amount, - GNC_DENOM_AUTO, GNC_DENOM_LCD); - } + xaccAccountBeginEdit (ccard_acct); + xaccAccountInsertSplit (ccard_acct, split); + xaccAccountCommitEdit (ccard_acct); + xaccTransAppendSplit (txn, split); + xaccSplitSetBaseValue (split, (reverse ? invoice->to_charge_amount : + gnc_numeric_neg(invoice->to_charge_amount)), + invoice->currency); - /* Now create the Posted split (which is negative -- it's a credit) */ - { - Split *split = xaccMallocSplit (book); + total = gnc_numeric_sub (total, invoice->to_charge_amount, + GNC_DENOM_AUTO, GNC_DENOM_LCD); + } - /* Set action/memo */ - xaccSplitSetMemo (split, memo); - xaccSplitSetAction (split, type); - - xaccAccountBeginEdit (acc); - xaccAccountInsertSplit (acc, split); - xaccAccountCommitEdit (acc); - xaccTransAppendSplit (txn, split); - xaccSplitSetBaseValue (split, (reverse ? total : gnc_numeric_neg (total)), - invoice->currency); + /* Now create the Posted split (which is negative -- it's a credit) */ + { + Split *split = xaccMallocSplit (book); - /* add this split to the lot */ - gnc_lot_add_split (lot, split); - } + /* Set action/memo */ + xaccSplitSetMemo (split, memo); + xaccSplitSetAction (split, type); - /* Now attach this invoice to the txn, lot, and account */ - gncInvoiceAttachToLot (invoice, lot); - gncInvoiceAttachToTxn (invoice, txn); - gncInvoiceSetPostedAcc (invoice, acc); + xaccAccountBeginEdit (acc); + xaccAccountInsertSplit (acc, split); + xaccAccountCommitEdit (acc); + xaccTransAppendSplit (txn, split); + xaccSplitSetBaseValue (split, (reverse ? total : gnc_numeric_neg (total)), + invoice->currency); - xaccTransSetReadOnly (txn, _("Generated from an invoice. Try unposting the invoice.")); - xaccTransCommitEdit (txn); + /* add this split to the lot */ + gnc_lot_add_split (lot, split); + } - gncAccountValueDestroy (splitinfo); + /* Now attach this invoice to the txn, lot, and account */ + gncInvoiceAttachToLot (invoice, lot); + gncInvoiceAttachToTxn (invoice, txn); + gncInvoiceSetPostedAcc (invoice, acc); - /* check the lot -- if we still look like a payment lot, then that - * means we need to create a balancing split and create a new payment - * lot for the next invoice - * - * we're looking for a positive balance for bill/AP, and a negative balance - * for invoice/AR. - * (because bill payments debit AP accounts and invoice payments - * credit AR accounts) - */ - total = gnc_lot_get_balance (lot); - - if ( (gnc_numeric_negative_p (total) && reverse) || - (gnc_numeric_positive_p (total) && !reverse) ) { - Transaction *t2; - GNCLot *lot2; - Split *split; - /* Translators: This is the memo of an auto-created split */ - char *memo2 = _("Automatic Payment Forward"); - char *action2 = _("Auto Split"); + xaccTransSetReadOnly (txn, _("Generated from an invoice. Try unposting the invoice.")); + xaccTransCommitEdit (txn); - t2 = xaccMallocTransaction (book); - lot2 = gnc_lot_new (book); - gnc_lot_begin_edit (lot2); - gncOwnerAttachToLot (gncOwnerGetEndOwner (gncInvoiceGetOwner (invoice)), - lot2); - - xaccTransBeginEdit (t2); - xaccAccountBeginEdit (acc); + gncAccountValueDestroy (splitinfo); - /* Set Transaction Description (Owner Name), Currency */ - xaccTransSetDescription (t2, name ? name : ""); - xaccTransSetCurrency (t2, invoice->currency); + /* check the lot -- if we still look like a payment lot, then that + * means we need to create a balancing split and create a new payment + * lot for the next invoice + * + * we're looking for a positive balance for bill/AP, and a negative balance + * for invoice/AR. + * (because bill payments debit AP accounts and invoice payments + * credit AR accounts) + */ + total = gnc_lot_get_balance (lot); - /* Entered and Posted at date */ - xaccTransSetDateEnteredSecs (t2, time(NULL)); - if (post_date) - xaccTransSetDatePostedTS (t2, post_date); + if ( (gnc_numeric_negative_p (total) && reverse) || + (gnc_numeric_positive_p (total) && !reverse) ) + { + Transaction *t2; + GNCLot *lot2; + Split *split; + /* Translators: This is the memo of an auto-created split */ + char *memo2 = _("Automatic Payment Forward"); + char *action2 = _("Auto Split"); - /* Balance out this lot */ - split = xaccMallocSplit (book); - xaccSplitSetMemo (split, memo2); - xaccSplitSetAction (split, action2); - xaccAccountInsertSplit (acc, split); - xaccTransAppendSplit (t2, split); - // the value of total used here is correct for both bill/AP and - // invoice/AR. See the comment before this if block - xaccSplitSetBaseValue (split, gnc_numeric_neg (total), - invoice->currency); - gnc_lot_add_split (lot, split); + t2 = xaccMallocTransaction (book); + lot2 = gnc_lot_new (book); + gnc_lot_begin_edit (lot2); + gncOwnerAttachToLot (gncOwnerGetEndOwner (gncInvoiceGetOwner (invoice)), + lot2); - /* And apply the pre-payment to a new lot */ - split = xaccMallocSplit (book); - xaccSplitSetMemo (split, memo2); - xaccSplitSetAction (split, action2); - xaccAccountInsertSplit (acc, split); - xaccTransAppendSplit (t2, split); - xaccSplitSetBaseValue (split, total, invoice->currency); - gnc_lot_add_split (lot2, split); + xaccTransBeginEdit (t2); + xaccAccountBeginEdit (acc); - gnc_lot_commit_edit (lot2); - xaccTransCommitEdit (t2); - xaccAccountCommitEdit (acc); - } + /* Set Transaction Description (Owner Name), Currency */ + xaccTransSetDescription (t2, name ? name : ""); + xaccTransSetCurrency (t2, invoice->currency); - gnc_lot_commit_edit (lot); - gncInvoiceCommitEdit (invoice); + /* Entered and Posted at date */ + xaccTransSetDateEnteredSecs (t2, time(NULL)); + if (post_date) + xaccTransSetDatePostedTS (t2, post_date); - return txn; + /* Balance out this lot */ + split = xaccMallocSplit (book); + xaccSplitSetMemo (split, memo2); + xaccSplitSetAction (split, action2); + xaccAccountInsertSplit (acc, split); + xaccTransAppendSplit (t2, split); + // the value of total used here is correct for both bill/AP and + // invoice/AR. See the comment before this if block + xaccSplitSetBaseValue (split, gnc_numeric_neg (total), + invoice->currency); + gnc_lot_add_split (lot, split); + + /* And apply the pre-payment to a new lot */ + split = xaccMallocSplit (book); + xaccSplitSetMemo (split, memo2); + xaccSplitSetAction (split, action2); + xaccAccountInsertSplit (acc, split); + xaccTransAppendSplit (t2, split); + xaccSplitSetBaseValue (split, total, invoice->currency); + gnc_lot_add_split (lot2, split); + + gnc_lot_commit_edit (lot2); + xaccTransCommitEdit (t2); + xaccAccountCommitEdit (acc); + } + + gnc_lot_commit_edit (lot); + gncInvoiceCommitEdit (invoice); + + return txn; } gboolean gncInvoiceUnpost (GncInvoice *invoice, gboolean reset_tax_tables) { - Transaction *txn; - GNCLot *lot; + Transaction *txn; + GNCLot *lot; - if (!invoice) return FALSE; - if (!gncInvoiceIsPosted (invoice)) return FALSE; + if (!invoice) return FALSE; + if (!gncInvoiceIsPosted (invoice)) return FALSE; - txn = gncInvoiceGetPostedTxn (invoice); - g_return_val_if_fail (txn, FALSE); + txn = gncInvoiceGetPostedTxn (invoice); + g_return_val_if_fail (txn, FALSE); - lot = gncInvoiceGetPostedLot (invoice); - g_return_val_if_fail (lot, FALSE); + lot = gncInvoiceGetPostedLot (invoice); + g_return_val_if_fail (lot, FALSE); - /* Destroy the Posted Transaction */ - xaccTransClearReadOnly (txn); - xaccTransBeginEdit (txn); - xaccTransDestroy (txn); - xaccTransCommitEdit (txn); + /* Destroy the Posted Transaction */ + xaccTransClearReadOnly (txn); + xaccTransBeginEdit (txn); + xaccTransDestroy (txn); + xaccTransCommitEdit (txn); - /* Disconnect the lot from the invoice; re-attach to the invoice owner */ - gncInvoiceDetachFromLot (lot); - gncOwnerAttachToLot (&invoice->owner, lot); + /* Disconnect the lot from the invoice; re-attach to the invoice owner */ + gncInvoiceDetachFromLot (lot); + gncOwnerAttachToLot (&invoice->owner, lot); - /* If the lot has no splits, then destroy it */ - if (!gnc_lot_count_splits (lot)) - gnc_lot_destroy (lot); + /* If the lot has no splits, then destroy it */ + if (!gnc_lot_count_splits (lot)) + gnc_lot_destroy (lot); - /* Clear out the invoice posted information */ - gncInvoiceBeginEdit (invoice); + /* Clear out the invoice posted information */ + gncInvoiceBeginEdit (invoice); - invoice->posted_acc = NULL; - invoice->posted_txn = NULL; - invoice->posted_lot = NULL; - invoice->date_posted.tv_sec = invoice->date_posted.tv_nsec = 0; + invoice->posted_acc = NULL; + invoice->posted_txn = NULL; + invoice->posted_lot = NULL; + invoice->date_posted.tv_sec = invoice->date_posted.tv_nsec = 0; - /* if we've been asked to reset the tax tables, then do so */ - if (reset_tax_tables) { - gboolean reverse = (gncInvoiceGetOwnerType(invoice) == GNC_OWNER_CUSTOMER); - GList *iter; + /* if we've been asked to reset the tax tables, then do so */ + if (reset_tax_tables) + { + gboolean reverse = (gncInvoiceGetOwnerType(invoice) == GNC_OWNER_CUSTOMER); + GList *iter; - for (iter = gncInvoiceGetEntries(invoice); iter; iter = iter->next) { - GncEntry *entry = iter->data; + for (iter = gncInvoiceGetEntries(invoice); iter; iter = iter->next) + { + GncEntry *entry = iter->data; - gncEntryBeginEdit(entry); - if (reverse) - gncEntrySetInvTaxTable(entry, - gncTaxTableGetParent(gncEntryGetInvTaxTable(entry))); - else - gncEntrySetBillTaxTable(entry, - gncTaxTableGetParent(gncEntryGetBillTaxTable(entry))); - gncEntryCommitEdit(entry); + gncEntryBeginEdit(entry); + if (reverse) + gncEntrySetInvTaxTable(entry, + gncTaxTableGetParent(gncEntryGetInvTaxTable(entry))); + else + gncEntrySetBillTaxTable(entry, + gncTaxTableGetParent(gncEntryGetBillTaxTable(entry))); + gncEntryCommitEdit(entry); + } } - } - mark_invoice (invoice); - gncInvoiceCommitEdit (invoice); + mark_invoice (invoice); + gncInvoiceCommitEdit (invoice); - return TRUE; + return TRUE; } static gboolean gnc_lot_match_invoice_owner (GNCLot *lot, gpointer user_data) { - GncOwner owner_def, *owner, *this_owner = user_data; - GncInvoice *invoice; + GncOwner owner_def, *owner, *this_owner = user_data; + GncInvoice *invoice; - /* If this lot is not for this owner, then ignore it */ - invoice = gncInvoiceGetInvoiceFromLot (lot); - if (invoice) { - owner = gncInvoiceGetOwner (invoice); - owner = gncOwnerGetEndOwner (owner); - } else { - if (!gncOwnerGetOwnerFromLot (lot, &owner_def)) - return FALSE; - owner = gncOwnerGetEndOwner (&owner_def); - } + /* If this lot is not for this owner, then ignore it */ + invoice = gncInvoiceGetInvoiceFromLot (lot); + if (invoice) + { + owner = gncInvoiceGetOwner (invoice); + owner = gncOwnerGetEndOwner (owner); + } + else + { + if (!gncOwnerGetOwnerFromLot (lot, &owner_def)) + return FALSE; + owner = gncOwnerGetEndOwner (&owner_def); + } - return gncOwnerEqual (owner, this_owner); + return gncOwnerEqual (owner, this_owner); } static gint gnc_lot_sort_func (GNCLot *a, GNCLot *b) { - GncInvoice *ia, *ib; - Timespec da, db; + GncInvoice *ia, *ib; + Timespec da, db; - ia = gncInvoiceGetInvoiceFromLot (a); - ib = gncInvoiceGetInvoiceFromLot (b); + ia = gncInvoiceGetInvoiceFromLot (a); + ib = gncInvoiceGetInvoiceFromLot (b); - da = gncInvoiceGetDateDue (ia); - db = gncInvoiceGetDateDue (ib); + da = gncInvoiceGetDateDue (ia); + db = gncInvoiceGetDateDue (ib); - return timespec_cmp (&da, &db); + return timespec_cmp (&da, &db); } /* @@ -1472,263 +1534,276 @@ gnc_lot_sort_func (GNCLot *a, GNCLot *b) */ Transaction * gncOwnerApplyPayment (GncOwner *owner, GncInvoice* invoice, - Account *posted_acc, Account *xfer_acc, - gnc_numeric amount, gnc_numeric exch, Timespec date, - const char *memo, const char *num) + Account *posted_acc, Account *xfer_acc, + gnc_numeric amount, gnc_numeric exch, Timespec date, + const char *memo, const char *num) { - QofBook *book; - Account *inv_posted_acc; - Transaction *txn; - Split *split; - GList *lot_list, *fifo = NULL; - GNCLot *lot, *inv_posted_lot = NULL, *prepay_lot = NULL; - GncInvoice *this_invoice; - const char *name; - gnc_commodity *commodity; - gnc_numeric split_amt; - gboolean reverse, inv_passed = TRUE; - gnc_numeric payment_value=amount; + QofBook *book; + Account *inv_posted_acc; + Transaction *txn; + Split *split; + GList *lot_list, *fifo = NULL; + GNCLot *lot, *inv_posted_lot = NULL, *prepay_lot = NULL; + GncInvoice *this_invoice; + const char *name; + gnc_commodity *commodity; + gnc_numeric split_amt; + gboolean reverse, inv_passed = TRUE; + gnc_numeric payment_value = amount; - /* Verify our arguments */ - if (!owner || !posted_acc || !xfer_acc) return NULL; - g_return_val_if_fail (owner->owner.undefined != NULL, NULL); + /* Verify our arguments */ + if (!owner || !posted_acc || !xfer_acc) return NULL; + g_return_val_if_fail (owner->owner.undefined != NULL, NULL); - /* Compute the ancillary data */ - book = gnc_account_get_book (posted_acc); - name = gncOwnerGetName (gncOwnerGetEndOwner (owner)); - commodity = gncOwnerGetCurrency (owner); - reverse = (gncOwnerGetType (owner) == GNC_OWNER_CUSTOMER); + /* Compute the ancillary data */ + book = gnc_account_get_book (posted_acc); + name = gncOwnerGetName (gncOwnerGetEndOwner (owner)); + commodity = gncOwnerGetCurrency (owner); + reverse = (gncOwnerGetType (owner) == GNC_OWNER_CUSTOMER); - txn = xaccMallocTransaction (book); - xaccTransBeginEdit (txn); + txn = xaccMallocTransaction (book); + xaccTransBeginEdit (txn); - /* Set up the transaction */ - xaccTransSetDescription (txn, name ? name : ""); - xaccTransSetNum (txn, num); - xaccTransSetCurrency (txn, commodity); - xaccTransSetDateEnteredSecs (txn, time(NULL)); - xaccTransSetDatePostedTS (txn, &date); - xaccTransSetTxnType (txn, TXN_TYPE_PAYMENT); + /* Set up the transaction */ + xaccTransSetDescription (txn, name ? name : ""); + xaccTransSetNum (txn, num); + xaccTransSetCurrency (txn, commodity); + xaccTransSetDateEnteredSecs (txn, time(NULL)); + xaccTransSetDatePostedTS (txn, &date); + xaccTransSetTxnType (txn, TXN_TYPE_PAYMENT); - /* The split for the transfer account */ - split = xaccMallocSplit (book); - xaccSplitSetMemo (split, memo); - xaccSplitSetAction (split, _("Payment")); - xaccAccountBeginEdit (xfer_acc); - xaccAccountInsertSplit (xfer_acc, split); - xaccAccountCommitEdit (xfer_acc); - xaccTransAppendSplit (txn, split); - - if (gnc_commodity_equal(xaccAccountGetCommodity(xfer_acc), commodity)) - { - xaccSplitSetBaseValue (split, reverse ? amount : - gnc_numeric_neg (amount), commodity); - } - else - { - /* Need to value the payment in terms of the owner commodity */ - xaccSplitSetAmount(split, reverse ? amount : gnc_numeric_neg (amount)); - payment_value = gnc_numeric_mul(amount, exch, GNC_DENOM_AUTO, GNC_HOW_RND_ROUND); - xaccSplitSetValue(split, reverse ? payment_value : gnc_numeric_neg(payment_value)); - } - - - /* Now, find all "open" lots in the posting account for this - * company and apply the payment on a FIFO basis. Create - * a new split for each open lot until the payment is gone. - */ - - fifo = xaccAccountFindOpenLots (posted_acc, gnc_lot_match_invoice_owner, - owner, - (GCompareFunc)gnc_lot_sort_func); - - /* Check if an invoice was passed in, and if so, does it match the - * account, and is it an open lot? If so, put it at the beginning - * of the lot list fifo so we post to this invoice's lot first. - */ - if (invoice) { - inv_posted_acc = gncInvoiceGetPostedAcc(invoice); - inv_posted_lot = gncInvoiceGetPostedLot(invoice); - if (inv_posted_acc && inv_posted_lot && - guid_equal(xaccAccountGetGUID(inv_posted_acc), - xaccAccountGetGUID(posted_acc)) && - !gnc_lot_is_closed(inv_posted_lot)) { - /* Put this invoice at the beginning of the FIFO */ - fifo = g_list_prepend (fifo, inv_posted_lot); - inv_passed = FALSE; - } - } - - xaccAccountBeginEdit (posted_acc); - - /* Now iterate over the fifo until the payment is fully applied - * (or all the lots are paid) - */ - for (lot_list = fifo; lot_list; lot_list = lot_list->next) { - gnc_numeric balance; - - lot = lot_list->data; - - /* Skip this lot if it matches the invoice that was passed in and - * we've seen it already. This way we post to it the first time - * (from the beginning of the lot-list) but not when we reach it - * the second time. - */ - if (inv_posted_lot && - guid_equal(qof_instance_get_guid(QOF_INSTANCE(lot)), - qof_instance_get_guid(QOF_INSTANCE(inv_posted_lot)))) { - if (inv_passed) - continue; - else - inv_passed = TRUE; - } - - balance = gnc_lot_get_balance (lot); - - if (!reverse) - balance = gnc_numeric_neg (balance); - - /* If the balance is "negative" then skip this lot. - * (just save the pre-payment lot for later) - */ - if (gnc_numeric_negative_p (balance)) { - if (prepay_lot) { - g_warning ("Multiple pre-payment lots are found. Skipping."); - } else { - prepay_lot = lot; - } - continue; - } - - /* - * If the payment_value <= the balance; we're done -- apply the payment_value. - * Otherwise, apply the balance, subtract that from the payment_value, - * and move on to the next one. - */ - if (gnc_numeric_compare (payment_value, balance) <= 0) { - /* payment_value <= balance */ - split_amt = payment_value; - } else { - /* payment_value > balance */ - split_amt = balance; - } - - /* reduce the payment_value by split_amt */ - payment_value = gnc_numeric_sub (payment_value, split_amt, GNC_DENOM_AUTO, GNC_DENOM_LCD); - - /* Create the split for this lot in the post account */ + /* The split for the transfer account */ split = xaccMallocSplit (book); xaccSplitSetMemo (split, memo); xaccSplitSetAction (split, _("Payment")); - xaccAccountInsertSplit (posted_acc, split); + xaccAccountBeginEdit (xfer_acc); + xaccAccountInsertSplit (xfer_acc, split); + xaccAccountCommitEdit (xfer_acc); xaccTransAppendSplit (txn, split); - xaccSplitSetBaseValue (split, reverse ? gnc_numeric_neg (split_amt) : - split_amt, commodity); - gnc_lot_add_split (lot, split); - /* Now send an event for the invoice so it gets updated as paid */ - this_invoice = gncInvoiceGetInvoiceFromLot(lot); - if (this_invoice) - qof_event_gen (&this_invoice->inst, QOF_EVENT_MODIFY, NULL); - - if (gnc_numeric_zero_p (payment_value)) - break; - } - - g_list_free (fifo); - - /* If there is still money left here, then create a pre-payment lot */ - if (gnc_numeric_positive_p (payment_value)) { - if (prepay_lot == NULL) { - prepay_lot = gnc_lot_new (book); - gncOwnerAttachToLot (owner, prepay_lot); + if (gnc_commodity_equal(xaccAccountGetCommodity(xfer_acc), commodity)) + { + xaccSplitSetBaseValue (split, reverse ? amount : + gnc_numeric_neg (amount), commodity); + } + else + { + /* Need to value the payment in terms of the owner commodity */ + xaccSplitSetAmount(split, reverse ? amount : gnc_numeric_neg (amount)); + payment_value = gnc_numeric_mul(amount, exch, GNC_DENOM_AUTO, GNC_HOW_RND_ROUND); + xaccSplitSetValue(split, reverse ? payment_value : gnc_numeric_neg(payment_value)); } - split = xaccMallocSplit (book); - xaccSplitSetMemo (split, memo); - xaccSplitSetAction (split, _("Pre-Payment")); - xaccAccountInsertSplit (posted_acc, split); - xaccTransAppendSplit (txn, split); - xaccSplitSetBaseValue (split, reverse ? gnc_numeric_neg (payment_value) : - payment_value, commodity); - gnc_lot_add_split (prepay_lot, split); - } - xaccAccountCommitEdit (posted_acc); + /* Now, find all "open" lots in the posting account for this + * company and apply the payment on a FIFO basis. Create + * a new split for each open lot until the payment is gone. + */ - /* Commit this new transaction */ - xaccTransCommitEdit (txn); + fifo = xaccAccountFindOpenLots (posted_acc, gnc_lot_match_invoice_owner, + owner, + (GCompareFunc)gnc_lot_sort_func); - return txn; + /* Check if an invoice was passed in, and if so, does it match the + * account, and is it an open lot? If so, put it at the beginning + * of the lot list fifo so we post to this invoice's lot first. + */ + if (invoice) + { + inv_posted_acc = gncInvoiceGetPostedAcc(invoice); + inv_posted_lot = gncInvoiceGetPostedLot(invoice); + if (inv_posted_acc && inv_posted_lot && + guid_equal(xaccAccountGetGUID(inv_posted_acc), + xaccAccountGetGUID(posted_acc)) && + !gnc_lot_is_closed(inv_posted_lot)) + { + /* Put this invoice at the beginning of the FIFO */ + fifo = g_list_prepend (fifo, inv_posted_lot); + inv_passed = FALSE; + } + } + + xaccAccountBeginEdit (posted_acc); + + /* Now iterate over the fifo until the payment is fully applied + * (or all the lots are paid) + */ + for (lot_list = fifo; lot_list; lot_list = lot_list->next) + { + gnc_numeric balance; + + lot = lot_list->data; + + /* Skip this lot if it matches the invoice that was passed in and + * we've seen it already. This way we post to it the first time + * (from the beginning of the lot-list) but not when we reach it + * the second time. + */ + if (inv_posted_lot && + guid_equal(qof_instance_get_guid(QOF_INSTANCE(lot)), + qof_instance_get_guid(QOF_INSTANCE(inv_posted_lot)))) + { + if (inv_passed) + continue; + else + inv_passed = TRUE; + } + + balance = gnc_lot_get_balance (lot); + + if (!reverse) + balance = gnc_numeric_neg (balance); + + /* If the balance is "negative" then skip this lot. + * (just save the pre-payment lot for later) + */ + if (gnc_numeric_negative_p (balance)) + { + if (prepay_lot) + { + g_warning ("Multiple pre-payment lots are found. Skipping."); + } + else + { + prepay_lot = lot; + } + continue; + } + + /* + * If the payment_value <= the balance; we're done -- apply the payment_value. + * Otherwise, apply the balance, subtract that from the payment_value, + * and move on to the next one. + */ + if (gnc_numeric_compare (payment_value, balance) <= 0) + { + /* payment_value <= balance */ + split_amt = payment_value; + } + else + { + /* payment_value > balance */ + split_amt = balance; + } + + /* reduce the payment_value by split_amt */ + payment_value = gnc_numeric_sub (payment_value, split_amt, GNC_DENOM_AUTO, GNC_DENOM_LCD); + + /* Create the split for this lot in the post account */ + split = xaccMallocSplit (book); + xaccSplitSetMemo (split, memo); + xaccSplitSetAction (split, _("Payment")); + xaccAccountInsertSplit (posted_acc, split); + xaccTransAppendSplit (txn, split); + xaccSplitSetBaseValue (split, reverse ? gnc_numeric_neg (split_amt) : + split_amt, commodity); + gnc_lot_add_split (lot, split); + + /* Now send an event for the invoice so it gets updated as paid */ + this_invoice = gncInvoiceGetInvoiceFromLot(lot); + if (this_invoice) + qof_event_gen (&this_invoice->inst, QOF_EVENT_MODIFY, NULL); + + if (gnc_numeric_zero_p (payment_value)) + break; + } + + g_list_free (fifo); + + /* If there is still money left here, then create a pre-payment lot */ + if (gnc_numeric_positive_p (payment_value)) + { + if (prepay_lot == NULL) + { + prepay_lot = gnc_lot_new (book); + gncOwnerAttachToLot (owner, prepay_lot); + } + + split = xaccMallocSplit (book); + xaccSplitSetMemo (split, memo); + xaccSplitSetAction (split, _("Pre-Payment")); + xaccAccountInsertSplit (posted_acc, split); + xaccTransAppendSplit (txn, split); + xaccSplitSetBaseValue (split, reverse ? gnc_numeric_neg (payment_value) : + payment_value, commodity); + gnc_lot_add_split (prepay_lot, split); + } + + xaccAccountCommitEdit (posted_acc); + + /* Commit this new transaction */ + xaccTransCommitEdit (txn); + + return txn; } static gboolean gncInvoiceDateExists (const Timespec *date) { - g_return_val_if_fail (date, FALSE); - if (date->tv_sec || date->tv_nsec) return TRUE; - return FALSE; + g_return_val_if_fail (date, FALSE); + if (date->tv_sec || date->tv_nsec) return TRUE; + return FALSE; } gboolean gncInvoiceIsPosted (const GncInvoice *invoice) { - if (!invoice) return FALSE; - return gncInvoiceDateExists (&(invoice->date_posted)); + if (!invoice) return FALSE; + return gncInvoiceDateExists (&(invoice->date_posted)); } gboolean gncInvoiceIsPaid (const GncInvoice *invoice) { - if (!invoice) return FALSE; - if (!invoice->posted_lot) return FALSE; - return gnc_lot_is_closed(invoice->posted_lot); + if (!invoice) return FALSE; + if (!invoice->posted_lot) return FALSE; + return gnc_lot_is_closed(invoice->posted_lot); } /* ================================================================== */ void gncInvoiceBeginEdit (GncInvoice *invoice) { - qof_begin_edit(&invoice->inst); + qof_begin_edit(&invoice->inst); } static void gncInvoiceOnError (QofInstance *inst, QofBackendError errcode) { - PERR("Invoice QofBackend Failure: %d", errcode); - gnc_engine_signal_commit_error( errcode ); + PERR("Invoice QofBackend Failure: %d", errcode); + gnc_engine_signal_commit_error( errcode ); } static void gncInvoiceOnDone (QofInstance *invoice) { } static void invoice_free (QofInstance *inst) { - GncInvoice *invoice = (GncInvoice *) inst; - gncInvoiceFree (invoice); + GncInvoice *invoice = (GncInvoice *) inst; + gncInvoiceFree (invoice); } void gncInvoiceCommitEdit (GncInvoice *invoice) { - if (!qof_commit_edit (QOF_INSTANCE(invoice))) return; - qof_commit_edit_part2 (&invoice->inst, gncInvoiceOnError, - gncInvoiceOnDone, invoice_free); + if (!qof_commit_edit (QOF_INSTANCE(invoice))) return; + qof_commit_edit_part2 (&invoice->inst, gncInvoiceOnError, + gncInvoiceOnDone, invoice_free); } int gncInvoiceCompare (const GncInvoice *a, const GncInvoice *b) { - int compare; + int compare; - if (a == b) return 0; - if (!a && b) return -1; - if (a && !b) return 1; + if (a == b) return 0; + if (!a && b) return -1; + if (a && !b) return 1; - compare = safe_strcmp (a->id, b->id); - if (compare) return compare; + compare = safe_strcmp (a->id, b->id); + if (compare) return compare; - compare = timespec_cmp (&(a->date_opened), &(b->date_opened)); - if (compare) return compare; + compare = timespec_cmp (&(a->date_opened), &(b->date_opened)); + if (compare) return compare; - compare = timespec_cmp (&(a->date_posted), &(b->date_posted)); - if (compare) return compare; + compare = timespec_cmp (&(a->date_posted), &(b->date_posted)); + if (compare) return compare; - return qof_instance_guid_compare(a, b); + return qof_instance_guid_compare(a, b); } /* ============================================================= */ @@ -1736,119 +1811,132 @@ int gncInvoiceCompare (const GncInvoice *a, const GncInvoice *b) static const char * _gncInvoicePrintable (gpointer obj) { - GncInvoice *invoice = obj; + GncInvoice *invoice = obj; - g_return_val_if_fail (invoice, NULL); + g_return_val_if_fail (invoice, NULL); - if (qof_instance_get_dirty_flag(invoice) || invoice->printname == NULL) { - if (invoice->printname) g_free (invoice->printname); + if (qof_instance_get_dirty_flag(invoice) || invoice->printname == NULL) + { + if (invoice->printname) g_free (invoice->printname); - invoice->printname = - g_strdup_printf ("%s%s", invoice->id, - gncInvoiceIsPosted (invoice) ? _(" (posted)") : ""); - } + invoice->printname = + g_strdup_printf ("%s%s", invoice->id, + gncInvoiceIsPosted (invoice) ? _(" (posted)") : ""); + } - return invoice->printname; + return invoice->printname; } -static QofObject gncInvoiceDesc = +static QofObject gncInvoiceDesc = { - .interface_version = QOF_OBJECT_VERSION, - .e_type = _GNC_MOD_NAME, - .type_label = "Invoice", - .create = (gpointer)gncInvoiceCreate, - .book_begin = NULL, - .book_end = NULL, - .is_dirty = qof_collection_is_dirty, - .mark_clean = qof_collection_mark_clean, - .foreach = qof_collection_foreach, - .printable = _gncInvoicePrintable, - .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, + .interface_version = QOF_OBJECT_VERSION, + .e_type = _GNC_MOD_NAME, + .type_label = "Invoice", + .create = (gpointer)gncInvoiceCreate, + .book_begin = NULL, + .book_end = NULL, + .is_dirty = qof_collection_is_dirty, + .mark_clean = qof_collection_mark_clean, + .foreach = qof_collection_foreach, + .printable = _gncInvoicePrintable, + .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, }; static void reg_lot (void) { - static QofParam params[] = { - { INVOICE_FROM_LOT, _GNC_MOD_NAME, - (QofAccessFunc)gncInvoiceGetInvoiceFromLot, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { + INVOICE_FROM_LOT, _GNC_MOD_NAME, + (QofAccessFunc)gncInvoiceGetInvoiceFromLot, NULL + }, + { NULL }, + }; - qof_class_register (GNC_ID_LOT, NULL, params); + qof_class_register (GNC_ID_LOT, NULL, params); } static void reg_txn (void) { - static QofParam params[] = { - { INVOICE_FROM_TXN, _GNC_MOD_NAME, - (QofAccessFunc)gncInvoiceGetInvoiceFromTxn, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { + INVOICE_FROM_TXN, _GNC_MOD_NAME, + (QofAccessFunc)gncInvoiceGetInvoiceFromTxn, NULL + }, + { NULL }, + }; - qof_class_register (GNC_ID_TRANS, NULL, params); + qof_class_register (GNC_ID_TRANS, NULL, params); } gboolean gncInvoiceRegister (void) { - static QofParam params[] = { - { INVOICE_ID, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetID, (QofSetterFunc)gncInvoiceSetID }, - { INVOICE_OWNER, GNC_ID_OWNER, (QofAccessFunc)gncInvoiceGetOwner, NULL }, - { INVOICE_OPENED, QOF_TYPE_DATE, (QofAccessFunc)gncInvoiceGetDateOpened, (QofSetterFunc)gncInvoiceSetDateOpened }, - { INVOICE_DUE, QOF_TYPE_DATE, (QofAccessFunc)gncInvoiceGetDateDue, NULL }, - { INVOICE_POSTED, QOF_TYPE_DATE, (QofAccessFunc)gncInvoiceGetDatePosted, (QofSetterFunc)gncInvoiceSetDatePosted }, - { INVOICE_IS_POSTED, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncInvoiceIsPosted, NULL }, - { INVOICE_IS_PAID, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncInvoiceIsPaid, NULL }, - { INVOICE_BILLINGID, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetBillingID, (QofSetterFunc)gncInvoiceSetBillingID }, - { INVOICE_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetNotes, (QofSetterFunc)gncInvoiceSetNotes }, - { INVOICE_ACC, GNC_ID_ACCOUNT, (QofAccessFunc)gncInvoiceGetPostedAcc, (QofSetterFunc)gncInvoiceSetPostedAcc }, - { INVOICE_POST_TXN, GNC_ID_TRANS, (QofAccessFunc)gncInvoiceGetPostedTxn, (QofSetterFunc)gncInvoiceSetPostedTxn }, - { INVOICE_POST_LOT, GNC_ID_LOT, (QofAccessFunc)gncInvoiceGetPostedLot, NULL/*(QofSetterFunc)gncInvoiceSetPostedLot*/ }, - { INVOICE_TYPE, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetType, NULL }, - { INVOICE_TERMS, GNC_ID_BILLTERM, (QofAccessFunc)gncInvoiceGetTerms, (QofSetterFunc)gncInvoiceSetTerms }, - { INVOICE_BILLTO, GNC_ID_OWNER, (QofAccessFunc)gncInvoiceGetBillTo, NULL }, - { INVOICE_ENTRIES, QOF_TYPE_COLLECT, (QofAccessFunc)qofInvoiceGetEntries, (QofSetterFunc)qofInvoiceSetEntries }, - { INVOICE_JOB, GNC_ID_JOB, (QofAccessFunc)qofInvoiceGetJob, (QofSetterFunc)qofInvoiceSetJob }, - { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncInvoiceGetActive, (QofSetterFunc)gncInvoiceSetActive }, - { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, - { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { INVOICE_ID, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetID, (QofSetterFunc)gncInvoiceSetID }, + { INVOICE_OWNER, GNC_ID_OWNER, (QofAccessFunc)gncInvoiceGetOwner, NULL }, + { INVOICE_OPENED, QOF_TYPE_DATE, (QofAccessFunc)gncInvoiceGetDateOpened, (QofSetterFunc)gncInvoiceSetDateOpened }, + { INVOICE_DUE, QOF_TYPE_DATE, (QofAccessFunc)gncInvoiceGetDateDue, NULL }, + { INVOICE_POSTED, QOF_TYPE_DATE, (QofAccessFunc)gncInvoiceGetDatePosted, (QofSetterFunc)gncInvoiceSetDatePosted }, + { INVOICE_IS_POSTED, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncInvoiceIsPosted, NULL }, + { INVOICE_IS_PAID, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncInvoiceIsPaid, NULL }, + { INVOICE_BILLINGID, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetBillingID, (QofSetterFunc)gncInvoiceSetBillingID }, + { INVOICE_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetNotes, (QofSetterFunc)gncInvoiceSetNotes }, + { INVOICE_ACC, GNC_ID_ACCOUNT, (QofAccessFunc)gncInvoiceGetPostedAcc, (QofSetterFunc)gncInvoiceSetPostedAcc }, + { INVOICE_POST_TXN, GNC_ID_TRANS, (QofAccessFunc)gncInvoiceGetPostedTxn, (QofSetterFunc)gncInvoiceSetPostedTxn }, + { INVOICE_POST_LOT, GNC_ID_LOT, (QofAccessFunc)gncInvoiceGetPostedLot, NULL/*(QofSetterFunc)gncInvoiceSetPostedLot*/ }, + { INVOICE_TYPE, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetType, NULL }, + { INVOICE_TERMS, GNC_ID_BILLTERM, (QofAccessFunc)gncInvoiceGetTerms, (QofSetterFunc)gncInvoiceSetTerms }, + { INVOICE_BILLTO, GNC_ID_OWNER, (QofAccessFunc)gncInvoiceGetBillTo, NULL }, + { INVOICE_ENTRIES, QOF_TYPE_COLLECT, (QofAccessFunc)qofInvoiceGetEntries, (QofSetterFunc)qofInvoiceSetEntries }, + { INVOICE_JOB, GNC_ID_JOB, (QofAccessFunc)qofInvoiceGetJob, (QofSetterFunc)qofInvoiceSetJob }, + { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncInvoiceGetActive, (QofSetterFunc)gncInvoiceSetActive }, + { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, + { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, + { NULL }, + }; - qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncInvoiceCompare, params); - reg_lot (); - reg_txn (); + qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncInvoiceCompare, params); + reg_lot (); + reg_txn (); - /* Make the compiler happy... */ - if (0) { - qofInvoiceSetEntries(NULL, NULL); - qofInvoiceGetEntries(NULL); - qofInvoiceSetOwner(NULL, NULL); - qofInvoiceGetOwner(NULL); - qofInvoiceSetBillTo(NULL, NULL); - qofInvoiceGetBillTo(NULL); - } - if(!qof_choice_create(GNC_ID_INVOICE)) { return FALSE;} - return qof_object_register (&gncInvoiceDesc); + /* Make the compiler happy... */ + if (0) + { + qofInvoiceSetEntries(NULL, NULL); + qofInvoiceGetEntries(NULL); + qofInvoiceSetOwner(NULL, NULL); + qofInvoiceGetOwner(NULL); + qofInvoiceSetBillTo(NULL, NULL); + qofInvoiceGetBillTo(NULL); + } + if (!qof_choice_create(GNC_ID_INVOICE)) + { + return FALSE; + } + return qof_object_register (&gncInvoiceDesc); } gint64 gncInvoiceNextID (QofBook *book, GncOwner *owner) { - gint64 nextID; - switch(gncOwnerGetType(gncOwnerGetEndOwner(owner))) { + gint64 nextID; + switch (gncOwnerGetType(gncOwnerGetEndOwner(owner))) + { case GNC_OWNER_CUSTOMER: nextID = qof_book_get_counter (book, "gncInvoice"); break; case GNC_OWNER_VENDOR: - nextID = qof_book_get_counter (book, "gncBill"); - break; + nextID = qof_book_get_counter (book, "gncBill"); + break; case GNC_OWNER_EMPLOYEE: - nextID = qof_book_get_counter (book, "gncExpVoucher"); - break; + nextID = qof_book_get_counter (book, "gncExpVoucher"); + break; default: - nextID = qof_book_get_counter (book, _GNC_MOD_NAME); - break; - } - return nextID; + nextID = qof_book_get_counter (book, _GNC_MOD_NAME); + break; + } + return nextID; } diff --git a/src/business/business-core/gncInvoice.h b/src/business/business-core/gncInvoice.h index 66028e5af0..80b4af2410 100644 --- a/src/business/business-core/gncInvoice.h +++ b/src/business/business-core/gncInvoice.h @@ -23,12 +23,12 @@ @{ */ /** @addtogroup Invoice -An invoice holds a list of entries, a pointer to the customer, -and the job, the dates entered and posted, as well as the account, +An invoice holds a list of entries, a pointer to the customer, +and the job, the dates entered and posted, as well as the account, transaction and lot for the posted invoice. @{ */ /** @file gncInvoice.h - @brief Business Invoice Interface + @brief Business Invoice Interface @author Copyright (C) 2001,2006 Derek Atkins @author Copyright (c) 2005 Neil Williams */ @@ -64,13 +64,13 @@ typedef struct _gncInvoiceClass GncInvoiceClass; (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_INVOICE, GncInvoiceClass)) GType gnc_invoice_get_type(void); -/** @name Create/Destroy Functions +/** @name Create/Destroy Functions @{ */ GncInvoice *gncInvoiceCreate (QofBook *book); void gncInvoiceDestroy (GncInvoice *invoice); /** @} */ -/** @name Set Functions +/** @name Set Functions @{ */ void gncInvoiceSetID (GncInvoice *invoice, const char *id); void gncInvoiceSetOwner (GncInvoice *invoice, GncOwner *owner); @@ -101,7 +101,7 @@ void gncBillRemovePrice (GncInvoice *bill, GNCPrice *price); */ void gncInvoiceSortEntries (GncInvoice *invoice); -/** @name Get Functions +/** @name Get Functions @{ */ const char * gncInvoiceGetID (const GncInvoice *invoice); GncOwner * gncInvoiceGetOwner (GncInvoice *invoice); @@ -112,7 +112,7 @@ GncBillTerm * gncInvoiceGetTerms (const GncInvoice *invoice); const char * gncInvoiceGetBillingID (const GncInvoice *invoice); const char * gncInvoiceGetNotes (const GncInvoice *invoice); GncOwnerType gncInvoiceGetOwnerType (GncInvoice *invoice); -const char * gncInvoiceGetType (GncInvoice *invoice); +const char * gncInvoiceGetType (GncInvoice *invoice); gnc_commodity * gncInvoiceGetCurrency (const GncInvoice *invoice); GncOwner * gncInvoiceGetBillTo (GncInvoice *invoice); gnc_numeric gncInvoiceGetToChargeAmount (const GncInvoice *invoice); @@ -141,8 +141,8 @@ GNCPrice * gncInvoiceGetPrice(GncInvoice *invoice, gnc_commodity* commodity); */ Transaction * gncInvoicePostToAccount (GncInvoice *invoice, Account *acc, - Timespec *posted_date, Timespec *due_date, - const char *memo, gboolean accumulatesplits); + Timespec *posted_date, Timespec *due_date, + const char *memo, gboolean accumulatesplits); /** * UNpost this invoice. This will destroy the posted transaction and @@ -168,9 +168,9 @@ gncInvoiceUnpost (GncInvoice *invoice, gboolean reset_tax_tables); */ Transaction * gncOwnerApplyPayment (GncOwner *owner, GncInvoice *invoice, - Account *posted_acc, Account *xfer_acc, - gnc_numeric amount, gnc_numeric exch, Timespec date, - const char *memo, const char *num); + Account *posted_acc, Account *xfer_acc, + gnc_numeric amount, gnc_numeric exch, Timespec date, + const char *memo, const char *num); /** Given a transaction, find and return the Invoice */ @@ -180,7 +180,7 @@ GncInvoice * gncInvoiceGetInvoiceFromTxn (const Transaction *txn); GncInvoice * gncInvoiceGetInvoiceFromLot (GNCLot *lot); /** Return a pointer to the instance gncInvoice that is identified - * by the guid, and is residing in the book. Returns NULL if the + * by the guid, and is residing in the book. Returns NULL if the * instance can't be found. * Equivalent function prototype is * GncInvoice * gncInvoiceLookup (QofBook *book, const GUID *guid); diff --git a/src/business/business-core/gncInvoiceP.h b/src/business/business-core/gncInvoiceP.h index d91ae6b7b9..53fe5569ad 100644 --- a/src/business/business-core/gncInvoiceP.h +++ b/src/business/business-core/gncInvoiceP.h @@ -44,9 +44,9 @@ void gncInvoiceSetPaidTxn (GncInvoice *invoice, Transaction *txn); /** The gncCloneInvoice() routine makes a copy of the indicated * invoice, placing it in the indicated book. It copies - * the name, description, type, due-days, discount, etc. + * the name, description, type, due-days, discount, etc. * It also copies (as needed) both parents and children, so that - * the parent-child relationship is correctly mirrored in the + * the parent-child relationship is correctly mirrored in the * clone. * It then adds a pair of 'gemini' kvp pointers so that each copy * can be found from the other. @@ -60,7 +60,7 @@ GncInvoice * gncCloneInvoice (GncInvoice *from, QofBook *); * gncCloneInvoice()) and placed into the book. * * We called this routine 'Obtain' instead of "Get" to distinguish - * it from the other Get routines, which work in fundamentally + * it from the other Get routines, which work in fundamentally * different ways. */ GncInvoice * gncInvoiceObtainTwin (GncInvoice *from, QofBook *book); diff --git a/src/business/business-core/gncJob.c b/src/business/business-core/gncJob.c index 8cf7b6a57a..b784c8820b 100644 --- a/src/business/business-core/gncJob.c +++ b/src/business/business-core/gncJob.c @@ -36,19 +36,19 @@ #include "gncJobP.h" #include "gncOwnerP.h" -struct _gncJob +struct _gncJob { - QofInstance inst; - char * id; - char * name; - char * desc; - GncOwner owner; - gboolean active; + QofInstance inst; + char * id; + char * name; + char * desc; + GncOwner owner; + gboolean active; }; struct _gncJobClass { - QofInstanceClass parent_class; + QofInstanceClass parent_class; }; static QofLogModule log_module = GNC_MOD_BUSINESS; @@ -61,15 +61,16 @@ static QofLogModule log_module = GNC_MOD_BUSINESS; G_INLINE_FUNC void mark_job (GncJob *job); void mark_job (GncJob *job) { - qof_instance_set_dirty(&job->inst); - qof_event_gen (&job->inst, QOF_EVENT_MODIFY, NULL); + qof_instance_set_dirty(&job->inst); + qof_event_gen (&job->inst, QOF_EVENT_MODIFY, NULL); } /* ================================================================== */ -enum { +enum +{ PROP_0, - PROP_NAME + PROP_NAME }; /* GObject Initialization */ @@ -94,43 +95,45 @@ gnc_job_finalize(GObject* jobp) static void gnc_job_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GncJob *job; - - g_return_if_fail(GNC_IS_JOB(object)); - - job = GNC_JOB(object); - switch (prop_id) { - case PROP_NAME: - g_value_set_string(value, job->name); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} - -static void -gnc_job_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GncJob *job; g_return_if_fail(GNC_IS_JOB(object)); job = GNC_JOB(object); - switch (prop_id) { - case PROP_NAME: - gncJobSetName(job, g_value_get_string(value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NAME: + g_value_set_string(value, job->name); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +static void +gnc_job_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GncJob *job; + + g_return_if_fail(GNC_IS_JOB(object)); + + job = GNC_JOB(object); + switch (prop_id) + { + case PROP_NAME: + gncJobSetName(job, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } @@ -138,113 +141,114 @@ static void gnc_job_class_init (GncJobClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - + gobject_class->dispose = gnc_job_dispose; gobject_class->finalize = gnc_job_finalize; gobject_class->set_property = gnc_job_set_property; gobject_class->get_property = gnc_job_get_property; g_object_class_install_property - (gobject_class, - PROP_NAME, - g_param_spec_string ("name", - "Job Name", - "The job name is an arbitrary string " - "assigned by the user. It is intended to " - "a short character string that is displayed " - "by the GUI as the job mnemonic.", - NULL, - G_PARAM_READWRITE)); + (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "Job Name", + "The job name is an arbitrary string " + "assigned by the user. It is intended to " + "a short character string that is displayed " + "by the GUI as the job mnemonic.", + NULL, + G_PARAM_READWRITE)); } /* Create/Destroy Functions */ GncJob *gncJobCreate (QofBook *book) { - GncJob *job; + GncJob *job; - if (!book) return NULL; + if (!book) return NULL; - job = g_object_new (GNC_TYPE_JOB, NULL); - qof_instance_init_data (&job->inst, _GNC_MOD_NAME, book); + job = g_object_new (GNC_TYPE_JOB, NULL); + qof_instance_init_data (&job->inst, _GNC_MOD_NAME, book); - job->id = CACHE_INSERT (""); - job->name = CACHE_INSERT (""); - job->desc = CACHE_INSERT (""); - job->active = TRUE; + job->id = CACHE_INSERT (""); + job->name = CACHE_INSERT (""); + job->desc = CACHE_INSERT (""); + job->active = TRUE; - /* GncOwner not initialized */ - qof_event_gen (&job->inst, QOF_EVENT_CREATE, NULL); + /* GncOwner not initialized */ + qof_event_gen (&job->inst, QOF_EVENT_CREATE, NULL); - return job; + return job; } GncJob * gncCloneJob (GncJob *from, QofBook *book) { - GncJob *job; - - if (!book) return NULL; - - job = g_object_new (GNC_TYPE_JOB, NULL); - qof_instance_init_data (&job->inst, _GNC_MOD_NAME, book); - qof_instance_gemini (&job->inst, &from->inst); - - job->id = CACHE_INSERT (from->id); - job->name = CACHE_INSERT (from->name); - job->desc = CACHE_INSERT (from->desc); - job->active = from->active; + GncJob *job; - job->owner = gncCloneOwner(&from->owner, book); + if (!book) return NULL; - qof_event_gen (&job->inst, QOF_EVENT_CREATE, NULL); - - return job; + job = g_object_new (GNC_TYPE_JOB, NULL); + qof_instance_init_data (&job->inst, _GNC_MOD_NAME, book); + qof_instance_gemini (&job->inst, &from->inst); + + job->id = CACHE_INSERT (from->id); + job->name = CACHE_INSERT (from->name); + job->desc = CACHE_INSERT (from->desc); + job->active = from->active; + + job->owner = gncCloneOwner(&from->owner, book); + + qof_event_gen (&job->inst, QOF_EVENT_CREATE, NULL); + + return job; } void gncJobDestroy (GncJob *job) { - if (!job) return; - qof_instance_set_destroying(job, TRUE); - gncJobCommitEdit (job); + if (!job) return; + qof_instance_set_destroying(job, TRUE); + gncJobCommitEdit (job); } static void gncJobFree (GncJob *job) { - if (!job) return; + if (!job) return; - qof_event_gen (&job->inst, QOF_EVENT_DESTROY, NULL); + qof_event_gen (&job->inst, QOF_EVENT_DESTROY, NULL); - CACHE_REMOVE (job->id); - CACHE_REMOVE (job->name); - CACHE_REMOVE (job->desc); + CACHE_REMOVE (job->id); + CACHE_REMOVE (job->name); + CACHE_REMOVE (job->desc); - switch (gncOwnerGetType (&(job->owner))) { - case GNC_OWNER_CUSTOMER: - gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job); - break; - case GNC_OWNER_VENDOR: - gncVendorRemoveJob (gncOwnerGetVendor(&job->owner), job); - break; - default: - break; - } + switch (gncOwnerGetType (&(job->owner))) + { + case GNC_OWNER_CUSTOMER: + gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job); + break; + case GNC_OWNER_VENDOR: + gncVendorRemoveJob (gncOwnerGetVendor(&job->owner), job); + break; + default: + break; + } - /* qof_instance_release (&job->inst); */ - g_object_unref (job); + /* qof_instance_release (&job->inst); */ + g_object_unref (job); } GncJob * gncJobObtainTwin (GncJob *from, QofBook *book) { - GncJob *job; - if (!from) return NULL; - - job = (GncJob *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); - if (!job) - { - job = gncCloneJob (from, book); - } - return job; + GncJob *job; + if (!from) return NULL; + + job = (GncJob *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); + if (!job) + { + job = gncCloneJob (from, book); + } + return job; } /* ================================================================== */ @@ -262,120 +266,126 @@ gncJobObtainTwin (GncJob *from, QofBook *book) void gncJobSetID (GncJob *job, const char *id) { - if (!job) return; - if (!id) return; - SET_STR(job, job->id, id); - mark_job (job); - gncJobCommitEdit (job); + if (!job) return; + if (!id) return; + SET_STR(job, job->id, id); + mark_job (job); + gncJobCommitEdit (job); } void gncJobSetName (GncJob *job, const char *name) { - if (!job) return; - if (!name) return; - SET_STR(job, job->name, name); - mark_job (job); - gncJobCommitEdit (job); + if (!job) return; + if (!name) return; + SET_STR(job, job->name, name); + mark_job (job); + gncJobCommitEdit (job); } void gncJobSetReference (GncJob *job, const char *desc) { - if (!job) return; - if (!desc) return; - SET_STR(job, job->desc, desc); - mark_job (job); - gncJobCommitEdit (job); + if (!job) return; + if (!desc) return; + SET_STR(job, job->desc, desc); + mark_job (job); + gncJobCommitEdit (job); } void gncJobSetOwner (GncJob *job, GncOwner *owner) { - if (!job) return; - if (!owner) return; - if (gncOwnerEqual (owner, &(job->owner))) return; + if (!job) return; + if (!owner) return; + if (gncOwnerEqual (owner, &(job->owner))) return; - switch (gncOwnerGetType (owner)) { - case GNC_OWNER_CUSTOMER: - case GNC_OWNER_VENDOR: - break; - default: - PERR("Unsupported Owner type: %d", gncOwnerGetType(owner)); - return; - } + switch (gncOwnerGetType (owner)) + { + case GNC_OWNER_CUSTOMER: + case GNC_OWNER_VENDOR: + break; + default: + PERR("Unsupported Owner type: %d", gncOwnerGetType(owner)); + return; + } - gncJobBeginEdit (job); + gncJobBeginEdit (job); - switch (gncOwnerGetType (&(job->owner))) { - case GNC_OWNER_CUSTOMER: - gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job); - break; - case GNC_OWNER_VENDOR: - gncVendorRemoveJob (gncOwnerGetVendor(&job->owner), job); - break; - default: - break; - } + switch (gncOwnerGetType (&(job->owner))) + { + case GNC_OWNER_CUSTOMER: + gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job); + break; + case GNC_OWNER_VENDOR: + gncVendorRemoveJob (gncOwnerGetVendor(&job->owner), job); + break; + default: + break; + } - gncOwnerCopy (owner, &(job->owner)); + gncOwnerCopy (owner, &(job->owner)); - switch (gncOwnerGetType (&(job->owner))) { - case GNC_OWNER_CUSTOMER: - gncCustomerAddJob (gncOwnerGetCustomer(&job->owner), job); - break; - case GNC_OWNER_VENDOR: - gncVendorAddJob (gncOwnerGetVendor(&job->owner), job); - break; - default: - break; - } + switch (gncOwnerGetType (&(job->owner))) + { + case GNC_OWNER_CUSTOMER: + gncCustomerAddJob (gncOwnerGetCustomer(&job->owner), job); + break; + case GNC_OWNER_VENDOR: + gncVendorAddJob (gncOwnerGetVendor(&job->owner), job); + break; + default: + break; + } - mark_job (job); - gncJobCommitEdit (job); + mark_job (job); + gncJobCommitEdit (job); } void gncJobSetActive (GncJob *job, gboolean active) { - if (!job) return; - if (active == job->active) return; - gncJobBeginEdit (job); - job->active = active; - mark_job (job); - gncJobCommitEdit (job); + if (!job) return; + if (active == job->active) return; + gncJobBeginEdit (job); + job->active = active; + mark_job (job); + gncJobCommitEdit (job); } static void qofJobSetOwner (GncJob *job, QofInstance *ent) { - if(!job || !ent) { return; } - qof_begin_edit(&job->inst); - qofOwnerSetEntity(&job->owner, ent); - mark_job (job); - qof_commit_edit(&job->inst); + if (!job || !ent) + { + return; + } + qof_begin_edit(&job->inst); + qofOwnerSetEntity(&job->owner, ent); + mark_job (job); + qof_commit_edit(&job->inst); } void gncJobBeginEdit (GncJob *job) { - qof_begin_edit(&job->inst); + qof_begin_edit(&job->inst); } static void gncJobOnError (QofInstance *inst, QofBackendError errcode) { - PERR("Job QofBackend Failure: %d", errcode); - gnc_engine_signal_commit_error( errcode ); + PERR("Job QofBackend Failure: %d", errcode); + gnc_engine_signal_commit_error( errcode ); } static void job_free (QofInstance *inst) { - GncJob *job = (GncJob *)inst; - gncJobFree (job); + GncJob *job = (GncJob *)inst; + gncJobFree (job); } static void gncJobOnDone (QofInstance *qof) { } void gncJobCommitEdit (GncJob *job) { - if (!qof_commit_edit (QOF_INSTANCE(job))) return; - qof_commit_edit_part2 (&job->inst, gncJobOnError, - gncJobOnDone, job_free); + if (!qof_commit_edit (QOF_INSTANCE(job))) return; + qof_commit_edit_part2 (&job->inst, gncJobOnError, + gncJobOnDone, job_free); } /* ================================================================== */ @@ -383,49 +393,53 @@ void gncJobCommitEdit (GncJob *job) const char * gncJobGetID (const GncJob *job) { - if (!job) return NULL; - return job->id; + if (!job) return NULL; + return job->id; } const char * gncJobGetName (const GncJob *job) { - if (!job) return NULL; - return job->name; + if (!job) return NULL; + return job->name; } const char * gncJobGetReference (const GncJob *job) { - if (!job) return NULL; - return job->desc; + if (!job) return NULL; + return job->desc; } GncOwner * gncJobGetOwner (GncJob *job) { - if (!job) return NULL; - return &(job->owner); + if (!job) return NULL; + return &(job->owner); } gboolean gncJobGetActive (const GncJob *job) { - if (!job) return FALSE; - return job->active; + if (!job) return FALSE; + return job->active; } static QofInstance* qofJobGetOwner (GncJob *job) { - if(!job) { return NULL; } - return QOF_INSTANCE(qofOwnerGetOwner(&job->owner)); + if (!job) + { + return NULL; + } + return QOF_INSTANCE(qofOwnerGetOwner(&job->owner)); } /* Other functions */ -int gncJobCompare (const GncJob * a, const GncJob *b) { - if (!a && !b) return 0; - if (!a && b) return 1; - if (a && !b) return -1; +int gncJobCompare (const GncJob * a, const GncJob *b) +{ + if (!a && !b) return 0; + if (!a && b) return 1; + if (a && !b) return -1; - return (safe_strcmp(a->id, b->id)); + return (safe_strcmp(a->id, b->id)); } /* ================================================================== */ @@ -433,57 +447,64 @@ int gncJobCompare (const GncJob * a, const GncJob *b) { static const char * _gncJobPrintable (gpointer item) { - GncJob *c; - if (!item) return NULL; - c = item; - return c->name; + GncJob *c; + if (!item) return NULL; + c = item; + return c->name; } -static QofObject gncJobDesc = +static QofObject gncJobDesc = { - .interface_version = QOF_OBJECT_VERSION, - .e_type = _GNC_MOD_NAME, - .type_label = "Job", - .create = (gpointer)gncJobCreate, - .book_begin = NULL, - .book_end = NULL, - .is_dirty = qof_collection_is_dirty, - .mark_clean = qof_collection_mark_clean, - .foreach = qof_collection_foreach, - .printable = _gncJobPrintable, - .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, + .interface_version = QOF_OBJECT_VERSION, + .e_type = _GNC_MOD_NAME, + .type_label = "Job", + .create = (gpointer)gncJobCreate, + .book_begin = NULL, + .book_end = NULL, + .is_dirty = qof_collection_is_dirty, + .mark_clean = qof_collection_mark_clean, + .foreach = qof_collection_foreach, + .printable = _gncJobPrintable, + .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, }; gboolean gncJobRegister (void) { - static QofParam params[] = { - { JOB_ID, QOF_TYPE_STRING, (QofAccessFunc)gncJobGetID, (QofSetterFunc)gncJobSetID }, - { JOB_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncJobGetName, (QofSetterFunc)gncJobSetName }, - { JOB_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncJobGetActive, (QofSetterFunc)gncJobSetActive }, - { JOB_REFERENCE, QOF_TYPE_STRING, (QofAccessFunc)gncJobGetReference, (QofSetterFunc)gncJobSetReference }, + static QofParam params[] = + { + { JOB_ID, QOF_TYPE_STRING, (QofAccessFunc)gncJobGetID, (QofSetterFunc)gncJobSetID }, + { JOB_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncJobGetName, (QofSetterFunc)gncJobSetName }, + { JOB_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncJobGetActive, (QofSetterFunc)gncJobSetActive }, + { JOB_REFERENCE, QOF_TYPE_STRING, (QofAccessFunc)gncJobGetReference, (QofSetterFunc)gncJobSetReference }, #ifdef GNUCASH_MAJOR_VERSION - { JOB_OWNER, GNC_ID_OWNER, (QofAccessFunc)gncJobGetOwner, NULL }, + { JOB_OWNER, GNC_ID_OWNER, (QofAccessFunc)gncJobGetOwner, NULL }, #else - { JOB_OWNER, QOF_TYPE_CHOICE, (QofAccessFunc)qofJobGetOwner, (QofSetterFunc)qofJobSetOwner }, + { JOB_OWNER, QOF_TYPE_CHOICE, (QofAccessFunc)qofJobGetOwner, (QofSetterFunc)qofJobSetOwner }, #endif - { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncJobGetActive, NULL }, - { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, - { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, - { NULL }, - }; + { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncJobGetActive, NULL }, + { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, + { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, + { NULL }, + }; - if(!qof_choice_create(GNC_ID_JOB)) { return FALSE; } - if(!qof_choice_add_class(GNC_ID_INVOICE, GNC_ID_JOB, INVOICE_OWNER)) { return FALSE; } + if (!qof_choice_create(GNC_ID_JOB)) + { + return FALSE; + } + if (!qof_choice_add_class(GNC_ID_INVOICE, GNC_ID_JOB, INVOICE_OWNER)) + { + return FALSE; + } - qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncJobCompare, params); + qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncJobCompare, params); #ifdef GNUCASH_MAJOR_VERSION - qofJobGetOwner(NULL); - qofJobSetOwner(NULL, NULL); + qofJobGetOwner(NULL); + qofJobSetOwner(NULL, NULL); #endif - return qof_object_register (&gncJobDesc); + return qof_object_register (&gncJobDesc); } gint64 gncJobNextID (QofBook *book) { - return qof_book_get_counter (book, _GNC_MOD_NAME); + return qof_book_get_counter (book, _GNC_MOD_NAME); } diff --git a/src/business/business-core/gncOrder.c b/src/business/business-core/gncOrder.c index 865436f012..002f04ff56 100644 --- a/src/business/business-core/gncOrder.c +++ b/src/business/business-core/gncOrder.c @@ -37,25 +37,25 @@ #include "gncOwner.h" #include "gncOwnerP.h" -struct _gncOrder +struct _gncOrder { - QofInstance inst; + QofInstance inst; - char * id; - char * notes; - gboolean active; + char * id; + char * notes; + gboolean active; - char * reference; - char * printname; - GncOwner owner; - GList * entries; - Timespec opened; - Timespec closed; + char * reference; + char * printname; + GncOwner owner; + GList * entries; + Timespec opened; + Timespec closed; }; struct _gncOrderClass { - QofInstanceClass parent_class; + QofInstanceClass parent_class; }; static QofLogModule log_module = GNC_MOD_BUSINESS; @@ -75,15 +75,16 @@ static QofLogModule log_module = GNC_MOD_BUSINESS; G_INLINE_FUNC void mark_order (GncOrder *order); void mark_order (GncOrder *order) { - qof_instance_set_dirty(&order->inst); - qof_event_gen (&order->inst, QOF_EVENT_MODIFY, NULL); + qof_instance_set_dirty(&order->inst); + qof_event_gen (&order->inst, QOF_EVENT_MODIFY, NULL); } /* =============================================================== */ -enum { +enum +{ PROP_0, - PROP_NOTES + PROP_NOTES }; /* GObject Initialization */ @@ -108,43 +109,45 @@ gnc_order_finalize(GObject* orderp) static void gnc_order_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GncOrder *order; g_return_if_fail(GNC_IS_ORDER(object)); order = GNC_ORDER(object); - switch (prop_id) { - case PROP_NOTES: - g_value_set_string(value, order->notes); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NOTES: + g_value_set_string(value, order->notes); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } static void gnc_order_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GncOrder *order; g_return_if_fail(GNC_IS_ORDER(object)); order = GNC_ORDER(object); - switch (prop_id) { - case PROP_NOTES: - gncOrderSetNotes(order, g_value_get_string(value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NOTES: + gncOrderSetNotes(order, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } @@ -152,118 +155,118 @@ static void gnc_order_class_init (GncOrderClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - + gobject_class->dispose = gnc_order_dispose; gobject_class->finalize = gnc_order_finalize; gobject_class->set_property = gnc_order_set_property; gobject_class->get_property = gnc_order_get_property; g_object_class_install_property - (gobject_class, - PROP_NOTES, - g_param_spec_string ("name", - "Order Notes", - "The order notes is an arbitrary string " - "assigned by the user to provide notes about " - "this order.", - NULL, - G_PARAM_READWRITE)); + (gobject_class, + PROP_NOTES, + g_param_spec_string ("name", + "Order Notes", + "The order notes is an arbitrary string " + "assigned by the user to provide notes about " + "this order.", + NULL, + G_PARAM_READWRITE)); } /* Create/Destroy Functions */ GncOrder *gncOrderCreate (QofBook *book) { - GncOrder *order; + GncOrder *order; - if (!book) return NULL; + if (!book) return NULL; - order = g_object_new (GNC_TYPE_ORDER, NULL); - qof_instance_init_data (&order->inst, _GNC_MOD_NAME, book); + order = g_object_new (GNC_TYPE_ORDER, NULL); + qof_instance_init_data (&order->inst, _GNC_MOD_NAME, book); - order->id = CACHE_INSERT (""); - order->notes = CACHE_INSERT (""); - order->reference = CACHE_INSERT (""); + order->id = CACHE_INSERT (""); + order->notes = CACHE_INSERT (""); + order->reference = CACHE_INSERT (""); - order->active = TRUE; + order->active = TRUE; - qof_event_gen (&order->inst, QOF_EVENT_CREATE, NULL); + qof_event_gen (&order->inst, QOF_EVENT_CREATE, NULL); - return order; + return order; } void gncOrderDestroy (GncOrder *order) { - if (!order) return; - qof_instance_set_destroying(order, TRUE); - gncOrderCommitEdit (order); + if (!order) return; + qof_instance_set_destroying(order, TRUE); + gncOrderCommitEdit (order); } static void gncOrderFree (GncOrder *order) { - if (!order) return; + if (!order) return; - qof_event_gen (&order->inst, QOF_EVENT_DESTROY, NULL); + qof_event_gen (&order->inst, QOF_EVENT_DESTROY, NULL); - g_list_free (order->entries); - CACHE_REMOVE (order->id); - CACHE_REMOVE (order->notes); - CACHE_REMOVE (order->reference); + g_list_free (order->entries); + CACHE_REMOVE (order->id); + CACHE_REMOVE (order->notes); + CACHE_REMOVE (order->reference); - if (order->printname) g_free (order->printname); + if (order->printname) g_free (order->printname); - /* qof_instance_release (&order->inst); */ - g_object_unref (order); + /* qof_instance_release (&order->inst); */ + g_object_unref (order); } GncOrder * gncCloneOrder (GncOrder *from, QofBook *book) { - GList *node; - GncOrder *order; + GList *node; + GncOrder *order; - if (!book) return NULL; + if (!book) return NULL; - order = g_object_new (GNC_TYPE_ORDER, NULL); - qof_instance_init_data (&order->inst, _GNC_MOD_NAME, book); - qof_instance_gemini (&order->inst, &from->inst); + order = g_object_new (GNC_TYPE_ORDER, NULL); + qof_instance_init_data (&order->inst, _GNC_MOD_NAME, book); + qof_instance_gemini (&order->inst, &from->inst); - order->id = CACHE_INSERT (from->id); - order->notes = CACHE_INSERT (from->notes); - order->reference = CACHE_INSERT (from->reference); + order->id = CACHE_INSERT (from->id); + order->notes = CACHE_INSERT (from->notes); + order->reference = CACHE_INSERT (from->reference); - order->active = from->active; - order->printname = NULL; /* yes, null, that's right */ - order->opened = from->opened; - order->closed = from->closed; + order->active = from->active; + order->printname = NULL; /* yes, null, that's right */ + order->opened = from->opened; + order->closed = from->closed; - order->owner = gncCloneOwner (&from->owner, book); + order->owner = gncCloneOwner (&from->owner, book); - order->entries = NULL; - for (node = g_list_last(from->entries); node; node=node->prev) - { - GncEntry *entry = node->data; - entry = gncEntryObtainTwin (entry, book); - order->entries = g_list_prepend (order->entries, entry); - } + order->entries = NULL; + for (node = g_list_last(from->entries); node; node = node->prev) + { + GncEntry *entry = node->data; + entry = gncEntryObtainTwin (entry, book); + order->entries = g_list_prepend (order->entries, entry); + } - qof_event_gen (&order->inst, QOF_EVENT_CREATE, NULL); + qof_event_gen (&order->inst, QOF_EVENT_CREATE, NULL); - return order; + return order; } GncOrder * gncOrderObtainTwin (GncOrder *from, QofBook *book) { - GncOrder *order; - if (!book) return NULL; + GncOrder *order; + if (!book) return NULL; - order = (GncOrder *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); - if (!order) - { - order = gncCloneOrder (from, book); - } + order = (GncOrder *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); + if (!order) + { + order = gncCloneOrder (from, book); + } - return order; + return order; } /* =============================================================== */ @@ -271,264 +274,270 @@ gncOrderObtainTwin (GncOrder *from, QofBook *book) void gncOrderSetID (GncOrder *order, const char *id) { - if (!order || !id) return; - SET_STR (order, order->id, id); - mark_order (order); - gncOrderCommitEdit (order); + if (!order || !id) return; + SET_STR (order, order->id, id); + mark_order (order); + gncOrderCommitEdit (order); } void gncOrderSetOwner (GncOrder *order, GncOwner *owner) { - if (!order || !owner) return; - if (gncOwnerEqual (&order->owner, owner)) return; + if (!order || !owner) return; + if (gncOwnerEqual (&order->owner, owner)) return; - gncOrderBeginEdit (order); - gncOwnerCopy (owner, &order->owner); - mark_order (order); - gncOrderCommitEdit (order); + gncOrderBeginEdit (order); + gncOwnerCopy (owner, &order->owner); + mark_order (order); + gncOrderCommitEdit (order); } void gncOrderSetDateOpened (GncOrder *order, Timespec date) { - if (!order) return; - if (timespec_equal (&order->opened, &date)) return; - gncOrderBeginEdit (order); - order->opened = date; - mark_order (order); - gncOrderCommitEdit (order); + if (!order) return; + if (timespec_equal (&order->opened, &date)) return; + gncOrderBeginEdit (order); + order->opened = date; + mark_order (order); + gncOrderCommitEdit (order); } void gncOrderSetDateClosed (GncOrder *order, Timespec date) { - if (!order) return; - if (timespec_equal (&order->closed, &date)) return; - gncOrderBeginEdit (order); - order->closed = date; - mark_order (order); - gncOrderCommitEdit (order); + if (!order) return; + if (timespec_equal (&order->closed, &date)) return; + gncOrderBeginEdit (order); + order->closed = date; + mark_order (order); + gncOrderCommitEdit (order); } void gncOrderSetNotes (GncOrder *order, const char *notes) { - if (!order || !notes) return; - SET_STR (order, order->notes, notes); - mark_order (order); - gncOrderCommitEdit (order); + if (!order || !notes) return; + SET_STR (order, order->notes, notes); + mark_order (order); + gncOrderCommitEdit (order); } void gncOrderSetReference (GncOrder *order, const char *reference) { - if (!order || !reference) return; - SET_STR (order, order->reference, reference); - mark_order (order); - gncOrderCommitEdit (order); + if (!order || !reference) return; + SET_STR (order, order->reference, reference); + mark_order (order); + gncOrderCommitEdit (order); } void gncOrderSetActive (GncOrder *order, gboolean active) { - if (!order) return; - if (order->active == active) return; - gncOrderBeginEdit (order); - order->active = active; - mark_order (order); - gncOrderCommitEdit (order); + if (!order) return; + if (order->active == active) return; + gncOrderBeginEdit (order); + order->active = active; + mark_order (order); + gncOrderCommitEdit (order); } /* =============================================================== */ /* Add an Entry to the Order */ void gncOrderAddEntry (GncOrder *order, GncEntry *entry) { - GncOrder *old; + GncOrder *old; - if (!order || !entry) return; + if (!order || !entry) return; - old = gncEntryGetOrder (entry); - if (old == order) return; /* I already own it */ - if (old) gncOrderRemoveEntry (old, entry); + old = gncEntryGetOrder (entry); + if (old == order) return; /* I already own it */ + if (old) gncOrderRemoveEntry (old, entry); - order->entries = g_list_insert_sorted (order->entries, entry, - (GCompareFunc)gncEntryCompare); + order->entries = g_list_insert_sorted (order->entries, entry, + (GCompareFunc)gncEntryCompare); - /* This will send out an event -- make sure we're attached */ - gncEntrySetOrder (entry, order); - mark_order (order); + /* This will send out an event -- make sure we're attached */ + gncEntrySetOrder (entry, order); + mark_order (order); } void gncOrderRemoveEntry (GncOrder *order, GncEntry *entry) { - if (!order || !entry) return; + if (!order || !entry) return; - gncEntrySetOrder (entry, NULL); - order->entries = g_list_remove (order->entries, entry); - mark_order (order); + gncEntrySetOrder (entry, NULL); + order->entries = g_list_remove (order->entries, entry); + mark_order (order); } /* Get Functions */ const char * gncOrderGetID (const GncOrder *order) { - if (!order) return NULL; - return order->id; + if (!order) return NULL; + return order->id; } GncOwner * gncOrderGetOwner (GncOrder *order) { - if (!order) return NULL; - return &order->owner; + if (!order) return NULL; + return &order->owner; } Timespec gncOrderGetDateOpened (const GncOrder *order) { - Timespec ts; ts.tv_sec = 0; ts.tv_nsec = 0; - if (!order) return ts; - return order->opened; + Timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 0; + if (!order) return ts; + return order->opened; } Timespec gncOrderGetDateClosed (const GncOrder *order) { - Timespec ts; ts.tv_sec = 0; ts.tv_nsec = 0; - if (!order) return ts; - return order->closed; + Timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 0; + if (!order) return ts; + return order->closed; } const char * gncOrderGetNotes (const GncOrder *order) { - if (!order) return NULL; - return order->notes; + if (!order) return NULL; + return order->notes; } const char * gncOrderGetReference (const GncOrder *order) { - if (!order) return NULL; - return order->reference; + if (!order) return NULL; + return order->reference; } gboolean gncOrderGetActive (const GncOrder *order) { - if (!order) return FALSE; - return order->active; + if (!order) return FALSE; + return order->active; } /* Get the list Entries */ GList * gncOrderGetEntries (GncOrder *order) { - if (!order) return NULL; - return order->entries; + if (!order) return NULL; + return order->entries; } gboolean gncOrderIsClosed (const GncOrder *order) { - if (!order) return FALSE; - if (order->closed.tv_sec || order->closed.tv_nsec) return TRUE; - return FALSE; + if (!order) return FALSE; + if (order->closed.tv_sec || order->closed.tv_nsec) return TRUE; + return FALSE; } /* =============================================================== */ void gncOrderBeginEdit (GncOrder *order) { - qof_begin_edit(&order->inst); + qof_begin_edit(&order->inst); } static void gncOrderOnError (QofInstance *order, QofBackendError errcode) { - PERR("Order QofBackend Failure: %d", errcode); - gnc_engine_signal_commit_error( errcode ); + PERR("Order QofBackend Failure: %d", errcode); + gnc_engine_signal_commit_error( errcode ); } static void gncOrderOnDone (QofInstance *order) {} static void order_free (QofInstance *inst) { - GncOrder *order = (GncOrder *) inst; - gncOrderFree (order); + GncOrder *order = (GncOrder *) inst; + gncOrderFree (order); } void gncOrderCommitEdit (GncOrder *order) { - if (!qof_commit_edit (QOF_INSTANCE(order))) return; - qof_commit_edit_part2 (&order->inst, gncOrderOnError, - gncOrderOnDone, order_free); + if (!qof_commit_edit (QOF_INSTANCE(order))) return; + qof_commit_edit_part2 (&order->inst, gncOrderOnError, + gncOrderOnDone, order_free); } int gncOrderCompare (const GncOrder *a, const GncOrder *b) { - int compare; + int compare; - if (a == b) return 0; - if (!a && b) return -1; - if (a && !b) return 1; + if (a == b) return 0; + if (!a && b) return -1; + if (a && !b) return 1; - compare = safe_strcmp (a->id, b->id); - if (compare) return compare; + compare = safe_strcmp (a->id, b->id); + if (compare) return compare; - compare = timespec_cmp (&(a->opened), &(b->opened)); - if (compare) return compare; + compare = timespec_cmp (&(a->opened), &(b->opened)); + if (compare) return compare; - compare = timespec_cmp (&(a->closed), &(b->closed)); - if (compare) return compare; + compare = timespec_cmp (&(a->closed), &(b->closed)); + if (compare) return compare; - return qof_instance_guid_compare(a, b); + return qof_instance_guid_compare(a, b); } /* =========================================================== */ /* Package-Private functions */ -static const char * +static const char * _gncOrderPrintable (gpointer obj) { - GncOrder *order = obj; + GncOrder *order = obj; - g_return_val_if_fail (order, NULL); + g_return_val_if_fail (order, NULL); - if (qof_instance_get_dirty_flag(order) || order->printname == NULL) { - if (order->printname) g_free (order->printname); + if (qof_instance_get_dirty_flag(order) || order->printname == NULL) + { + if (order->printname) g_free (order->printname); - order->printname = - g_strdup_printf ("%s%s", order->id, - gncOrderIsClosed (order) ? _(" (closed)") : ""); - } + order->printname = + g_strdup_printf ("%s%s", order->id, + gncOrderIsClosed (order) ? _(" (closed)") : ""); + } - return order->printname; + return order->printname; } static QofObject gncOrderDesc = { - .interface_version = QOF_OBJECT_VERSION, - .e_type = _GNC_MOD_NAME, - .type_label = "Order", - .create = (gpointer)gncOrderCreate, - .book_begin = NULL, - .book_end = NULL, - .is_dirty = qof_collection_is_dirty, - .mark_clean = qof_collection_mark_clean, - .foreach = qof_collection_foreach, - .printable = _gncOrderPrintable, - .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, + .interface_version = QOF_OBJECT_VERSION, + .e_type = _GNC_MOD_NAME, + .type_label = "Order", + .create = (gpointer)gncOrderCreate, + .book_begin = NULL, + .book_end = NULL, + .is_dirty = qof_collection_is_dirty, + .mark_clean = qof_collection_mark_clean, + .foreach = qof_collection_foreach, + .printable = _gncOrderPrintable, + .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, }; gboolean gncOrderRegister (void) { - static QofParam params[] = { - { ORDER_ID, QOF_TYPE_STRING, (QofAccessFunc)gncOrderGetID, (QofSetterFunc)gncOrderSetID }, - { ORDER_REFERENCE, QOF_TYPE_STRING, (QofAccessFunc)gncOrderGetReference, (QofSetterFunc)gncOrderSetReference }, - { ORDER_OWNER, GNC_ID_OWNER, (QofAccessFunc)gncOrderGetOwner, (QofSetterFunc)gncOrderSetOwner }, - { ORDER_OPENED, QOF_TYPE_DATE, (QofAccessFunc)gncOrderGetDateOpened, (QofSetterFunc)gncOrderSetDateOpened }, - { ORDER_IS_CLOSED, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncOrderIsClosed, NULL }, - { ORDER_CLOSED, QOF_TYPE_DATE, (QofAccessFunc)gncOrderGetDateClosed, (QofSetterFunc)gncOrderSetDateClosed }, - { ORDER_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncOrderGetNotes, (QofSetterFunc)gncOrderSetNotes }, - { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncOrderGetActive, (QofSetterFunc)gncOrderSetActive }, - { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, - { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { ORDER_ID, QOF_TYPE_STRING, (QofAccessFunc)gncOrderGetID, (QofSetterFunc)gncOrderSetID }, + { ORDER_REFERENCE, QOF_TYPE_STRING, (QofAccessFunc)gncOrderGetReference, (QofSetterFunc)gncOrderSetReference }, + { ORDER_OWNER, GNC_ID_OWNER, (QofAccessFunc)gncOrderGetOwner, (QofSetterFunc)gncOrderSetOwner }, + { ORDER_OPENED, QOF_TYPE_DATE, (QofAccessFunc)gncOrderGetDateOpened, (QofSetterFunc)gncOrderSetDateOpened }, + { ORDER_IS_CLOSED, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncOrderIsClosed, NULL }, + { ORDER_CLOSED, QOF_TYPE_DATE, (QofAccessFunc)gncOrderGetDateClosed, (QofSetterFunc)gncOrderSetDateClosed }, + { ORDER_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncOrderGetNotes, (QofSetterFunc)gncOrderSetNotes }, + { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncOrderGetActive, (QofSetterFunc)gncOrderSetActive }, + { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, + { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, + { NULL }, + }; - qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncOrderCompare, params); + qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncOrderCompare, params); - return qof_object_register (&gncOrderDesc); + return qof_object_register (&gncOrderDesc); } gint64 gncOrderNextID (QofBook *book) { - return qof_book_get_counter (book, _GNC_MOD_NAME); + return qof_book_get_counter (book, _GNC_MOD_NAME); } diff --git a/src/business/business-core/gncOrder.h b/src/business/business-core/gncOrder.h index 215f4fd144..696c2dfd6e 100644 --- a/src/business/business-core/gncOrder.h +++ b/src/business/business-core/gncOrder.h @@ -96,7 +96,7 @@ int gncOrderCompare (const GncOrder *a, const GncOrder *b); gboolean gncOrderIsClosed (const GncOrder *order); /** Return a pointer to the instance gncOrder that is identified - * by the guid, and is residing in the book. Returns NULL if the + * by the guid, and is residing in the book. Returns NULL if the * instance can't be found. * Equivalent function prototype is * GncOrder * gncOrderLookup (QofBook *book, const GUID *guid); diff --git a/src/business/business-core/gncOrderP.h b/src/business/business-core/gncOrderP.h index 8cc0d392d2..7a5dd81bb7 100644 --- a/src/business/business-core/gncOrderP.h +++ b/src/business/business-core/gncOrderP.h @@ -49,7 +49,7 @@ GncOrder * gncCloneOrder (GncOrder *from, QofBook *); * gncCloneOrder()) and placed into the book. * * We called this routine 'Obtain' instead of "Get" to distinguish - * it from the other Get routines, which work in fundamentally + * it from the other Get routines, which work in fundamentally * different ways. */ GncOrder * gncOrderObtainTwin (GncOrder *from, QofBook *book); diff --git a/src/business/business-core/gncOwner.c b/src/business/business-core/gncOwner.c index 3df3d3e68c..ec99b05008 100644 --- a/src/business/business-core/gncOwner.c +++ b/src/business/business-core/gncOwner.c @@ -48,436 +48,461 @@ GncOwner * gncOwnerCreate (void) { - GncOwner *o; + GncOwner *o; - o = g_new0 (GncOwner, 1); - o->type = GNC_OWNER_NONE; - return o; + o = g_new0 (GncOwner, 1); + o->type = GNC_OWNER_NONE; + return o; } void gncOwnerDestroy (GncOwner *owner) { - if (!owner) return; - g_free (owner); + if (!owner) return; + g_free (owner); } void gncOwnerInitUndefined (GncOwner *owner, gpointer obj) { - if (!owner) return; - owner->type = GNC_OWNER_UNDEFINED; - owner->owner.undefined = obj; + if (!owner) return; + owner->type = GNC_OWNER_UNDEFINED; + owner->owner.undefined = obj; } void gncOwnerInitCustomer (GncOwner *owner, GncCustomer *customer) { - if (!owner) return; - owner->type = GNC_OWNER_CUSTOMER; - owner->owner.customer = customer; + if (!owner) return; + owner->type = GNC_OWNER_CUSTOMER; + owner->owner.customer = customer; } void gncOwnerInitJob (GncOwner *owner, GncJob *job) { - if (!owner) return; - owner->type = GNC_OWNER_JOB; - owner->owner.job = job; + if (!owner) return; + owner->type = GNC_OWNER_JOB; + owner->owner.job = job; } void gncOwnerInitVendor (GncOwner *owner, GncVendor *vendor) { - if (!owner) return; - owner->type = GNC_OWNER_VENDOR; - owner->owner.vendor = vendor; + if (!owner) return; + owner->type = GNC_OWNER_VENDOR; + owner->owner.vendor = vendor; } void gncOwnerInitEmployee (GncOwner *owner, GncEmployee *employee) { - if (!owner) return; - owner->type = GNC_OWNER_EMPLOYEE; - owner->owner.employee = employee; + if (!owner) return; + owner->type = GNC_OWNER_EMPLOYEE; + owner->owner.employee = employee; } GncOwnerType gncOwnerGetType (const GncOwner *owner) { - if (!owner) return GNC_OWNER_NONE; - return owner->type; + if (!owner) return GNC_OWNER_NONE; + return owner->type; } QofIdType qofOwnerGetType(const GncOwner *owner) { - QofIdType type; + QofIdType type; - type = NULL; - switch(owner->type) - { - case GNC_OWNER_NONE : { - type = NULL; - break; - } - case GNC_OWNER_UNDEFINED : { - type = NULL; - break; - } - case GNC_OWNER_CUSTOMER : { - type = GNC_ID_CUSTOMER; - break; - } - case GNC_OWNER_JOB : { - type = GNC_ID_JOB; - break; - } - case GNC_OWNER_VENDOR : { - type = GNC_ID_VENDOR; - break; - } - case GNC_OWNER_EMPLOYEE : { - type = GNC_ID_EMPLOYEE; - break; - } - } - return type; + type = NULL; + switch (owner->type) + { + case GNC_OWNER_NONE : + { + type = NULL; + break; + } + case GNC_OWNER_UNDEFINED : + { + type = NULL; + break; + } + case GNC_OWNER_CUSTOMER : + { + type = GNC_ID_CUSTOMER; + break; + } + case GNC_OWNER_JOB : + { + type = GNC_ID_JOB; + break; + } + case GNC_OWNER_VENDOR : + { + type = GNC_ID_VENDOR; + break; + } + case GNC_OWNER_EMPLOYEE : + { + type = GNC_ID_EMPLOYEE; + break; + } + } + return type; } QofInstance* qofOwnerGetOwner (const GncOwner *owner) { - QofInstance *ent; + QofInstance *ent; - if(!owner) { return NULL; } - ent = NULL; - switch(owner->type) - { - case GNC_OWNER_NONE : { - break; - } - case GNC_OWNER_UNDEFINED : { - break; - } - case GNC_OWNER_CUSTOMER : { - ent = QOF_INSTANCE(owner->owner.customer); - break; - } - case GNC_OWNER_JOB : { - ent = QOF_INSTANCE(owner->owner.job); - break; - } - case GNC_OWNER_VENDOR : { - ent = QOF_INSTANCE(owner->owner.vendor); - break; - } - case GNC_OWNER_EMPLOYEE : { - ent = QOF_INSTANCE(owner->owner.employee); - break; - } - } - return ent; + if (!owner) + { + return NULL; + } + ent = NULL; + switch (owner->type) + { + case GNC_OWNER_NONE : + { + break; + } + case GNC_OWNER_UNDEFINED : + { + break; + } + case GNC_OWNER_CUSTOMER : + { + ent = QOF_INSTANCE(owner->owner.customer); + break; + } + case GNC_OWNER_JOB : + { + ent = QOF_INSTANCE(owner->owner.job); + break; + } + case GNC_OWNER_VENDOR : + { + ent = QOF_INSTANCE(owner->owner.vendor); + break; + } + case GNC_OWNER_EMPLOYEE : + { + ent = QOF_INSTANCE(owner->owner.employee); + break; + } + } + return ent; } void qofOwnerSetEntity (GncOwner *owner, QofInstance *ent) { - if(!owner || !ent) { return; } - if(0 == safe_strcmp(ent->e_type, GNC_ID_CUSTOMER)) - { - owner->type = GNC_OWNER_CUSTOMER; - gncOwnerInitCustomer(owner, (GncCustomer*)ent); - } - if(0 == safe_strcmp(ent->e_type, GNC_ID_JOB)) - { - owner->type = GNC_OWNER_JOB; - gncOwnerInitJob(owner, (GncJob*)ent); - } - if(0 == safe_strcmp(ent->e_type, GNC_ID_VENDOR)) - { - owner->type = GNC_OWNER_VENDOR; - gncOwnerInitVendor(owner, (GncVendor*)ent); - } - if(0 == safe_strcmp(ent->e_type, GNC_ID_EMPLOYEE)) - { - owner->type = GNC_OWNER_EMPLOYEE; - gncOwnerInitEmployee(owner, (GncEmployee*)ent); - } + if (!owner || !ent) + { + return; + } + if (0 == safe_strcmp(ent->e_type, GNC_ID_CUSTOMER)) + { + owner->type = GNC_OWNER_CUSTOMER; + gncOwnerInitCustomer(owner, (GncCustomer*)ent); + } + if (0 == safe_strcmp(ent->e_type, GNC_ID_JOB)) + { + owner->type = GNC_OWNER_JOB; + gncOwnerInitJob(owner, (GncJob*)ent); + } + if (0 == safe_strcmp(ent->e_type, GNC_ID_VENDOR)) + { + owner->type = GNC_OWNER_VENDOR; + gncOwnerInitVendor(owner, (GncVendor*)ent); + } + if (0 == safe_strcmp(ent->e_type, GNC_ID_EMPLOYEE)) + { + owner->type = GNC_OWNER_EMPLOYEE; + gncOwnerInitEmployee(owner, (GncEmployee*)ent); + } } gpointer gncOwnerGetUndefined (const GncOwner *owner) { - if (!owner) return NULL; - if (owner->type != GNC_OWNER_UNDEFINED) return NULL; - return owner->owner.undefined; + if (!owner) return NULL; + if (owner->type != GNC_OWNER_UNDEFINED) return NULL; + return owner->owner.undefined; } GncCustomer * gncOwnerGetCustomer (const GncOwner *owner) { - if (!owner) return NULL; - if (owner->type != GNC_OWNER_CUSTOMER) return NULL; - return owner->owner.customer; + if (!owner) return NULL; + if (owner->type != GNC_OWNER_CUSTOMER) return NULL; + return owner->owner.customer; } GncJob * gncOwnerGetJob (const GncOwner *owner) { - if (!owner) return NULL; - if (owner->type != GNC_OWNER_JOB) return NULL; - return owner->owner.job; + if (!owner) return NULL; + if (owner->type != GNC_OWNER_JOB) return NULL; + return owner->owner.job; } GncVendor * gncOwnerGetVendor (const GncOwner *owner) { - if (!owner) return NULL; - if (owner->type != GNC_OWNER_VENDOR) return NULL; - return owner->owner.vendor; + if (!owner) return NULL; + if (owner->type != GNC_OWNER_VENDOR) return NULL; + return owner->owner.vendor; } GncEmployee * gncOwnerGetEmployee (const GncOwner *owner) { - if (!owner) return NULL; - if (owner->type != GNC_OWNER_EMPLOYEE) return NULL; - return owner->owner.employee; + if (!owner) return NULL; + if (owner->type != GNC_OWNER_EMPLOYEE) return NULL; + return owner->owner.employee; } gnc_commodity * gncOwnerGetCurrency (const GncOwner *owner) { - if (!owner) return NULL; - switch (owner->type) { - case GNC_OWNER_NONE: - case GNC_OWNER_UNDEFINED: - default: - return NULL; - case GNC_OWNER_CUSTOMER: - return gncCustomerGetCurrency (owner->owner.customer); - case GNC_OWNER_VENDOR: - return gncVendorGetCurrency (owner->owner.vendor); - case GNC_OWNER_EMPLOYEE: - return gncEmployeeGetCurrency (owner->owner.employee); - case GNC_OWNER_JOB: - return gncOwnerGetCurrency (gncJobGetOwner (owner->owner.job)); - } + if (!owner) return NULL; + switch (owner->type) + { + case GNC_OWNER_NONE: + case GNC_OWNER_UNDEFINED: + default: + return NULL; + case GNC_OWNER_CUSTOMER: + return gncCustomerGetCurrency (owner->owner.customer); + case GNC_OWNER_VENDOR: + return gncVendorGetCurrency (owner->owner.vendor); + case GNC_OWNER_EMPLOYEE: + return gncEmployeeGetCurrency (owner->owner.employee); + case GNC_OWNER_JOB: + return gncOwnerGetCurrency (gncJobGetOwner (owner->owner.job)); + } } void gncOwnerCopy (const GncOwner *src, GncOwner *dest) { - if (!src || !dest) return; - if (src == dest) return; - memcpy (dest, src, sizeof (*dest)); + if (!src || !dest) return; + if (src == dest) return; + memcpy (dest, src, sizeof (*dest)); } GncOwner gncCloneOwner (const GncOwner *from, QofBook *book) { - GncOwner owner = { GNC_OWNER_NONE }; - if (!from) return owner; - owner.type = from->type; - switch (from->type) - { + GncOwner owner = { GNC_OWNER_NONE }; + if (!from) return owner; + owner.type = from->type; + switch (from->type) + { case GNC_OWNER_NONE: - return owner; + return owner; case GNC_OWNER_UNDEFINED: - owner.owner.undefined = from->owner.undefined; /* XXX probably wrong ! */ - return owner; + owner.owner.undefined = from->owner.undefined; /* XXX probably wrong ! */ + return owner; case GNC_OWNER_CUSTOMER: - owner.owner.customer = gncCustomerObtainTwin (from->owner.customer, book); - return owner; + owner.owner.customer = gncCustomerObtainTwin (from->owner.customer, book); + return owner; case GNC_OWNER_JOB: - owner.owner.job = gncJobObtainTwin (from->owner.job, book); - return owner; + owner.owner.job = gncJobObtainTwin (from->owner.job, book); + return owner; case GNC_OWNER_VENDOR: - owner.owner.vendor = gncVendorObtainTwin (from->owner.vendor, book); - return owner; + owner.owner.vendor = gncVendorObtainTwin (from->owner.vendor, book); + return owner; case GNC_OWNER_EMPLOYEE: - owner.owner.employee = gncEmployeeObtainTwin (from->owner.employee, book); - return owner; + owner.owner.employee = gncEmployeeObtainTwin (from->owner.employee, book); + return owner; default: - return owner; - } + return owner; + } } gboolean gncOwnerEqual (const GncOwner *a, const GncOwner *b) { - if (!a || !b) return FALSE; - if (gncOwnerGetType (a) != gncOwnerGetType (b)) return FALSE; - return (a->owner.undefined == b->owner.undefined); + if (!a || !b) return FALSE; + if (gncOwnerGetType (a) != gncOwnerGetType (b)) return FALSE; + return (a->owner.undefined == b->owner.undefined); } const char * gncOwnerGetName (const GncOwner *owner) { - if (!owner) return NULL; - switch (owner->type) { - case GNC_OWNER_NONE: - case GNC_OWNER_UNDEFINED: - default: - return NULL; - case GNC_OWNER_CUSTOMER: - return gncCustomerGetName (owner->owner.customer); - case GNC_OWNER_JOB: - return gncJobGetName (owner->owner.job); - case GNC_OWNER_VENDOR: - return gncVendorGetName (owner->owner.vendor); - case GNC_OWNER_EMPLOYEE: - return gncAddressGetName(gncEmployeeGetAddr (owner->owner.employee)); - } + if (!owner) return NULL; + switch (owner->type) + { + case GNC_OWNER_NONE: + case GNC_OWNER_UNDEFINED: + default: + return NULL; + case GNC_OWNER_CUSTOMER: + return gncCustomerGetName (owner->owner.customer); + case GNC_OWNER_JOB: + return gncJobGetName (owner->owner.job); + case GNC_OWNER_VENDOR: + return gncVendorGetName (owner->owner.vendor); + case GNC_OWNER_EMPLOYEE: + return gncAddressGetName(gncEmployeeGetAddr (owner->owner.employee)); + } } const GUID * gncOwnerGetGUID (const GncOwner *owner) { - if (!owner) return NULL; + if (!owner) return NULL; - switch (owner->type) { - case GNC_OWNER_NONE: - case GNC_OWNER_UNDEFINED: - default: - return NULL; - case GNC_OWNER_CUSTOMER: - return qof_instance_get_guid (QOF_INSTANCE(owner->owner.customer)); - case GNC_OWNER_JOB: - return qof_instance_get_guid (QOF_INSTANCE(owner->owner.job)); - case GNC_OWNER_VENDOR: - return qof_instance_get_guid (QOF_INSTANCE(owner->owner.vendor)); - case GNC_OWNER_EMPLOYEE: - return qof_instance_get_guid (QOF_INSTANCE(owner->owner.employee)); - } + switch (owner->type) + { + case GNC_OWNER_NONE: + case GNC_OWNER_UNDEFINED: + default: + return NULL; + case GNC_OWNER_CUSTOMER: + return qof_instance_get_guid (QOF_INSTANCE(owner->owner.customer)); + case GNC_OWNER_JOB: + return qof_instance_get_guid (QOF_INSTANCE(owner->owner.job)); + case GNC_OWNER_VENDOR: + return qof_instance_get_guid (QOF_INSTANCE(owner->owner.vendor)); + case GNC_OWNER_EMPLOYEE: + return qof_instance_get_guid (QOF_INSTANCE(owner->owner.employee)); + } } GUID gncOwnerRetGUID (GncOwner *owner) { - const GUID *guid = gncOwnerGetGUID (owner); - if (guid) - return *guid; - return *guid_null (); + const GUID *guid = gncOwnerGetGUID (owner); + if (guid) + return *guid; + return *guid_null (); } GncOwner * gncOwnerGetEndOwner (GncOwner *owner) { - if (!owner) return NULL; - switch (owner->type) { - case GNC_OWNER_NONE: - case GNC_OWNER_UNDEFINED: - default: - return NULL; - case GNC_OWNER_CUSTOMER: - case GNC_OWNER_VENDOR: - case GNC_OWNER_EMPLOYEE: - return owner; - case GNC_OWNER_JOB: - return gncJobGetOwner (owner->owner.job); - } + if (!owner) return NULL; + switch (owner->type) + { + case GNC_OWNER_NONE: + case GNC_OWNER_UNDEFINED: + default: + return NULL; + case GNC_OWNER_CUSTOMER: + case GNC_OWNER_VENDOR: + case GNC_OWNER_EMPLOYEE: + return owner; + case GNC_OWNER_JOB: + return gncJobGetOwner (owner->owner.job); + } } int gncOwnerCompare (const GncOwner *a, const GncOwner *b) { - if (!a && !b) return 0; - if (!a && b) return 1; - if (a && !b) return -1; + if (!a && !b) return 0; + if (!a && b) return 1; + if (a && !b) return -1; - if (a->type != b->type) - return (a->type - b->type); + if (a->type != b->type) + return (a->type - b->type); - switch (a->type) { - case GNC_OWNER_NONE: - case GNC_OWNER_UNDEFINED: - default: - return 0; - case GNC_OWNER_CUSTOMER: - return gncCustomerCompare (a->owner.customer, b->owner.customer); - case GNC_OWNER_VENDOR: - return gncVendorCompare (a->owner.vendor, b->owner.vendor); - case GNC_OWNER_EMPLOYEE: - return gncEmployeeCompare (a->owner.employee, b->owner.employee); - case GNC_OWNER_JOB: - return gncJobCompare (a->owner.job, b->owner.job); - } + switch (a->type) + { + case GNC_OWNER_NONE: + case GNC_OWNER_UNDEFINED: + default: + return 0; + case GNC_OWNER_CUSTOMER: + return gncCustomerCompare (a->owner.customer, b->owner.customer); + case GNC_OWNER_VENDOR: + return gncVendorCompare (a->owner.vendor, b->owner.vendor); + case GNC_OWNER_EMPLOYEE: + return gncEmployeeCompare (a->owner.employee, b->owner.employee); + case GNC_OWNER_JOB: + return gncJobCompare (a->owner.job, b->owner.job); + } } const GUID * gncOwnerGetEndGUID (GncOwner *owner) { - if (!owner) return NULL; - owner = gncOwnerGetEndOwner (owner); - return gncOwnerGetGUID (owner); + if (!owner) return NULL; + owner = gncOwnerGetEndOwner (owner); + return gncOwnerGetGUID (owner); } void gncOwnerAttachToLot (const GncOwner *owner, GNCLot *lot) { - KvpFrame *kvp; - KvpValue *value; - - if (!owner || !lot) - return; + KvpFrame *kvp; + KvpValue *value; - kvp = gnc_lot_get_slots (lot); + if (!owner || !lot) + return; - value = kvp_value_new_gint64 (gncOwnerGetType (owner)); - kvp_frame_set_slot_path (kvp, value, GNC_OWNER_ID, GNC_OWNER_TYPE, NULL); - kvp_value_delete (value); + kvp = gnc_lot_get_slots (lot); - value = kvp_value_new_guid (gncOwnerGetGUID (owner)); - kvp_frame_set_slot_path (kvp, value, GNC_OWNER_ID, GNC_OWNER_GUID, NULL); - kvp_value_delete (value); + value = kvp_value_new_gint64 (gncOwnerGetType (owner)); + kvp_frame_set_slot_path (kvp, value, GNC_OWNER_ID, GNC_OWNER_TYPE, NULL); + kvp_value_delete (value); + + value = kvp_value_new_guid (gncOwnerGetGUID (owner)); + kvp_frame_set_slot_path (kvp, value, GNC_OWNER_ID, GNC_OWNER_GUID, NULL); + kvp_value_delete (value); } gboolean gncOwnerGetOwnerFromLot (GNCLot *lot, GncOwner *owner) { - KvpFrame *kvp; - KvpValue *value; - GUID *guid; - QofBook *book; - GncOwnerType type; + KvpFrame *kvp; + KvpValue *value; + GUID *guid; + QofBook *book; + GncOwnerType type; - if (!lot || !owner) return FALSE; + if (!lot || !owner) return FALSE; - book = gnc_lot_get_book (lot); - kvp = gnc_lot_get_slots (lot); + book = gnc_lot_get_book (lot); + kvp = gnc_lot_get_slots (lot); - value = kvp_frame_get_slot_path (kvp, GNC_OWNER_ID, GNC_OWNER_TYPE, NULL); - if (!value) return FALSE; + value = kvp_frame_get_slot_path (kvp, GNC_OWNER_ID, GNC_OWNER_TYPE, NULL); + if (!value) return FALSE; - type = kvp_value_get_gint64 (value); + type = kvp_value_get_gint64 (value); - value = kvp_frame_get_slot_path (kvp, GNC_OWNER_ID, GNC_OWNER_GUID, NULL); - if (!value) return FALSE; + value = kvp_frame_get_slot_path (kvp, GNC_OWNER_ID, GNC_OWNER_GUID, NULL); + if (!value) return FALSE; - guid = kvp_value_get_guid (value); - if (!guid) - return FALSE; + guid = kvp_value_get_guid (value); + if (!guid) + return FALSE; - switch (type) { - case GNC_OWNER_CUSTOMER: - gncOwnerInitCustomer (owner, gncCustomerLookup (book, guid)); - break; - case GNC_OWNER_VENDOR: - gncOwnerInitVendor (owner, gncVendorLookup (book, guid)); - break; - case GNC_OWNER_EMPLOYEE: - gncOwnerInitEmployee (owner, gncEmployeeLookup (book, guid)); - break; - case GNC_OWNER_JOB: - gncOwnerInitJob (owner, gncJobLookup (book, guid)); - break; - default: - return FALSE; - } - - return (owner->owner.undefined != NULL); + switch (type) + { + case GNC_OWNER_CUSTOMER: + gncOwnerInitCustomer (owner, gncCustomerLookup (book, guid)); + break; + case GNC_OWNER_VENDOR: + gncOwnerInitVendor (owner, gncVendorLookup (book, guid)); + break; + case GNC_OWNER_EMPLOYEE: + gncOwnerInitEmployee (owner, gncEmployeeLookup (book, guid)); + break; + case GNC_OWNER_JOB: + gncOwnerInitJob (owner, gncJobLookup (book, guid)); + break; + default: + return FALSE; + } + + return (owner->owner.undefined != NULL); } gboolean gncOwnerIsValid (const GncOwner *owner) { - if (!owner) return FALSE; - return (owner->owner.undefined != NULL); + if (!owner) return FALSE; + return (owner->owner.undefined != NULL); } KvpFrame* gncOwnerGetSlots(GncOwner* owner) { - if (!owner) return NULL; + if (!owner) return NULL; - switch (gncOwnerGetType(owner)) { - case GNC_OWNER_CUSTOMER: - case GNC_OWNER_VENDOR: - case GNC_OWNER_EMPLOYEE: - return qof_instance_get_slots(QOF_INSTANCE(owner->owner.undefined)); - case GNC_OWNER_JOB: - return gncOwnerGetSlots(gncJobGetOwner(gncOwnerGetJob(owner))); - default: - return NULL; - } + switch (gncOwnerGetType(owner)) + { + case GNC_OWNER_CUSTOMER: + case GNC_OWNER_VENDOR: + case GNC_OWNER_EMPLOYEE: + return qof_instance_get_slots(QOF_INSTANCE(owner->owner.undefined)); + case GNC_OWNER_JOB: + return gncOwnerGetSlots(gncJobGetOwner(gncOwnerGetJob(owner))); + default: + return NULL; + } } /* XXX: Yea, this is broken, but it should work fine for Queries. @@ -486,67 +511,76 @@ KvpFrame* gncOwnerGetSlots(GncOwner* owner) static GncOwner * owner_from_lot (GNCLot *lot) { - static GncOwner owner; + static GncOwner owner; - if (!lot) return NULL; - if (gncOwnerGetOwnerFromLot (lot, &owner)) - return &owner; + if (!lot) return NULL; + if (gncOwnerGetOwnerFromLot (lot, &owner)) + return &owner; - return NULL; + return NULL; } static void reg_lot (void) { - static QofParam params[] = { - { OWNER_FROM_LOT, _GNC_MOD_NAME, (QofAccessFunc)owner_from_lot, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { OWNER_FROM_LOT, _GNC_MOD_NAME, (QofAccessFunc)owner_from_lot, NULL }, + { NULL }, + }; - qof_class_register (GNC_ID_LOT, NULL, params); + qof_class_register (GNC_ID_LOT, NULL, params); } gboolean gncOwnerGetOwnerFromTypeGuid (QofBook *book, GncOwner *owner, QofIdType type, GUID *guid) { - if (!book || !owner || !type || !guid) return FALSE; + if (!book || !owner || !type || !guid) return FALSE; - if (0 == safe_strcmp(type, GNC_ID_CUSTOMER)) { - GncCustomer *customer = gncCustomerLookup(book,guid); - gncOwnerInitCustomer(owner, customer); - return (NULL != customer); - } else if (0 == safe_strcmp(type, GNC_ID_JOB)) { - GncJob *job = gncJobLookup(book,guid); - gncOwnerInitJob(owner, job); - return (NULL != job); - } else if (0 == safe_strcmp(type, GNC_ID_VENDOR)) { - GncVendor *vendor = gncVendorLookup(book,guid); - gncOwnerInitVendor(owner, vendor); - return (NULL != vendor); - } else if (0 == safe_strcmp(type, GNC_ID_EMPLOYEE)) { - GncEmployee *employee = gncEmployeeLookup(book,guid); - gncOwnerInitEmployee(owner, employee); - return (NULL != employee); - } - return 0; + if (0 == safe_strcmp(type, GNC_ID_CUSTOMER)) + { + GncCustomer *customer = gncCustomerLookup(book, guid); + gncOwnerInitCustomer(owner, customer); + return (NULL != customer); + } + else if (0 == safe_strcmp(type, GNC_ID_JOB)) + { + GncJob *job = gncJobLookup(book, guid); + gncOwnerInitJob(owner, job); + return (NULL != job); + } + else if (0 == safe_strcmp(type, GNC_ID_VENDOR)) + { + GncVendor *vendor = gncVendorLookup(book, guid); + gncOwnerInitVendor(owner, vendor); + return (NULL != vendor); + } + else if (0 == safe_strcmp(type, GNC_ID_EMPLOYEE)) + { + GncEmployee *employee = gncEmployeeLookup(book, guid); + gncOwnerInitEmployee(owner, employee); + return (NULL != employee); + } + return 0; } gboolean gncOwnerRegister (void) { - static QofParam params[] = { - { OWNER_TYPE, QOF_TYPE_INT64, (QofAccessFunc)gncOwnerGetType, NULL }, - { OWNER_CUSTOMER, GNC_ID_CUSTOMER, (QofAccessFunc)gncOwnerGetCustomer, NULL }, - { OWNER_JOB, GNC_ID_JOB, (QofAccessFunc)gncOwnerGetJob, NULL }, - { OWNER_VENDOR, GNC_ID_VENDOR, (QofAccessFunc)gncOwnerGetVendor, NULL }, - { OWNER_EMPLOYEE, GNC_ID_EMPLOYEE, (QofAccessFunc)gncOwnerGetEmployee, NULL }, - { OWNER_PARENT, GNC_ID_OWNER, (QofAccessFunc)gncOwnerGetEndOwner, NULL }, - { OWNER_PARENTG, QOF_TYPE_GUID, (QofAccessFunc)gncOwnerGetEndGUID, NULL }, - { OWNER_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncOwnerGetName, NULL }, - { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)gncOwnerGetGUID, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { OWNER_TYPE, QOF_TYPE_INT64, (QofAccessFunc)gncOwnerGetType, NULL }, + { OWNER_CUSTOMER, GNC_ID_CUSTOMER, (QofAccessFunc)gncOwnerGetCustomer, NULL }, + { OWNER_JOB, GNC_ID_JOB, (QofAccessFunc)gncOwnerGetJob, NULL }, + { OWNER_VENDOR, GNC_ID_VENDOR, (QofAccessFunc)gncOwnerGetVendor, NULL }, + { OWNER_EMPLOYEE, GNC_ID_EMPLOYEE, (QofAccessFunc)gncOwnerGetEmployee, NULL }, + { OWNER_PARENT, GNC_ID_OWNER, (QofAccessFunc)gncOwnerGetEndOwner, NULL }, + { OWNER_PARENTG, QOF_TYPE_GUID, (QofAccessFunc)gncOwnerGetEndGUID, NULL }, + { OWNER_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncOwnerGetName, NULL }, + { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)gncOwnerGetGUID, NULL }, + { NULL }, + }; - qof_class_register (GNC_ID_OWNER, (QofSortFunc)gncOwnerCompare, params); - reg_lot (); + qof_class_register (GNC_ID_OWNER, (QofSortFunc)gncOwnerCompare, params); + reg_lot (); - return TRUE; + return TRUE; } diff --git a/src/business/business-core/gncOwner.h b/src/business/business-core/gncOwner.h index e539d6d1b6..5fc663d3f3 100644 --- a/src/business/business-core/gncOwner.h +++ b/src/business/business-core/gncOwner.h @@ -42,16 +42,17 @@ typedef struct _gncOwner GncOwner; #include "gncJob.h" #include "gncVendor.h" #include "gncEmployee.h" -#include "gnc-lot.h" +#include "gnc-lot.h" -typedef enum { - GNC_OWNER_NONE , - GNC_OWNER_UNDEFINED , - GNC_OWNER_CUSTOMER , - GNC_OWNER_JOB , - GNC_OWNER_VENDOR , - GNC_OWNER_EMPLOYEE , -}GncOwnerType; +typedef enum +{ + GNC_OWNER_NONE , + GNC_OWNER_UNDEFINED , + GNC_OWNER_CUSTOMER , + GNC_OWNER_JOB , + GNC_OWNER_VENDOR , + GNC_OWNER_EMPLOYEE , +} GncOwnerType; /** \name QOF handling @@ -75,16 +76,18 @@ gncOwnerRegister(void); #ifndef SWIG /** \struct GncOwner */ -struct _gncOwner { - GncOwnerType type; /**< Customer, Job, Vendor, Employee or Undefined. */ - union { - gpointer undefined; - GncCustomer * customer; - GncJob * job; - GncVendor * vendor; - GncEmployee * employee; - } owner; /**< holds the pointer to the owner object. */ - gpointer qof_temp; /**< Set type independently of the owner. */ +struct _gncOwner +{ + GncOwnerType type; /**< Customer, Job, Vendor, Employee or Undefined. */ + union + { + gpointer undefined; + GncCustomer * customer; + GncJob * job; + GncVendor * vendor; + GncEmployee * employee; + } owner; /**< holds the pointer to the owner object. */ + gpointer qof_temp; /**< Set type independently of the owner. */ }; #endif /* SWIG */ diff --git a/src/business/business-core/gncOwnerP.h b/src/business/business-core/gncOwnerP.h index a4e9c8e647..c5c18cee30 100644 --- a/src/business/business-core/gncOwnerP.h +++ b/src/business/business-core/gncOwnerP.h @@ -1,5 +1,5 @@ /********************************************************************\ - * gncOwnerP.h -- Business Interface: Object OWNERs private file * + * gncOwnerP.h -- Business Interface: Object OWNERs private file * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * diff --git a/src/business/business-core/gncTaxTable.c b/src/business/business-core/gncTaxTable.c index b9b67978c9..ed18ba5bdc 100644 --- a/src/business/business-core/gncTaxTable.c +++ b/src/business/business-core/gncTaxTable.c @@ -32,38 +32,38 @@ #include "gncTaxTableP.h" -struct _gncTaxTable +struct _gncTaxTable { - QofInstance inst; - char * name; - GncTaxTableEntryList* entries; - Timespec modtime; /* internal date of last modtime */ + QofInstance inst; + char * name; + GncTaxTableEntryList* entries; + Timespec modtime; /* internal date of last modtime */ - /* See src/doc/business.txt for an explanation of the following */ - /* Code that handles this is *identical* to that in gncBillTerm */ - gint64 refcount; - GncTaxTable * parent; /* if non-null, we are an immutable child */ - GncTaxTable * child; /* if non-null, we have not changed */ - gboolean invisible; - GList * children; /* list of children for disconnection */ + /* See src/doc/business.txt for an explanation of the following */ + /* Code that handles this is *identical* to that in gncBillTerm */ + gint64 refcount; + GncTaxTable * parent; /* if non-null, we are an immutable child */ + GncTaxTable * child; /* if non-null, we have not changed */ + gboolean invisible; + GList * children; /* list of children for disconnection */ }; struct _gncTaxTableClass { - QofInstanceClass parent_class; + QofInstanceClass parent_class; }; -struct _gncTaxTableEntry +struct _gncTaxTableEntry { - GncTaxTable * table; - Account * account; - GncAmountType type; - gnc_numeric amount; + GncTaxTable * table; + Account * account; + GncAmountType type; + gnc_numeric amount; }; -struct _book_info +struct _book_info { - GList * tables; /* visible tables */ + GList * tables; /* visible tables */ }; static GncTaxTableEntry * CloneTaxEntry (const GncTaxTableEntry*, QofBook *); @@ -78,30 +78,30 @@ static QofLogModule log_module = GNC_MOD_BUSINESS; const char * gncAmountTypeToString (GncAmountType type) { - switch(type) - { - GNC_RETURN_ENUM_AS_STRING(GNC_AMT_TYPE_VALUE, "VALUE"); - GNC_RETURN_ENUM_AS_STRING(GNC_AMT_TYPE_PERCENT, "PERCENT"); + switch (type) + { + GNC_RETURN_ENUM_AS_STRING(GNC_AMT_TYPE_VALUE, "VALUE"); + GNC_RETURN_ENUM_AS_STRING(GNC_AMT_TYPE_PERCENT, "PERCENT"); default: - g_warning ("asked to translate unknown amount type %d.\n", type); - break; - } - return(NULL); + g_warning ("asked to translate unknown amount type %d.\n", type); + break; + } + return(NULL); } const char * gncTaxIncludedTypeToString (GncTaxIncluded type) { - switch(type) - { - GNC_RETURN_ENUM_AS_STRING(GNC_TAXINCLUDED_YES, "YES"); - GNC_RETURN_ENUM_AS_STRING(GNC_TAXINCLUDED_NO, "NO"); - GNC_RETURN_ENUM_AS_STRING(GNC_TAXINCLUDED_USEGLOBAL, "USEGLOBAL"); + switch (type) + { + GNC_RETURN_ENUM_AS_STRING(GNC_TAXINCLUDED_YES, "YES"); + GNC_RETURN_ENUM_AS_STRING(GNC_TAXINCLUDED_NO, "NO"); + GNC_RETURN_ENUM_AS_STRING(GNC_TAXINCLUDED_USEGLOBAL, "USEGLOBAL"); default: - g_warning ("asked to translate unknown taxincluded type %d.\n", type); - break; - } - return(NULL); + g_warning ("asked to translate unknown taxincluded type %d.\n", type); + break; + } + return(NULL); } #undef GNC_RETURN_ENUM_AS_STRING #define GNC_RETURN_ON_MATCH(s,x) \ @@ -109,24 +109,24 @@ gncTaxIncludedTypeToString (GncTaxIncluded type) gboolean gncAmountStringToType (const char *str, GncAmountType *type) { - GNC_RETURN_ON_MATCH ("VALUE", GNC_AMT_TYPE_VALUE); - GNC_RETURN_ON_MATCH ("PERCENT", GNC_AMT_TYPE_PERCENT); - g_warning ("asked to translate unknown amount type string %s.\n", - str ? str : "(null)"); + GNC_RETURN_ON_MATCH ("VALUE", GNC_AMT_TYPE_VALUE); + GNC_RETURN_ON_MATCH ("PERCENT", GNC_AMT_TYPE_PERCENT); + g_warning ("asked to translate unknown amount type string %s.\n", + str ? str : "(null)"); - return(FALSE); + return(FALSE); } gboolean gncTaxIncludedStringToType (const char *str, GncTaxIncluded *type) { - GNC_RETURN_ON_MATCH ("YES", GNC_TAXINCLUDED_YES); - GNC_RETURN_ON_MATCH ("NO", GNC_TAXINCLUDED_NO); - GNC_RETURN_ON_MATCH ("USEGLOBAL", GNC_TAXINCLUDED_USEGLOBAL); - g_warning ("asked to translate unknown taxincluded type string %s.\n", - str ? str : "(null)"); + GNC_RETURN_ON_MATCH ("YES", GNC_TAXINCLUDED_YES); + GNC_RETURN_ON_MATCH ("NO", GNC_TAXINCLUDED_NO); + GNC_RETURN_ON_MATCH ("USEGLOBAL", GNC_TAXINCLUDED_USEGLOBAL); + g_warning ("asked to translate unknown taxincluded type string %s.\n", + str ? str : "(null)"); - return(FALSE); + return(FALSE); } #undef GNC_RETURN_ON_MATCH @@ -148,67 +148,68 @@ gncTaxIncludedStringToType (const char *str, GncTaxIncluded *type) static inline void mark_table (GncTaxTable *table) { - qof_instance_set_dirty(&table->inst); - qof_event_gen (&table->inst, QOF_EVENT_MODIFY, NULL); + qof_instance_set_dirty(&table->inst); + qof_event_gen (&table->inst, QOF_EVENT_MODIFY, NULL); } -static inline void +static inline void maybe_resort_list (GncTaxTable *table) { - struct _book_info *bi; + struct _book_info *bi; - if (table->parent || table->invisible) return; - bi = qof_book_get_data (qof_instance_get_book(table), _GNC_MOD_NAME); - bi->tables = g_list_sort (bi->tables, (GCompareFunc)gncTaxTableCompare); + if (table->parent || table->invisible) return; + bi = qof_book_get_data (qof_instance_get_book(table), _GNC_MOD_NAME); + bi->tables = g_list_sort (bi->tables, (GCompareFunc)gncTaxTableCompare); } static inline void mod_table (GncTaxTable *table) { - timespecFromTime_t (&table->modtime, time(NULL)); + timespecFromTime_t (&table->modtime, time(NULL)); } static inline void addObj (GncTaxTable *table) { - struct _book_info *bi; - bi = qof_book_get_data (qof_instance_get_book(table), _GNC_MOD_NAME); - bi->tables = g_list_insert_sorted (bi->tables, table, + struct _book_info *bi; + bi = qof_book_get_data (qof_instance_get_book(table), _GNC_MOD_NAME); + bi->tables = g_list_insert_sorted (bi->tables, table, (GCompareFunc)gncTaxTableCompare); } static inline void remObj (GncTaxTable *table) { - struct _book_info *bi; - bi = qof_book_get_data (qof_instance_get_book(table), _GNC_MOD_NAME); - bi->tables = g_list_remove (bi->tables, table); + struct _book_info *bi; + bi = qof_book_get_data (qof_instance_get_book(table), _GNC_MOD_NAME); + bi->tables = g_list_remove (bi->tables, table); } static inline void gncTaxTableAddChild (GncTaxTable *table, GncTaxTable *child) { - g_return_if_fail(table); - g_return_if_fail(child); - g_return_if_fail(qof_instance_get_destroying(table) == FALSE); + g_return_if_fail(table); + g_return_if_fail(child); + g_return_if_fail(qof_instance_get_destroying(table) == FALSE); - table->children = g_list_prepend(table->children, child); + table->children = g_list_prepend(table->children, child); } static inline void gncTaxTableRemoveChild (GncTaxTable *table, const GncTaxTable *child) { - g_return_if_fail(table); - g_return_if_fail(child); + g_return_if_fail(table); + g_return_if_fail(child); - if (qof_instance_get_destroying(table)) return; + if (qof_instance_get_destroying(table)) return; - table->children = g_list_remove(table->children, child); + table->children = g_list_remove(table->children, child); } /* =============================================================== */ -enum { +enum +{ PROP_0, - PROP_NAME + PROP_NAME }; /* GObject Initialization */ @@ -233,43 +234,45 @@ gnc_taxtable_finalize(GObject* ttp) static void gnc_taxtable_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GncTaxTable *tt; g_return_if_fail(GNC_IS_TAXTABLE(object)); tt = GNC_TAXTABLE(object); - switch (prop_id) { - case PROP_NAME: - g_value_set_string(value, tt->name); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NAME: + g_value_set_string(value, tt->name); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } static void gnc_taxtable_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GncTaxTable *tt; g_return_if_fail(GNC_IS_TAXTABLE(object)); tt = GNC_TAXTABLE(object); - switch (prop_id) { - case PROP_NAME: - gncTaxTableSetName(tt, g_value_get_string(value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NAME: + gncTaxTableSetName(tt, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } @@ -277,185 +280,186 @@ static void gnc_taxtable_class_init (GncTaxTableClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - + gobject_class->dispose = gnc_taxtable_dispose; gobject_class->finalize = gnc_taxtable_finalize; gobject_class->set_property = gnc_taxtable_set_property; gobject_class->get_property = gnc_taxtable_get_property; g_object_class_install_property - (gobject_class, - PROP_NAME, - g_param_spec_string ("name", - "TaxTable Name", - "The accountName is an arbitrary string " - "assigned by the user. It is intended to " - "a short, 10 to 30 character long string " - "that is displayed by the GUI as the " - "tax table mnemonic.", - NULL, - G_PARAM_READWRITE)); + (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "TaxTable Name", + "The accountName is an arbitrary string " + "assigned by the user. It is intended to " + "a short, 10 to 30 character long string " + "that is displayed by the GUI as the " + "tax table mnemonic.", + NULL, + G_PARAM_READWRITE)); } /* Create/Destroy Functions */ -GncTaxTable * +GncTaxTable * gncTaxTableCreate (QofBook *book) { - GncTaxTable *table; - if (!book) return NULL; + GncTaxTable *table; + if (!book) return NULL; - table = g_object_new (GNC_TYPE_TAXTABLE, NULL); - qof_instance_init_data (&table->inst, _GNC_MOD_NAME, book); - table->name = CACHE_INSERT (""); - addObj (table); - qof_event_gen (&table->inst, QOF_EVENT_CREATE, NULL); - return table; + table = g_object_new (GNC_TYPE_TAXTABLE, NULL); + qof_instance_init_data (&table->inst, _GNC_MOD_NAME, book); + table->name = CACHE_INSERT (""); + addObj (table); + qof_event_gen (&table->inst, QOF_EVENT_CREATE, NULL); + return table; } -GncTaxTable * +GncTaxTable * gncCloneTaxTable (GncTaxTable *from, QofBook *book) { - GList *node; - GncTaxTable *table; - if (!book) return NULL; + GList *node; + GncTaxTable *table; + if (!book) return NULL; - table = g_object_new (GNC_TYPE_TAXTABLE, NULL); - qof_instance_init_data (&table->inst, _GNC_MOD_NAME, book); - qof_instance_gemini (&table->inst, &from->inst); - - table->name = CACHE_INSERT (from->name); - table->modtime = from->modtime; - table->invisible = from->invisible; + table = g_object_new (GNC_TYPE_TAXTABLE, NULL); + qof_instance_init_data (&table->inst, _GNC_MOD_NAME, book); + qof_instance_gemini (&table->inst, &from->inst); - table->refcount = 0; + table->name = CACHE_INSERT (from->name); + table->modtime = from->modtime; + table->invisible = from->invisible; - /* Make copies of parents and children. Note that this can be - * a recursive copy ... treat as doubly-linked list. */ - if (from->child) - { - table->child = gncTaxTableObtainTwin (from->child, book); - table->child->parent = table; - } - if (from->parent) - { - table->parent = gncTaxTableObtainTwin (from->parent, book); - table->parent->child = table; - } - for (node=g_list_last(from->children); node; node=node->next) - { - GncTaxTable *tbl = node->data; - tbl = gncTaxTableObtainTwin (tbl, book); - tbl->parent = table; - table->children = g_list_prepend(table->children, tbl); - } + table->refcount = 0; - /* Copy tax entries, preserving the order in the list */ - table->entries = NULL; - for (node=g_list_last(from->entries); node; node=node->prev) - { - GncTaxTableEntry *ent = node->data; - ent = CloneTaxEntry (ent, book); - table->entries = g_list_prepend (table->entries, ent); - } + /* Make copies of parents and children. Note that this can be + * a recursive copy ... treat as doubly-linked list. */ + if (from->child) + { + table->child = gncTaxTableObtainTwin (from->child, book); + table->child->parent = table; + } + if (from->parent) + { + table->parent = gncTaxTableObtainTwin (from->parent, book); + table->parent->child = table; + } + for (node = g_list_last(from->children); node; node = node->next) + { + GncTaxTable *tbl = node->data; + tbl = gncTaxTableObtainTwin (tbl, book); + tbl->parent = table; + table->children = g_list_prepend(table->children, tbl); + } - addObj (table); - qof_event_gen (&table->inst, QOF_EVENT_CREATE, NULL); - return table; + /* Copy tax entries, preserving the order in the list */ + table->entries = NULL; + for (node = g_list_last(from->entries); node; node = node->prev) + { + GncTaxTableEntry *ent = node->data; + ent = CloneTaxEntry (ent, book); + table->entries = g_list_prepend (table->entries, ent); + } + + addObj (table); + qof_event_gen (&table->inst, QOF_EVENT_CREATE, NULL); + return table; } GncTaxTable * gncTaxTableObtainTwin (const GncTaxTable *from, QofBook *book) { - GncTaxTable *table; - if (!from) return NULL; + GncTaxTable *table; + if (!from) return NULL; - table = (GncTaxTable *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); - if (!table) - { - table = gncCloneTaxTable (table, book); - } - return table; + table = (GncTaxTable *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); + if (!table) + { + table = gncCloneTaxTable (table, book); + } + return table; } -void +void gncTaxTableDestroy (GncTaxTable *table) { - if (!table) return; - qof_instance_set_destroying(table, TRUE); - qof_instance_set_dirty (&table->inst); - gncTaxTableCommitEdit (table); + if (!table) return; + qof_instance_set_destroying(table, TRUE); + qof_instance_set_dirty (&table->inst); + gncTaxTableCommitEdit (table); } -static void +static void gncTaxTableFree (GncTaxTable *table) { - GList *list; - GncTaxTable *child; + GList *list; + GncTaxTable *child; - if (!table) return; + if (!table) return; - qof_event_gen (&table->inst, QOF_EVENT_DESTROY, NULL); - CACHE_REMOVE (table->name); - remObj (table); + qof_event_gen (&table->inst, QOF_EVENT_DESTROY, NULL); + CACHE_REMOVE (table->name); + remObj (table); - /* destroy the list of entries */ - for (list = table->entries; list; list=list->next) - gncTaxTableEntryDestroy (list->data); - g_list_free (table->entries); + /* destroy the list of entries */ + for (list = table->entries; list; list = list->next) + gncTaxTableEntryDestroy (list->data); + g_list_free (table->entries); - if (!qof_instance_get_destroying(table)) - PERR("free a taxtable without do_free set!"); + if (!qof_instance_get_destroying(table)) + PERR("free a taxtable without do_free set!"); - /* disconnect from parent */ - if (table->parent) - gncTaxTableRemoveChild(table->parent, table); + /* disconnect from parent */ + if (table->parent) + gncTaxTableRemoveChild(table->parent, table); - /* disconnect from the children */ - for (list = table->children; list; list=list->next) { - child = list->data; - gncTaxTableSetParent(child, NULL); - } - g_list_free(table->children); + /* disconnect from the children */ + for (list = table->children; list; list = list->next) + { + child = list->data; + gncTaxTableSetParent(child, NULL); + } + g_list_free(table->children); - /* qof_instance_release (&table->inst); */ - g_object_unref (table); + /* qof_instance_release (&table->inst); */ + g_object_unref (table); } /* =============================================================== */ GncTaxTableEntry * gncTaxTableEntryCreate (void) { - GncTaxTableEntry *entry; - entry = g_new0 (GncTaxTableEntry, 1); - entry->amount = gnc_numeric_zero (); - return entry; + GncTaxTableEntry *entry; + entry = g_new0 (GncTaxTableEntry, 1); + entry->amount = gnc_numeric_zero (); + return entry; } void gncTaxTableEntryDestroy (GncTaxTableEntry *entry) { - if (!entry) return; - g_free (entry); + if (!entry) return; + g_free (entry); } -/** Makes a clone. The account is from the appriate book. +/** Makes a clone. The account is from the appriate book. * Note that the table is left blank (for performance reasons * we set it above, when cloning the table). */ -static GncTaxTableEntry * +static GncTaxTableEntry * CloneTaxEntry (const GncTaxTableEntry*from, QofBook *book) { - QofInstance *acc; - GncTaxTableEntry *entry; - entry = g_new0 (GncTaxTableEntry, 1); + QofInstance *acc; + GncTaxTableEntry *entry; + entry = g_new0 (GncTaxTableEntry, 1); - entry->type = from->type; - entry->amount = from->amount; + entry->type = from->type; + entry->amount = from->amount; - acc = qof_instance_lookup_twin (QOF_INSTANCE(from->account), book); - entry->account = (Account *) acc; - return entry; + acc = qof_instance_lookup_twin (QOF_INSTANCE(from->account), book); + entry->account = (Account *) acc; + return entry; } /* =============================================================== */ @@ -463,166 +467,169 @@ CloneTaxEntry (const GncTaxTableEntry*from, QofBook *book) void gncTaxTableSetName (GncTaxTable *table, const char *name) { - if (!table || !name) return; - SET_STR (table, table->name, name); - mark_table (table); - maybe_resort_list (table); - gncTaxTableCommitEdit (table); + if (!table || !name) return; + SET_STR (table, table->name, name); + mark_table (table); + maybe_resort_list (table); + gncTaxTableCommitEdit (table); } void gncTaxTableSetParent (GncTaxTable *table, GncTaxTable *parent) { - if (!table) return; - gncTaxTableBeginEdit (table); - if (table->parent) - gncTaxTableRemoveChild(table->parent, table); - table->parent = parent; - if (parent) - gncTaxTableAddChild(parent, table); - table->refcount = 0; - gncTaxTableMakeInvisible (table); - gncTaxTableCommitEdit (table); + if (!table) return; + gncTaxTableBeginEdit (table); + if (table->parent) + gncTaxTableRemoveChild(table->parent, table); + table->parent = parent; + if (parent) + gncTaxTableAddChild(parent, table); + table->refcount = 0; + gncTaxTableMakeInvisible (table); + gncTaxTableCommitEdit (table); } void gncTaxTableSetChild (GncTaxTable *table, GncTaxTable *child) { - if (!table) return; - gncTaxTableBeginEdit (table); - table->child = child; - gncTaxTableCommitEdit (table); + if (!table) return; + gncTaxTableBeginEdit (table); + table->child = child; + gncTaxTableCommitEdit (table); } void gncTaxTableIncRef (GncTaxTable *table) { - if (!table) return; - if (table->parent || table->invisible) return; /* children dont need refcounts */ - gncTaxTableBeginEdit (table); - table->refcount++; - gncTaxTableCommitEdit (table); + if (!table) return; + if (table->parent || table->invisible) return; /* children dont need refcounts */ + gncTaxTableBeginEdit (table); + table->refcount++; + gncTaxTableCommitEdit (table); } void gncTaxTableDecRef (GncTaxTable *table) { - if (!table) return; - if (table->parent || table->invisible) return; /* children dont need refcounts */ - gncTaxTableBeginEdit (table); - table->refcount--; - g_return_if_fail (table->refcount >= 0); - gncTaxTableCommitEdit (table); + if (!table) return; + if (table->parent || table->invisible) return; /* children dont need refcounts */ + gncTaxTableBeginEdit (table); + table->refcount--; + g_return_if_fail (table->refcount >= 0); + gncTaxTableCommitEdit (table); } void gncTaxTableSetRefcount (GncTaxTable *table, gint64 refcount) { - if (!table) return; - table->refcount = refcount; + if (!table) return; + table->refcount = refcount; } void gncTaxTableMakeInvisible (GncTaxTable *table) { - struct _book_info *bi; - if (!table) return; - gncTaxTableBeginEdit (table); - table->invisible = TRUE; - bi = qof_book_get_data (qof_instance_get_book(table), _GNC_MOD_NAME); - bi->tables = g_list_remove (bi->tables, table); - gncTaxTableCommitEdit (table); + struct _book_info *bi; + if (!table) return; + gncTaxTableBeginEdit (table); + table->invisible = TRUE; + bi = qof_book_get_data (qof_instance_get_book(table), _GNC_MOD_NAME); + bi->tables = g_list_remove (bi->tables, table); + gncTaxTableCommitEdit (table); } void gncTaxTableEntrySetAccount (GncTaxTableEntry *entry, Account *account) { - if (!entry || !account) return; - if (entry->account == account) return; - entry->account = account; - if (entry->table) { - mark_table (entry->table); - mod_table (entry->table); - } + if (!entry || !account) return; + if (entry->account == account) return; + entry->account = account; + if (entry->table) + { + mark_table (entry->table); + mod_table (entry->table); + } } void gncTaxTableEntrySetType (GncTaxTableEntry *entry, GncAmountType type) { - if (!entry) return; - if (entry->type == type) return; - entry->type = type; - if (entry->table) { - mark_table (entry->table); - mod_table (entry->table); - } + if (!entry) return; + if (entry->type == type) return; + entry->type = type; + if (entry->table) + { + mark_table (entry->table); + mod_table (entry->table); + } } void gncTaxTableEntrySetAmount (GncTaxTableEntry *entry, gnc_numeric amount) { - if (!entry) return; - if (gnc_numeric_eq (entry->amount, amount)) return; - entry->amount = amount; - if (entry->table) { - mark_table (entry->table); - mod_table (entry->table); - } + if (!entry) return; + if (gnc_numeric_eq (entry->amount, amount)) return; + entry->amount = amount; + if (entry->table) + { + mark_table (entry->table); + mod_table (entry->table); + } } void gncTaxTableAddEntry (GncTaxTable *table, GncTaxTableEntry *entry) { - if (!table || !entry) return; - if (entry->table == table) return; /* already mine */ + if (!table || !entry) return; + if (entry->table == table) return; /* already mine */ - gncTaxTableBeginEdit (table); - if (entry->table) - gncTaxTableRemoveEntry (entry->table, entry); + gncTaxTableBeginEdit (table); + if (entry->table) + gncTaxTableRemoveEntry (entry->table, entry); - entry->table = table; - table->entries = g_list_insert_sorted (table->entries, entry, - (GCompareFunc)gncTaxTableEntryCompare); - mark_table (table); - mod_table (table); - gncTaxTableCommitEdit (table); + entry->table = table; + table->entries = g_list_insert_sorted (table->entries, entry, + (GCompareFunc)gncTaxTableEntryCompare); + mark_table (table); + mod_table (table); + gncTaxTableCommitEdit (table); } void gncTaxTableRemoveEntry (GncTaxTable *table, GncTaxTableEntry *entry) { - if (!table || !entry) return; - gncTaxTableBeginEdit (table); - entry->table = NULL; - table->entries = g_list_remove (table->entries, entry); - mark_table (table); - mod_table (table); - gncTaxTableCommitEdit (table); + if (!table || !entry) return; + gncTaxTableBeginEdit (table); + entry->table = NULL; + table->entries = g_list_remove (table->entries, entry); + mark_table (table); + mod_table (table); + gncTaxTableCommitEdit (table); } void gncTaxTableChanged (GncTaxTable *table) { - if (!table) return; - gncTaxTableBeginEdit (table); - table->child = NULL; - gncTaxTableCommitEdit (table); + if (!table) return; + gncTaxTableBeginEdit (table); + table->child = NULL; + gncTaxTableCommitEdit (table); } /* =============================================================== */ void gncTaxTableBeginEdit (GncTaxTable *table) { - qof_begin_edit(&table->inst); + qof_begin_edit(&table->inst); } static void gncTaxTableOnError (QofInstance *inst, QofBackendError errcode) { - PERR("TaxTable QofBackend Failure: %d", errcode); - gnc_engine_signal_commit_error( errcode ); + PERR("TaxTable QofBackend Failure: %d", errcode); + gnc_engine_signal_commit_error( errcode ); } static void gncTaxTableOnDone (QofInstance *inst) {} static void table_free (QofInstance *inst) { - GncTaxTable *table = (GncTaxTable *) inst; - gncTaxTableFree (table); + GncTaxTable *table = (GncTaxTable *) inst; + gncTaxTableFree (table); } void gncTaxTableCommitEdit (GncTaxTable *table) { - if (!qof_commit_edit (QOF_INSTANCE(table))) return; - qof_commit_edit_part2 (&table->inst, gncTaxTableOnError, - gncTaxTableOnDone, table_free); + if (!qof_commit_edit (QOF_INSTANCE(table))) return; + qof_commit_edit_part2 (&table->inst, gncTaxTableOnError, + gncTaxTableOnDone, table_free); } @@ -631,158 +638,161 @@ void gncTaxTableCommitEdit (GncTaxTable *table) GncTaxTable *gncTaxTableLookupByName (QofBook *book, const char *name) { - GList *list = gncTaxTableGetTables (book); + GList *list = gncTaxTableGetTables (book); - for ( ; list; list = list->next) { - GncTaxTable *table = list->data; - if (!safe_strcmp (table->name, name)) - return list->data; - } - return NULL; + for ( ; list; list = list->next) + { + GncTaxTable *table = list->data; + if (!safe_strcmp (table->name, name)) + return list->data; + } + return NULL; } GList * gncTaxTableGetTables (QofBook *book) { - struct _book_info *bi; - if (!book) return NULL; + struct _book_info *bi; + if (!book) return NULL; - bi = qof_book_get_data (book, _GNC_MOD_NAME); - return bi->tables; + bi = qof_book_get_data (book, _GNC_MOD_NAME); + return bi->tables; } const char *gncTaxTableGetName (const GncTaxTable *table) { - if (!table) return NULL; - return table->name; + if (!table) return NULL; + return table->name; } static GncTaxTableEntry *gncTaxTableEntryCopy (const GncTaxTableEntry *entry) { - GncTaxTableEntry *e; - if (!entry) return NULL; + GncTaxTableEntry *e; + if (!entry) return NULL; - e = gncTaxTableEntryCreate (); - gncTaxTableEntrySetAccount (e, entry->account); - gncTaxTableEntrySetType (e, entry->type); - gncTaxTableEntrySetAmount (e, entry->amount); + e = gncTaxTableEntryCreate (); + gncTaxTableEntrySetAccount (e, entry->account); + gncTaxTableEntrySetType (e, entry->type); + gncTaxTableEntrySetAmount (e, entry->amount); - return e; + return e; } static GncTaxTable *gncTaxTableCopy (const GncTaxTable *table) { - GncTaxTable *t; - GList *list; + GncTaxTable *t; + GList *list; - if (!table) return NULL; - t = gncTaxTableCreate (qof_instance_get_book(table)); - gncTaxTableSetName (t, table->name); - for (list = table->entries; list; list=list->next) { - GncTaxTableEntry *entry, *e; - entry = list->data; - e = gncTaxTableEntryCopy (entry); - gncTaxTableAddEntry (t, e); - } - return t; + if (!table) return NULL; + t = gncTaxTableCreate (qof_instance_get_book(table)); + gncTaxTableSetName (t, table->name); + for (list = table->entries; list; list = list->next) + { + GncTaxTableEntry *entry, *e; + entry = list->data; + e = gncTaxTableEntryCopy (entry); + gncTaxTableAddEntry (t, e); + } + return t; } GncTaxTable *gncTaxTableReturnChild (GncTaxTable *table, gboolean make_new) { - GncTaxTable *child = NULL; + GncTaxTable *child = NULL; - if (!table) return NULL; - if (table->child) return table->child; - if (table->parent || table->invisible) return table; - if (make_new) { - child = gncTaxTableCopy (table); - gncTaxTableSetChild (table, child); - gncTaxTableSetParent (child, table); - } - return child; + if (!table) return NULL; + if (table->child) return table->child; + if (table->parent || table->invisible) return table; + if (make_new) + { + child = gncTaxTableCopy (table); + gncTaxTableSetChild (table, child); + gncTaxTableSetParent (child, table); + } + return child; } GncTaxTable *gncTaxTableGetParent (const GncTaxTable *table) { - if (!table) return NULL; - return table->parent; + if (!table) return NULL; + return table->parent; } GncTaxTableEntryList* gncTaxTableGetEntries (const GncTaxTable *table) { - if (!table) return NULL; - return table->entries; + if (!table) return NULL; + return table->entries; } gint64 gncTaxTableGetRefcount (const GncTaxTable *table) { - if (!table) return 0; - return table->refcount; + if (!table) return 0; + return table->refcount; } Timespec gncTaxTableLastModified (const GncTaxTable *table) { - Timespec ts = { 0 , 0 }; - if (!table) return ts; - return table->modtime; + Timespec ts = { 0 , 0 }; + if (!table) return ts; + return table->modtime; } gboolean gncTaxTableGetInvisible (const GncTaxTable *table) { - if (!table) return FALSE; - return table->invisible; + if (!table) return FALSE; + return table->invisible; } Account * gncTaxTableEntryGetAccount (const GncTaxTableEntry *entry) { - if (!entry) return NULL; - return entry->account; + if (!entry) return NULL; + return entry->account; } GncAmountType gncTaxTableEntryGetType (const GncTaxTableEntry *entry) { - if (!entry) return 0; - return entry->type; + if (!entry) return 0; + return entry->type; } gnc_numeric gncTaxTableEntryGetAmount (const GncTaxTableEntry *entry) { - if (!entry) return gnc_numeric_zero(); - return entry->amount; + if (!entry) return gnc_numeric_zero(); + return entry->amount; } GncTaxTable* gncTaxTableEntryGetTable( const GncTaxTableEntry* entry ) { - if (!entry) return NULL; - return entry->table; + if (!entry) return NULL; + return entry->table; } int gncTaxTableEntryCompare (const GncTaxTableEntry *a, const GncTaxTableEntry *b) { - char *name_a, *name_b; - int retval; + char *name_a, *name_b; + int retval; - if (!a && !b) return 0; - if (!a) return -1; - if (!b) return 1; - - name_a = gnc_account_get_full_name (a->account); - name_b = gnc_account_get_full_name (b->account); - retval = safe_strcmp(name_a, name_b); - g_free(name_a); - g_free(name_b); + if (!a && !b) return 0; + if (!a) return -1; + if (!b) return 1; - if (retval) - return retval; + name_a = gnc_account_get_full_name (a->account); + name_b = gnc_account_get_full_name (b->account); + retval = safe_strcmp(name_a, name_b); + g_free(name_a); + g_free(name_b); - return gnc_numeric_compare (a->amount, b->amount); + if (retval) + return retval; + + return gnc_numeric_compare (a->amount, b->amount); } int gncTaxTableCompare (const GncTaxTable *a, const GncTaxTable *b) { - if (!a && !b) return 0; - if (!a) return -1; - if (!b) return 1; - return safe_strcmp (a->name, b->name); + if (!a && !b) return 0; + if (!a) return -1; + if (!b) return 1; + return safe_strcmp (a->name, b->name); } @@ -792,116 +802,121 @@ int gncTaxTableCompare (const GncTaxTable *a, const GncTaxTable *b) */ GList *gncAccountValueAdd (GList *list, Account *acc, gnc_numeric value) { - GList *li; - GncAccountValue *res = NULL; + GList *li; + GncAccountValue *res = NULL; - g_return_val_if_fail (acc, list); - g_return_val_if_fail (gnc_numeric_check (value) == GNC_ERROR_OK, list); + g_return_val_if_fail (acc, list); + g_return_val_if_fail (gnc_numeric_check (value) == GNC_ERROR_OK, list); - /* Try to find the account in the list */ - for (li = list; li; li = li->next) { - res = li->data; - if (res->account == acc) { - res->value = gnc_numeric_add (res->value, value, GNC_DENOM_AUTO, - GNC_DENOM_LCD); - return list; + /* Try to find the account in the list */ + for (li = list; li; li = li->next) + { + res = li->data; + if (res->account == acc) + { + res->value = gnc_numeric_add (res->value, value, GNC_DENOM_AUTO, + GNC_DENOM_LCD); + return list; + } } - } - /* Nope, didn't find it. */ + /* Nope, didn't find it. */ - res = g_new0 (GncAccountValue, 1); - res->account = acc; - res->value = value; - return g_list_prepend (list, res); + res = g_new0 (GncAccountValue, 1); + res->account = acc; + res->value = value; + return g_list_prepend (list, res); } /* Merge l2 into l1. l2 is not touched. */ GList *gncAccountValueAddList (GList *l1, GList *l2) { - GList *li; + GList *li; - for (li = l2; li; li = li->next ) { - GncAccountValue *val = li->data; - l1 = gncAccountValueAdd (l1, val->account, val->value); - } + for (li = l2; li; li = li->next ) + { + GncAccountValue *val = li->data; + l1 = gncAccountValueAdd (l1, val->account, val->value); + } - return l1; + return l1; } /* return the total for this list */ gnc_numeric gncAccountValueTotal (GList *list) { - gnc_numeric total = gnc_numeric_zero (); + gnc_numeric total = gnc_numeric_zero (); - for ( ; list ; list = list->next) { - GncAccountValue *val = list->data; - total = gnc_numeric_add (total, val->value, GNC_DENOM_AUTO, GNC_DENOM_LCD); - } - return total; + for ( ; list ; list = list->next) + { + GncAccountValue *val = list->data; + total = gnc_numeric_add (total, val->value, GNC_DENOM_AUTO, GNC_DENOM_LCD); + } + return total; } /* Destroy a list of accountvalues */ void gncAccountValueDestroy (GList *list) { - GList *node; - for ( node = list; node ; node = node->next) - g_free (node->data); + GList *node; + for ( node = list; node ; node = node->next) + g_free (node->data); - g_list_free (list); + g_list_free (list); } /* Package-Private functions */ static void _gncTaxTableCreate (QofBook *book) { - struct _book_info *bi; + struct _book_info *bi; - if (!book) return; + if (!book) return; - bi = g_new0 (struct _book_info, 1); - qof_book_set_data (book, _GNC_MOD_NAME, bi); + bi = g_new0 (struct _book_info, 1); + qof_book_set_data (book, _GNC_MOD_NAME, bi); } static void _gncTaxTableDestroy (QofBook *book) { - struct _book_info *bi; + struct _book_info *bi; - if (!book) return; + if (!book) return; - bi = qof_book_get_data (book, _GNC_MOD_NAME); + bi = qof_book_get_data (book, _GNC_MOD_NAME); - g_list_free (bi->tables); - g_free (bi); + g_list_free (bi->tables); + g_free (bi); } -static QofObject gncTaxTableDesc = +static QofObject gncTaxTableDesc = { - .interface_version = QOF_OBJECT_VERSION, - .e_type = _GNC_MOD_NAME, - .type_label = "Tax Table", - .create = (gpointer)gncTaxTableCreate, - .book_begin = _gncTaxTableCreate, - .book_end = _gncTaxTableDestroy, - .is_dirty = qof_collection_is_dirty, - .mark_clean = qof_collection_mark_clean, - .foreach = qof_collection_foreach, - .printable = NULL, - .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, + .interface_version = QOF_OBJECT_VERSION, + .e_type = _GNC_MOD_NAME, + .type_label = "Tax Table", + .create = (gpointer)gncTaxTableCreate, + .book_begin = _gncTaxTableCreate, + .book_end = _gncTaxTableDestroy, + .is_dirty = qof_collection_is_dirty, + .mark_clean = qof_collection_mark_clean, + .foreach = qof_collection_foreach, + .printable = NULL, + .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, }; gboolean gncTaxTableRegister (void) { - static QofParam params[] = { - { GNC_TT_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncTaxTableGetName, (QofSetterFunc)gncTaxTableSetName }, - { GNC_TT_REFCOUNT, QOF_TYPE_INT64, (QofAccessFunc)gncTaxTableGetRefcount, (QofSetterFunc)gncTaxTableSetRefcount }, - { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, - { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { GNC_TT_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncTaxTableGetName, (QofSetterFunc)gncTaxTableSetName }, + { GNC_TT_REFCOUNT, QOF_TYPE_INT64, (QofAccessFunc)gncTaxTableGetRefcount, (QofSetterFunc)gncTaxTableSetRefcount }, + { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, + { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, + { NULL }, + }; - qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncTaxTableCompare, params); + qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncTaxTableCompare, params); - return qof_object_register (&gncTaxTableDesc); + return qof_object_register (&gncTaxTableDesc); } /* need a QOF tax table entry object */ diff --git a/src/business/business-core/gncTaxTable.h b/src/business/business-core/gncTaxTable.h index 34cf31d5f8..c5efa58bbd 100644 --- a/src/business/business-core/gncTaxTable.h +++ b/src/business/business-core/gncTaxTable.h @@ -35,18 +35,18 @@ modtime is the internal date of the last modtime\n See src/doc/business.txt for an explanation of the following\n -Code that handles refcount, parent, child, invisible and children +Code that handles refcount, parent, child, invisible and children is *identical* to that in ::GncBillTerm @param QofInstance inst; @param char * name; @param GncTaxTableEntryList* entries; -@param Timespec modtime; +@param Timespec modtime; @param gint64 refcount; -@param GncTaxTable * parent; if non-null, we are an immutable child -@param GncTaxTable * child; if non-null, we have not changed +@param GncTaxTable * parent; if non-null, we are an immutable child +@param GncTaxTable * child; if non-null, we have not changed @param gboolean invisible; -@param GList * children; list of children for disconnection +@param GList * children; list of children for disconnection */ typedef struct _gncTaxTable GncTaxTable; typedef struct _gncTaxTableClass GncTaxTableClass; @@ -90,16 +90,18 @@ 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 */ +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 */ +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); @@ -108,14 +110,14 @@ gboolean gncAmountStringToType (const char *str, GncAmountType *type); const char * gncTaxIncludedTypeToString (GncTaxIncluded type); gboolean gncTaxIncludedStringToType (const char *str, GncTaxIncluded *type); -/** @name Create/Destroy Functions +/** @name Create/Destroy Functions @{ */ GncTaxTable * gncTaxTableCreate (QofBook *book); void gncTaxTableDestroy (GncTaxTable *table); GncTaxTableEntry * gncTaxTableEntryCreate (void); void gncTaxTableEntryDestroy (GncTaxTableEntry *entry); /** @} */ -/** \name Set Functions +/** \name Set Functions @{ */ void gncTaxTableSetName (GncTaxTable *table, const char *name); @@ -133,11 +135,11 @@ void gncTaxTableChanged (GncTaxTable *table); void gncTaxTableBeginEdit (GncTaxTable *table); void gncTaxTableCommitEdit (GncTaxTable *table); -/** @name Get Functions +/** @name Get Functions @{ */ /** Return a pointer to the instance gncTaxTable that is identified - * by the guid, and is residing in the book. Returns NULL if the + * by the guid, and is residing in the book. Returns NULL if the * instance can't be found. * Equivalent function prototype is * GncTaxTable * gncTaxTableLookup (QofBook *book, const GUID *guid); @@ -168,9 +170,10 @@ int gncTaxTableEntryCompare (const GncTaxTableEntry *a, const GncTaxTableEntry * /************************************************/ -struct _gncAccountValue { - Account * account; - gnc_numeric value; +struct _gncAccountValue +{ + Account * account; + gnc_numeric value; }; /** diff --git a/src/business/business-core/gncVendor.c b/src/business/business-core/gncVendor.c index 14cb3f1dfa..61bcecedd5 100644 --- a/src/business/business-core/gncVendor.c +++ b/src/business/business-core/gncVendor.c @@ -42,28 +42,28 @@ static gint gs_address_event_handler_id = 0; static void listen_for_address_events(QofInstance *entity, QofEventId event_type, - gpointer user_data, gpointer event_data); + gpointer user_data, gpointer event_data); -struct _gncVendor +struct _gncVendor { - QofInstance inst; + QofInstance inst; - char * id; - char * name; - char * notes; - GncBillTerm * terms; - GncAddress * addr; - gnc_commodity * currency; - GncTaxTable* taxtable; - gboolean taxtable_override; - GncTaxIncluded taxincluded; - gboolean active; - GList * jobs; + char * id; + char * name; + char * notes; + GncBillTerm * terms; + GncAddress * addr; + gnc_commodity * currency; + GncTaxTable* taxtable; + gboolean taxtable_override; + GncTaxIncluded taxincluded; + gboolean active; + GList * jobs; }; struct _gncVendorClass { - QofInstanceClass parent_class; + QofInstanceClass parent_class; }; static QofLogModule log_module = GNC_MOD_BUSINESS; @@ -76,15 +76,16 @@ static QofLogModule log_module = GNC_MOD_BUSINESS; G_INLINE_FUNC void mark_vendor (GncVendor *vendor); void mark_vendor (GncVendor *vendor) { - qof_instance_set_dirty(&vendor->inst); - qof_event_gen (&vendor->inst, QOF_EVENT_MODIFY, NULL); + qof_instance_set_dirty(&vendor->inst); + qof_event_gen (&vendor->inst, QOF_EVENT_MODIFY, NULL); } /* ============================================================== */ -enum { +enum +{ PROP_0, - PROP_NAME + PROP_NAME }; /* GObject Initialization */ @@ -109,43 +110,45 @@ gnc_vendor_finalize(GObject* vendorp) static void gnc_vendor_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GncVendor *vendor; g_return_if_fail(GNC_IS_VENDOR(object)); vendor = GNC_VENDOR(object); - switch (prop_id) { - case PROP_NAME: - g_value_set_string(value, vendor->name); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NAME: + g_value_set_string(value, vendor->name); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } static void gnc_vendor_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GncVendor *vendor; g_return_if_fail(GNC_IS_VENDOR(object)); vendor = GNC_VENDOR(object); - switch (prop_id) { - case PROP_NAME: - gncVendorSetName(vendor, g_value_get_string(value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; + switch (prop_id) + { + case PROP_NAME: + gncVendorSetName(vendor, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; } } @@ -153,134 +156,135 @@ static void gnc_vendor_class_init (GncVendorClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - + gobject_class->dispose = gnc_vendor_dispose; gobject_class->finalize = gnc_vendor_finalize; gobject_class->set_property = gnc_vendor_set_property; gobject_class->get_property = gnc_vendor_get_property; g_object_class_install_property - (gobject_class, - PROP_NAME, - g_param_spec_string ("name", - "Vendor Name", - "The vendor name is an arbitrary string " - "assigned by the user to provide the vendor name.", - NULL, - G_PARAM_READWRITE)); + (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "Vendor Name", + "The vendor name is an arbitrary string " + "assigned by the user to provide the vendor name.", + NULL, + G_PARAM_READWRITE)); } /* Create/Destroy Functions */ GncVendor *gncVendorCreate (QofBook *book) { - GncVendor *vendor; + GncVendor *vendor; - if (!book) return NULL; + if (!book) return NULL; - vendor = g_object_new (GNC_TYPE_VENDOR, NULL); - qof_instance_init_data (&vendor->inst, _GNC_MOD_NAME, book); - - vendor->id = CACHE_INSERT (""); - vendor->name = CACHE_INSERT (""); - vendor->notes = CACHE_INSERT (""); - vendor->addr = gncAddressCreate (book, &vendor->inst); - vendor->taxincluded = GNC_TAXINCLUDED_USEGLOBAL; - vendor->active = TRUE; - vendor->jobs = NULL; + vendor = g_object_new (GNC_TYPE_VENDOR, NULL); + qof_instance_init_data (&vendor->inst, _GNC_MOD_NAME, book); - if (gs_address_event_handler_id == 0) { - gs_address_event_handler_id = qof_event_register_handler(listen_for_address_events, NULL); - } + vendor->id = CACHE_INSERT (""); + vendor->name = CACHE_INSERT (""); + vendor->notes = CACHE_INSERT (""); + vendor->addr = gncAddressCreate (book, &vendor->inst); + vendor->taxincluded = GNC_TAXINCLUDED_USEGLOBAL; + vendor->active = TRUE; + vendor->jobs = NULL; - qof_event_gen (&vendor->inst, QOF_EVENT_CREATE, NULL); + if (gs_address_event_handler_id == 0) + { + gs_address_event_handler_id = qof_event_register_handler(listen_for_address_events, NULL); + } - return vendor; + qof_event_gen (&vendor->inst, QOF_EVENT_CREATE, NULL); + + return vendor; } void gncVendorDestroy (GncVendor *vendor) { - if (!vendor) return; - qof_instance_set_destroying(vendor, TRUE); - gncVendorCommitEdit (vendor); + if (!vendor) return; + qof_instance_set_destroying(vendor, TRUE); + gncVendorCommitEdit (vendor); } static void gncVendorFree (GncVendor *vendor) { - if (!vendor) return; + if (!vendor) return; - qof_event_gen (&vendor->inst, QOF_EVENT_DESTROY, NULL); + qof_event_gen (&vendor->inst, QOF_EVENT_DESTROY, NULL); - CACHE_REMOVE (vendor->id); - CACHE_REMOVE (vendor->name); - CACHE_REMOVE (vendor->notes); - gncAddressBeginEdit (vendor->addr); - gncAddressDestroy (vendor->addr); - g_list_free (vendor->jobs); + CACHE_REMOVE (vendor->id); + CACHE_REMOVE (vendor->name); + CACHE_REMOVE (vendor->notes); + gncAddressBeginEdit (vendor->addr); + gncAddressDestroy (vendor->addr); + g_list_free (vendor->jobs); - if (vendor->terms) - gncBillTermDecRef (vendor->terms); - if (vendor->taxtable) - gncTaxTableDecRef (vendor->taxtable); + if (vendor->terms) + gncBillTermDecRef (vendor->terms); + if (vendor->taxtable) + gncTaxTableDecRef (vendor->taxtable); - /* qof_instance_release (&vendor->inst); */ - g_object_unref (vendor); + /* qof_instance_release (&vendor->inst); */ + g_object_unref (vendor); } /** Create a copy of a vendor, placing the copy into a new book. */ GncVendor * gncCloneVendor (GncVendor *from, QofBook *book) { - GList *node; - GncVendor *vendor; + GList *node; + GncVendor *vendor; - if (!book) return NULL; + if (!book) return NULL; - vendor = g_object_new (GNC_TYPE_VENDOR, NULL); - qof_instance_init_data (&vendor->inst, _GNC_MOD_NAME, book); - qof_instance_gemini (&vendor->inst, &from->inst); - - vendor->id = CACHE_INSERT (from->id); - vendor->name = CACHE_INSERT (from->name); - vendor->notes = CACHE_INSERT (from->notes); - vendor->addr = gncCloneAddress (from->addr, &vendor->inst, book); - vendor->taxincluded = from->taxincluded; - vendor->taxtable_override = from->taxtable_override; - vendor->active = from->active; + vendor = g_object_new (GNC_TYPE_VENDOR, NULL); + qof_instance_init_data (&vendor->inst, _GNC_MOD_NAME, book); + qof_instance_gemini (&vendor->inst, &from->inst); - vendor->terms = gncBillTermObtainTwin (from->terms, book); - gncBillTermIncRef (vendor->terms); + vendor->id = CACHE_INSERT (from->id); + vendor->name = CACHE_INSERT (from->name); + vendor->notes = CACHE_INSERT (from->notes); + vendor->addr = gncCloneAddress (from->addr, &vendor->inst, book); + vendor->taxincluded = from->taxincluded; + vendor->taxtable_override = from->taxtable_override; + vendor->active = from->active; - vendor->currency = gnc_commodity_obtain_twin (from->currency, book); + vendor->terms = gncBillTermObtainTwin (from->terms, book); + gncBillTermIncRef (vendor->terms); - vendor->taxtable = gncTaxTableObtainTwin (from->taxtable, book); - gncTaxTableIncRef (vendor->taxtable); + vendor->currency = gnc_commodity_obtain_twin (from->currency, book); - vendor->jobs = NULL; - for (node=g_list_last(from->jobs); node; node=node->prev) - { - GncJob *job = node->data; - job = gncJobObtainTwin (job, book); - vendor->jobs = g_list_prepend(vendor->jobs, job); - } + vendor->taxtable = gncTaxTableObtainTwin (from->taxtable, book); + gncTaxTableIncRef (vendor->taxtable); - qof_event_gen (&vendor->inst, QOF_EVENT_CREATE, NULL); + vendor->jobs = NULL; + for (node = g_list_last(from->jobs); node; node = node->prev) + { + GncJob *job = node->data; + job = gncJobObtainTwin (job, book); + vendor->jobs = g_list_prepend(vendor->jobs, job); + } - return vendor; + qof_event_gen (&vendor->inst, QOF_EVENT_CREATE, NULL); + + return vendor; } GncVendor * gncVendorObtainTwin (GncVendor *from, QofBook *book) { - GncVendor *vendor; - if (!book) return NULL; + GncVendor *vendor; + if (!book) return NULL; - vendor = (GncVendor *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); - if (!vendor) - { - vendor = gncCloneVendor (from, book); - } + vendor = (GncVendor *) qof_instance_lookup_twin (QOF_INSTANCE(from), book); + if (!vendor) + { + vendor = gncCloneVendor (from, book); + } - return vendor; + return vendor; } /* ============================================================== */ @@ -298,128 +302,138 @@ gncVendorObtainTwin (GncVendor *from, QofBook *book) void gncVendorSetID (GncVendor *vendor, const char *id) { - if (!vendor) return; - if (!id) return; - SET_STR(vendor, vendor->id, id); - mark_vendor (vendor); - gncVendorCommitEdit (vendor); + if (!vendor) return; + if (!id) return; + SET_STR(vendor, vendor->id, id); + mark_vendor (vendor); + gncVendorCommitEdit (vendor); } void gncVendorSetName (GncVendor *vendor, const char *name) { - if (!vendor) return; - if (!name) return; - SET_STR(vendor, vendor->name, name); - mark_vendor (vendor); - gncVendorCommitEdit (vendor); + if (!vendor) return; + if (!name) return; + SET_STR(vendor, vendor->name, name); + mark_vendor (vendor); + gncVendorCommitEdit (vendor); } void gncVendorSetNotes (GncVendor *vendor, const char *notes) { - if (!vendor) return; - if (!notes) return; - SET_STR(vendor,vendor->notes, notes); - mark_vendor (vendor); - gncVendorCommitEdit (vendor); + if (!vendor) return; + if (!notes) return; + SET_STR(vendor, vendor->notes, notes); + mark_vendor (vendor); + gncVendorCommitEdit (vendor); } void gncVendorSetTerms (GncVendor *vendor, GncBillTerm *terms) { - if (!vendor) return; - if (vendor->terms == terms) return; + if (!vendor) return; + if (vendor->terms == terms) return; - gncVendorBeginEdit (vendor); - if (vendor->terms) - gncBillTermDecRef (vendor->terms); - vendor->terms = terms; - if (vendor->terms) - gncBillTermIncRef (vendor->terms); - mark_vendor (vendor); - gncVendorCommitEdit (vendor); + gncVendorBeginEdit (vendor); + if (vendor->terms) + gncBillTermDecRef (vendor->terms); + vendor->terms = terms; + if (vendor->terms) + gncBillTermIncRef (vendor->terms); + mark_vendor (vendor); + gncVendorCommitEdit (vendor); } void gncVendorSetTaxIncluded (GncVendor *vendor, GncTaxIncluded taxincl) { - if (!vendor) return; - if (taxincl == vendor->taxincluded) return; - gncVendorBeginEdit (vendor); - vendor->taxincluded = taxincl; - mark_vendor (vendor); - gncVendorCommitEdit (vendor); + if (!vendor) return; + if (taxincl == vendor->taxincluded) return; + gncVendorBeginEdit (vendor); + vendor->taxincluded = taxincl; + mark_vendor (vendor); + gncVendorCommitEdit (vendor); } void gncVendorSetCurrency (GncVendor *vendor, gnc_commodity *currency) { - if (!vendor || !currency) return; - if (vendor->currency && - gnc_commodity_equal (vendor->currency, currency)) - return; - gncVendorBeginEdit (vendor); - vendor->currency = currency; - mark_vendor (vendor); - gncVendorCommitEdit (vendor); + if (!vendor || !currency) return; + if (vendor->currency && + gnc_commodity_equal (vendor->currency, currency)) + return; + gncVendorBeginEdit (vendor); + vendor->currency = currency; + mark_vendor (vendor); + gncVendorCommitEdit (vendor); } void gncVendorSetActive (GncVendor *vendor, gboolean active) { - if (!vendor) return; - if (active == vendor->active) return; - gncVendorBeginEdit (vendor); - vendor->active = active; - mark_vendor (vendor); - gncVendorCommitEdit (vendor); + if (!vendor) return; + if (active == vendor->active) return; + gncVendorBeginEdit (vendor); + vendor->active = active; + mark_vendor (vendor); + gncVendorCommitEdit (vendor); } void gncVendorSetTaxTableOverride (GncVendor *vendor, gboolean override) { - if (!vendor) return; - if (vendor->taxtable_override == override) return; - gncVendorBeginEdit (vendor); - vendor->taxtable_override = override; - mark_vendor (vendor); - gncVendorCommitEdit (vendor); + if (!vendor) return; + if (vendor->taxtable_override == override) return; + gncVendorBeginEdit (vendor); + vendor->taxtable_override = override; + mark_vendor (vendor); + gncVendorCommitEdit (vendor); } void gncVendorSetTaxTable (GncVendor *vendor, GncTaxTable *table) { - if (!vendor) return; - if (vendor->taxtable == table) return; - gncVendorBeginEdit (vendor); - if (vendor->taxtable) - gncTaxTableDecRef (vendor->taxtable); - if (table) - gncTaxTableIncRef (table); - vendor->taxtable = table; - mark_vendor (vendor); - gncVendorCommitEdit (vendor); + if (!vendor) return; + if (vendor->taxtable == table) return; + gncVendorBeginEdit (vendor); + if (vendor->taxtable) + gncTaxTableDecRef (vendor->taxtable); + if (table) + gncTaxTableIncRef (table); + vendor->taxtable = table; + mark_vendor (vendor); + gncVendorCommitEdit (vendor); } static void qofVendorSetAddr (GncVendor *vendor, QofInstance *addr_ent) { - GncAddress *addr; + GncAddress *addr; - if(!vendor || !addr_ent) { return; } - addr = (GncAddress*)addr_ent; - if(addr == vendor->addr) { return; } - if(vendor->addr != NULL) { - gncAddressBeginEdit(vendor->addr); - gncAddressDestroy(vendor->addr); - } - gncVendorBeginEdit(vendor); - vendor->addr = addr; - gncVendorCommitEdit(vendor); + if (!vendor || !addr_ent) + { + return; + } + addr = (GncAddress*)addr_ent; + if (addr == vendor->addr) + { + return; + } + if (vendor->addr != NULL) + { + gncAddressBeginEdit(vendor->addr); + gncAddressDestroy(vendor->addr); + } + gncVendorBeginEdit(vendor); + vendor->addr = addr; + gncVendorCommitEdit(vendor); } static void qofVendorSetTaxIncluded(GncVendor *vendor, const char* type_string) { - GncTaxIncluded inc; + GncTaxIncluded inc; - if(!gncTaxIncludedStringToType(type_string, &inc)) { return; } - gncVendorBeginEdit(vendor); - vendor->taxincluded = inc; - gncVendorCommitEdit(vendor); + if (!gncTaxIncludedStringToType(type_string, &inc)) + { + return; + } + gncVendorBeginEdit(vendor); + vendor->taxincluded = inc; + gncVendorCommitEdit(vendor); } /* ============================================================== */ @@ -427,129 +441,132 @@ qofVendorSetTaxIncluded(GncVendor *vendor, const char* type_string) const char * gncVendorGetID (const GncVendor *vendor) { - if (!vendor) return NULL; - return vendor->id; + if (!vendor) return NULL; + return vendor->id; } const char * gncVendorGetName (const GncVendor *vendor) { - if (!vendor) return NULL; - return vendor->name; + if (!vendor) return NULL; + return vendor->name; } GncAddress * gncVendorGetAddr (const GncVendor *vendor) { - if (!vendor) return NULL; - return vendor->addr; + if (!vendor) return NULL; + return vendor->addr; } const char * gncVendorGetNotes (const GncVendor *vendor) { - if (!vendor) return NULL; - return vendor->notes; + if (!vendor) return NULL; + return vendor->notes; } GncBillTerm * gncVendorGetTerms (const GncVendor *vendor) { - if (!vendor) return 0; - return vendor->terms; + if (!vendor) return 0; + return vendor->terms; } GncTaxIncluded gncVendorGetTaxIncluded (const GncVendor *vendor) { - if (!vendor) return GNC_TAXINCLUDED_USEGLOBAL; - return vendor->taxincluded; + if (!vendor) return GNC_TAXINCLUDED_USEGLOBAL; + return vendor->taxincluded; } gnc_commodity * gncVendorGetCurrency (const GncVendor *vendor) { - if (!vendor) return NULL; - return vendor->currency; + if (!vendor) return NULL; + return vendor->currency; } gboolean gncVendorGetActive (const GncVendor *vendor) { - if (!vendor) return FALSE; - return vendor->active; + if (!vendor) return FALSE; + return vendor->active; } gboolean gncVendorGetTaxTableOverride (const GncVendor *vendor) { - if (!vendor) return FALSE; - return vendor->taxtable_override; + if (!vendor) return FALSE; + return vendor->taxtable_override; } GncTaxTable* gncVendorGetTaxTable (const GncVendor *vendor) { - if (!vendor) return NULL; - return vendor->taxtable; + if (!vendor) return NULL; + return vendor->taxtable; } static const char* qofVendorGetTaxIncluded(const GncVendor *vendor) { - return gncTaxIncludedTypeToString(vendor->taxincluded); + return gncTaxIncludedTypeToString(vendor->taxincluded); } /* Note that JobList changes do not affect the "dirtiness" of the vendor */ void gncVendorAddJob (GncVendor *vendor, GncJob *job) { - if (!vendor) return; - if (!job) return; + if (!vendor) return; + if (!job) return; - if (g_list_index(vendor->jobs, job) == -1) - vendor->jobs = g_list_insert_sorted (vendor->jobs, job, - (GCompareFunc)gncJobCompare); + if (g_list_index(vendor->jobs, job) == -1) + vendor->jobs = g_list_insert_sorted (vendor->jobs, job, + (GCompareFunc)gncJobCompare); - qof_event_gen (&vendor->inst, QOF_EVENT_MODIFY, NULL); + qof_event_gen (&vendor->inst, QOF_EVENT_MODIFY, NULL); } void gncVendorRemoveJob (GncVendor *vendor, GncJob *job) { - GList *node; + GList *node; - if (!vendor) return; - if (!job) return; + if (!vendor) return; + if (!job) return; - node = g_list_find (vendor->jobs, job); - if (!node) { - /* PERR ("split not in account"); */ - } else { - vendor->jobs = g_list_remove_link (vendor->jobs, node); - g_list_free_1 (node); - } + node = g_list_find (vendor->jobs, job); + if (!node) + { + /* PERR ("split not in account"); */ + } + else + { + vendor->jobs = g_list_remove_link (vendor->jobs, node); + g_list_free_1 (node); + } - qof_event_gen (&vendor->inst, QOF_EVENT_MODIFY, NULL); + qof_event_gen (&vendor->inst, QOF_EVENT_MODIFY, NULL); } void gncVendorBeginEdit (GncVendor *vendor) { - qof_begin_edit(&vendor->inst); + qof_begin_edit(&vendor->inst); } static void gncVendorOnError (QofInstance *vendor, QofBackendError errcode) { - PERR("Vendor QofBackend Failure: %d", errcode); - gnc_engine_signal_commit_error( errcode ); + PERR("Vendor QofBackend Failure: %d", errcode); + gnc_engine_signal_commit_error( errcode ); } static void gncVendorOnDone (QofInstance *inst) { - GncVendor *vendor = (GncVendor *) inst; - gncAddressClearDirty (vendor->addr); + GncVendor *vendor = (GncVendor *) inst; + gncAddressClearDirty (vendor->addr); } static void vendor_free (QofInstance *inst) { - GncVendor *vendor = (GncVendor *) inst; - gncVendorFree (vendor); + GncVendor *vendor = (GncVendor *) inst; + gncVendorFree (vendor); } void gncVendorCommitEdit (GncVendor *vendor) { - if (!qof_commit_edit (QOF_INSTANCE(vendor))) return; - qof_commit_edit_part2 (&vendor->inst, gncVendorOnError, - gncVendorOnDone, vendor_free); + if (!qof_commit_edit (QOF_INSTANCE(vendor))) return; + qof_commit_edit_part2 (&vendor->inst, gncVendorOnError, + gncVendorOnDone, vendor_free); } /* ============================================================== */ @@ -557,35 +574,39 @@ void gncVendorCommitEdit (GncVendor *vendor) int gncVendorCompare (const GncVendor *a, const GncVendor *b) { - if (!a && !b) return 0; - if (!a && b) return 1; - if (a && !b) return -1; + if (!a && !b) return 0; + if (!a && b) return 1; + if (a && !b) return -1; - return(strcmp(a->name, b->name)); + return(strcmp(a->name, b->name)); } GList * gncVendorGetJoblist (const GncVendor *vendor, gboolean show_all) { - if (!vendor) return NULL; + if (!vendor) return NULL; - if (show_all) { - return (g_list_copy (vendor->jobs)); - } else { - GList *list = NULL, *iterator; - for (iterator = vendor->jobs; iterator; iterator=iterator->next) { - GncJob *j = iterator->data; - if (gncJobGetActive (j)) - list = g_list_append (list, j); + if (show_all) + { + return (g_list_copy (vendor->jobs)); + } + else + { + GList *list = NULL, *iterator; + for (iterator = vendor->jobs; iterator; iterator = iterator->next) + { + GncJob *j = iterator->data; + if (gncJobGetActive (j)) + list = g_list_append (list, j); + } + return list; } - return list; - } } gboolean gncVendorIsDirty (const GncVendor *vendor) { - if (!vendor) return FALSE; - return (qof_instance_get_dirty_flag(vendor) - || gncAddressIsDirty (vendor->addr)); + if (!vendor) return FALSE; + return (qof_instance_get_dirty_flag(vendor) + || gncAddressIsDirty (vendor->addr)); } /** @@ -599,78 +620,94 @@ gboolean gncVendorIsDirty (const GncVendor *vendor) */ static void listen_for_address_events(QofInstance *entity, QofEventId event_type, - gpointer user_data, gpointer event_data) + gpointer user_data, gpointer event_data) { - GncVendor* v; + GncVendor* v; - if ((event_type & QOF_EVENT_MODIFY) == 0) { - return; - } - if (!GNC_IS_ADDRESS(entity)) { - return; - } - if (!GNC_IS_VENDOR(event_data)) { - return; - } - v = GNC_VENDOR(event_data); - gncVendorBeginEdit(v); - mark_vendor(v); - gncVendorCommitEdit(v); + if ((event_type & QOF_EVENT_MODIFY) == 0) + { + return; + } + if (!GNC_IS_ADDRESS(entity)) + { + return; + } + if (!GNC_IS_VENDOR(event_data)) + { + return; + } + v = GNC_VENDOR(event_data); + gncVendorBeginEdit(v); + mark_vendor(v); + gncVendorCommitEdit(v); } /* ============================================================== */ /* Package-Private functions */ static const char * _gncVendorPrintable (gpointer item) { - GncVendor *v = item; - if (!item) return NULL; - return v->name; + GncVendor *v = item; + if (!item) return NULL; + return v->name; } -static QofObject gncVendorDesc = +static QofObject gncVendorDesc = { - .interface_version = QOF_OBJECT_VERSION, - .e_type = _GNC_MOD_NAME, - .type_label = "Vendor", - .create = (gpointer)gncVendorCreate, - .book_begin = NULL, - .book_end = NULL, - .is_dirty = qof_collection_is_dirty, - .mark_clean = qof_collection_mark_clean, - .foreach = qof_collection_foreach, - .printable = _gncVendorPrintable, - .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, + .interface_version = QOF_OBJECT_VERSION, + .e_type = _GNC_MOD_NAME, + .type_label = "Vendor", + .create = (gpointer)gncVendorCreate, + .book_begin = NULL, + .book_end = NULL, + .is_dirty = qof_collection_is_dirty, + .mark_clean = qof_collection_mark_clean, + .foreach = qof_collection_foreach, + .printable = _gncVendorPrintable, + .version_cmp = (int (*)(gpointer, gpointer)) qof_instance_version_cmp, }; gboolean gncVendorRegister (void) { - static QofParam params[] = { - { VENDOR_ID, QOF_TYPE_STRING, (QofAccessFunc)gncVendorGetID, (QofSetterFunc)gncVendorSetID }, - { VENDOR_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncVendorGetName, (QofSetterFunc)gncVendorSetName }, - { VENDOR_ADDR, GNC_ID_ADDRESS, (QofAccessFunc)gncVendorGetAddr, (QofSetterFunc)qofVendorSetAddr }, - { VENDOR_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncVendorGetNotes, (QofSetterFunc)gncVendorSetNotes }, - { VENDOR_TERMS, GNC_ID_BILLTERM, (QofAccessFunc)gncVendorGetTerms, (QofSetterFunc)gncVendorSetTerms }, - { VENDOR_TAX_OVERRIDE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncVendorGetTaxTableOverride, - (QofSetterFunc)gncVendorSetTaxTableOverride }, - { VENDOR_TAX_TABLE, GNC_ID_TAXTABLE, (QofAccessFunc)gncVendorGetTaxTable, - (QofSetterFunc)gncVendorSetTaxTable }, - { VENDOR_TAX_INC, QOF_TYPE_STRING, (QofAccessFunc)qofVendorGetTaxIncluded, - (QofSetterFunc)qofVendorSetTaxIncluded}, - { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, - { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, - { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncVendorGetActive, NULL }, - { NULL }, - }; + static QofParam params[] = + { + { VENDOR_ID, QOF_TYPE_STRING, (QofAccessFunc)gncVendorGetID, (QofSetterFunc)gncVendorSetID }, + { VENDOR_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncVendorGetName, (QofSetterFunc)gncVendorSetName }, + { VENDOR_ADDR, GNC_ID_ADDRESS, (QofAccessFunc)gncVendorGetAddr, (QofSetterFunc)qofVendorSetAddr }, + { VENDOR_NOTES, QOF_TYPE_STRING, (QofAccessFunc)gncVendorGetNotes, (QofSetterFunc)gncVendorSetNotes }, + { VENDOR_TERMS, GNC_ID_BILLTERM, (QofAccessFunc)gncVendorGetTerms, (QofSetterFunc)gncVendorSetTerms }, + { + VENDOR_TAX_OVERRIDE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncVendorGetTaxTableOverride, + (QofSetterFunc)gncVendorSetTaxTableOverride + }, + { + VENDOR_TAX_TABLE, GNC_ID_TAXTABLE, (QofAccessFunc)gncVendorGetTaxTable, + (QofSetterFunc)gncVendorSetTaxTable + }, + { + VENDOR_TAX_INC, QOF_TYPE_STRING, (QofAccessFunc)qofVendorGetTaxIncluded, + (QofSetterFunc)qofVendorSetTaxIncluded + }, + { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)qof_instance_get_book, NULL }, + { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_instance_get_guid, NULL }, + { QOF_PARAM_ACTIVE, QOF_TYPE_BOOLEAN, (QofAccessFunc)gncVendorGetActive, NULL }, + { NULL }, + }; - if(!qof_choice_add_class(GNC_ID_INVOICE, GNC_ID_VENDOR, INVOICE_OWNER)) { return FALSE; } - if(!qof_choice_add_class(GNC_ID_JOB, GNC_ID_VENDOR, JOB_OWNER)) { return FALSE; } + if (!qof_choice_add_class(GNC_ID_INVOICE, GNC_ID_VENDOR, INVOICE_OWNER)) + { + return FALSE; + } + if (!qof_choice_add_class(GNC_ID_JOB, GNC_ID_VENDOR, JOB_OWNER)) + { + return FALSE; + } - qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncVendorCompare, params); + qof_class_register (_GNC_MOD_NAME, (QofSortFunc)gncVendorCompare, params); - return qof_object_register (&gncVendorDesc); + return qof_object_register (&gncVendorDesc); } gint64 gncVendorNextID (QofBook *book) { - return qof_book_get_counter (book, _GNC_MOD_NAME); + return qof_book_get_counter (book, _GNC_MOD_NAME); } diff --git a/src/business/business-core/gncVendor.h b/src/business/business-core/gncVendor.h index 962590961e..8bccb595cf 100644 --- a/src/business/business-core/gncVendor.h +++ b/src/business/business-core/gncVendor.h @@ -24,7 +24,7 @@ /** @addtogroup Vendor @{ */ /** @file gncVendor.h - @brief Vendor Interface + @brief Vendor Interface @author Copyright (C) 2001,2002 Derek Atkins */ @@ -100,14 +100,14 @@ GncTaxTable* gncVendorGetTaxTable (const GncVendor *vendor); /** @} */ /** XXX should be renamed to RetJobList to be consistent with - * other usage, since caller must free the copied list + * other usage, since caller must free the copied list */ GList * gncVendorGetJoblist (const GncVendor *vendor, gboolean show_all); gboolean gncVendorIsDirty (const GncVendor *vendor); int gncVendorCompare (const GncVendor *a, const GncVendor *b); /** Return a pointer to the instance gncVendor that is identified - * by the guid, and is residing in the book. Returns NULL if the + * by the guid, and is residing in the book. Returns NULL if the * instance can't be found. * Equivalent function prototype is * GncVendor * gncVendorLookup (QofBook *book, const GUID *guid); diff --git a/src/business/business-core/gncVendorP.h b/src/business/business-core/gncVendorP.h index 7fe0fd1544..3c96324def 100644 --- a/src/business/business-core/gncVendorP.h +++ b/src/business/business-core/gncVendorP.h @@ -48,7 +48,7 @@ GncVendor * gncCloneVendor (GncVendor *from, QofBook *); * gncCloneVendor()) and placed into the book. * * We called this routine 'Obtain' instead of "Get" to distinguish - * it from the other Get routines, which work in fundamentally + * it from the other Get routines, which work in fundamentally * different ways. */ GncVendor * gncVendorObtainTwin (GncVendor *from, QofBook *book); diff --git a/src/business/business-core/sql/gnc-address-sql.c b/src/business/business-core/sql/gnc-address-sql.c index 4a5ddfbf7c..af32f78968 100644 --- a/src/business/business-core/sql/gnc-address-sql.c +++ b/src/business/business-core/sql/gnc-address-sql.c @@ -49,15 +49,15 @@ static QofLogModule log_module = G_LOG_DOMAIN; static GncSqlColumnTableEntry col_table[] = { - { "name", CT_STRING, ADDRESS_MAX_NAME_LEN, COL_NNUL, "name" }, - { "addr1", CT_STRING, ADDRESS_MAX_ADDRESS_LINE_LEN, COL_NNUL, NULL, ADDRESS_ONE }, - { "addr2", CT_STRING, ADDRESS_MAX_ADDRESS_LINE_LEN, COL_NNUL, NULL, ADDRESS_TWO }, - { "addr3", CT_STRING, ADDRESS_MAX_ADDRESS_LINE_LEN, COL_NNUL, NULL, ADDRESS_THREE }, - { "addr4", CT_STRING, ADDRESS_MAX_ADDRESS_LINE_LEN, COL_NNUL, NULL, ADDRESS_FOUR }, - { "phone", CT_STRING, ADDRESS_MAX_PHONE_LEN, COL_NNUL, NULL, ADDRESS_PHONE }, - { "fax", CT_STRING, ADDRESS_MAX_FAX_LEN, COL_NNUL, NULL, ADDRESS_FAX }, - { "email", CT_STRING, ADDRESS_MAX_EMAIL_LEN, COL_NNUL, NULL, ADDRESS_EMAIL }, - { NULL } + { "name", CT_STRING, ADDRESS_MAX_NAME_LEN, COL_NNUL, "name" }, + { "addr1", CT_STRING, ADDRESS_MAX_ADDRESS_LINE_LEN, COL_NNUL, NULL, ADDRESS_ONE }, + { "addr2", CT_STRING, ADDRESS_MAX_ADDRESS_LINE_LEN, COL_NNUL, NULL, ADDRESS_TWO }, + { "addr3", CT_STRING, ADDRESS_MAX_ADDRESS_LINE_LEN, COL_NNUL, NULL, ADDRESS_THREE }, + { "addr4", CT_STRING, ADDRESS_MAX_ADDRESS_LINE_LEN, COL_NNUL, NULL, ADDRESS_FOUR }, + { "phone", CT_STRING, ADDRESS_MAX_PHONE_LEN, COL_NNUL, NULL, ADDRESS_PHONE }, + { "fax", CT_STRING, ADDRESS_MAX_FAX_LEN, COL_NNUL, NULL, ADDRESS_FAX }, + { "email", CT_STRING, ADDRESS_MAX_EMAIL_LEN, COL_NNUL, NULL, ADDRESS_EMAIL }, + { NULL } }; typedef void (*AddressSetterFunc)( gpointer, GncAddress* ); @@ -65,93 +65,104 @@ typedef GncAddress* (*AddressGetterFunc)( const gpointer ); static void load_address( const GncSqlBackend* be, GncSqlRow* row, - QofSetterFunc setter, gpointer pObject, - const GncSqlColumnTableEntry* table_row ) + QofSetterFunc setter, gpointer pObject, + const GncSqlColumnTableEntry* table_row ) { const GValue* val; gchar* buf; GncAddress* addr; - AddressSetterFunc a_setter = (AddressSetterFunc)setter; - const GncSqlColumnTableEntry* subtable; - const gchar* s; + AddressSetterFunc a_setter = (AddressSetterFunc)setter; + const GncSqlColumnTableEntry* subtable; + const gchar* s; - g_return_if_fail( be != NULL ); - g_return_if_fail( row != NULL ); - g_return_if_fail( pObject != NULL ); - g_return_if_fail( table_row != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( row != NULL ); + g_return_if_fail( pObject != NULL ); + g_return_if_fail( table_row != NULL ); addr = gncAddressCreate( be->primary_book, NULL ); - for( subtable = col_table; subtable->col_name != NULL; subtable++ ) { - buf = g_strdup_printf( "%s_%s", table_row->col_name, subtable->col_name ); - val = gnc_sql_row_get_value_at_col_name( row, buf ); - g_free( buf ); - if( val == NULL ) { - s = NULL; - } else { - s = g_value_get_string( val ); - } - if( subtable->gobj_param_name != NULL ) { - g_object_set( addr, subtable->gobj_param_name, s, NULL ); - } else { - if( subtable->qof_param_name != NULL ) { - setter = qof_class_get_parameter_setter( GNC_ID_ADDRESS, subtable->qof_param_name ); - } else { - setter = subtable->setter; - } - (*setter)( addr, (const gpointer)s ); - } + for ( subtable = col_table; subtable->col_name != NULL; subtable++ ) + { + buf = g_strdup_printf( "%s_%s", table_row->col_name, subtable->col_name ); + val = gnc_sql_row_get_value_at_col_name( row, buf ); + g_free( buf ); + if ( val == NULL ) + { + s = NULL; + } + else + { + s = g_value_get_string( val ); + } + if ( subtable->gobj_param_name != NULL ) + { + g_object_set( addr, subtable->gobj_param_name, s, NULL ); + } + else + { + if ( subtable->qof_param_name != NULL ) + { + setter = qof_class_get_parameter_setter( GNC_ID_ADDRESS, subtable->qof_param_name ); + } + else + { + setter = subtable->setter; + } + (*setter)( addr, (const gpointer)s ); + } } (*a_setter)( pObject, addr ); } static void add_address_col_info_to_list( const GncSqlBackend* be, const GncSqlColumnTableEntry* table_row, - GList** pList ) + GList** pList ) { - GncSqlColumnInfo* info; + GncSqlColumnInfo* info; gchar* buf; - const GncSqlColumnTableEntry* subtable_row; - const gchar* type; + const GncSqlColumnTableEntry* subtable_row; + const gchar* type; - g_return_if_fail( be != NULL ); - g_return_if_fail( table_row != NULL ); - g_return_if_fail( pList != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( table_row != NULL ); + g_return_if_fail( pList != NULL ); - for( subtable_row = col_table; subtable_row->col_name != NULL; subtable_row++ ) { - buf = g_strdup_printf( "%s_%s", table_row->col_name, subtable_row->col_name ); - info = g_new0( GncSqlColumnInfo, 1 ); - info->name = buf; - info->type = BCT_STRING; - info->size = subtable_row->size; - info->is_primary_key = (table_row->flags & COL_PKEY) ? TRUE : FALSE; - info->null_allowed = (table_row->flags & COL_NNUL) ? FALSE : TRUE; - info->is_unicode = TRUE; - *pList = g_list_append( *pList, info ); - } + for ( subtable_row = col_table; subtable_row->col_name != NULL; subtable_row++ ) + { + buf = g_strdup_printf( "%s_%s", table_row->col_name, subtable_row->col_name ); + info = g_new0( GncSqlColumnInfo, 1 ); + info->name = buf; + info->type = BCT_STRING; + info->size = subtable_row->size; + info->is_primary_key = (table_row->flags & COL_PKEY) ? TRUE : FALSE; + info->null_allowed = (table_row->flags & COL_NNUL) ? FALSE : TRUE; + info->is_unicode = TRUE; + *pList = g_list_append( *pList, info ); + } } static void add_address_colname_to_list( const GncSqlColumnTableEntry* table_row, GList** pList ) { - gnc_sql_add_subtable_colnames_to_list( table_row, col_table, pList ); + gnc_sql_add_subtable_colnames_to_list( table_row, col_table, pList ); } static void get_gvalue_address( const GncSqlBackend* be, QofIdTypeConst obj_name, const gpointer pObject, - const GncSqlColumnTableEntry* table_row, GValue* value ) + const GncSqlColumnTableEntry* table_row, GValue* value ) { AddressGetterFunc getter; GncAddress* addr; - g_return_if_fail( be != NULL ); - g_return_if_fail( obj_name != NULL ); - g_return_if_fail( pObject != NULL ); - g_return_if_fail( table_row != NULL ); - g_return_if_fail( value != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( obj_name != NULL ); + g_return_if_fail( pObject != NULL ); + g_return_if_fail( table_row != NULL ); + g_return_if_fail( value != NULL ); memset( value, 0, sizeof( GValue ) ); - getter = (AddressGetterFunc)gnc_sql_get_getter( obj_name, table_row ); + getter = (AddressGetterFunc)gnc_sql_get_getter( obj_name, table_row ); addr = (*getter)( pObject ); g_value_init( value, gnc_address_get_type() ); g_value_set_object( value, addr ); @@ -159,54 +170,63 @@ get_gvalue_address( const GncSqlBackend* be, QofIdTypeConst obj_name, const gpoi static void add_gvalue_address_to_slist( const GncSqlBackend* be, QofIdTypeConst obj_name, - const gpointer pObject, const GncSqlColumnTableEntry* table_row, GSList** pList ) + const gpointer pObject, const GncSqlColumnTableEntry* table_row, GSList** pList ) { GValue value; GValue* subfield_value; GncAddress* addr; gchar* s; QofAccessFunc getter; - const GncSqlColumnTableEntry* subtable_row; + const GncSqlColumnTableEntry* subtable_row; - g_return_if_fail( be != NULL ); - g_return_if_fail( obj_name != NULL ); - g_return_if_fail( pObject != NULL ); - g_return_if_fail( table_row != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( obj_name != NULL ); + g_return_if_fail( pObject != NULL ); + g_return_if_fail( table_row != NULL ); memset( &value, 0, sizeof( GValue ) ); get_gvalue_address( be, obj_name, pObject, table_row, &value ); - if( G_VALUE_TYPE(&value) != 0 ) { + if ( G_VALUE_TYPE(&value) != 0 ) + { addr = g_value_get_object( &value ); - for( subtable_row = col_table; subtable_row->col_name != NULL; subtable_row++ ) { - subfield_value = g_new0( GValue, 1 ); - if( subtable_row->gobj_param_name != NULL ) { - g_object_get( addr, subtable_row->gobj_param_name, &s, NULL ); - } else { - getter = gnc_sql_get_getter( GNC_ID_ADDRESS, subtable_row ); - s = (gchar*)(*getter)( addr, NULL ); - } - g_value_init( subfield_value, G_TYPE_STRING ); - if( s ) { - g_value_set_string( subfield_value, s ); - } else { - g_value_set_string( subfield_value, "NULL" ); - } - (*pList) = g_slist_append( (*pList), subfield_value ); - } + for ( subtable_row = col_table; subtable_row->col_name != NULL; subtable_row++ ) + { + subfield_value = g_new0( GValue, 1 ); + if ( subtable_row->gobj_param_name != NULL ) + { + g_object_get( addr, subtable_row->gobj_param_name, &s, NULL ); + } + else + { + getter = gnc_sql_get_getter( GNC_ID_ADDRESS, subtable_row ); + s = (gchar*)(*getter)( addr, NULL ); + } + g_value_init( subfield_value, G_TYPE_STRING ); + if ( s ) + { + g_value_set_string( subfield_value, s ); + } + else + { + g_value_set_string( subfield_value, "NULL" ); + } + (*pList) = g_slist_append( (*pList), subfield_value ); + } } } static GncSqlColumnTypeHandler address_handler - = { load_address, - add_address_col_info_to_list, - add_address_colname_to_list, - add_gvalue_address_to_slist }; += { load_address, + add_address_col_info_to_list, + add_address_colname_to_list, + add_gvalue_address_to_slist + }; /* ================================================================= */ void gnc_address_sql_initialize( void ) { - gnc_sql_register_col_type_handler( CT_ADDRESS, &address_handler ); + gnc_sql_register_col_type_handler( CT_ADDRESS, &address_handler ); } /* ========================== END OF FILE ===================== */ diff --git a/src/business/business-core/sql/gnc-bill-term-sql.c b/src/business/business-core/sql/gnc-bill-term-sql.c index 3268412e4a..4c9b3e666e 100644 --- a/src/business/business-core/sql/gnc-bill-term-sql.c +++ b/src/business/business-core/sql/gnc-bill-term-sql.c @@ -57,55 +57,65 @@ static void set_invisible( gpointer data, gboolean value ); static GncSqlColumnTableEntry col_table[] = { - { "guid", CT_GUID, 0, COL_NNUL|COL_PKEY, "guid" }, - { "name", CT_STRING, MAX_NAME_LEN, COL_NNUL, "name" }, - { "description", CT_STRING, MAX_DESCRIPTION_LEN, COL_NNUL, NULL, GNC_BILLTERM_DESC }, - { "refcount", CT_INT, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncBillTermGetRefcount, (QofSetterFunc)gncBillTermSetRefcount }, - { "invisible", CT_BOOLEAN, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncBillTermGetInvisible, (QofSetterFunc)set_invisible }, - { "parent", CT_BILLTERMREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncBillTermGetParent, (QofSetterFunc)gncBillTermSetParent }, - { "child", CT_BILLTERMREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncBillTermReturnChild, (QofSetterFunc)gncBillTermSetChild }, - { "type", CT_STRING, MAX_TYPE_LEN, COL_NNUL, NULL, GNC_BILLTERM_TYPE }, - { "duedays", CT_INT, 0, 0, 0, GNC_BILLTERM_DUEDAYS }, - { "discountdays", CT_INT, 0, 0, 0, GNC_BILLTERM_DISCDAYS }, - { "discount", CT_NUMERIC, 0, 0, 0, GNC_BILLTERM_DISCOUNT }, - { "cutoff", CT_INT, 0, 0, 0, GNC_BILLTERM_CUTOFF }, - { NULL } + { "guid", CT_GUID, 0, COL_NNUL | COL_PKEY, "guid" }, + { "name", CT_STRING, MAX_NAME_LEN, COL_NNUL, "name" }, + { "description", CT_STRING, MAX_DESCRIPTION_LEN, COL_NNUL, NULL, GNC_BILLTERM_DESC }, + { + "refcount", CT_INT, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncBillTermGetRefcount, (QofSetterFunc)gncBillTermSetRefcount + }, + { + "invisible", CT_BOOLEAN, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncBillTermGetInvisible, (QofSetterFunc)set_invisible + }, + { + "parent", CT_BILLTERMREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncBillTermGetParent, (QofSetterFunc)gncBillTermSetParent + }, + { + "child", CT_BILLTERMREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncBillTermReturnChild, (QofSetterFunc)gncBillTermSetChild + }, + { "type", CT_STRING, MAX_TYPE_LEN, COL_NNUL, NULL, GNC_BILLTERM_TYPE }, + { "duedays", CT_INT, 0, 0, 0, GNC_BILLTERM_DUEDAYS }, + { "discountdays", CT_INT, 0, 0, 0, GNC_BILLTERM_DISCDAYS }, + { "discount", CT_NUMERIC, 0, 0, 0, GNC_BILLTERM_DISCOUNT }, + { "cutoff", CT_INT, 0, 0, 0, GNC_BILLTERM_CUTOFF }, + { NULL } }; static void set_invisible( gpointer data, gboolean value ) { - GncBillTerm* term = GNC_BILLTERM(data); + GncBillTerm* term = GNC_BILLTERM(data); - g_return_if_fail( term != NULL ); + g_return_if_fail( term != NULL ); - if( value ) { - gncBillTermMakeInvisible( term ); - } + if ( value ) + { + gncBillTermMakeInvisible( term ); + } } static GncBillTerm* load_single_billterm( GncSqlBackend* be, GncSqlRow* row ) { const GUID* guid; - GncBillTerm* pBillTerm; + GncBillTerm* pBillTerm; - g_return_val_if_fail( be != NULL, NULL ); - g_return_val_if_fail( row != NULL, NULL ); + g_return_val_if_fail( be != NULL, NULL ); + g_return_val_if_fail( row != NULL, NULL ); guid = gnc_sql_load_guid( be, row ); pBillTerm = gncBillTermLookup( be->primary_book, guid ); - if( pBillTerm == NULL ) { + if ( pBillTerm == NULL ) + { pBillTerm = gncBillTermCreate( be->primary_book ); } gnc_sql_load_object( be, row, GNC_ID_BILLTERM, pBillTerm, col_table ); qof_instance_mark_clean( QOF_INSTANCE(pBillTerm) ); - return pBillTerm; + return pBillTerm; } static void @@ -115,87 +125,96 @@ load_all_billterms( GncSqlBackend* be ) GncSqlResult* result; QofBook* pBook; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); pBook = be->primary_book; stmt = gnc_sql_create_select_statement( be, TABLE_NAME ); result = gnc_sql_execute_select_statement( be, stmt ); - gnc_sql_statement_dispose( stmt ); - if( result != NULL ) { - GncSqlRow* row; - GList* list = NULL; + gnc_sql_statement_dispose( stmt ); + if ( result != NULL ) + { + GncSqlRow* row; + GList* list = NULL; - row = gnc_sql_result_get_first_row( result ); - while( row != NULL ) { + row = gnc_sql_result_get_first_row( result ); + while ( row != NULL ) + { GncBillTerm* pBillTerm = load_single_billterm( be, row ); - if( pBillTerm != NULL ) { - list = g_list_append( list, pBillTerm ); - } - row = gnc_sql_result_get_next_row( result ); - } - gnc_sql_result_dispose( result ); + if ( pBillTerm != NULL ) + { + list = g_list_append( list, pBillTerm ); + } + row = gnc_sql_result_get_next_row( result ); + } + gnc_sql_result_dispose( result ); - if( list != NULL ) { - gnc_sql_slots_load_for_list( be, list ); - } + if ( list != NULL ) + { + gnc_sql_slots_load_for_list( be, list ); + } } } /* ================================================================= */ -typedef struct { - GncSqlBackend* be; - gboolean is_ok; +typedef struct +{ + GncSqlBackend* be; + gboolean is_ok; } write_billterms_t; static void do_save_billterm( QofInstance* inst, gpointer p2 ) { - write_billterms_t* data = (write_billterms_t*)p2; + write_billterms_t* data = (write_billterms_t*)p2; - if( data->is_ok ) { - data->is_ok = gnc_sql_save_billterm( data->be, inst ); - } + if ( data->is_ok ) + { + data->is_ok = gnc_sql_save_billterm( data->be, inst ); + } } static gboolean write_billterms( GncSqlBackend* be ) { - write_billterms_t data; + write_billterms_t data; - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); - data.be = be; - data.is_ok = TRUE; + data.be = be; + data.is_ok = TRUE; qof_object_foreach( GNC_ID_BILLTERM, be->primary_book, do_save_billterm, &data ); - return data.is_ok; + return data.is_ok; } /* ================================================================= */ static void create_billterm_tables( GncSqlBackend* be ) { - gint version; + gint version; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); - version = gnc_sql_get_table_version( be, TABLE_NAME ); - if( version == 0 ) { + version = gnc_sql_get_table_version( be, TABLE_NAME ); + if ( version == 0 ) + { gnc_sql_create_table( be, TABLE_NAME, TABLE_VERSION, col_table ); - } else if( version == 1 ) { - /* Upgrade 64 bit int handling */ - gnc_sql_upgrade_table( be, TABLE_NAME, col_table ); - gnc_sql_set_table_version( be, TABLE_NAME, TABLE_VERSION ); - } + } + else if ( version == 1 ) + { + /* Upgrade 64 bit int handling */ + gnc_sql_upgrade_table( be, TABLE_NAME, col_table ); + gnc_sql_set_table_version( be, TABLE_NAME, TABLE_VERSION ); + } } /* ================================================================= */ gboolean gnc_sql_save_billterm( GncSqlBackend* be, QofInstance* inst ) { - g_return_val_if_fail( inst != NULL, FALSE ); - g_return_val_if_fail( GNC_IS_BILLTERM(inst), FALSE ); - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( inst != NULL, FALSE ); + g_return_val_if_fail( GNC_IS_BILLTERM(inst), FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); return gnc_sql_commit_standard_item( be, inst, TABLE_NAME, GNC_ID_BILLTERM, col_table ); } @@ -203,39 +222,47 @@ gnc_sql_save_billterm( GncSqlBackend* be, QofInstance* inst ) /* ================================================================= */ static void load_billterm_guid( const GncSqlBackend* be, GncSqlRow* row, - QofSetterFunc setter, gpointer pObject, - const GncSqlColumnTableEntry* table_row ) + QofSetterFunc setter, gpointer pObject, + const GncSqlColumnTableEntry* table_row ) { const GValue* val; GUID guid; - GncBillTerm* term = NULL; + GncBillTerm* term = NULL; - g_return_if_fail( be != NULL ); - g_return_if_fail( row != NULL ); - g_return_if_fail( pObject != NULL ); - g_return_if_fail( table_row != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( row != NULL ); + g_return_if_fail( pObject != NULL ); + g_return_if_fail( table_row != NULL ); val = gnc_sql_row_get_value_at_col_name( row, table_row->col_name ); - if( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL ) { + if ( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL ) + { string_to_guid( g_value_get_string( val ), &guid ); - term = gncBillTermLookup( be->primary_book, &guid ); - if( term != NULL ) { - if( table_row->gobj_param_name != NULL ) { - g_object_set( pObject, table_row->gobj_param_name, term, NULL ); - } else { - (*setter)( pObject, (const gpointer)term ); - } - } else { - PWARN( "Billterm ref '%s' not found", g_value_get_string( val ) ); - } - } + term = gncBillTermLookup( be->primary_book, &guid ); + if ( term != NULL ) + { + if ( table_row->gobj_param_name != NULL ) + { + g_object_set( pObject, table_row->gobj_param_name, term, NULL ); + } + else + { + (*setter)( pObject, (const gpointer)term ); + } + } + else + { + PWARN( "Billterm ref '%s' not found", g_value_get_string( val ) ); + } + } } static GncSqlColumnTypeHandler billterm_guid_handler - = { load_billterm_guid, - gnc_sql_add_objectref_guid_col_info_to_list, - gnc_sql_add_colname_to_list, - gnc_sql_add_gvalue_objectref_guid_to_slist }; += { load_billterm_guid, + gnc_sql_add_objectref_guid_col_info_to_list, + gnc_sql_add_colname_to_list, + gnc_sql_add_gvalue_objectref_guid_to_slist + }; /* ================================================================= */ void gnc_billterm_sql_initialize( void ) @@ -247,12 +274,12 @@ gnc_billterm_sql_initialize( void ) gnc_sql_save_billterm, /* commit */ load_all_billterms, /* initial_load */ create_billterm_tables, /* create_tables */ - NULL, NULL, NULL, - write_billterms /* write */ + NULL, NULL, NULL, + write_billterms /* write */ }; qof_object_register_backend( GNC_ID_BILLTERM, GNC_SQL_BACKEND, &be_data ); - gnc_sql_register_col_type_handler( CT_BILLTERMREF, &billterm_guid_handler ); + gnc_sql_register_col_type_handler( CT_BILLTERMREF, &billterm_guid_handler ); } /* ========================== END OF FILE ===================== */ diff --git a/src/business/business-core/sql/gnc-customer-sql.c b/src/business/business-core/sql/gnc-customer-sql.c index 79f233007f..e86eaace97 100644 --- a/src/business/business-core/sql/gnc-customer-sql.c +++ b/src/business/business-core/sql/gnc-customer-sql.c @@ -58,44 +58,51 @@ static QofLogModule log_module = G_LOG_DOMAIN; static GncSqlColumnTableEntry col_table[] = { - { "guid", CT_GUID, 0, COL_NNUL|COL_PKEY, "guid" }, - { "name", CT_STRING, MAX_NAME_LEN, COL_NNUL, "name" }, - { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, CUSTOMER_ID }, - { "notes", CT_STRING, MAX_NOTES_LEN, COL_NNUL, NULL, CUSTOMER_NOTES }, - { "active", CT_BOOLEAN, 0, COL_NNUL, NULL, QOF_PARAM_ACTIVE }, - { "discount", CT_NUMERIC, 0, COL_NNUL, NULL, CUSTOMER_DISCOUNT }, - { "credit", CT_NUMERIC, 0, COL_NNUL, NULL, CUSTOMER_CREDIT }, - { "currency", CT_COMMODITYREF, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncCustomerGetCurrency, (QofSetterFunc)gncCustomerSetCurrency }, - { "tax_override", CT_BOOLEAN, 0, COL_NNUL, NULL, CUSTOMER_TT_OVER }, - { "addr", CT_ADDRESS, 0, 0, NULL, CUSTOMER_ADDR }, - { "shipaddr", CT_ADDRESS, 0, 0, NULL, CUSTOMER_SHIPADDR }, - { "terms", CT_BILLTERMREF, 0, 0, NULL, CUSTOMER_TERMS }, - { "tax_included", CT_INT, 0, 0, NULL, NULL, - (QofAccessFunc)gncCustomerGetTaxIncluded, (QofSetterFunc)gncCustomerSetTaxIncluded }, - { "taxtable", CT_TAXTABLEREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncCustomerGetTaxTable, (QofSetterFunc)gncCustomerSetTaxTable }, - { NULL } + { "guid", CT_GUID, 0, COL_NNUL | COL_PKEY, "guid" }, + { "name", CT_STRING, MAX_NAME_LEN, COL_NNUL, "name" }, + { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, CUSTOMER_ID }, + { "notes", CT_STRING, MAX_NOTES_LEN, COL_NNUL, NULL, CUSTOMER_NOTES }, + { "active", CT_BOOLEAN, 0, COL_NNUL, NULL, QOF_PARAM_ACTIVE }, + { "discount", CT_NUMERIC, 0, COL_NNUL, NULL, CUSTOMER_DISCOUNT }, + { "credit", CT_NUMERIC, 0, COL_NNUL, NULL, CUSTOMER_CREDIT }, + { + "currency", CT_COMMODITYREF, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncCustomerGetCurrency, (QofSetterFunc)gncCustomerSetCurrency + }, + { "tax_override", CT_BOOLEAN, 0, COL_NNUL, NULL, CUSTOMER_TT_OVER }, + { "addr", CT_ADDRESS, 0, 0, NULL, CUSTOMER_ADDR }, + { "shipaddr", CT_ADDRESS, 0, 0, NULL, CUSTOMER_SHIPADDR }, + { "terms", CT_BILLTERMREF, 0, 0, NULL, CUSTOMER_TERMS }, + { + "tax_included", CT_INT, 0, 0, NULL, NULL, + (QofAccessFunc)gncCustomerGetTaxIncluded, (QofSetterFunc)gncCustomerSetTaxIncluded + }, + { + "taxtable", CT_TAXTABLEREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncCustomerGetTaxTable, (QofSetterFunc)gncCustomerSetTaxTable + }, + { NULL } }; static GncCustomer* load_single_customer( GncSqlBackend* be, GncSqlRow* row ) { const GUID* guid; - GncCustomer* pCustomer; + GncCustomer* pCustomer; - g_return_val_if_fail( be != NULL, NULL ); - g_return_val_if_fail( row != NULL, NULL ); + g_return_val_if_fail( be != NULL, NULL ); + g_return_val_if_fail( row != NULL, NULL ); guid = gnc_sql_load_guid( be, row ); pCustomer = gncCustomerLookup( be->primary_book, guid ); - if( pCustomer == NULL ) { + if ( pCustomer == NULL ) + { pCustomer = gncCustomerCreate( be->primary_book ); } gnc_sql_load_object( be, row, GNC_ID_CUSTOMER, pCustomer, col_table ); qof_instance_mark_clean( QOF_INSTANCE(pCustomer) ); - return pCustomer; + return pCustomer; } static void @@ -105,30 +112,34 @@ load_all_customers( GncSqlBackend* be ) GncSqlResult* result; QofBook* pBook; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); pBook = be->primary_book; stmt = gnc_sql_create_select_statement( be, TABLE_NAME ); result = gnc_sql_execute_select_statement( be, stmt ); - gnc_sql_statement_dispose( stmt ); - if( result != NULL ) { - GList* list = NULL; - GncSqlRow* row; + gnc_sql_statement_dispose( stmt ); + if ( result != NULL ) + { + GList* list = NULL; + GncSqlRow* row; - row = gnc_sql_result_get_first_row( result ); - while( row != NULL ) { + row = gnc_sql_result_get_first_row( result ); + while ( row != NULL ) + { GncCustomer* pCustomer = load_single_customer( be, row ); - if( pCustomer != NULL ) { - list = g_list_append( list, pCustomer ); - } - row = gnc_sql_result_get_next_row( result ); - } - gnc_sql_result_dispose( result ); + if ( pCustomer != NULL ) + { + list = g_list_append( list, pCustomer ); + } + row = gnc_sql_result_get_next_row( result ); + } + gnc_sql_result_dispose( result ); - if( list != NULL ) { - gnc_sql_slots_load_for_list( be, list ); - } + if ( list != NULL ) + { + gnc_sql_slots_load_for_list( be, list ); + } } } @@ -136,17 +147,20 @@ load_all_customers( GncSqlBackend* be ) static void create_customer_tables( GncSqlBackend* be ) { - gint version; + gint version; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); - version = gnc_sql_get_table_version( be, TABLE_NAME ); - if( version == 0 ) { + version = gnc_sql_get_table_version( be, TABLE_NAME ); + if ( version == 0 ) + { gnc_sql_create_table( be, TABLE_NAME, TABLE_VERSION, col_table ); - } else if( version == 1 ) { - /* Upgrade 64 bit int handling */ - gnc_sql_upgrade_table( be, TABLE_NAME, col_table ); - gnc_sql_set_table_version( be, TABLE_NAME, TABLE_VERSION ); + } + else if ( version == 1 ) + { + /* Upgrade 64 bit int handling */ + gnc_sql_upgrade_table( be, TABLE_NAME, col_table ); + gnc_sql_set_table_version( be, TABLE_NAME, TABLE_VERSION ); } } @@ -154,17 +168,18 @@ create_customer_tables( GncSqlBackend* be ) static gboolean save_customer( GncSqlBackend* be, QofInstance* inst ) { - g_return_val_if_fail( inst != NULL, FALSE ); - g_return_val_if_fail( GNC_CUSTOMER(inst), FALSE ); - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( inst != NULL, FALSE ); + g_return_val_if_fail( GNC_CUSTOMER(inst), FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); return gnc_sql_commit_standard_item( be, inst, TABLE_NAME, GNC_ID_CUSTOMER, col_table ); } /* ================================================================= */ -typedef struct { - GncSqlBackend* be; - gboolean is_ok; +typedef struct +{ + GncSqlBackend* be; + gboolean is_ok; } write_customers_t; static gboolean @@ -172,13 +187,14 @@ customer_should_be_saved( GncCustomer *customer ) { const char *id; - g_return_val_if_fail( customer != NULL, FALSE ); + g_return_val_if_fail( customer != NULL, FALSE ); /* Make sure this is a valid customer before we save it -- should have an ID */ id = gncCustomerGetID( customer ); - if( id == NULL || *id == '\0' ) { + if ( id == NULL || *id == '\0' ) + { return FALSE; - } + } return TRUE; } @@ -186,28 +202,29 @@ customer_should_be_saved( GncCustomer *customer ) static void write_single_customer( QofInstance *term_p, gpointer data_p ) { - write_customers_t* data = (write_customers_t*)data_p; + write_customers_t* data = (write_customers_t*)data_p; - g_return_if_fail( term_p != NULL ); - g_return_if_fail( GNC_IS_CUSTOMER(term_p) ); - g_return_if_fail( data_p != NULL ); + g_return_if_fail( term_p != NULL ); + g_return_if_fail( GNC_IS_CUSTOMER(term_p) ); + g_return_if_fail( data_p != NULL ); - if( customer_should_be_saved( GNC_CUSTOMER(term_p) ) && data->is_ok ) { - data->is_ok = save_customer( data->be, term_p ); - } + if ( customer_should_be_saved( GNC_CUSTOMER(term_p) ) && data->is_ok ) + { + data->is_ok = save_customer( data->be, term_p ); + } } static gboolean write_customers( GncSqlBackend* be ) { - write_customers_t data; + write_customers_t data; - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); - data.be = be; - data.is_ok = TRUE; + data.be = be; + data.is_ok = TRUE; qof_object_foreach( GNC_ID_CUSTOMER, be->primary_book, write_single_customer, (gpointer)&data ); - return data.is_ok; + return data.is_ok; } /* ================================================================= */ @@ -221,8 +238,8 @@ gnc_customer_sql_initialize( void ) save_customer, /* commit */ load_all_customers, /* initial_load */ create_customer_tables, /* create_tables */ - NULL, NULL, NULL, - write_customers /* write */ + NULL, NULL, NULL, + write_customers /* write */ }; qof_object_register_backend( GNC_ID_CUSTOMER, GNC_SQL_BACKEND, &be_data ); diff --git a/src/business/business-core/sql/gnc-employee-sql.c b/src/business/business-core/sql/gnc-employee-sql.c index beae95dac7..1e958ef032 100644 --- a/src/business/business-core/sql/gnc-employee-sql.c +++ b/src/business/business-core/sql/gnc-employee-sql.c @@ -58,18 +58,20 @@ static QofLogModule log_module = G_LOG_DOMAIN; static GncSqlColumnTableEntry col_table[] = { - { "guid", CT_GUID, 0, COL_NNUL|COL_PKEY, "guid" }, - { "username", CT_STRING, MAX_USERNAME_LEN, COL_NNUL, "username" }, - { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, EMPLOYEE_ID }, - { "language", CT_STRING, MAX_LANGUAGE_LEN, COL_NNUL, NULL, EMPLOYEE_LANGUAGE }, - { "acl", CT_STRING, MAX_ACL_LEN, COL_NNUL, NULL, EMPLOYEE_ACL }, - { "active", CT_BOOLEAN, 0, COL_NNUL, NULL, QOF_PARAM_ACTIVE }, - { "currency", CT_COMMODITYREF, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncEmployeeGetCurrency, (QofSetterFunc)gncEmployeeSetCurrency }, - { "ccard_guid", CT_ACCOUNTREF, 0, 0, NULL, EMPLOYEE_CC }, - { "workday", CT_NUMERIC, 0, COL_NNUL, NULL, EMPLOYEE_WORKDAY }, - { "rate", CT_NUMERIC, 0, COL_NNUL, NULL, EMPLOYEE_RATE }, - { "addr", CT_ADDRESS, 0, 0, NULL, EMPLOYEE_ADDR }, + { "guid", CT_GUID, 0, COL_NNUL | COL_PKEY, "guid" }, + { "username", CT_STRING, MAX_USERNAME_LEN, COL_NNUL, "username" }, + { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, EMPLOYEE_ID }, + { "language", CT_STRING, MAX_LANGUAGE_LEN, COL_NNUL, NULL, EMPLOYEE_LANGUAGE }, + { "acl", CT_STRING, MAX_ACL_LEN, COL_NNUL, NULL, EMPLOYEE_ACL }, + { "active", CT_BOOLEAN, 0, COL_NNUL, NULL, QOF_PARAM_ACTIVE }, + { + "currency", CT_COMMODITYREF, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncEmployeeGetCurrency, (QofSetterFunc)gncEmployeeSetCurrency + }, + { "ccard_guid", CT_ACCOUNTREF, 0, 0, NULL, EMPLOYEE_CC }, + { "workday", CT_NUMERIC, 0, COL_NNUL, NULL, EMPLOYEE_WORKDAY }, + { "rate", CT_NUMERIC, 0, COL_NNUL, NULL, EMPLOYEE_RATE }, + { "addr", CT_ADDRESS, 0, 0, NULL, EMPLOYEE_ADDR }, { NULL } }; @@ -77,20 +79,21 @@ static GncEmployee* load_single_employee( GncSqlBackend* be, GncSqlRow* row ) { const GUID* guid; - GncEmployee* pEmployee; + GncEmployee* pEmployee; - g_return_val_if_fail( be != NULL, NULL ); - g_return_val_if_fail( row != NULL, NULL ); + g_return_val_if_fail( be != NULL, NULL ); + g_return_val_if_fail( row != NULL, NULL ); guid = gnc_sql_load_guid( be, row ); pEmployee = gncEmployeeLookup( be->primary_book, guid ); - if( pEmployee == NULL ) { + if ( pEmployee == NULL ) + { pEmployee = gncEmployeeCreate( be->primary_book ); } gnc_sql_load_object( be, row, GNC_ID_EMPLOYEE, pEmployee, col_table ); qof_instance_mark_clean( QOF_INSTANCE(pEmployee) ); - return pEmployee; + return pEmployee; } static void @@ -101,31 +104,35 @@ load_all_employees( GncSqlBackend* be ) QofBook* pBook; gnc_commodity_table* pTable; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); pBook = be->primary_book; pTable = gnc_commodity_table_get_table( pBook ); stmt = gnc_sql_create_select_statement( be, TABLE_NAME ); result = gnc_sql_execute_select_statement( be, stmt ); - gnc_sql_statement_dispose( stmt ); - if( result != NULL ) { + gnc_sql_statement_dispose( stmt ); + if ( result != NULL ) + { GncSqlRow* row; - GList* list = NULL; + GList* list = NULL; - row = gnc_sql_result_get_first_row( result ); - while( row != NULL ) { + row = gnc_sql_result_get_first_row( result ); + while ( row != NULL ) + { GncEmployee* pEmployee = load_single_employee( be, row ); - if( pEmployee != NULL ) { - list = g_list_append( list, pEmployee ); - } - row = gnc_sql_result_get_next_row( result ); - } - gnc_sql_result_dispose( result ); + if ( pEmployee != NULL ) + { + list = g_list_append( list, pEmployee ); + } + row = gnc_sql_result_get_next_row( result ); + } + gnc_sql_result_dispose( result ); - if( list != NULL ) { - gnc_sql_slots_load_for_list( be, list ); - } + if ( list != NULL ) + { + gnc_sql_slots_load_for_list( be, list ); + } } } @@ -133,17 +140,20 @@ load_all_employees( GncSqlBackend* be ) static void create_employee_tables( GncSqlBackend* be ) { - gint version; + gint version; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); - version = gnc_sql_get_table_version( be, TABLE_NAME ); - if( version == 0 ) { + version = gnc_sql_get_table_version( be, TABLE_NAME ); + if ( version == 0 ) + { gnc_sql_create_table( be, TABLE_NAME, TABLE_VERSION, col_table ); - } else if( version == 1 ) { - /* Upgrade 64 bit int handling */ - gnc_sql_upgrade_table( be, TABLE_NAME, col_table ); - gnc_sql_set_table_version( be, TABLE_NAME, TABLE_VERSION ); + } + else if ( version == 1 ) + { + /* Upgrade 64 bit int handling */ + gnc_sql_upgrade_table( be, TABLE_NAME, col_table ); + gnc_sql_set_table_version( be, TABLE_NAME, TABLE_VERSION ); } } @@ -153,44 +163,55 @@ save_employee( GncSqlBackend* be, QofInstance* inst ) { GncEmployee* emp; const GUID* guid; - gint op; - gboolean is_infant; - gboolean is_ok = TRUE; + gint op; + gboolean is_infant; + gboolean is_ok = TRUE; - g_return_val_if_fail( inst != NULL, FALSE ); - g_return_val_if_fail( GNC_IS_EMPLOYEE(inst), FALSE ); - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( inst != NULL, FALSE ); + g_return_val_if_fail( GNC_IS_EMPLOYEE(inst), FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); emp = GNC_EMPLOYEE(inst); - is_infant = qof_instance_get_infant( inst ); - if( qof_instance_get_destroying( inst ) ) { - op = OP_DB_DELETE; - } else if( be->is_pristine_db || is_infant ) { - op = OP_DB_INSERT; - } else { - op = OP_DB_UPDATE; - } - if( op != OP_DB_DELETE ) { - // Ensure the commodity is in the db - is_ok = gnc_sql_save_commodity( be, gncEmployeeGetCurrency( emp ) ); - } + is_infant = qof_instance_get_infant( inst ); + if ( qof_instance_get_destroying( inst ) ) + { + op = OP_DB_DELETE; + } + else if ( be->is_pristine_db || is_infant ) + { + op = OP_DB_INSERT; + } + else + { + op = OP_DB_UPDATE; + } + if ( op != OP_DB_DELETE ) + { + // Ensure the commodity is in the db + is_ok = gnc_sql_save_commodity( be, gncEmployeeGetCurrency( emp ) ); + } - if( is_ok ) { - is_ok = gnc_sql_do_db_operation( be, op, TABLE_NAME, GNC_ID_EMPLOYEE, emp, col_table ); - } + if ( is_ok ) + { + is_ok = gnc_sql_do_db_operation( be, op, TABLE_NAME, GNC_ID_EMPLOYEE, emp, col_table ); + } - if( is_ok ) { - // Now, commit or delete any slots - guid = qof_instance_get_guid( inst ); - if( !qof_instance_get_destroying(inst) ) { - is_ok = gnc_sql_slots_save( be, guid, is_infant, qof_instance_get_slots( inst ) ); - } else { - is_ok = gnc_sql_slots_delete( be, guid ); - } - } + if ( is_ok ) + { + // Now, commit or delete any slots + guid = qof_instance_get_guid( inst ); + if ( !qof_instance_get_destroying(inst) ) + { + is_ok = gnc_sql_slots_save( be, guid, is_infant, qof_instance_get_slots( inst ) ); + } + else + { + is_ok = gnc_sql_slots_delete( be, guid ); + } + } - return is_ok; + return is_ok; } /* ================================================================= */ @@ -199,13 +220,14 @@ employee_should_be_saved( GncEmployee *employee ) { const char *id; - g_return_val_if_fail( employee != NULL, FALSE ); + g_return_val_if_fail( employee != NULL, FALSE ); /* make sure this is a valid employee before we save it -- should have an ID */ id = gncEmployeeGetID( employee ); - if( id == NULL || *id == '\0' ) { + if ( id == NULL || *id == '\0' ) + { return FALSE; - } + } return TRUE; } @@ -213,29 +235,30 @@ employee_should_be_saved( GncEmployee *employee ) static void write_single_employee( QofInstance *term_p, gpointer data_p ) { - write_objects_t* s = (write_objects_t*)data_p; + write_objects_t* s = (write_objects_t*)data_p; - g_return_if_fail( term_p != NULL ); - g_return_if_fail( GNC_IS_EMPLOYEE(term_p) ); - g_return_if_fail( data_p != NULL ); + g_return_if_fail( term_p != NULL ); + g_return_if_fail( GNC_IS_EMPLOYEE(term_p) ); + g_return_if_fail( data_p != NULL ); - if( s->is_ok && employee_should_be_saved( GNC_EMPLOYEE(term_p) ) ) { - s->is_ok = save_employee( s->be, term_p ); - } + if ( s->is_ok && employee_should_be_saved( GNC_EMPLOYEE(term_p) ) ) + { + s->is_ok = save_employee( s->be, term_p ); + } } static gboolean write_employees( GncSqlBackend* be ) { - write_objects_t data; + write_objects_t data; - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); - data.be = be; - data.is_ok = TRUE; + data.be = be; + data.is_ok = TRUE; qof_object_foreach( GNC_ID_EMPLOYEE, be->primary_book, write_single_employee, &data ); - return data.is_ok; + return data.is_ok; } /* ================================================================= */ @@ -249,8 +272,8 @@ gnc_employee_sql_initialize( void ) save_employee, /* commit */ load_all_employees, /* initial_load */ create_employee_tables, /* create_tables */ - NULL, NULL, NULL, - write_employees /* write */ + NULL, NULL, NULL, + write_employees /* write */ }; qof_object_register_backend( GNC_ID_EMPLOYEE, GNC_SQL_BACKEND, &be_data ); diff --git a/src/business/business-core/sql/gnc-entry-sql.c b/src/business/business-core/sql/gnc-entry-sql.c index 1811dc4aee..c7803a1f42 100644 --- a/src/business/business-core/sql/gnc-entry-sql.c +++ b/src/business/business-core/sql/gnc-entry-sql.c @@ -65,94 +65,109 @@ static void entry_set_bill( gpointer pObject, gpointer val ); static GncSqlColumnTableEntry col_table[] = { - { "guid", CT_GUID, 0, COL_NNUL|COL_PKEY, "guid" }, - { "date", CT_TIMESPEC, 0, COL_NNUL, NULL, ENTRY_DATE }, - { "date_entered", CT_TIMESPEC, 0, 0, NULL, ENTRY_DATE_ENTERED }, - { "description", CT_STRING, MAX_DESCRIPTION_LEN, 0, "description" }, - { "action", CT_STRING, MAX_ACTION_LEN, 0, NULL, ENTRY_ACTION }, - { "notes", CT_STRING, MAX_NOTES_LEN, 0, NULL, ENTRY_NOTES }, - { "quantity", CT_NUMERIC, 0, 0, NULL, ENTRY_QTY }, - { "i_acct", CT_ACCOUNTREF, 0, 0, NULL, ENTRY_IACCT }, - { "i_price", CT_NUMERIC, 0, 0, NULL, ENTRY_IPRICE }, - { "i_discount", CT_NUMERIC, 0, 0, NULL, NULL, - (QofAccessFunc)gncEntryGetInvDiscount, (QofSetterFunc)gncEntrySetInvDiscount }, - { "invoice", CT_INVOICEREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncEntryGetInvoice, (QofSetterFunc)entry_set_invoice }, - { "i_disc_type", CT_STRING, MAX_DISCTYPE_LEN, 0, NULL, ENTRY_INV_DISC_TYPE }, - { "i_disc_how", CT_STRING, MAX_DISCHOW_LEN, 0, NULL, ENTRY_INV_DISC_HOW }, - { "i_taxable", CT_BOOLEAN, 0, 0, NULL, ENTRY_INV_TAXABLE }, - { "i_taxincluded", CT_BOOLEAN, 0, 0, NULL, ENTRY_INV_TAX_INC }, - { "i_taxtable", CT_TAXTABLEREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncEntryGetInvTaxTable, (QofSetterFunc)gncEntrySetInvTaxTable }, - { "b_acct", CT_ACCOUNTREF, 0, 0, NULL, ENTRY_BACCT }, - { "b_price", CT_NUMERIC, 0, 0, NULL, ENTRY_BPRICE }, - { "bill", CT_INVOICEREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncEntryGetBill, (QofSetterFunc)entry_set_bill }, - { "b_taxable", CT_BOOLEAN, 0, 0, NULL, ENTRY_BILL_TAXABLE }, - { "b_taxincluded", CT_BOOLEAN, 0, 0, NULL, ENTRY_BILL_TAX_INC }, - { "b_taxtable", CT_TAXTABLEREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncEntryGetBillTaxTable, (QofSetterFunc)gncEntrySetBillTaxTable }, - { "b_paytype", CT_INT, 0, 0, NULL, NULL, - (QofAccessFunc)gncEntryGetBillPayment, (QofSetterFunc)gncEntrySetBillPayment }, - { "billable", CT_BOOLEAN, 0, 0, NULL, ENTRY_BILLABLE }, - { "billto", CT_OWNERREF, 0, 0, NULL, ENTRY_BILLTO }, - { "order_guid", CT_ORDERREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncEntryGetOrder, (QofSetterFunc)gncEntrySetOrder }, - { NULL } + { "guid", CT_GUID, 0, COL_NNUL | COL_PKEY, "guid" }, + { "date", CT_TIMESPEC, 0, COL_NNUL, NULL, ENTRY_DATE }, + { "date_entered", CT_TIMESPEC, 0, 0, NULL, ENTRY_DATE_ENTERED }, + { "description", CT_STRING, MAX_DESCRIPTION_LEN, 0, "description" }, + { "action", CT_STRING, MAX_ACTION_LEN, 0, NULL, ENTRY_ACTION }, + { "notes", CT_STRING, MAX_NOTES_LEN, 0, NULL, ENTRY_NOTES }, + { "quantity", CT_NUMERIC, 0, 0, NULL, ENTRY_QTY }, + { "i_acct", CT_ACCOUNTREF, 0, 0, NULL, ENTRY_IACCT }, + { "i_price", CT_NUMERIC, 0, 0, NULL, ENTRY_IPRICE }, + { + "i_discount", CT_NUMERIC, 0, 0, NULL, NULL, + (QofAccessFunc)gncEntryGetInvDiscount, (QofSetterFunc)gncEntrySetInvDiscount + }, + { + "invoice", CT_INVOICEREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncEntryGetInvoice, (QofSetterFunc)entry_set_invoice + }, + { "i_disc_type", CT_STRING, MAX_DISCTYPE_LEN, 0, NULL, ENTRY_INV_DISC_TYPE }, + { "i_disc_how", CT_STRING, MAX_DISCHOW_LEN, 0, NULL, ENTRY_INV_DISC_HOW }, + { "i_taxable", CT_BOOLEAN, 0, 0, NULL, ENTRY_INV_TAXABLE }, + { "i_taxincluded", CT_BOOLEAN, 0, 0, NULL, ENTRY_INV_TAX_INC }, + { + "i_taxtable", CT_TAXTABLEREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncEntryGetInvTaxTable, (QofSetterFunc)gncEntrySetInvTaxTable + }, + { "b_acct", CT_ACCOUNTREF, 0, 0, NULL, ENTRY_BACCT }, + { "b_price", CT_NUMERIC, 0, 0, NULL, ENTRY_BPRICE }, + { + "bill", CT_INVOICEREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncEntryGetBill, (QofSetterFunc)entry_set_bill + }, + { "b_taxable", CT_BOOLEAN, 0, 0, NULL, ENTRY_BILL_TAXABLE }, + { "b_taxincluded", CT_BOOLEAN, 0, 0, NULL, ENTRY_BILL_TAX_INC }, + { + "b_taxtable", CT_TAXTABLEREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncEntryGetBillTaxTable, (QofSetterFunc)gncEntrySetBillTaxTable + }, + { + "b_paytype", CT_INT, 0, 0, NULL, NULL, + (QofAccessFunc)gncEntryGetBillPayment, (QofSetterFunc)gncEntrySetBillPayment + }, + { "billable", CT_BOOLEAN, 0, 0, NULL, ENTRY_BILLABLE }, + { "billto", CT_OWNERREF, 0, 0, NULL, ENTRY_BILLTO }, + { + "order_guid", CT_ORDERREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncEntryGetOrder, (QofSetterFunc)gncEntrySetOrder + }, + { NULL } }; static void entry_set_invoice( gpointer pObject, gpointer val ) { - GncEntry* entry; - GncInvoice* invoice; + GncEntry* entry; + GncInvoice* invoice; - g_return_if_fail( pObject != NULL ); - g_return_if_fail( GNC_IS_ENTRY(pObject) ); - g_return_if_fail( val != NULL ); - g_return_if_fail( GNC_IS_INVOICE(val) ); + g_return_if_fail( pObject != NULL ); + g_return_if_fail( GNC_IS_ENTRY(pObject) ); + g_return_if_fail( val != NULL ); + g_return_if_fail( GNC_IS_INVOICE(val) ); - entry = GNC_ENTRY(pObject); - invoice = GNC_INVOICE(val); + entry = GNC_ENTRY(pObject); + invoice = GNC_INVOICE(val); - gncInvoiceAddEntry( invoice, entry ); + gncInvoiceAddEntry( invoice, entry ); } static void entry_set_bill( gpointer pObject, gpointer val ) { - GncEntry* entry; - GncInvoice* bill; + GncEntry* entry; + GncInvoice* bill; - g_return_if_fail( pObject != NULL ); - g_return_if_fail( GNC_IS_ENTRY(pObject) ); - g_return_if_fail( val != NULL ); - g_return_if_fail( GNC_IS_INVOICE(val) ); + g_return_if_fail( pObject != NULL ); + g_return_if_fail( GNC_IS_ENTRY(pObject) ); + g_return_if_fail( val != NULL ); + g_return_if_fail( GNC_IS_INVOICE(val) ); - entry = GNC_ENTRY(pObject); - bill = GNC_INVOICE(val); + entry = GNC_ENTRY(pObject); + bill = GNC_INVOICE(val); - gncBillAddEntry( bill, entry ); + gncBillAddEntry( bill, entry ); } static GncEntry* load_single_entry( GncSqlBackend* be, GncSqlRow* row ) { const GUID* guid; - GncEntry* pEntry; + GncEntry* pEntry; - g_return_val_if_fail( be != NULL, NULL ); - g_return_val_if_fail( row != NULL, NULL ); + g_return_val_if_fail( be != NULL, NULL ); + g_return_val_if_fail( row != NULL, NULL ); guid = gnc_sql_load_guid( be, row ); pEntry = gncEntryLookup( be->primary_book, guid ); - if( pEntry == NULL ) { + if ( pEntry == NULL ) + { pEntry = gncEntryCreate( be->primary_book ); } gnc_sql_load_object( be, row, GNC_ID_ENTRY, pEntry, col_table ); qof_instance_mark_clean( QOF_INSTANCE(pEntry) ); - return pEntry; + return pEntry; } static void @@ -162,30 +177,34 @@ load_all_entries( GncSqlBackend* be ) GncSqlResult* result; QofBook* pBook; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); pBook = be->primary_book; stmt = gnc_sql_create_select_statement( be, TABLE_NAME ); result = gnc_sql_execute_select_statement( be, stmt ); - gnc_sql_statement_dispose( stmt ); - if( result != NULL ) { + gnc_sql_statement_dispose( stmt ); + if ( result != NULL ) + { GncSqlRow* row; - GList* list = NULL; + GList* list = NULL; - row = gnc_sql_result_get_first_row( result ); - while( row != NULL ) { + row = gnc_sql_result_get_first_row( result ); + while ( row != NULL ) + { GncEntry* pEntry = load_single_entry( be, row ); - if( pEntry != NULL ) { - list = g_list_append( list, pEntry ); - } - row = gnc_sql_result_get_next_row( result ); - } - gnc_sql_result_dispose( result ); + if ( pEntry != NULL ) + { + list = g_list_append( list, pEntry ); + } + row = gnc_sql_result_get_next_row( result ); + } + gnc_sql_result_dispose( result ); - if( list != NULL ) { - gnc_sql_slots_load_for_list( be, list ); - } + if ( list != NULL ) + { + gnc_sql_slots_load_for_list( be, list ); + } } } @@ -193,20 +212,23 @@ load_all_entries( GncSqlBackend* be ) static void create_entry_tables( GncSqlBackend* be ) { - gint version; + gint version; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); - version = gnc_sql_get_table_version( be, TABLE_NAME ); - if( version == 0 ) { + version = gnc_sql_get_table_version( be, TABLE_NAME ); + if ( version == 0 ) + { gnc_sql_create_table( be, TABLE_NAME, TABLE_VERSION, col_table ); - } else if( version < TABLE_VERSION ) { - /* Upgrade: - 1->2: 64 bit int handling - 2->3: "entered" -> "date_entered", and it can be NULL - */ - gnc_sql_upgrade_table( be, TABLE_NAME, col_table ); - gnc_sql_set_table_version( be, TABLE_NAME, TABLE_VERSION ); + } + else if ( version < TABLE_VERSION ) + { + /* Upgrade: + 1->2: 64 bit int handling + 2->3: "entered" -> "date_entered", and it can be NULL + */ + gnc_sql_upgrade_table( be, TABLE_NAME, col_table ); + gnc_sql_set_table_version( be, TABLE_NAME, TABLE_VERSION ); } } @@ -214,9 +236,9 @@ create_entry_tables( GncSqlBackend* be ) static gboolean save_entry( GncSqlBackend* be, QofInstance* inst ) { - g_return_val_if_fail( inst != NULL, FALSE ); - g_return_val_if_fail( GNC_IS_ENTRY(inst), FALSE ); - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( inst != NULL, FALSE ); + g_return_val_if_fail( GNC_IS_ENTRY(inst), FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); return gnc_sql_commit_standard_item( be, inst, TABLE_NAME, GNC_ID_ENTRY, col_table ); } @@ -225,32 +247,33 @@ save_entry( GncSqlBackend* be, QofInstance* inst ) static void write_single_entry( QofInstance *term_p, gpointer data_p ) { - write_objects_t* s = (write_objects_t*)data_p; - GncEntry* entry = GNC_ENTRY(term_p); + write_objects_t* s = (write_objects_t*)data_p; + GncEntry* entry = GNC_ENTRY(term_p); - g_return_if_fail( term_p != NULL ); - g_return_if_fail( GNC_IS_ENTRY(term_p) ); - g_return_if_fail( data_p != NULL ); + g_return_if_fail( term_p != NULL ); + g_return_if_fail( GNC_IS_ENTRY(term_p) ); + g_return_if_fail( data_p != NULL ); - /* Only save if attached */ - if( s->is_ok && (gncEntryGetOrder( entry ) != NULL || gncEntryGetInvoice( entry ) != NULL || - gncEntryGetBill( entry ) != NULL) ) { - s->is_ok = save_entry( s->be, term_p ); - } + /* Only save if attached */ + if ( s->is_ok && (gncEntryGetOrder( entry ) != NULL || gncEntryGetInvoice( entry ) != NULL || + gncEntryGetBill( entry ) != NULL) ) + { + s->is_ok = save_entry( s->be, term_p ); + } } static gboolean write_entries( GncSqlBackend* be ) { - write_objects_t data; + write_objects_t data; - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); - data.be = be; - data.is_ok = TRUE; + data.be = be; + data.is_ok = TRUE; qof_object_foreach( GNC_ID_ENTRY, be->primary_book, write_single_entry, &data ); - return data.is_ok; + return data.is_ok; } /* ================================================================= */ @@ -264,8 +287,8 @@ gnc_entry_sql_initialize( void ) save_entry, /* commit */ load_all_entries, /* initial_load */ create_entry_tables, /* create_tables */ - NULL, NULL, NULL, - write_entries /* write */ + NULL, NULL, NULL, + write_entries /* write */ }; qof_object_register_backend( GNC_ID_ENTRY, GNC_SQL_BACKEND, &be_data ); diff --git a/src/business/business-core/sql/gnc-invoice-sql.c b/src/business/business-core/sql/gnc-invoice-sql.c index cfbe8bef5d..ff8198d689 100644 --- a/src/business/business-core/sql/gnc-invoice-sql.c +++ b/src/business/business-core/sql/gnc-invoice-sql.c @@ -59,47 +59,58 @@ static QofLogModule log_module = G_LOG_DOMAIN; static GncSqlColumnTableEntry col_table[] = { - { "guid", CT_GUID, 0, COL_NNUL|COL_PKEY, "guid" }, - { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, INVOICE_ID }, - { "date_opened", CT_TIMESPEC, 0, 0, NULL, INVOICE_OPENED }, - { "date_posted", CT_TIMESPEC, 0, 0, NULL, INVOICE_POSTED }, - { "notes", CT_STRING, MAX_NOTES_LEN, COL_NNUL, "notes" }, - { "active", CT_BOOLEAN, 0, COL_NNUL, NULL, QOF_PARAM_ACTIVE }, - { "currency", CT_COMMODITYREF, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncInvoiceGetCurrency, (QofSetterFunc)gncInvoiceSetCurrency }, - { "owner", CT_OWNERREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncInvoiceGetOwner, (QofSetterFunc)gncInvoiceSetOwner }, - { "terms", CT_BILLTERMREF, 0, 0, NULL, INVOICE_TERMS }, - { "billing_id", CT_STRING, MAX_BILLING_ID_LEN, 0, NULL, INVOICE_BILLINGID }, - { "post_txn", CT_TXREF, 0, 0, NULL, INVOICE_POST_TXN }, - { "post_lot", CT_LOTREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncInvoiceGetPostedLot, (QofSetterFunc)gncInvoiceSetPostedLot }, - { "post_acc", CT_ACCOUNTREF, 0, 0, NULL, INVOICE_ACC }, - { "billto", CT_OWNERREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncInvoiceGetBillTo, (QofSetterFunc)gncInvoiceSetBillTo }, - { "charge_amt", CT_NUMERIC, 0, 0, NULL, NULL, - (QofAccessFunc)gncInvoiceGetToChargeAmount, (QofSetterFunc)gncInvoiceSetToChargeAmount }, - { NULL } + { "guid", CT_GUID, 0, COL_NNUL | COL_PKEY, "guid" }, + { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, INVOICE_ID }, + { "date_opened", CT_TIMESPEC, 0, 0, NULL, INVOICE_OPENED }, + { "date_posted", CT_TIMESPEC, 0, 0, NULL, INVOICE_POSTED }, + { "notes", CT_STRING, MAX_NOTES_LEN, COL_NNUL, "notes" }, + { "active", CT_BOOLEAN, 0, COL_NNUL, NULL, QOF_PARAM_ACTIVE }, + { + "currency", CT_COMMODITYREF, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncInvoiceGetCurrency, (QofSetterFunc)gncInvoiceSetCurrency + }, + { + "owner", CT_OWNERREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncInvoiceGetOwner, (QofSetterFunc)gncInvoiceSetOwner + }, + { "terms", CT_BILLTERMREF, 0, 0, NULL, INVOICE_TERMS }, + { "billing_id", CT_STRING, MAX_BILLING_ID_LEN, 0, NULL, INVOICE_BILLINGID }, + { "post_txn", CT_TXREF, 0, 0, NULL, INVOICE_POST_TXN }, + { + "post_lot", CT_LOTREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncInvoiceGetPostedLot, (QofSetterFunc)gncInvoiceSetPostedLot + }, + { "post_acc", CT_ACCOUNTREF, 0, 0, NULL, INVOICE_ACC }, + { + "billto", CT_OWNERREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncInvoiceGetBillTo, (QofSetterFunc)gncInvoiceSetBillTo + }, + { + "charge_amt", CT_NUMERIC, 0, 0, NULL, NULL, + (QofAccessFunc)gncInvoiceGetToChargeAmount, (QofSetterFunc)gncInvoiceSetToChargeAmount + }, + { NULL } }; static GncInvoice* load_single_invoice( GncSqlBackend* be, GncSqlRow* row ) { const GUID* guid; - GncInvoice* pInvoice; + GncInvoice* pInvoice; - g_return_val_if_fail( be != NULL, NULL ); - g_return_val_if_fail( row != NULL, NULL ); + g_return_val_if_fail( be != NULL, NULL ); + g_return_val_if_fail( row != NULL, NULL ); guid = gnc_sql_load_guid( be, row ); pInvoice = gncInvoiceLookup( be->primary_book, guid ); - if( pInvoice == NULL ) { + if ( pInvoice == NULL ) + { pInvoice = gncInvoiceCreate( be->primary_book ); } gnc_sql_load_object( be, row, GNC_ID_INVOICE, pInvoice, col_table ); qof_instance_mark_clean( QOF_INSTANCE(pInvoice) ); - return pInvoice; + return pInvoice; } static void @@ -109,30 +120,34 @@ load_all_invoices( GncSqlBackend* be ) GncSqlResult* result; QofBook* pBook; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); pBook = be->primary_book; stmt = gnc_sql_create_select_statement( be, TABLE_NAME ); result = gnc_sql_execute_select_statement( be, stmt ); - gnc_sql_statement_dispose( stmt ); - if( result != NULL ) { + gnc_sql_statement_dispose( stmt ); + if ( result != NULL ) + { GncSqlRow* row; - GList* list = NULL; + GList* list = NULL; - row = gnc_sql_result_get_first_row( result ); - while( row != NULL ) { - GncInvoice* pInvoice = load_single_invoice( be, row ); - if( pInvoice != NULL ) { - list = g_list_append( list, pInvoice ); - } - row = gnc_sql_result_get_next_row( result ); - } - gnc_sql_result_dispose( result ); + row = gnc_sql_result_get_first_row( result ); + while ( row != NULL ) + { + GncInvoice* pInvoice = load_single_invoice( be, row ); + if ( pInvoice != NULL ) + { + list = g_list_append( list, pInvoice ); + } + row = gnc_sql_result_get_next_row( result ); + } + gnc_sql_result_dispose( result ); - if( list != NULL ) { - gnc_sql_slots_load_for_list( be, list ); - } + if ( list != NULL ) + { + gnc_sql_slots_load_for_list( be, list ); + } } } @@ -140,20 +155,23 @@ load_all_invoices( GncSqlBackend* be ) static void create_invoice_tables( GncSqlBackend* be ) { - gint version; + gint version; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); - version = gnc_sql_get_table_version( be, TABLE_NAME ); - if( version == 0 ) { + version = gnc_sql_get_table_version( be, TABLE_NAME ); + if ( version == 0 ) + { gnc_sql_create_table( be, TABLE_NAME, TABLE_VERSION, col_table ); - } else if( version < TABLE_VERSION ) { - /* Upgrade: - 1->2: 64 bit int handling - 2->3: invoice open date can be NULL - */ - gnc_sql_upgrade_table( be, TABLE_NAME, col_table ); - gnc_sql_set_table_version( be, TABLE_NAME, TABLE_VERSION ); + } + else if ( version < TABLE_VERSION ) + { + /* Upgrade: + 1->2: 64 bit int handling + 2->3: invoice open date can be NULL + */ + gnc_sql_upgrade_table( be, TABLE_NAME, col_table ); + gnc_sql_set_table_version( be, TABLE_NAME, TABLE_VERSION ); } } @@ -162,45 +180,56 @@ static gboolean save_invoice( GncSqlBackend* be, QofInstance* inst ) { const GUID* guid; - GncInvoice* invoice; - gint op; - gboolean is_infant; - gboolean is_ok = TRUE; + GncInvoice* invoice; + gint op; + gboolean is_infant; + gboolean is_ok = TRUE; - g_return_val_if_fail( inst != NULL, FALSE ); - g_return_val_if_fail( GNC_IS_INVOICE(inst), FALSE ); - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( inst != NULL, FALSE ); + g_return_val_if_fail( GNC_IS_INVOICE(inst), FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); - invoice = GNC_INVOICE(inst); + invoice = GNC_INVOICE(inst); - is_infant = qof_instance_get_infant( inst ); - if( qof_instance_get_destroying( inst ) ) { - op = OP_DB_DELETE; - } else if( be->is_pristine_db || is_infant ) { - op = OP_DB_INSERT; - } else { - op = OP_DB_UPDATE; - } - if( op != OP_DB_DELETE ) { - // Ensure the commodity is in the db - is_ok = gnc_sql_save_commodity( be, gncInvoiceGetCurrency( invoice ) ); - } + is_infant = qof_instance_get_infant( inst ); + if ( qof_instance_get_destroying( inst ) ) + { + op = OP_DB_DELETE; + } + else if ( be->is_pristine_db || is_infant ) + { + op = OP_DB_INSERT; + } + else + { + op = OP_DB_UPDATE; + } + if ( op != OP_DB_DELETE ) + { + // Ensure the commodity is in the db + is_ok = gnc_sql_save_commodity( be, gncInvoiceGetCurrency( invoice ) ); + } - if( is_ok ) { - is_ok = gnc_sql_do_db_operation( be, op, TABLE_NAME, GNC_ID_INVOICE, inst, col_table ); - } + if ( is_ok ) + { + is_ok = gnc_sql_do_db_operation( be, op, TABLE_NAME, GNC_ID_INVOICE, inst, col_table ); + } - if( is_ok ) { - // Now, commit or delete any slots - guid = qof_instance_get_guid( inst ); - if( !qof_instance_get_destroying(inst) ) { - is_ok = gnc_sql_slots_save( be, guid, is_infant, qof_instance_get_slots( inst ) ); - } else { - is_ok = gnc_sql_slots_delete( be, guid ); - } - } + if ( is_ok ) + { + // Now, commit or delete any slots + guid = qof_instance_get_guid( inst ); + if ( !qof_instance_get_destroying(inst) ) + { + is_ok = gnc_sql_slots_save( be, guid, is_infant, qof_instance_get_slots( inst ) ); + } + else + { + is_ok = gnc_sql_slots_delete( be, guid ); + } + } - return is_ok; + return is_ok; } /* ================================================================= */ @@ -209,13 +238,14 @@ invoice_should_be_saved( GncInvoice *invoice ) { const char *id; - g_return_val_if_fail( invoice != NULL, FALSE ); + g_return_val_if_fail( invoice != NULL, FALSE ); /* make sure this is a valid invoice before we save it -- should have an ID */ id = gncInvoiceGetID( invoice ); - if( id == NULL || *id == '\0' ) { + if ( id == NULL || *id == '\0' ) + { return FALSE; - } + } return TRUE; } @@ -223,67 +253,76 @@ invoice_should_be_saved( GncInvoice *invoice ) static void write_single_invoice( QofInstance *term_p, gpointer data_p ) { - write_objects_t* s = (write_objects_t*)data_p; + write_objects_t* s = (write_objects_t*)data_p; - g_return_if_fail( term_p != NULL ); - g_return_if_fail( GNC_IS_INVOICE(term_p) ); - g_return_if_fail( data_p != NULL ); + g_return_if_fail( term_p != NULL ); + g_return_if_fail( GNC_IS_INVOICE(term_p) ); + g_return_if_fail( data_p != NULL ); - if( s->is_ok && invoice_should_be_saved( GNC_INVOICE(term_p) ) ) { - s->is_ok = save_invoice( s->be, term_p ); - } + if ( s->is_ok && invoice_should_be_saved( GNC_INVOICE(term_p) ) ) + { + s->is_ok = save_invoice( s->be, term_p ); + } } static gboolean write_invoices( GncSqlBackend* be ) { - write_objects_t data; + write_objects_t data; - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); - data.be = be; - data.is_ok = TRUE; + data.be = be; + data.is_ok = TRUE; qof_object_foreach( GNC_ID_INVOICE, be->primary_book, write_single_invoice, &data ); - return data.is_ok; + return data.is_ok; } /* ================================================================= */ static void load_invoice_guid( const GncSqlBackend* be, GncSqlRow* row, - QofSetterFunc setter, gpointer pObject, - const GncSqlColumnTableEntry* table_row ) + QofSetterFunc setter, gpointer pObject, + const GncSqlColumnTableEntry* table_row ) { const GValue* val; GUID guid; - GncInvoice* invoice = NULL; + GncInvoice* invoice = NULL; - g_return_if_fail( be != NULL ); - g_return_if_fail( row != NULL ); - g_return_if_fail( pObject != NULL ); - g_return_if_fail( table_row != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( row != NULL ); + g_return_if_fail( pObject != NULL ); + g_return_if_fail( table_row != NULL ); val = gnc_sql_row_get_value_at_col_name( row, table_row->col_name ); - if( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL ) { + if ( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL ) + { string_to_guid( g_value_get_string( val ), &guid ); - invoice = gncInvoiceLookup( be->primary_book, &guid ); - if( invoice != NULL ) { - if( table_row->gobj_param_name != NULL ) { - g_object_set( pObject, table_row->gobj_param_name, invoice, NULL ); - } else { - (*setter)( pObject, (const gpointer)invoice ); - } - } else { - PWARN( "Invoice ref '%s' not found", g_value_get_string( val ) ); - } - } + invoice = gncInvoiceLookup( be->primary_book, &guid ); + if ( invoice != NULL ) + { + if ( table_row->gobj_param_name != NULL ) + { + g_object_set( pObject, table_row->gobj_param_name, invoice, NULL ); + } + else + { + (*setter)( pObject, (const gpointer)invoice ); + } + } + else + { + PWARN( "Invoice ref '%s' not found", g_value_get_string( val ) ); + } + } } static GncSqlColumnTypeHandler invoice_guid_handler - = { load_invoice_guid, - gnc_sql_add_objectref_guid_col_info_to_list, - gnc_sql_add_colname_to_list, - gnc_sql_add_gvalue_objectref_guid_to_slist }; += { load_invoice_guid, + gnc_sql_add_objectref_guid_col_info_to_list, + gnc_sql_add_colname_to_list, + gnc_sql_add_gvalue_objectref_guid_to_slist + }; /* ================================================================= */ void gnc_invoice_sql_initialize( void ) @@ -295,12 +334,12 @@ gnc_invoice_sql_initialize( void ) save_invoice, /* commit */ load_all_invoices, /* initial_load */ create_invoice_tables, /* create_tables */ - NULL, NULL, NULL, - write_invoices /* write */ + NULL, NULL, NULL, + write_invoices /* write */ }; qof_object_register_backend( GNC_ID_INVOICE, GNC_SQL_BACKEND, &be_data ); - gnc_sql_register_col_type_handler( CT_INVOICEREF, &invoice_guid_handler ); + gnc_sql_register_col_type_handler( CT_INVOICEREF, &invoice_guid_handler ); } /* ========================== END OF FILE ===================== */ diff --git a/src/business/business-core/sql/gnc-job-sql.c b/src/business/business-core/sql/gnc-job-sql.c index 40a1417495..fda7a957fc 100644 --- a/src/business/business-core/sql/gnc-job-sql.c +++ b/src/business/business-core/sql/gnc-job-sql.c @@ -54,35 +54,40 @@ static QofLogModule log_module = G_LOG_DOMAIN; static GncSqlColumnTableEntry col_table[] = { - { "guid", CT_GUID, 0, COL_NNUL|COL_PKEY, "guid" }, - { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, JOB_ID }, - { "name", CT_STRING, MAX_NAME_LEN, COL_NNUL, "name" }, - { "reference", CT_STRING, MAX_REFERENCE_LEN, COL_NNUL, NULL, JOB_REFERENCE }, - { "active", CT_BOOLEAN, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncJobGetActive, (QofSetterFunc)gncJobSetActive }, - { "owner", CT_OWNERREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncJobGetOwner, (QofSetterFunc)gncJobSetOwner }, - { NULL } + { "guid", CT_GUID, 0, COL_NNUL | COL_PKEY, "guid" }, + { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, JOB_ID }, + { "name", CT_STRING, MAX_NAME_LEN, COL_NNUL, "name" }, + { "reference", CT_STRING, MAX_REFERENCE_LEN, COL_NNUL, NULL, JOB_REFERENCE }, + { + "active", CT_BOOLEAN, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncJobGetActive, (QofSetterFunc)gncJobSetActive + }, + { + "owner", CT_OWNERREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncJobGetOwner, (QofSetterFunc)gncJobSetOwner + }, + { NULL } }; static GncJob* load_single_job( GncSqlBackend* be, GncSqlRow* row ) { const GUID* guid; - GncJob* pJob; + GncJob* pJob; - g_return_val_if_fail( be != NULL, NULL ); - g_return_val_if_fail( row != NULL, NULL ); + g_return_val_if_fail( be != NULL, NULL ); + g_return_val_if_fail( row != NULL, NULL ); guid = gnc_sql_load_guid( be, row ); pJob = gncJobLookup( be->primary_book, guid ); - if( pJob == NULL ) { + if ( pJob == NULL ) + { pJob = gncJobCreate( be->primary_book ); } gnc_sql_load_object( be, row, GNC_ID_JOB, pJob, col_table ); qof_instance_mark_clean( QOF_INSTANCE(pJob) ); - return pJob; + return pJob; } static void @@ -92,30 +97,34 @@ load_all_jobs( GncSqlBackend* be ) GncSqlResult* result; QofBook* pBook; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); pBook = be->primary_book; stmt = gnc_sql_create_select_statement( be, TABLE_NAME ); result = gnc_sql_execute_select_statement( be, stmt ); - gnc_sql_statement_dispose( stmt ); - if( result != NULL ) { + gnc_sql_statement_dispose( stmt ); + if ( result != NULL ) + { GncSqlRow* row; - GList* list = NULL; + GList* list = NULL; - row = gnc_sql_result_get_first_row( result ); - while( row != NULL ) { + row = gnc_sql_result_get_first_row( result ); + while ( row != NULL ) + { GncJob* pJob = load_single_job( be, row ); - if( pJob != NULL ) { - list = g_list_append( list, pJob ); - } - row = gnc_sql_result_get_next_row( result ); - } - gnc_sql_result_dispose( result ); + if ( pJob != NULL ) + { + list = g_list_append( list, pJob ); + } + row = gnc_sql_result_get_next_row( result ); + } + gnc_sql_result_dispose( result ); - if( list != NULL ) { - gnc_sql_slots_load_for_list( be, list ); - } + if ( list != NULL ) + { + gnc_sql_slots_load_for_list( be, list ); + } } } @@ -123,12 +132,13 @@ load_all_jobs( GncSqlBackend* be ) static void create_job_tables( GncSqlBackend* be ) { - gint version; + gint version; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); - version = gnc_sql_get_table_version( be, TABLE_NAME ); - if( version == 0 ) { + version = gnc_sql_get_table_version( be, TABLE_NAME ); + if ( version == 0 ) + { gnc_sql_create_table( be, TABLE_NAME, TABLE_VERSION, col_table ); } } @@ -137,9 +147,9 @@ create_job_tables( GncSqlBackend* be ) static gboolean save_job( GncSqlBackend* be, QofInstance* inst ) { - g_return_val_if_fail( inst != NULL, FALSE ); - g_return_val_if_fail( GNC_IS_JOB(inst), FALSE ); - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( inst != NULL, FALSE ); + g_return_val_if_fail( GNC_IS_JOB(inst), FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); return gnc_sql_commit_standard_item( be, inst, TABLE_NAME, GNC_ID_JOB, col_table ); } @@ -150,13 +160,14 @@ job_should_be_saved( GncJob *job ) { const char *id; - g_return_val_if_fail( job != NULL, FALSE ); + g_return_val_if_fail( job != NULL, FALSE ); /* make sure this is a valid job before we save it -- should have an ID */ id = gncJobGetID( job ); - if( id == NULL || *id == '\0' ) { + if ( id == NULL || *id == '\0' ) + { return FALSE; - } + } return TRUE; } @@ -164,29 +175,30 @@ job_should_be_saved( GncJob *job ) static void write_single_job( QofInstance *term_p, gpointer data_p ) { - write_objects_t* s = (write_objects_t*)data_p; + write_objects_t* s = (write_objects_t*)data_p; - g_return_if_fail( term_p != NULL ); - g_return_if_fail( GNC_IS_JOB(term_p) ); - g_return_if_fail( data_p != NULL ); + g_return_if_fail( term_p != NULL ); + g_return_if_fail( GNC_IS_JOB(term_p) ); + g_return_if_fail( data_p != NULL ); - if( s->is_ok && job_should_be_saved( GNC_JOB(term_p) ) ) { - s->is_ok = save_job( s->be, term_p ); - } + if ( s->is_ok && job_should_be_saved( GNC_JOB(term_p) ) ) + { + s->is_ok = save_job( s->be, term_p ); + } } static gboolean write_jobs( GncSqlBackend* be ) { - write_objects_t data; + write_objects_t data; - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); - data.be = be; - data.is_ok = TRUE; + data.be = be; + data.is_ok = TRUE; qof_object_foreach( GNC_ID_JOB, be->primary_book, write_single_job, &data ); - return data.is_ok; + return data.is_ok; } /* ================================================================= */ @@ -200,8 +212,8 @@ gnc_job_sql_initialize( void ) save_job, /* commit */ load_all_jobs, /* initial_load */ create_job_tables, /* create_tables */ - NULL, NULL, NULL, - write_jobs /* write */ + NULL, NULL, NULL, + write_jobs /* write */ }; qof_object_register_backend( GNC_ID_JOB, GNC_SQL_BACKEND, &be_data ); diff --git a/src/business/business-core/sql/gnc-order-sql.c b/src/business/business-core/sql/gnc-order-sql.c index 74cd3a4668..aab40345b3 100644 --- a/src/business/business-core/sql/gnc-order-sql.c +++ b/src/business/business-core/sql/gnc-order-sql.c @@ -55,35 +55,36 @@ static QofLogModule log_module = G_LOG_DOMAIN; static GncSqlColumnTableEntry col_table[] = { - { "guid", CT_GUID, 0, COL_NNUL|COL_PKEY, "guid" }, - { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, ORDER_ID }, - { "notes", CT_STRING, MAX_NOTES_LEN, COL_NNUL, "notes" }, - { "reference", CT_STRING, MAX_REFERENCE_LEN, COL_NNUL, NULL, ORDER_REFERENCE }, - { "active", CT_BOOLEAN, 0, COL_NNUL, NULL, QOF_PARAM_ACTIVE }, - { "date_opened", CT_TIMESPEC, 0, COL_NNUL, NULL, ORDER_OPENED }, - { "date_closed", CT_TIMESPEC, 0, COL_NNUL, NULL, ORDER_CLOSED }, - { "owner", CT_OWNERREF, 0, COL_NNUL, NULL, ORDER_OWNER }, - { NULL }, + { "guid", CT_GUID, 0, COL_NNUL | COL_PKEY, "guid" }, + { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, ORDER_ID }, + { "notes", CT_STRING, MAX_NOTES_LEN, COL_NNUL, "notes" }, + { "reference", CT_STRING, MAX_REFERENCE_LEN, COL_NNUL, NULL, ORDER_REFERENCE }, + { "active", CT_BOOLEAN, 0, COL_NNUL, NULL, QOF_PARAM_ACTIVE }, + { "date_opened", CT_TIMESPEC, 0, COL_NNUL, NULL, ORDER_OPENED }, + { "date_closed", CT_TIMESPEC, 0, COL_NNUL, NULL, ORDER_CLOSED }, + { "owner", CT_OWNERREF, 0, COL_NNUL, NULL, ORDER_OWNER }, + { NULL }, }; static GncOrder* load_single_order( GncSqlBackend* be, GncSqlRow* row ) { const GUID* guid; - GncOrder* pOrder; + GncOrder* pOrder; - g_return_val_if_fail( be != NULL, NULL ); - g_return_val_if_fail( row != NULL, NULL ); + g_return_val_if_fail( be != NULL, NULL ); + g_return_val_if_fail( row != NULL, NULL ); guid = gnc_sql_load_guid( be, row ); pOrder = gncOrderLookup( be->primary_book, guid ); - if( pOrder == NULL ) { + if ( pOrder == NULL ) + { pOrder = gncOrderCreate( be->primary_book ); } gnc_sql_load_object( be, row, GNC_ID_ORDER, pOrder, col_table ); qof_instance_mark_clean( QOF_INSTANCE(pOrder) ); - return pOrder; + return pOrder; } static void @@ -93,30 +94,34 @@ load_all_orders( GncSqlBackend* be ) GncSqlResult* result; QofBook* pBook; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); pBook = be->primary_book; stmt = gnc_sql_create_select_statement( be, TABLE_NAME ); result = gnc_sql_execute_select_statement( be, stmt ); - gnc_sql_statement_dispose( stmt ); - if( result != NULL ) { + gnc_sql_statement_dispose( stmt ); + if ( result != NULL ) + { GncSqlRow* row; - GList* list = NULL; + GList* list = NULL; - row = gnc_sql_result_get_first_row( result ); - while( row != NULL ) { + row = gnc_sql_result_get_first_row( result ); + while ( row != NULL ) + { GncOrder* pOrder = load_single_order( be, row ); - if( pOrder != NULL ) { - list = g_list_append( list, pOrder ); - } - row = gnc_sql_result_get_next_row( result ); - } - gnc_sql_result_dispose( result ); + if ( pOrder != NULL ) + { + list = g_list_append( list, pOrder ); + } + row = gnc_sql_result_get_next_row( result ); + } + gnc_sql_result_dispose( result ); - if( list != NULL ) { - gnc_sql_slots_load_for_list( be, list ); - } + if ( list != NULL ) + { + gnc_sql_slots_load_for_list( be, list ); + } } } @@ -124,12 +129,13 @@ load_all_orders( GncSqlBackend* be ) static void create_order_tables( GncSqlBackend* be ) { - gint version; + gint version; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); - version = gnc_sql_get_table_version( be, TABLE_NAME ); - if( version == 0 ) { + version = gnc_sql_get_table_version( be, TABLE_NAME ); + if ( version == 0 ) + { gnc_sql_create_table( be, TABLE_NAME, TABLE_VERSION, col_table ); } } @@ -138,9 +144,9 @@ create_order_tables( GncSqlBackend* be ) static gboolean save_order( GncSqlBackend* be, QofInstance* inst ) { - g_return_val_if_fail( inst != NULL, FALSE ); - g_return_val_if_fail( GNC_IS_ORDER(inst), FALSE ); - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( inst != NULL, FALSE ); + g_return_val_if_fail( GNC_IS_ORDER(inst), FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); return gnc_sql_commit_standard_item( be, inst, TABLE_NAME, GNC_ID_ORDER, col_table ); } @@ -151,13 +157,14 @@ order_should_be_saved( GncOrder *order ) { const char *id; - g_return_val_if_fail( order != NULL, FALSE ); + g_return_val_if_fail( order != NULL, FALSE ); /* make sure this is a valid order before we save it -- should have an ID */ id = gncOrderGetID( order ); - if( id == NULL || *id == '\0' ) { + if ( id == NULL || *id == '\0' ) + { return FALSE; - } + } return TRUE; } @@ -165,67 +172,76 @@ order_should_be_saved( GncOrder *order ) static void write_single_order( QofInstance *term_p, gpointer data_p ) { - write_objects_t* s = (write_objects_t*)data_p; + write_objects_t* s = (write_objects_t*)data_p; - g_return_if_fail( term_p != NULL ); - g_return_if_fail( GNC_IS_ORDER(term_p) ); - g_return_if_fail( data_p != NULL ); + g_return_if_fail( term_p != NULL ); + g_return_if_fail( GNC_IS_ORDER(term_p) ); + g_return_if_fail( data_p != NULL ); - if( s->is_ok && order_should_be_saved( GNC_ORDER(term_p) ) ) { - s->is_ok = save_order( s->be, term_p ); - } + if ( s->is_ok && order_should_be_saved( GNC_ORDER(term_p) ) ) + { + s->is_ok = save_order( s->be, term_p ); + } } static gboolean write_orders( GncSqlBackend* be ) { - write_objects_t data; + write_objects_t data; - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); - data.be = be; - data.is_ok = TRUE; + data.be = be; + data.is_ok = TRUE; qof_object_foreach( GNC_ID_ORDER, be->primary_book, write_single_order, &data ); - return data.is_ok; + return data.is_ok; } /* ================================================================= */ static void load_order_guid( const GncSqlBackend* be, GncSqlRow* row, - QofSetterFunc setter, gpointer pObject, - const GncSqlColumnTableEntry* table_row ) + QofSetterFunc setter, gpointer pObject, + const GncSqlColumnTableEntry* table_row ) { const GValue* val; GUID guid; - GncOrder* order = NULL; + GncOrder* order = NULL; - g_return_if_fail( be != NULL ); - g_return_if_fail( row != NULL ); - g_return_if_fail( pObject != NULL ); - g_return_if_fail( table_row != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( row != NULL ); + g_return_if_fail( pObject != NULL ); + g_return_if_fail( table_row != NULL ); val = gnc_sql_row_get_value_at_col_name( row, table_row->col_name ); - if( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL ) { + if ( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL ) + { string_to_guid( g_value_get_string( val ), &guid ); - order = gncOrderLookup( be->primary_book, &guid ); - if( order != NULL ) { - if( table_row->gobj_param_name != NULL ) { - g_object_set( pObject, table_row->gobj_param_name, order, NULL ); - } else { - (*setter)( pObject, (const gpointer)order ); - } - } else { - PWARN( "Order ref '%s' not found", g_value_get_string( val ) ); - } - } + order = gncOrderLookup( be->primary_book, &guid ); + if ( order != NULL ) + { + if ( table_row->gobj_param_name != NULL ) + { + g_object_set( pObject, table_row->gobj_param_name, order, NULL ); + } + else + { + (*setter)( pObject, (const gpointer)order ); + } + } + else + { + PWARN( "Order ref '%s' not found", g_value_get_string( val ) ); + } + } } static GncSqlColumnTypeHandler order_guid_handler - = { load_order_guid, - gnc_sql_add_objectref_guid_col_info_to_list, - gnc_sql_add_colname_to_list, - gnc_sql_add_gvalue_objectref_guid_to_slist }; += { load_order_guid, + gnc_sql_add_objectref_guid_col_info_to_list, + gnc_sql_add_colname_to_list, + gnc_sql_add_gvalue_objectref_guid_to_slist + }; /* ================================================================= */ void gnc_order_sql_initialize( void ) @@ -237,12 +253,12 @@ gnc_order_sql_initialize( void ) save_order, /* commit */ load_all_orders, /* initial_load */ create_order_tables, /* create_tables */ - NULL, NULL, NULL, - write_orders /* write */ + NULL, NULL, NULL, + write_orders /* write */ }; qof_object_register_backend( GNC_ID_ORDER, GNC_SQL_BACKEND, &be_data ); - gnc_sql_register_col_type_handler( CT_ORDERREF, &order_guid_handler ); + gnc_sql_register_col_type_handler( CT_ORDERREF, &order_guid_handler ); } /* ========================== END OF FILE ===================== */ diff --git a/src/business/business-core/sql/gnc-owner-sql.c b/src/business/business-core/sql/gnc-owner-sql.c index bf4be3c391..beb3471ac1 100644 --- a/src/business/business-core/sql/gnc-owner-sql.c +++ b/src/business/business-core/sql/gnc-owner-sql.c @@ -54,134 +54,147 @@ load_owner( const GncSqlBackend* be, GncSqlRow* row, { const GValue* val; gchar* buf; - GncOwnerType type; + GncOwnerType type; GUID guid; - QofBook* book; - GncOwner owner; - GUID* pGuid = NULL; + QofBook* book; + GncOwner owner; + GUID* pGuid = NULL; - g_return_if_fail( be != NULL ); - g_return_if_fail( row != NULL ); - g_return_if_fail( pObject != NULL ); - g_return_if_fail( table_row != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( row != NULL ); + g_return_if_fail( pObject != NULL ); + g_return_if_fail( table_row != NULL ); - book = be->primary_book; + book = be->primary_book; buf = g_strdup_printf( "%s_type", table_row->col_name ); val = gnc_sql_row_get_value_at_col_name( row, buf ); - type = (GncOwnerType)gnc_sql_get_integer_value( val ); + type = (GncOwnerType)gnc_sql_get_integer_value( val ); g_free( buf ); buf = g_strdup_printf( "%s_guid", table_row->col_name ); val = gnc_sql_row_get_value_at_col_name( row, buf ); g_free( buf ); - if( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL ) { + if ( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL ) + { string_to_guid( g_value_get_string( val ), &guid ); - pGuid = &guid; - } + pGuid = &guid; + } - switch( type ) { - case GNC_OWNER_CUSTOMER: - { - GncCustomer *cust = NULL; + switch ( type ) + { + case GNC_OWNER_CUSTOMER: + { + GncCustomer *cust = NULL; - if( pGuid != NULL ) { - cust = gncCustomerLookup( book, pGuid ); - if( cust == NULL ) { - cust = gncCustomerCreate( book ); - gncCustomerSetGUID( cust, &guid ); - } - } - gncOwnerInitCustomer( &owner, cust ); - break; - } + if ( pGuid != NULL ) + { + cust = gncCustomerLookup( book, pGuid ); + if ( cust == NULL ) + { + cust = gncCustomerCreate( book ); + gncCustomerSetGUID( cust, &guid ); + } + } + gncOwnerInitCustomer( &owner, cust ); + break; + } - case GNC_OWNER_JOB: - { - GncJob *job = NULL; + case GNC_OWNER_JOB: + { + GncJob *job = NULL; - if( pGuid != NULL ) { - job = gncJobLookup( book, pGuid ); - if( job == NULL ) { - job = gncJobCreate( book ); - gncJobSetGUID( job, &guid ); - } - } - gncOwnerInitJob( &owner, job ); - break; - } + if ( pGuid != NULL ) + { + job = gncJobLookup( book, pGuid ); + if ( job == NULL ) + { + job = gncJobCreate( book ); + gncJobSetGUID( job, &guid ); + } + } + gncOwnerInitJob( &owner, job ); + break; + } - case GNC_OWNER_VENDOR: - { - GncVendor *vendor = NULL; + case GNC_OWNER_VENDOR: + { + GncVendor *vendor = NULL; - if( pGuid != NULL ) { - vendor = gncVendorLookup( book, pGuid ); - if( vendor == NULL ) { - vendor = gncVendorCreate( book ); - gncVendorSetGUID( vendor, &guid ); - } - } - gncOwnerInitVendor( &owner, vendor ); - break; - } + if ( pGuid != NULL ) + { + vendor = gncVendorLookup( book, pGuid ); + if ( vendor == NULL ) + { + vendor = gncVendorCreate( book ); + gncVendorSetGUID( vendor, &guid ); + } + } + gncOwnerInitVendor( &owner, vendor ); + break; + } - case GNC_OWNER_EMPLOYEE: - { - GncEmployee *employee = NULL; + case GNC_OWNER_EMPLOYEE: + { + GncEmployee *employee = NULL; - if( pGuid != NULL ) { - employee = gncEmployeeLookup( book, pGuid ); - if( employee == NULL ) { - employee = gncEmployeeCreate( book ); - gncEmployeeSetGUID( employee, &guid ); - } - } - gncOwnerInitEmployee( &owner, employee ); - break; - } + if ( pGuid != NULL ) + { + employee = gncEmployeeLookup( book, pGuid ); + if ( employee == NULL ) + { + employee = gncEmployeeCreate( book ); + gncEmployeeSetGUID( employee, &guid ); + } + } + gncOwnerInitEmployee( &owner, employee ); + break; + } - default: - PWARN("Invalid owner type: %d\n", type ); - } + default: + PWARN("Invalid owner type: %d\n", type ); + } - if( table_row->gobj_param_name != NULL ) { - g_object_set( pObject, table_row->gobj_param_name, &owner, NULL ); - } else { - (*setter)( pObject, &owner ); - } + if ( table_row->gobj_param_name != NULL ) + { + g_object_set( pObject, table_row->gobj_param_name, &owner, NULL ); + } + else + { + (*setter)( pObject, &owner ); + } } static void add_owner_col_info_to_list( const GncSqlBackend* be, const GncSqlColumnTableEntry* table_row, - GList** pList ) + GList** pList ) { - GncSqlColumnInfo* info; + GncSqlColumnInfo* info; gchar* buf; - const gchar* type; + const gchar* type; - g_return_if_fail( be != NULL ); - g_return_if_fail( table_row != NULL ); - g_return_if_fail( pList != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( table_row != NULL ); + g_return_if_fail( pList != NULL ); buf = g_strdup_printf( "%s_type", table_row->col_name ); - info = g_new0( GncSqlColumnInfo, 1 ); - info->name = buf; - info->type = BCT_INT; - info->is_primary_key = (table_row->flags & COL_PKEY) ? TRUE : FALSE; - info->null_allowed = (table_row->flags & COL_NNUL) ? FALSE : TRUE; - info->size = table_row->size; - info->is_unicode = FALSE; - *pList = g_list_append( *pList, info ); + info = g_new0( GncSqlColumnInfo, 1 ); + info->name = buf; + info->type = BCT_INT; + info->is_primary_key = (table_row->flags & COL_PKEY) ? TRUE : FALSE; + info->null_allowed = (table_row->flags & COL_NNUL) ? FALSE : TRUE; + info->size = table_row->size; + info->is_unicode = FALSE; + *pList = g_list_append( *pList, info ); - buf = g_strdup_printf( "%s_guid", table_row->col_name ); - info = g_new0( GncSqlColumnInfo, 1 ); - info->name = buf; - info->type = BCT_STRING; - info->size = GUID_ENCODING_LENGTH; - info->is_primary_key = (table_row->flags & COL_PKEY) ? TRUE : FALSE; - info->null_allowed = (table_row->flags & COL_NNUL) ? FALSE : TRUE; - info->is_unicode = FALSE; - *pList = g_list_append( *pList, info ); + buf = g_strdup_printf( "%s_guid", table_row->col_name ); + info = g_new0( GncSqlColumnInfo, 1 ); + info->name = buf; + info->type = BCT_STRING; + info->size = GUID_ENCODING_LENGTH; + info->is_primary_key = (table_row->flags & COL_PKEY) ? TRUE : FALSE; + info->null_allowed = (table_row->flags & COL_NNUL) ? FALSE : TRUE; + info->is_unicode = FALSE; + *pList = g_list_append( *pList, info ); } static void @@ -190,95 +203,102 @@ add_colname_to_list( const GncSqlColumnTableEntry* table_row, GList** pList ) gchar* buf; buf = g_strdup_printf( "%s_type", table_row->col_name ); - (*pList) = g_list_append( (*pList), buf ); + (*pList) = g_list_append( (*pList), buf ); buf = g_strdup_printf( "%s_guid", table_row->col_name ); - (*pList) = g_list_append( (*pList), buf ); + (*pList) = g_list_append( (*pList), buf ); } static void add_gvalue_owner_to_slist( const GncSqlBackend* be, QofIdTypeConst obj_name, - const gpointer pObject, const GncSqlColumnTableEntry* table_row, GSList** pList ) + const gpointer pObject, const GncSqlColumnTableEntry* table_row, GSList** pList ) { GValue* subfield_value; GncOwner* owner; - gchar* buf; + gchar* buf; const GUID* guid; gchar guid_buf[GUID_ENCODING_LENGTH+1]; - GncOwnerType type; - QofInstance* inst = NULL; + GncOwnerType type; + QofInstance* inst = NULL; OwnerGetterFunc getter; - g_return_if_fail( be != NULL ); - g_return_if_fail( obj_name != NULL ); - g_return_if_fail( pObject != NULL ); - g_return_if_fail( table_row != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( obj_name != NULL ); + g_return_if_fail( pObject != NULL ); + g_return_if_fail( table_row != NULL ); - getter = (OwnerGetterFunc)gnc_sql_get_getter( obj_name, table_row ); + getter = (OwnerGetterFunc)gnc_sql_get_getter( obj_name, table_row ); owner = (*getter)( pObject ); - if( owner != NULL ) { - buf = g_strdup_printf( "%s_type", table_row->col_name ); - subfield_value = g_new0( GValue, 1 ); + if ( owner != NULL ) + { + buf = g_strdup_printf( "%s_type", table_row->col_name ); + subfield_value = g_new0( GValue, 1 ); g_value_init( subfield_value, G_TYPE_INT ); type = gncOwnerGetType( owner ); g_value_set_int( subfield_value, type ); - (*pList) = g_slist_append( (*pList), subfield_value ); - g_free( buf ); + (*pList) = g_slist_append( (*pList), subfield_value ); + g_free( buf ); - buf = g_strdup_printf( "%s_guid", table_row->col_name ); - subfield_value = g_new0( GValue, 1 ); - switch( type ) { - case GNC_OWNER_CUSTOMER: - inst = QOF_INSTANCE(gncOwnerGetCustomer( owner )); - break; + buf = g_strdup_printf( "%s_guid", table_row->col_name ); + subfield_value = g_new0( GValue, 1 ); + switch ( type ) + { + case GNC_OWNER_CUSTOMER: + inst = QOF_INSTANCE(gncOwnerGetCustomer( owner )); + break; - case GNC_OWNER_JOB: - inst = QOF_INSTANCE(gncOwnerGetJob( owner )); - break; + case GNC_OWNER_JOB: + inst = QOF_INSTANCE(gncOwnerGetJob( owner )); + break; - case GNC_OWNER_VENDOR: - inst = QOF_INSTANCE(gncOwnerGetVendor( owner )); - break; + case GNC_OWNER_VENDOR: + inst = QOF_INSTANCE(gncOwnerGetVendor( owner )); + break; - case GNC_OWNER_EMPLOYEE: - inst = QOF_INSTANCE(gncOwnerGetEmployee( owner )); - break; + case GNC_OWNER_EMPLOYEE: + inst = QOF_INSTANCE(gncOwnerGetEmployee( owner )); + break; - default: - PWARN("Invalid owner type: %d\n", type ); - } + default: + PWARN("Invalid owner type: %d\n", type ); + } g_value_init( subfield_value, G_TYPE_STRING ); - if( inst != NULL ) { - guid = qof_instance_get_guid( inst ); - if( guid != NULL ) { - (void)guid_to_string_buff( guid, guid_buf ); - g_value_take_string( subfield_value, g_strdup_printf( "%s", guid_buf ) ); - } - } - (*pList) = g_slist_append( (*pList), subfield_value ); - g_free( buf ); - } else { - subfield_value = g_new0( GValue, 1 ); - g_value_init( subfield_value, G_TYPE_STRING ); - g_value_set_string( subfield_value, "NULL" ); - (*pList) = g_slist_append( (*pList), subfield_value ); - subfield_value = g_new0( GValue, 1 ); - g_value_init( subfield_value, G_TYPE_STRING ); - g_value_set_string( subfield_value, "NULL" ); - (*pList) = g_slist_append( (*pList), subfield_value ); - } + if ( inst != NULL ) + { + guid = qof_instance_get_guid( inst ); + if ( guid != NULL ) + { + (void)guid_to_string_buff( guid, guid_buf ); + g_value_take_string( subfield_value, g_strdup_printf( "%s", guid_buf ) ); + } + } + (*pList) = g_slist_append( (*pList), subfield_value ); + g_free( buf ); + } + else + { + subfield_value = g_new0( GValue, 1 ); + g_value_init( subfield_value, G_TYPE_STRING ); + g_value_set_string( subfield_value, "NULL" ); + (*pList) = g_slist_append( (*pList), subfield_value ); + subfield_value = g_new0( GValue, 1 ); + g_value_init( subfield_value, G_TYPE_STRING ); + g_value_set_string( subfield_value, "NULL" ); + (*pList) = g_slist_append( (*pList), subfield_value ); + } } static GncSqlColumnTypeHandler owner_handler - = { load_owner, - add_owner_col_info_to_list, - add_colname_to_list, - add_gvalue_owner_to_slist }; += { load_owner, + add_owner_col_info_to_list, + add_colname_to_list, + add_gvalue_owner_to_slist + }; /* ================================================================= */ void gnc_owner_sql_initialize( void ) { - gnc_sql_register_col_type_handler( CT_OWNERREF, &owner_handler ); + gnc_sql_register_col_type_handler( CT_OWNERREF, &owner_handler ); } /* ========================== END OF FILE ===================== */ diff --git a/src/business/business-core/sql/gnc-tax-table-sql.c b/src/business/business-core/sql/gnc-tax-table-sql.c index def6e2fe7e..018b8c649f 100644 --- a/src/business/business-core/sql/gnc-tax-table-sql.c +++ b/src/business/business-core/sql/gnc-tax-table-sql.c @@ -48,7 +48,8 @@ static QofLogModule log_module = G_LOG_DOMAIN; static void set_invisible( gpointer data, gboolean value ); -typedef struct { +typedef struct +{ GncSqlBackend* be; const GUID* guid; } guid_info_t; @@ -65,16 +66,20 @@ static void set_parent( gpointer pObject, gpointer pValue ); static GncSqlColumnTableEntry tt_col_table[] = { - { "guid", CT_GUID, 0, COL_NNUL|COL_PKEY, "guid" }, - { "name", CT_STRING, MAX_NAME_LEN, COL_NNUL, "name" }, - { "refcount", CT_INT64, 0, COL_NNUL, NULL, GNC_TT_REFCOUNT }, - { "invisible", CT_BOOLEAN, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncTaxTableGetInvisible, (QofSetterFunc)set_invisible }, -/* { "child", CT_TAXTABLEREF, 0, 0, NULL, NULL, - get_child, (QofSetterFunc)gncTaxTableSetChild }, */ - { "parent", CT_TAXTABLEREF, 0, 0, NULL, NULL, - (QofAccessFunc)gncTaxTableGetParent, set_parent }, - { NULL } + { "guid", CT_GUID, 0, COL_NNUL | COL_PKEY, "guid" }, + { "name", CT_STRING, MAX_NAME_LEN, COL_NNUL, "name" }, + { "refcount", CT_INT64, 0, COL_NNUL, NULL, GNC_TT_REFCOUNT }, + { + "invisible", CT_BOOLEAN, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncTaxTableGetInvisible, (QofSetterFunc)set_invisible + }, + /* { "child", CT_TAXTABLEREF, 0, 0, NULL, NULL, + get_child, (QofSetterFunc)gncTaxTableSetChild }, */ + { + "parent", CT_TAXTABLEREF, 0, 0, NULL, NULL, + (QofAccessFunc)gncTaxTableGetParent, set_parent + }, + { NULL } }; #define TTENTRIES_TABLE_NAME "taxtable_entries" @@ -82,16 +87,24 @@ static GncSqlColumnTableEntry tt_col_table[] = static GncSqlColumnTableEntry ttentries_col_table[] = { - { "id", CT_INT, 0, COL_PKEY|COL_NNUL|COL_AUTOINC }, - { "taxtable", CT_TAXTABLEREF, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncTaxTableEntryGetTable, set_obj_guid }, - { "account", CT_ACCOUNTREF, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncTaxTableEntryGetAccount, (QofSetterFunc)gncTaxTableEntrySetAccount }, - { "amount", CT_NUMERIC, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncTaxTableEntryGetAmount, (QofSetterFunc)gncTaxTableEntrySetAmount }, - { "type", CT_INT, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncTaxTableEntryGetType, (QofSetterFunc)gncTaxTableEntrySetType }, - { NULL } + { "id", CT_INT, 0, COL_PKEY | COL_NNUL | COL_AUTOINC }, + { + "taxtable", CT_TAXTABLEREF, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncTaxTableEntryGetTable, set_obj_guid + }, + { + "account", CT_ACCOUNTREF, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncTaxTableEntryGetAccount, (QofSetterFunc)gncTaxTableEntrySetAccount + }, + { + "amount", CT_NUMERIC, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncTaxTableEntryGetAmount, (QofSetterFunc)gncTaxTableEntrySetAmount + }, + { + "type", CT_INT, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncTaxTableEntryGetType, (QofSetterFunc)gncTaxTableEntrySetType + }, + { NULL } }; /* Special column table because we need to be able to access the table by @@ -107,7 +120,7 @@ get_obj_guid( gpointer pObject, const QofParam* param ) { guid_info_t* pInfo = (guid_info_t*)pObject; - g_return_val_if_fail( pInfo != NULL, NULL ); + g_return_val_if_fail( pInfo != NULL, NULL ); return (gpointer)pInfo->guid; } @@ -121,54 +134,56 @@ set_obj_guid( gpointer pObject, gpointer pValue ) static void set_invisible( gpointer data, gboolean value ) { - GncTaxTable* tt = GNC_TAXTABLE(data); + GncTaxTable* tt = GNC_TAXTABLE(data); - g_return_if_fail( data != NULL ); - g_return_if_fail( GNC_IS_TAXTABLE(data) ); + g_return_if_fail( data != NULL ); + g_return_if_fail( GNC_IS_TAXTABLE(data) ); - if( value ) { - gncTaxTableMakeInvisible( tt ); - } + if ( value ) + { + gncTaxTableMakeInvisible( tt ); + } } static gpointer get_child( gpointer pObject, const QofParam* param ) { - GncTaxTable* tt = GNC_TAXTABLE(pObject); + GncTaxTable* tt = GNC_TAXTABLE(pObject); - g_return_val_if_fail( pObject != NULL, NULL ); - g_return_val_if_fail( GNC_IS_TAXTABLE(pObject), NULL ); + g_return_val_if_fail( pObject != NULL, NULL ); + g_return_val_if_fail( GNC_IS_TAXTABLE(pObject), NULL ); - return gncTaxTableGetChild( tt ); + return gncTaxTableGetChild( tt ); } static void set_parent( gpointer data, gpointer value ) { - GncTaxTable* tt = GNC_TAXTABLE(data); - GncTaxTable* parent; + GncTaxTable* tt = GNC_TAXTABLE(data); + GncTaxTable* parent; - g_return_if_fail( data != NULL ); - g_return_if_fail( GNC_IS_TAXTABLE(data) ); + g_return_if_fail( data != NULL ); + g_return_if_fail( GNC_IS_TAXTABLE(data) ); - if( value != NULL ) { - parent = GNC_TAXTABLE(value); - gncTaxTableSetParent( tt, parent ); - gncTaxTableSetChild( parent, tt ); - } + if ( value != NULL ) + { + parent = GNC_TAXTABLE(value); + gncTaxTableSetParent( tt, parent ); + gncTaxTableSetChild( parent, tt ); + } } static void load_single_ttentry( GncSqlBackend* be, GncSqlRow* row, GncTaxTable* tt ) { - GncTaxTableEntry* e = gncTaxTableEntryCreate(); + GncTaxTableEntry* e = gncTaxTableEntryCreate(); - g_return_if_fail( be != NULL ); - g_return_if_fail( row!= NULL ); - g_return_if_fail( tt != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( row != NULL ); + g_return_if_fail( tt != NULL ); gnc_sql_load_object( be, row, GNC_ID_TAXTABLE, e, ttentries_col_table ); - gncTaxTableAddEntry( tt, e ); + gncTaxTableAddEntry( tt, e ); } static void @@ -177,31 +192,33 @@ load_taxtable_entries( GncSqlBackend* be, GncTaxTable* tt ) GncSqlResult* result; gchar guid_buf[GUID_ENCODING_LENGTH+1]; GValue value; - gchar* buf; - GncSqlStatement* stmt; - GError* error = NULL; + gchar* buf; + GncSqlStatement* stmt; + GError* error = NULL; - g_return_if_fail( be != NULL ); - g_return_if_fail( tt != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( tt != NULL ); guid_to_string_buff( qof_instance_get_guid( QOF_INSTANCE(tt) ), guid_buf ); memset( &value, 0, sizeof( GValue ) ); g_value_init( &value, G_TYPE_STRING ); g_value_set_string( &value, guid_buf ); - buf = g_strdup_printf( "SELECT * FROM %s WHERE taxtable='%s'", TTENTRIES_TABLE_NAME, guid_buf ); - stmt = gnc_sql_connection_create_statement_from_sql( be->conn, buf ); - g_free( buf ); + buf = g_strdup_printf( "SELECT * FROM %s WHERE taxtable='%s'", TTENTRIES_TABLE_NAME, guid_buf ); + stmt = gnc_sql_connection_create_statement_from_sql( be->conn, buf ); + g_free( buf ); result = gnc_sql_execute_select_statement( be, stmt ); - gnc_sql_statement_dispose( stmt ); - if( result != NULL ) { + gnc_sql_statement_dispose( stmt ); + if ( result != NULL ) + { GncSqlRow* row; - row = gnc_sql_result_get_first_row( result ); - while( row != NULL ) { + row = gnc_sql_result_get_first_row( result ); + while ( row != NULL ) + { load_single_ttentry( be, row, tt ); - row = gnc_sql_result_get_next_row( result ); + row = gnc_sql_result_get_next_row( result ); } - gnc_sql_result_dispose( result ); + gnc_sql_result_dispose( result ); } } @@ -209,19 +226,20 @@ static void load_single_taxtable( GncSqlBackend* be, GncSqlRow* row ) { const GUID* guid; - GncTaxTable* tt; + GncTaxTable* tt; - g_return_if_fail( be != NULL ); - g_return_if_fail( row != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( row != NULL ); guid = gnc_sql_load_guid( be, row ); tt = gncTaxTableLookup( be->primary_book, guid ); - if( tt == NULL ) { + if ( tt == NULL ) + { tt = gncTaxTableCreate( be->primary_book ); } gnc_sql_load_object( be, row, GNC_ID_TAXTABLE, tt, tt_col_table ); gnc_sql_slots_load( be, QOF_INSTANCE(tt) ); - load_taxtable_entries( be, tt ); + load_taxtable_entries( be, tt ); qof_instance_mark_clean( QOF_INSTANCE(tt) ); } @@ -232,21 +250,23 @@ load_all_taxtables( GncSqlBackend* be ) GncSqlStatement* stmt; GncSqlResult* result; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); /* First time, create the query */ stmt = gnc_sql_create_select_statement( be, TT_TABLE_NAME ); result = gnc_sql_execute_select_statement( be, stmt ); - gnc_sql_statement_dispose( stmt ); - if( result != NULL ) { + gnc_sql_statement_dispose( stmt ); + if ( result != NULL ) + { GncSqlRow* row; - row = gnc_sql_result_get_first_row( result ); - while( row != NULL ) { + row = gnc_sql_result_get_first_row( result ); + while ( row != NULL ) + { load_single_taxtable( be, row ); - row = gnc_sql_result_get_next_row( result ); - } - gnc_sql_result_dispose( result ); + row = gnc_sql_result_get_next_row( result ); + } + gnc_sql_result_dispose( result ); } } @@ -254,26 +274,32 @@ load_all_taxtables( GncSqlBackend* be ) static void create_taxtable_tables( GncSqlBackend* be ) { - gint version; + gint version; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); - version = gnc_sql_get_table_version( be, TT_TABLE_NAME ); - if( version == 0 ) { + version = gnc_sql_get_table_version( be, TT_TABLE_NAME ); + if ( version == 0 ) + { gnc_sql_create_table( be, TT_TABLE_NAME, TT_TABLE_VERSION, tt_col_table ); - } else if( version == 1 ) { - /* Upgrade 64 bit int handling */ - gnc_sql_upgrade_table( be, TT_TABLE_NAME, tt_col_table ); - gnc_sql_set_table_version( be, TT_TABLE_NAME, TT_TABLE_VERSION ); + } + else if ( version == 1 ) + { + /* Upgrade 64 bit int handling */ + gnc_sql_upgrade_table( be, TT_TABLE_NAME, tt_col_table ); + gnc_sql_set_table_version( be, TT_TABLE_NAME, TT_TABLE_VERSION ); } - version = gnc_sql_get_table_version( be, TTENTRIES_TABLE_NAME ); - if( version == 0 ) { + version = gnc_sql_get_table_version( be, TTENTRIES_TABLE_NAME ); + if ( version == 0 ) + { gnc_sql_create_table( be, TTENTRIES_TABLE_NAME, TTENTRIES_TABLE_VERSION, ttentries_col_table ); - } else if( version == 1 ) { - /* Upgrade 64 bit int handling */ - gnc_sql_upgrade_table( be, TTENTRIES_TABLE_NAME, ttentries_col_table ); - gnc_sql_set_table_version( be, TTENTRIES_TABLE_NAME, TTENTRIES_TABLE_VERSION ); + } + else if ( version == 1 ) + { + /* Upgrade 64 bit int handling */ + gnc_sql_upgrade_table( be, TTENTRIES_TABLE_NAME, ttentries_col_table ); + gnc_sql_set_table_version( be, TTENTRIES_TABLE_NAME, TTENTRIES_TABLE_VERSION ); } } @@ -283,37 +309,38 @@ delete_all_tt_entries( GncSqlBackend* be, const GUID* guid ) { guid_info_t guid_info; - g_return_val_if_fail( be != NULL, FALSE ); - g_return_val_if_fail( guid != NULL, FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( guid != NULL, FALSE ); guid_info.be = be; guid_info.guid = guid; return gnc_sql_do_db_operation( be, OP_DB_DELETE, TTENTRIES_TABLE_NAME, - TTENTRIES_TABLE_NAME, &guid_info, guid_col_table ); + TTENTRIES_TABLE_NAME, &guid_info, guid_col_table ); } static gboolean save_tt_entries( GncSqlBackend* be, const GUID* guid, GList* entries ) { - GList* entry; - gboolean is_ok; + GList* entry; + gboolean is_ok; - g_return_val_if_fail( be != NULL, FALSE ); - g_return_val_if_fail( guid != NULL, FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( guid != NULL, FALSE ); /* First, delete the old entries for this object */ is_ok = delete_all_tt_entries( be, guid ); - for( entry = entries; entry != NULL && is_ok; entry = entry->next ) { - GncTaxTableEntry* e = (GncTaxTableEntry*)entry->data; - is_ok = gnc_sql_do_db_operation( be, - OP_DB_INSERT, - TTENTRIES_TABLE_NAME, - GNC_ID_TAXTABLE, e, - ttentries_col_table ); + for ( entry = entries; entry != NULL && is_ok; entry = entry->next ) + { + GncTaxTableEntry* e = (GncTaxTableEntry*)entry->data; + is_ok = gnc_sql_do_db_operation( be, + OP_DB_INSERT, + TTENTRIES_TABLE_NAME, + GNC_ID_TAXTABLE, e, + ttentries_col_table ); } - return is_ok; + return is_ok; } static gboolean @@ -321,106 +348,126 @@ save_taxtable( GncSqlBackend* be, QofInstance* inst ) { GncTaxTable* tt; const GUID* guid; - gint op; - gboolean is_infant; - gboolean is_ok; + gint op; + gboolean is_infant; + gboolean is_ok; - g_return_val_if_fail( inst != NULL, FALSE ); - g_return_val_if_fail( GNC_IS_TAXTABLE(inst), FALSE ); - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( inst != NULL, FALSE ); + g_return_val_if_fail( GNC_IS_TAXTABLE(inst), FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); tt = GNC_TAXTABLE(inst); - is_infant = qof_instance_get_infant( inst ); - if( qof_instance_get_destroying( inst ) ) { - op = OP_DB_DELETE; - } else if( be->is_pristine_db || is_infant ) { - op = OP_DB_INSERT; - } else { - op = OP_DB_UPDATE; - } + is_infant = qof_instance_get_infant( inst ); + if ( qof_instance_get_destroying( inst ) ) + { + op = OP_DB_DELETE; + } + else if ( be->is_pristine_db || is_infant ) + { + op = OP_DB_INSERT; + } + else + { + op = OP_DB_UPDATE; + } is_ok = gnc_sql_do_db_operation( be, op, TT_TABLE_NAME, GNC_ID_TAXTABLE, tt, tt_col_table ); - if( is_ok ) { - // Now, commit or delete any slots and tax table entries - guid = qof_instance_get_guid( inst ); - if( !qof_instance_get_destroying(inst) ) { - is_ok = gnc_sql_slots_save( be, guid, is_infant, qof_instance_get_slots( inst ) ); - if( is_ok ) { - is_ok = save_tt_entries( be, guid, gncTaxTableGetEntries( tt ) ); - } - } else { - is_ok = gnc_sql_slots_delete( be, guid ); - if( is_ok ) { - is_ok = delete_all_tt_entries( be, guid ); - } - } - } + if ( is_ok ) + { + // Now, commit or delete any slots and tax table entries + guid = qof_instance_get_guid( inst ); + if ( !qof_instance_get_destroying(inst) ) + { + is_ok = gnc_sql_slots_save( be, guid, is_infant, qof_instance_get_slots( inst ) ); + if ( is_ok ) + { + is_ok = save_tt_entries( be, guid, gncTaxTableGetEntries( tt ) ); + } + } + else + { + is_ok = gnc_sql_slots_delete( be, guid ); + if ( is_ok ) + { + is_ok = delete_all_tt_entries( be, guid ); + } + } + } - return is_ok; + return is_ok; } /* ================================================================= */ static void save_next_taxtable( QofInstance* inst, gpointer data ) { - write_objects_t* s = (write_objects_t*)data; + write_objects_t* s = (write_objects_t*)data; - if( s->is_ok ) { - s->is_ok = save_taxtable( s->be, inst ); - } + if ( s->is_ok ) + { + s->is_ok = save_taxtable( s->be, inst ); + } } static gboolean write_taxtables( GncSqlBackend* be ) { - write_objects_t data; + write_objects_t data; - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); - data.be = be; - data.is_ok = TRUE; + data.be = be; + data.is_ok = TRUE; qof_object_foreach( GNC_ID_TAXTABLE, be->primary_book, save_next_taxtable, &data ); - return data.is_ok; + return data.is_ok; } /* ================================================================= */ static void load_taxtable_guid( const GncSqlBackend* be, GncSqlRow* row, - QofSetterFunc setter, gpointer pObject, - const GncSqlColumnTableEntry* table_row ) + QofSetterFunc setter, gpointer pObject, + const GncSqlColumnTableEntry* table_row ) { const GValue* val; GUID guid; - GncTaxTable* taxtable = NULL; + GncTaxTable* taxtable = NULL; - g_return_if_fail( be != NULL ); - g_return_if_fail( row != NULL ); - g_return_if_fail( pObject != NULL ); - g_return_if_fail( table_row != NULL ); + g_return_if_fail( be != NULL ); + g_return_if_fail( row != NULL ); + g_return_if_fail( pObject != NULL ); + g_return_if_fail( table_row != NULL ); val = gnc_sql_row_get_value_at_col_name( row, table_row->col_name ); - if( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL ) { + if ( val != NULL && G_VALUE_HOLDS_STRING( val ) && g_value_get_string( val ) != NULL ) + { string_to_guid( g_value_get_string( val ), &guid ); - taxtable = gncTaxTableLookup( be->primary_book, &guid ); - if( taxtable != NULL ) { - if( table_row->gobj_param_name != NULL ) { - g_object_set( pObject, table_row->gobj_param_name, taxtable, NULL ); - } else { - (*setter)( pObject, (const gpointer)taxtable ); - } - } else { - PWARN( "Taxtable ref '%s' not found", g_value_get_string( val ) ); - } + taxtable = gncTaxTableLookup( be->primary_book, &guid ); + if ( taxtable != NULL ) + { + if ( table_row->gobj_param_name != NULL ) + { + g_object_set( pObject, table_row->gobj_param_name, taxtable, NULL ); + } + else + { + (*setter)( pObject, (const gpointer)taxtable ); + } + } + else + { + PWARN( "Taxtable ref '%s' not found", g_value_get_string( val ) ); + } } } static GncSqlColumnTypeHandler taxtable_guid_handler - = { load_taxtable_guid, - gnc_sql_add_objectref_guid_col_info_to_list, - gnc_sql_add_colname_to_list, - gnc_sql_add_gvalue_objectref_guid_to_slist }; += { load_taxtable_guid, + gnc_sql_add_objectref_guid_col_info_to_list, + gnc_sql_add_colname_to_list, + gnc_sql_add_gvalue_objectref_guid_to_slist + }; /* ================================================================= */ void gnc_taxtable_sql_initialize( void ) @@ -432,13 +479,13 @@ gnc_taxtable_sql_initialize( void ) save_taxtable, /* commit */ load_all_taxtables, /* initial_load */ create_taxtable_tables, /* create_tables */ - NULL, NULL, NULL, - write_taxtables /* write */ + NULL, NULL, NULL, + write_taxtables /* write */ }; qof_object_register_backend( GNC_ID_TAXTABLE, GNC_SQL_BACKEND, &be_data ); - gnc_sql_register_col_type_handler( CT_TAXTABLEREF, &taxtable_guid_handler ); + gnc_sql_register_col_type_handler( CT_TAXTABLEREF, &taxtable_guid_handler ); } /* ========================== END OF FILE ===================== */ diff --git a/src/business/business-core/sql/gnc-vendor-sql.c b/src/business/business-core/sql/gnc-vendor-sql.c index 730645e249..0d31987eb5 100644 --- a/src/business/business-core/sql/gnc-vendor-sql.c +++ b/src/business/business-core/sql/gnc-vendor-sql.c @@ -63,40 +63,45 @@ static QofLogModule log_module = G_LOG_DOMAIN; static GncSqlColumnTableEntry col_table[] = { - { "guid", CT_GUID, 0, COL_NNUL|COL_PKEY, "guid" }, - { "name", CT_STRING, MAX_NAME_LEN, COL_NNUL, "name" }, - { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, VENDOR_ID }, - { "notes", CT_STRING, MAX_NOTES_LEN, COL_NNUL, NULL, VENDOR_NOTES }, - { "currency", CT_COMMODITYREF, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncVendorGetCurrency, (QofSetterFunc)gncVendorSetCurrency }, - { "active", CT_BOOLEAN, 0, COL_NNUL, NULL, NULL, - (QofAccessFunc)gncVendorGetActive, (QofSetterFunc)gncVendorSetActive }, - { "tax_override", CT_BOOLEAN, 0, COL_NNUL, NULL, VENDOR_TAX_OVERRIDE }, - { "addr", CT_ADDRESS, 0, 0, NULL, VENDOR_ADDR }, - { "terms", CT_BILLTERMREF, 0, 0, NULL, VENDOR_TERMS }, - { "tax_inc", CT_STRING, MAX_TAX_INC_LEN, 0, NULL, VENDOR_TAX_INC }, - { "tax_table", CT_TAXTABLEREF, 0, 0, NULL, VENDOR_TAX_TABLE }, - { NULL } + { "guid", CT_GUID, 0, COL_NNUL | COL_PKEY, "guid" }, + { "name", CT_STRING, MAX_NAME_LEN, COL_NNUL, "name" }, + { "id", CT_STRING, MAX_ID_LEN, COL_NNUL, NULL, VENDOR_ID }, + { "notes", CT_STRING, MAX_NOTES_LEN, COL_NNUL, NULL, VENDOR_NOTES }, + { + "currency", CT_COMMODITYREF, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncVendorGetCurrency, (QofSetterFunc)gncVendorSetCurrency + }, + { + "active", CT_BOOLEAN, 0, COL_NNUL, NULL, NULL, + (QofAccessFunc)gncVendorGetActive, (QofSetterFunc)gncVendorSetActive + }, + { "tax_override", CT_BOOLEAN, 0, COL_NNUL, NULL, VENDOR_TAX_OVERRIDE }, + { "addr", CT_ADDRESS, 0, 0, NULL, VENDOR_ADDR }, + { "terms", CT_BILLTERMREF, 0, 0, NULL, VENDOR_TERMS }, + { "tax_inc", CT_STRING, MAX_TAX_INC_LEN, 0, NULL, VENDOR_TAX_INC }, + { "tax_table", CT_TAXTABLEREF, 0, 0, NULL, VENDOR_TAX_TABLE }, + { NULL } }; static GncVendor* load_single_vendor( GncSqlBackend* be, GncSqlRow* row ) { const GUID* guid; - GncVendor* pVendor; + GncVendor* pVendor; - g_return_val_if_fail( be != NULL, NULL ); - g_return_val_if_fail( row != NULL, NULL ); + g_return_val_if_fail( be != NULL, NULL ); + g_return_val_if_fail( row != NULL, NULL ); guid = gnc_sql_load_guid( be, row ); pVendor = gncVendorLookup( be->primary_book, guid ); - if( pVendor == NULL ) { + if ( pVendor == NULL ) + { pVendor = gncVendorCreate( be->primary_book ); } gnc_sql_load_object( be, row, GNC_ID_VENDOR, pVendor, col_table ); qof_instance_mark_clean( QOF_INSTANCE(pVendor) ); - return pVendor; + return pVendor; } static void @@ -106,30 +111,34 @@ load_all_vendors( GncSqlBackend* be ) GncSqlResult* result; QofBook* pBook; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); pBook = be->primary_book; stmt = gnc_sql_create_select_statement( be, TABLE_NAME ); result = gnc_sql_execute_select_statement( be, stmt ); - gnc_sql_statement_dispose( stmt ); - if( result != NULL ) { + gnc_sql_statement_dispose( stmt ); + if ( result != NULL ) + { GncSqlRow* row; - GList* list = NULL; + GList* list = NULL; - row = gnc_sql_result_get_first_row( result ); - while( row != NULL ) { + row = gnc_sql_result_get_first_row( result ); + while ( row != NULL ) + { GncVendor* pVendor = load_single_vendor( be, row ); - if( pVendor != NULL ) { - list = g_list_append( list, pVendor ); - } - row = gnc_sql_result_get_next_row( result ); - } - gnc_sql_result_dispose( result ); + if ( pVendor != NULL ) + { + list = g_list_append( list, pVendor ); + } + row = gnc_sql_result_get_next_row( result ); + } + gnc_sql_result_dispose( result ); - if( list != NULL ) { - gnc_sql_slots_load_for_list( be, list ); - } + if ( list != NULL ) + { + gnc_sql_slots_load_for_list( be, list ); + } } } @@ -137,12 +146,13 @@ load_all_vendors( GncSqlBackend* be ) static void create_vendor_tables( GncSqlBackend* be ) { - gint version; + gint version; - g_return_if_fail( be != NULL ); + g_return_if_fail( be != NULL ); - version = gnc_sql_get_table_version( be, TABLE_NAME ); - if( version == 0 ) { + version = gnc_sql_get_table_version( be, TABLE_NAME ); + if ( version == 0 ) + { gnc_sql_create_table( be, TABLE_NAME, TABLE_VERSION, col_table ); } } @@ -153,43 +163,54 @@ save_vendor( GncSqlBackend* be, QofInstance* inst ) { GncVendor* v; const GUID* guid; - gint op; - gboolean is_infant; - gboolean is_ok = TRUE; + gint op; + gboolean is_infant; + gboolean is_ok = TRUE; - g_return_val_if_fail( inst != NULL, FALSE ); - g_return_val_if_fail( GNC_IS_VENDOR(inst), FALSE ); - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( inst != NULL, FALSE ); + g_return_val_if_fail( GNC_IS_VENDOR(inst), FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); v = GNC_VENDOR(inst); - is_infant = qof_instance_get_infant( inst ); - if( qof_instance_get_destroying( inst ) ) { - op = OP_DB_DELETE; - } else if( be->is_pristine_db || is_infant ) { - op = OP_DB_INSERT; - } else { - op = OP_DB_UPDATE; - } - if( op != OP_DB_DELETE ) { - // Ensure the commodity is in the db - is_ok = gnc_sql_save_commodity( be, gncVendorGetCurrency( v ) ); - } - if( is_ok ) { - is_ok = gnc_sql_do_db_operation( be, op, TABLE_NAME, GNC_ID_VENDOR, v, col_table ); - } + is_infant = qof_instance_get_infant( inst ); + if ( qof_instance_get_destroying( inst ) ) + { + op = OP_DB_DELETE; + } + else if ( be->is_pristine_db || is_infant ) + { + op = OP_DB_INSERT; + } + else + { + op = OP_DB_UPDATE; + } + if ( op != OP_DB_DELETE ) + { + // Ensure the commodity is in the db + is_ok = gnc_sql_save_commodity( be, gncVendorGetCurrency( v ) ); + } + if ( is_ok ) + { + is_ok = gnc_sql_do_db_operation( be, op, TABLE_NAME, GNC_ID_VENDOR, v, col_table ); + } - if( is_ok ) { - // Now, commit or delete any slots - guid = qof_instance_get_guid( inst ); - if( !qof_instance_get_destroying(inst) ) { - is_ok = gnc_sql_slots_save( be, guid, is_infant, qof_instance_get_slots( inst ) ); - } else { - is_ok = gnc_sql_slots_delete( be, guid ); - } - } + if ( is_ok ) + { + // Now, commit or delete any slots + guid = qof_instance_get_guid( inst ); + if ( !qof_instance_get_destroying(inst) ) + { + is_ok = gnc_sql_slots_save( be, guid, is_infant, qof_instance_get_slots( inst ) ); + } + else + { + is_ok = gnc_sql_slots_delete( be, guid ); + } + } - return is_ok; + return is_ok; } /* ================================================================= */ @@ -198,13 +219,14 @@ vendor_should_be_saved( GncVendor *vendor ) { const char *id; - g_return_val_if_fail( vendor != NULL, FALSE ); + g_return_val_if_fail( vendor != NULL, FALSE ); /* make sure this is a valid vendor before we save it -- should have an ID */ id = gncVendorGetID( vendor ); - if( id == NULL || *id == '\0' ) { + if ( id == NULL || *id == '\0' ) + { return FALSE; - } + } return TRUE; } @@ -212,29 +234,30 @@ vendor_should_be_saved( GncVendor *vendor ) static void write_single_vendor( QofInstance *term_p, gpointer data_p ) { - write_objects_t* s = (write_objects_t*)data_p; + write_objects_t* s = (write_objects_t*)data_p; - g_return_if_fail( term_p != NULL ); - g_return_if_fail( GNC_IS_VENDOR(term_p) ); - g_return_if_fail( data_p != NULL ); + g_return_if_fail( term_p != NULL ); + g_return_if_fail( GNC_IS_VENDOR(term_p) ); + g_return_if_fail( data_p != NULL ); - if( s->is_ok && vendor_should_be_saved( GNC_VENDOR(term_p) ) ) { - s->is_ok = save_vendor( s->be, term_p ); - } + if ( s->is_ok && vendor_should_be_saved( GNC_VENDOR(term_p) ) ) + { + s->is_ok = save_vendor( s->be, term_p ); + } } static gboolean write_vendors( GncSqlBackend* be ) { - write_objects_t data; + write_objects_t data; - g_return_val_if_fail( be != NULL, FALSE ); + g_return_val_if_fail( be != NULL, FALSE ); - data.be = be; - data.is_ok = TRUE; + data.be = be; + data.is_ok = TRUE; qof_object_foreach( GNC_ID_VENDOR, be->primary_book, write_single_vendor, &data ); - return data.is_ok; + return data.is_ok; } /* ================================================================= */ @@ -248,8 +271,8 @@ gnc_vendor_sql_initialize( void ) save_vendor, /* commit */ load_all_vendors, /* initial_load */ create_vendor_tables, /* create_tables */ - NULL, NULL, NULL, - write_vendors /* write */ + NULL, NULL, NULL, + write_vendors /* write */ }; qof_object_register_backend( GNC_ID_VENDOR, GNC_SQL_BACKEND, &be_data ); diff --git a/src/business/business-core/test/test-address.c b/src/business/business-core/test/test-address.c index 8e1cf6ddbc..27899df951 100644 --- a/src/business/business-core/test/test-address.c +++ b/src/business/business-core/test/test-address.c @@ -1,7 +1,7 @@ /********************************************************************* * test-address.c * object definition/initialization for Address - * + * * Copyright (c) 2001 Derek Atkins * Copyright (c) 2005 Neil Williams * @@ -32,67 +32,68 @@ static void test_string_fcn (GncAddress *address, const char *message, - void (*set) (GncAddress *, const char *str), - const char * (*get)(const GncAddress *)); + void (*set) (GncAddress *, const char *str), + const char * (*get)(const GncAddress *)); static void test_address (void) { - QofInstance *ent; - GncAddress *address; - QofBook *book = qof_book_new (); + QofInstance *ent; + GncAddress *address; + QofBook *book = qof_book_new (); - ent = g_object_new(QOF_TYPE_INSTANCE, "guid", guid_null(), NULL); - ent->e_type = "asdf"; + ent = g_object_new(QOF_TYPE_INSTANCE, "guid", guid_null(), NULL); + ent->e_type = "asdf"; - /* Test creation/destruction */ - { - do_test (gncAddressCreate (NULL, NULL) == NULL, "address create NULL"); + /* Test creation/destruction */ + { + do_test (gncAddressCreate (NULL, NULL) == NULL, "address create NULL"); - address = gncAddressCreate (book, ent); - do_test (address != NULL, "address create"); + address = gncAddressCreate (book, ent); + do_test (address != NULL, "address create"); - gncAddressBeginEdit (address); - gncAddressDestroy (address); - success ("create/destroy"); - } + gncAddressBeginEdit (address); + gncAddressDestroy (address); + success ("create/destroy"); + } - /* Test setting routines */ - { - address = gncAddressCreate (book, ent); - test_string_fcn (address, "Name", gncAddressSetName, gncAddressGetName); - test_string_fcn (address, "Addr1", gncAddressSetAddr1, gncAddressGetAddr1); - test_string_fcn (address, "Addr2", gncAddressSetAddr2, gncAddressGetAddr2); - test_string_fcn (address, "Addr3", gncAddressSetAddr3, gncAddressGetAddr3); - test_string_fcn (address, "Addr4", gncAddressSetAddr4, gncAddressGetAddr4); - test_string_fcn (address, "Phone", gncAddressSetPhone, gncAddressGetPhone); - test_string_fcn (address, "Fax", gncAddressSetFax, gncAddressGetFax); - test_string_fcn (address, "Email", gncAddressSetEmail, gncAddressGetEmail); - } + /* Test setting routines */ + { + address = gncAddressCreate (book, ent); + test_string_fcn (address, "Name", gncAddressSetName, gncAddressGetName); + test_string_fcn (address, "Addr1", gncAddressSetAddr1, gncAddressGetAddr1); + test_string_fcn (address, "Addr2", gncAddressSetAddr2, gncAddressGetAddr2); + test_string_fcn (address, "Addr3", gncAddressSetAddr3, gncAddressGetAddr3); + test_string_fcn (address, "Addr4", gncAddressSetAddr4, gncAddressGetAddr4); + test_string_fcn (address, "Phone", gncAddressSetPhone, gncAddressGetPhone); + test_string_fcn (address, "Fax", gncAddressSetFax, gncAddressGetFax); + test_string_fcn (address, "Email", gncAddressSetEmail, gncAddressGetEmail); + } } static void test_string_fcn (GncAddress *address, const char *message, - void (*set) (GncAddress *, const char *str), - const char * (*get)(const GncAddress *)) + void (*set) (GncAddress *, const char *str), + const char * (*get)(const GncAddress *)) { - char const *str = get_random_string (); + char const *str = get_random_string (); - do_test (!gncAddressIsDirty (address), "test if start dirty"); - set (address, str); - do_test (gncAddressIsDirty (address), "test dirty later"); - do_test (safe_strcmp (get (address), str) == 0, message); - gncAddressClearDirty (address); + do_test (!gncAddressIsDirty (address), "test if start dirty"); + set (address, str); + do_test (gncAddressIsDirty (address), "test dirty later"); + do_test (safe_strcmp (get (address), str) == 0, message); + gncAddressClearDirty (address); } int main (int argc, char **argv) { - qof_init(); - if(cashobjects_register()) { - test_address(); - print_test_results(); - } - qof_close(); - return 0; + qof_init(); + if (cashobjects_register()) + { + test_address(); + print_test_results(); + } + qof_close(); + return 0; } diff --git a/src/business/business-core/test/test-business.c b/src/business/business-core/test/test-business.c index 69827f58ed..766382b481 100644 --- a/src/business/business-core/test/test-business.c +++ b/src/business/business-core/test/test-business.c @@ -1,7 +1,7 @@ /********************************************************************* * test-business.c * Test the business code. - * + * * Copyright (c) 2001 Derek Atkins * * This program is free software; you can redistribute it and/or @@ -42,96 +42,97 @@ static const char * printable (gpointer obj); static void test_printable (const char *name, gpointer obj); static void test_get_list (QofBook *, const char *); -static GncBusinessObject bus_obj = { - GNC_BUSINESS_VERSION, - TEST_MODULE_NAME, - TEST_MODULE_DESC, - NULL, /* create */ - NULL, /* destroy */ - get_list, - printable, +static GncBusinessObject bus_obj = +{ + GNC_BUSINESS_VERSION, + TEST_MODULE_NAME, + TEST_MODULE_DESC, + NULL, /* create */ + NULL, /* destroy */ + get_list, + printable, }; static void test_business (void) { - /* Test the global registration and lookup functions */ - { - do_test (!gncBusinessRegister (NULL), "register NULL"); - do_test (gncBusinessRegister (&bus_obj), "register test object"); - do_test (!gncBusinessRegister (&bus_obj), "register test object again"); - do_test (gncBusinessLookup (TEST_MODULE_NAME) == &bus_obj, - "lookup our installed object"); - do_test (gncBusinessLookup ("snm98sn snml say dyikh9y9ha") == NULL, - "lookup non-existant business object"); + /* Test the global registration and lookup functions */ + { + do_test (!gncBusinessRegister (NULL), "register NULL"); + do_test (gncBusinessRegister (&bus_obj), "register test object"); + do_test (!gncBusinessRegister (&bus_obj), "register test object again"); + do_test (gncBusinessLookup (TEST_MODULE_NAME) == &bus_obj, + "lookup our installed object"); + do_test (gncBusinessLookup ("snm98sn snml say dyikh9y9ha") == NULL, + "lookup non-existant business object"); - do_test (!safe_strcmp (gncBusinessGetTypeLabel (TEST_MODULE_NAME), - _(TEST_MODULE_DESC)), - "test description return"); - } + do_test (!safe_strcmp (gncBusinessGetTypeLabel (TEST_MODULE_NAME), + _(TEST_MODULE_DESC)), + "test description return"); + } - test_get_list ((QofBook*)1, TEST_MODULE_NAME); - test_printable (TEST_MODULE_NAME, (gpointer)1); + test_get_list ((QofBook*)1, TEST_MODULE_NAME); + test_printable (TEST_MODULE_NAME, (gpointer)1); } static GList * get_list (QofBook *book, gboolean show_all) { - do_test (book != NULL, "get_list: NULL business"); - success ("called get_list callback"); - return ((GList *)1); + do_test (book != NULL, "get_list: NULL business"); + success ("called get_list callback"); + return ((GList *)1); } static const char * printable (gpointer obj) { - do_test (obj != NULL, "printable: object is NULL"); - success ("called printable callback"); - return ((const char *)obj); + do_test (obj != NULL, "printable: object is NULL"); + success ("called printable callback"); + return ((const char *)obj); } static void test_get_list (QofBook *book, const char *name) { - GList *res; + GList *res; - do_test (gncBusinessGetList (NULL, NULL, FALSE) == NULL, - "business: GetList: NULL, NULL, FALSE"); - do_test (gncBusinessGetList (NULL, name, FALSE) == NULL, - "business: GetList: NULL, mod_name, FALSE"); - do_test (gncBusinessGetList (book, NULL, FALSE) == NULL, - "business: GetList: book, NULL, FALSE"); - res = gncBusinessGetList (book, name, FALSE); - do_test (res != NULL, "business: GetList: book, mod_name, FALSE"); + do_test (gncBusinessGetList (NULL, NULL, FALSE) == NULL, + "business: GetList: NULL, NULL, FALSE"); + do_test (gncBusinessGetList (NULL, name, FALSE) == NULL, + "business: GetList: NULL, mod_name, FALSE"); + do_test (gncBusinessGetList (book, NULL, FALSE) == NULL, + "business: GetList: book, NULL, FALSE"); + res = gncBusinessGetList (book, name, FALSE); + do_test (res != NULL, "business: GetList: book, mod_name, FALSE"); } static void test_printable (const char *name, gpointer obj) { - const char *res; + const char *res; - do_test (gncBusinessPrintable (NULL, NULL) == NULL, - "business: Printable: NULL, NULL"); - do_test (gncBusinessPrintable (NULL, obj) == NULL, - "business: Printable: NULL, object"); - do_test (gncBusinessPrintable (name, NULL) == NULL, - "business: Printable: mod_name, NULL"); - res = gncBusinessPrintable (name, obj); - do_test (res != NULL, "business: Printable: mod_name, object"); + do_test (gncBusinessPrintable (NULL, NULL) == NULL, + "business: Printable: NULL, NULL"); + do_test (gncBusinessPrintable (NULL, obj) == NULL, + "business: Printable: NULL, object"); + do_test (gncBusinessPrintable (name, NULL) == NULL, + "business: Printable: mod_name, NULL"); + res = gncBusinessPrintable (name, obj); + do_test (res != NULL, "business: Printable: mod_name, object"); } static void main_helper (void *closure, int argc, char **argv) { - gnc_module_load("gnucash/business-core", 0); - test_business(); - print_test_results(); - exit(get_rv()); + gnc_module_load("gnucash/business-core", 0); + test_business(); + print_test_results(); + exit(get_rv()); } #endif int main (int argc, char **argv) { - // scm_boot_guile (argc, argv, main_helper, NULL); - return 0; + // scm_boot_guile (argc, argv, main_helper, NULL); + return 0; } diff --git a/src/business/business-core/test/test-customer.c b/src/business/business-core/test/test-customer.c index e7e57d3caa..ed2a044dfd 100644 --- a/src/business/business-core/test/test-customer.c +++ b/src/business/business-core/test/test-customer.c @@ -1,7 +1,7 @@ /********************************************************************* * test-customer.c * Test the customer object (without Guile/Scheme) - * + * * Copyright (c) 2001 Derek Atkins * Copyright (c) 2005 Neil Williams * @@ -37,184 +37,185 @@ static int count = 0; static void test_string_fcn (QofBook *book, const char *message, - void (*set) (GncCustomer *, const char *str), - const char * (*get)(const GncCustomer *)); + void (*set) (GncCustomer *, const char *str), + const char * (*get)(const GncCustomer *)); static void test_numeric_fcn (QofBook *book, const char *message, - void (*set) (GncCustomer *, gnc_numeric), - gnc_numeric (*get)(const GncCustomer *)); + void (*set) (GncCustomer *, gnc_numeric), + gnc_numeric (*get)(const GncCustomer *)); static void test_bool_fcn (QofBook *book, const char *message, - void (*set) (GncCustomer *, gboolean), - gboolean (*get) (const GncCustomer *)); + void (*set) (GncCustomer *, gboolean), + gboolean (*get) (const GncCustomer *)); static void test_customer (void) { - QofBackend *be; - QofSession *session; - QofBook *book; - GncCustomer *customer; + QofBackend *be; + QofSession *session; + QofBook *book; + GncCustomer *customer; - session = qof_session_new(); - be = NULL; - qof_session_begin(session, QOF_STDOUT, FALSE, FALSE); - book = qof_session_get_book(session); - be = qof_book_get_backend(book); + session = qof_session_new(); + be = NULL; + qof_session_begin(session, QOF_STDOUT, FALSE, FALSE); + book = qof_session_get_book(session); + be = qof_book_get_backend(book); - /* The book *must* have a backend to pass the test of the 'dirty' flag - so use a session to use the default QSF. However, until the SQL backend can be used, - entities remain dirty until the session is saved or closed. */ - do_test (be != NULL, "qsf backend could not be set"); + /* The book *must* have a backend to pass the test of the 'dirty' flag + so use a session to use the default QSF. However, until the SQL backend can be used, + entities remain dirty until the session is saved or closed. */ + do_test (be != NULL, "qsf backend could not be set"); - /* Test creation/destruction */ - { - do_test (gncCustomerCreate (NULL) == NULL, "customer create NULL"); - customer = gncCustomerCreate (book); - do_test (customer != NULL, "customer create"); - do_test (gncCustomerGetBook (customer) == book, "getbook"); + /* Test creation/destruction */ + { + do_test (gncCustomerCreate (NULL) == NULL, "customer create NULL"); + customer = gncCustomerCreate (book); + do_test (customer != NULL, "customer create"); + do_test (gncCustomerGetBook (customer) == book, "getbook"); - gncCustomerBeginEdit (customer); - gncCustomerDestroy (customer); - success ("create/destroy"); - } + gncCustomerBeginEdit (customer); + gncCustomerDestroy (customer); + success ("create/destroy"); + } - /* Test setting/getting routines; does the active flag get set right? */ - { - GUID guid; + /* Test setting/getting routines; does the active flag get set right? */ + { + GUID guid; - test_string_fcn (book, "Id", gncCustomerSetID, gncCustomerGetID); - test_string_fcn (book, "Name", gncCustomerSetName, gncCustomerGetName); - test_string_fcn (book, "Notes", gncCustomerSetNotes, gncCustomerGetNotes); + test_string_fcn (book, "Id", gncCustomerSetID, gncCustomerGetID); + test_string_fcn (book, "Name", gncCustomerSetName, gncCustomerGetName); + test_string_fcn (book, "Notes", gncCustomerSetNotes, gncCustomerGetNotes); - //test_string_fcn (book, "Terms", gncCustomerSetTerms, gncCustomerGetTerms); + //test_string_fcn (book, "Terms", gncCustomerSetTerms, gncCustomerGetTerms); - test_numeric_fcn (book, "Discount", gncCustomerSetDiscount, gncCustomerGetDiscount); - test_numeric_fcn (book, "Credit", gncCustomerSetCredit, gncCustomerGetCredit); + test_numeric_fcn (book, "Discount", gncCustomerSetDiscount, gncCustomerGetDiscount); + test_numeric_fcn (book, "Credit", gncCustomerSetCredit, gncCustomerGetCredit); - test_bool_fcn (book, "Active", gncCustomerSetActive, gncCustomerGetActive); + test_bool_fcn (book, "Active", gncCustomerSetActive, gncCustomerGetActive); - do_test (gncCustomerGetAddr (customer) != NULL, "Addr"); - do_test (gncCustomerGetShipAddr (customer) != NULL, "ShipAddr"); + do_test (gncCustomerGetAddr (customer) != NULL, "Addr"); + do_test (gncCustomerGetShipAddr (customer) != NULL, "ShipAddr"); - guid_new (&guid); - customer = gncCustomerCreate (book); count++; - gncCustomerSetGUID (customer, &guid); - do_test (guid_equal (&guid, gncCustomerGetGUID (customer)), "guid compare"); - } + guid_new (&guid); + customer = gncCustomerCreate (book); + count++; + gncCustomerSetGUID (customer, &guid); + do_test (guid_equal (&guid, gncCustomerGetGUID (customer)), "guid compare"); + } #if 0 - { - GList *list; + { + GList *list; - list = gncBusinessGetList (book, GNC_ID_CUSTOMER, TRUE); - do_test (list != NULL, "getList all"); - do_test (g_list_length (list) == count, "correct length: all"); - g_list_free (list); + list = gncBusinessGetList (book, GNC_ID_CUSTOMER, TRUE); + do_test (list != NULL, "getList all"); + do_test (g_list_length (list) == count, "correct length: all"); + g_list_free (list); - list = gncBusinessGetList (book, GNC_ID_CUSTOMER, FALSE); - do_test (list != NULL, "getList active"); - do_test (g_list_length (list) == 1, "correct length: active"); - g_list_free (list); - } + list = gncBusinessGetList (book, GNC_ID_CUSTOMER, FALSE); + do_test (list != NULL, "getList active"); + do_test (g_list_length (list) == 1, "correct length: active"); + g_list_free (list); + } #endif - { - const char *str = get_random_string(); - const char *res; + { + const char *str = get_random_string(); + const char *res; - res = NULL; - gncCustomerBeginEdit(customer); - gncCustomerSetName (customer, str); - gncCustomerCommitEdit(customer); - res = qof_object_printable (GNC_ID_CUSTOMER, customer); - do_test (res != NULL, "Printable NULL?"); - do_test (safe_strcmp (str, res) == 0, "Printable equals"); - } + res = NULL; + gncCustomerBeginEdit(customer); + gncCustomerSetName (customer, str); + gncCustomerCommitEdit(customer); + res = qof_object_printable (GNC_ID_CUSTOMER, customer); + do_test (res != NULL, "Printable NULL?"); + do_test (safe_strcmp (str, res) == 0, "Printable equals"); + } - do_test (gncCustomerGetJoblist (customer, TRUE) == NULL, "joblist empty"); + do_test (gncCustomerGetJoblist (customer, TRUE) == NULL, "joblist empty"); - /* Test the Entity Table */ - { - const GUID *guid; + /* Test the Entity Table */ + { + const GUID *guid; - guid = gncCustomerGetGUID (customer); - do_test (gncCustomerLookup (book, guid) == customer, "Entity Table"); - } + guid = gncCustomerGetGUID (customer); + do_test (gncCustomerLookup (book, guid) == customer, "Entity Table"); + } - /* Note: JobList is tested from the Job tests */ - qof_session_end(session); + /* Note: JobList is tested from the Job tests */ + qof_session_end(session); } static void test_string_fcn (QofBook *book, const char *message, - void (*set) (GncCustomer *, const char *str), - const char * (*get)(const GncCustomer *)) + void (*set) (GncCustomer *, const char *str), + const char * (*get)(const GncCustomer *)) { - GncCustomer *customer = gncCustomerCreate (book); - char const *str = get_random_string (); + GncCustomer *customer = gncCustomerCreate (book); + char const *str = get_random_string (); - do_test (!gncCustomerIsDirty (customer), "test if start dirty"); - gncCustomerBeginEdit (customer); - set (customer, str); - do_test (gncCustomerIsDirty (customer), "test dirty later"); - gncCustomerCommitEdit (customer); - do_test (gncCustomerIsDirty (customer), "test dirty after commit"); - do_test (safe_strcmp (get (customer), str) == 0, message); - gncCustomerSetActive (customer, FALSE); - count++; + do_test (!gncCustomerIsDirty (customer), "test if start dirty"); + gncCustomerBeginEdit (customer); + set (customer, str); + do_test (gncCustomerIsDirty (customer), "test dirty later"); + gncCustomerCommitEdit (customer); + do_test (gncCustomerIsDirty (customer), "test dirty after commit"); + do_test (safe_strcmp (get (customer), str) == 0, message); + gncCustomerSetActive (customer, FALSE); + count++; } static void test_numeric_fcn (QofBook *book, const char *message, - void (*set) (GncCustomer *, gnc_numeric), - gnc_numeric (*get)(const GncCustomer *)) + void (*set) (GncCustomer *, gnc_numeric), + gnc_numeric (*get)(const GncCustomer *)) { - GncCustomer *customer = gncCustomerCreate (book); - gnc_numeric num = gnc_numeric_create (17, 1); + GncCustomer *customer = gncCustomerCreate (book); + gnc_numeric num = gnc_numeric_create (17, 1); - do_test (!gncCustomerIsDirty (customer), "test if start dirty"); - gncCustomerBeginEdit (customer); - set (customer, num); - do_test (gncCustomerIsDirty (customer), "test dirty later"); - gncCustomerCommitEdit (customer); - do_test (gncCustomerIsDirty (customer), "test dirty after commit"); - do_test (gnc_numeric_equal (get (customer), num), message); - gncCustomerSetActive (customer, FALSE); - count++; + do_test (!gncCustomerIsDirty (customer), "test if start dirty"); + gncCustomerBeginEdit (customer); + set (customer, num); + do_test (gncCustomerIsDirty (customer), "test dirty later"); + gncCustomerCommitEdit (customer); + do_test (gncCustomerIsDirty (customer), "test dirty after commit"); + do_test (gnc_numeric_equal (get (customer), num), message); + gncCustomerSetActive (customer, FALSE); + count++; } static void test_bool_fcn (QofBook *book, const char *message, - void (*set) (GncCustomer *, gboolean), - gboolean (*get) (const GncCustomer *)) + void (*set) (GncCustomer *, gboolean), + gboolean (*get) (const GncCustomer *)) { - GncCustomer *customer = gncCustomerCreate (book); - gboolean num = get_random_boolean (); + GncCustomer *customer = gncCustomerCreate (book); + gboolean num = get_random_boolean (); - do_test (!gncCustomerIsDirty (customer), "test if start dirty"); - gncCustomerBeginEdit (customer); - set (customer, FALSE); - set (customer, TRUE); - set (customer, num); - do_test (gncCustomerIsDirty (customer), "test dirty later"); - gncCustomerCommitEdit (customer); - do_test (gncCustomerIsDirty (customer), "test dirty after commit"); - do_test (get (customer) == num, message); - gncCustomerSetActive (customer, FALSE); - count++; + do_test (!gncCustomerIsDirty (customer), "test if start dirty"); + gncCustomerBeginEdit (customer); + set (customer, FALSE); + set (customer, TRUE); + set (customer, num); + do_test (gncCustomerIsDirty (customer), "test dirty later"); + gncCustomerCommitEdit (customer); + do_test (gncCustomerIsDirty (customer), "test dirty after commit"); + do_test (get (customer) == num, message); + gncCustomerSetActive (customer, FALSE); + count++; } int main (int argc, char **argv) { - qof_init(); - do_test (cashobjects_register(), "Cannot register cash objects"); - do_test (gncInvoiceRegister(), "Cannot register GncInvoice"); - do_test (gncJobRegister (), "Cannot register GncJob"); - do_test (gncCustomerRegister(), "Cannot register GncCustomer"); - test_customer(); - print_test_results(); - qof_close (); - return 0; + qof_init(); + do_test (cashobjects_register(), "Cannot register cash objects"); + do_test (gncInvoiceRegister(), "Cannot register GncInvoice"); + do_test (gncJobRegister (), "Cannot register GncJob"); + do_test (gncCustomerRegister(), "Cannot register GncCustomer"); + test_customer(); + print_test_results(); + qof_close (); + return 0; } diff --git a/src/business/business-core/test/test-employee.c b/src/business/business-core/test/test-employee.c index 2d0ec67da7..b18d42f2c5 100644 --- a/src/business/business-core/test/test-employee.c +++ b/src/business/business-core/test/test-employee.c @@ -1,7 +1,7 @@ /********************************************************************* * test-employee.c * Test the employee object (without Guile). - * + * * Copyright (c) 2001 Derek Atkins * Copyright (c) 2005 Neil Williams * @@ -37,194 +37,195 @@ static int count = 0; static void test_string_fcn (QofBook *book, const char *message, - void (*set) (GncEmployee *, const char *str), - const char * (*get)(const GncEmployee *)); + void (*set) (GncEmployee *, const char *str), + const char * (*get)(const GncEmployee *)); static void test_numeric_fcn (QofBook *book, const char *message, - void (*set) (GncEmployee *, gnc_numeric), - gnc_numeric (*get)(const GncEmployee *)); + void (*set) (GncEmployee *, gnc_numeric), + gnc_numeric (*get)(const GncEmployee *)); static void test_bool_fcn (QofBook *book, const char *message, - void (*set) (GncEmployee *, gboolean), - gboolean (*get) (const GncEmployee *)); + void (*set) (GncEmployee *, gboolean), + gboolean (*get) (const GncEmployee *)); #if 0 static void test_gint_fcn (QofBook *book, const char *message, - void (*set) (GncEmployee *, gint), - gint (*get) (GncEmployee *)); + void (*set) (GncEmployee *, gint), + gint (*get) (GncEmployee *)); #endif static void test_employee (void) { - QofBackend *be; - QofBook *book; - QofSession *session; - GncEmployee *employee; + QofBackend *be; + QofBook *book; + QofSession *session; + GncEmployee *employee; - session = qof_session_new(); - qof_session_begin(session, QOF_STDOUT, FALSE, FALSE); - book = qof_session_get_book(session); - /* The book *must* have a backend to pass the test of the 'dirty' flag */ - /* See the README file for details */ - - be = qof_book_get_backend (book); + session = qof_session_new(); + qof_session_begin(session, QOF_STDOUT, FALSE, FALSE); + book = qof_session_get_book(session); + /* The book *must* have a backend to pass the test of the 'dirty' flag */ + /* See the README file for details */ - /* Test creation/destruction */ - { - do_test (gncEmployeeCreate (NULL) == NULL, "employee create NULL"); - employee = gncEmployeeCreate (book); - do_test (employee != NULL, "employee create"); - do_test (qof_instance_get_book(QOF_INSTANCE(employee)) == book, - "getbook"); + be = qof_book_get_backend (book); - gncEmployeeBeginEdit (employee); - gncEmployeeDestroy (employee); - success ("create/destroy"); - } + /* Test creation/destruction */ + { + do_test (gncEmployeeCreate (NULL) == NULL, "employee create NULL"); + employee = gncEmployeeCreate (book); + do_test (employee != NULL, "employee create"); + do_test (qof_instance_get_book(QOF_INSTANCE(employee)) == book, + "getbook"); - /* Test setting/getting routines; does the active flag get set right? */ - { - GUID guid; + gncEmployeeBeginEdit (employee); + gncEmployeeDestroy (employee); + success ("create/destroy"); + } - test_string_fcn (book, "Id", gncEmployeeSetID, gncEmployeeGetID); - test_string_fcn (book, "Username", gncEmployeeSetUsername, gncEmployeeGetUsername); - test_string_fcn (book, "Language", gncEmployeeSetLanguage, gncEmployeeGetLanguage); - test_string_fcn (book, "Acl", gncEmployeeSetAcl, gncEmployeeGetAcl); + /* Test setting/getting routines; does the active flag get set right? */ + { + GUID guid; - test_numeric_fcn (book, "Workday", gncEmployeeSetWorkday, gncEmployeeGetWorkday); - test_numeric_fcn (book, "Rate", gncEmployeeSetRate, gncEmployeeGetRate); + test_string_fcn (book, "Id", gncEmployeeSetID, gncEmployeeGetID); + test_string_fcn (book, "Username", gncEmployeeSetUsername, gncEmployeeGetUsername); + test_string_fcn (book, "Language", gncEmployeeSetLanguage, gncEmployeeGetLanguage); + test_string_fcn (book, "Acl", gncEmployeeSetAcl, gncEmployeeGetAcl); - test_bool_fcn (book, "Active", gncEmployeeSetActive, gncEmployeeGetActive); + test_numeric_fcn (book, "Workday", gncEmployeeSetWorkday, gncEmployeeGetWorkday); + test_numeric_fcn (book, "Rate", gncEmployeeSetRate, gncEmployeeGetRate); - do_test (gncEmployeeGetAddr (employee) != NULL, "Addr"); + test_bool_fcn (book, "Active", gncEmployeeSetActive, gncEmployeeGetActive); - guid_new (&guid); - employee = gncEmployeeCreate (book); count++; - gncEmployeeSetGUID (employee, &guid); - do_test (guid_equal (&guid, qof_instance_get_guid(QOF_INSTANCE(employee))), "guid compare"); - } + do_test (gncEmployeeGetAddr (employee) != NULL, "Addr"); + + guid_new (&guid); + employee = gncEmployeeCreate (book); + count++; + gncEmployeeSetGUID (employee, &guid); + do_test (guid_equal (&guid, qof_instance_get_guid(QOF_INSTANCE(employee))), "guid compare"); + } #if 0 - { - GList *list; + { + GList *list; - list = gncBusinessGetList (book, GNC_EMPLOYEE_MODULE_NAME, TRUE); - do_test (list != NULL, "getList all"); - do_test (g_list_length (list) == count, "correct length: all"); - g_list_free (list); + list = gncBusinessGetList (book, GNC_EMPLOYEE_MODULE_NAME, TRUE); + do_test (list != NULL, "getList all"); + do_test (g_list_length (list) == count, "correct length: all"); + g_list_free (list); - list = gncBusinessGetList (book, GNC_EMPLOYEE_MODULE_NAME, FALSE); - do_test (list != NULL, "getList active"); - do_test (g_list_length (list) == 1, "correct length: active"); - g_list_free (list); - } + list = gncBusinessGetList (book, GNC_EMPLOYEE_MODULE_NAME, FALSE); + do_test (list != NULL, "getList active"); + do_test (g_list_length (list) == 1, "correct length: active"); + g_list_free (list); + } #endif - { - const char *str = get_random_string(); - const char *res; - GncAddress *addr; + { + const char *str = get_random_string(); + const char *res; + GncAddress *addr; - addr = gncEmployeeGetAddr (employee); - gncAddressSetName (addr, str); - res = qof_object_printable (GNC_ID_EMPLOYEE, employee); - do_test (res != NULL, "Printable NULL?"); - do_test (safe_strcmp (str, res) == 0, "Printable equals"); - } + addr = gncEmployeeGetAddr (employee); + gncAddressSetName (addr, str); + res = qof_object_printable (GNC_ID_EMPLOYEE, employee); + do_test (res != NULL, "Printable NULL?"); + do_test (safe_strcmp (str, res) == 0, "Printable equals"); + } } static void test_string_fcn (QofBook *book, const char *message, - void (*set) (GncEmployee *, const char *str), - const char * (*get)(const GncEmployee *)) + void (*set) (GncEmployee *, const char *str), + const char * (*get)(const GncEmployee *)) { - GncEmployee *employee = gncEmployeeCreate (book); - char const *str = get_random_string (); + GncEmployee *employee = gncEmployeeCreate (book); + char const *str = get_random_string (); - do_test (!gncEmployeeIsDirty (employee), "test if start dirty"); - gncEmployeeBeginEdit (employee); - set (employee, str); - do_test (gncEmployeeIsDirty (employee), "test dirty later"); - gncEmployeeCommitEdit (employee); - do_test (gncEmployeeIsDirty (employee), "test dirty after commit"); - do_test (safe_strcmp (get (employee), str) == 0, message); - gncEmployeeSetActive (employee, FALSE); - count++; + do_test (!gncEmployeeIsDirty (employee), "test if start dirty"); + gncEmployeeBeginEdit (employee); + set (employee, str); + do_test (gncEmployeeIsDirty (employee), "test dirty later"); + gncEmployeeCommitEdit (employee); + do_test (gncEmployeeIsDirty (employee), "test dirty after commit"); + do_test (safe_strcmp (get (employee), str) == 0, message); + gncEmployeeSetActive (employee, FALSE); + count++; } static void test_numeric_fcn (QofBook *book, const char *message, - void (*set) (GncEmployee *, gnc_numeric), - gnc_numeric (*get)(const GncEmployee *)) + void (*set) (GncEmployee *, gnc_numeric), + gnc_numeric (*get)(const GncEmployee *)) { - GncEmployee *employee = gncEmployeeCreate (book); - gnc_numeric num = gnc_numeric_create (17, 1); + GncEmployee *employee = gncEmployeeCreate (book); + gnc_numeric num = gnc_numeric_create (17, 1); - do_test (!gncEmployeeIsDirty (employee), "test if start dirty"); - gncEmployeeBeginEdit (employee); - set (employee, num); - do_test (gncEmployeeIsDirty (employee), "test dirty later"); - gncEmployeeCommitEdit (employee); - do_test (gncEmployeeIsDirty (employee), "test dirty after commit"); - do_test (gnc_numeric_equal (get (employee), num), message); - gncEmployeeSetActive (employee, FALSE); - count++; + do_test (!gncEmployeeIsDirty (employee), "test if start dirty"); + gncEmployeeBeginEdit (employee); + set (employee, num); + do_test (gncEmployeeIsDirty (employee), "test dirty later"); + gncEmployeeCommitEdit (employee); + do_test (gncEmployeeIsDirty (employee), "test dirty after commit"); + do_test (gnc_numeric_equal (get (employee), num), message); + gncEmployeeSetActive (employee, FALSE); + count++; } static void test_bool_fcn (QofBook *book, const char *message, - void (*set) (GncEmployee *, gboolean), - gboolean (*get) (const GncEmployee *)) + void (*set) (GncEmployee *, gboolean), + gboolean (*get) (const GncEmployee *)) { - GncEmployee *employee = gncEmployeeCreate (book); - gboolean num = get_random_boolean (); + GncEmployee *employee = gncEmployeeCreate (book); + gboolean num = get_random_boolean (); - do_test (!gncEmployeeIsDirty (employee), "test if start dirty"); - gncEmployeeBeginEdit (employee); - set (employee, FALSE); - set (employee, TRUE); - set (employee, num); - do_test (gncEmployeeIsDirty (employee), "test dirty later"); - gncEmployeeCommitEdit (employee); - do_test (gncEmployeeIsDirty (employee), "test dirty after commit"); - do_test (get (employee) == num, message); - gncEmployeeSetActive (employee, FALSE); - count++; + do_test (!gncEmployeeIsDirty (employee), "test if start dirty"); + gncEmployeeBeginEdit (employee); + set (employee, FALSE); + set (employee, TRUE); + set (employee, num); + do_test (gncEmployeeIsDirty (employee), "test dirty later"); + gncEmployeeCommitEdit (employee); + do_test (gncEmployeeIsDirty (employee), "test dirty after commit"); + do_test (get (employee) == num, message); + gncEmployeeSetActive (employee, FALSE); + count++; } #if 0 static void test_gint_fcn (QofBook *book, const char *message, - void (*set) (GncEmployee *, gint), - gint (*get) (GncEmployee *)) + void (*set) (GncEmployee *, gint), + gint (*get) (GncEmployee *)) { - GncEmployee *employee = gncEmployeeCreate (book); - gint num = 17; + GncEmployee *employee = gncEmployeeCreate (book); + gint num = 17; - do_test (!gncEmployeeIsDirty (employee), "test if start dirty"); - gncEmployeeBeginEdit (employee); - set (employee, num); - do_test (gncEmployeeIsDirty (employee), "test dirty later"); - gncEmployeeCommitEdit (employee); - do_test (!gncEmployeeIsDirty (employee), "test dirty after commit"); - do_test (get (employee) == num, message); - gncEmployeeSetActive (employee, FALSE); - count++; + do_test (!gncEmployeeIsDirty (employee), "test if start dirty"); + gncEmployeeBeginEdit (employee); + set (employee, num); + do_test (gncEmployeeIsDirty (employee), "test dirty later"); + gncEmployeeCommitEdit (employee); + do_test (!gncEmployeeIsDirty (employee), "test dirty after commit"); + do_test (get (employee) == num, message); + gncEmployeeSetActive (employee, FALSE); + count++; } #endif int main (int argc, char **argv) -{ - qof_init(); - do_test (gncInvoiceRegister(), "Cannot register GncInvoice"); - do_test (gncJobRegister (), "Cannot register GncJob"); - do_test (gncCustomerRegister(), "Cannot register GncCustomer"); - do_test (gncEmployeeRegister(), "Cannot register GncEmployee"); - test_employee(); - print_test_results(); - qof_close(); - return 0; +{ + qof_init(); + do_test (gncInvoiceRegister(), "Cannot register GncInvoice"); + do_test (gncJobRegister (), "Cannot register GncJob"); + do_test (gncCustomerRegister(), "Cannot register GncCustomer"); + do_test (gncEmployeeRegister(), "Cannot register GncEmployee"); + test_employee(); + print_test_results(); + qof_close(); + return 0; } diff --git a/src/business/business-core/test/test-job.c b/src/business/business-core/test/test-job.c index 8401ae0be0..4f2b148dd5 100644 --- a/src/business/business-core/test/test-job.c +++ b/src/business/business-core/test/test-job.c @@ -1,7 +1,7 @@ /********************************************************************* * test-job.c * Test the job object. - * + * * Copyright (c) 2001 Derek Atkins * Copyright (c) 2005 Neil Williams * @@ -37,211 +37,216 @@ static int count = 0; static void test_string_fcn (QofBook *book, const char *message, - void (*set) (GncJob *, const char *str), - const char * (*get)(const GncJob *)); + void (*set) (GncJob *, const char *str), + const char * (*get)(const GncJob *)); #if 0 static void test_numeric_fcn (QofBook *book, const char *message, - void (*set) (GncJob *, gnc_numeric), - gnc_numeric (*get)(const GncJob *)); + void (*set) (GncJob *, gnc_numeric), + gnc_numeric (*get)(const GncJob *)); #endif static void test_bool_fcn (QofBook *book, const char *message, - void (*set) (GncJob *, gboolean), - gboolean (*get) (const GncJob *)); + void (*set) (GncJob *, gboolean), + gboolean (*get) (const GncJob *)); #if 0 static void test_gint_fcn (QofBook *book, const char *message, - void (*set) (GncJob *, gint), - gint (*get) (const GncJob *)); + void (*set) (GncJob *, gint), + gint (*get) (const GncJob *)); #endif static void test_job (void) { - QofBackend *be; - QofSession *session; - QofBook *book; - GncJob *job; + QofBackend *be; + QofSession *session; + QofBook *book; + GncJob *job; - session = qof_session_new(); - be = NULL; - qof_session_begin(session, QOF_STDOUT, FALSE, FALSE); - book = qof_session_get_book (session); - be = qof_book_get_backend(book); + session = qof_session_new(); + be = NULL; + qof_session_begin(session, QOF_STDOUT, FALSE, FALSE); + book = qof_session_get_book (session); + be = qof_book_get_backend(book); - /* The book *must* have a backend to pass the test of the 'dirty' flag */ - /* See the README file for details */ - do_test (be != NULL, "qsf backend could not be set"); + /* The book *must* have a backend to pass the test of the 'dirty' flag */ + /* See the README file for details */ + do_test (be != NULL, "qsf backend could not be set"); - /* Test creation/destruction */ - { - do_test (gncJobCreate (NULL) == NULL, "job create NULL"); - job = gncJobCreate (book); - do_test (job != NULL, "job create"); - do_test (qof_instance_get_book(QOF_INSTANCE(job)) == book, - "getbook"); + /* Test creation/destruction */ + { + do_test (gncJobCreate (NULL) == NULL, "job create NULL"); + job = gncJobCreate (book); + do_test (job != NULL, "job create"); + do_test (qof_instance_get_book(QOF_INSTANCE(job)) == book, + "getbook"); - gncJobBeginEdit (job); - gncJobDestroy (job); - success ("create/destroy"); - } + gncJobBeginEdit (job); + gncJobDestroy (job); + success ("create/destroy"); + } - /* Test setting/getting routines; does the active flag get set right? */ - { - GUID guid; + /* Test setting/getting routines; does the active flag get set right? */ + { + GUID guid; - test_string_fcn (book, "Id", gncJobSetID, gncJobGetID); - test_string_fcn (book, "Name", gncJobSetName, gncJobGetName); - test_string_fcn (book, "Reference", gncJobSetReference, gncJobGetReference); + test_string_fcn (book, "Id", gncJobSetID, gncJobGetID); + test_string_fcn (book, "Name", gncJobSetName, gncJobGetName); + test_string_fcn (book, "Reference", gncJobSetReference, gncJobGetReference); - test_bool_fcn (book, "Active", gncJobSetActive, gncJobGetActive); + test_bool_fcn (book, "Active", gncJobSetActive, gncJobGetActive); - guid_new (&guid); - job = gncJobCreate (book); count++; - gncJobSetGUID (job, &guid); - do_test (guid_equal (&guid, qof_instance_get_guid(QOF_INSTANCE(job))), "guid compare"); - } + guid_new (&guid); + job = gncJobCreate (book); + count++; + gncJobSetGUID (job, &guid); + do_test (guid_equal (&guid, qof_instance_get_guid(QOF_INSTANCE(job))), "guid compare"); + } #if 0 - { - GList *list; + { + GList *list; - list = gncBusinessGetList (book, GNC_ID_JOB, TRUE); - do_test (list != NULL, "getList all"); - do_test (g_list_length (list) == count, "correct length: all"); - g_list_free (list); + list = gncBusinessGetList (book, GNC_ID_JOB, TRUE); + do_test (list != NULL, "getList all"); + do_test (g_list_length (list) == count, "correct length: all"); + g_list_free (list); - list = gncBusinessGetList (book, GNC_ID_JOB, FALSE); - do_test (list != NULL, "getList active"); - do_test (g_list_length (list) == 1, "correct length: active"); - g_list_free (list); - } + list = gncBusinessGetList (book, GNC_ID_JOB, FALSE); + do_test (list != NULL, "getList active"); + do_test (g_list_length (list) == 1, "correct length: active"); + g_list_free (list); + } #endif - { - const char *str = get_random_string(); - const char *res; + { + const char *str = get_random_string(); + const char *res; - gncJobSetName (job, str); - res = qof_object_printable (GNC_ID_JOB, job); - do_test (res != NULL, "Printable NULL?"); - do_test (safe_strcmp (str, res) == 0, "Printable equals"); - } - { - GList *list; - GncOwner owner; - GncCustomer *cust = gncCustomerCreate (book); + gncJobSetName (job, str); + res = qof_object_printable (GNC_ID_JOB, job); + do_test (res != NULL, "Printable NULL?"); + do_test (safe_strcmp (str, res) == 0, "Printable equals"); + } + { + GList *list; + GncOwner owner; + GncCustomer *cust = gncCustomerCreate (book); - gncOwnerInitCustomer (&owner, cust); + gncOwnerInitCustomer (&owner, cust); - do_test (gncCustomerGetJoblist (cust, TRUE) == NULL, "empty list at start"); - gncJobSetOwner (job, &owner); - list = gncCustomerGetJoblist (cust, FALSE); - do_test (list != NULL, "added to cust"); - do_test (g_list_length (list) == 1, "correct joblist length"); - do_test (list->data == job, "verify job in list"); - gncJobSetActive (job, FALSE); - list = gncCustomerGetJoblist (cust, FALSE); - do_test (list == NULL, "no active jobs"); - list = gncCustomerGetJoblist (cust, TRUE); - do_test (list != NULL, "all jobs"); - gncJobBeginEdit (job); - gncJobDestroy (job); - list = gncCustomerGetJoblist (cust, TRUE); - do_test (list == NULL, "no more jobs"); - } + do_test (gncCustomerGetJoblist (cust, TRUE) == NULL, "empty list at start"); + gncJobSetOwner (job, &owner); + list = gncCustomerGetJoblist (cust, FALSE); + do_test (list != NULL, "added to cust"); + do_test (g_list_length (list) == 1, "correct joblist length"); + do_test (list->data == job, "verify job in list"); + gncJobSetActive (job, FALSE); + list = gncCustomerGetJoblist (cust, FALSE); + do_test (list == NULL, "no active jobs"); + list = gncCustomerGetJoblist (cust, TRUE); + do_test (list != NULL, "all jobs"); + gncJobBeginEdit (job); + gncJobDestroy (job); + list = gncCustomerGetJoblist (cust, TRUE); + do_test (list == NULL, "no more jobs"); + } } static void test_string_fcn (QofBook *book, const char *message, - void (*set) (GncJob *, const char *str), - const char * (*get)(const GncJob *)) + void (*set) (GncJob *, const char *str), + const char * (*get)(const GncJob *)) { - GncJob *job = gncJobCreate (book); - char const *str = get_random_string (); + GncJob *job = gncJobCreate (book); + char const *str = get_random_string (); - do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test if start dirty"); - gncJobBeginEdit (job); - set (job, str); - do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty later"); - gncJobCommitEdit (job); - do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty after commit"); - do_test (safe_strcmp (get (job), str) == 0, message); - gncJobSetActive (job, FALSE); count++; + do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test if start dirty"); + gncJobBeginEdit (job); + set (job, str); + do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty later"); + gncJobCommitEdit (job); + do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty after commit"); + do_test (safe_strcmp (get (job), str) == 0, message); + gncJobSetActive (job, FALSE); + count++; } #if 0 static void test_numeric_fcn (QofBook *book, const char *message, - void (*set) (GncJob *, gnc_numeric), - gnc_numeric (*get)(const GncJob *)) + void (*set) (GncJob *, gnc_numeric), + gnc_numeric (*get)(const GncJob *)) { - GncJob *job = gncJobCreate (book); - gnc_numeric num = gnc_numeric_create (17, 1); + GncJob *job = gncJobCreate (book); + gnc_numeric num = gnc_numeric_create (17, 1); - do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test if start dirty"); - gncJobBeginEdit (job); - set (job, num); - do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty later"); - gncJobCommitEdit (job); - do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty after commit"); - do_test (gnc_numeric_equal (get (job), num), message); - gncJobSetActive (job, FALSE); count++; + do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test if start dirty"); + gncJobBeginEdit (job); + set (job, num); + do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty later"); + gncJobCommitEdit (job); + do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty after commit"); + do_test (gnc_numeric_equal (get (job), num), message); + gncJobSetActive (job, FALSE); + count++; } #endif static void test_bool_fcn (QofBook *book, const char *message, - void (*set) (GncJob *, gboolean), - gboolean (*get) (const GncJob *)) + void (*set) (GncJob *, gboolean), + gboolean (*get) (const GncJob *)) { - GncJob *job = gncJobCreate (book); - gboolean num = get_random_boolean (); + GncJob *job = gncJobCreate (book); + gboolean num = get_random_boolean (); - do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test if start dirty"); - gncJobBeginEdit (job); - set (job, FALSE); - set (job, TRUE); - set (job, num); - do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty later"); - gncJobCommitEdit (job); - do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty after commit"); - do_test (get (job) == num, message); - gncJobSetActive (job, FALSE); count++; + do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test if start dirty"); + gncJobBeginEdit (job); + set (job, FALSE); + set (job, TRUE); + set (job, num); + do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty later"); + gncJobCommitEdit (job); + do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty after commit"); + do_test (get (job) == num, message); + gncJobSetActive (job, FALSE); + count++; } #if 0 static void test_gint_fcn (QofBook *book, const char *message, - void (*set) (GncJob *, gint), - gint (*get) (const GncJob *)) + void (*set) (GncJob *, gint), + gint (*get) (const GncJob *)) { - GncJob *job = gncJobCreate (book); - gint num = 17; + GncJob *job = gncJobCreate (book); + gint num = 17; - do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test if start dirty"); - gncJobBeginEdit (job); - set (job, num); - do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty later"); - gncJobCommitEdit (job); - do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty after commit"); - do_test (get (job) == num, message); - gncJobSetActive (job, FALSE); count++; + do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test if start dirty"); + gncJobBeginEdit (job); + set (job, num); + do_test (qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty later"); + gncJobCommitEdit (job); + do_test (!qof_instance_is_dirty (QOF_INSTANCE(job)), "test dirty after commit"); + do_test (get (job) == num, message); + gncJobSetActive (job, FALSE); + count++; } #endif int main (int argc, char **argv) { - qof_init(); - do_test (gncInvoiceRegister(), "Cannot register GncInvoice"); - do_test (gncJobRegister (), "Cannot register GncJob"); - do_test (gncCustomerRegister(), "Cannot register GncCustomer"); - test_job(); - print_test_results(); - qof_close(); - return 0; + qof_init(); + do_test (gncInvoiceRegister(), "Cannot register GncInvoice"); + do_test (gncJobRegister (), "Cannot register GncJob"); + do_test (gncCustomerRegister(), "Cannot register GncCustomer"); + test_job(); + print_test_results(); + qof_close(); + return 0; } diff --git a/src/business/business-core/test/test-load-module.c b/src/business/business-core/test/test-load-module.c index 689d9ea425..ee72268195 100644 --- a/src/business/business-core/test/test-load-module.c +++ b/src/business/business-core/test/test-load-module.c @@ -1,6 +1,6 @@ /********************************************************************* * test-load-module.c - * + * * Copyright (c) 2001 Derek Atkins * * This program is free software; you can redistribute it and/or @@ -31,30 +31,32 @@ static void guile_main (void *closure, int argc, char ** argv) { - GNCModule module; + GNCModule module; - printf(" test-load-module.c: loading/unloading business-core module ... "); + printf(" test-load-module.c: loading/unloading business-core module ... "); - gnc_module_system_init(); - module = gnc_module_load("gnucash/business-core", 0); - - if(!module) { - printf(" Failed to load engine\n"); - exit(-1); - } - - if(!gnc_module_unload(module)) { - printf(" Failed to unload engine\n"); - exit(-1); - } - printf(" successful.\n"); + gnc_module_system_init(); + module = gnc_module_load("gnucash/business-core", 0); - exit(0); + if (!module) + { + printf(" Failed to load engine\n"); + exit(-1); + } + + if (!gnc_module_unload(module)) + { + printf(" Failed to unload engine\n"); + exit(-1); + } + printf(" successful.\n"); + + exit(0); } int main (int argc, char ** argv) { - scm_boot_guile(argc, argv, guile_main, NULL); - return 0; + scm_boot_guile(argc, argv, guile_main, NULL); + return 0; } diff --git a/src/business/business-core/test/test-vendor.c b/src/business/business-core/test/test-vendor.c index 7aede94d82..ed41af4830 100644 --- a/src/business/business-core/test/test-vendor.c +++ b/src/business/business-core/test/test-vendor.c @@ -1,7 +1,7 @@ /********************************************************************* * test-vendor.c * Test the vendor object. - * + * * Copyright (c) 2001 Derek Atkins * Copyright (c) 2005 Neil Williams * @@ -36,193 +36,198 @@ static int count = 0; static void test_string_fcn (QofBook *book, const char *message, - void (*set) (GncVendor *, const char *str), - const char * (*get)(const GncVendor *)); + void (*set) (GncVendor *, const char *str), + const char * (*get)(const GncVendor *)); #if 0 static void test_numeric_fcn (QofBook *book, const char *message, - void (*set) (GncVendor *, gnc_numeric), - gnc_numeric (*get)(const GncVendor *)); + void (*set) (GncVendor *, gnc_numeric), + gnc_numeric (*get)(const GncVendor *)); #endif static void test_bool_fcn (QofBook *book, const char *message, - void (*set) (GncVendor *, gboolean), - gboolean (*get) (const GncVendor *)); + void (*set) (GncVendor *, gboolean), + gboolean (*get) (const GncVendor *)); #if 0 static void test_gint_fcn (QofBook *book, const char *message, - void (*set) (GncVendor *, gint), - gint (*get) (const GncVendor *)); + void (*set) (GncVendor *, gint), + gint (*get) (const GncVendor *)); #endif static void test_vendor (void) { - QofBackend *be; - QofSession *session; - QofBook *book; - GncVendor *vendor; + QofBackend *be; + QofSession *session; + QofBook *book; + GncVendor *vendor; - session = qof_session_new(); - be = NULL; - qof_session_begin(session, QOF_STDOUT, FALSE, FALSE); - book = qof_session_get_book (session); - be = qof_book_get_backend(book); + session = qof_session_new(); + be = NULL; + qof_session_begin(session, QOF_STDOUT, FALSE, FALSE); + book = qof_session_get_book (session); + be = qof_book_get_backend(book); - /* The book *must* have a backend to pass the test of the 'dirty' flag */ - /* See the README file for details */ - do_test (be != NULL, "qsf backend could not be set"); + /* The book *must* have a backend to pass the test of the 'dirty' flag */ + /* See the README file for details */ + do_test (be != NULL, "qsf backend could not be set"); - /* Test creation/destruction */ - { - do_test (gncVendorCreate (NULL) == NULL, "vendor create NULL"); - vendor = gncVendorCreate (book); - do_test (vendor != NULL, "vendor create"); - do_test (qof_instance_get_book (QOF_INSTANCE(vendor)) == book, - "getbook"); + /* Test creation/destruction */ + { + do_test (gncVendorCreate (NULL) == NULL, "vendor create NULL"); + vendor = gncVendorCreate (book); + do_test (vendor != NULL, "vendor create"); + do_test (qof_instance_get_book (QOF_INSTANCE(vendor)) == book, + "getbook"); - gncVendorBeginEdit (vendor); - gncVendorDestroy (vendor); - success ("create/destroy"); - } + gncVendorBeginEdit (vendor); + gncVendorDestroy (vendor); + success ("create/destroy"); + } - /* Test setting/getting routines; does the active flag get set right? */ - { - GUID guid; + /* Test setting/getting routines; does the active flag get set right? */ + { + GUID guid; - test_string_fcn (book, "Id", gncVendorSetID, gncVendorGetID); - test_string_fcn (book, "Name", gncVendorSetName, gncVendorGetName); - test_string_fcn (book, "Notes", gncVendorSetNotes, gncVendorGetNotes); + test_string_fcn (book, "Id", gncVendorSetID, gncVendorGetID); + test_string_fcn (book, "Name", gncVendorSetName, gncVendorGetName); + test_string_fcn (book, "Notes", gncVendorSetNotes, gncVendorGetNotes); - //test_string_fcn (book, "Terms", gncVendorSetTerms, gncVendorGetTerms); + //test_string_fcn (book, "Terms", gncVendorSetTerms, gncVendorGetTerms); - //test_bool_fcn (book, "TaxIncluded", gncVendorSetTaxIncluded, gncVendorGetTaxIncluded); - test_bool_fcn (book, "Active", gncVendorSetActive, gncVendorGetActive); + //test_bool_fcn (book, "TaxIncluded", gncVendorSetTaxIncluded, gncVendorGetTaxIncluded); + test_bool_fcn (book, "Active", gncVendorSetActive, gncVendorGetActive); - do_test (gncVendorGetAddr (vendor) != NULL, "Addr"); + do_test (gncVendorGetAddr (vendor) != NULL, "Addr"); - guid_new (&guid); - vendor = gncVendorCreate (book); count++; - gncVendorSetGUID (vendor, &guid); - do_test (guid_equal (&guid, qof_instance_get_guid(QOF_INSTANCE(vendor))), "guid compare"); - } + guid_new (&guid); + vendor = gncVendorCreate (book); + count++; + gncVendorSetGUID (vendor, &guid); + do_test (guid_equal (&guid, qof_instance_get_guid(QOF_INSTANCE(vendor))), "guid compare"); + } #if 0 - { - GList *list; + { + GList *list; - list = gncBusinessGetList (book, GNC_ID_VENDOR, TRUE); - do_test (list != NULL, "getList all"); - do_test (g_list_length (list) == count, "correct length: all"); - g_list_free (list); + list = gncBusinessGetList (book, GNC_ID_VENDOR, TRUE); + do_test (list != NULL, "getList all"); + do_test (g_list_length (list) == count, "correct length: all"); + g_list_free (list); - list = gncBusinessGetList (book, GNC_ID_VENDOR, FALSE); - do_test (list != NULL, "getList active"); - do_test (g_list_length (list) == 1, "correct length: active"); - g_list_free (list); - } + list = gncBusinessGetList (book, GNC_ID_VENDOR, FALSE); + do_test (list != NULL, "getList active"); + do_test (g_list_length (list) == 1, "correct length: active"); + g_list_free (list); + } #endif - { - const char *str = get_random_string(); - const char *res; + { + const char *str = get_random_string(); + const char *res; - gncVendorSetName (vendor, str); - res = qof_object_printable (GNC_ID_VENDOR, vendor); - do_test (res != NULL, "Printable NULL?"); - do_test (safe_strcmp (str, res) == 0, "Printable equals"); - } + gncVendorSetName (vendor, str); + res = qof_object_printable (GNC_ID_VENDOR, vendor); + do_test (res != NULL, "Printable NULL?"); + do_test (safe_strcmp (str, res) == 0, "Printable equals"); + } } static void test_string_fcn (QofBook *book, const char *message, - void (*set) (GncVendor *, const char *str), - const char * (*get)(const GncVendor *)) + void (*set) (GncVendor *, const char *str), + const char * (*get)(const GncVendor *)) { - GncVendor *vendor = gncVendorCreate (book); - char const *str = get_random_string (); + GncVendor *vendor = gncVendorCreate (book); + char const *str = get_random_string (); - do_test (!gncVendorIsDirty (vendor), "test if start dirty"); - gncVendorBeginEdit (vendor); - set (vendor, str); - do_test (gncVendorIsDirty (vendor), "test dirty later"); - gncVendorCommitEdit (vendor); - do_test (gncVendorIsDirty (vendor), "test dirty after commit"); - do_test (safe_strcmp (get (vendor), str) == 0, message); - gncVendorSetActive (vendor, FALSE); count++; + do_test (!gncVendorIsDirty (vendor), "test if start dirty"); + gncVendorBeginEdit (vendor); + set (vendor, str); + do_test (gncVendorIsDirty (vendor), "test dirty later"); + gncVendorCommitEdit (vendor); + do_test (gncVendorIsDirty (vendor), "test dirty after commit"); + do_test (safe_strcmp (get (vendor), str) == 0, message); + gncVendorSetActive (vendor, FALSE); + count++; } #if 0 static void test_numeric_fcn (QofBook *book, const char *message, - void (*set) (GncVendor *, gnc_numeric), - gnc_numeric (*get)(const GncVendor *)) + void (*set) (GncVendor *, gnc_numeric), + gnc_numeric (*get)(const GncVendor *)) { - GncVendor *vendor = gncVendorCreate (book); - gnc_numeric num = gnc_numeric_create (17, 1); + GncVendor *vendor = gncVendorCreate (book); + gnc_numeric num = gnc_numeric_create (17, 1); - do_test (!gncVendorIsDirty (vendor), "test if start dirty"); - gncVendoryBeginEdit (vendor); - set (vendor, num); - do_test (gncVendorIsDirty (vendor), "test dirty later"); - gncVendorCommitEdit (vendor); - do_test (!gncVendorIsDirty (vendor), "test dirty after commit"); - do_test (gnc_numeric_equal (get (vendor), num), message); - gncVendorSetActive (vendor, FALSE); count++; + do_test (!gncVendorIsDirty (vendor), "test if start dirty"); + gncVendoryBeginEdit (vendor); + set (vendor, num); + do_test (gncVendorIsDirty (vendor), "test dirty later"); + gncVendorCommitEdit (vendor); + do_test (!gncVendorIsDirty (vendor), "test dirty after commit"); + do_test (gnc_numeric_equal (get (vendor), num), message); + gncVendorSetActive (vendor, FALSE); + count++; } #endif static void test_bool_fcn (QofBook *book, const char *message, - void (*set) (GncVendor *, gboolean), - gboolean (*get) (const GncVendor *)) + void (*set) (GncVendor *, gboolean), + gboolean (*get) (const GncVendor *)) { - GncVendor *vendor = gncVendorCreate (book); - gboolean num = get_random_boolean (); + GncVendor *vendor = gncVendorCreate (book); + gboolean num = get_random_boolean (); - do_test (!gncVendorIsDirty (vendor), "test if start dirty"); - gncVendorBeginEdit (vendor); - set (vendor, FALSE); - set (vendor, TRUE); - set (vendor, num); - do_test (gncVendorIsDirty (vendor), "test dirty later"); - gncVendorCommitEdit (vendor); - do_test (gncVendorIsDirty (vendor), "test dirty after commit"); - do_test (get (vendor) == num, message); - gncVendorSetActive (vendor, FALSE); count++; + do_test (!gncVendorIsDirty (vendor), "test if start dirty"); + gncVendorBeginEdit (vendor); + set (vendor, FALSE); + set (vendor, TRUE); + set (vendor, num); + do_test (gncVendorIsDirty (vendor), "test dirty later"); + gncVendorCommitEdit (vendor); + do_test (gncVendorIsDirty (vendor), "test dirty after commit"); + do_test (get (vendor) == num, message); + gncVendorSetActive (vendor, FALSE); + count++; } #if 0 static void test_gint_fcn (QofBook *book, const char *message, - void (*set) (GncVendor *, gint), - gint (*get) (const GncVendor *)) + void (*set) (GncVendor *, gint), + gint (*get) (const GncVendor *)) { - GncVendor *vendor = gncVendorCreate (book); - gint num = 17; + GncVendor *vendor = gncVendorCreate (book); + gint num = 17; - do_test (!gncVendorIsDirty (vendor), "test if start dirty"); - gncVendorBeginEdit (vendor); - set (vendor, num); - do_test (gncVendorIsDirty (vendor), "test dirty later"); - gncVendorCommitEdit (vendor); - do_test (!gncVendorIsDirty (vendor), "test dirty after commit"); - do_test (get (vendor) == num, message); - gncVendorSetActive (vendor, FALSE); count++; + do_test (!gncVendorIsDirty (vendor), "test if start dirty"); + gncVendorBeginEdit (vendor); + set (vendor, num); + do_test (gncVendorIsDirty (vendor), "test dirty later"); + gncVendorCommitEdit (vendor); + do_test (!gncVendorIsDirty (vendor), "test dirty after commit"); + do_test (get (vendor) == num, message); + gncVendorSetActive (vendor, FALSE); + count++; } #endif int main (int argc, char **argv) { - qof_init(); - do_test (gncInvoiceRegister(), "Cannot register GncInvoice"); - do_test (gncJobRegister (), "Cannot register GncJob"); - do_test (gncCustomerRegister(), "Cannot register GncCustomer"); - do_test (gncVendorRegister(), "Cannot register GncVendor"); - test_vendor(); - print_test_results(); - qof_close(); - return 0; + qof_init(); + do_test (gncInvoiceRegister(), "Cannot register GncInvoice"); + do_test (gncJobRegister (), "Cannot register GncJob"); + do_test (gncCustomerRegister(), "Cannot register GncCustomer"); + do_test (gncVendorRegister(), "Cannot register GncVendor"); + test_vendor(); + print_test_results(); + qof_close(); + return 0; } diff --git a/src/business/business-core/xml/gnc-address-xml-v2.c b/src/business/business-core/xml/gnc-address-xml-v2.c index e697dc0c26..bada2bfd97 100644 --- a/src/business/business-core/xml/gnc-address-xml-v2.c +++ b/src/business/business-core/xml/gnc-address-xml-v2.c @@ -61,8 +61,8 @@ const gchar *address_version_string = "2.0.0"; static void maybe_add_string (xmlNodePtr ptr, const char *tag, const char *str) { - if (str && strlen(str) > 0) - xmlAddChild (ptr, text_to_dom_tree (tag, str)); + if (str && strlen(str) > 0) + xmlAddChild (ptr, text_to_dom_tree (tag, str)); } xmlNodePtr @@ -74,7 +74,7 @@ gnc_address_to_dom_tree (const char *tag, GncAddress *addr) xmlSetProp(ret, BAD_CAST "version", BAD_CAST address_version_string); maybe_add_string (ret, addr_name_string, gncAddressGetName (addr)); - + maybe_add_string (ret, addr_addr1_string, gncAddressGetAddr1 (addr)); maybe_add_string (ret, addr_addr2_string, gncAddressGetAddr2 (addr)); maybe_add_string (ret, addr_addr3_string, gncAddressGetAddr3 (addr)); @@ -91,7 +91,7 @@ gnc_address_to_dom_tree (const char *tag, GncAddress *addr) struct address_pdata { - GncAddress *address; + GncAddress *address; }; static gboolean @@ -100,11 +100,11 @@ set_string(xmlNodePtr node, GncAddress* addr, { gchar* txt = dom_tree_to_text(node); g_return_val_if_fail(txt, FALSE); - + func(addr, txt); g_free(txt); - + return TRUE; } @@ -175,10 +175,11 @@ address_email_handler (xmlNodePtr node, gpointer addr_pdata) static gboolean address_slots_handler (xmlNodePtr node, gpointer addr_pdata) { - return TRUE; + return TRUE; } -static struct dom_tree_handler address_handlers_v2[] = { +static struct dom_tree_handler address_handlers_v2[] = +{ { addr_name_string, address_name_handler, 0, 0 }, { addr_addr1_string, address_addr1_handler, 0, 0 }, { addr_addr2_string, address_addr2_handler, 0, 0 }, @@ -220,18 +221,19 @@ address_ns(FILE *out) void gnc_address_xml_initialize (void) { - static GncXmlDataType_t be_data = { - GNC_FILE_BACKEND_VERS, - "gnc:Address", - NULL, /* parser_create */ - NULL, /* add_item */ - NULL, /* get_count */ - NULL, /* write */ - NULL, /* scrub */ - address_ns, - }; + static GncXmlDataType_t be_data = + { + GNC_FILE_BACKEND_VERS, + "gnc:Address", + NULL, /* parser_create */ + NULL, /* add_item */ + NULL, /* get_count */ + NULL, /* write */ + NULL, /* scrub */ + address_ns, + }; - qof_object_register_backend ("gnc:Address", - GNC_FILE_BACKEND, - &be_data); + qof_object_register_backend ("gnc:Address", + GNC_FILE_BACKEND, + &be_data); } diff --git a/src/business/business-core/xml/gnc-bill-term-xml-v2.c b/src/business/business-core/xml/gnc-bill-term-xml-v2.c index 5fc3eebb41..f21d915859 100644 --- a/src/business/business-core/xml/gnc-bill-term-xml-v2.c +++ b/src/business/business-core/xml/gnc-bill-term-xml-v2.c @@ -86,47 +86,48 @@ billterm_dom_tree_create (GncBillTerm *term) maybe_add_guid(ret, billterm_guid_string, QOF_INSTANCE(term)); xmlAddChild(ret, text_to_dom_tree (billterm_name_string, - gncBillTermGetName (term))); + gncBillTermGetName (term))); xmlAddChild(ret, text_to_dom_tree (billterm_desc_string, - gncBillTermGetDescription (term))); + gncBillTermGetDescription (term))); xmlAddChild(ret, int_to_dom_tree (billterm_refcount_string, - gncBillTermGetRefcount (term))); + gncBillTermGetRefcount (term))); xmlAddChild(ret, int_to_dom_tree (billterm_invisible_string, - gncBillTermGetInvisible (term))); + gncBillTermGetInvisible (term))); kvpnode = kvp_frame_to_dom_tree (billterm_slots_string, - qof_instance_get_slots (QOF_INSTANCE(term))); + qof_instance_get_slots (QOF_INSTANCE(term))); if (kvpnode) xmlAddChild (ret, kvpnode); /* We should not be our own child */ if (gncBillTermGetChild(term) != term) - maybe_add_guid(ret, billterm_child_string, - QOF_INSTANCE(gncBillTermGetChild (term))); + maybe_add_guid(ret, billterm_child_string, + QOF_INSTANCE(gncBillTermGetChild (term))); maybe_add_guid(ret, billterm_parent_string, - QOF_INSTANCE(gncBillTermGetParent (term))); + QOF_INSTANCE(gncBillTermGetParent (term))); - switch (gncBillTermGetType (term)) { + switch (gncBillTermGetType (term)) + { case GNC_TERM_TYPE_DAYS: - data = xmlNewChild (ret, NULL, BAD_CAST gnc_daystype_string, NULL); - maybe_add_int (data, days_duedays_string, gncBillTermGetDueDays (term)); - maybe_add_int (data, days_discdays_string, - gncBillTermGetDiscountDays (term)); - maybe_add_numeric (data, days_discount_string, - gncBillTermGetDiscount (term)); - break; + data = xmlNewChild (ret, NULL, BAD_CAST gnc_daystype_string, NULL); + maybe_add_int (data, days_duedays_string, gncBillTermGetDueDays (term)); + maybe_add_int (data, days_discdays_string, + gncBillTermGetDiscountDays (term)); + maybe_add_numeric (data, days_discount_string, + gncBillTermGetDiscount (term)); + break; case GNC_TERM_TYPE_PROXIMO: - data = xmlNewChild (ret, NULL, BAD_CAST gnc_proximotype_string, NULL); - maybe_add_int (data, prox_dueday_string, gncBillTermGetDueDays (term)); - maybe_add_int (data, prox_discday_string, - gncBillTermGetDiscountDays (term)); - maybe_add_numeric (data, prox_discount_string, - gncBillTermGetDiscount (term)); - maybe_add_int (data, prox_cutoff_string, gncBillTermGetCutoff (term)); - break; + data = xmlNewChild (ret, NULL, BAD_CAST gnc_proximotype_string, NULL); + maybe_add_int (data, prox_dueday_string, gncBillTermGetDueDays (term)); + maybe_add_int (data, prox_discday_string, + gncBillTermGetDiscountDays (term)); + maybe_add_numeric (data, prox_discount_string, + gncBillTermGetDiscount (term)); + maybe_add_int (data, prox_cutoff_string, gncBillTermGetCutoff (term)); + break; } return ret; @@ -136,30 +137,30 @@ billterm_dom_tree_create (GncBillTerm *term) struct billterm_pdata { - GncBillTerm *term; - QofBook *book; + GncBillTerm *term; + QofBook *book; }; static gboolean set_int (xmlNodePtr node, GncBillTerm *term, - void (*func)(GncBillTerm *, gint)) + void (*func)(GncBillTerm *, gint)) { - gint64 val; - dom_tree_to_integer (node, &val); - func (term, val); - return TRUE; + gint64 val; + dom_tree_to_integer (node, &val); + func (term, val); + return TRUE; } static gboolean set_numeric (xmlNodePtr node, GncBillTerm *term, - void (*func)(GncBillTerm *, gnc_numeric)) + void (*func)(GncBillTerm *, gnc_numeric)) { - gnc_numeric* num = dom_tree_to_gnc_numeric (node); - g_return_val_if_fail (num, FALSE); - - func (term, *num); - g_free (num); - return TRUE; + gnc_numeric* num = dom_tree_to_gnc_numeric (node); + g_return_val_if_fail (num, FALSE); + + func (term, *num); + g_free (num); + return TRUE; } /***********************************************************************/ @@ -167,42 +168,43 @@ set_numeric (xmlNodePtr node, GncBillTerm *term, static gboolean days_duedays_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return set_int (node, pdata->term, gncBillTermSetDueDays); + struct billterm_pdata *pdata = billterm_pdata; + return set_int (node, pdata->term, gncBillTermSetDueDays); } static gboolean days_discdays_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return set_int (node, pdata->term, gncBillTermSetDiscountDays); + struct billterm_pdata *pdata = billterm_pdata; + return set_int (node, pdata->term, gncBillTermSetDiscountDays); } static gboolean days_discount_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return set_numeric (node, pdata->term, gncBillTermSetDiscount); + struct billterm_pdata *pdata = billterm_pdata; + return set_numeric (node, pdata->term, gncBillTermSetDiscount); } -static struct dom_tree_handler days_data_handlers_v2[] = { - { days_duedays_string, days_duedays_handler, 0, 0 }, - { days_discdays_string, days_discdays_handler, 0, 0 }, - { days_discount_string, days_discount_handler, 0, 0 }, - { NULL, 0, 0, 0 } +static struct dom_tree_handler days_data_handlers_v2[] = +{ + { days_duedays_string, days_duedays_handler, 0, 0 }, + { days_discdays_string, days_discdays_handler, 0, 0 }, + { days_discount_string, days_discount_handler, 0, 0 }, + { NULL, 0, 0, 0 } }; static gboolean dom_tree_to_days_data (xmlNodePtr node, struct billterm_pdata *pdata) { - gboolean successful; - - successful = dom_tree_generic_parse (node, days_data_handlers_v2, pdata); + gboolean successful; - if (!successful) - PERR ("failed to parse billing term days data"); + successful = dom_tree_generic_parse (node, days_data_handlers_v2, pdata); - return successful; + if (!successful) + PERR ("failed to parse billing term days data"); + + return successful; } /***********************************************************************/ @@ -210,86 +212,88 @@ dom_tree_to_days_data (xmlNodePtr node, struct billterm_pdata *pdata) static gboolean prox_dueday_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return set_int (node, pdata->term, gncBillTermSetDueDays); + struct billterm_pdata *pdata = billterm_pdata; + return set_int (node, pdata->term, gncBillTermSetDueDays); } static gboolean prox_discday_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return set_int (node, pdata->term, gncBillTermSetDiscountDays); + struct billterm_pdata *pdata = billterm_pdata; + return set_int (node, pdata->term, gncBillTermSetDiscountDays); } static gboolean prox_discount_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return set_numeric (node, pdata->term, gncBillTermSetDiscount); + struct billterm_pdata *pdata = billterm_pdata; + return set_numeric (node, pdata->term, gncBillTermSetDiscount); } static gboolean prox_cutoff_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return set_int (node, pdata->term, gncBillTermSetCutoff); + struct billterm_pdata *pdata = billterm_pdata; + return set_int (node, pdata->term, gncBillTermSetCutoff); } -static struct dom_tree_handler prox_data_handlers_v2[] = { - { prox_dueday_string, prox_dueday_handler, 0, 0 }, - { prox_discday_string, prox_discday_handler, 0, 0 }, - { prox_discount_string, prox_discount_handler, 0, 0 }, - { prox_cutoff_string, prox_cutoff_handler, 0, 0 }, - { NULL, 0, 0, 0 } +static struct dom_tree_handler prox_data_handlers_v2[] = +{ + { prox_dueday_string, prox_dueday_handler, 0, 0 }, + { prox_discday_string, prox_discday_handler, 0, 0 }, + { prox_discount_string, prox_discount_handler, 0, 0 }, + { prox_cutoff_string, prox_cutoff_handler, 0, 0 }, + { NULL, 0, 0, 0 } }; static gboolean dom_tree_to_prox_data (xmlNodePtr node, struct billterm_pdata *pdata) { - gboolean successful; - - successful = dom_tree_generic_parse (node, prox_data_handlers_v2, pdata); + gboolean successful; - if (!successful) - PERR ("failed to parse billing term prox data"); + successful = dom_tree_generic_parse (node, prox_data_handlers_v2, pdata); - return successful; + if (!successful) + PERR ("failed to parse billing term prox data"); + + return successful; } /***********************************************************************/ static gboolean set_parent_child (xmlNodePtr node, struct billterm_pdata *pdata, - void (*func)(GncBillTerm *, GncBillTerm *)) + void (*func)(GncBillTerm *, GncBillTerm *)) { - GUID *guid; - GncBillTerm *term; + GUID *guid; + GncBillTerm *term; - guid = dom_tree_to_guid(node); - g_return_val_if_fail (guid, FALSE); - term = gncBillTermLookup (pdata->book, guid); - if (!term) { - term = gncBillTermCreate (pdata->book); - gncBillTermBeginEdit (term); - gncBillTermSetGUID (term, guid); - gncBillTermCommitEdit (term); - } - g_free (guid); - g_return_val_if_fail (term, FALSE); - func (pdata->term, term); + guid = dom_tree_to_guid(node); + g_return_val_if_fail (guid, FALSE); + term = gncBillTermLookup (pdata->book, guid); + if (!term) + { + term = gncBillTermCreate (pdata->book); + gncBillTermBeginEdit (term); + gncBillTermSetGUID (term, guid); + gncBillTermCommitEdit (term); + } + g_free (guid); + g_return_val_if_fail (term, FALSE); + func (pdata->term, term); - return TRUE; + return TRUE; } static gboolean set_string (xmlNodePtr node, GncBillTerm *term, - void (*func)(GncBillTerm *, const char *)) + void (*func)(GncBillTerm *, const char *)) { - char* txt = dom_tree_to_text(node); - g_return_val_if_fail(txt, FALSE); - func (term, txt); - g_free(txt); - return TRUE; + char* txt = dom_tree_to_text(node); + g_return_val_if_fail(txt, FALSE); + func (term, txt); + g_free(txt); + return TRUE; } static gboolean @@ -302,103 +306,107 @@ billterm_guid_handler (xmlNodePtr node, gpointer billterm_pdata) guid = dom_tree_to_guid(node); g_return_val_if_fail (guid, FALSE); term = gncBillTermLookup (pdata->book, guid); - if (term) { - gncBillTermDestroy (pdata->term); - pdata->term = term; - gncBillTermBeginEdit (term); - } else { - gncBillTermSetGUID(pdata->term, guid); + if (term) + { + gncBillTermDestroy (pdata->term); + pdata->term = term; + gncBillTermBeginEdit (term); + } + else + { + gncBillTermSetGUID(pdata->term, guid); } g_free(guid); - + return TRUE; } static gboolean billterm_name_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return set_string (node, pdata->term, gncBillTermSetName); + struct billterm_pdata *pdata = billterm_pdata; + return set_string (node, pdata->term, gncBillTermSetName); } static gboolean billterm_desc_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return set_string (node, pdata->term, gncBillTermSetDescription); + struct billterm_pdata *pdata = billterm_pdata; + return set_string (node, pdata->term, gncBillTermSetDescription); } static gboolean billterm_refcount_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - gint64 val; + struct billterm_pdata *pdata = billterm_pdata; + gint64 val; - dom_tree_to_integer(node, &val); - gncBillTermSetRefcount (pdata->term, val); - return TRUE; + dom_tree_to_integer(node, &val); + gncBillTermSetRefcount (pdata->term, val); + return TRUE; } static gboolean billterm_invisible_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - gint64 val; + struct billterm_pdata *pdata = billterm_pdata; + gint64 val; - dom_tree_to_integer(node, &val); - if (val) - gncBillTermMakeInvisible (pdata->term); - return TRUE; + dom_tree_to_integer(node, &val); + if (val) + gncBillTermMakeInvisible (pdata->term); + return TRUE; } static gboolean billterm_parent_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return set_parent_child (node, pdata, gncBillTermSetParent); + struct billterm_pdata *pdata = billterm_pdata; + return set_parent_child (node, pdata, gncBillTermSetParent); } static gboolean billterm_child_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return set_parent_child (node, pdata, gncBillTermSetChild); + struct billterm_pdata *pdata = billterm_pdata; + return set_parent_child (node, pdata, gncBillTermSetChild); } static gboolean billterm_days_data_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; + struct billterm_pdata *pdata = billterm_pdata; - g_return_val_if_fail (node, FALSE); - g_return_val_if_fail (gncBillTermGetType (pdata->term) == 0, FALSE); + g_return_val_if_fail (node, FALSE); + g_return_val_if_fail (gncBillTermGetType (pdata->term) == 0, FALSE); - gncBillTermSetType (pdata->term, GNC_TERM_TYPE_DAYS); - return dom_tree_to_days_data (node, pdata); + gncBillTermSetType (pdata->term, GNC_TERM_TYPE_DAYS); + return dom_tree_to_days_data (node, pdata); } static gboolean billterm_prox_data_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; + struct billterm_pdata *pdata = billterm_pdata; - g_return_val_if_fail (node, FALSE); - g_return_val_if_fail (gncBillTermGetType (pdata->term) == 0, FALSE); + g_return_val_if_fail (node, FALSE); + g_return_val_if_fail (gncBillTermGetType (pdata->term) == 0, FALSE); - gncBillTermSetType (pdata->term, GNC_TERM_TYPE_PROXIMO); - return dom_tree_to_prox_data (node, pdata); + gncBillTermSetType (pdata->term, GNC_TERM_TYPE_PROXIMO); + return dom_tree_to_prox_data (node, pdata); } static gboolean billterm_slots_handler (xmlNodePtr node, gpointer billterm_pdata) { - struct billterm_pdata *pdata = billterm_pdata; - return dom_tree_to_kvp_frame_given (node, - qof_instance_get_slots (QOF_INSTANCE(pdata->term))); + struct billterm_pdata *pdata = billterm_pdata; + return dom_tree_to_kvp_frame_given (node, + qof_instance_get_slots (QOF_INSTANCE(pdata->term))); } -static struct dom_tree_handler billterm_handlers_v2[] = { +static struct dom_tree_handler billterm_handlers_v2[] = +{ { billterm_guid_string, billterm_guid_handler, 1, 0 }, { billterm_name_string, billterm_name_handler, 1, 0 }, { billterm_desc_string, billterm_desc_handler, 1, 0 }, @@ -415,32 +423,35 @@ static struct dom_tree_handler billterm_handlers_v2[] = { static GncBillTerm* dom_tree_to_billterm (xmlNodePtr node, QofBook *book) { - struct billterm_pdata billterm_pdata; - gboolean successful; - - billterm_pdata.term = gncBillTermCreate (book); - billterm_pdata.book = book; - gncBillTermBeginEdit (billterm_pdata.term); + struct billterm_pdata billterm_pdata; + gboolean successful; - successful = dom_tree_generic_parse (node, billterm_handlers_v2, - &billterm_pdata); + billterm_pdata.term = gncBillTermCreate (book); + billterm_pdata.book = book; + gncBillTermBeginEdit (billterm_pdata.term); - if (successful) { - gncBillTermCommitEdit (billterm_pdata.term); - } else { - PERR ("failed to parse billing term tree"); - gncBillTermDestroy (billterm_pdata.term); - billterm_pdata.term = NULL; - } + successful = dom_tree_generic_parse (node, billterm_handlers_v2, + &billterm_pdata); - return billterm_pdata.term; + if (successful) + { + gncBillTermCommitEdit (billterm_pdata.term); + } + else + { + PERR ("failed to parse billing term tree"); + gncBillTermDestroy (billterm_pdata.term); + billterm_pdata.term = NULL; + } + + return billterm_pdata.term; } static gboolean gnc_billterm_end_handler(gpointer data_for_children, - GSList* data_from_children, GSList* sibling_data, - gpointer parent_data, gpointer global_data, - gpointer *result, const gchar *tag) + GSList* data_from_children, GSList* sibling_data, + gpointer parent_data, gpointer global_data, + gpointer *result, const gchar *tag) { int successful; GncBillTerm *term; @@ -450,14 +461,14 @@ gnc_billterm_end_handler(gpointer data_for_children, successful = TRUE; - if(parent_data) + if (parent_data) { return TRUE; } /* OK. For some messed up reason this is getting called again with a NULL tag. So we ignore those cases */ - if(!tag) + if (!tag) { return TRUE; } @@ -465,7 +476,7 @@ gnc_billterm_end_handler(gpointer data_for_children, g_return_val_if_fail(tree, FALSE); term = dom_tree_to_billterm (tree, book); - if(term != NULL) + if (term != NULL) { gdata->cb(tag, gdata->parsedata, term); } @@ -478,117 +489,125 @@ gnc_billterm_end_handler(gpointer data_for_children, static sixtp * billterm_sixtp_parser_create(void) { - return sixtp_dom_parser_new(gnc_billterm_end_handler, NULL, NULL); + return sixtp_dom_parser_new(gnc_billterm_end_handler, NULL, NULL); } static void do_count (QofInstance *term_p, gpointer count_p) { - int *count = count_p; - (*count)++; + int *count = count_p; + (*count)++; } static int billterm_get_count (QofBook *book) { - int count = 0; - qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); - return count; + int count = 0; + qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); + return count; } static void xml_add_billterm (QofInstance *term_p, gpointer out_p) { - xmlNodePtr node; - GncBillTerm *term = (GncBillTerm *) term_p; - FILE *out = out_p; + xmlNodePtr node; + GncBillTerm *term = (GncBillTerm *) term_p; + FILE *out = out_p; - if (ferror(out)) - return; + if (ferror(out)) + return; - node = billterm_dom_tree_create (term); - xmlElemDump(out, NULL, node); - xmlFreeNode (node); - if (ferror(out) || fprintf(out, "\n") < 0) - return; + node = billterm_dom_tree_create (term); + xmlElemDump(out, NULL, node); + xmlFreeNode (node); + if (ferror(out) || fprintf(out, "\n") < 0) + return; } static gboolean billterm_write (FILE *out, QofBook *book) { - qof_object_foreach (_GNC_MOD_NAME, book, xml_add_billterm, (gpointer) out); - return ferror(out) == 0; + qof_object_foreach (_GNC_MOD_NAME, book, xml_add_billterm, (gpointer) out); + return ferror(out) == 0; } static gboolean billterm_is_grandchild (GncBillTerm *term) { - return (gncBillTermGetParent(gncBillTermGetParent(term)) != NULL); + return (gncBillTermGetParent(gncBillTermGetParent(term)) != NULL); } static GncBillTerm * billterm_find_senior (GncBillTerm *term) { - GncBillTerm *temp, *parent, *gp = NULL; + GncBillTerm *temp, *parent, *gp = NULL; - temp = term; - do { - /* See if "temp" is a grandchild */ - parent = gncBillTermGetParent(temp); - if (!parent) - break; - gp = gncBillTermGetParent(parent); - if (!gp) - break; + temp = term; + do + { + /* See if "temp" is a grandchild */ + parent = gncBillTermGetParent(temp); + if (!parent) + break; + gp = gncBillTermGetParent(parent); + if (!gp) + break; - /* Yep, this is a grandchild. Move up one generation and try again */ - temp = parent; - } while (TRUE); + /* Yep, this is a grandchild. Move up one generation and try again */ + temp = parent; + } + while (TRUE); - /* Ok, at this point temp points to the most senior child and parent - * should point to the top billterm (and gp should be NULL). If - * parent is NULL then we are the most senior child (and have no - * children), so do nothing. If temp == term then there is no - * grandparent, so do nothing. - * - * Do something if parent != NULL && temp != term - */ - g_assert (gp == NULL); + /* Ok, at this point temp points to the most senior child and parent + * should point to the top billterm (and gp should be NULL). If + * parent is NULL then we are the most senior child (and have no + * children), so do nothing. If temp == term then there is no + * grandparent, so do nothing. + * + * Do something if parent != NULL && temp != term + */ + g_assert (gp == NULL); - /* return the most senior term */ - return temp; + /* return the most senior term */ + return temp; } /* build a list of bill terms that are grandchildren or bogus (empty entry list). */ static void billterm_scrub_cb (QofInstance *term_p, gpointer list_p) { - GncBillTerm *term = GNC_BILLTERM(term_p); - GList **list = list_p; + GncBillTerm *term = GNC_BILLTERM(term_p); + GList **list = list_p; - if (billterm_is_grandchild(term)) { - *list = g_list_prepend(*list, term); + if (billterm_is_grandchild(term)) + { + *list = g_list_prepend(*list, term); - } else if (!gncBillTermGetType(term)) { - GncBillTerm *t = gncBillTermGetParent(term); - if (t) { - /* Fix up the broken "copy" function */ - PWARN("Fixing broken child billterm: %s", - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(term)))); - - gncBillTermBeginEdit(term); - gncBillTermSetType(term, gncBillTermGetType(t)); - gncBillTermSetDueDays (term, gncBillTermGetDueDays(t)); - gncBillTermSetDiscountDays (term, gncBillTermGetDiscountDays(t)); - gncBillTermSetDiscount (term, gncBillTermGetDiscount(t)); - gncBillTermSetCutoff (term, gncBillTermGetCutoff(t)); - gncBillTermCommitEdit(term); - - } else { - /* No parent? Must be a standalone */ - *list = g_list_prepend(*list, term); } - } + else if (!gncBillTermGetType(term)) + { + GncBillTerm *t = gncBillTermGetParent(term); + if (t) + { + /* Fix up the broken "copy" function */ + PWARN("Fixing broken child billterm: %s", + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(term)))); + + gncBillTermBeginEdit(term); + gncBillTermSetType(term, gncBillTermGetType(t)); + gncBillTermSetDueDays (term, gncBillTermGetDueDays(t)); + gncBillTermSetDiscountDays (term, gncBillTermGetDiscountDays(t)); + gncBillTermSetDiscount (term, gncBillTermGetDiscount(t)); + gncBillTermSetCutoff (term, gncBillTermGetCutoff(t)); + gncBillTermCommitEdit(term); + + } + else + { + /* No parent? Must be a standalone */ + *list = g_list_prepend(*list, term); + } + } } /* for each invoice, check the bill terms. If the bill terms are @@ -597,167 +616,177 @@ billterm_scrub_cb (QofInstance *term_p, gpointer list_p) static void billterm_scrub_invoices (QofInstance * invoice_p, gpointer ht_p) { - GHashTable *ht = ht_p; - GncInvoice *invoice = GNC_INVOICE(invoice_p); - GncBillTerm *term, *new_bt; - gint32 count; + GHashTable *ht = ht_p; + GncInvoice *invoice = GNC_INVOICE(invoice_p); + GncBillTerm *term, *new_bt; + gint32 count; - term = gncInvoiceGetTerms(invoice); - if (term) { - if (billterm_is_grandchild(term)) { - PWARN("Fixing i-billterm on invoice %s\n", - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(invoice)))); - new_bt = billterm_find_senior(term); - gncInvoiceBeginEdit(invoice); - gncInvoiceSetTerms(invoice, new_bt); - gncInvoiceCommitEdit(invoice); - term = new_bt; + term = gncInvoiceGetTerms(invoice); + if (term) + { + if (billterm_is_grandchild(term)) + { + PWARN("Fixing i-billterm on invoice %s\n", + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(invoice)))); + new_bt = billterm_find_senior(term); + gncInvoiceBeginEdit(invoice); + gncInvoiceSetTerms(invoice, new_bt); + gncInvoiceCommitEdit(invoice); + term = new_bt; + } + if (term) + { + count = GPOINTER_TO_INT(g_hash_table_lookup(ht, term)); + count++; + g_hash_table_insert(ht, term, GINT_TO_POINTER(count)); + } } - if (term) { - count = GPOINTER_TO_INT(g_hash_table_lookup(ht, term)); - count++; - g_hash_table_insert(ht, term, GINT_TO_POINTER(count)); - } - } } static void billterm_scrub_cust (QofInstance * cust_p, gpointer ht_p) { - GHashTable *ht = ht_p; - GncCustomer *cust = GNC_CUSTOMER(cust_p); - GncBillTerm *term; - gint32 count; - - term = gncCustomerGetTerms(cust); - if (term) { - count = GPOINTER_TO_INT(g_hash_table_lookup(ht, term)); - count++; - g_hash_table_insert(ht, term, GINT_TO_POINTER(count)); - if (billterm_is_grandchild(term)) - PWARN("customer %s has grandchild billterm %s\n", - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(cust))), - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(term)))); - } + GHashTable *ht = ht_p; + GncCustomer *cust = GNC_CUSTOMER(cust_p); + GncBillTerm *term; + gint32 count; + + term = gncCustomerGetTerms(cust); + if (term) + { + count = GPOINTER_TO_INT(g_hash_table_lookup(ht, term)); + count++; + g_hash_table_insert(ht, term, GINT_TO_POINTER(count)); + if (billterm_is_grandchild(term)) + PWARN("customer %s has grandchild billterm %s\n", + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(cust))), + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(term)))); + } } static void billterm_scrub_vendor (QofInstance * vendor_p, gpointer ht_p) { - GHashTable *ht = ht_p; - GncVendor *vendor = GNC_VENDOR(vendor_p); - GncBillTerm *term; - gint32 count; + GHashTable *ht = ht_p; + GncVendor *vendor = GNC_VENDOR(vendor_p); + GncBillTerm *term; + gint32 count; - term = gncVendorGetTerms(vendor); - if (term) { - count = GPOINTER_TO_INT(g_hash_table_lookup(ht, term)); - count++; - g_hash_table_insert(ht, term, GINT_TO_POINTER(count)); - if (billterm_is_grandchild(term)) - PWARN("vendor %s has grandchild billterm %s\n", - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(vendor))), - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(term)))); - } + term = gncVendorGetTerms(vendor); + if (term) + { + count = GPOINTER_TO_INT(g_hash_table_lookup(ht, term)); + count++; + g_hash_table_insert(ht, term, GINT_TO_POINTER(count)); + if (billterm_is_grandchild(term)) + PWARN("vendor %s has grandchild billterm %s\n", + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(vendor))), + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(term)))); + } } static void billterm_reset_refcount (gpointer key, gpointer value, gpointer notused) { - GncBillTerm *term = key; - gint32 count = GPOINTER_TO_INT(value); + GncBillTerm *term = key; + gint32 count = GPOINTER_TO_INT(value); - if (count != gncBillTermGetRefcount(term) && !gncBillTermGetInvisible(term)) { - PWARN("Fixing refcount on billterm %s (%" G_GINT64_FORMAT " -> %d)\n", - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(term))), - gncBillTermGetRefcount(term), count); - gncBillTermSetRefcount(term, count); - } + if (count != gncBillTermGetRefcount(term) && !gncBillTermGetInvisible(term)) + { + PWARN("Fixing refcount on billterm %s (%" G_GINT64_FORMAT " -> %d)\n", + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(term))), + gncBillTermGetRefcount(term), count); + gncBillTermSetRefcount(term, count); + } } static void billterm_scrub (QofBook *book) { - GList *list = NULL; - GList *node; - GncBillTerm *parent, *term; - GHashTable *ht = g_hash_table_new(g_direct_hash, g_direct_equal); + GList *list = NULL; + GList *node; + GncBillTerm *parent, *term; + GHashTable *ht = g_hash_table_new(g_direct_hash, g_direct_equal); - DEBUG("scrubbing billterms..."); - qof_object_foreach (GNC_ID_INVOICE, book, billterm_scrub_invoices, ht); - qof_object_foreach (GNC_ID_CUSTOMER, book, billterm_scrub_cust, ht); - qof_object_foreach (GNC_ID_VENDOR, book, billterm_scrub_vendor, ht); - qof_object_foreach (GNC_ID_BILLTERM, book, billterm_scrub_cb, &list); + DEBUG("scrubbing billterms..."); + qof_object_foreach (GNC_ID_INVOICE, book, billterm_scrub_invoices, ht); + qof_object_foreach (GNC_ID_CUSTOMER, book, billterm_scrub_cust, ht); + qof_object_foreach (GNC_ID_VENDOR, book, billterm_scrub_vendor, ht); + qof_object_foreach (GNC_ID_BILLTERM, book, billterm_scrub_cb, &list); - /* destroy the list of "grandchildren" bill terms */ - for (node = list; node; node = node->next) { - term = node->data; + /* destroy the list of "grandchildren" bill terms */ + for (node = list; node; node = node->next) + { + term = node->data; - PWARN ("deleting grandchild billterm: %s\n", - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(term)))); + PWARN ("deleting grandchild billterm: %s\n", + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(term)))); - /* Make sure the parent has no children */ - parent = gncBillTermGetParent(term); - gncBillTermSetChild(parent, NULL); + /* Make sure the parent has no children */ + parent = gncBillTermGetParent(term); + gncBillTermSetChild(parent, NULL); - /* Destroy this bill term */ - gncBillTermBeginEdit(term); - gncBillTermDestroy(term); - } + /* Destroy this bill term */ + gncBillTermBeginEdit(term); + gncBillTermDestroy(term); + } - /* reset the refcounts as necessary */ - g_hash_table_foreach(ht, billterm_reset_refcount, NULL); + /* reset the refcounts as necessary */ + g_hash_table_foreach(ht, billterm_reset_refcount, NULL); - g_list_free(list); - g_hash_table_destroy(ht); + g_list_free(list); + g_hash_table_destroy(ht); } static gboolean billterm_ns(FILE *out) { - g_return_val_if_fail(out, FALSE); - return - gnc_xml2_write_namespace_decl(out, "billterm") - && gnc_xml2_write_namespace_decl(out, "bt-days") - && gnc_xml2_write_namespace_decl(out, "bt-prox"); + g_return_val_if_fail(out, FALSE); + return + gnc_xml2_write_namespace_decl(out, "billterm") + && gnc_xml2_write_namespace_decl(out, "bt-days") + && gnc_xml2_write_namespace_decl(out, "bt-prox"); } void gnc_billterm_xml_initialize (void) { - static GncXmlDataType_t be_data = { - GNC_FILE_BACKEND_VERS, - gnc_billterm_string, - billterm_sixtp_parser_create, - NULL, /* add_item */ - billterm_get_count, - billterm_write, - billterm_scrub, - billterm_ns, - }; + static GncXmlDataType_t be_data = + { + GNC_FILE_BACKEND_VERS, + gnc_billterm_string, + billterm_sixtp_parser_create, + NULL, /* add_item */ + billterm_get_count, + billterm_write, + billterm_scrub, + billterm_ns, + }; - qof_object_register_backend (_GNC_MOD_NAME, - GNC_FILE_BACKEND, - &be_data); + qof_object_register_backend (_GNC_MOD_NAME, + GNC_FILE_BACKEND, + &be_data); } GncBillTerm * gnc_billterm_xml_find_or_create(QofBook *book, GUID *guid) { - GncBillTerm *term; + GncBillTerm *term; - g_return_val_if_fail(book, NULL); - g_return_val_if_fail(guid, NULL); - term = gncBillTermLookup(book, guid); - DEBUG("looking for billterm %s, found %p", guid_to_string(guid), term); - if (!term) { - term = gncBillTermCreate(book); - gncBillTermBeginEdit(term); - gncBillTermSetGUID(term, guid); - gncBillTermCommitEdit(term); - DEBUG("Created term: %p", term); - } else - gncBillTermDecRef(term); + g_return_val_if_fail(book, NULL); + g_return_val_if_fail(guid, NULL); + term = gncBillTermLookup(book, guid); + DEBUG("looking for billterm %s, found %p", guid_to_string(guid), term); + if (!term) + { + term = gncBillTermCreate(book); + gncBillTermBeginEdit(term); + gncBillTermSetGUID(term, guid); + gncBillTermCommitEdit(term); + DEBUG("Created term: %p", term); + } + else + gncBillTermDecRef(term); - return term; + return term; } diff --git a/src/business/business-core/xml/gnc-customer-xml-v2.c b/src/business/business-core/xml/gnc-customer-xml-v2.c index 4e1b54bb0b..f3605997fa 100644 --- a/src/business/business-core/xml/gnc-customer-xml-v2.c +++ b/src/business/business-core/xml/gnc-customer-xml-v2.c @@ -86,54 +86,54 @@ customer_dom_tree_create (GncCustomer *cust) xmlSetProp(ret, BAD_CAST "version", BAD_CAST customer_version_string); xmlAddChild(ret, guid_to_dom_tree(cust_guid_string, - qof_instance_get_guid(QOF_INSTANCE(cust)))); + qof_instance_get_guid(QOF_INSTANCE(cust)))); xmlAddChild(ret, text_to_dom_tree(cust_name_string, gncCustomerGetName (cust))); - + xmlAddChild(ret, text_to_dom_tree(cust_id_string, gncCustomerGetID (cust))); xmlAddChild(ret, gnc_address_to_dom_tree(cust_addr_string, - gncCustomerGetAddr (cust))); - + gncCustomerGetAddr (cust))); + xmlAddChild(ret, gnc_address_to_dom_tree(cust_shipaddr_string, - gncCustomerGetShipAddr (cust))); - + gncCustomerGetShipAddr (cust))); + maybe_add_string (ret, cust_notes_string, gncCustomerGetNotes (cust)); term = gncCustomerGetTerms (cust); if (term) - xmlAddChild(ret, guid_to_dom_tree(cust_terms_string, - qof_instance_get_guid (QOF_INSTANCE(term)))); + xmlAddChild(ret, guid_to_dom_tree(cust_terms_string, + qof_instance_get_guid (QOF_INSTANCE(term)))); xmlAddChild(ret, text_to_dom_tree(cust_taxincluded_string, - gncTaxIncludedTypeToString ( - gncCustomerGetTaxIncluded (cust)))); + gncTaxIncludedTypeToString ( + gncCustomerGetTaxIncluded (cust)))); xmlAddChild(ret, int_to_dom_tree(cust_active_string, - gncCustomerGetActive (cust))); + gncCustomerGetActive (cust))); num = gncCustomerGetDiscount (cust); xmlAddChild(ret, gnc_numeric_to_dom_tree(cust_discount_string, &num)); - + num = gncCustomerGetCredit (cust); xmlAddChild(ret, gnc_numeric_to_dom_tree(cust_credit_string, &num)); xmlAddChild - (ret, - commodity_ref_to_dom_tree(cust_currency_string, - gncCustomerGetCurrency (cust))); + (ret, + commodity_ref_to_dom_tree(cust_currency_string, + gncCustomerGetCurrency (cust))); xmlAddChild (ret, int_to_dom_tree (cust_taxtableoverride_string, - gncCustomerGetTaxTableOverride (cust))); + gncCustomerGetTaxTableOverride (cust))); taxtable = gncCustomerGetTaxTable (cust); if (taxtable) - xmlAddChild (ret, guid_to_dom_tree (cust_taxtable_string, - qof_instance_get_guid(QOF_INSTANCE(taxtable)))); + xmlAddChild (ret, guid_to_dom_tree (cust_taxtable_string, + qof_instance_get_guid(QOF_INSTANCE(taxtable)))); - kvpnode = kvp_frame_to_dom_tree (cust_slots_string, - qof_instance_get_slots (QOF_INSTANCE(cust))); + kvpnode = kvp_frame_to_dom_tree (cust_slots_string, + qof_instance_get_slots (QOF_INSTANCE(cust))); if (kvpnode) xmlAddChild (ret, kvpnode); return ret; @@ -143,34 +143,34 @@ customer_dom_tree_create (GncCustomer *cust) struct customer_pdata { - GncCustomer *customer; - QofBook *book; + GncCustomer *customer; + QofBook *book; }; static gboolean set_string(xmlNodePtr node, GncCustomer* cust, void (*func)(GncCustomer *cust, const char *txt)) { - char* txt = dom_tree_to_text(node); - g_return_val_if_fail(txt, FALSE); - - func(cust, txt); - - g_free(txt); - - return TRUE; + char* txt = dom_tree_to_text(node); + g_return_val_if_fail(txt, FALSE); + + func(cust, txt); + + g_free(txt); + + return TRUE; } static gboolean set_boolean(xmlNodePtr node, GncCustomer* cust, - void (*func)(GncCustomer* cust, gboolean b)) + void (*func)(GncCustomer* cust, gboolean b)) { gint64 val; gboolean ret; ret = dom_tree_to_integer(node, &val); if (ret) - func(cust, (gboolean)val); + func(cust, (gboolean)val); return ret; } @@ -193,16 +193,19 @@ customer_guid_handler (xmlNodePtr node, gpointer cust_pdata) guid = dom_tree_to_guid(node); g_return_val_if_fail(guid, FALSE); cust = gncCustomerLookup (pdata->book, guid); - if (cust) { - gncCustomerDestroy (pdata->customer); - pdata->customer = cust; - gncCustomerBeginEdit (cust); - } else { - gncCustomerSetGUID(pdata->customer, guid); + if (cust) + { + gncCustomerDestroy (pdata->customer); + pdata->customer = cust; + gncCustomerBeginEdit (cust); + } + else + { + gncCustomerSetGUID(pdata->customer, guid); } g_free(guid); - + return TRUE; } @@ -235,7 +238,7 @@ customer_terms_handler (xmlNodePtr node, gpointer cust_pdata) g_assert(term); g_free (guid); gncCustomerSetTerms (pdata->customer, term); - + return TRUE; } @@ -253,7 +256,7 @@ customer_shipaddr_handler (xmlNodePtr node, gpointer cust_pdata) struct customer_pdata *pdata = cust_pdata; return gnc_dom_tree_to_address (node, - gncCustomerGetShipAddr(pdata->customer)); + gncCustomerGetShipAddr(pdata->customer)); } @@ -272,7 +275,7 @@ customer_taxincluded_handler (xmlNodePtr node, gpointer cust_pdata) g_free (str); if (ret) - gncCustomerSetTaxIncluded(pdata->customer, type); + gncCustomerSetTaxIncluded(pdata->customer, type); return ret; } @@ -338,13 +341,15 @@ customer_taxtable_handler (xmlNodePtr node, gpointer cust_pdata) guid = dom_tree_to_guid (node); g_return_val_if_fail (guid, FALSE); taxtable = gncTaxTableLookup (pdata->book, guid); - if (!taxtable) { - taxtable = gncTaxTableCreate (pdata->book); - gncTaxTableBeginEdit (taxtable); - gncTaxTableSetGUID (taxtable, guid); - gncTaxTableCommitEdit (taxtable); - } else - gncTaxTableDecRef (taxtable); + if (!taxtable) + { + taxtable = gncTaxTableCreate (pdata->book); + gncTaxTableBeginEdit (taxtable); + gncTaxTableSetGUID (taxtable, guid); + gncTaxTableCommitEdit (taxtable); + } + else + gncTaxTableDecRef (taxtable); gncCustomerSetTaxTable (pdata->customer, taxtable); g_free(guid); @@ -361,12 +366,13 @@ customer_taxtableoverride_handler (xmlNodePtr node, gpointer cust_pdata) static gboolean customer_slots_handler (xmlNodePtr node, gpointer cust_pdata) { - struct customer_pdata *pdata = cust_pdata; - return dom_tree_to_kvp_frame_given (node, - qof_instance_get_slots (QOF_INSTANCE(pdata->customer))); + struct customer_pdata *pdata = cust_pdata; + return dom_tree_to_kvp_frame_given (node, + qof_instance_get_slots (QOF_INSTANCE(pdata->customer))); } -static struct dom_tree_handler customer_handlers_v2[] = { +static struct dom_tree_handler customer_handlers_v2[] = +{ { cust_name_string, customer_name_handler, 1, 0 }, { cust_guid_string, customer_guid_handler, 1, 0 }, { cust_id_string, customer_id_handler, 1, 0 }, @@ -400,7 +406,7 @@ dom_tree_to_customer (xmlNodePtr node, QofBook *book) &cust_pdata); if (successful) - gncCustomerCommitEdit (cust_pdata.customer); + gncCustomerCommitEdit (cust_pdata.customer); else { PERR ("failed to parse customer tree"); @@ -413,9 +419,9 @@ dom_tree_to_customer (xmlNodePtr node, QofBook *book) static gboolean gnc_customer_end_handler(gpointer data_for_children, - GSList* data_from_children, GSList* sibling_data, - gpointer parent_data, gpointer global_data, - gpointer *result, const gchar *tag) + GSList* data_from_children, GSList* sibling_data, + gpointer parent_data, gpointer global_data, + gpointer *result, const gchar *tag) { int successful; GncCustomer *cust; @@ -425,14 +431,14 @@ gnc_customer_end_handler(gpointer data_for_children, successful = TRUE; - if(parent_data) + if (parent_data) { return TRUE; } /* OK. For some messed up reason this is getting called again with a NULL tag. So we ignore those cases */ - if(!tag) + if (!tag) { return TRUE; } @@ -440,7 +446,7 @@ gnc_customer_end_handler(gpointer data_for_children, g_return_val_if_fail(tree, FALSE); cust = dom_tree_to_customer(tree, book); - if(cust != NULL) + if (cust != NULL) { gdata->cb(tag, gdata->parsedata, cust); } @@ -453,86 +459,87 @@ gnc_customer_end_handler(gpointer data_for_children, static sixtp * customer_sixtp_parser_create(void) { - return sixtp_dom_parser_new(gnc_customer_end_handler, NULL, NULL); + return sixtp_dom_parser_new(gnc_customer_end_handler, NULL, NULL); } static gboolean customer_should_be_saved (GncCustomer *customer) { - const char *id; + const char *id; - /* make sure this is a valid customer before we save it -- should have an ID */ - id = gncCustomerGetID (customer); - if (id == NULL || *id == '\0') - return FALSE; + /* make sure this is a valid customer before we save it -- should have an ID */ + id = gncCustomerGetID (customer); + if (id == NULL || *id == '\0') + return FALSE; - return TRUE; + return TRUE; } static void do_count (QofInstance * cust_p, gpointer count_p) { - int *count = count_p; - if (customer_should_be_saved ((GncCustomer *)cust_p)) - (*count)++; + int *count = count_p; + if (customer_should_be_saved ((GncCustomer *)cust_p)) + (*count)++; } static int customer_get_count (QofBook *book) { - int count = 0; - qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); - return count; + int count = 0; + qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); + return count; } static void xml_add_customer (QofInstance * cust_p, gpointer out_p) { - xmlNodePtr node; - GncCustomer *cust = (GncCustomer *) cust_p; - FILE *out = out_p; + xmlNodePtr node; + GncCustomer *cust = (GncCustomer *) cust_p; + FILE *out = out_p; - if (ferror(out)) - return; - if (!customer_should_be_saved (cust)) - return; + if (ferror(out)) + return; + if (!customer_should_be_saved (cust)) + return; - node = customer_dom_tree_create (cust); - xmlElemDump(out, NULL, node); - xmlFreeNode (node); - if (ferror(out) || fprintf(out, "\n") < 0) - return; + node = customer_dom_tree_create (cust); + xmlElemDump(out, NULL, node); + xmlFreeNode (node); + if (ferror(out) || fprintf(out, "\n") < 0) + return; } static gboolean customer_write (FILE *out, QofBook *book) { - qof_object_foreach (_GNC_MOD_NAME, book, xml_add_customer, (gpointer) out); - return ferror(out) == 0; + qof_object_foreach (_GNC_MOD_NAME, book, xml_add_customer, (gpointer) out); + return ferror(out) == 0; } static gboolean customer_ns(FILE *out) { - g_return_val_if_fail(out, FALSE); - return gnc_xml2_write_namespace_decl(out, "cust"); + g_return_val_if_fail(out, FALSE); + return gnc_xml2_write_namespace_decl(out, "cust"); } void gnc_customer_xml_initialize (void) { - static GncXmlDataType_t be_data = { - GNC_FILE_BACKEND_VERS, - gnc_customer_string, - customer_sixtp_parser_create, - NULL, /* add_item */ - customer_get_count, - customer_write, - NULL, /* scrub */ - customer_ns, - }; + static GncXmlDataType_t be_data = + { + GNC_FILE_BACKEND_VERS, + gnc_customer_string, + customer_sixtp_parser_create, + NULL, /* add_item */ + customer_get_count, + customer_write, + NULL, /* scrub */ + customer_ns, + }; - qof_object_register_backend (_GNC_MOD_NAME, - GNC_FILE_BACKEND, - &be_data); + qof_object_register_backend (_GNC_MOD_NAME, + GNC_FILE_BACKEND, + &be_data); } diff --git a/src/business/business-core/xml/gnc-employee-xml-v2.c b/src/business/business-core/xml/gnc-employee-xml-v2.c index 3eb02a57c9..e6eb8e7f3d 100644 --- a/src/business/business-core/xml/gnc-employee-xml-v2.c +++ b/src/business/business-core/xml/gnc-employee-xml-v2.c @@ -69,8 +69,8 @@ const gchar *employee_version_string = "2.0.0"; static void maybe_add_string (xmlNodePtr ptr, const char *tag, const char *str) { - if (str && strlen(str) > 0) - xmlAddChild (ptr, text_to_dom_tree (tag, str)); + if (str && strlen(str) > 0) + xmlAddChild (ptr, text_to_dom_tree (tag, str)); } static xmlNodePtr @@ -84,23 +84,23 @@ employee_dom_tree_create (GncEmployee *employee) xmlSetProp(ret, BAD_CAST "version", BAD_CAST employee_version_string); xmlAddChild(ret, guid_to_dom_tree(employee_guid_string, - qof_instance_get_guid(QOF_INSTANCE (employee)))); + qof_instance_get_guid(QOF_INSTANCE (employee)))); xmlAddChild(ret, text_to_dom_tree(employee_username_string, gncEmployeeGetUsername (employee))); - + xmlAddChild(ret, text_to_dom_tree(employee_id_string, gncEmployeeGetID (employee))); xmlAddChild(ret, gnc_address_to_dom_tree(employee_addr_string, - gncEmployeeGetAddr (employee))); - + gncEmployeeGetAddr (employee))); + maybe_add_string (ret, employee_language_string, - gncEmployeeGetLanguage (employee)); + gncEmployeeGetLanguage (employee)); maybe_add_string (ret, employee_acl_string, gncEmployeeGetAcl (employee)); xmlAddChild(ret, int_to_dom_tree(employee_active_string, - gncEmployeeGetActive (employee))); + gncEmployeeGetActive (employee))); num = gncEmployeeGetWorkday (employee); xmlAddChild(ret, gnc_numeric_to_dom_tree (employee_workday_string, &num)); @@ -109,17 +109,17 @@ employee_dom_tree_create (GncEmployee *employee) xmlAddChild(ret, gnc_numeric_to_dom_tree (employee_rate_string, &num)); xmlAddChild - (ret, - commodity_ref_to_dom_tree(employee_currency_string, - gncEmployeeGetCurrency (employee))); + (ret, + commodity_ref_to_dom_tree(employee_currency_string, + gncEmployeeGetCurrency (employee))); ccard_acc = gncEmployeeGetCCard (employee); if (ccard_acc) - xmlAddChild(ret, guid_to_dom_tree(employee_ccard_string, - qof_instance_get_guid(QOF_INSTANCE(ccard_acc)))); + xmlAddChild(ret, guid_to_dom_tree(employee_ccard_string, + qof_instance_get_guid(QOF_INSTANCE(ccard_acc)))); kvpnode = kvp_frame_to_dom_tree (employee_slots_string, - qof_instance_get_slots (QOF_INSTANCE(employee))); + qof_instance_get_slots (QOF_INSTANCE(employee))); if (kvpnode) xmlAddChild (ret, kvpnode); return ret; @@ -129,22 +129,22 @@ employee_dom_tree_create (GncEmployee *employee) struct employee_pdata { - GncEmployee *employee; - QofBook *book; + GncEmployee *employee; + QofBook *book; }; static gboolean set_string(xmlNodePtr node, GncEmployee* employee, void (*func)(GncEmployee *employee, const char *txt)) { - char* txt = dom_tree_to_text(node); - g_return_val_if_fail(txt, FALSE); - - func(employee, txt); - - g_free(txt); - - return TRUE; + char* txt = dom_tree_to_text(node); + g_return_val_if_fail(txt, FALSE); + + func(employee, txt); + + g_free(txt); + + return TRUE; } static gboolean @@ -167,16 +167,19 @@ employee_guid_handler (xmlNodePtr node, gpointer employee_pdata) /* See if we've already created this one */ employee = gncEmployeeLookup (pdata->book, guid); - if (employee) { - gncEmployeeDestroy (pdata->employee); - pdata->employee = employee; - gncEmployeeBeginEdit (employee); - } else { - gncEmployeeSetGUID(pdata->employee, guid); + if (employee) + { + gncEmployeeDestroy (pdata->employee); + pdata->employee = employee; + gncEmployeeBeginEdit (employee); + } + else + { + gncEmployeeSetGUID(pdata->employee, guid); } g_free(guid); - + return TRUE; } @@ -221,7 +224,7 @@ employee_active_handler (xmlNodePtr node, gpointer employee_pdata) ret = dom_tree_to_integer(node, &val); if (ret) - gncEmployeeSetActive(pdata->employee, (gboolean)val); + gncEmployeeSetActive(pdata->employee, (gboolean)val); return ret; } @@ -292,10 +295,11 @@ employee_slots_handler (xmlNodePtr node, gpointer employee_pdata) { struct employee_pdata *pdata = employee_pdata; return dom_tree_to_kvp_frame_given ( - node, qof_instance_get_slots (QOF_INSTANCE(pdata->employee))); + node, qof_instance_get_slots (QOF_INSTANCE(pdata->employee))); } -static struct dom_tree_handler employee_handlers_v2[] = { +static struct dom_tree_handler employee_handlers_v2[] = +{ { employee_username_string, employee_username_handler, 1, 0 }, { employee_guid_string, employee_guid_handler, 1, 0 }, { employee_id_string, employee_id_handler, 1, 0 }, @@ -325,7 +329,7 @@ dom_tree_to_employee (xmlNodePtr node, QofBook *book) successful = dom_tree_generic_parse (node, employee_handlers_v2, &employee_pdata); if (successful) - gncEmployeeCommitEdit (employee_pdata.employee); + gncEmployeeCommitEdit (employee_pdata.employee); else { PERR ("failed to parse employee tree"); @@ -338,9 +342,9 @@ dom_tree_to_employee (xmlNodePtr node, QofBook *book) static gboolean gnc_employee_end_handler(gpointer data_for_children, - GSList* data_from_children, GSList* sibling_data, - gpointer parent_data, gpointer global_data, - gpointer *result, const gchar *tag) + GSList* data_from_children, GSList* sibling_data, + gpointer parent_data, gpointer global_data, + gpointer *result, const gchar *tag) { int successful; GncEmployee *employee; @@ -350,14 +354,14 @@ gnc_employee_end_handler(gpointer data_for_children, successful = TRUE; - if(parent_data) + if (parent_data) { return TRUE; } /* OK. For some messed up reason this is getting called again with a NULL tag. So we ignore those cases */ - if(!tag) + if (!tag) { return TRUE; } @@ -365,7 +369,7 @@ gnc_employee_end_handler(gpointer data_for_children, g_return_val_if_fail(tree, FALSE); employee = dom_tree_to_employee(tree, book); - if(employee != NULL) + if (employee != NULL) { gdata->cb(tag, gdata->parsedata, employee); } @@ -378,86 +382,87 @@ gnc_employee_end_handler(gpointer data_for_children, static sixtp * employee_sixtp_parser_create(void) { - return sixtp_dom_parser_new(gnc_employee_end_handler, NULL, NULL); + return sixtp_dom_parser_new(gnc_employee_end_handler, NULL, NULL); } static gboolean employee_should_be_saved (GncEmployee *employee) { - const char *id; + const char *id; - /* make sure this is a valid employee before we save it -- should have an ID */ - id = gncEmployeeGetID (employee); - if (id == NULL || *id == '\0') - return FALSE; + /* make sure this is a valid employee before we save it -- should have an ID */ + id = gncEmployeeGetID (employee); + if (id == NULL || *id == '\0') + return FALSE; - return TRUE; + return TRUE; } static void do_count (QofInstance * employee_p, gpointer count_p) { - int *count = count_p; - if (employee_should_be_saved ((GncEmployee *) employee_p)) - (*count)++; + int *count = count_p; + if (employee_should_be_saved ((GncEmployee *) employee_p)) + (*count)++; } static int employee_get_count (QofBook *book) { - int count = 0; - qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); - return count; + int count = 0; + qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); + return count; } static void xml_add_employee (QofInstance * employee_p, gpointer out_p) { - xmlNodePtr node; - GncEmployee *employee = (GncEmployee *) employee_p; - FILE *out = out_p; + xmlNodePtr node; + GncEmployee *employee = (GncEmployee *) employee_p; + FILE *out = out_p; - if (ferror(out)) - return; - if (!employee_should_be_saved (employee)) - return; + if (ferror(out)) + return; + if (!employee_should_be_saved (employee)) + return; - node = employee_dom_tree_create (employee); - xmlElemDump(out, NULL, node); - xmlFreeNode (node); - if (ferror(out) || fprintf(out, "\n") < 0) - return; + node = employee_dom_tree_create (employee); + xmlElemDump(out, NULL, node); + xmlFreeNode (node); + if (ferror(out) || fprintf(out, "\n") < 0) + return; } static gboolean employee_write (FILE *out, QofBook *book) { - qof_object_foreach (_GNC_MOD_NAME, book, xml_add_employee, (gpointer) out); - return ferror(out) == 0; + qof_object_foreach (_GNC_MOD_NAME, book, xml_add_employee, (gpointer) out); + return ferror(out) == 0; } static gboolean employee_ns(FILE *out) { - g_return_val_if_fail(out, FALSE); - return gnc_xml2_write_namespace_decl(out, "employee"); + g_return_val_if_fail(out, FALSE); + return gnc_xml2_write_namespace_decl(out, "employee"); } void gnc_employee_xml_initialize (void) { - static GncXmlDataType_t be_data = { - GNC_FILE_BACKEND_VERS, - gnc_employee_string, - employee_sixtp_parser_create, - NULL, /* add_item */ - employee_get_count, - employee_write, - NULL, /* scrub */ - employee_ns, - }; + static GncXmlDataType_t be_data = + { + GNC_FILE_BACKEND_VERS, + gnc_employee_string, + employee_sixtp_parser_create, + NULL, /* add_item */ + employee_get_count, + employee_write, + NULL, /* scrub */ + employee_ns, + }; - qof_object_register_backend (_GNC_MOD_NAME, - GNC_FILE_BACKEND, - &be_data); + qof_object_register_backend (_GNC_MOD_NAME, + GNC_FILE_BACKEND, + &be_data); } diff --git a/src/business/business-core/xml/gnc-entry-xml-v2.c b/src/business/business-core/xml/gnc-entry-xml-v2.c index 66250cf149..4f3277651b 100644 --- a/src/business/business-core/xml/gnc-entry-xml-v2.c +++ b/src/business/business-core/xml/gnc-entry-xml-v2.c @@ -95,15 +95,15 @@ const gchar *entry_version_string = "2.0.0"; static void maybe_add_string (xmlNodePtr ptr, const char *tag, const char *str) { - if (str && strlen(str) > 0) - xmlAddChild (ptr, text_to_dom_tree (tag, str)); + if (str && strlen(str) > 0) + xmlAddChild (ptr, text_to_dom_tree (tag, str)); } static void maybe_add_numeric (xmlNodePtr ptr, const char *tag, gnc_numeric num) { - if (!gnc_numeric_zero_p (num)) - xmlAddChild (ptr, gnc_numeric_to_dom_tree (tag, &num)); + if (!gnc_numeric_zero_p (num)) + xmlAddChild (ptr, gnc_numeric_to_dom_tree (tag, &num)); } static xmlNodePtr @@ -120,16 +120,16 @@ entry_dom_tree_create (GncEntry *entry) xmlSetProp(ret, BAD_CAST "version", BAD_CAST entry_version_string); xmlAddChild(ret, guid_to_dom_tree(entry_guid_string, - qof_instance_get_guid(QOF_INSTANCE(entry)))); + qof_instance_get_guid(QOF_INSTANCE(entry)))); ts = gncEntryGetDate (entry); xmlAddChild(ret, timespec_to_dom_tree (entry_date_string, &ts)); ts = gncEntryGetDateEntered (entry); xmlAddChild(ret, timespec_to_dom_tree (entry_dateentered_string, &ts)); - + maybe_add_string (ret, entry_description_string, - gncEntryGetDescription (entry)); + gncEntryGetDescription (entry)); maybe_add_string (ret, entry_action_string, gncEntryGetAction (entry)); maybe_add_string (ret, entry_notes_string, gncEntryGetNotes (entry)); @@ -139,75 +139,77 @@ entry_dom_tree_create (GncEntry *entry) acc = gncEntryGetInvAccount (entry); if (acc) - xmlAddChild (ret, guid_to_dom_tree (entry_invacct_string, - qof_instance_get_guid(QOF_INSTANCE(acc)))); + xmlAddChild (ret, guid_to_dom_tree (entry_invacct_string, + qof_instance_get_guid(QOF_INSTANCE(acc)))); maybe_add_numeric (ret, entry_iprice_string, gncEntryGetInvPrice (entry)); maybe_add_numeric (ret, entry_idiscount_string, gncEntryGetInvDiscount (entry)); - + invoice = gncEntryGetInvoice (entry); - if (invoice) { - xmlAddChild (ret, guid_to_dom_tree (entry_invoice_string, - qof_instance_get_guid(QOF_INSTANCE(invoice)))); + if (invoice) + { + xmlAddChild (ret, guid_to_dom_tree (entry_invoice_string, + qof_instance_get_guid(QOF_INSTANCE(invoice)))); - xmlAddChild(ret, text_to_dom_tree(entry_idisctype_string, - gncAmountTypeToString ( - gncEntryGetInvDiscountType (entry)))); - xmlAddChild(ret, text_to_dom_tree(entry_idischow_string, - gncEntryDiscountHowToString ( - gncEntryGetInvDiscountHow (entry)))); + xmlAddChild(ret, text_to_dom_tree(entry_idisctype_string, + gncAmountTypeToString ( + gncEntryGetInvDiscountType (entry)))); + xmlAddChild(ret, text_to_dom_tree(entry_idischow_string, + gncEntryDiscountHowToString ( + gncEntryGetInvDiscountHow (entry)))); - xmlAddChild(ret, int_to_dom_tree(entry_itaxable_string, - gncEntryGetInvTaxable (entry))); - xmlAddChild(ret, int_to_dom_tree(entry_itaxincluded_string, - gncEntryGetInvTaxIncluded (entry))); + xmlAddChild(ret, int_to_dom_tree(entry_itaxable_string, + gncEntryGetInvTaxable (entry))); + xmlAddChild(ret, int_to_dom_tree(entry_itaxincluded_string, + gncEntryGetInvTaxIncluded (entry))); } taxtable = gncEntryGetInvTaxTable (entry); if (taxtable) - xmlAddChild (ret, guid_to_dom_tree (entry_itaxtable_string, - qof_instance_get_guid (QOF_INSTANCE(taxtable)))); + xmlAddChild (ret, guid_to_dom_tree (entry_itaxtable_string, + qof_instance_get_guid (QOF_INSTANCE(taxtable)))); /* vendor bills */ acc = gncEntryGetBillAccount (entry); if (acc) - xmlAddChild (ret, guid_to_dom_tree (entry_billacct_string, - qof_instance_get_guid (QOF_INSTANCE(acc)))); + xmlAddChild (ret, guid_to_dom_tree (entry_billacct_string, + qof_instance_get_guid (QOF_INSTANCE(acc)))); maybe_add_numeric (ret, entry_bprice_string, gncEntryGetBillPrice (entry)); invoice = gncEntryGetBill (entry); - if (invoice) { - GncOwner *owner; - xmlAddChild (ret, guid_to_dom_tree (entry_bill_string, - qof_instance_get_guid(QOF_INSTANCE(invoice)))); - xmlAddChild(ret, int_to_dom_tree(entry_billable_string, - gncEntryGetBillable (entry))); - owner = gncEntryGetBillTo (entry); - if (owner && owner->owner.undefined != NULL) - xmlAddChild (ret, gnc_owner_to_dom_tree (entry_billto_string, owner)); + if (invoice) + { + GncOwner *owner; + xmlAddChild (ret, guid_to_dom_tree (entry_bill_string, + qof_instance_get_guid(QOF_INSTANCE(invoice)))); + xmlAddChild(ret, int_to_dom_tree(entry_billable_string, + gncEntryGetBillable (entry))); + owner = gncEntryGetBillTo (entry); + if (owner && owner->owner.undefined != NULL) + xmlAddChild (ret, gnc_owner_to_dom_tree (entry_billto_string, owner)); - xmlAddChild(ret, int_to_dom_tree(entry_btaxable_string, - gncEntryGetBillTaxable (entry))); - xmlAddChild(ret, int_to_dom_tree(entry_btaxincluded_string, - gncEntryGetBillTaxIncluded (entry))); - maybe_add_string (ret, entry_billpayment_string, - gncEntryPaymentTypeToString (gncEntryGetBillPayment (entry))); + xmlAddChild(ret, int_to_dom_tree(entry_btaxable_string, + gncEntryGetBillTaxable (entry))); + xmlAddChild(ret, int_to_dom_tree(entry_btaxincluded_string, + gncEntryGetBillTaxIncluded (entry))); + maybe_add_string (ret, entry_billpayment_string, + gncEntryPaymentTypeToString (gncEntryGetBillPayment (entry))); } taxtable = gncEntryGetBillTaxTable (entry); if (taxtable) - xmlAddChild (ret, guid_to_dom_tree (entry_btaxtable_string, - qof_instance_get_guid (QOF_INSTANCE(taxtable)))); + xmlAddChild (ret, guid_to_dom_tree (entry_btaxtable_string, + qof_instance_get_guid (QOF_INSTANCE(taxtable)))); /* Other stuff */ order = gncEntryGetOrder (entry); if (order) - xmlAddChild (ret, guid_to_dom_tree (entry_order_string, - qof_instance_get_guid(QOF_INSTANCE (order)))); + xmlAddChild (ret, guid_to_dom_tree (entry_order_string, + qof_instance_get_guid(QOF_INSTANCE (order)))); return ret; } @@ -216,61 +218,61 @@ entry_dom_tree_create (GncEntry *entry) struct entry_pdata { - GncEntry *entry; - QofBook *book; - Account *acc; + GncEntry *entry; + QofBook *book; + Account *acc; }; static inline gboolean set_string(xmlNodePtr node, GncEntry* entry, void (*func)(GncEntry *entry, const char *txt)) { - char* txt = dom_tree_to_text(node); - g_return_val_if_fail(txt, FALSE); - - func(entry, txt); - g_free(txt); - return TRUE; + char* txt = dom_tree_to_text(node); + g_return_val_if_fail(txt, FALSE); + + func(entry, txt); + g_free(txt); + return TRUE; } static inline gboolean set_timespec(xmlNodePtr node, GncEntry* entry, - void (*func)(GncEntry *entry, Timespec ts)) + void (*func)(GncEntry *entry, Timespec ts)) { - Timespec ts = dom_tree_to_timespec (node); - if (!dom_tree_valid_timespec(&ts, node->name)) return FALSE; - - func(entry, ts); - return TRUE; + Timespec ts = dom_tree_to_timespec (node); + if (!dom_tree_valid_timespec(&ts, node->name)) return FALSE; + + func(entry, ts); + return TRUE; } static inline gboolean set_numeric(xmlNodePtr node, GncEntry* entry, - void (*func)(GncEntry *entry, gnc_numeric num)) + void (*func)(GncEntry *entry, gnc_numeric num)) { - gnc_numeric* num = dom_tree_to_gnc_numeric(node); - g_return_val_if_fail(num, FALSE); - - func(entry, *num); - g_free(num); - return TRUE; + gnc_numeric* num = dom_tree_to_gnc_numeric(node); + g_return_val_if_fail(num, FALSE); + + func(entry, *num); + g_free(num); + return TRUE; } static inline gboolean set_boolean(xmlNodePtr node, GncEntry* entry, - void (*func)(GncEntry *entry, gboolean val)) + void (*func)(GncEntry *entry, gboolean val)) { gint64 val; if (!dom_tree_to_integer(node, &val)) - return FALSE; + return FALSE; func (entry, (gboolean)val); return TRUE; } static inline gboolean set_account(xmlNodePtr node, struct entry_pdata *pdata, - void (*func)(GncEntry *entry, Account *acc)) + void (*func)(GncEntry *entry, Account *acc)) { GUID *guid; Account * acc; @@ -282,15 +284,15 @@ set_account(xmlNodePtr node, struct entry_pdata *pdata, g_return_val_if_fail (acc, FALSE); if (func) - func (pdata->entry, acc); + func (pdata->entry, acc); else - pdata->acc = acc; + pdata->acc = acc; return TRUE; } static inline gboolean set_taxtable (xmlNodePtr node, struct entry_pdata *pdata, - void (*func)(GncEntry *entry, GncTaxTable *taxtable)) + void (*func)(GncEntry *entry, GncTaxTable *taxtable)) { GUID *guid; GncTaxTable *taxtable; @@ -298,13 +300,15 @@ set_taxtable (xmlNodePtr node, struct entry_pdata *pdata, guid = dom_tree_to_guid (node); g_return_val_if_fail (guid, FALSE); taxtable = gncTaxTableLookup (pdata->book, guid); - if (!taxtable) { - taxtable = gncTaxTableCreate (pdata->book); - gncTaxTableBeginEdit (taxtable); - gncTaxTableSetGUID (taxtable, guid); - gncTaxTableCommitEdit (taxtable); - } else - gncTaxTableDecRef (taxtable); + if (!taxtable) + { + taxtable = gncTaxTableCreate (pdata->book); + gncTaxTableBeginEdit (taxtable); + gncTaxTableSetGUID (taxtable, guid); + gncTaxTableCommitEdit (taxtable); + } + else + gncTaxTableDecRef (taxtable); func (pdata->entry, taxtable); g_free(guid); @@ -321,16 +325,19 @@ entry_guid_handler (xmlNodePtr node, gpointer entry_pdata) guid = dom_tree_to_guid(node); g_return_val_if_fail (guid, FALSE); entry = gncEntryLookup (pdata->book, guid); - if (entry) { - gncEntryDestroy (pdata->entry); - pdata->entry = entry; - gncEntryBeginEdit (entry); - } else { - gncEntrySetGUID(pdata->entry, guid); + if (entry) + { + gncEntryDestroy (pdata->entry); + pdata->entry = entry; + gncEntryBeginEdit (entry); + } + else + { + gncEntrySetGUID(pdata->entry, guid); } g_free(guid); - + return TRUE; } @@ -422,7 +429,7 @@ entry_idisctype_handler (xmlNodePtr node, gpointer entry_pdata) g_free (str); if (ret) - gncEntrySetInvDiscountType(pdata->entry, type); + gncEntrySetInvDiscountType(pdata->entry, type); return ret; } @@ -442,7 +449,7 @@ entry_idischow_handler (xmlNodePtr node, gpointer entry_pdata) g_free (str); if (ret) - gncEntrySetInvDiscountHow(pdata->entry, how); + gncEntrySetInvDiscountHow(pdata->entry, how); return ret; } @@ -516,15 +523,15 @@ entry_billable_handler (xmlNodePtr node, gpointer entry_pdata) static gboolean entry_billto_handler (xmlNodePtr node, gpointer entry_pdata) { - struct entry_pdata *pdata = entry_pdata; - GncOwner billto; - gboolean ret; + struct entry_pdata *pdata = entry_pdata; + GncOwner billto; + gboolean ret; - ret = gnc_dom_tree_to_owner (node, &billto, pdata->book); - if (ret) - gncEntrySetBillTo (pdata->entry, &billto); + ret = gnc_dom_tree_to_owner (node, &billto, pdata->book); + if (ret) + gncEntrySetBillTo (pdata->entry, &billto); - return ret; + return ret; } /* employee bills */ @@ -543,7 +550,7 @@ entry_billpayment_handler (xmlNodePtr node, gpointer entry_pdata) g_free (str); if (ret) - gncEntrySetBillPayment(pdata->entry, type); + gncEntrySetBillPayment(pdata->entry, type); return ret; } @@ -560,11 +567,12 @@ entry_order_handler (xmlNodePtr node, gpointer entry_pdata) guid = dom_tree_to_guid (node); g_return_val_if_fail (guid, FALSE); order = gncOrderLookup (pdata->book, guid); - if (!order) { - order = gncOrderCreate (pdata->book); - gncOrderBeginEdit (order); - gncOrderSetGUID (order, guid); - gncOrderCommitEdit (order); + if (!order) + { + order = gncOrderCreate (pdata->book); + gncOrderBeginEdit (order); + gncOrderSetGUID (order, guid); + gncOrderCommitEdit (order); } gncOrderBeginEdit (order); gncOrderAddEntry (order, pdata->entry); @@ -584,11 +592,12 @@ entry_invoice_handler (xmlNodePtr node, gpointer entry_pdata) guid = dom_tree_to_guid (node); g_return_val_if_fail (guid, FALSE); invoice = gncInvoiceLookup (pdata->book, guid); - if (!invoice) { - invoice = gncInvoiceCreate (pdata->book); - gncInvoiceBeginEdit (invoice); - gncInvoiceSetGUID (invoice, guid); - gncInvoiceCommitEdit (invoice); + if (!invoice) + { + invoice = gncInvoiceCreate (pdata->book); + gncInvoiceBeginEdit (invoice); + gncInvoiceSetGUID (invoice, guid); + gncInvoiceCommitEdit (invoice); } gncInvoiceBeginEdit (invoice); gncInvoiceAddEntry (invoice, pdata->entry); @@ -608,11 +617,12 @@ entry_bill_handler (xmlNodePtr node, gpointer entry_pdata) guid = dom_tree_to_guid (node); g_return_val_if_fail (guid, FALSE); invoice = gncInvoiceLookup (pdata->book, guid); - if (!invoice) { - invoice = gncInvoiceCreate (pdata->book); - gncInvoiceBeginEdit (invoice); - gncInvoiceSetGUID (invoice, guid); - gncInvoiceCommitEdit (invoice); + if (!invoice) + { + invoice = gncInvoiceCreate (pdata->book); + gncInvoiceBeginEdit (invoice); + gncInvoiceSetGUID (invoice, guid); + gncInvoiceCommitEdit (invoice); } gncInvoiceBeginEdit (invoice); gncBillAddEntry (invoice, pdata->entry); @@ -644,17 +654,18 @@ entry_price_handler (xmlNodePtr node, gpointer entry_pdata) /* just set both.. Don't worry about extra data if it's wrong */ res = set_numeric(node, pdata->entry, gncEntrySetInvPrice); if (res) - gncEntrySetBillPrice (pdata->entry, gncEntryGetInvPrice (pdata->entry)); + gncEntrySetBillPrice (pdata->entry, gncEntryGetInvPrice (pdata->entry)); return res; } static gboolean entry_slots_handler (xmlNodePtr node, gpointer entry_pdata) { - return TRUE; + return TRUE; } -static struct dom_tree_handler entry_handlers_v2[] = { +static struct dom_tree_handler entry_handlers_v2[] = +{ { entry_guid_string, entry_guid_handler, 1, 0 }, { entry_date_string, entry_date_handler, 1, 0 }, { entry_dateentered_string, entry_dateentered_handler, 1, 0 }, @@ -716,15 +727,16 @@ dom_tree_to_entry (xmlNodePtr node, QofBook *book) successful = dom_tree_generic_parse (node, entry_handlers_v2, &entry_pdata); - if (entry_pdata.acc != NULL) { - if (gncEntryGetBill (entry_pdata.entry)) - gncEntrySetBillAccount (entry_pdata.entry, entry_pdata.acc); - else - gncEntrySetInvAccount (entry_pdata.entry, entry_pdata.acc); + if (entry_pdata.acc != NULL) + { + if (gncEntryGetBill (entry_pdata.entry)) + gncEntrySetBillAccount (entry_pdata.entry, entry_pdata.acc); + else + gncEntrySetInvAccount (entry_pdata.entry, entry_pdata.acc); } if (successful) - gncEntryCommitEdit (entry_pdata.entry); + gncEntryCommitEdit (entry_pdata.entry); else { PERR ("failed to parse entry tree"); @@ -737,9 +749,9 @@ dom_tree_to_entry (xmlNodePtr node, QofBook *book) static gboolean gnc_entry_end_handler(gpointer data_for_children, - GSList* data_from_children, GSList* sibling_data, - gpointer parent_data, gpointer global_data, - gpointer *result, const gchar *tag) + GSList* data_from_children, GSList* sibling_data, + gpointer parent_data, gpointer global_data, + gpointer *result, const gchar *tag) { int successful; GncEntry *entry; @@ -749,14 +761,14 @@ gnc_entry_end_handler(gpointer data_for_children, successful = TRUE; - if(parent_data) + if (parent_data) { return TRUE; } /* OK. For some messed up reason this is getting called again with a NULL tag. So we ignore those cases */ - if(!tag) + if (!tag) { return TRUE; } @@ -764,7 +776,7 @@ gnc_entry_end_handler(gpointer data_for_children, g_return_val_if_fail(tree, FALSE); entry = dom_tree_to_entry(tree, book); - if(entry != NULL) + if (entry != NULL) { gdata->cb(tag, gdata->parsedata, entry); } @@ -777,75 +789,76 @@ gnc_entry_end_handler(gpointer data_for_children, static sixtp * entry_sixtp_parser_create(void) { - return sixtp_dom_parser_new(gnc_entry_end_handler, NULL, NULL); + return sixtp_dom_parser_new(gnc_entry_end_handler, NULL, NULL); } static void do_count (QofInstance * entry_p, gpointer count_p) { - int *count = count_p; - (*count)++; + int *count = count_p; + (*count)++; } static int entry_get_count (QofBook *book) { - int count = 0; - qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); - return count; + int count = 0; + qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); + return count; } static void xml_add_entry (QofInstance * entry_p, gpointer out_p) { - xmlNodePtr node; - GncEntry *entry = (GncEntry *) entry_p; - FILE *out = out_p; + xmlNodePtr node; + GncEntry *entry = (GncEntry *) entry_p; + FILE *out = out_p; - if (ferror(out)) - return; + if (ferror(out)) + return; - /* Don't save non-attached entries! */ - if (!(gncEntryGetOrder (entry) || gncEntryGetInvoice (entry) || - gncEntryGetBill (entry))) - return; + /* Don't save non-attached entries! */ + if (!(gncEntryGetOrder (entry) || gncEntryGetInvoice (entry) || + gncEntryGetBill (entry))) + return; - node = entry_dom_tree_create (entry); - xmlElemDump(out, NULL, node); - xmlFreeNode (node); - if (ferror(out) || fprintf(out, "\n") < 0) - return; + node = entry_dom_tree_create (entry); + xmlElemDump(out, NULL, node); + xmlFreeNode (node); + if (ferror(out) || fprintf(out, "\n") < 0) + return; } static gboolean entry_write (FILE *out, QofBook *book) { - qof_object_foreach (_GNC_MOD_NAME, book, xml_add_entry, (gpointer) out); - return ferror(out) == 0; + qof_object_foreach (_GNC_MOD_NAME, book, xml_add_entry, (gpointer) out); + return ferror(out) == 0; } static gboolean entry_ns(FILE *out) { - g_return_val_if_fail(out, FALSE); - return gnc_xml2_write_namespace_decl(out, "entry"); + g_return_val_if_fail(out, FALSE); + return gnc_xml2_write_namespace_decl(out, "entry"); } void gnc_entry_xml_initialize (void) { - static GncXmlDataType_t be_data = { - GNC_FILE_BACKEND_VERS, - gnc_entry_string, - entry_sixtp_parser_create, - NULL, /* add_item */ - entry_get_count, - entry_write, - NULL, /* scrub */ - entry_ns, - }; + static GncXmlDataType_t be_data = + { + GNC_FILE_BACKEND_VERS, + gnc_entry_string, + entry_sixtp_parser_create, + NULL, /* add_item */ + entry_get_count, + entry_write, + NULL, /* scrub */ + entry_ns, + }; - qof_object_register_backend (_GNC_MOD_NAME, - GNC_FILE_BACKEND, - &be_data); + qof_object_register_backend (_GNC_MOD_NAME, + GNC_FILE_BACKEND, + &be_data); } diff --git a/src/business/business-core/xml/gnc-invoice-xml-v2.c b/src/business/business-core/xml/gnc-invoice-xml-v2.c index 2ee04eae44..b565456a0b 100644 --- a/src/business/business-core/xml/gnc-invoice-xml-v2.c +++ b/src/business/business-core/xml/gnc-invoice-xml-v2.c @@ -75,15 +75,15 @@ const gchar *invoice_version_string = "2.0.0"; static void maybe_add_string (xmlNodePtr ptr, const char *tag, const char *str) { - if (str && strlen(str) > 0) - xmlAddChild (ptr, text_to_dom_tree (tag, str)); + if (str && strlen(str) > 0) + xmlAddChild (ptr, text_to_dom_tree (tag, str)); } static void maybe_add_timespec (xmlNodePtr ptr, const char *tag, Timespec ts) { - if (ts.tv_sec || ts.tv_nsec) - xmlAddChild (ptr, timespec_to_dom_tree (tag, &ts)); + if (ts.tv_sec || ts.tv_nsec) + xmlAddChild (ptr, timespec_to_dom_tree (tag, &ts)); } static xmlNodePtr @@ -102,59 +102,59 @@ invoice_dom_tree_create (GncInvoice *invoice) xmlSetProp(ret, BAD_CAST "version", BAD_CAST invoice_version_string); xmlAddChild(ret, guid_to_dom_tree(invoice_guid_string, - qof_instance_get_guid(QOF_INSTANCE(invoice)))); + qof_instance_get_guid(QOF_INSTANCE(invoice)))); xmlAddChild(ret, text_to_dom_tree(invoice_id_string, gncInvoiceGetID (invoice))); xmlAddChild(ret, gnc_owner_to_dom_tree (invoice_owner_string, - gncInvoiceGetOwner (invoice))); + gncInvoiceGetOwner (invoice))); ts = gncInvoiceGetDateOpened (invoice); xmlAddChild(ret, timespec_to_dom_tree (invoice_opened_string, &ts)); maybe_add_timespec (ret, invoice_posted_string, - gncInvoiceGetDatePosted (invoice)); - + gncInvoiceGetDatePosted (invoice)); + term = gncInvoiceGetTerms (invoice); if (term) - xmlAddChild(ret, guid_to_dom_tree(invoice_terms_string, - qof_instance_get_guid (QOF_INSTANCE(term)))); - + xmlAddChild(ret, guid_to_dom_tree(invoice_terms_string, + qof_instance_get_guid (QOF_INSTANCE(term)))); + maybe_add_string (ret, invoice_billing_id_string, - gncInvoiceGetBillingID (invoice)); + gncInvoiceGetBillingID (invoice)); maybe_add_string (ret, invoice_notes_string, gncInvoiceGetNotes (invoice)); xmlAddChild(ret, int_to_dom_tree(invoice_active_string, - gncInvoiceGetActive (invoice))); + gncInvoiceGetActive (invoice))); txn = gncInvoiceGetPostedTxn (invoice); if (txn) - xmlAddChild (ret, guid_to_dom_tree (invoice_posttxn_string, - xaccTransGetGUID (txn))); + xmlAddChild (ret, guid_to_dom_tree (invoice_posttxn_string, + xaccTransGetGUID (txn))); lot = gncInvoiceGetPostedLot (invoice); if (lot) - xmlAddChild (ret, guid_to_dom_tree (invoice_postlot_string, - gnc_lot_get_guid (lot))); + xmlAddChild (ret, guid_to_dom_tree (invoice_postlot_string, + gnc_lot_get_guid (lot))); acc = gncInvoiceGetPostedAcc (invoice); if (acc) - xmlAddChild (ret, guid_to_dom_tree (invoice_postacc_string, - qof_instance_get_guid(QOF_INSTANCE(acc)))); + xmlAddChild (ret, guid_to_dom_tree (invoice_postacc_string, + qof_instance_get_guid(QOF_INSTANCE(acc)))); xmlAddChild - (ret, - commodity_ref_to_dom_tree(invoice_currency_string, - gncInvoiceGetCurrency (invoice))); + (ret, + commodity_ref_to_dom_tree(invoice_currency_string, + gncInvoiceGetCurrency (invoice))); billto = gncInvoiceGetBillTo (invoice); if (billto && billto->owner.undefined != NULL) - xmlAddChild (ret, gnc_owner_to_dom_tree (invoice_billto_string, billto)); + xmlAddChild (ret, gnc_owner_to_dom_tree (invoice_billto_string, billto)); amt = gncInvoiceGetToChargeAmount (invoice); if (! gnc_numeric_zero_p (amt)) - xmlAddChild (ret, gnc_numeric_to_dom_tree (invoice_tochargeamt_string, &amt)); + xmlAddChild (ret, gnc_numeric_to_dom_tree (invoice_tochargeamt_string, &amt)); return ret; } @@ -163,32 +163,32 @@ invoice_dom_tree_create (GncInvoice *invoice) struct invoice_pdata { - GncInvoice *invoice; - QofBook *book; + GncInvoice *invoice; + QofBook *book; }; static inline gboolean set_string(xmlNodePtr node, GncInvoice* invoice, void (*func)(GncInvoice *invoice, const char *txt)) { - char* txt = dom_tree_to_text(node); - g_return_val_if_fail(txt, FALSE); - - func(invoice, txt); - - g_free(txt); - return TRUE; + char* txt = dom_tree_to_text(node); + g_return_val_if_fail(txt, FALSE); + + func(invoice, txt); + + g_free(txt); + return TRUE; } static inline gboolean set_timespec(xmlNodePtr node, GncInvoice* invoice, - void (*func)(GncInvoice *invoice, Timespec ts)) + void (*func)(GncInvoice *invoice, Timespec ts)) { - Timespec ts = dom_tree_to_timespec(node); - if (!dom_tree_valid_timespec(&ts, node->name)) return FALSE; - - func(invoice, ts); - return TRUE; + Timespec ts = dom_tree_to_timespec(node); + if (!dom_tree_valid_timespec(&ts, node->name)) return FALSE; + + func(invoice, ts); + return TRUE; } static gboolean @@ -201,16 +201,19 @@ invoice_guid_handler (xmlNodePtr node, gpointer invoice_pdata) guid = dom_tree_to_guid(node); g_return_val_if_fail (guid, FALSE); invoice = gncInvoiceLookup (pdata->book, guid); - if (invoice) { - gncInvoiceDestroy (pdata->invoice); - pdata->invoice = invoice; - gncInvoiceBeginEdit (invoice); - } else { - gncInvoiceSetGUID(pdata->invoice, guid); + if (invoice) + { + gncInvoiceDestroy (pdata->invoice); + pdata->invoice = invoice; + gncInvoiceBeginEdit (invoice); + } + else + { + gncInvoiceSetGUID(pdata->invoice, guid); } g_free(guid); - + return TRUE; } @@ -225,15 +228,15 @@ invoice_id_handler (xmlNodePtr node, gpointer invoice_pdata) static gboolean invoice_owner_handler (xmlNodePtr node, gpointer invoice_pdata) { - struct invoice_pdata *pdata = invoice_pdata; - GncOwner owner; - gboolean ret; + struct invoice_pdata *pdata = invoice_pdata; + GncOwner owner; + gboolean ret; - ret = gnc_dom_tree_to_owner (node, &owner, pdata->book); - if (ret) - gncInvoiceSetOwner (pdata->invoice, &owner); + ret = gnc_dom_tree_to_owner (node, &owner, pdata->book); + if (ret) + gncInvoiceSetOwner (pdata->invoice, &owner); - return ret; + return ret; } static gboolean @@ -277,7 +280,7 @@ invoice_active_handler (xmlNodePtr node, gpointer invoice_pdata) ret = dom_tree_to_integer(node, &val); if (ret) - gncInvoiceSetActive(pdata->invoice, (gboolean)val); + gncInvoiceSetActive(pdata->invoice, (gboolean)val); return ret; } @@ -295,7 +298,7 @@ invoice_terms_handler (xmlNodePtr node, gpointer invoice_pdata) g_assert(term); g_free (guid); gncInvoiceSetTerms (pdata->invoice, term); - + return TRUE; } @@ -367,36 +370,37 @@ invoice_currency_handler (xmlNodePtr node, gpointer invoice_pdata) static gboolean invoice_billto_handler (xmlNodePtr node, gpointer invoice_pdata) { - struct invoice_pdata *pdata = invoice_pdata; - GncOwner owner; - gboolean ret; + struct invoice_pdata *pdata = invoice_pdata; + GncOwner owner; + gboolean ret; - ret = gnc_dom_tree_to_owner (node, &owner, pdata->book); - if (ret) - gncInvoiceSetBillTo (pdata->invoice, &owner); + ret = gnc_dom_tree_to_owner (node, &owner, pdata->book); + if (ret) + gncInvoiceSetBillTo (pdata->invoice, &owner); - return ret; + return ret; } static gboolean invoice_tochargeamt_handler (xmlNodePtr node, gpointer invoice_pdata) { - struct invoice_pdata *pdata = invoice_pdata; - gnc_numeric* num = dom_tree_to_gnc_numeric(node); - g_return_val_if_fail(num, FALSE); - - gncInvoiceSetToChargeAmount (pdata->invoice, *num); - g_free(num); - return TRUE; + struct invoice_pdata *pdata = invoice_pdata; + gnc_numeric* num = dom_tree_to_gnc_numeric(node); + g_return_val_if_fail(num, FALSE); + + gncInvoiceSetToChargeAmount (pdata->invoice, *num); + g_free(num); + return TRUE; } static gboolean invoice_slots_handler (xmlNodePtr node, gpointer invoice_pdata) { - return TRUE; + return TRUE; } -static struct dom_tree_handler invoice_handlers_v2[] = { +static struct dom_tree_handler invoice_handlers_v2[] = +{ { invoice_guid_string, invoice_guid_handler, 1, 0 }, { invoice_id_string, invoice_id_handler, 1, 0 }, { invoice_owner_string, invoice_owner_handler, 1, 0 }, @@ -431,7 +435,7 @@ dom_tree_to_invoice (xmlNodePtr node, QofBook *book) &invoice_pdata); if (successful) - gncInvoiceCommitEdit (invoice_pdata.invoice); + gncInvoiceCommitEdit (invoice_pdata.invoice); else { PERR ("failed to parse invoice tree"); @@ -444,9 +448,9 @@ dom_tree_to_invoice (xmlNodePtr node, QofBook *book) static gboolean gnc_invoice_end_handler(gpointer data_for_children, - GSList* data_from_children, GSList* sibling_data, - gpointer parent_data, gpointer global_data, - gpointer *result, const gchar *tag) + GSList* data_from_children, GSList* sibling_data, + gpointer parent_data, gpointer global_data, + gpointer *result, const gchar *tag) { int successful; GncInvoice *invoice; @@ -456,14 +460,14 @@ gnc_invoice_end_handler(gpointer data_for_children, successful = TRUE; - if(parent_data) + if (parent_data) { return TRUE; } /* OK. For some messed up reason this is getting called again with a NULL tag. So we ignore those cases */ - if(!tag) + if (!tag) { return TRUE; } @@ -471,7 +475,7 @@ gnc_invoice_end_handler(gpointer data_for_children, g_return_val_if_fail(tree, FALSE); invoice = dom_tree_to_invoice(tree, book); - if(invoice != NULL) + if (invoice != NULL) { gdata->cb(tag, gdata->parsedata, invoice); } @@ -484,86 +488,87 @@ gnc_invoice_end_handler(gpointer data_for_children, static sixtp * invoice_sixtp_parser_create(void) { - return sixtp_dom_parser_new(gnc_invoice_end_handler, NULL, NULL); + return sixtp_dom_parser_new(gnc_invoice_end_handler, NULL, NULL); } static gboolean invoice_should_be_saved (GncInvoice *invoice) { - const char *id; + const char *id; - /* make sure this is a valid invoice before we save it -- should have an ID */ - id = gncInvoiceGetID (invoice); - if (id == NULL || *id == '\0') - return FALSE; + /* make sure this is a valid invoice before we save it -- should have an ID */ + id = gncInvoiceGetID (invoice); + if (id == NULL || *id == '\0') + return FALSE; - return TRUE; + return TRUE; } static void do_count (QofInstance * invoice_p, gpointer count_p) { - int *count = count_p; - if (invoice_should_be_saved ((GncInvoice *)invoice_p)) - (*count)++; + int *count = count_p; + if (invoice_should_be_saved ((GncInvoice *)invoice_p)) + (*count)++; } static int invoice_get_count (QofBook *book) { - int count = 0; - qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); - return count; + int count = 0; + qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); + return count; } static void xml_add_invoice (QofInstance * invoice_p, gpointer out_p) { - xmlNodePtr node; - GncInvoice *invoice = (GncInvoice *) invoice_p; - FILE *out = out_p; + xmlNodePtr node; + GncInvoice *invoice = (GncInvoice *) invoice_p; + FILE *out = out_p; - if (ferror(out)) - return; - if (!invoice_should_be_saved (invoice)) - return; + if (ferror(out)) + return; + if (!invoice_should_be_saved (invoice)) + return; - node = invoice_dom_tree_create (invoice); - xmlElemDump(out, NULL, node); - xmlFreeNode (node); - if (ferror(out) || fprintf(out, "\n") < 0) - return; + node = invoice_dom_tree_create (invoice); + xmlElemDump(out, NULL, node); + xmlFreeNode (node); + if (ferror(out) || fprintf(out, "\n") < 0) + return; } static gboolean invoice_write (FILE *out, QofBook *book) { - qof_object_foreach (_GNC_MOD_NAME, book, xml_add_invoice, (gpointer) out); - return ferror(out) == 0; + qof_object_foreach (_GNC_MOD_NAME, book, xml_add_invoice, (gpointer) out); + return ferror(out) == 0; } static gboolean invoice_ns(FILE *out) { - g_return_val_if_fail(out, FALSE); - return gnc_xml2_write_namespace_decl(out, "invoice"); + g_return_val_if_fail(out, FALSE); + return gnc_xml2_write_namespace_decl(out, "invoice"); } void gnc_invoice_xml_initialize (void) { - static GncXmlDataType_t be_data = { - GNC_FILE_BACKEND_VERS, - gnc_invoice_string, - invoice_sixtp_parser_create, - NULL, /* add_item */ - invoice_get_count, - invoice_write, - NULL, /* scrub */ - invoice_ns, - }; + static GncXmlDataType_t be_data = + { + GNC_FILE_BACKEND_VERS, + gnc_invoice_string, + invoice_sixtp_parser_create, + NULL, /* add_item */ + invoice_get_count, + invoice_write, + NULL, /* scrub */ + invoice_ns, + }; - qof_object_register_backend (_GNC_MOD_NAME, - GNC_FILE_BACKEND, - &be_data); + qof_object_register_backend (_GNC_MOD_NAME, + GNC_FILE_BACKEND, + &be_data); } diff --git a/src/business/business-core/xml/gnc-job-xml-v2.c b/src/business/business-core/xml/gnc-job-xml-v2.c index 1336e8ffd9..4e4b066ef0 100644 --- a/src/business/business-core/xml/gnc-job-xml-v2.c +++ b/src/business/business-core/xml/gnc-job-xml-v2.c @@ -71,21 +71,21 @@ job_dom_tree_create (GncJob *job) xmlSetProp(ret, BAD_CAST "version", BAD_CAST job_version_string); xmlAddChild(ret, guid_to_dom_tree(job_guid_string, - qof_instance_get_guid (QOF_INSTANCE (job)))); + qof_instance_get_guid (QOF_INSTANCE (job)))); xmlAddChild(ret, text_to_dom_tree(job_id_string, gncJobGetID (job))); xmlAddChild(ret, text_to_dom_tree(job_name_string, gncJobGetName (job))); - + maybe_add_string (ret, job_reference_string, gncJobGetReference (job)); xmlAddChild(ret, gnc_owner_to_dom_tree (job_owner_string, - gncJobGetOwner (job))); + gncJobGetOwner (job))); xmlAddChild(ret, int_to_dom_tree(job_active_string, - gncJobGetActive (job))); + gncJobGetActive (job))); return ret; } @@ -94,22 +94,22 @@ job_dom_tree_create (GncJob *job) struct job_pdata { - GncJob *job; - QofBook *book; + GncJob *job; + QofBook *book; }; static gboolean set_string(xmlNodePtr node, GncJob* job, void (*func)(GncJob *job, const char *txt)) { - char* txt = dom_tree_to_text(node); - g_return_val_if_fail(txt, FALSE); - - func(job, txt); - - g_free(txt); - - return TRUE; + char* txt = dom_tree_to_text(node); + g_return_val_if_fail(txt, FALSE); + + func(job, txt); + + g_free(txt); + + return TRUE; } static gboolean @@ -130,16 +130,19 @@ job_guid_handler (xmlNodePtr node, gpointer job_pdata) guid = dom_tree_to_guid(node); g_return_val_if_fail(guid, FALSE); job = gncJobLookup (pdata->book, guid); - if (job) { - gncJobDestroy (pdata->job); - pdata->job = job; - gncJobBeginEdit (job); - } else { - gncJobSetGUID(pdata->job, guid); + if (job) + { + gncJobDestroy (pdata->job); + pdata->job = job; + gncJobBeginEdit (job); + } + else + { + gncJobSetGUID(pdata->job, guid); } g_free(guid); - + return TRUE; } @@ -162,15 +165,15 @@ job_reference_handler (xmlNodePtr node, gpointer job_pdata) static gboolean job_owner_handler (xmlNodePtr node, gpointer job_pdata) { - struct job_pdata *pdata = job_pdata; - GncOwner owner; - gboolean ret; + struct job_pdata *pdata = job_pdata; + GncOwner owner; + gboolean ret; - ret = gnc_dom_tree_to_owner (node, &owner, pdata->book); - if (ret) - gncJobSetOwner (pdata->job, &owner); + ret = gnc_dom_tree_to_owner (node, &owner, pdata->book); + if (ret) + gncJobSetOwner (pdata->job, &owner); - return ret; + return ret; } static gboolean @@ -182,7 +185,7 @@ job_active_handler (xmlNodePtr node, gpointer job_pdata) ret = dom_tree_to_integer(node, &val); if (ret) - gncJobSetActive(pdata->job, (gboolean)val); + gncJobSetActive(pdata->job, (gboolean)val); return ret; } @@ -190,10 +193,11 @@ job_active_handler (xmlNodePtr node, gpointer job_pdata) static gboolean job_slots_handler (xmlNodePtr node, gpointer job_pdata) { - return TRUE; + return TRUE; } -static struct dom_tree_handler job_handlers_v2[] = { +static struct dom_tree_handler job_handlers_v2[] = +{ { job_guid_string, job_guid_handler, 1, 0 }, { job_id_string, job_id_handler, 1, 0 }, { job_name_string, job_name_handler, 1, 0 }, @@ -218,7 +222,7 @@ dom_tree_to_job (xmlNodePtr node, QofBook *book) &job_pdata); if (successful) - gncJobCommitEdit (job_pdata.job); + gncJobCommitEdit (job_pdata.job); else { PERR ("failed to parse job tree"); @@ -231,9 +235,9 @@ dom_tree_to_job (xmlNodePtr node, QofBook *book) static gboolean gnc_job_end_handler(gpointer data_for_children, - GSList* data_from_children, GSList* sibling_data, - gpointer parent_data, gpointer global_data, - gpointer *result, const gchar *tag) + GSList* data_from_children, GSList* sibling_data, + gpointer parent_data, gpointer global_data, + gpointer *result, const gchar *tag) { int successful; GncJob *job; @@ -243,14 +247,14 @@ gnc_job_end_handler(gpointer data_for_children, successful = TRUE; - if(parent_data) + if (parent_data) { return TRUE; } /* OK. For some messed up reason this is getting called again with a NULL tag. So we ignore those cases */ - if(!tag) + if (!tag) { return TRUE; } @@ -258,7 +262,7 @@ gnc_job_end_handler(gpointer data_for_children, g_return_val_if_fail(tree, FALSE); job = dom_tree_to_job(tree, book); - if(job != NULL) + if (job != NULL) { gdata->cb(tag, gdata->parsedata, job); } @@ -271,86 +275,87 @@ gnc_job_end_handler(gpointer data_for_children, static sixtp * job_sixtp_parser_create(void) { - return sixtp_dom_parser_new(gnc_job_end_handler, NULL, NULL); + return sixtp_dom_parser_new(gnc_job_end_handler, NULL, NULL); } static gboolean job_should_be_saved (GncJob *job) { - const char *id; + const char *id; - /* make sure this is a valid job before we save it -- should have an ID */ - id = gncJobGetID (job); - if (id == NULL || *id == '\0') - return FALSE; + /* make sure this is a valid job before we save it -- should have an ID */ + id = gncJobGetID (job); + if (id == NULL || *id == '\0') + return FALSE; - return TRUE; + return TRUE; } static void do_count (QofInstance * job_p, gpointer count_p) { - int *count = count_p; - if (job_should_be_saved ((GncJob *)job_p)) - (*count)++; + int *count = count_p; + if (job_should_be_saved ((GncJob *)job_p)) + (*count)++; } static int job_get_count (QofBook *book) { - int count = 0; - qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); - return count; + int count = 0; + qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); + return count; } static void xml_add_job (QofInstance * job_p, gpointer out_p) { - xmlNodePtr node; - GncJob *job = (GncJob *) job_p; - FILE *out = out_p; + xmlNodePtr node; + GncJob *job = (GncJob *) job_p; + FILE *out = out_p; - if (ferror(out)) - return; - if (!job_should_be_saved (job)) - return; + if (ferror(out)) + return; + if (!job_should_be_saved (job)) + return; - node = job_dom_tree_create (job); - xmlElemDump(out, NULL, node); - xmlFreeNode (node); - if (ferror(out) || fprintf(out, "\n") < 0) - return; + node = job_dom_tree_create (job); + xmlElemDump(out, NULL, node); + xmlFreeNode (node); + if (ferror(out) || fprintf(out, "\n") < 0) + return; } static gboolean job_write (FILE *out, QofBook *book) { - qof_object_foreach (_GNC_MOD_NAME, book, xml_add_job, (gpointer) out); - return ferror(out) == 0; + qof_object_foreach (_GNC_MOD_NAME, book, xml_add_job, (gpointer) out); + return ferror(out) == 0; } static gboolean job_ns(FILE *out) { - g_return_val_if_fail(out, FALSE); - return gnc_xml2_write_namespace_decl(out, "job"); + g_return_val_if_fail(out, FALSE); + return gnc_xml2_write_namespace_decl(out, "job"); } void gnc_job_xml_initialize (void) { - static GncXmlDataType_t be_data = { - GNC_FILE_BACKEND_VERS, - gnc_job_string, - job_sixtp_parser_create, - NULL, /* add_item */ - job_get_count, - job_write, - NULL, /* scrub */ - job_ns, - }; + static GncXmlDataType_t be_data = + { + GNC_FILE_BACKEND_VERS, + gnc_job_string, + job_sixtp_parser_create, + NULL, /* add_item */ + job_get_count, + job_write, + NULL, /* scrub */ + job_ns, + }; - qof_object_register_backend (_GNC_MOD_NAME, - GNC_FILE_BACKEND, - &be_data); + qof_object_register_backend (_GNC_MOD_NAME, + GNC_FILE_BACKEND, + &be_data); } diff --git a/src/business/business-core/xml/gnc-order-xml-v2.c b/src/business/business-core/xml/gnc-order-xml-v2.c index 21456d028d..8400433993 100644 --- a/src/business/business-core/xml/gnc-order-xml-v2.c +++ b/src/business/business-core/xml/gnc-order-xml-v2.c @@ -67,8 +67,8 @@ const gchar *order_version_string = "2.0.0"; static void maybe_add_string (xmlNodePtr ptr, const char *tag, const char *str) { - if (str && strlen(str) > 0) - xmlAddChild (ptr, text_to_dom_tree (tag, str)); + if (str && strlen(str) > 0) + xmlAddChild (ptr, text_to_dom_tree (tag, str)); } static xmlNodePtr @@ -81,26 +81,26 @@ order_dom_tree_create (GncOrder *order) xmlSetProp(ret, BAD_CAST "version", BAD_CAST order_version_string); xmlAddChild(ret, guid_to_dom_tree(order_guid_string, - qof_instance_get_guid(QOF_INSTANCE (order)))); + qof_instance_get_guid(QOF_INSTANCE (order)))); xmlAddChild(ret, text_to_dom_tree(order_id_string, gncOrderGetID (order))); xmlAddChild(ret, gnc_owner_to_dom_tree (order_owner_string, - gncOrderGetOwner (order))); + gncOrderGetOwner (order))); ts = gncOrderGetDateOpened (order); xmlAddChild(ret, timespec_to_dom_tree (order_opened_string, &ts)); ts = gncOrderGetDateClosed (order); if (ts.tv_sec || ts.tv_nsec) - xmlAddChild(ret, timespec_to_dom_tree (order_closed_string, &ts)); - + xmlAddChild(ret, timespec_to_dom_tree (order_closed_string, &ts)); + maybe_add_string (ret, order_notes_string, gncOrderGetNotes (order)); maybe_add_string (ret, order_reference_string, gncOrderGetReference (order)); xmlAddChild(ret, int_to_dom_tree(order_active_string, - gncOrderGetActive (order))); + gncOrderGetActive (order))); return ret; } @@ -109,32 +109,32 @@ order_dom_tree_create (GncOrder *order) struct order_pdata { - GncOrder *order; - QofBook *book; + GncOrder *order; + QofBook *book; }; static inline gboolean set_string(xmlNodePtr node, GncOrder* order, void (*func)(GncOrder *order, const char *txt)) { - char* txt = dom_tree_to_text(node); - g_return_val_if_fail(txt, FALSE); - - func(order, txt); - - g_free(txt); - return TRUE; + char* txt = dom_tree_to_text(node); + g_return_val_if_fail(txt, FALSE); + + func(order, txt); + + g_free(txt); + return TRUE; } static inline gboolean set_timespec(xmlNodePtr node, GncOrder* order, - void (*func)(GncOrder *order, Timespec ts)) + void (*func)(GncOrder *order, Timespec ts)) { - Timespec ts = dom_tree_to_timespec(node); - if (!dom_tree_valid_timespec(&ts, node->name)) return FALSE; - - func(order, ts); - return TRUE; + Timespec ts = dom_tree_to_timespec(node); + if (!dom_tree_valid_timespec(&ts, node->name)) return FALSE; + + func(order, ts); + return TRUE; } static gboolean @@ -147,16 +147,19 @@ order_guid_handler (xmlNodePtr node, gpointer order_pdata) guid = dom_tree_to_guid(node); g_return_val_if_fail (guid, FALSE); order = gncOrderLookup (pdata->book, guid); - if (order) { - gncOrderDestroy (pdata->order); - pdata->order = order; - gncOrderBeginEdit (order); - } else { - gncOrderSetGUID(pdata->order, guid); + if (order) + { + gncOrderDestroy (pdata->order); + pdata->order = order; + gncOrderBeginEdit (order); + } + else + { + gncOrderSetGUID(pdata->order, guid); } g_free(guid); - + return TRUE; } @@ -171,15 +174,15 @@ order_id_handler (xmlNodePtr node, gpointer order_pdata) static gboolean order_owner_handler (xmlNodePtr node, gpointer order_pdata) { - struct order_pdata *pdata = order_pdata; - GncOwner owner; - gboolean ret; + struct order_pdata *pdata = order_pdata; + GncOwner owner; + gboolean ret; - ret = gnc_dom_tree_to_owner (node, &owner, pdata->book); - if (ret) - gncOrderSetOwner (pdata->order, &owner); + ret = gnc_dom_tree_to_owner (node, &owner, pdata->book); + if (ret) + gncOrderSetOwner (pdata->order, &owner); - return ret; + return ret; } static gboolean @@ -223,7 +226,7 @@ order_active_handler (xmlNodePtr node, gpointer order_pdata) ret = dom_tree_to_integer(node, &val); if (ret) - gncOrderSetActive(pdata->order, (gboolean)val); + gncOrderSetActive(pdata->order, (gboolean)val); return ret; } @@ -231,10 +234,11 @@ order_active_handler (xmlNodePtr node, gpointer order_pdata) static gboolean order_slots_handler (xmlNodePtr node, gpointer order_pdata) { - return TRUE; + return TRUE; } -static struct dom_tree_handler order_handlers_v2[] = { +static struct dom_tree_handler order_handlers_v2[] = +{ { order_guid_string, order_guid_handler, 1, 0 }, { order_id_string, order_id_handler, 1, 0 }, { order_owner_string, order_owner_handler, 1, 0 }, @@ -261,7 +265,7 @@ dom_tree_to_order (xmlNodePtr node, QofBook *book) &order_pdata); if (successful) - gncOrderCommitEdit (order_pdata.order); + gncOrderCommitEdit (order_pdata.order); else { PERR ("failed to parse order tree"); @@ -274,9 +278,9 @@ dom_tree_to_order (xmlNodePtr node, QofBook *book) static gboolean gnc_order_end_handler(gpointer data_for_children, - GSList* data_from_children, GSList* sibling_data, - gpointer parent_data, gpointer global_data, - gpointer *result, const gchar *tag) + GSList* data_from_children, GSList* sibling_data, + gpointer parent_data, gpointer global_data, + gpointer *result, const gchar *tag) { int successful; GncOrder *order; @@ -286,14 +290,14 @@ gnc_order_end_handler(gpointer data_for_children, successful = TRUE; - if(parent_data) + if (parent_data) { return TRUE; } /* OK. For some messed up reason this is getting called again with a NULL tag. So we ignore those cases */ - if(!tag) + if (!tag) { return TRUE; } @@ -301,7 +305,7 @@ gnc_order_end_handler(gpointer data_for_children, g_return_val_if_fail(tree, FALSE); order = dom_tree_to_order(tree, book); - if(order != NULL) + if (order != NULL) { gdata->cb(tag, gdata->parsedata, order); } @@ -314,86 +318,87 @@ gnc_order_end_handler(gpointer data_for_children, static sixtp * order_sixtp_parser_create(void) { - return sixtp_dom_parser_new(gnc_order_end_handler, NULL, NULL); + return sixtp_dom_parser_new(gnc_order_end_handler, NULL, NULL); } static gboolean order_should_be_saved (GncOrder *order) { - const char *id; + const char *id; - /* make sure this is a valid order before we save it -- should have an ID */ - id = gncOrderGetID (order); - if (id == NULL || *id == '\0') - return FALSE; + /* make sure this is a valid order before we save it -- should have an ID */ + id = gncOrderGetID (order); + if (id == NULL || *id == '\0') + return FALSE; - return TRUE; + return TRUE; } static void do_count (QofInstance * order_p, gpointer count_p) { - int *count = count_p; - if (order_should_be_saved ((GncOrder *) order_p)) - (*count)++; + int *count = count_p; + if (order_should_be_saved ((GncOrder *) order_p)) + (*count)++; } static int order_get_count (QofBook *book) { - int count = 0; - qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); - return count; + int count = 0; + qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); + return count; } static void xml_add_order (QofInstance * order_p, gpointer out_p) { - xmlNodePtr node; - GncOrder *order = (GncOrder *) order_p; - FILE *out = out_p; + xmlNodePtr node; + GncOrder *order = (GncOrder *) order_p; + FILE *out = out_p; - if (ferror(out)) - return; - if (!order_should_be_saved (order)) - return; + if (ferror(out)) + return; + if (!order_should_be_saved (order)) + return; - node = order_dom_tree_create (order); - xmlElemDump(out, NULL, node); - xmlFreeNode (node); - if (ferror(out) || fprintf(out, "\n") < 0) - return; + node = order_dom_tree_create (order); + xmlElemDump(out, NULL, node); + xmlFreeNode (node); + if (ferror(out) || fprintf(out, "\n") < 0) + return; } static gboolean order_write (FILE *out, QofBook *book) { - qof_object_foreach (_GNC_MOD_NAME, book, xml_add_order, (gpointer) out); - return ferror(out) == 0; + qof_object_foreach (_GNC_MOD_NAME, book, xml_add_order, (gpointer) out); + return ferror(out) == 0; } static gboolean order_ns(FILE *out) { - g_return_val_if_fail(out, FALSE); - return gnc_xml2_write_namespace_decl(out, "order"); + g_return_val_if_fail(out, FALSE); + return gnc_xml2_write_namespace_decl(out, "order"); } void gnc_order_xml_initialize (void) { - static GncXmlDataType_t be_data = { - GNC_FILE_BACKEND_VERS, - gnc_order_string, - order_sixtp_parser_create, - NULL, /* add_item */ - order_get_count, - order_write, - NULL, /* scrub */ - order_ns, - }; + static GncXmlDataType_t be_data = + { + GNC_FILE_BACKEND_VERS, + gnc_order_string, + order_sixtp_parser_create, + NULL, /* add_item */ + order_get_count, + order_write, + NULL, /* scrub */ + order_ns, + }; - qof_object_register_backend (_GNC_MOD_NAME, - GNC_FILE_BACKEND, - &be_data); + qof_object_register_backend (_GNC_MOD_NAME, + GNC_FILE_BACKEND, + &be_data); } diff --git a/src/business/business-core/xml/gnc-owner-xml-v2.c b/src/business/business-core/xml/gnc-owner-xml-v2.c index e3976615cc..2c77c6d4d8 100644 --- a/src/business/business-core/xml/gnc-owner-xml-v2.c +++ b/src/business/business-core/xml/gnc-owner-xml-v2.c @@ -61,22 +61,23 @@ gnc_owner_to_dom_tree (const char *tag, GncOwner *owner) xmlNodePtr ret; const char *type_str; - switch (gncOwnerGetType (owner)) { + switch (gncOwnerGetType (owner)) + { case GNC_OWNER_CUSTOMER: - type_str = GNC_ID_CUSTOMER; - break; + type_str = GNC_ID_CUSTOMER; + break; case GNC_OWNER_JOB: - type_str = GNC_ID_JOB; - break; + type_str = GNC_ID_JOB; + break; case GNC_OWNER_VENDOR: - type_str = GNC_ID_VENDOR; - break; + type_str = GNC_ID_VENDOR; + break; case GNC_OWNER_EMPLOYEE: - type_str = GNC_ID_EMPLOYEE; - break; + type_str = GNC_ID_EMPLOYEE; + break; default: - PWARN ("Invalid owner type: %d", gncOwnerGetType (owner)); - return NULL; + PWARN ("Invalid owner type: %d", gncOwnerGetType (owner)); + return NULL; } ret = xmlNewNode(NULL, BAD_CAST tag); @@ -84,7 +85,7 @@ gnc_owner_to_dom_tree (const char *tag, GncOwner *owner) xmlAddChild (ret, text_to_dom_tree (owner_type_string, type_str)); xmlAddChild (ret, guid_to_dom_tree (owner_id_string, - gncOwnerGetGUID (owner))); + gncOwnerGetGUID (owner))); return ret; } @@ -93,96 +94,103 @@ gnc_owner_to_dom_tree (const char *tag, GncOwner *owner) struct owner_pdata { - GncOwner *owner; - QofBook *book; + GncOwner *owner; + QofBook *book; }; static gboolean owner_type_handler (xmlNodePtr node, gpointer owner_pdata) { - struct owner_pdata *pdata = owner_pdata; - char* txt = dom_tree_to_text(node); - g_return_val_if_fail(txt, FALSE); + struct owner_pdata *pdata = owner_pdata; + char* txt = dom_tree_to_text(node); + g_return_val_if_fail(txt, FALSE); + + if (!safe_strcmp (txt, GNC_ID_CUSTOMER)) + gncOwnerInitCustomer (pdata->owner, NULL); + else if (!safe_strcmp (txt, GNC_ID_JOB)) + gncOwnerInitJob (pdata->owner, NULL); + else if (!safe_strcmp (txt, GNC_ID_VENDOR)) + gncOwnerInitVendor (pdata->owner, NULL); + else if (!safe_strcmp (txt, GNC_ID_EMPLOYEE)) + gncOwnerInitEmployee (pdata->owner, NULL); + else + { + PWARN ("Unknown owner type: %s", txt); + g_free(txt); + return FALSE; + } - if (!safe_strcmp (txt, GNC_ID_CUSTOMER)) - gncOwnerInitCustomer (pdata->owner, NULL); - else if (!safe_strcmp (txt, GNC_ID_JOB)) - gncOwnerInitJob (pdata->owner, NULL); - else if (!safe_strcmp (txt, GNC_ID_VENDOR)) - gncOwnerInitVendor (pdata->owner, NULL); - else if (!safe_strcmp (txt, GNC_ID_EMPLOYEE)) - gncOwnerInitEmployee (pdata->owner, NULL); - else { - PWARN ("Unknown owner type: %s", txt); g_free(txt); - return FALSE; - } - - g_free(txt); - return TRUE; + return TRUE; } static gboolean owner_id_handler (xmlNodePtr node, gpointer owner_pdata) { - struct owner_pdata *pdata = owner_pdata; - GUID *guid; + struct owner_pdata *pdata = owner_pdata; + GUID *guid; - guid = dom_tree_to_guid(node); - g_return_val_if_fail (guid, FALSE); + guid = dom_tree_to_guid(node); + g_return_val_if_fail (guid, FALSE); - switch (gncOwnerGetType (pdata->owner)) { - case GNC_OWNER_CUSTOMER: - { - GncCustomer *cust = gncCustomerLookup (pdata->book, guid); - if (!cust) { - cust = gncCustomerCreate (pdata->book); - gncCustomerSetGUID (cust, guid); + switch (gncOwnerGetType (pdata->owner)) + { + case GNC_OWNER_CUSTOMER: + { + GncCustomer *cust = gncCustomerLookup (pdata->book, guid); + if (!cust) + { + cust = gncCustomerCreate (pdata->book); + gncCustomerSetGUID (cust, guid); + } + gncOwnerInitCustomer (pdata->owner, cust); + break; } - gncOwnerInitCustomer (pdata->owner, cust); - break; - } - case GNC_OWNER_JOB: - { - GncJob *job = gncJobLookup (pdata->book, guid); - if (!job) { - job = gncJobCreate (pdata->book); - gncJobSetGUID (job, guid); + case GNC_OWNER_JOB: + { + GncJob *job = gncJobLookup (pdata->book, guid); + if (!job) + { + job = gncJobCreate (pdata->book); + gncJobSetGUID (job, guid); + } + gncOwnerInitJob (pdata->owner, job); + break; } - gncOwnerInitJob (pdata->owner, job); - break; - } - case GNC_OWNER_VENDOR: - { - GncVendor *vendor = gncVendorLookup (pdata->book, guid); - if (!vendor) { - vendor = gncVendorCreate (pdata->book); - gncVendorSetGUID (vendor, guid); + case GNC_OWNER_VENDOR: + { + GncVendor *vendor = gncVendorLookup (pdata->book, guid); + if (!vendor) + { + vendor = gncVendorCreate (pdata->book); + gncVendorSetGUID (vendor, guid); + } + gncOwnerInitVendor (pdata->owner, vendor); + break; } - gncOwnerInitVendor (pdata->owner, vendor); - break; - } - case GNC_OWNER_EMPLOYEE: - { - GncEmployee *employee = gncEmployeeLookup (pdata->book, guid); - if (!employee) { - employee = gncEmployeeCreate (pdata->book); - gncEmployeeSetGUID (employee, guid); + case GNC_OWNER_EMPLOYEE: + { + GncEmployee *employee = gncEmployeeLookup (pdata->book, guid); + if (!employee) + { + employee = gncEmployeeCreate (pdata->book); + gncEmployeeSetGUID (employee, guid); + } + gncOwnerInitEmployee (pdata->owner, employee); + break; } - gncOwnerInitEmployee (pdata->owner, employee); - break; - } - default: - PWARN ("Invalid owner type: %d\n", gncOwnerGetType (pdata->owner)); + default: + PWARN ("Invalid owner type: %d\n", gncOwnerGetType (pdata->owner)); + g_free (guid); + return FALSE; + } + g_free (guid); - return FALSE; - } - - g_free (guid); - return TRUE; + return TRUE; } -static struct dom_tree_handler owner_handlers_v2[] = { +static struct dom_tree_handler owner_handlers_v2[] = +{ { owner_type_string, owner_type_handler, 1, 0 }, { owner_id_string, owner_id_handler, 1, 0 }, { NULL, 0, 0, 0 } @@ -211,25 +219,26 @@ gnc_dom_tree_to_owner (xmlNodePtr node, GncOwner *owner, QofBook *book) static gboolean owner_ns(FILE *out) { - g_return_val_if_fail(out, FALSE); - return gnc_xml2_write_namespace_decl(out, "owner"); + g_return_val_if_fail(out, FALSE); + return gnc_xml2_write_namespace_decl(out, "owner"); } void gnc_owner_xml_initialize (void) { - static GncXmlDataType_t be_data = { - GNC_FILE_BACKEND_VERS, - "gnc:Owner", - NULL, /* parser_create */ - NULL, /* add_item */ - NULL, /* get_count */ - NULL, /* write */ - NULL, /* scrub */ - owner_ns, - }; + static GncXmlDataType_t be_data = + { + GNC_FILE_BACKEND_VERS, + "gnc:Owner", + NULL, /* parser_create */ + NULL, /* add_item */ + NULL, /* get_count */ + NULL, /* write */ + NULL, /* scrub */ + owner_ns, + }; - qof_object_register_backend ("gnc:Owner", - GNC_FILE_BACKEND, - &be_data); + qof_object_register_backend ("gnc:Owner", + GNC_FILE_BACKEND, + &be_data); } diff --git a/src/business/business-core/xml/gnc-owner-xml-v2.h b/src/business/business-core/xml/gnc-owner-xml-v2.h index c86a9fb5d4..30fd1cc271 100644 --- a/src/business/business-core/xml/gnc-owner-xml-v2.h +++ b/src/business/business-core/xml/gnc-owner-xml-v2.h @@ -27,7 +27,7 @@ #include "qof.h" gboolean gnc_dom_tree_to_owner (xmlNodePtr node, GncOwner *owner, - QofBook *book); + QofBook *book); xmlNodePtr gnc_owner_to_dom_tree (const char *tag, GncOwner *addr); void gnc_owner_xml_initialize (void); diff --git a/src/business/business-core/xml/gnc-tax-table-xml-v2.c b/src/business/business-core/xml/gnc-tax-table-xml-v2.c index 16d5428351..b5d116fc97 100644 --- a/src/business/business-core/xml/gnc-tax-table-xml-v2.c +++ b/src/business/business-core/xml/gnc-tax-table-xml-v2.c @@ -70,33 +70,33 @@ const gchar *taxtable_version_string = "2.0.0"; static void maybe_add_guid (xmlNodePtr ptr, const char *tag, GncTaxTable *table) { - if (table) - xmlAddChild (ptr, guid_to_dom_tree (tag, - qof_instance_get_guid(QOF_INSTANCE(table)))); + if (table) + xmlAddChild (ptr, guid_to_dom_tree (tag, + qof_instance_get_guid(QOF_INSTANCE(table)))); } static xmlNodePtr ttentry_dom_tree_create (GncTaxTableEntry *entry) { - xmlNodePtr ret; - Account *account; - gnc_numeric amount; + xmlNodePtr ret; + Account *account; + gnc_numeric amount; - ret = xmlNewNode(NULL, BAD_CAST gnc_taxtableentry_string); + ret = xmlNewNode(NULL, BAD_CAST gnc_taxtableentry_string); - account = gncTaxTableEntryGetAccount (entry); - if (account) - xmlAddChild(ret, guid_to_dom_tree (ttentry_account_string, - qof_instance_get_guid (QOF_INSTANCE(account)))); + account = gncTaxTableEntryGetAccount (entry); + if (account) + xmlAddChild(ret, guid_to_dom_tree (ttentry_account_string, + qof_instance_get_guid (QOF_INSTANCE(account)))); - amount = gncTaxTableEntryGetAmount (entry); - xmlAddChild (ret, gnc_numeric_to_dom_tree (ttentry_amount_string, &amount)); + amount = gncTaxTableEntryGetAmount (entry); + xmlAddChild (ret, gnc_numeric_to_dom_tree (ttentry_amount_string, &amount)); - xmlAddChild(ret, text_to_dom_tree (ttentry_type_string, - gncAmountTypeToString ( - gncTaxTableEntryGetType (entry)))); + xmlAddChild(ret, text_to_dom_tree (ttentry_type_string, + gncAmountTypeToString ( + gncTaxTableEntryGetType (entry)))); - return ret; + return ret; } static xmlNodePtr @@ -110,23 +110,24 @@ taxtable_dom_tree_create (GncTaxTable *table) maybe_add_guid(ret, taxtable_guid_string, table); xmlAddChild(ret, text_to_dom_tree (taxtable_name_string, - gncTaxTableGetName (table))); + gncTaxTableGetName (table))); xmlAddChild(ret, int_to_dom_tree (taxtable_refcount_string, - gncTaxTableGetRefcount (table))); + gncTaxTableGetRefcount (table))); xmlAddChild(ret, int_to_dom_tree (taxtable_invisible_string, - gncTaxTableGetInvisible (table))); + gncTaxTableGetInvisible (table))); /* We should not be our own child */ if (gncTaxTableGetChild(table) != table) - maybe_add_guid(ret, taxtable_child_string, gncTaxTableGetChild (table)); + maybe_add_guid(ret, taxtable_child_string, gncTaxTableGetChild (table)); maybe_add_guid(ret, taxtable_parent_string, gncTaxTableGetParent (table)); entries = xmlNewChild (ret, NULL, BAD_CAST taxtable_entries_string, NULL); - for (list = gncTaxTableGetEntries (table); list; list = list->next) { - GncTaxTableEntry *entry = list->data; - xmlAddChild(entries, ttentry_dom_tree_create (entry)); + for (list = gncTaxTableGetEntries (table); list; list = list->next) + { + GncTaxTableEntry *entry = list->data; + xmlAddChild(entries, ttentry_dom_tree_create (entry)); } return ret; @@ -136,123 +137,127 @@ taxtable_dom_tree_create (GncTaxTable *table) struct ttentry_pdata { - GncTaxTableEntry *ttentry; - QofBook *book; + GncTaxTableEntry *ttentry; + QofBook *book; }; static gboolean ttentry_acct_handler (xmlNodePtr node, gpointer ttentry_pdata) { - struct ttentry_pdata *pdata = ttentry_pdata; - GUID *guid; - Account * acc; + struct ttentry_pdata *pdata = ttentry_pdata; + GUID *guid; + Account * acc; - guid = dom_tree_to_guid (node); - g_return_val_if_fail (guid, FALSE); - acc = xaccAccountLookup (guid, pdata->book); - g_free (guid); - g_return_val_if_fail (acc, FALSE); + guid = dom_tree_to_guid (node); + g_return_val_if_fail (guid, FALSE); + acc = xaccAccountLookup (guid, pdata->book); + g_free (guid); + g_return_val_if_fail (acc, FALSE); - gncTaxTableEntrySetAccount (pdata->ttentry, acc); - return TRUE; + gncTaxTableEntrySetAccount (pdata->ttentry, acc); + return TRUE; } static gboolean ttentry_type_handler (xmlNodePtr node, gpointer taxtable_pdata) { - struct ttentry_pdata *pdata = taxtable_pdata; - GncAmountType type; - char *str; - gboolean ret; + struct ttentry_pdata *pdata = taxtable_pdata; + GncAmountType type; + char *str; + gboolean ret; - str = dom_tree_to_text (node); - g_return_val_if_fail (str, FALSE); + str = dom_tree_to_text (node); + g_return_val_if_fail (str, FALSE); - ret = gncAmountStringToType (str, &type); - g_free (str); + ret = gncAmountStringToType (str, &type); + g_free (str); - if (ret) - gncTaxTableEntrySetType (pdata->ttentry, type); + if (ret) + gncTaxTableEntrySetType (pdata->ttentry, type); - return ret; + return ret; } static gboolean ttentry_amount_handler (xmlNodePtr node, gpointer ttentry_pdata) { - struct ttentry_pdata *pdata = ttentry_pdata; - gnc_numeric* num = dom_tree_to_gnc_numeric(node); - g_return_val_if_fail(num, FALSE); - - gncTaxTableEntrySetAmount (pdata->ttentry, *num); - g_free(num); - return TRUE; + struct ttentry_pdata *pdata = ttentry_pdata; + gnc_numeric* num = dom_tree_to_gnc_numeric(node); + g_return_val_if_fail(num, FALSE); + + gncTaxTableEntrySetAmount (pdata->ttentry, *num); + g_free(num); + return TRUE; } -static struct dom_tree_handler ttentry_handlers_v2[] = { - { ttentry_account_string, ttentry_acct_handler, 0, 0 }, - { ttentry_type_string, ttentry_type_handler, 1, 0 }, - { ttentry_amount_string, ttentry_amount_handler, 1, 0 }, - { NULL, 0, 0, 0 } +static struct dom_tree_handler ttentry_handlers_v2[] = +{ + { ttentry_account_string, ttentry_acct_handler, 0, 0 }, + { ttentry_type_string, ttentry_type_handler, 1, 0 }, + { ttentry_amount_string, ttentry_amount_handler, 1, 0 }, + { NULL, 0, 0, 0 } }; static GncTaxTableEntry* dom_tree_to_ttentry (xmlNodePtr node, QofBook *book) { - struct ttentry_pdata ttentry_pdata; - gboolean successful; - - ttentry_pdata.ttentry = gncTaxTableEntryCreate (); - ttentry_pdata.book = book; + struct ttentry_pdata ttentry_pdata; + gboolean successful; - successful = dom_tree_generic_parse (node, ttentry_handlers_v2, - &ttentry_pdata); + ttentry_pdata.ttentry = gncTaxTableEntryCreate (); + ttentry_pdata.book = book; - if (!successful) { - PERR ("failed to parse tax table entry tree"); - gncTaxTableEntryDestroy (ttentry_pdata.ttentry); - ttentry_pdata.ttentry = NULL; - } + successful = dom_tree_generic_parse (node, ttentry_handlers_v2, + &ttentry_pdata); - return ttentry_pdata.ttentry; + if (!successful) + { + PERR ("failed to parse tax table entry tree"); + gncTaxTableEntryDestroy (ttentry_pdata.ttentry); + ttentry_pdata.ttentry = NULL; + } + + return ttentry_pdata.ttentry; } /***********************************************************************/ struct taxtable_pdata { - GncTaxTable *table; - QofBook *book; + GncTaxTable *table; + QofBook *book; }; static gboolean set_parent_child (xmlNodePtr node, struct taxtable_pdata *pdata, - void (*func)(GncTaxTable *, GncTaxTable *)) + void (*func)(GncTaxTable *, GncTaxTable *)) { - GUID *guid; - GncTaxTable *table; + GUID *guid; + GncTaxTable *table; - guid = dom_tree_to_guid(node); - g_return_val_if_fail (guid, FALSE); - table = gncTaxTableLookup (pdata->book, guid); + guid = dom_tree_to_guid(node); + g_return_val_if_fail (guid, FALSE); + table = gncTaxTableLookup (pdata->book, guid); + + /* Ignore pointers to self */ + if (table == pdata->table) + { + PINFO ("found a self-referential parent/child; ignoring.\n"); + return TRUE; + } + + if (!table) + { + table = gncTaxTableCreate (pdata->book); + gncTaxTableBeginEdit (table); + gncTaxTableSetGUID (table, guid); + gncTaxTableCommitEdit (table); + } + g_free (guid); + g_return_val_if_fail (table, FALSE); + func (pdata->table, table); - /* Ignore pointers to self */ - if (table == pdata->table) { - PINFO ("found a self-referential parent/child; ignoring.\n"); return TRUE; - } - - if (!table) { - table = gncTaxTableCreate (pdata->book); - gncTaxTableBeginEdit (table); - gncTaxTableSetGUID (table, guid); - gncTaxTableCommitEdit (table); - } - g_free (guid); - g_return_val_if_fail (table, FALSE); - func (pdata->table, table); - - return TRUE; } static gboolean @@ -265,104 +270,109 @@ taxtable_guid_handler (xmlNodePtr node, gpointer taxtable_pdata) guid = dom_tree_to_guid(node); g_return_val_if_fail (guid, FALSE); table = gncTaxTableLookup (pdata->book, guid); - if (table) { - gncTaxTableDestroy (pdata->table); - pdata->table = table; - gncTaxTableBeginEdit (table); - } else { - gncTaxTableSetGUID(pdata->table, guid); + if (table) + { + gncTaxTableDestroy (pdata->table); + pdata->table = table; + gncTaxTableBeginEdit (table); + } + else + { + gncTaxTableSetGUID(pdata->table, guid); } g_free(guid); - + return TRUE; } static gboolean taxtable_name_handler (xmlNodePtr node, gpointer taxtable_pdata) { - struct taxtable_pdata *pdata = taxtable_pdata; - char* txt = dom_tree_to_text(node); - g_return_val_if_fail(txt, FALSE); - - gncTaxTableSetName (pdata->table, txt); - g_free(txt); - return TRUE; + struct taxtable_pdata *pdata = taxtable_pdata; + char* txt = dom_tree_to_text(node); + g_return_val_if_fail(txt, FALSE); + + gncTaxTableSetName (pdata->table, txt); + g_free(txt); + return TRUE; } static gboolean taxtable_refcount_handler (xmlNodePtr node, gpointer taxtable_pdata) { - struct taxtable_pdata *pdata = taxtable_pdata; - gint64 val; + struct taxtable_pdata *pdata = taxtable_pdata; + gint64 val; - dom_tree_to_integer(node, &val); - gncTaxTableSetRefcount (pdata->table, val); - return TRUE; + dom_tree_to_integer(node, &val); + gncTaxTableSetRefcount (pdata->table, val); + return TRUE; } static gboolean taxtable_invisible_handler (xmlNodePtr node, gpointer taxtable_pdata) { - struct taxtable_pdata *pdata = taxtable_pdata; - gint64 val; + struct taxtable_pdata *pdata = taxtable_pdata; + gint64 val; - dom_tree_to_integer(node, &val); - if (val) - gncTaxTableMakeInvisible (pdata->table); - return TRUE; + dom_tree_to_integer(node, &val); + if (val) + gncTaxTableMakeInvisible (pdata->table); + return TRUE; } static gboolean taxtable_parent_handler (xmlNodePtr node, gpointer taxtable_pdata) { - struct taxtable_pdata *pdata = taxtable_pdata; - return set_parent_child (node, pdata, gncTaxTableSetParent); + struct taxtable_pdata *pdata = taxtable_pdata; + return set_parent_child (node, pdata, gncTaxTableSetParent); } static gboolean taxtable_child_handler (xmlNodePtr node, gpointer taxtable_pdata) { - struct taxtable_pdata *pdata = taxtable_pdata; - return set_parent_child (node, pdata, gncTaxTableSetChild); + struct taxtable_pdata *pdata = taxtable_pdata; + return set_parent_child (node, pdata, gncTaxTableSetChild); } static gboolean taxtable_entries_handler (xmlNodePtr node, gpointer taxtable_pdata) { - struct taxtable_pdata *pdata = taxtable_pdata; - xmlNodePtr mark; + struct taxtable_pdata *pdata = taxtable_pdata; + xmlNodePtr mark; - g_return_val_if_fail (node, FALSE); - g_return_val_if_fail (node->xmlChildrenNode, FALSE); + g_return_val_if_fail (node, FALSE); + g_return_val_if_fail (node->xmlChildrenNode, FALSE); - for (mark = node->xmlChildrenNode; mark; mark = mark->next) { - GncTaxTableEntry *entry; - - if (safe_strcmp ("text", (char*)mark->name) == 0) - continue; + for (mark = node->xmlChildrenNode; mark; mark = mark->next) + { + GncTaxTableEntry *entry; - if (safe_strcmp (gnc_taxtableentry_string, (char*)mark->name)) - return FALSE; + if (safe_strcmp ("text", (char*)mark->name) == 0) + continue; - entry = dom_tree_to_ttentry (mark, pdata->book); + if (safe_strcmp (gnc_taxtableentry_string, (char*)mark->name)) + return FALSE; - if (entry) - gncTaxTableAddEntry (pdata->table, entry); - else - return FALSE; + entry = dom_tree_to_ttentry (mark, pdata->book); - } - return TRUE; + if (entry) + gncTaxTableAddEntry (pdata->table, entry); + else + return FALSE; + + } + return TRUE; } static gboolean taxtable_slots_handler (xmlNodePtr node, gpointer taxtable_pdata) { - return TRUE; + return TRUE; } -static struct dom_tree_handler taxtable_handlers_v2[] = { +static struct dom_tree_handler taxtable_handlers_v2[] = +{ { taxtable_guid_string, taxtable_guid_handler, 1, 0 }, { taxtable_name_string, taxtable_name_handler, 1, 0 }, { taxtable_refcount_string, taxtable_refcount_handler, 1, 0 }, @@ -377,33 +387,33 @@ static struct dom_tree_handler taxtable_handlers_v2[] = { static GncTaxTable* dom_tree_to_taxtable (xmlNodePtr node, QofBook *book) { - struct taxtable_pdata taxtable_pdata; - gboolean successful; - - taxtable_pdata.table = gncTaxTableCreate (book); - taxtable_pdata.book = book; - gncTaxTableBeginEdit (taxtable_pdata.table); + struct taxtable_pdata taxtable_pdata; + gboolean successful; - successful = dom_tree_generic_parse (node, taxtable_handlers_v2, - &taxtable_pdata); + taxtable_pdata.table = gncTaxTableCreate (book); + taxtable_pdata.book = book; + gncTaxTableBeginEdit (taxtable_pdata.table); - if (successful) - gncTaxTableCommitEdit (taxtable_pdata.table); - else - { - PERR ("failed to parse tax table tree"); - gncTaxTableDestroy (taxtable_pdata.table); - taxtable_pdata.table = NULL; - } + successful = dom_tree_generic_parse (node, taxtable_handlers_v2, + &taxtable_pdata); - return taxtable_pdata.table; + if (successful) + gncTaxTableCommitEdit (taxtable_pdata.table); + else + { + PERR ("failed to parse tax table tree"); + gncTaxTableDestroy (taxtable_pdata.table); + taxtable_pdata.table = NULL; + } + + return taxtable_pdata.table; } static gboolean gnc_taxtable_end_handler(gpointer data_for_children, - GSList* data_from_children, GSList* sibling_data, - gpointer parent_data, gpointer global_data, - gpointer *result, const gchar *tag) + GSList* data_from_children, GSList* sibling_data, + gpointer parent_data, gpointer global_data, + gpointer *result, const gchar *tag) { int successful; GncTaxTable *table; @@ -413,14 +423,14 @@ gnc_taxtable_end_handler(gpointer data_for_children, successful = TRUE; - if(parent_data) + if (parent_data) { return TRUE; } /* OK. For some messed up reason this is getting called again with a NULL tag. So we ignore those cases */ - if(!tag) + if (!tag) { return TRUE; } @@ -428,7 +438,7 @@ gnc_taxtable_end_handler(gpointer data_for_children, g_return_val_if_fail(tree, FALSE); table = dom_tree_to_taxtable (tree, book); - if(table != NULL) + if (table != NULL) { gdata->cb(tag, gdata->parsedata, table); } @@ -441,97 +451,99 @@ gnc_taxtable_end_handler(gpointer data_for_children, static sixtp * taxtable_sixtp_parser_create(void) { - return sixtp_dom_parser_new(gnc_taxtable_end_handler, NULL, NULL); + return sixtp_dom_parser_new(gnc_taxtable_end_handler, NULL, NULL); } static void do_count (QofInstance * table_p, gpointer count_p) { - int *count = count_p; - (*count)++; + int *count = count_p; + (*count)++; } static int taxtable_get_count (QofBook *book) { - int count = 0; - qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); - return count; + int count = 0; + qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); + return count; } static void xml_add_taxtable (QofInstance * table_p, gpointer out_p) { - xmlNodePtr node; - GncTaxTable *table = (GncTaxTable *) table_p; - FILE *out = out_p; + xmlNodePtr node; + GncTaxTable *table = (GncTaxTable *) table_p; + FILE *out = out_p; - if (ferror(out)) - return; + if (ferror(out)) + return; - node = taxtable_dom_tree_create (table); - xmlElemDump(out, NULL, node); - xmlFreeNode (node); - if (ferror(out) || fprintf(out, "\n") < 0) - return; + node = taxtable_dom_tree_create (table); + xmlElemDump(out, NULL, node); + xmlFreeNode (node); + if (ferror(out) || fprintf(out, "\n") < 0) + return; } static gboolean taxtable_write (FILE *out, QofBook *book) { - qof_object_foreach (_GNC_MOD_NAME, book, xml_add_taxtable, (gpointer) out); - return ferror(out) == 0; + qof_object_foreach (_GNC_MOD_NAME, book, xml_add_taxtable, (gpointer) out); + return ferror(out) == 0; } static gboolean taxtable_is_grandchild (GncTaxTable *table) { - return (gncTaxTableGetParent(gncTaxTableGetParent(table)) != NULL); + return (gncTaxTableGetParent(gncTaxTableGetParent(table)) != NULL); } static GncTaxTable * taxtable_find_senior (GncTaxTable *table) { - GncTaxTable *temp, *parent, *gp = NULL; + GncTaxTable *temp, *parent, *gp = NULL; - temp = table; - do { - /* See if "temp" is a grandchild */ - parent = gncTaxTableGetParent(temp); - if (!parent) - break; - gp = gncTaxTableGetParent(parent); - if (!gp) - break; + temp = table; + do + { + /* See if "temp" is a grandchild */ + parent = gncTaxTableGetParent(temp); + if (!parent) + break; + gp = gncTaxTableGetParent(parent); + if (!gp) + break; - /* Yep, this is a grandchild. Move up one generation and try again */ - temp = parent; - } while (TRUE); + /* Yep, this is a grandchild. Move up one generation and try again */ + temp = parent; + } + while (TRUE); - /* Ok, at this point temp points to the most senior child and parent - * should point to the top taxtable (and gp should be NULL). If - * parent is NULL then we are the most senior child (and have no - * children), so do nothing. If temp == table then there is no - * grandparent, so do nothing. - * - * Do something if parent != NULL && temp != table - */ - g_assert (gp == NULL); + /* Ok, at this point temp points to the most senior child and parent + * should point to the top taxtable (and gp should be NULL). If + * parent is NULL then we are the most senior child (and have no + * children), so do nothing. If temp == table then there is no + * grandparent, so do nothing. + * + * Do something if parent != NULL && temp != table + */ + g_assert (gp == NULL); - /* return the most senior table */ - return temp; + /* return the most senior table */ + return temp; } /* build a list of tax tables that are grandchildren or bogus (empty entry list). */ static void taxtable_scrub_cb (QofInstance * table_p, gpointer list_p) { - GncTaxTable *table = GNC_TAXTABLE(table_p); - GList **list = list_p; + GncTaxTable *table = GNC_TAXTABLE(table_p); + GList **list = list_p; - if (taxtable_is_grandchild(table) || gncTaxTableGetEntries(table) == NULL) - *list = g_list_prepend(*list, table); + if (taxtable_is_grandchild(table) || gncTaxTableGetEntries(table) == NULL) + *list = g_list_prepend(*list, table); } /* for each entry, check the tax tables. If the tax tables are @@ -540,154 +552,165 @@ taxtable_scrub_cb (QofInstance * table_p, gpointer list_p) static void taxtable_scrub_entries (QofInstance * entry_p, gpointer ht_p) { - GHashTable *ht = ht_p; - GncEntry *entry = GNC_ENTRY(entry_p); - GncTaxTable *table, *new_tt; - gint32 count; + GHashTable *ht = ht_p; + GncEntry *entry = GNC_ENTRY(entry_p); + GncTaxTable *table, *new_tt; + gint32 count; - table = gncEntryGetInvTaxTable(entry); - if (table) { - if (taxtable_is_grandchild(table)) { - PINFO("Fixing i-taxtable on entry %s\n", - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(entry)))); - new_tt = taxtable_find_senior(table); - gncEntryBeginEdit(entry); - gncEntrySetInvTaxTable(entry, new_tt); - gncEntryCommitEdit(entry); - table = new_tt; + table = gncEntryGetInvTaxTable(entry); + if (table) + { + if (taxtable_is_grandchild(table)) + { + PINFO("Fixing i-taxtable on entry %s\n", + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(entry)))); + new_tt = taxtable_find_senior(table); + gncEntryBeginEdit(entry); + gncEntrySetInvTaxTable(entry, new_tt); + gncEntryCommitEdit(entry); + table = new_tt; + } + if (table) + { + count = GPOINTER_TO_INT(g_hash_table_lookup(ht, table)); + count++; + g_hash_table_insert(ht, table, GINT_TO_POINTER(count)); + } } - if (table) { - count = GPOINTER_TO_INT(g_hash_table_lookup(ht, table)); - count++; - g_hash_table_insert(ht, table, GINT_TO_POINTER(count)); - } - } - table = gncEntryGetBillTaxTable(entry); - if (table) { - if (taxtable_is_grandchild(table)) { - PINFO("Fixing b-taxtable on entry %s\n", - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(entry)))); - new_tt = taxtable_find_senior(table); - gncEntryBeginEdit(entry); - gncEntrySetBillTaxTable(entry, new_tt); - gncEntryCommitEdit(entry); - table = new_tt; + table = gncEntryGetBillTaxTable(entry); + if (table) + { + if (taxtable_is_grandchild(table)) + { + PINFO("Fixing b-taxtable on entry %s\n", + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(entry)))); + new_tt = taxtable_find_senior(table); + gncEntryBeginEdit(entry); + gncEntrySetBillTaxTable(entry, new_tt); + gncEntryCommitEdit(entry); + table = new_tt; + } + if (table) + { + count = GPOINTER_TO_INT(g_hash_table_lookup(ht, table)); + count++; + g_hash_table_insert(ht, table, GINT_TO_POINTER(count)); + } } - if (table) { - count = GPOINTER_TO_INT(g_hash_table_lookup(ht, table)); - count++; - g_hash_table_insert(ht, table, GINT_TO_POINTER(count)); - } - } } static void taxtable_scrub_cust (QofInstance * cust_p, gpointer ht_p) { - GHashTable *ht = ht_p; - GncCustomer *cust = GNC_CUSTOMER(cust_p); - GncTaxTable *table; - gint32 count; - - table = gncCustomerGetTaxTable(cust); - if (table) { - count = GPOINTER_TO_INT(g_hash_table_lookup(ht, table)); - count++; - g_hash_table_insert(ht, table, GINT_TO_POINTER(count)); - } + GHashTable *ht = ht_p; + GncCustomer *cust = GNC_CUSTOMER(cust_p); + GncTaxTable *table; + gint32 count; + + table = gncCustomerGetTaxTable(cust); + if (table) + { + count = GPOINTER_TO_INT(g_hash_table_lookup(ht, table)); + count++; + g_hash_table_insert(ht, table, GINT_TO_POINTER(count)); + } } static void taxtable_scrub_vendor (QofInstance * vendor_p, gpointer ht_p) { - GHashTable *ht = ht_p; - GncVendor *vendor = GNC_VENDOR(vendor_p); - GncTaxTable *table; - gint32 count; + GHashTable *ht = ht_p; + GncVendor *vendor = GNC_VENDOR(vendor_p); + GncTaxTable *table; + gint32 count; - table = gncVendorGetTaxTable(vendor); - if (table) { - count = GPOINTER_TO_INT(g_hash_table_lookup(ht, table)); - count++; - g_hash_table_insert(ht, table, GINT_TO_POINTER(count)); - } + table = gncVendorGetTaxTable(vendor); + if (table) + { + count = GPOINTER_TO_INT(g_hash_table_lookup(ht, table)); + count++; + g_hash_table_insert(ht, table, GINT_TO_POINTER(count)); + } } static void taxtable_reset_refcount (gpointer key, gpointer value, gpointer notused) { - GncTaxTable *table = key; - gint32 count = GPOINTER_TO_INT(value); + GncTaxTable *table = key; + gint32 count = GPOINTER_TO_INT(value); - if (count != gncTaxTableGetRefcount(table) && !gncTaxTableGetInvisible(table)) { - PWARN("Fixing refcount on taxtable %s (%" G_GINT64_FORMAT " -> %d)\n", - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(table))), - gncTaxTableGetRefcount(table), count); - gncTaxTableSetRefcount(table, count); - } + if (count != gncTaxTableGetRefcount(table) && !gncTaxTableGetInvisible(table)) + { + PWARN("Fixing refcount on taxtable %s (%" G_GINT64_FORMAT " -> %d)\n", + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(table))), + gncTaxTableGetRefcount(table), count); + gncTaxTableSetRefcount(table, count); + } } static void taxtable_scrub (QofBook *book) { - GList *list = NULL; - GList *node; - GncTaxTable *parent, *table; - GHashTable *ht = g_hash_table_new(g_direct_hash, g_direct_equal); + GList *list = NULL; + GList *node; + GncTaxTable *parent, *table; + GHashTable *ht = g_hash_table_new(g_direct_hash, g_direct_equal); - qof_object_foreach (GNC_ID_ENTRY, book, taxtable_scrub_entries, ht); - qof_object_foreach (GNC_ID_CUSTOMER, book, taxtable_scrub_cust, ht); - qof_object_foreach (GNC_ID_VENDOR, book, taxtable_scrub_vendor, ht); - qof_object_foreach (GNC_ID_TAXTABLE, book, taxtable_scrub_cb, &list); + qof_object_foreach (GNC_ID_ENTRY, book, taxtable_scrub_entries, ht); + qof_object_foreach (GNC_ID_CUSTOMER, book, taxtable_scrub_cust, ht); + qof_object_foreach (GNC_ID_VENDOR, book, taxtable_scrub_vendor, ht); + qof_object_foreach (GNC_ID_TAXTABLE, book, taxtable_scrub_cb, &list); - /* destroy the list of "grandchildren" tax tables */ - for (node = list; node; node = node->next) { - table = node->data; + /* destroy the list of "grandchildren" tax tables */ + for (node = list; node; node = node->next) + { + table = node->data; - PINFO ("deleting grandchild taxtable: %s\n", - guid_to_string(qof_instance_get_guid(QOF_INSTANCE(table)))); + PINFO ("deleting grandchild taxtable: %s\n", + guid_to_string(qof_instance_get_guid(QOF_INSTANCE(table)))); - /* Make sure the parent has no children */ - parent = gncTaxTableGetParent(table); - gncTaxTableSetChild(parent, NULL); + /* Make sure the parent has no children */ + parent = gncTaxTableGetParent(table); + gncTaxTableSetChild(parent, NULL); - /* Destroy this tax table */ - gncTaxTableBeginEdit(table); - gncTaxTableDestroy(table); - } + /* Destroy this tax table */ + gncTaxTableBeginEdit(table); + gncTaxTableDestroy(table); + } - /* reset the refcounts as necessary */ - g_hash_table_foreach(ht, taxtable_reset_refcount, NULL); + /* reset the refcounts as necessary */ + g_hash_table_foreach(ht, taxtable_reset_refcount, NULL); - g_list_free(list); - g_hash_table_destroy(ht); + g_list_free(list); + g_hash_table_destroy(ht); } static gboolean taxtable_ns(FILE *out) { - g_return_val_if_fail(out, FALSE); - return - gnc_xml2_write_namespace_decl(out, "taxtable") - && gnc_xml2_write_namespace_decl(out, "tte"); + g_return_val_if_fail(out, FALSE); + return + gnc_xml2_write_namespace_decl(out, "taxtable") + && gnc_xml2_write_namespace_decl(out, "tte"); } void gnc_taxtable_xml_initialize (void) { - static GncXmlDataType_t be_data = { - GNC_FILE_BACKEND_VERS, - gnc_taxtable_string, - taxtable_sixtp_parser_create, - NULL, /* add_item */ - taxtable_get_count, - taxtable_write, - taxtable_scrub, - taxtable_ns, - }; + static GncXmlDataType_t be_data = + { + GNC_FILE_BACKEND_VERS, + gnc_taxtable_string, + taxtable_sixtp_parser_create, + NULL, /* add_item */ + taxtable_get_count, + taxtable_write, + taxtable_scrub, + taxtable_ns, + }; - qof_object_register_backend (_GNC_MOD_NAME, - GNC_FILE_BACKEND, - &be_data); + qof_object_register_backend (_GNC_MOD_NAME, + GNC_FILE_BACKEND, + &be_data); } diff --git a/src/business/business-core/xml/gnc-vendor-xml-v2.c b/src/business/business-core/xml/gnc-vendor-xml-v2.c index 34856d12d9..30da61ef7e 100644 --- a/src/business/business-core/xml/gnc-vendor-xml-v2.c +++ b/src/business/business-core/xml/gnc-vendor-xml-v2.c @@ -81,45 +81,45 @@ vendor_dom_tree_create (GncVendor *vendor) xmlSetProp(ret, BAD_CAST "version", BAD_CAST vendor_version_string); xmlAddChild(ret, guid_to_dom_tree(vendor_guid_string, - qof_instance_get_guid (QOF_INSTANCE(vendor)))); + qof_instance_get_guid (QOF_INSTANCE(vendor)))); xmlAddChild(ret, text_to_dom_tree(vendor_name_string, gncVendorGetName (vendor))); - + xmlAddChild(ret, text_to_dom_tree(vendor_id_string, gncVendorGetID (vendor))); xmlAddChild(ret, gnc_address_to_dom_tree(vendor_addr_string, - gncVendorGetAddr (vendor))); - + gncVendorGetAddr (vendor))); + maybe_add_string (ret, vendor_notes_string, gncVendorGetNotes (vendor)); term = gncVendorGetTerms (vendor); if (term) - xmlAddChild(ret, guid_to_dom_tree(vendor_terms_string, - qof_instance_get_guid(QOF_INSTANCE(term)))); + xmlAddChild(ret, guid_to_dom_tree(vendor_terms_string, + qof_instance_get_guid(QOF_INSTANCE(term)))); xmlAddChild(ret, text_to_dom_tree(vendor_taxincluded_string, - gncTaxIncludedTypeToString ( - gncVendorGetTaxIncluded (vendor)))); + gncTaxIncludedTypeToString ( + gncVendorGetTaxIncluded (vendor)))); xmlAddChild(ret, int_to_dom_tree(vendor_active_string, - gncVendorGetActive (vendor))); + gncVendorGetActive (vendor))); xmlAddChild - (ret, - commodity_ref_to_dom_tree(vendor_currency_string, - gncVendorGetCurrency (vendor))); + (ret, + commodity_ref_to_dom_tree(vendor_currency_string, + gncVendorGetCurrency (vendor))); xmlAddChild (ret, int_to_dom_tree (vendor_taxtableoverride_string, - gncVendorGetTaxTableOverride (vendor))); + gncVendorGetTaxTableOverride (vendor))); taxtable = gncVendorGetTaxTable (vendor); if (taxtable) - xmlAddChild (ret, guid_to_dom_tree (vendor_taxtable_string, - qof_instance_get_guid(QOF_INSTANCE(taxtable)))); + xmlAddChild (ret, guid_to_dom_tree (vendor_taxtable_string, + qof_instance_get_guid(QOF_INSTANCE(taxtable)))); - kvpnode = kvp_frame_to_dom_tree (vendor_slots_string, - qof_instance_get_slots (QOF_INSTANCE(vendor))); + kvpnode = kvp_frame_to_dom_tree (vendor_slots_string, + qof_instance_get_slots (QOF_INSTANCE(vendor))); if (kvpnode) xmlAddChild (ret, kvpnode); return ret; @@ -129,34 +129,34 @@ vendor_dom_tree_create (GncVendor *vendor) struct vendor_pdata { - GncVendor *vendor; - QofBook *book; + GncVendor *vendor; + QofBook *book; }; static gboolean set_string(xmlNodePtr node, GncVendor* vendor, void (*func)(GncVendor *vendor, const char *txt)) { - char* txt = dom_tree_to_text(node); - g_return_val_if_fail(txt, FALSE); - - func(vendor, txt); - - g_free(txt); - - return TRUE; + char* txt = dom_tree_to_text(node); + g_return_val_if_fail(txt, FALSE); + + func(vendor, txt); + + g_free(txt); + + return TRUE; } static gboolean set_boolean(xmlNodePtr node, GncVendor* vendor, - void (*func)(GncVendor* vendor, gboolean b)) + void (*func)(GncVendor* vendor, gboolean b)) { gint64 val; gboolean ret; ret = dom_tree_to_integer(node, &val); if (ret) - func(vendor, (gboolean)val); + func(vendor, (gboolean)val); return ret; } @@ -179,16 +179,19 @@ vendor_guid_handler (xmlNodePtr node, gpointer vendor_pdata) guid = dom_tree_to_guid(node); g_return_val_if_fail(guid, FALSE); vendor = gncVendorLookup (pdata->book, guid); - if (vendor) { - gncVendorDestroy (pdata->vendor); - pdata->vendor = vendor; - gncVendorBeginEdit (vendor); - } else { - gncVendorSetGUID(pdata->vendor, guid); + if (vendor) + { + gncVendorDestroy (pdata->vendor); + pdata->vendor = vendor; + gncVendorBeginEdit (vendor); + } + else + { + gncVendorSetGUID(pdata->vendor, guid); } g_free(guid); - + return TRUE; } @@ -221,7 +224,7 @@ vendor_terms_handler (xmlNodePtr node, gpointer vendor_pdata) g_assert(term); g_free (guid); gncVendorSetTerms (pdata->vendor, term); - + return TRUE; } @@ -248,7 +251,7 @@ vendor_taxincluded_handler (xmlNodePtr node, gpointer vendor_pdata) g_free (str); if (ret) - gncVendorSetTaxIncluded(pdata->vendor, type); + gncVendorSetTaxIncluded(pdata->vendor, type); return ret; } @@ -284,13 +287,15 @@ vendor_taxtable_handler (xmlNodePtr node, gpointer vendor_pdata) guid = dom_tree_to_guid (node); g_return_val_if_fail (guid, FALSE); taxtable = gncTaxTableLookup (pdata->book, guid); - if (!taxtable) { - taxtable = gncTaxTableCreate (pdata->book); - gncTaxTableBeginEdit (taxtable); - gncTaxTableSetGUID (taxtable, guid); - gncTaxTableCommitEdit (taxtable); - } else - gncTaxTableDecRef (taxtable); + if (!taxtable) + { + taxtable = gncTaxTableCreate (pdata->book); + gncTaxTableBeginEdit (taxtable); + gncTaxTableSetGUID (taxtable, guid); + gncTaxTableCommitEdit (taxtable); + } + else + gncTaxTableDecRef (taxtable); gncVendorSetTaxTable (pdata->vendor, taxtable); g_free(guid); @@ -309,11 +314,12 @@ vendor_slots_handler (xmlNodePtr node, gpointer vendor_pdata) { struct vendor_pdata *pdata = vendor_pdata; return dom_tree_to_kvp_frame_given ( - node, qof_instance_get_slots (QOF_INSTANCE(pdata->vendor))); + node, qof_instance_get_slots (QOF_INSTANCE(pdata->vendor))); } -static struct dom_tree_handler vendor_handlers_v2[] = { +static struct dom_tree_handler vendor_handlers_v2[] = +{ { vendor_name_string, vendor_name_handler, 1, 0 }, { vendor_guid_string, vendor_guid_handler, 1, 0 }, { vendor_id_string, vendor_id_handler, 1, 0 }, @@ -344,7 +350,7 @@ dom_tree_to_vendor (xmlNodePtr node, QofBook *book) &vendor_pdata); if (successful) - gncVendorCommitEdit (vendor_pdata.vendor); + gncVendorCommitEdit (vendor_pdata.vendor); else { PERR ("failed to parse vendor tree"); @@ -357,9 +363,9 @@ dom_tree_to_vendor (xmlNodePtr node, QofBook *book) static gboolean gnc_vendor_end_handler(gpointer data_for_children, - GSList* data_from_children, GSList* sibling_data, - gpointer parent_data, gpointer global_data, - gpointer *result, const gchar *tag) + GSList* data_from_children, GSList* sibling_data, + gpointer parent_data, gpointer global_data, + gpointer *result, const gchar *tag) { int successful; GncVendor *vendor; @@ -369,14 +375,14 @@ gnc_vendor_end_handler(gpointer data_for_children, successful = TRUE; - if(parent_data) + if (parent_data) { return TRUE; } /* OK. For some messed up reason this is getting called again with a NULL tag. So we ignore those cases */ - if(!tag) + if (!tag) { return TRUE; } @@ -384,7 +390,7 @@ gnc_vendor_end_handler(gpointer data_for_children, g_return_val_if_fail(tree, FALSE); vendor = dom_tree_to_vendor(tree, book); - if(vendor != NULL) + if (vendor != NULL) { gdata->cb(tag, gdata->parsedata, vendor); } @@ -397,86 +403,87 @@ gnc_vendor_end_handler(gpointer data_for_children, static sixtp * vendor_sixtp_parser_create(void) { - return sixtp_dom_parser_new(gnc_vendor_end_handler, NULL, NULL); + return sixtp_dom_parser_new(gnc_vendor_end_handler, NULL, NULL); } static gboolean vendor_should_be_saved (GncVendor *vendor) { - const char *id; + const char *id; - /* make sure this is a valid vendor before we save it -- should have an ID */ - id = gncVendorGetID (vendor); - if (id == NULL || *id == '\0') - return FALSE; + /* make sure this is a valid vendor before we save it -- should have an ID */ + id = gncVendorGetID (vendor); + if (id == NULL || *id == '\0') + return FALSE; - return TRUE; + return TRUE; } static void do_count (QofInstance * vendor_p, gpointer count_p) { - int *count = count_p; - if (vendor_should_be_saved ((GncVendor *)vendor_p)) - (*count)++; + int *count = count_p; + if (vendor_should_be_saved ((GncVendor *)vendor_p)) + (*count)++; } static int vendor_get_count (QofBook *book) { - int count = 0; - qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); - return count; + int count = 0; + qof_object_foreach (_GNC_MOD_NAME, book, do_count, (gpointer) &count); + return count; } static void xml_add_vendor (QofInstance * vendor_p, gpointer out_p) { - xmlNodePtr node; - GncVendor *vendor = (GncVendor *) vendor_p; - FILE *out = out_p; + xmlNodePtr node; + GncVendor *vendor = (GncVendor *) vendor_p; + FILE *out = out_p; - if (ferror(out)) - return; - if (!vendor_should_be_saved (vendor)) - return; + if (ferror(out)) + return; + if (!vendor_should_be_saved (vendor)) + return; - node = vendor_dom_tree_create (vendor); - xmlElemDump(out, NULL, node); - xmlFreeNode (node); - if (ferror(out) || fprintf(out, "\n") < 0) - return; + node = vendor_dom_tree_create (vendor); + xmlElemDump(out, NULL, node); + xmlFreeNode (node); + if (ferror(out) || fprintf(out, "\n") < 0) + return; } static gboolean vendor_write (FILE *out, QofBook *book) { - qof_object_foreach (_GNC_MOD_NAME, book, xml_add_vendor, (gpointer) out); - return ferror(out) == 0; + qof_object_foreach (_GNC_MOD_NAME, book, xml_add_vendor, (gpointer) out); + return ferror(out) == 0; } static gboolean vendor_ns(FILE *out) { - g_return_val_if_fail(out, FALSE); - return gnc_xml2_write_namespace_decl(out, "vendor"); + g_return_val_if_fail(out, FALSE); + return gnc_xml2_write_namespace_decl(out, "vendor"); } void gnc_vendor_xml_initialize (void) { - static GncXmlDataType_t be_data = { - GNC_FILE_BACKEND_VERS, - gnc_vendor_string, - vendor_sixtp_parser_create, - NULL, /* add_item */ - vendor_get_count, - vendor_write, - NULL, /* scrub */ - vendor_ns, - }; + static GncXmlDataType_t be_data = + { + GNC_FILE_BACKEND_VERS, + gnc_vendor_string, + vendor_sixtp_parser_create, + NULL, /* add_item */ + vendor_get_count, + vendor_write, + NULL, /* scrub */ + vendor_ns, + }; - qof_object_register_backend (_GNC_MOD_NAME, - GNC_FILE_BACKEND, - &be_data); + qof_object_register_backend (_GNC_MOD_NAME, + GNC_FILE_BACKEND, + &be_data); } diff --git a/src/business/business-core/xml/xml-helpers.h b/src/business/business-core/xml/xml-helpers.h index 730b5af7d6..f5dce716cc 100644 --- a/src/business/business-core/xml/xml-helpers.h +++ b/src/business/business-core/xml/xml-helpers.h @@ -6,29 +6,29 @@ static inline void maybe_add_int (xmlNodePtr ptr, const char *tag, gint val) { - if (val) - xmlAddChild (ptr, int_to_dom_tree (tag, val)); + if (val) + xmlAddChild (ptr, int_to_dom_tree (tag, val)); } static inline void maybe_add_numeric (xmlNodePtr ptr, const char *tag, gnc_numeric val) { - if (!gnc_numeric_zero_p (val)) - xmlAddChild (ptr, gnc_numeric_to_dom_tree (tag, &val)); + if (!gnc_numeric_zero_p (val)) + xmlAddChild (ptr, gnc_numeric_to_dom_tree (tag, &val)); } static inline void maybe_add_string (xmlNodePtr ptr, const char *tag, const char *str) { - if (str && strlen(str) > 0) - xmlAddChild (ptr, text_to_dom_tree (tag, str)); + if (str && strlen(str) > 0) + xmlAddChild (ptr, text_to_dom_tree (tag, str)); } static inline void maybe_add_guid (xmlNodePtr ptr, const char *tag, QofInstance *inst) { - if (inst) - xmlAddChild (ptr, guid_to_dom_tree (tag, - qof_instance_get_guid (inst))); + if (inst) + xmlAddChild (ptr, guid_to_dom_tree (tag, + qof_instance_get_guid (inst))); } diff --git a/src/business/business-gnome/business-gnome-utils.c b/src/business/business-gnome/business-gnome-utils.c index 4c1d4ef9f8..23c14ef0cb 100644 --- a/src/business/business-gnome/business-gnome-utils.c +++ b/src/business/business-gnome/business-gnome-utils.c @@ -51,344 +51,357 @@ #include "gnc-commodity.h" -typedef enum { - GNCSEARCH_TYPE_SELECT, - GNCSEARCH_TYPE_EDIT +typedef enum +{ + GNCSEARCH_TYPE_SELECT, + GNCSEARCH_TYPE_EDIT } GNCSearchType; static GtkWidget * gnc_owner_new (GtkWidget *label, GtkWidget *hbox, - QofBook *book, GncOwner *owner, - GNCSearchType type) + QofBook *book, GncOwner *owner, + GNCSearchType type) { - GtkWidget *edit; - GNCSearchCB search_cb = NULL; - const char *type_name = NULL; - const char *text = NULL; - gboolean text_editable = FALSE; + GtkWidget *edit; + GNCSearchCB search_cb = NULL; + const char *type_name = NULL; + const char *text = NULL; + gboolean text_editable = FALSE; - switch (type) { - case GNCSEARCH_TYPE_SELECT: - text = _("Select..."); - text_editable = TRUE; - break; - case GNCSEARCH_TYPE_EDIT: - text = _("Edit..."); - text_editable = FALSE; - }; + switch (type) + { + case GNCSEARCH_TYPE_SELECT: + text = _("Select..."); + text_editable = TRUE; + break; + case GNCSEARCH_TYPE_EDIT: + text = _("Edit..."); + text_editable = FALSE; + }; - switch (owner->type) { - case GNC_OWNER_NONE: - case GNC_OWNER_UNDEFINED: - return NULL; + switch (owner->type) + { + case GNC_OWNER_NONE: + case GNC_OWNER_UNDEFINED: + return NULL; - case GNC_OWNER_CUSTOMER: - if (type == GNCSEARCH_TYPE_SELECT) - search_cb = gnc_customer_search_select; - else - search_cb = gnc_customer_search_edit; - type_name = GNC_CUSTOMER_MODULE_NAME; - break; + case GNC_OWNER_CUSTOMER: + if (type == GNCSEARCH_TYPE_SELECT) + search_cb = gnc_customer_search_select; + else + search_cb = gnc_customer_search_edit; + type_name = GNC_CUSTOMER_MODULE_NAME; + break; - case GNC_OWNER_JOB: - if (type == GNCSEARCH_TYPE_SELECT) - search_cb = gnc_job_search_select; - else - search_cb = gnc_job_search_edit; - type_name = GNC_JOB_MODULE_NAME; - break; + case GNC_OWNER_JOB: + if (type == GNCSEARCH_TYPE_SELECT) + search_cb = gnc_job_search_select; + else + search_cb = gnc_job_search_edit; + type_name = GNC_JOB_MODULE_NAME; + break; - case GNC_OWNER_VENDOR: - if (type == GNCSEARCH_TYPE_SELECT) - search_cb = gnc_vendor_search_select; - else - search_cb = gnc_vendor_search_edit; - type_name = GNC_VENDOR_MODULE_NAME; - break; + case GNC_OWNER_VENDOR: + if (type == GNCSEARCH_TYPE_SELECT) + search_cb = gnc_vendor_search_select; + else + search_cb = gnc_vendor_search_edit; + type_name = GNC_VENDOR_MODULE_NAME; + break; - case GNC_OWNER_EMPLOYEE: - if (type == GNCSEARCH_TYPE_SELECT) - search_cb = gnc_employee_search_select; - else - search_cb = gnc_employee_search_edit; - type_name = GNC_EMPLOYEE_MODULE_NAME; - break; + case GNC_OWNER_EMPLOYEE: + if (type == GNCSEARCH_TYPE_SELECT) + search_cb = gnc_employee_search_select; + else + search_cb = gnc_employee_search_edit; + type_name = GNC_EMPLOYEE_MODULE_NAME; + break; - default: - g_warning ("Unknown type"); - return NULL; - } + default: + g_warning ("Unknown type"); + return NULL; + } - edit = gnc_general_search_new (type_name, text, text_editable, search_cb, book, book); - if (!edit) - return NULL; + edit = gnc_general_search_new (type_name, text, text_editable, search_cb, book, book); + if (!edit) + return NULL; - gnc_general_search_set_selected (GNC_GENERAL_SEARCH (edit), - owner->owner.undefined); - gtk_box_pack_start (GTK_BOX (hbox), edit, FALSE, FALSE, 0); - if (label) - gtk_label_set_text (GTK_LABEL (label), _(gncObjectGetTypeLabel (type_name))); + gnc_general_search_set_selected (GNC_GENERAL_SEARCH (edit), + owner->owner.undefined); + gtk_box_pack_start (GTK_BOX (hbox), edit, FALSE, FALSE, 0); + if (label) + gtk_label_set_text (GTK_LABEL (label), _(gncObjectGetTypeLabel (type_name))); - return edit; + return edit; } GtkWidget * gnc_owner_select_create (GtkWidget *label, GtkWidget *hbox, - QofBook *book, GncOwner *owner) + QofBook *book, GncOwner *owner) { - g_return_val_if_fail (hbox != NULL, NULL); - g_return_val_if_fail (book != NULL, NULL); - g_return_val_if_fail (owner != NULL, NULL); + g_return_val_if_fail (hbox != NULL, NULL); + g_return_val_if_fail (book != NULL, NULL); + g_return_val_if_fail (owner != NULL, NULL); - return gnc_owner_new (label, hbox, book, owner, GNCSEARCH_TYPE_SELECT); + return gnc_owner_new (label, hbox, book, owner, GNCSEARCH_TYPE_SELECT); } GtkWidget * gnc_owner_edit_create (GtkWidget *label, GtkWidget *hbox, - QofBook *book, GncOwner *owner) + QofBook *book, GncOwner *owner) { - g_return_val_if_fail (hbox != NULL, NULL); - g_return_val_if_fail (book != NULL, NULL); - g_return_val_if_fail (owner != NULL, NULL); + g_return_val_if_fail (hbox != NULL, NULL); + g_return_val_if_fail (book != NULL, NULL); + g_return_val_if_fail (owner != NULL, NULL); - return gnc_owner_new (label, hbox, book, owner, GNCSEARCH_TYPE_EDIT); + return gnc_owner_new (label, hbox, book, owner, GNCSEARCH_TYPE_EDIT); } void gnc_owner_get_owner (GtkWidget *widget, GncOwner *owner) { - g_return_if_fail (widget != NULL); - g_return_if_fail (owner != NULL); + g_return_if_fail (widget != NULL); + g_return_if_fail (owner != NULL); - /* We'll assume that the owner has the proper 'type' because we - * can't change it here. Hopefully the caller has it set properly - */ - owner->owner.undefined = - gnc_general_search_get_selected (GNC_GENERAL_SEARCH (widget)); + /* We'll assume that the owner has the proper 'type' because we + * can't change it here. Hopefully the caller has it set properly + */ + owner->owner.undefined = + gnc_general_search_get_selected (GNC_GENERAL_SEARCH (widget)); } void gnc_owner_set_owner (GtkWidget *widget, GncOwner *owner) { - g_return_if_fail (widget != NULL); - g_return_if_fail (owner != NULL); + g_return_if_fail (widget != NULL); + g_return_if_fail (owner != NULL); - /* We'll assume that the owner has the proper 'type' because we - * can't change it here. Hopefully the caller has it set properly - */ + /* We'll assume that the owner has the proper 'type' because we + * can't change it here. Hopefully the caller has it set properly + */ - gnc_general_search_set_selected (GNC_GENERAL_SEARCH (widget), - owner->owner.undefined); + gnc_general_search_set_selected (GNC_GENERAL_SEARCH (widget), + owner->owner.undefined); } -typedef struct _invoice_select_info { - GtkWidget *label; - QofBook *book; - GncOwner owner; - gboolean have_owner; +typedef struct _invoice_select_info +{ + GtkWidget *label; + QofBook *book; + GncOwner owner; + gboolean have_owner; } GncISI; static GNCSearchWindow * gnc_invoice_select_search_cb (gpointer start, gpointer isip) { - GncISI *isi = isip; + GncISI *isi = isip; - if (!isi) return NULL; - g_assert(isi->book); + if (!isi) return NULL; + g_assert(isi->book); - return gnc_invoice_search (start, - isi->have_owner ? &isi->owner : NULL, - isi->book); + return gnc_invoice_search (start, + isi->have_owner ? &isi->owner : NULL, + isi->book); } static void gnc_invoice_select_search_set_label(GncISI* isi) { - GncOwnerType owner_type; - GncOwner *tmp; - char *label; + GncOwnerType owner_type; + GncOwner *tmp; + char *label; - g_assert(isi); - if (!isi->label) return; + g_assert(isi); + if (!isi->label) return; - tmp = &isi->owner; - owner_type = gncOwnerGetType(tmp); - while (owner_type == GNC_OWNER_JOB) { - tmp = gncOwnerGetEndOwner(tmp); + tmp = &isi->owner; owner_type = gncOwnerGetType(tmp); - } + while (owner_type == GNC_OWNER_JOB) + { + tmp = gncOwnerGetEndOwner(tmp); + owner_type = gncOwnerGetType(tmp); + } - /* Translators: See comments in dialog-invoice.c:gnc_invoice_search() */ - switch (owner_type) { - case GNC_OWNER_VENDOR: - label = _("Bill"); - break; - case GNC_OWNER_EMPLOYEE: - label = _("Voucher"); - break; - default: - label = _("Invoice"); - } + /* Translators: See comments in dialog-invoice.c:gnc_invoice_search() */ + switch (owner_type) + { + case GNC_OWNER_VENDOR: + label = _("Bill"); + break; + case GNC_OWNER_EMPLOYEE: + label = _("Voucher"); + break; + default: + label = _("Invoice"); + } - gtk_label_set_text(GTK_LABEL(isi->label), label); + gtk_label_set_text(GTK_LABEL(isi->label), label); } GtkWidget * gnc_invoice_select_create (GtkWidget *hbox, QofBook *book, - const GncOwner *owner, - GncInvoice *invoice, - GtkWidget *label) + const GncOwner *owner, + GncInvoice *invoice, + GtkWidget *label) { - GtkWidget *edit; - GncISI *isi; + GtkWidget *edit; + GncISI *isi; - g_return_val_if_fail (hbox != NULL, NULL); - g_return_val_if_fail (book != NULL, NULL); - /* Note: it is legal to have no owner or invoice */ + g_return_val_if_fail (hbox != NULL, NULL); + g_return_val_if_fail (book != NULL, NULL); + /* Note: it is legal to have no owner or invoice */ - isi = g_new0(GncISI, 1); - if (!isi) - return NULL; + isi = g_new0(GncISI, 1); + if (!isi) + return NULL; - if (owner) { - gncOwnerCopy(owner, &isi->owner); - isi->have_owner = TRUE; - } else { - gncOwnerInitCustomer(&isi->owner, NULL); - } - isi->book = book; - isi->label = label; + if (owner) + { + gncOwnerCopy(owner, &isi->owner); + isi->have_owner = TRUE; + } + else + { + gncOwnerInitCustomer(&isi->owner, NULL); + } + isi->book = book; + isi->label = label; - edit = gnc_general_search_new (GNC_INVOICE_MODULE_NAME, _("Select..."), - TRUE, gnc_invoice_select_search_cb, isi, isi->book); - if (!edit) { - g_free(isi); - return NULL; - } + edit = gnc_general_search_new (GNC_INVOICE_MODULE_NAME, _("Select..."), + TRUE, gnc_invoice_select_search_cb, isi, isi->book); + if (!edit) + { + g_free(isi); + return NULL; + } - gnc_general_search_set_selected (GNC_GENERAL_SEARCH (edit), invoice); - gtk_box_pack_start (GTK_BOX (hbox), edit, FALSE, FALSE, 0); - g_object_set_data_full(G_OBJECT(edit), "isi-state", isi, g_free); + gnc_general_search_set_selected (GNC_GENERAL_SEARCH (edit), invoice); + gtk_box_pack_start (GTK_BOX (hbox), edit, FALSE, FALSE, 0); + g_object_set_data_full(G_OBJECT(edit), "isi-state", isi, g_free); - /* Set the label */ - gnc_invoice_select_search_set_label(isi); + /* Set the label */ + gnc_invoice_select_search_set_label(isi); - return edit; + return edit; } GncInvoice * gnc_invoice_get_invoice (GtkWidget *widget) { - g_return_val_if_fail (widget != NULL, NULL); + g_return_val_if_fail (widget != NULL, NULL); - return gnc_general_search_get_selected (GNC_GENERAL_SEARCH (widget)); + return gnc_general_search_get_selected (GNC_GENERAL_SEARCH (widget)); } void gnc_invoice_set_invoice (GtkWidget *widget, GncInvoice *invoice) { - g_return_if_fail (widget != NULL); - g_return_if_fail (invoice != NULL); + g_return_if_fail (widget != NULL); + g_return_if_fail (invoice != NULL); - gnc_general_search_set_selected (GNC_GENERAL_SEARCH (widget), invoice); + gnc_general_search_set_selected (GNC_GENERAL_SEARCH (widget), invoice); } void gnc_invoice_set_owner (GtkWidget *widget, GncOwner *owner) { - GncISI *isi; + GncISI *isi; - g_return_if_fail (widget != NULL); - g_return_if_fail (owner != NULL); + g_return_if_fail (widget != NULL); + g_return_if_fail (owner != NULL); - isi = g_object_get_data(G_OBJECT(widget), "isi-state"); - g_assert(isi); + isi = g_object_get_data(G_OBJECT(widget), "isi-state"); + g_assert(isi); - if (isi->owner.owner.undefined == owner->owner.undefined) - return; + if (isi->owner.owner.undefined == owner->owner.undefined) + return; - gncOwnerCopy(owner, &isi->owner); - isi->have_owner = TRUE; - gnc_general_search_set_selected(GNC_GENERAL_SEARCH(widget), NULL); + gncOwnerCopy(owner, &isi->owner); + isi->have_owner = TRUE; + gnc_general_search_set_selected(GNC_GENERAL_SEARCH(widget), NULL); - /* Reset the label */ - gnc_invoice_select_search_set_label(isi); + /* Reset the label */ + gnc_invoice_select_search_set_label(isi); } void gnc_fill_account_select_combo (GtkWidget *combo, QofBook *book, - GList *acct_types, GList *acct_commodities) + GList *acct_types, GList *acct_commodities) { - GtkListStore *store; - GtkEntry *entry; - GList *list, *node; - char *text; + GtkListStore *store; + GtkEntry *entry; + GList *list, *node; + char *text; - g_return_if_fail (combo && GTK_IS_COMBO_BOX_ENTRY(combo)); - g_return_if_fail (book); - g_return_if_fail (acct_types); + g_return_if_fail (combo && GTK_IS_COMBO_BOX_ENTRY(combo)); + g_return_if_fail (book); + g_return_if_fail (acct_types); - /* Figure out if anything is set in the combo */ - text = gtk_combo_box_get_active_text(GTK_COMBO_BOX(combo)); + /* Figure out if anything is set in the combo */ + text = gtk_combo_box_get_active_text(GTK_COMBO_BOX(combo)); - list = gnc_account_get_descendants (gnc_book_get_root_account (book)); + list = gnc_account_get_descendants (gnc_book_get_root_account (book)); - /* Clear the existing list */ - entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo))); - gtk_entry_set_text(entry, ""); - store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo))); - gtk_list_store_clear(store); + /* Clear the existing list */ + entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo))); + gtk_entry_set_text(entry, ""); + store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo))); + gtk_list_store_clear(store); - /* Add the account names to the combo box */ - for (node = list; node; node = node->next) { - Account *account = node->data; - char *name; - - /* Only present accounts of the appropriate type */ - if (g_list_index (acct_types, (gpointer)xaccAccountGetType (account)) - == -1) - continue; - - /* Only present accounts with the right commodity, if that's a - restriction */ - if (acct_commodities) + /* Add the account names to the combo box */ + for (node = list; node; node = node->next) { - if ( g_list_find_custom( acct_commodities, - GINT_TO_POINTER(xaccAccountGetCommodity(account)), - gnc_commodity_compare_void) == NULL ) { + Account *account = node->data; + char *name; + + /* Only present accounts of the appropriate type */ + if (g_list_index (acct_types, (gpointer)xaccAccountGetType (account)) + == -1) continue; + + /* Only present accounts with the right commodity, if that's a + restriction */ + if (acct_commodities) + { + if ( g_list_find_custom( acct_commodities, + GINT_TO_POINTER(xaccAccountGetCommodity(account)), + gnc_commodity_compare_void) == NULL ) + { + continue; + } } + + name = gnc_account_get_full_name (account); + gtk_combo_box_append_text(GTK_COMBO_BOX(combo), name); + g_free(name); } + gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0); - name = gnc_account_get_full_name (account); - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), name); - g_free(name); - } - gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0); + g_list_free (list); - g_list_free (list); + gnc_cbe_set_by_string(GTK_COMBO_BOX_ENTRY(combo), text); - gnc_cbe_set_by_string(GTK_COMBO_BOX_ENTRY(combo), text); - - if (text) - g_free (text); + if (text) + g_free (text); } GList * gnc_business_account_types (GncOwner *owner) { - g_return_val_if_fail (owner, NULL); + g_return_val_if_fail (owner, NULL); - switch (gncOwnerGetType (owner)) { - case GNC_OWNER_CUSTOMER: - return (g_list_prepend (NULL, (gpointer)ACCT_TYPE_RECEIVABLE)); - case GNC_OWNER_VENDOR: - case GNC_OWNER_EMPLOYEE: - return (g_list_prepend (NULL, (gpointer)ACCT_TYPE_PAYABLE)); - break; - default: - return (g_list_prepend (NULL, (gpointer)ACCT_TYPE_NONE)); - } + switch (gncOwnerGetType (owner)) + { + case GNC_OWNER_CUSTOMER: + return (g_list_prepend (NULL, (gpointer)ACCT_TYPE_RECEIVABLE)); + case GNC_OWNER_VENDOR: + case GNC_OWNER_EMPLOYEE: + return (g_list_prepend (NULL, (gpointer)ACCT_TYPE_PAYABLE)); + break; + default: + return (g_list_prepend (NULL, (gpointer)ACCT_TYPE_NONE)); + } } GList * gnc_business_commodities (GncOwner *owner) { - g_return_val_if_fail (owner, NULL); - g_return_val_if_fail (gncOwnerGetCurrency(owner), NULL); + g_return_val_if_fail (owner, NULL); + g_return_val_if_fail (gncOwnerGetCurrency(owner), NULL); - return (g_list_prepend (NULL, gncOwnerGetCurrency(owner))); + return (g_list_prepend (NULL, gncOwnerGetCurrency(owner))); } /*********************************************************************/ @@ -396,20 +409,21 @@ gnc_business_commodities (GncOwner *owner) typedef const char * (*GenericLookup_t)(gpointer); -typedef struct { - gint component_id; - GtkWidget * omenu; - QofBook * book; - gboolean none_ok; - const char * (*get_name)(gpointer); - GList * (*get_list)(QofBook*); +typedef struct +{ + gint component_id; + GtkWidget * omenu; + QofBook * book; + gboolean none_ok; + const char * (*get_name)(gpointer); + GList * (*get_list)(QofBook*); - gboolean building_menu; - gpointer result; - gpointer * result_p; + gboolean building_menu; + gpointer result; + gpointer * result_p; - void (*changed_cb)(GtkWidget*, gpointer); - gpointer cb_arg; + void (*changed_cb)(GtkWidget*, gpointer); + gpointer cb_arg; } OpMenuData; #define DO_ADD_ITEM(s,o) { \ @@ -421,188 +435,191 @@ typedef struct { static void business_option_changed (GtkWidget *widget, gpointer data) { - OpMenuData *omd = data; + OpMenuData *omd = data; - g_return_if_fail (omd); - omd->result = g_object_get_data (G_OBJECT (widget), "this_item"); + g_return_if_fail (omd); + omd->result = g_object_get_data (G_OBJECT (widget), "this_item"); - if (!omd->building_menu) { - if (omd->result_p) - *(omd->result_p) = omd->result; + if (!omd->building_menu) + { + if (omd->result_p) + *(omd->result_p) = omd->result; - if (omd->changed_cb) - (omd->changed_cb)(omd->omenu, omd->cb_arg); - } + if (omd->changed_cb) + (omd->changed_cb)(omd->omenu, omd->cb_arg); + } } static void add_menu_item (GtkWidget *menu, const char *label, OpMenuData *omd, - gpointer this_item) + gpointer this_item) { - GtkWidget *item = gtk_menu_item_new_with_label (label); - g_object_set_data (G_OBJECT (item), "this_item", this_item); - g_signal_connect (G_OBJECT (item), "activate", - G_CALLBACK (business_option_changed), omd); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - gtk_widget_show (item); + GtkWidget *item = gtk_menu_item_new_with_label (label); + g_object_set_data (G_OBJECT (item), "this_item", this_item); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (business_option_changed), omd); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + gtk_widget_show (item); } static void generic_omenu_destroy_cb (GtkWidget *widget, gpointer data) { - OpMenuData *omd = data; + OpMenuData *omd = data; - gnc_unregister_gui_component (omd->component_id); - g_free (omd); + gnc_unregister_gui_component (omd->component_id); + g_free (omd); } static void build_generic_optionmenu (OpMenuData *omd) { - GList *items; - GtkWidget *menu; - int current = 0, index = 0; + GList *items; + GtkWidget *menu; + int current = 0, index = 0; - /* Make sure we can "get_list" */ - if (omd->get_list == NULL) - return; + /* Make sure we can "get_list" */ + if (omd->get_list == NULL) + return; - /* Get the list of items */ - items = (omd->get_list)(omd->book); + /* Get the list of items */ + items = (omd->get_list)(omd->book); - /* Make a menu */ - menu = gtk_menu_new (); + /* Make a menu */ + menu = gtk_menu_new (); - omd->building_menu = TRUE; + omd->building_menu = TRUE; - if (omd->none_ok || items == NULL) - DO_ADD_ITEM (_("None"), NULL); + if (omd->none_ok || items == NULL) + DO_ADD_ITEM (_("None"), NULL); - for ( ; items; items = items->next) - DO_ADD_ITEM ((omd->get_name)(items->data), items->data); + for ( ; items; items = items->next) + DO_ADD_ITEM ((omd->get_name)(items->data), items->data); - gtk_option_menu_set_menu (GTK_OPTION_MENU (omd->omenu), menu); - gtk_option_menu_set_history (GTK_OPTION_MENU (omd->omenu), current); - gtk_widget_show (menu); + gtk_option_menu_set_menu (GTK_OPTION_MENU (omd->omenu), menu); + gtk_option_menu_set_history (GTK_OPTION_MENU (omd->omenu), current); + gtk_widget_show (menu); - omd->building_menu = FALSE; + omd->building_menu = FALSE; } static void generic_omenu_refresh_handler (GHashTable *changes, gpointer user_data) { - OpMenuData *omd = user_data; - build_generic_optionmenu (omd); + OpMenuData *omd = user_data; + build_generic_optionmenu (omd); } static OpMenuData * make_generic_optionmenu (GtkWidget *omenu, QofBook *book, - gboolean none_ok, GNCIdType type_name, - GList * (*get_list)(QofBook*), - GenericLookup_t get_name, - gpointer *result) + gboolean none_ok, GNCIdType type_name, + GList * (*get_list)(QofBook*), + GenericLookup_t get_name, + gpointer *result) { - OpMenuData *omd; + OpMenuData *omd; - omd = g_object_get_data (G_OBJECT (omenu), "menu-data"); + omd = g_object_get_data (G_OBJECT (omenu), "menu-data"); - /* If this is the first time we've been called, then build the - * Option Menu Data object, register with the component manager, and - * watch for changed items. Then register for deletion, so we can - * unregister and free the data when this menu is destroyed. - */ - if (!omd) { - omd = g_new0 (OpMenuData, 1); - omd->omenu = omenu; - omd->book = book; - omd->result_p = result; - omd->none_ok = none_ok; - omd->get_name = get_name; - omd->get_list = get_list; - g_object_set_data (G_OBJECT (omenu), "menu-data", omd); + /* If this is the first time we've been called, then build the + * Option Menu Data object, register with the component manager, and + * watch for changed items. Then register for deletion, so we can + * unregister and free the data when this menu is destroyed. + */ + if (!omd) + { + omd = g_new0 (OpMenuData, 1); + omd->omenu = omenu; + omd->book = book; + omd->result_p = result; + omd->none_ok = none_ok; + omd->get_name = get_name; + omd->get_list = get_list; + g_object_set_data (G_OBJECT (omenu), "menu-data", omd); - if (result) - omd->result = *result; + if (result) + omd->result = *result; - omd->component_id = - gnc_register_gui_component ("generic-omenu-refresh-hook", - generic_omenu_refresh_handler, - NULL, omd); + omd->component_id = + gnc_register_gui_component ("generic-omenu-refresh-hook", + generic_omenu_refresh_handler, + NULL, omd); - if (type_name) - gnc_gui_component_watch_entity_type (omd->component_id, - type_name, - QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); + if (type_name) + gnc_gui_component_watch_entity_type (omd->component_id, + type_name, + QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); - g_signal_connect (G_OBJECT (omenu), "destroy", - G_CALLBACK (generic_omenu_destroy_cb), omd); + g_signal_connect (G_OBJECT (omenu), "destroy", + G_CALLBACK (generic_omenu_destroy_cb), omd); - } + } - build_generic_optionmenu (omd); + build_generic_optionmenu (omd); - return omd; + return omd; } void gnc_ui_optionmenu_set_changed_callback (GtkWidget *omenu, - void (*changed_cb)(GtkWidget*,gpointer), - gpointer cb_arg) + void (*changed_cb)(GtkWidget*, gpointer), + gpointer cb_arg) { - OpMenuData *omd; + OpMenuData *omd; - if (!omenu) return; + if (!omenu) return; - omd = g_object_get_data (G_OBJECT (omenu), "menu-data"); - g_return_if_fail (omd); + omd = g_object_get_data (G_OBJECT (omenu), "menu-data"); + g_return_if_fail (omd); - omd->changed_cb = changed_cb; - omd->cb_arg = cb_arg; + omd->changed_cb = changed_cb; + omd->cb_arg = cb_arg; } gpointer gnc_ui_optionmenu_get_value (GtkWidget *omenu) { - OpMenuData *omd; + OpMenuData *omd; - if (!omenu) return NULL; + if (!omenu) return NULL; - omd = g_object_get_data (G_OBJECT (omenu), "menu-data"); - g_return_val_if_fail (omd, NULL); + omd = g_object_get_data (G_OBJECT (omenu), "menu-data"); + g_return_val_if_fail (omd, NULL); - return omd->result; + return omd->result; } void gnc_ui_optionmenu_set_value (GtkWidget *omenu, gpointer data) { - OpMenuData *omd; - GtkWidget *menu; - GList *node; - gint counter; + OpMenuData *omd; + GtkWidget *menu; + GList *node; + gint counter; - if (!omenu) return; + if (!omenu) return; - omd = g_object_get_data (G_OBJECT (omenu), "menu-data"); - g_return_if_fail (omd); + omd = g_object_get_data (G_OBJECT (omenu), "menu-data"); + g_return_if_fail (omd); - menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (omenu)); - g_return_if_fail (menu); + menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (omenu)); + g_return_if_fail (menu); - /* now walk all the children until we find our object */ - for (counter = 0, node = ((GTK_MENU_SHELL (menu))->children); - node; - node = node->next, counter++) - { - GObject *menuitem = node->data; - gpointer this_object = g_object_get_data (menuitem, "this_item"); + /* now walk all the children until we find our object */ + for (counter = 0, node = ((GTK_MENU_SHELL (menu))->children); + node; + node = node->next, counter++) + { + GObject *menuitem = node->data; + gpointer this_object = g_object_get_data (menuitem, "this_item"); - if (this_object == data) { - gtk_option_menu_set_history (GTK_OPTION_MENU (omd->omenu), counter); - return; + if (this_object == data) + { + gtk_option_menu_set_history (GTK_OPTION_MENU (omd->omenu), counter); + return; + } } - } } /* Create an optionmenu of available billing terms and attach it to @@ -614,60 +631,60 @@ gnc_ui_optionmenu_set_value (GtkWidget *omenu, gpointer data) */ void gnc_ui_billterms_optionmenu (GtkWidget *omenu, QofBook *book, - gboolean none_ok, GncBillTerm **choice) + gboolean none_ok, GncBillTerm **choice) { - if (!omenu || !book) return; + if (!omenu || !book) return; - make_generic_optionmenu (omenu, book, none_ok, GNC_BILLTERM_MODULE_NAME, - gncBillTermGetTerms, - (GenericLookup_t)gncBillTermGetName, - (gpointer *)choice); + make_generic_optionmenu (omenu, book, none_ok, GNC_BILLTERM_MODULE_NAME, + gncBillTermGetTerms, + (GenericLookup_t)gncBillTermGetName, + (gpointer *)choice); } void gnc_ui_taxtables_optionmenu (GtkWidget *omenu, QofBook *book, - gboolean none_ok, GncTaxTable **choice) + gboolean none_ok, GncTaxTable **choice) { - if (!omenu || !book) return; + if (!omenu || !book) return; - make_generic_optionmenu (omenu, book, none_ok, GNC_TAXTABLE_MODULE_NAME, - gncTaxTableGetTables, - (GenericLookup_t)gncTaxTableGetName, - (gpointer *)choice); + make_generic_optionmenu (omenu, book, none_ok, GNC_TAXTABLE_MODULE_NAME, + gncTaxTableGetTables, + (GenericLookup_t)gncTaxTableGetName, + (gpointer *)choice); } void gnc_ui_taxincluded_optionmenu (GtkWidget *omenu, GncTaxIncluded *choice) { - GtkWidget *menu; - OpMenuData *omd; - int current = 0, index = 0; + GtkWidget *menu; + OpMenuData *omd; + int current = 0, index = 0; - if (!omenu) return; + if (!omenu) return; - omd = make_generic_optionmenu (omenu, NULL, FALSE, NULL, NULL, NULL, - (gpointer *)choice); + omd = make_generic_optionmenu (omenu, NULL, FALSE, NULL, NULL, NULL, + (gpointer *)choice); - g_return_if_fail (omd); + g_return_if_fail (omd); - menu = gtk_menu_new (); + menu = gtk_menu_new (); - add_menu_item (menu, _("Yes"), omd, - GINT_TO_POINTER (GNC_TAXINCLUDED_YES)); - if (*choice == GNC_TAXINCLUDED_YES) current = index; - index++; + add_menu_item (menu, _("Yes"), omd, + GINT_TO_POINTER (GNC_TAXINCLUDED_YES)); + if (*choice == GNC_TAXINCLUDED_YES) current = index; + index++; - add_menu_item (menu, _("No"), omd, - GINT_TO_POINTER (GNC_TAXINCLUDED_NO)); - if (*choice == GNC_TAXINCLUDED_NO) current = index; - index++; + add_menu_item (menu, _("No"), omd, + GINT_TO_POINTER (GNC_TAXINCLUDED_NO)); + if (*choice == GNC_TAXINCLUDED_NO) current = index; + index++; - add_menu_item (menu, _("Use Global"), omd, - GINT_TO_POINTER (GNC_TAXINCLUDED_USEGLOBAL)); - if (*choice == GNC_TAXINCLUDED_USEGLOBAL) current = index; - index++; + add_menu_item (menu, _("Use Global"), omd, + GINT_TO_POINTER (GNC_TAXINCLUDED_USEGLOBAL)); + if (*choice == GNC_TAXINCLUDED_USEGLOBAL) current = index; + index++; - gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); - gtk_option_menu_set_history (GTK_OPTION_MENU (omenu), current); - gtk_widget_show (menu); + gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); + gtk_option_menu_set_history (GTK_OPTION_MENU (omenu), current); + gtk_widget_show (menu); } diff --git a/src/business/business-gnome/business-gnome-utils.h b/src/business/business-gnome/business-gnome-utils.h index 5e401c3861..134bdce55e 100644 --- a/src/business/business-gnome/business-gnome-utils.h +++ b/src/business/business-gnome/business-gnome-utils.h @@ -38,22 +38,22 @@ #define GCONF_SECTION_EMPLOYEE "dialogs/business/employee" GtkWidget * gnc_owner_select_create (GtkWidget *label, GtkWidget *hbox, - QofBook *book, GncOwner *owner); + QofBook *book, GncOwner *owner); GtkWidget * gnc_owner_edit_create (GtkWidget *label, GtkWidget *hbox, - QofBook *book, GncOwner *owner); + QofBook *book, GncOwner *owner); void gnc_owner_get_owner (GtkWidget *widget, GncOwner *owner); void gnc_owner_set_owner (GtkWidget *widget, GncOwner *owner); -/* An invoice select widget.. +/* An invoice select widget.. * the owner, invoice, and label parameters are optional */ GtkWidget * gnc_invoice_select_create (GtkWidget *hbox, QofBook *book, - const GncOwner *owner, - GncInvoice *invoice, - GtkWidget *label); + const GncOwner *owner, + GncInvoice *invoice, + GtkWidget *label); GncInvoice * gnc_invoice_get_invoice (GtkWidget *widget); void gnc_invoice_set_invoice (GtkWidget *widget, GncInvoice *invoice); @@ -67,8 +67,8 @@ GList * gnc_business_commodities (GncOwner *owner); /* Fill in a combo box with the appropriate list of accounts */ void gnc_fill_account_select_combo (GtkWidget *combo, QofBook *book, - GList *acct_types, - GList *acct_commodities); + GList *acct_types, + GList *acct_commodities); /* Create an optionmenu of available billing terms and attach it to @@ -79,12 +79,12 @@ void gnc_fill_account_select_combo (GtkWidget *combo, QofBook *book, * created. */ void gnc_ui_billterms_optionmenu (GtkWidget *omenu, QofBook *book, - gboolean none_ok, GncBillTerm **choice); + gboolean none_ok, GncBillTerm **choice); /* Same thing except for the tax tables */ void gnc_ui_taxtables_optionmenu (GtkWidget *omenu, QofBook *book, - gboolean none_ok, GncTaxTable **choice); + gboolean none_ok, GncTaxTable **choice); /* Build an option menu for choosing a GncTaxIncluded */ void gnc_ui_taxincluded_optionmenu (GtkWidget *omenu, GncTaxIncluded *choice); @@ -97,8 +97,8 @@ void gnc_ui_taxincluded_optionmenu (GtkWidget *omenu, GncTaxIncluded *choice); */ void gnc_ui_optionmenu_set_changed_callback (GtkWidget *omenu, - void (*changed_cb)(GtkWidget*,gpointer), - gpointer cb_arg); + void (*changed_cb)(GtkWidget*, gpointer), + gpointer cb_arg); gpointer gnc_ui_optionmenu_get_value (GtkWidget *omenu); void gnc_ui_optionmenu_set_value (GtkWidget *omenu, gpointer data); diff --git a/src/business/business-gnome/business-options-gnome.c b/src/business/business-gnome/business-options-gnome.c index a21d549fcc..a0adf6ef35 100644 --- a/src/business/business-gnome/business-options-gnome.c +++ b/src/business/business-gnome/business-options-gnome.c @@ -44,48 +44,49 @@ static GtkWidget * create_owner_widget (GNCOption *option, GncOwnerType type, GtkWidget *hbox) { - GtkWidget *widget; - GncOwner owner; + GtkWidget *widget; + GncOwner owner; - switch (type) { - case GNC_OWNER_CUSTOMER: - gncOwnerInitCustomer (&owner, NULL); - break; - case GNC_OWNER_VENDOR: - gncOwnerInitVendor (&owner, NULL); - break; - case GNC_OWNER_EMPLOYEE: - gncOwnerInitEmployee (&owner, NULL); - break; - case GNC_OWNER_JOB: - gncOwnerInitJob (&owner, NULL); - break; - default: - return NULL; - } + switch (type) + { + case GNC_OWNER_CUSTOMER: + gncOwnerInitCustomer (&owner, NULL); + break; + case GNC_OWNER_VENDOR: + gncOwnerInitVendor (&owner, NULL); + break; + case GNC_OWNER_EMPLOYEE: + gncOwnerInitEmployee (&owner, NULL); + break; + case GNC_OWNER_JOB: + gncOwnerInitJob (&owner, NULL); + break; + default: + return NULL; + } - widget = gnc_owner_select_create (NULL, hbox, - gnc_get_current_book (), &owner); - gnc_option_set_widget (option, widget); + widget = gnc_owner_select_create (NULL, hbox, + gnc_get_current_book (), &owner); + gnc_option_set_widget (option, widget); - g_signal_connect (G_OBJECT (widget), "changed", - G_CALLBACK (gnc_option_changed_option_cb), option); + g_signal_connect (G_OBJECT (widget), "changed", + G_CALLBACK (gnc_option_changed_option_cb), option); - return widget; + return widget; } static GtkWidget * make_name_label (char *name) { - GtkWidget *label; - gchar *colon_name; + GtkWidget *label; + gchar *colon_name; - colon_name = g_strconcat (name, ":", (char *)NULL); - label = gtk_label_new (colon_name); - gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); - g_free (colon_name); + colon_name = g_strconcat (name, ":", (char *)NULL); + label = gtk_label_new (colon_name); + gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); + g_free (colon_name); - return label; + return label; } /********************************************************************/ @@ -95,75 +96,76 @@ make_name_label (char *name) static GncOwnerType get_owner_type_from_option (GNCOption *option) { - SCM odata = gnc_option_get_option_data (option); + SCM odata = gnc_option_get_option_data (option); - /* The option data is enum-typed. It's just the enum value. */ - return (GncOwnerType) scm_num2int(odata, SCM_ARG1, G_STRFUNC); + /* The option data is enum-typed. It's just the enum value. */ + return (GncOwnerType) scm_num2int(odata, SCM_ARG1, G_STRFUNC); } /* Function to set the UI widget based upon the option */ static GtkWidget * owner_set_widget (GNCOption *option, GtkBox *page_box, - GtkTooltips *tooltips, - char *name, char *documentation, - /* Return values */ - GtkWidget **enclosing, gboolean *packed) + GtkTooltips *tooltips, + char *name, char *documentation, + /* Return values */ + GtkWidget **enclosing, gboolean *packed) { - GtkWidget *value; - GtkWidget *label; + GtkWidget *value; + GtkWidget *label; - *enclosing = gtk_hbox_new (FALSE, 5); - label = make_name_label (name); - gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); + *enclosing = gtk_hbox_new (FALSE, 5); + label = make_name_label (name); + gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); - value = create_owner_widget (option, get_owner_type_from_option (option), - *enclosing); + value = create_owner_widget (option, get_owner_type_from_option (option), + *enclosing); - gnc_option_set_ui_value (option, FALSE); + gnc_option_set_ui_value (option, FALSE); - gtk_widget_show_all (*enclosing); - return value; + gtk_widget_show_all (*enclosing); + return value; } /* Function to set the UI Value for a particular option */ static gboolean owner_set_value (GNCOption *option, gboolean use_default, - GtkWidget *widget, SCM value) + GtkWidget *widget, SCM value) { - GncOwner owner_def; - GncOwner *owner; + GncOwner owner_def; + GncOwner *owner; - if (!SWIG_IsPointer (value)) - scm_misc_error("business_options:owner_set_value", - "SCM is not a wrapped pointer.", value); + if (!SWIG_IsPointer (value)) + scm_misc_error("business_options:owner_set_value", + "SCM is not a wrapped pointer.", value); - owner = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncOwner"), 1, 0); + owner = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncOwner"), 1, 0); - /* XXX: should we verify that the owner type is correct? */ - if (!owner) { - owner_def.type = get_owner_type_from_option (option); - owner_def.owner.undefined = NULL; - owner = &owner_def; - } + /* XXX: should we verify that the owner type is correct? */ + if (!owner) + { + owner_def.type = get_owner_type_from_option (option); + owner_def.owner.undefined = NULL; + owner = &owner_def; + } - widget = gnc_option_get_widget (option); - gnc_owner_set_owner (widget, owner); - return FALSE; + widget = gnc_option_get_widget (option); + gnc_owner_set_owner (widget, owner); + return FALSE; } /* Function to get the UI Value for a particular option */ static SCM owner_get_value (GNCOption *option, GtkWidget *widget) { - static GncOwner owner; /* XXX: might cause trouble? */ - GncOwnerType type; + static GncOwner owner; /* XXX: might cause trouble? */ + GncOwnerType type; - type = get_owner_type_from_option (option); - owner.type = type; - gnc_owner_get_owner (widget, &owner); + type = get_owner_type_from_option (option); + owner.type = type; + gnc_owner_get_owner (widget, &owner); - return SWIG_NewPointerObj(&owner, SWIG_TypeQuery("_p__gncOwner"), 0); + return SWIG_NewPointerObj(&owner, SWIG_TypeQuery("_p__gncOwner"), 0); } @@ -174,55 +176,55 @@ owner_get_value (GNCOption *option, GtkWidget *widget) /* Function to set the UI widget based upon the option */ static GtkWidget * customer_set_widget (GNCOption *option, GtkBox *page_box, - GtkTooltips *tooltips, - char *name, char *documentation, - /* Return values */ - GtkWidget **enclosing, gboolean *packed) + GtkTooltips *tooltips, + char *name, char *documentation, + /* Return values */ + GtkWidget **enclosing, gboolean *packed) { - GtkWidget *value; - GtkWidget *label; + GtkWidget *value; + GtkWidget *label; - *enclosing = gtk_hbox_new (FALSE, 5); - label = make_name_label (name); - gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); + *enclosing = gtk_hbox_new (FALSE, 5); + label = make_name_label (name); + gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); - value = create_owner_widget (option, GNC_OWNER_CUSTOMER, *enclosing); + value = create_owner_widget (option, GNC_OWNER_CUSTOMER, *enclosing); - gnc_option_set_ui_value (option, FALSE); + gnc_option_set_ui_value (option, FALSE); - gtk_widget_show_all (*enclosing); - return value; + gtk_widget_show_all (*enclosing); + return value; } /* Function to set the UI Value for a particular option */ static gboolean customer_set_value (GNCOption *option, gboolean use_default, - GtkWidget *widget, SCM value) + GtkWidget *widget, SCM value) { - GncOwner owner; - GncCustomer *customer; + GncOwner owner; + GncCustomer *customer; - if (!SWIG_IsPointer (value)) - scm_misc_error("business_options:customer_set_value", - "SCM is not a wrapped pointer.", value); + if (!SWIG_IsPointer (value)) + scm_misc_error("business_options:customer_set_value", + "SCM is not a wrapped pointer.", value); - customer = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncCustomer"), 1, 0); - gncOwnerInitCustomer (&owner, customer); + customer = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncCustomer"), 1, 0); + gncOwnerInitCustomer (&owner, customer); - widget = gnc_option_get_widget (option); - gnc_owner_set_owner (widget, &owner); - return FALSE; + widget = gnc_option_get_widget (option); + gnc_owner_set_owner (widget, &owner); + return FALSE; } /* Function to get the UI Value for a particular option */ static SCM customer_get_value (GNCOption *option, GtkWidget *widget) { - GncOwner owner; + GncOwner owner; - gnc_owner_get_owner (widget, &owner); - return SWIG_NewPointerObj(owner.owner.undefined, - SWIG_TypeQuery("_p__gncCustomer"), 0); + gnc_owner_get_owner (widget, &owner); + return SWIG_NewPointerObj(owner.owner.undefined, + SWIG_TypeQuery("_p__gncCustomer"), 0); } @@ -233,55 +235,55 @@ customer_get_value (GNCOption *option, GtkWidget *widget) /* Function to set the UI widget based upon the option */ static GtkWidget * vendor_set_widget (GNCOption *option, GtkBox *page_box, - GtkTooltips *tooltips, - char *name, char *documentation, - /* Return values */ - GtkWidget **enclosing, gboolean *packed) + GtkTooltips *tooltips, + char *name, char *documentation, + /* Return values */ + GtkWidget **enclosing, gboolean *packed) { - GtkWidget *value; - GtkWidget *label; + GtkWidget *value; + GtkWidget *label; - *enclosing = gtk_hbox_new (FALSE, 5); - label = make_name_label (name); - gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); + *enclosing = gtk_hbox_new (FALSE, 5); + label = make_name_label (name); + gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); - value = create_owner_widget (option, GNC_OWNER_VENDOR, *enclosing); + value = create_owner_widget (option, GNC_OWNER_VENDOR, *enclosing); - gnc_option_set_ui_value (option, FALSE); + gnc_option_set_ui_value (option, FALSE); - gtk_widget_show_all (*enclosing); - return value; + gtk_widget_show_all (*enclosing); + return value; } /* Function to set the UI Value for a particular option */ static gboolean vendor_set_value (GNCOption *option, gboolean use_default, - GtkWidget *widget, SCM value) + GtkWidget *widget, SCM value) { - GncOwner owner; - GncVendor *vendor; + GncOwner owner; + GncVendor *vendor; - if (!SWIG_IsPointer (value)) - scm_misc_error("business_options:vendor_set_value", - "SCM is not a wrapped pointer.", value); + if (!SWIG_IsPointer (value)) + scm_misc_error("business_options:vendor_set_value", + "SCM is not a wrapped pointer.", value); - vendor = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncVendor"), 1, 0); - gncOwnerInitVendor (&owner, vendor); + vendor = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncVendor"), 1, 0); + gncOwnerInitVendor (&owner, vendor); - widget = gnc_option_get_widget (option); - gnc_owner_set_owner (widget, &owner); - return FALSE; + widget = gnc_option_get_widget (option); + gnc_owner_set_owner (widget, &owner); + return FALSE; } /* Function to get the UI Value for a particular option */ static SCM vendor_get_value (GNCOption *option, GtkWidget *widget) { - GncOwner owner; + GncOwner owner; - gnc_owner_get_owner (widget, &owner); - return SWIG_NewPointerObj(owner.owner.undefined, - SWIG_TypeQuery("_p__gncVendor"), 0); + gnc_owner_get_owner (widget, &owner); + return SWIG_NewPointerObj(owner.owner.undefined, + SWIG_TypeQuery("_p__gncVendor"), 0); } /********************************************************************/ @@ -291,56 +293,56 @@ vendor_get_value (GNCOption *option, GtkWidget *widget) /* Function to set the UI widget based upon the option */ static GtkWidget * employee_set_widget (GNCOption *option, GtkBox *page_box, - GtkTooltips *tooltips, - char *name, char *documentation, - /* Return values */ - GtkWidget **enclosing, gboolean *packed) + GtkTooltips *tooltips, + char *name, char *documentation, + /* Return values */ + GtkWidget **enclosing, gboolean *packed) { - GtkWidget *value; - GtkWidget *label; + GtkWidget *value; + GtkWidget *label; - *enclosing = gtk_hbox_new (FALSE, 5); - label = make_name_label (name); - gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); + *enclosing = gtk_hbox_new (FALSE, 5); + label = make_name_label (name); + gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); - value = create_owner_widget (option, GNC_OWNER_EMPLOYEE, *enclosing); + value = create_owner_widget (option, GNC_OWNER_EMPLOYEE, *enclosing); - gnc_option_set_ui_value (option, FALSE); + gnc_option_set_ui_value (option, FALSE); - gtk_widget_show_all (*enclosing); - return value; + gtk_widget_show_all (*enclosing); + return value; } /* Function to set the UI Value for a particular option */ static gboolean employee_set_value (GNCOption *option, gboolean use_default, - GtkWidget *widget, SCM value) + GtkWidget *widget, SCM value) { - GncOwner owner; - GncEmployee *employee; + GncOwner owner; + GncEmployee *employee; - if (!SWIG_IsPointer (value)) - scm_misc_error("business_options:employee_set_value", - "SCM is not a wrapped pointer.", value); + if (!SWIG_IsPointer (value)) + scm_misc_error("business_options:employee_set_value", + "SCM is not a wrapped pointer.", value); - employee = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncEmployee"), 1, 0); - gncOwnerInitEmployee (&owner, employee); + employee = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncEmployee"), 1, 0); + gncOwnerInitEmployee (&owner, employee); - widget = gnc_option_get_widget (option); - gnc_owner_set_owner (widget, &owner); - return FALSE; + widget = gnc_option_get_widget (option); + gnc_owner_set_owner (widget, &owner); + return FALSE; } /* Function to get the UI Value for a particular option */ static SCM employee_get_value (GNCOption *option, GtkWidget *widget) { - GncOwner owner; + GncOwner owner; - gnc_owner_get_owner (widget, &owner); + gnc_owner_get_owner (widget, &owner); - return SWIG_NewPointerObj(owner.owner.undefined, - SWIG_TypeQuery("_p__gncEmployee"), 0); + return SWIG_NewPointerObj(owner.owner.undefined, + SWIG_TypeQuery("_p__gncEmployee"), 0); } /********************************************************************/ @@ -350,68 +352,68 @@ employee_get_value (GNCOption *option, GtkWidget *widget) static GtkWidget * create_invoice_widget (GNCOption *option, GtkWidget *hbox) { - GtkWidget *widget; + GtkWidget *widget; - /* No owner or starting invoice here, but that's okay. */ - widget = gnc_invoice_select_create (hbox, gnc_get_current_book(), - NULL, NULL, NULL); + /* No owner or starting invoice here, but that's okay. */ + widget = gnc_invoice_select_create (hbox, gnc_get_current_book(), + NULL, NULL, NULL); - gnc_option_set_widget (option, widget); - g_signal_connect (G_OBJECT (widget), "changed", - G_CALLBACK (gnc_option_changed_option_cb), option); + gnc_option_set_widget (option, widget); + g_signal_connect (G_OBJECT (widget), "changed", + G_CALLBACK (gnc_option_changed_option_cb), option); - return widget; + return widget; } /* Function to set the UI widget based upon the option */ static GtkWidget * invoice_set_widget (GNCOption *option, GtkBox *page_box, - GtkTooltips *tooltips, - char *name, char *documentation, - /* Return values */ - GtkWidget **enclosing, gboolean *packed) + GtkTooltips *tooltips, + char *name, char *documentation, + /* Return values */ + GtkWidget **enclosing, gboolean *packed) { - GtkWidget *value; - GtkWidget *label; + GtkWidget *value; + GtkWidget *label; - *enclosing = gtk_hbox_new (FALSE, 5); - label = make_name_label (name); - gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); + *enclosing = gtk_hbox_new (FALSE, 5); + label = make_name_label (name); + gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); - value = create_invoice_widget (option, *enclosing); + value = create_invoice_widget (option, *enclosing); - gnc_option_set_ui_value (option, FALSE); + gnc_option_set_ui_value (option, FALSE); - gtk_widget_show_all (*enclosing); - return value; + gtk_widget_show_all (*enclosing); + return value; } /* Function to set the UI Value for a particular option */ static gboolean invoice_set_value (GNCOption *option, gboolean use_default, - GtkWidget *widget, SCM value) + GtkWidget *widget, SCM value) { - GncInvoice *invoice; + GncInvoice *invoice; - if (!SWIG_IsPointer (value)) - scm_misc_error("business_options:invoice_set_value", - "SCM is not a wrapped pointer.", value); + if (!SWIG_IsPointer (value)) + scm_misc_error("business_options:invoice_set_value", + "SCM is not a wrapped pointer.", value); - invoice = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncInvoice"), 1, 0); + invoice = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncInvoice"), 1, 0); - widget = gnc_option_get_widget (option); - gnc_general_search_set_selected (GNC_GENERAL_SEARCH (widget), invoice); - return FALSE; + widget = gnc_option_get_widget (option); + gnc_general_search_set_selected (GNC_GENERAL_SEARCH (widget), invoice); + return FALSE; } /* Function to get the UI Value for a particular option */ static SCM invoice_get_value (GNCOption *option, GtkWidget *widget) { - GncInvoice *invoice; + GncInvoice *invoice; - invoice = gnc_general_search_get_selected (GNC_GENERAL_SEARCH (widget)); - return SWIG_NewPointerObj(invoice, SWIG_TypeQuery("_p__gncInvoice"), 0); + invoice = gnc_general_search_get_selected (GNC_GENERAL_SEARCH (widget)); + return SWIG_NewPointerObj(invoice, SWIG_TypeQuery("_p__gncInvoice"), 0); } @@ -422,71 +424,71 @@ invoice_get_value (GNCOption *option, GtkWidget *widget) static GtkWidget * create_taxtable_widget (GNCOption *option, GtkWidget *hbox) { - GtkWidget *widget; + GtkWidget *widget; - widget = gtk_option_menu_new (); + widget = gtk_option_menu_new (); - gnc_ui_taxtables_optionmenu (widget, gnc_get_current_book (), TRUE, NULL); - - gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); - gnc_option_set_widget (option, widget); + gnc_ui_taxtables_optionmenu (widget, gnc_get_current_book (), TRUE, NULL); - gnc_ui_optionmenu_set_changed_callback (widget, - (void(*)(GtkWidget*,gpointer))gnc_option_changed_option_cb, - option); + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + gnc_option_set_widget (option, widget); - return widget; + gnc_ui_optionmenu_set_changed_callback (widget, + (void(*)(GtkWidget*, gpointer))gnc_option_changed_option_cb, + option); + + return widget; } /* Function to set the UI widget based upon the option */ static GtkWidget * taxtable_set_widget (GNCOption *option, GtkBox *page_box, - GtkTooltips *tooltips, - char *name, char *documentation, - /* Return values */ - GtkWidget **enclosing, gboolean *packed) + GtkTooltips *tooltips, + char *name, char *documentation, + /* Return values */ + GtkWidget **enclosing, gboolean *packed) { - GtkWidget *value; - GtkWidget *label; + GtkWidget *value; + GtkWidget *label; - *enclosing = gtk_hbox_new (FALSE, 5); - label = make_name_label (name); - gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); + *enclosing = gtk_hbox_new (FALSE, 5); + label = make_name_label (name); + gtk_box_pack_start (GTK_BOX (*enclosing), label, FALSE, FALSE, 0); - value = create_taxtable_widget (option, *enclosing); + value = create_taxtable_widget (option, *enclosing); - gnc_option_set_ui_value (option, FALSE); + gnc_option_set_ui_value (option, FALSE); - gtk_widget_show_all (*enclosing); - return value; + gtk_widget_show_all (*enclosing); + return value; } /* Function to set the UI Value for a particular option */ static gboolean taxtable_set_value (GNCOption *option, gboolean use_default, - GtkWidget *widget, SCM value) + GtkWidget *widget, SCM value) { - GncTaxTable *taxtable; + GncTaxTable *taxtable; - if (!SWIG_IsPointer (value)) - scm_misc_error("business_options:taxtable_set_value", - "SCM is not a wrapped pointer.", value); + if (!SWIG_IsPointer (value)) + scm_misc_error("business_options:taxtable_set_value", + "SCM is not a wrapped pointer.", value); - taxtable = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncTaxTable"), 1, 0); + taxtable = SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncTaxTable"), 1, 0); - widget = gnc_option_get_widget (option); - gnc_ui_optionmenu_set_value (widget, taxtable); - return FALSE; + widget = gnc_option_get_widget (option); + gnc_ui_optionmenu_set_value (widget, taxtable); + return FALSE; } /* Function to get the UI Value for a particular option */ static SCM taxtable_get_value (GNCOption *option, GtkWidget *widget) { - GncTaxTable *taxtable; + GncTaxTable *taxtable; - taxtable = gnc_ui_optionmenu_get_value (widget); - return SWIG_NewPointerObj(taxtable, SWIG_TypeQuery("_p__gncTaxTable"), 0); + taxtable = gnc_ui_optionmenu_get_value (widget); + return SWIG_NewPointerObj(taxtable, SWIG_TypeQuery("_p__gncTaxTable"), 0); } @@ -495,19 +497,22 @@ taxtable_get_value (GNCOption *option, GtkWidget *widget) void gnc_business_options_gnome_initialize (void) { - int i; - static GNCOptionDef_t options[] = { - { "owner", owner_set_widget, owner_set_value, owner_get_value }, - { "customer", customer_set_widget, customer_set_value, - customer_get_value }, - { "vendor", vendor_set_widget, vendor_set_value, vendor_get_value }, - { "employee", employee_set_widget, employee_set_value, employee_get_value }, - { "invoice", invoice_set_widget, invoice_set_value, invoice_get_value }, - { "taxtable", taxtable_set_widget, taxtable_set_value, taxtable_get_value }, - { NULL } - }; + int i; + static GNCOptionDef_t options[] = + { + { "owner", owner_set_widget, owner_set_value, owner_get_value }, + { + "customer", customer_set_widget, customer_set_value, + customer_get_value + }, + { "vendor", vendor_set_widget, vendor_set_value, vendor_get_value }, + { "employee", employee_set_widget, employee_set_value, employee_get_value }, + { "invoice", invoice_set_widget, invoice_set_value, invoice_get_value }, + { "taxtable", taxtable_set_widget, taxtable_set_value, taxtable_get_value }, + { NULL } + }; - SWIG_GetModule(NULL); /* Work-around for SWIG bug. */ - for (i = 0; options[i].option_name; i++) - gnc_options_ui_register_option (&(options[i])); + SWIG_GetModule(NULL); /* Work-around for SWIG bug. */ + for (i = 0; options[i].option_name; i++) + gnc_options_ui_register_option (&(options[i])); } diff --git a/src/business/business-gnome/business-urls.c b/src/business/business-gnome/business-urls.c index 91dbcbdb05..5b93c8473c 100644 --- a/src/business/business-gnome/business-urls.c +++ b/src/business/business-gnome/business-urls.c @@ -87,78 +87,78 @@ static gboolean customerCB (const char *location, const char *label, - gboolean new_window, GNCURLResult * result) + gboolean new_window, GNCURLResult * result) { - QofInstance *entity; - GncCustomer *customer; + QofInstance *entity; + GncCustomer *customer; - /* href="...:customer=" */ - HANDLE_TYPE ("customer=", GNC_ID_CUSTOMER); - customer = (GncCustomer *) entity; - gnc_ui_customer_edit (customer); + /* href="...:customer=" */ + HANDLE_TYPE ("customer=", GNC_ID_CUSTOMER); + customer = (GncCustomer *) entity; + gnc_ui_customer_edit (customer); - return TRUE; + return TRUE; } static gboolean vendorCB (const char *location, const char *label, - gboolean new_window, GNCURLResult * result) + gboolean new_window, GNCURLResult * result) { - QofInstance *entity; - GncVendor *vendor; + QofInstance *entity; + GncVendor *vendor; - /* href="...:vendor=" */ - HANDLE_TYPE ("vendor=", GNC_ID_VENDOR); - vendor = (GncVendor *) entity; - gnc_ui_vendor_edit (vendor); + /* href="...:vendor=" */ + HANDLE_TYPE ("vendor=", GNC_ID_VENDOR); + vendor = (GncVendor *) entity; + gnc_ui_vendor_edit (vendor); - return TRUE; + return TRUE; } static gboolean employeeCB (const char *location, const char *label, - gboolean new_window, GNCURLResult * result) + gboolean new_window, GNCURLResult * result) { - QofInstance *entity; - GncEmployee *employee; + QofInstance *entity; + GncEmployee *employee; - /* href="...:employee=" */ - HANDLE_TYPE ("employee=", GNC_ID_EMPLOYEE); + /* href="...:employee=" */ + HANDLE_TYPE ("employee=", GNC_ID_EMPLOYEE); - employee = (GncEmployee *) entity; - gnc_ui_employee_edit (employee); + employee = (GncEmployee *) entity; + gnc_ui_employee_edit (employee); - return TRUE; + return TRUE; } static gboolean invoiceCB (const char *location, const char *label, gboolean new_window, GNCURLResult * result) { - QofInstance *entity; - GncInvoice *invoice; + QofInstance *entity; + GncInvoice *invoice; - /* href="...:invoice=" */ - HANDLE_TYPE ("invoice=", GNC_ID_INVOICE); - invoice = (GncInvoice *) entity; - gnc_ui_invoice_edit (invoice); + /* href="...:invoice=" */ + HANDLE_TYPE ("invoice=", GNC_ID_INVOICE); + invoice = (GncInvoice *) entity; + gnc_ui_invoice_edit (invoice); - return TRUE; + return TRUE; } static gboolean jobCB (const char *location, const char *label, - gboolean new_window, GNCURLResult * result) + gboolean new_window, GNCURLResult * result) { - QofInstance *entity; - GncJob *job; + QofInstance *entity; + GncJob *job; - /* href="...:job=" */ - HANDLE_TYPE ("job=", GNC_ID_JOB); - job = (GncJob *) entity; - gnc_ui_job_edit (job); + /* href="...:job=" */ + HANDLE_TYPE ("job=", GNC_ID_JOB); + job = (GncJob *) entity; + gnc_ui_job_edit (job); - return TRUE; + return TRUE; } /* ================================================================= */ @@ -175,160 +175,167 @@ static gboolean ownerreportCB (const char *location, const char *label, gboolean new_window, GNCURLResult * result) { - const char *ownerptr; - const char *acctptr; - GUID guid; - GncOwner owner; - GncOwnerType type; - char *etype = NULL; - Account *acc = NULL; + const char *ownerptr; + const char *acctptr; + GUID guid; + GncOwner owner; + GncOwnerType type; + char *etype = NULL; + Account *acc = NULL; - g_return_val_if_fail (location != NULL, FALSE); - g_return_val_if_fail (result != NULL, FALSE); + g_return_val_if_fail (location != NULL, FALSE); + g_return_val_if_fail (result != NULL, FALSE); - result->load_to_stream = FALSE; + result->load_to_stream = FALSE; - /* href="...:owner=:guid=[&acct=]" */ - - acctptr = strchr (location, '&'); - if (acctptr) - acctptr++; + /* href="...:owner=:guid=[&acct=]" */ - if (strncmp ("owner=", location, 6) != 0) { - result->error_message = g_strdup_printf (_("Badly formed URL %s"), - location); - return FALSE; - } + acctptr = strchr (location, '&'); + if (acctptr) + acctptr++; - memset (&owner, 0, sizeof (owner)); - - ownerptr = location+6; - switch (*ownerptr) { - case 'c': - type = GNC_OWNER_CUSTOMER; - break; - case 'v': - type = GNC_OWNER_VENDOR; - break; - case 'e': - type = GNC_OWNER_EMPLOYEE; - break; - case 'j': - type = GNC_OWNER_JOB; - break; - default: - result->error_message = g_strdup_printf (_("Bad URL: %s"), location); - return FALSE; - } + if (strncmp ("owner=", location, 6) != 0) + { + result->error_message = g_strdup_printf (_("Badly formed URL %s"), + location); + return FALSE; + } - if (!string_to_guid (ownerptr+2, &guid)) { - result->error_message = g_strdup_printf (_("Bad URL: %s"), location); - return FALSE; - } + memset (&owner, 0, sizeof (owner)); + + ownerptr = location + 6; + switch (*ownerptr) + { + case 'c': + type = GNC_OWNER_CUSTOMER; + break; + case 'v': + type = GNC_OWNER_VENDOR; + break; + case 'e': + type = GNC_OWNER_EMPLOYEE; + break; + case 'j': + type = GNC_OWNER_JOB; + break; + default: + result->error_message = g_strdup_printf (_("Bad URL: %s"), location); + return FALSE; + } + + if (!string_to_guid (ownerptr + 2, &guid)) + { + result->error_message = g_strdup_printf (_("Bad URL: %s"), location); + return FALSE; + } - switch (type) { + switch (type) + { case GNC_OWNER_CUSTOMER: { - GncCustomer *customer = - gncCustomerLookup (gnc_get_current_book (), &guid); - RETURN_IF_NULL (customer); - gncOwnerInitCustomer (&owner, customer); - etype = "Customer"; - break; + GncCustomer *customer = + gncCustomerLookup (gnc_get_current_book (), &guid); + RETURN_IF_NULL (customer); + gncOwnerInitCustomer (&owner, customer); + etype = "Customer"; + break; } case GNC_OWNER_VENDOR: { - GncVendor *vendor = - gncVendorLookup (gnc_get_current_book (), &guid); - RETURN_IF_NULL (vendor); + GncVendor *vendor = + gncVendorLookup (gnc_get_current_book (), &guid); + RETURN_IF_NULL (vendor); gncOwnerInitVendor (&owner, vendor); - etype = "Vendor"; - break; + etype = "Vendor"; + break; } case GNC_OWNER_EMPLOYEE: { - GncEmployee *employee = - gncEmployeeLookup (gnc_get_current_book (), &guid); - RETURN_IF_NULL(employee); - gncOwnerInitEmployee (&owner, employee); - etype = "Employee"; - break; + GncEmployee *employee = + gncEmployeeLookup (gnc_get_current_book (), &guid); + RETURN_IF_NULL(employee); + gncOwnerInitEmployee (&owner, employee); + etype = "Employee"; + break; } case GNC_OWNER_JOB: { - GncJob *job = - gncJobLookup (gnc_get_current_book (), &guid); - RETURN_IF_NULL(job); - gncOwnerInitJob (&owner, job); - etype = "Job"; - break; + GncJob *job = + gncJobLookup (gnc_get_current_book (), &guid); + RETURN_IF_NULL(job); + gncOwnerInitJob (&owner, job); + etype = "Job"; + break; } default: - etype = "OTHER"; - } + etype = "OTHER"; + } - if (owner.owner.undefined == NULL) - { - result->error_message = - g_strdup_printf (_("Entity type does not match %s: %s"), - etype, location); - return FALSE; - } - - /* Deal with acctptr, if it exists */ - if (acctptr) - { - if (strncmp ("acct=", acctptr, 5) != 0) + if (owner.owner.undefined == NULL) { - result->error_message = g_strdup_printf (_("Bad URL %s"), location); - return FALSE; + result->error_message = + g_strdup_printf (_("Entity type does not match %s: %s"), + etype, location); + return FALSE; } - if (!string_to_guid (acctptr+5, &guid)) { - result->error_message = g_strdup_printf (_("Bad URL: %s"), location); - return FALSE; - } - - acc = xaccAccountLookup (&guid, gnc_get_current_book ()); - if (NULL == acc) + /* Deal with acctptr, if it exists */ + if (acctptr) { - result->error_message = g_strdup_printf (_("No such Account entity: %s"), - location); - return FALSE; + if (strncmp ("acct=", acctptr, 5) != 0) + { + result->error_message = g_strdup_printf (_("Bad URL %s"), location); + return FALSE; + } + + if (!string_to_guid (acctptr + 5, &guid)) + { + result->error_message = g_strdup_printf (_("Bad URL: %s"), location); + return FALSE; + } + + acc = xaccAccountLookup (&guid, gnc_get_current_book ()); + if (NULL == acc) + { + result->error_message = g_strdup_printf (_("No such Account entity: %s"), + location); + return FALSE; + } } - } - /* Ok, let's run this report */ - gnc_business_call_owner_report (&owner, acc); + /* Ok, let's run this report */ + gnc_business_call_owner_report (&owner, acc); - return TRUE; + return TRUE; } void gnc_business_urls_initialize (void) { - int i; - static struct { - URLType urltype; - char * protocol; - GncHTMLUrlCB handler; - } types[] = { - { GNC_ID_CUSTOMER, GNC_ID_CUSTOMER, customerCB }, - { GNC_ID_VENDOR, GNC_ID_VENDOR, vendorCB }, - { GNC_ID_EMPLOYEE, GNC_ID_EMPLOYEE, employeeCB }, - { GNC_ID_JOB, GNC_ID_JOB, jobCB }, - { GNC_ID_INVOICE, GNC_ID_INVOICE, invoiceCB }, - { URL_TYPE_OWNERREPORT, "gnc-ownerreport", ownerreportCB }, - { NULL, NULL } - }; + int i; + static struct + { + URLType urltype; + char * protocol; + GncHTMLUrlCB handler; + } types[] = + { + { GNC_ID_CUSTOMER, GNC_ID_CUSTOMER, customerCB }, + { GNC_ID_VENDOR, GNC_ID_VENDOR, vendorCB }, + { GNC_ID_EMPLOYEE, GNC_ID_EMPLOYEE, employeeCB }, + { GNC_ID_JOB, GNC_ID_JOB, jobCB }, + { GNC_ID_INVOICE, GNC_ID_INVOICE, invoiceCB }, + { URL_TYPE_OWNERREPORT, "gnc-ownerreport", ownerreportCB }, + { NULL, NULL } + }; - for (i = 0; types[i].urltype; i++) - gnc_html_register_urltype (types[i].urltype, types[i].protocol); + for (i = 0; types[i].urltype; i++) + gnc_html_register_urltype (types[i].urltype, types[i].protocol); - for (i = 0; types[i].urltype; i++) - if (types[i].handler) - gnc_html_register_url_handler (types[i].urltype, types[i].handler); + for (i = 0; types[i].urltype; i++) + if (types[i].handler) + gnc_html_register_url_handler (types[i].urltype, types[i].handler); } diff --git a/src/business/business-gnome/dialog-billterms.c b/src/business/business-gnome/dialog-billterms.c index 2dbf8b290e..fac2c6fb88 100644 --- a/src/business/business-gnome/dialog-billterms.c +++ b/src/business/business-gnome/dialog-billterms.c @@ -40,10 +40,11 @@ #define DIALOG_BILLTERMS_CM_CLASS "billterms-dialog" -enum term_cols { - BILL_TERM_COL_NAME = 0, - BILL_TERM_COL_TERM, - NUM_BILL_TERM_COLS +enum term_cols +{ + BILL_TERM_COL_NAME = 0, + BILL_TERM_COL_TERM, + NUM_BILL_TERM_COLS }; void billterms_new_term_cb (GtkButton *button, BillTermsWindow *btw); @@ -53,395 +54,413 @@ void billterms_window_close (GtkWidget *widget, gpointer data); void billterms_window_destroy_cb (GtkWidget *widget, gpointer data); void billterms_type_combobox_changed (GtkComboBox *cb, gpointer data); -typedef struct _billterm_notebook { - GtkTooltips * tooltips; - GtkWidget * notebook; +typedef struct _billterm_notebook +{ + GtkTooltips * tooltips; + GtkWidget * notebook; - /* "Days" widgets */ - GtkWidget * days_due_days; - GtkWidget * days_disc_days; - GtkWidget * days_disc; + /* "Days" widgets */ + GtkWidget * days_due_days; + GtkWidget * days_disc_days; + GtkWidget * days_disc; - /* "Proximo" widgets */ - GtkWidget * prox_due_day; - GtkWidget * prox_disc_day; - GtkWidget * prox_disc; - GtkWidget * prox_cutoff; + /* "Proximo" widgets */ + GtkWidget * prox_due_day; + GtkWidget * prox_disc_day; + GtkWidget * prox_disc; + GtkWidget * prox_cutoff; - /* What kind of term is this? */ - GncBillTermType type; + /* What kind of term is this? */ + GncBillTermType type; } BillTermNB; -struct _billterms_window { - GtkWidget * dialog; - GtkWidget * terms_view; - GtkWidget * desc_entry; - GtkWidget * type_label; - GtkWidget * term_vbox; - BillTermNB notebook; +struct _billterms_window +{ + GtkWidget * dialog; + GtkWidget * terms_view; + GtkWidget * desc_entry; + GtkWidget * type_label; + GtkWidget * term_vbox; + BillTermNB notebook; - GncBillTerm * current_term; - QofBook * book; - gint component_id; + GncBillTerm * current_term; + QofBook * book; + gint component_id; }; -typedef struct _new_billterms { - GtkWidget * dialog; - GtkWidget * name_entry; - GtkWidget * desc_entry; - BillTermNB notebook; +typedef struct _new_billterms +{ + GtkWidget * dialog; + GtkWidget * name_entry; + GtkWidget * desc_entry; + BillTermNB notebook; - BillTermsWindow * btw; - GncBillTerm * this_term; + BillTermsWindow * btw; + GncBillTerm * this_term; } NewBillTerm; static GtkWidget * read_widget (GladeXML *xml, char *name, gboolean read_only) { - GtkWidget *widget = glade_xml_get_widget (xml, name); - if (read_only) { - GtkAdjustment *adj; - gtk_editable_set_editable (GTK_EDITABLE (widget), FALSE); - adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget)); - adj->step_increment = 0.0; - adj->page_increment = 0.0; - gtk_adjustment_changed (adj); - } + GtkWidget *widget = glade_xml_get_widget (xml, name); + if (read_only) + { + GtkAdjustment *adj; + gtk_editable_set_editable (GTK_EDITABLE (widget), FALSE); + adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget)); + adj->step_increment = 0.0; + adj->page_increment = 0.0; + gtk_adjustment_changed (adj); + } - return widget; + return widget; } /* NOTE: The caller needs to unref once they attach */ static void init_notebook_widgets (BillTermNB *notebook, gboolean read_only, - GtkDialog *dialog, gpointer user_data) + GtkDialog *dialog, gpointer user_data) { - GladeXML *xml; - GtkWidget *parent; + GladeXML *xml; + GtkWidget *parent; - /* Initialize the tooltips */ - notebook->tooltips = gtk_tooltips_new (); + /* Initialize the tooltips */ + notebook->tooltips = gtk_tooltips_new (); - /* Load the notebook from XML */ - xml = gnc_glade_xml_new ("billterms.glade", "Term Notebook"); - notebook->notebook = glade_xml_get_widget (xml, "term_notebook"); - parent = glade_xml_get_widget (xml, "Term Notebook"); + /* Load the notebook from XML */ + xml = gnc_glade_xml_new ("billterms.glade", "Term Notebook"); + notebook->notebook = glade_xml_get_widget (xml, "term_notebook"); + parent = glade_xml_get_widget (xml, "Term Notebook"); - /* load the "days" widgets */ - notebook->days_due_days = read_widget (xml, "days:due_days", read_only); - notebook->days_disc_days = read_widget (xml, "days:discount_days", read_only); - notebook->days_disc = read_widget (xml, "days:discount", read_only); + /* load the "days" widgets */ + notebook->days_due_days = read_widget (xml, "days:due_days", read_only); + notebook->days_disc_days = read_widget (xml, "days:discount_days", read_only); + notebook->days_disc = read_widget (xml, "days:discount", read_only); - /* load the "proximo" widgets */ - notebook->prox_due_day = read_widget (xml, "prox:due_day", read_only); - notebook->prox_disc_day = read_widget (xml, "prox:discount_day", read_only); - notebook->prox_disc = read_widget (xml, "prox:discount", read_only); - notebook->prox_cutoff = read_widget (xml, "prox:cutoff_day", read_only); + /* load the "proximo" widgets */ + notebook->prox_due_day = read_widget (xml, "prox:due_day", read_only); + notebook->prox_disc_day = read_widget (xml, "prox:discount_day", read_only); + notebook->prox_disc = read_widget (xml, "prox:discount", read_only); + notebook->prox_cutoff = read_widget (xml, "prox:cutoff_day", read_only); - /* Disconnect the notebook from the window */ - g_object_ref (notebook->notebook); - gtk_container_remove (GTK_CONTAINER (parent), notebook->notebook); - gtk_widget_destroy (parent); + /* Disconnect the notebook from the window */ + g_object_ref (notebook->notebook); + gtk_container_remove (GTK_CONTAINER (parent), notebook->notebook); + gtk_widget_destroy (parent); - /* NOTE: The caller needs to unref once they attach */ + /* NOTE: The caller needs to unref once they attach */ } static void set_numeric (GtkWidget *widget, GncBillTerm *term, - void (*func)(GncBillTerm *, gnc_numeric)) + void (*func)(GncBillTerm *, gnc_numeric)) { - gnc_numeric val; - gdouble fl = 0.0; + gnc_numeric val; + gdouble fl = 0.0; - fl = gtk_spin_button_get_value (GTK_SPIN_BUTTON (widget)); - val = double_to_gnc_numeric (fl, 100000, GNC_RND_ROUND); - func (term, val); + fl = gtk_spin_button_get_value (GTK_SPIN_BUTTON (widget)); + val = double_to_gnc_numeric (fl, 100000, GNC_RND_ROUND); + func (term, val); } static void get_numeric (GtkWidget *widget, GncBillTerm *term, - gnc_numeric (*func)(const GncBillTerm *)) + gnc_numeric (*func)(const GncBillTerm *)) { - gnc_numeric val; - gdouble fl; + gnc_numeric val; + gdouble fl; - val = func (term); - fl = gnc_numeric_to_double (val); - gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), fl); + val = func (term); + fl = gnc_numeric_to_double (val); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), fl); } static void set_int (GtkWidget *widget, GncBillTerm *term, - void (*func)(GncBillTerm *, gint)) + void (*func)(GncBillTerm *, gint)) { - gint val; + gint val; - val = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget)); - func (term, val); + val = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget)); + func (term, val); } static void get_int (GtkWidget *widget, GncBillTerm *term, - gint (*func)(const GncBillTerm *)) + gint (*func)(const GncBillTerm *)) { - gint val; + gint val; - val = func (term); - gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), (gfloat)val); + val = func (term); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), (gfloat)val); } /* return TRUE if anything truly changed */ static gboolean ui_to_billterm (NewBillTerm *nbt) { - BillTermNB *notebook; - GncBillTerm *term; - const char *text; + BillTermNB *notebook; + GncBillTerm *term; + const char *text; - term = nbt->this_term; - notebook = &nbt->notebook; + term = nbt->this_term; + notebook = &nbt->notebook; - text = gtk_entry_get_text (GTK_ENTRY (nbt->desc_entry)); - if (text) - gncBillTermSetDescription (term, text); + text = gtk_entry_get_text (GTK_ENTRY (nbt->desc_entry)); + if (text) + gncBillTermSetDescription (term, text); - gncBillTermSetType (nbt->this_term, nbt->notebook.type); + gncBillTermSetType (nbt->this_term, nbt->notebook.type); - switch (nbt->notebook.type) { - case GNC_TERM_TYPE_DAYS: - set_int (notebook->days_due_days, term, gncBillTermSetDueDays); - set_int (notebook->days_disc_days, term, gncBillTermSetDiscountDays); - set_numeric (notebook->days_disc, term, gncBillTermSetDiscount); - break; + switch (nbt->notebook.type) + { + case GNC_TERM_TYPE_DAYS: + set_int (notebook->days_due_days, term, gncBillTermSetDueDays); + set_int (notebook->days_disc_days, term, gncBillTermSetDiscountDays); + set_numeric (notebook->days_disc, term, gncBillTermSetDiscount); + break; - case GNC_TERM_TYPE_PROXIMO: - set_int (notebook->prox_due_day, term, gncBillTermSetDueDays); - set_int (notebook->prox_disc_day, term, gncBillTermSetDiscountDays); - set_numeric (notebook->prox_disc, term, gncBillTermSetDiscount); - set_int (notebook->prox_cutoff, term, gncBillTermSetCutoff); - break; - } + case GNC_TERM_TYPE_PROXIMO: + set_int (notebook->prox_due_day, term, gncBillTermSetDueDays); + set_int (notebook->prox_disc_day, term, gncBillTermSetDiscountDays); + set_numeric (notebook->prox_disc, term, gncBillTermSetDiscount); + set_int (notebook->prox_cutoff, term, gncBillTermSetCutoff); + break; + } - return gncBillTermIsDirty (term); + return gncBillTermIsDirty (term); } static void billterm_to_ui (GncBillTerm *term, GtkWidget *desc, BillTermNB *notebook) { - gtk_entry_set_text (GTK_ENTRY (desc), gncBillTermGetDescription (term)); - notebook->type = gncBillTermGetType (term); + gtk_entry_set_text (GTK_ENTRY (desc), gncBillTermGetDescription (term)); + notebook->type = gncBillTermGetType (term); - switch (notebook->type) { - case GNC_TERM_TYPE_DAYS: - get_int (notebook->days_due_days, term, gncBillTermGetDueDays); - get_int (notebook->days_disc_days, term, gncBillTermGetDiscountDays); - get_numeric (notebook->days_disc, term, gncBillTermGetDiscount); - break; + switch (notebook->type) + { + case GNC_TERM_TYPE_DAYS: + get_int (notebook->days_due_days, term, gncBillTermGetDueDays); + get_int (notebook->days_disc_days, term, gncBillTermGetDiscountDays); + get_numeric (notebook->days_disc, term, gncBillTermGetDiscount); + break; - case GNC_TERM_TYPE_PROXIMO: - get_int (notebook->prox_due_day, term, gncBillTermGetDueDays); - get_int (notebook->prox_disc_day, term, gncBillTermGetDiscountDays); - get_numeric (notebook->prox_disc, term, gncBillTermGetDiscount); - get_int (notebook->prox_cutoff, term, gncBillTermGetCutoff); - break; - } + case GNC_TERM_TYPE_PROXIMO: + get_int (notebook->prox_due_day, term, gncBillTermGetDueDays); + get_int (notebook->prox_disc_day, term, gncBillTermGetDiscountDays); + get_numeric (notebook->prox_disc, term, gncBillTermGetDiscount); + get_int (notebook->prox_cutoff, term, gncBillTermGetCutoff); + break; + } } static gboolean verify_term_ok (NewBillTerm *nbt) { - char *message; - gnc_numeric num; + char *message; + gnc_numeric num; - return TRUE; + return TRUE; - /* verify the discount day(s) is less than the due day(s) */ - num = gnc_numeric_zero (); - if (gnc_numeric_negative_p (num)) { - message = _("Negative amounts are not allowed."); - gnc_error_dialog (nbt->dialog, "%s", message); - return FALSE; - } - if (gnc_numeric_compare (num, gnc_numeric_create (100, 1)) > 0) { - message = _("Percentage amount must be between 0 and 100."); - gnc_error_dialog (nbt->dialog, "%s", message); - return FALSE; - } - return TRUE; + /* verify the discount day(s) is less than the due day(s) */ + num = gnc_numeric_zero (); + if (gnc_numeric_negative_p (num)) + { + message = _("Negative amounts are not allowed."); + gnc_error_dialog (nbt->dialog, "%s", message); + return FALSE; + } + if (gnc_numeric_compare (num, gnc_numeric_create (100, 1)) > 0) + { + message = _("Percentage amount must be between 0 and 100."); + gnc_error_dialog (nbt->dialog, "%s", message); + return FALSE; + } + return TRUE; } static gboolean new_billterm_ok_cb (NewBillTerm *nbt) { - BillTermsWindow *btw; - const char *name = NULL; - char *message; + BillTermsWindow *btw; + const char *name = NULL; + char *message; - g_return_val_if_fail (nbt, FALSE); - btw = nbt->btw; + g_return_val_if_fail (nbt, FALSE); + btw = nbt->btw; - /* Verify that we've got real, valid data */ + /* Verify that we've got real, valid data */ - /* verify the name, maybe */ - if (nbt->this_term == NULL) { - name = gtk_entry_get_text (GTK_ENTRY (nbt->name_entry)); - if (name == NULL || *name == '\0') { - message = _("You must provide a name for this Billing Term."); - gnc_error_dialog (nbt->dialog, "%s", message); - return FALSE; + /* verify the name, maybe */ + if (nbt->this_term == NULL) + { + name = gtk_entry_get_text (GTK_ENTRY (nbt->name_entry)); + if (name == NULL || *name == '\0') + { + message = _("You must provide a name for this Billing Term."); + gnc_error_dialog (nbt->dialog, "%s", message); + return FALSE; + } + if (gncBillTermLookupByName (btw->book, name)) + { + message = g_strdup_printf(_( + "You must provide a unique name for this Billing Term. " + "Your choice \"%s\" is already in use."), name); + gnc_error_dialog (nbt->dialog, "%s", message); + g_free (message); + return FALSE; + } } - if (gncBillTermLookupByName (btw->book, name)) { - message = g_strdup_printf(_( - "You must provide a unique name for this Billing Term. " - "Your choice \"%s\" is already in use."), name); - gnc_error_dialog (nbt->dialog, "%s", message); - g_free (message); - return FALSE; + + /* Verify the actual data */ + if (!verify_term_ok (nbt)) + return FALSE; + + gnc_suspend_gui_refresh (); + + /* Ok, it's all valid, now either change or add this thing */ + if (nbt->this_term == NULL) + { + nbt->this_term = gncBillTermCreate (btw->book); + gncBillTermBeginEdit (nbt->this_term); + gncBillTermSetName (nbt->this_term, name); + /* Reset the current term */ + btw->current_term = nbt->this_term; } - } + else + gncBillTermBeginEdit (btw->current_term); - /* Verify the actual data */ - if (!verify_term_ok (nbt)) - return FALSE; + /* Fill in the rest of the term */ + if (ui_to_billterm (nbt)) + gncBillTermChanged (btw->current_term); - gnc_suspend_gui_refresh (); + /* Mark the table as changed and commit it */ + gncBillTermCommitEdit (btw->current_term); - /* Ok, it's all valid, now either change or add this thing */ - if (nbt->this_term == NULL) { - nbt->this_term = gncBillTermCreate (btw->book); - gncBillTermBeginEdit (nbt->this_term); - gncBillTermSetName (nbt->this_term, name); - /* Reset the current term */ - btw->current_term = nbt->this_term; - } else - gncBillTermBeginEdit (btw->current_term); - - /* Fill in the rest of the term */ - if (ui_to_billterm (nbt)) - gncBillTermChanged (btw->current_term); - - /* Mark the table as changed and commit it */ - gncBillTermCommitEdit (btw->current_term); - - gnc_resume_gui_refresh(); - return TRUE; + gnc_resume_gui_refresh(); + return TRUE; } static void show_notebook (BillTermNB *notebook) { - g_return_if_fail (notebook->type > 0); - gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook->notebook), - notebook->type-1); + g_return_if_fail (notebook->type > 0); + gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook->notebook), + notebook->type - 1); } static void maybe_set_type (NewBillTerm *nbt, GncBillTermType type) { - /* See if anything to do? */ - if (type == nbt->notebook.type) - return; + /* See if anything to do? */ + if (type == nbt->notebook.type) + return; - /* Yep. Let's refresh */ - nbt->notebook.type = type; - show_notebook (&nbt->notebook); + /* Yep. Let's refresh */ + nbt->notebook.type = type; + show_notebook (&nbt->notebook); } void billterms_type_combobox_changed (GtkComboBox *cb, gpointer data) { - NewBillTerm *nbt = data; - gint value; + NewBillTerm *nbt = data; + gint value; - value = gtk_combo_box_get_active(cb); - maybe_set_type (nbt, value + 1); + value = gtk_combo_box_get_active(cb); + maybe_set_type (nbt, value + 1); } static GncBillTerm * new_billterm_dialog (BillTermsWindow *btw, GncBillTerm *term, - const char *name) + const char *name) { - GncBillTerm *created_term = NULL; - NewBillTerm *nbt; - GladeXML *xml; - GtkWidget *box, *combo_box; - gint response; - gboolean done; - const gchar *dialog_name; + GncBillTerm *created_term = NULL; + NewBillTerm *nbt; + GladeXML *xml; + GtkWidget *box, *combo_box; + gint response; + gboolean done; + const gchar *dialog_name; - if (!btw) return NULL; + if (!btw) return NULL; - nbt = g_new0 (NewBillTerm, 1); - nbt->btw = btw; - nbt->this_term = term; + nbt = g_new0 (NewBillTerm, 1); + nbt->btw = btw; + nbt->this_term = term; - /* Open and read the XML */ - dialog_name = term ? "Edit Term Dialog" : "New Term Dialog"; - xml = gnc_glade_xml_new ("billterms.glade", dialog_name); - nbt->dialog = glade_xml_get_widget (xml, dialog_name); - nbt->name_entry = glade_xml_get_widget (xml, "name_entry"); - nbt->desc_entry = glade_xml_get_widget (xml, "desc_entry"); - if (name) - gtk_entry_set_text (GTK_ENTRY (nbt->name_entry), name); + /* Open and read the XML */ + dialog_name = term ? "Edit Term Dialog" : "New Term Dialog"; + xml = gnc_glade_xml_new ("billterms.glade", dialog_name); + nbt->dialog = glade_xml_get_widget (xml, dialog_name); + nbt->name_entry = glade_xml_get_widget (xml, "name_entry"); + nbt->desc_entry = glade_xml_get_widget (xml, "desc_entry"); + if (name) + gtk_entry_set_text (GTK_ENTRY (nbt->name_entry), name); - /* Initialize the notebook widgets */ - init_notebook_widgets (&nbt->notebook, FALSE, - GTK_DIALOG (nbt->dialog), nbt); + /* Initialize the notebook widgets */ + init_notebook_widgets (&nbt->notebook, FALSE, + GTK_DIALOG (nbt->dialog), nbt); - /* Attach the notebook */ - box = glade_xml_get_widget (xml, "notebook_box"); - gtk_box_pack_start (GTK_BOX (box), nbt->notebook.notebook, TRUE, TRUE, 0); - g_object_unref (nbt->notebook.notebook); + /* Attach the notebook */ + box = glade_xml_get_widget (xml, "notebook_box"); + gtk_box_pack_start (GTK_BOX (box), nbt->notebook.notebook, TRUE, TRUE, 0); + g_object_unref (nbt->notebook.notebook); - /* Fill in the widgets appropriately */ - if (term) - billterm_to_ui (term, nbt->desc_entry, &nbt->notebook); - else - nbt->notebook.type = GNC_TERM_TYPE_DAYS; + /* Fill in the widgets appropriately */ + if (term) + billterm_to_ui (term, nbt->desc_entry, &nbt->notebook); + else + nbt->notebook.type = GNC_TERM_TYPE_DAYS; - /* Create the menu */ - combo_box = glade_xml_get_widget (xml, "type_combobox"); - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), nbt->notebook.type - 1); + /* Create the menu */ + combo_box = glade_xml_get_widget (xml, "type_combobox"); + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), nbt->notebook.type - 1); - /* Show the right notebook page */ - show_notebook (&nbt->notebook); + /* Show the right notebook page */ + show_notebook (&nbt->notebook); - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - nbt); + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + nbt); - gtk_window_set_transient_for (GTK_WINDOW(nbt->dialog), - GTK_WINDOW(btw->dialog)); + gtk_window_set_transient_for (GTK_WINDOW(nbt->dialog), + GTK_WINDOW(btw->dialog)); - /* Show what we should */ - gtk_widget_show_all (nbt->dialog); - if (term) { - gtk_widget_grab_focus (nbt->desc_entry); - } else - gtk_widget_grab_focus (nbt->name_entry); - - done = FALSE; - while (!done) { - response = gtk_dialog_run (GTK_DIALOG (nbt->dialog)); - switch (response) { - case GTK_RESPONSE_OK: - if (new_billterm_ok_cb (nbt)) { - created_term = nbt->this_term; - done = TRUE; - } - break; - default: - done = TRUE; - break; + /* Show what we should */ + gtk_widget_show_all (nbt->dialog); + if (term) + { + gtk_widget_grab_focus (nbt->desc_entry); } - } + else + gtk_widget_grab_focus (nbt->name_entry); - gtk_widget_destroy(nbt->dialog); - g_free(nbt); + done = FALSE; + while (!done) + { + response = gtk_dialog_run (GTK_DIALOG (nbt->dialog)); + switch (response) + { + case GTK_RESPONSE_OK: + if (new_billterm_ok_cb (nbt)) + { + created_term = nbt->this_term; + done = TRUE; + } + break; + default: + done = TRUE; + break; + } + } - return created_term; + gtk_widget_destroy(nbt->dialog); + g_free(nbt); + + return created_term; } /***********************************************************************/ @@ -449,312 +468,324 @@ new_billterm_dialog (BillTermsWindow *btw, GncBillTerm *term, static void billterms_term_refresh (BillTermsWindow *btw) { - char *type_label; + char *type_label; - g_return_if_fail (btw); + g_return_if_fail (btw); - if (!btw->current_term) { - gtk_widget_hide_all (btw->term_vbox); - return; - } + if (!btw->current_term) + { + gtk_widget_hide_all (btw->term_vbox); + return; + } - gtk_widget_show_all (btw->term_vbox); - billterm_to_ui (btw->current_term, btw->desc_entry, &btw->notebook); - switch (gncBillTermGetType (btw->current_term)) { - case GNC_TERM_TYPE_DAYS: - type_label = _("Days"); - break; - case GNC_TERM_TYPE_PROXIMO: - type_label = _("Proximo"); - break; - default: - type_label = _("Unknown"); - break; - } - show_notebook (&btw->notebook); - gtk_label_set_text (GTK_LABEL (btw->type_label), type_label); + gtk_widget_show_all (btw->term_vbox); + billterm_to_ui (btw->current_term, btw->desc_entry, &btw->notebook); + switch (gncBillTermGetType (btw->current_term)) + { + case GNC_TERM_TYPE_DAYS: + type_label = _("Days"); + break; + case GNC_TERM_TYPE_PROXIMO: + type_label = _("Proximo"); + break; + default: + type_label = _("Unknown"); + break; + } + show_notebook (&btw->notebook); + gtk_label_set_text (GTK_LABEL (btw->type_label), type_label); } static void billterms_window_refresh (BillTermsWindow *btw) { - GList *list, *node; - GncBillTerm *term; - GtkTreeView *view; - GtkListStore *store; - GtkTreeIter iter; - GtkTreePath *path; - GtkTreeSelection *selection; - GtkTreeRowReference *reference = NULL; + GList *list, *node; + GncBillTerm *term; + GtkTreeView *view; + GtkListStore *store; + GtkTreeIter iter; + GtkTreePath *path; + GtkTreeSelection *selection; + GtkTreeRowReference *reference = NULL; - g_return_if_fail (btw); - view = GTK_TREE_VIEW (btw->terms_view); - store = GTK_LIST_STORE(gtk_tree_view_get_model(view)); + g_return_if_fail (btw); + view = GTK_TREE_VIEW (btw->terms_view); + store = GTK_LIST_STORE(gtk_tree_view_get_model(view)); - /* Clear the list */ - gtk_list_store_clear (store); - gnc_gui_component_clear_watches (btw->component_id); + /* Clear the list */ + gtk_list_store_clear (store); + gnc_gui_component_clear_watches (btw->component_id); - /* Add the items to the list */ - list = gncBillTermGetTerms (btw->book); + /* Add the items to the list */ + list = gncBillTermGetTerms (btw->book); - /* If there are no terms, clear the term display */ - if (list == NULL) { - btw->current_term = NULL; - billterms_term_refresh (btw); - } else { - list = g_list_reverse (g_list_copy (list)); - } - - for ( node = list; node; node = node->next) { - term = node->data; - gnc_gui_component_watch_entity (btw->component_id, - gncBillTermGetGUID (term), - QOF_EVENT_MODIFY); - - gtk_list_store_prepend(store, &iter); - gtk_list_store_set(store, &iter, - BILL_TERM_COL_NAME, gncBillTermGetName(term), - BILL_TERM_COL_TERM, term, - -1); - if (term == btw->current_term) { - path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter); - reference = gtk_tree_row_reference_new(GTK_TREE_MODEL(store), path); - gtk_tree_path_free(path); + /* If there are no terms, clear the term display */ + if (list == NULL) + { + btw->current_term = NULL; + billterms_term_refresh (btw); } - } - - g_list_free (list); - - gnc_gui_component_watch_entity_type (btw->component_id, - GNC_BILLTERM_MODULE_NAME, - QOF_EVENT_CREATE | QOF_EVENT_DESTROY); - - if (reference) { - path = gtk_tree_row_reference_get_path(reference); - gtk_tree_row_reference_free(reference); - if (path) { - selection = gtk_tree_view_get_selection(view); - gtk_tree_selection_select_path(selection, path); - gtk_tree_view_scroll_to_cell(view, path, NULL, TRUE, 0.5, 0.0); - gtk_tree_path_free(path); + else + { + list = g_list_reverse (g_list_copy (list)); + } + + for ( node = list; node; node = node->next) + { + term = node->data; + gnc_gui_component_watch_entity (btw->component_id, + gncBillTermGetGUID (term), + QOF_EVENT_MODIFY); + + gtk_list_store_prepend(store, &iter); + gtk_list_store_set(store, &iter, + BILL_TERM_COL_NAME, gncBillTermGetName(term), + BILL_TERM_COL_TERM, term, + -1); + if (term == btw->current_term) + { + path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter); + reference = gtk_tree_row_reference_new(GTK_TREE_MODEL(store), path); + gtk_tree_path_free(path); + } + } + + g_list_free (list); + + gnc_gui_component_watch_entity_type (btw->component_id, + GNC_BILLTERM_MODULE_NAME, + QOF_EVENT_CREATE | QOF_EVENT_DESTROY); + + if (reference) + { + path = gtk_tree_row_reference_get_path(reference); + gtk_tree_row_reference_free(reference); + if (path) + { + selection = gtk_tree_view_get_selection(view); + gtk_tree_selection_select_path(selection, path); + gtk_tree_view_scroll_to_cell(view, path, NULL, TRUE, 0.5, 0.0); + gtk_tree_path_free(path); + } } - } } static void billterm_selection_changed (GtkTreeSelection *selection, - BillTermsWindow *btw) + BillTermsWindow *btw) { - GncBillTerm *term = NULL; - GtkTreeModel *model; - GtkTreeIter iter; + GncBillTerm *term = NULL; + GtkTreeModel *model; + GtkTreeIter iter; - g_return_if_fail (btw); + g_return_if_fail (btw); - if (gtk_tree_selection_get_selected(selection, &model, &iter)) - gtk_tree_model_get(model, &iter, BILL_TERM_COL_TERM, &term, -1); + if (gtk_tree_selection_get_selected(selection, &model, &iter)) + gtk_tree_model_get(model, &iter, BILL_TERM_COL_TERM, &term, -1); - /* If we've changed, then reset the term list */ - if (term != btw->current_term) - btw->current_term = term; + /* If we've changed, then reset the term list */ + if (term != btw->current_term) + btw->current_term = term; - /* And force a refresh of the entries */ - billterms_term_refresh (btw); + /* And force a refresh of the entries */ + billterms_term_refresh (btw); } static void billterm_selection_activated (GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, - BillTermsWindow *btw) + GtkTreePath *path, + GtkTreeViewColumn *column, + BillTermsWindow *btw) { - new_billterm_dialog (btw, btw->current_term, NULL); + new_billterm_dialog (btw, btw->current_term, NULL); } void billterms_new_term_cb (GtkButton *button, BillTermsWindow *btw) { - g_return_if_fail (btw); - new_billterm_dialog (btw, NULL, NULL); + g_return_if_fail (btw); + new_billterm_dialog (btw, NULL, NULL); } void billterms_delete_term_cb (GtkButton *button, BillTermsWindow *btw) { - g_return_if_fail (btw); + g_return_if_fail (btw); - if (!btw->current_term) - return; + if (!btw->current_term) + return; - if (gncBillTermGetRefcount (btw->current_term) > 0) { - gnc_error_dialog (btw->dialog, - _("Term \"%s\" is in use. You cannot delete it."), - gncBillTermGetName (btw->current_term)); - return; - } + if (gncBillTermGetRefcount (btw->current_term) > 0) + { + gnc_error_dialog (btw->dialog, + _("Term \"%s\" is in use. You cannot delete it."), + gncBillTermGetName (btw->current_term)); + return; + } - if (gnc_verify_dialog (btw->dialog, FALSE, - _("Are you sure you want to delete \"%s\"?"), - gncBillTermGetName (btw->current_term))) { - /* Ok, let's remove it */ - gnc_suspend_gui_refresh (); - gncBillTermBeginEdit (btw->current_term); - gncBillTermDestroy (btw->current_term); - btw->current_term = NULL; - gnc_resume_gui_refresh (); - } + if (gnc_verify_dialog (btw->dialog, FALSE, + _("Are you sure you want to delete \"%s\"?"), + gncBillTermGetName (btw->current_term))) + { + /* Ok, let's remove it */ + gnc_suspend_gui_refresh (); + gncBillTermBeginEdit (btw->current_term); + gncBillTermDestroy (btw->current_term); + btw->current_term = NULL; + gnc_resume_gui_refresh (); + } } void billterms_edit_term_cb (GtkButton *button, BillTermsWindow *btw) { - g_return_if_fail (btw); - if (!btw->current_term) - return; - new_billterm_dialog (btw, btw->current_term, NULL); + g_return_if_fail (btw); + if (!btw->current_term) + return; + new_billterm_dialog (btw, btw->current_term, NULL); } static void billterms_window_refresh_handler (GHashTable *changes, gpointer data) { - BillTermsWindow *btw = data; + BillTermsWindow *btw = data; - g_return_if_fail (data); - billterms_window_refresh (btw); + g_return_if_fail (data); + billterms_window_refresh (btw); } static void billterms_window_close_handler (gpointer data) { - BillTermsWindow *btw = data; - g_return_if_fail (btw); + BillTermsWindow *btw = data; + g_return_if_fail (btw); - gtk_widget_destroy (btw->dialog); + gtk_widget_destroy (btw->dialog); } void billterms_window_close (GtkWidget *widget, gpointer data) { - BillTermsWindow *btw = data; + BillTermsWindow *btw = data; - gnc_ui_billterms_window_destroy (btw); + gnc_ui_billterms_window_destroy (btw); } void billterms_window_destroy_cb (GtkWidget *widget, gpointer data) { - BillTermsWindow *btw = data; + BillTermsWindow *btw = data; - if (!btw) return; + if (!btw) return; - gnc_unregister_gui_component (btw->component_id); + gnc_unregister_gui_component (btw->component_id); - g_free (btw); + g_free (btw); } static gboolean find_handler (gpointer find_data, gpointer user_data) { - BillTermsWindow *btw = user_data; - QofBook *book = find_data; + BillTermsWindow *btw = user_data; + QofBook *book = find_data; - return (btw != NULL && btw->book == book); + return (btw != NULL && btw->book == book); } /* Create a billterms window */ BillTermsWindow * gnc_ui_billterms_window_new (QofBook *book) { - BillTermsWindow *btw; - GladeXML *xml; - GtkWidget *widget; - GtkTreeView *view; - GtkTreeViewColumn *column; - GtkCellRenderer *renderer; - GtkListStore *store; - GtkTreeSelection *selection; + BillTermsWindow *btw; + GladeXML *xml; + GtkWidget *widget; + GtkTreeView *view; + GtkTreeViewColumn *column; + GtkCellRenderer *renderer; + GtkListStore *store; + GtkTreeSelection *selection; - if (!book) return NULL; + if (!book) return NULL; + + /* + * Find an existing billterm window. If found, bring it to + * the front. If we have an actual owner, then set it in + * the window. + */ + btw = gnc_find_first_gui_component (DIALOG_BILLTERMS_CM_CLASS, + find_handler, book); + if (btw) + { + gtk_window_present (GTK_WINDOW(btw->dialog)); + return btw; + } + + /* Didn't find one -- create a new window */ + btw = g_new0 (BillTermsWindow, 1); + btw->book = book; + + /* Open and read the XML */ + xml = gnc_glade_xml_new ("billterms.glade", "Terms Window"); + btw->dialog = glade_xml_get_widget (xml, "Terms Window"); + btw->terms_view = glade_xml_get_widget (xml, "terms_view"); + btw->desc_entry = glade_xml_get_widget (xml, "desc_entry"); + btw->type_label = glade_xml_get_widget (xml, "type_label"); + btw->term_vbox = glade_xml_get_widget (xml, "term_vbox"); + + /* Initialize the view */ + view = GTK_TREE_VIEW(btw->terms_view); + store = gtk_list_store_new (NUM_BILL_TERM_COLS, G_TYPE_STRING, G_TYPE_POINTER); + gtk_tree_view_set_model(view, GTK_TREE_MODEL(store)); + g_object_unref(store); + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes("", renderer, + "text", BILL_TERM_COL_NAME, + NULL); + gtk_tree_view_append_column(view, column); + + g_signal_connect(view, "row-activated", + G_CALLBACK(billterm_selection_activated), btw); + selection = gtk_tree_view_get_selection(view); + g_signal_connect(selection, "changed", + G_CALLBACK(billterm_selection_changed), btw); + + /* Initialize the notebook widgets */ + init_notebook_widgets (&btw->notebook, TRUE, + GTK_DIALOG (btw->dialog), btw); + + /* Attach the notebook */ + widget = glade_xml_get_widget (xml, "notebook_box"); + gtk_box_pack_start (GTK_BOX (widget), btw->notebook.notebook, + TRUE, TRUE, 0); + g_object_unref (btw->notebook.notebook); + + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + btw); + + /* register with component manager */ + btw->component_id = + gnc_register_gui_component (DIALOG_BILLTERMS_CM_CLASS, + billterms_window_refresh_handler, + billterms_window_close_handler, + btw); + + gtk_widget_show_all (btw->dialog); + billterms_window_refresh (btw); - /* - * Find an existing billterm window. If found, bring it to - * the front. If we have an actual owner, then set it in - * the window. - */ - btw = gnc_find_first_gui_component (DIALOG_BILLTERMS_CM_CLASS, - find_handler, book); - if (btw) { - gtk_window_present (GTK_WINDOW(btw->dialog)); return btw; - } - - /* Didn't find one -- create a new window */ - btw = g_new0 (BillTermsWindow, 1); - btw->book = book; - - /* Open and read the XML */ - xml = gnc_glade_xml_new ("billterms.glade", "Terms Window"); - btw->dialog = glade_xml_get_widget (xml, "Terms Window"); - btw->terms_view = glade_xml_get_widget (xml, "terms_view"); - btw->desc_entry = glade_xml_get_widget (xml, "desc_entry"); - btw->type_label = glade_xml_get_widget (xml, "type_label"); - btw->term_vbox = glade_xml_get_widget (xml, "term_vbox"); - - /* Initialize the view */ - view = GTK_TREE_VIEW(btw->terms_view); - store = gtk_list_store_new (NUM_BILL_TERM_COLS, G_TYPE_STRING, G_TYPE_POINTER); - gtk_tree_view_set_model(view, GTK_TREE_MODEL(store)); - g_object_unref(store); - - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes("", renderer, - "text", BILL_TERM_COL_NAME, - NULL); - gtk_tree_view_append_column(view, column); - - g_signal_connect(view, "row-activated", - G_CALLBACK(billterm_selection_activated), btw); - selection = gtk_tree_view_get_selection(view); - g_signal_connect(selection, "changed", - G_CALLBACK(billterm_selection_changed), btw); - - /* Initialize the notebook widgets */ - init_notebook_widgets (&btw->notebook, TRUE, - GTK_DIALOG (btw->dialog), btw); - - /* Attach the notebook */ - widget = glade_xml_get_widget (xml, "notebook_box"); - gtk_box_pack_start (GTK_BOX (widget), btw->notebook.notebook, - TRUE, TRUE, 0); - g_object_unref (btw->notebook.notebook); - - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - btw); - - /* register with component manager */ - btw->component_id = - gnc_register_gui_component (DIALOG_BILLTERMS_CM_CLASS, - billterms_window_refresh_handler, - billterms_window_close_handler, - btw); - - gtk_widget_show_all (btw->dialog); - billterms_window_refresh (btw); - - return btw; } /* Destroy a billterms window */ void gnc_ui_billterms_window_destroy (BillTermsWindow *btw) { - if (!btw) - return; + if (!btw) + return; - gnc_close_gui_component (btw->component_id); + gnc_close_gui_component (btw->component_id); } #if 0 @@ -762,13 +793,13 @@ gnc_ui_billterms_window_destroy (BillTermsWindow *btw) GncBillTerm * gnc_ui_billterms_new_from_name (QofBook *book, const char *name) { - BillTermsWindow *btw; + BillTermsWindow *btw; - if (!book) return NULL; + if (!book) return NULL; - btw = gnc_ui_billterms_window_new (book); - if (!btw) return NULL; + btw = gnc_ui_billterms_window_new (book); + if (!btw) return NULL; - return new_billterm_dialog (btw, NULL, name); + return new_billterm_dialog (btw, NULL, name); } #endif diff --git a/src/business/business-gnome/dialog-choose-owner.c b/src/business/business-gnome/dialog-choose-owner.c index 91e8131bff..2f5e1bc383 100644 --- a/src/business/business-gnome/dialog-choose-owner.c +++ b/src/business/business-gnome/dialog-choose-owner.c @@ -34,71 +34,75 @@ #include "dialog-choose-owner.h" #include "business-gnome-utils.h" -struct _choose_owner_dialog { - GtkWidget * dialog; - GtkWidget * owner_choice; - QofBook * book; - GncOwner owner; - Split * split; +struct _choose_owner_dialog +{ + GtkWidget * dialog; + GtkWidget * owner_choice; + QofBook * book; + GncOwner owner; + Split * split; }; static DialogChooseOwner * gcoi_create_dialog(Split* split) { - DialogChooseOwner* dco; - GladeXML *xml; - GtkWidget *widget, *box; + DialogChooseOwner* dco; + GladeXML *xml; + GtkWidget *widget, *box; - g_return_val_if_fail(split, NULL); + g_return_val_if_fail(split, NULL); - dco = g_new0(DialogChooseOwner, 1); - g_assert(dco); - dco->book = qof_instance_get_book(QOF_INSTANCE(split)); - dco->split = split; + dco = g_new0(DialogChooseOwner, 1); + g_assert(dco); + dco->book = qof_instance_get_book(QOF_INSTANCE(split)); + dco->split = split; - /* Open the Glade file */ - xml = gnc_glade_xml_new("choose-owner.glade", "Choose Owner Dialog"); - g_assert(xml); + /* Open the Glade file */ + xml = gnc_glade_xml_new("choose-owner.glade", "Choose Owner Dialog"); + g_assert(xml); - /* Get the dialog handle */ - dco->dialog = glade_xml_get_widget(xml, "Choose Owner Dialog"); - g_assert(dco->dialog); + /* Get the dialog handle */ + dco->dialog = glade_xml_get_widget(xml, "Choose Owner Dialog"); + g_assert(dco->dialog); - /* Get the title widget and set the title */ - widget = glade_xml_get_widget(xml, "title_label"); - if (1 == 1) { - gncOwnerInitCustomer(&(dco->owner), NULL); + /* Get the title widget and set the title */ + widget = glade_xml_get_widget(xml, "title_label"); + if (1 == 1) + { + gncOwnerInitCustomer(&(dco->owner), NULL); + gtk_label_set_text(GTK_LABEL(widget), + _("This transaction needs to be assigned to a Customer." + " Please choose the Customer below.")); + } + else + { + gncOwnerInitVendor(&(dco->owner), NULL); + gtk_label_set_text(GTK_LABEL(widget), + _("This transaction needs to be assigned to a Vendor." + " Please choose the Vendor below.")); + } + + /* Get the transaction description and set it */ + widget = glade_xml_get_widget(xml, "desc_label"); gtk_label_set_text(GTK_LABEL(widget), - _("This transaction needs to be assigned to a Customer." - " Please choose the Customer below.")); - } else { - gncOwnerInitVendor(&(dco->owner), NULL); - gtk_label_set_text(GTK_LABEL(widget), - _("This transaction needs to be assigned to a Vendor." - " Please choose the Vendor below.")); - } + xaccTransGetDescription(xaccSplitGetParent(split))); - /* Get the transaction description and set it */ - widget = glade_xml_get_widget(xml, "desc_label"); - gtk_label_set_text(GTK_LABEL(widget), - xaccTransGetDescription(xaccSplitGetParent(split))); + /* Get the owner label and the owner box */ + widget = glade_xml_get_widget(xml, "owner_label"); + box = glade_xml_get_widget(xml, "owner_box"); + dco->owner_choice = gnc_owner_select_create(widget, box, dco->book, + &(dco->owner)); - /* Get the owner label and the owner box */ - widget = glade_xml_get_widget(xml, "owner_label"); - box = glade_xml_get_widget(xml, "owner_box"); - dco->owner_choice = gnc_owner_select_create(widget, box, dco->book, - &(dco->owner)); - - gtk_widget_show_all(dco->dialog); - return dco; + gtk_widget_show_all(dco->dialog); + return dco; } gboolean gnc_split_assign_owner(GtkWidget* window, Split* split) { - if (1 == 0) - gcoi_create_dialog(split); + if (1 == 0) + gcoi_create_dialog(split); - return FALSE; + return FALSE; } diff --git a/src/business/business-gnome/dialog-customer.c b/src/business/business-gnome/dialog-customer.c index 5f00e0fd29..c817267eb9 100644 --- a/src/business/business-gnome/dialog-customer.c +++ b/src/business/business-gnome/dialog-customer.c @@ -55,7 +55,7 @@ #define GCONF_SECTION_SEARCH "dialogs/business/customer_search" void gnc_customer_taxtable_check_cb (GtkToggleButton *togglebutton, - gpointer user_data); + gpointer user_data); void gnc_customer_window_ok_cb (GtkWidget *widget, gpointer data); void gnc_customer_window_cancel_cb (GtkWidget *widget, gpointer data); @@ -65,591 +65,609 @@ void gnc_customer_name_changed_cb (GtkWidget *widget, gpointer data); typedef enum { - NEW_CUSTOMER, - EDIT_CUSTOMER + NEW_CUSTOMER, + EDIT_CUSTOMER } CustomerDialogType; -struct _customer_select_window { - QofBook * book; - QueryNew * q; +struct _customer_select_window +{ + QofBook * book; + QueryNew * q; }; -struct _customer_window { - GtkWidget * dialog; +struct _customer_window +{ + GtkWidget * dialog; - GtkWidget * id_entry; - GtkWidget * company_entry; + GtkWidget * id_entry; + GtkWidget * company_entry; - GtkWidget * name_entry; - GtkWidget * addr1_entry; - GtkWidget * addr2_entry; - GtkWidget * addr3_entry; - GtkWidget * addr4_entry; - GtkWidget * phone_entry; - GtkWidget * fax_entry; - GtkWidget * email_entry; + GtkWidget * name_entry; + GtkWidget * addr1_entry; + GtkWidget * addr2_entry; + GtkWidget * addr3_entry; + GtkWidget * addr4_entry; + GtkWidget * phone_entry; + GtkWidget * fax_entry; + GtkWidget * email_entry; - GtkWidget * shipname_entry; - GtkWidget * shipaddr1_entry; - GtkWidget * shipaddr2_entry; - GtkWidget * shipaddr3_entry; - GtkWidget * shipaddr4_entry; - GtkWidget * shipphone_entry; - GtkWidget * shipfax_entry; - GtkWidget * shipemail_entry; + GtkWidget * shipname_entry; + GtkWidget * shipaddr1_entry; + GtkWidget * shipaddr2_entry; + GtkWidget * shipaddr3_entry; + GtkWidget * shipaddr4_entry; + GtkWidget * shipphone_entry; + GtkWidget * shipfax_entry; + GtkWidget * shipemail_entry; - GtkWidget * currency_edit; - GtkWidget * terms_menu; - GtkWidget * discount_amount; - GtkWidget * credit_amount; + GtkWidget * currency_edit; + GtkWidget * terms_menu; + GtkWidget * discount_amount; + GtkWidget * credit_amount; - GtkWidget * active_check; - GtkWidget * taxincluded_menu; - GtkWidget * notes_text; + GtkWidget * active_check; + GtkWidget * taxincluded_menu; + GtkWidget * notes_text; - GtkWidget * taxtable_check; - GtkWidget * taxtable_menu; + GtkWidget * taxtable_check; + GtkWidget * taxtable_menu; - GncTaxIncluded taxincluded; - GncBillTerm * terms; - CustomerDialogType dialog_type; - GUID customer_guid; - gint component_id; - QofBook * book; - GncCustomer * created_customer; + GncTaxIncluded taxincluded; + GncBillTerm * terms; + CustomerDialogType dialog_type; + GUID customer_guid; + gint component_id; + QofBook * book; + GncCustomer * created_customer; - GncTaxTable * taxtable; + GncTaxTable * taxtable; }; void gnc_customer_taxtable_check_cb (GtkToggleButton *togglebutton, - gpointer user_data) + gpointer user_data) { - CustomerWindow *cw = user_data; + CustomerWindow *cw = user_data; - if (gtk_toggle_button_get_active (togglebutton)) - gtk_widget_set_sensitive (cw->taxtable_menu, TRUE); - else - gtk_widget_set_sensitive (cw->taxtable_menu, FALSE); + if (gtk_toggle_button_get_active (togglebutton)) + gtk_widget_set_sensitive (cw->taxtable_menu, TRUE); + else + gtk_widget_set_sensitive (cw->taxtable_menu, FALSE); } static GncCustomer * cw_get_customer (CustomerWindow *cw) { - if (!cw) - return NULL; + if (!cw) + return NULL; - return gncCustomerLookup (cw->book, &cw->customer_guid); + return gncCustomerLookup (cw->book, &cw->customer_guid); } static void gnc_ui_to_customer (CustomerWindow *cw, GncCustomer *cust) { - GtkTextBuffer* text_buffer; - GtkTextIter start, end; - gchar *text; - GncAddress *addr, *shipaddr; + GtkTextBuffer* text_buffer; + GtkTextIter start, end; + gchar *text; + GncAddress *addr, *shipaddr; - addr = gncCustomerGetAddr (cust); - shipaddr = gncCustomerGetShipAddr (cust); + addr = gncCustomerGetAddr (cust); + shipaddr = gncCustomerGetShipAddr (cust); - gnc_suspend_gui_refresh (); + gnc_suspend_gui_refresh (); - gncCustomerBeginEdit (cust); + gncCustomerBeginEdit (cust); - gncCustomerSetID (cust, gtk_editable_get_chars - (GTK_EDITABLE (cw->id_entry), 0, -1)); - gncCustomerSetName (cust, gtk_editable_get_chars - (GTK_EDITABLE (cw->company_entry), 0, -1)); + gncCustomerSetID (cust, gtk_editable_get_chars + (GTK_EDITABLE (cw->id_entry), 0, -1)); + gncCustomerSetName (cust, gtk_editable_get_chars + (GTK_EDITABLE (cw->company_entry), 0, -1)); - gncAddressSetName (addr, gtk_editable_get_chars - (GTK_EDITABLE (cw->name_entry), 0, -1)); - gncAddressSetAddr1 (addr, gtk_editable_get_chars - (GTK_EDITABLE (cw->addr1_entry), 0, -1)); - gncAddressSetAddr2 (addr, gtk_editable_get_chars - (GTK_EDITABLE (cw->addr2_entry), 0, -1)); - gncAddressSetAddr3 (addr, gtk_editable_get_chars - (GTK_EDITABLE (cw->addr3_entry), 0, -1)); - gncAddressSetAddr4 (addr, gtk_editable_get_chars - (GTK_EDITABLE (cw->addr4_entry), 0, -1)); - gncAddressSetPhone (addr, gtk_editable_get_chars - (GTK_EDITABLE (cw->phone_entry), 0, -1)); - gncAddressSetFax (addr, gtk_editable_get_chars - (GTK_EDITABLE (cw->fax_entry), 0, -1)); - gncAddressSetEmail (addr, gtk_editable_get_chars - (GTK_EDITABLE (cw->email_entry), 0, -1)); + gncAddressSetName (addr, gtk_editable_get_chars + (GTK_EDITABLE (cw->name_entry), 0, -1)); + gncAddressSetAddr1 (addr, gtk_editable_get_chars + (GTK_EDITABLE (cw->addr1_entry), 0, -1)); + gncAddressSetAddr2 (addr, gtk_editable_get_chars + (GTK_EDITABLE (cw->addr2_entry), 0, -1)); + gncAddressSetAddr3 (addr, gtk_editable_get_chars + (GTK_EDITABLE (cw->addr3_entry), 0, -1)); + gncAddressSetAddr4 (addr, gtk_editable_get_chars + (GTK_EDITABLE (cw->addr4_entry), 0, -1)); + gncAddressSetPhone (addr, gtk_editable_get_chars + (GTK_EDITABLE (cw->phone_entry), 0, -1)); + gncAddressSetFax (addr, gtk_editable_get_chars + (GTK_EDITABLE (cw->fax_entry), 0, -1)); + gncAddressSetEmail (addr, gtk_editable_get_chars + (GTK_EDITABLE (cw->email_entry), 0, -1)); - gncAddressSetName (shipaddr, gtk_editable_get_chars - (GTK_EDITABLE (cw->shipname_entry), 0, -1)); - gncAddressSetAddr1 (shipaddr, gtk_editable_get_chars - (GTK_EDITABLE (cw->shipaddr1_entry), 0, -1)); - gncAddressSetAddr2 (shipaddr, gtk_editable_get_chars - (GTK_EDITABLE (cw->shipaddr2_entry), 0, -1)); - gncAddressSetAddr3 (shipaddr, gtk_editable_get_chars - (GTK_EDITABLE (cw->shipaddr3_entry), 0, -1)); - gncAddressSetAddr4 (shipaddr, gtk_editable_get_chars - (GTK_EDITABLE (cw->shipaddr4_entry), 0, -1)); - gncAddressSetPhone (shipaddr, gtk_editable_get_chars - (GTK_EDITABLE (cw->shipphone_entry), 0, -1)); - gncAddressSetFax (shipaddr, gtk_editable_get_chars - (GTK_EDITABLE (cw->shipfax_entry), 0, -1)); - gncAddressSetEmail (shipaddr, gtk_editable_get_chars - (GTK_EDITABLE (cw->shipemail_entry), 0, -1)); + gncAddressSetName (shipaddr, gtk_editable_get_chars + (GTK_EDITABLE (cw->shipname_entry), 0, -1)); + gncAddressSetAddr1 (shipaddr, gtk_editable_get_chars + (GTK_EDITABLE (cw->shipaddr1_entry), 0, -1)); + gncAddressSetAddr2 (shipaddr, gtk_editable_get_chars + (GTK_EDITABLE (cw->shipaddr2_entry), 0, -1)); + gncAddressSetAddr3 (shipaddr, gtk_editable_get_chars + (GTK_EDITABLE (cw->shipaddr3_entry), 0, -1)); + gncAddressSetAddr4 (shipaddr, gtk_editable_get_chars + (GTK_EDITABLE (cw->shipaddr4_entry), 0, -1)); + gncAddressSetPhone (shipaddr, gtk_editable_get_chars + (GTK_EDITABLE (cw->shipphone_entry), 0, -1)); + gncAddressSetFax (shipaddr, gtk_editable_get_chars + (GTK_EDITABLE (cw->shipfax_entry), 0, -1)); + gncAddressSetEmail (shipaddr, gtk_editable_get_chars + (GTK_EDITABLE (cw->shipemail_entry), 0, -1)); - gncCustomerSetActive (cust, gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (cw->active_check))); - gncCustomerSetTaxIncluded (cust, cw->taxincluded); + gncCustomerSetActive (cust, gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON (cw->active_check))); + gncCustomerSetTaxIncluded (cust, cw->taxincluded); - text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(cw->notes_text)); - gtk_text_buffer_get_bounds (text_buffer, &start, &end); - text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE); - gncCustomerSetNotes (cust, text); + text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(cw->notes_text)); + gtk_text_buffer_get_bounds (text_buffer, &start, &end); + text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE); + gncCustomerSetNotes (cust, text); - /* Parse and set the currency, terms, discount, and credit amounts */ - gncCustomerSetCurrency (cust, - gnc_currency_edit_get_currency (GNC_CURRENCY_EDIT - (cw->currency_edit))); - gncCustomerSetTerms (cust, cw->terms); - gncCustomerSetDiscount (cust, gnc_amount_edit_get_amount - (GNC_AMOUNT_EDIT (cw->discount_amount))); - gncCustomerSetCredit (cust, gnc_amount_edit_get_amount - (GNC_AMOUNT_EDIT (cw->credit_amount))); + /* Parse and set the currency, terms, discount, and credit amounts */ + gncCustomerSetCurrency (cust, + gnc_currency_edit_get_currency (GNC_CURRENCY_EDIT + (cw->currency_edit))); + gncCustomerSetTerms (cust, cw->terms); + gncCustomerSetDiscount (cust, gnc_amount_edit_get_amount + (GNC_AMOUNT_EDIT (cw->discount_amount))); + gncCustomerSetCredit (cust, gnc_amount_edit_get_amount + (GNC_AMOUNT_EDIT (cw->credit_amount))); - gncCustomerSetTaxTableOverride + gncCustomerSetTaxTableOverride (cust, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cw->taxtable_check))); - gncCustomerSetTaxTable (cust, cw->taxtable); + gncCustomerSetTaxTable (cust, cw->taxtable); - gncCustomerCommitEdit (cust); - gnc_resume_gui_refresh (); + gncCustomerCommitEdit (cust); + gnc_resume_gui_refresh (); } static gboolean check_edit_amount (GtkWidget *dialog, GtkWidget *amount, - gnc_numeric *min, gnc_numeric *max, - const char * error_message) + gnc_numeric *min, gnc_numeric *max, + const char * error_message) { - if (!gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT (amount))) { - if (error_message) - gnc_error_dialog (dialog, "%s", error_message); - return TRUE; - } - /* We've got a valid-looking number; check mix/max */ - if (min || max) { - gnc_numeric val = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (amount)); - if ((min && gnc_numeric_compare (*min, val) > 0) || - (max && gnc_numeric_compare (val, *max) > 0)) { - if (error_message) - gnc_error_dialog (dialog, "%s", error_message); - return TRUE; + if (!gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT (amount))) + { + if (error_message) + gnc_error_dialog (dialog, "%s", error_message); + return TRUE; } - } - return FALSE; + /* We've got a valid-looking number; check mix/max */ + if (min || max) + { + gnc_numeric val = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (amount)); + if ((min && gnc_numeric_compare (*min, val) > 0) || + (max && gnc_numeric_compare (val, *max) > 0)) + { + if (error_message) + gnc_error_dialog (dialog, "%s", error_message); + return TRUE; + } + } + return FALSE; } -static gboolean check_entry_nonempty (GtkWidget *dialog, GtkWidget *entry, - const char * error_message) +static gboolean check_entry_nonempty (GtkWidget *dialog, GtkWidget *entry, + const char * error_message) { - const char *res = gtk_entry_get_text (GTK_ENTRY (entry)); - if (safe_strcmp (res, "") == 0) { - if (error_message) - gnc_error_dialog (dialog, "%s", error_message); - return TRUE; - } - return FALSE; + const char *res = gtk_entry_get_text (GTK_ENTRY (entry)); + if (safe_strcmp (res, "") == 0) + { + if (error_message) + gnc_error_dialog (dialog, "%s", error_message); + return TRUE; + } + return FALSE; } void gnc_customer_window_ok_cb (GtkWidget *widget, gpointer data) { - CustomerWindow *cw = data; - gnc_numeric min, max; - gchar *string; + CustomerWindow *cw = data; + gnc_numeric min, max; + gchar *string; - /* Check for valid company name */ - if (check_entry_nonempty (cw->dialog, cw->company_entry, - _("You must enter a company name. " - "If this customer is an individual (and not a company) " - "you should set the \"company name\" and \"contact name\" " - "the same."))) - return; + /* Check for valid company name */ + if (check_entry_nonempty (cw->dialog, cw->company_entry, + _("You must enter a company name. " + "If this customer is an individual (and not a company) " + "you should set the \"company name\" and \"contact name\" " + "the same."))) + return; - /* Make sure we have an address */ - if (check_entry_nonempty (cw->dialog, cw->addr1_entry, NULL) && - check_entry_nonempty (cw->dialog, cw->addr2_entry, NULL) && - check_entry_nonempty (cw->dialog, cw->addr3_entry, NULL) && - check_entry_nonempty (cw->dialog, cw->addr4_entry, NULL)) { - const char *msg = _("You must enter a billing address."); - gnc_error_dialog (cw->dialog, "%s", msg); - return; - } - - /* Verify terms, discount, and credit are valid (or empty) */ - min = gnc_numeric_zero (); - max = gnc_numeric_create (100, 1); - - if (check_edit_amount (cw->dialog, cw->discount_amount, &min, &max, - _("Discount percentage must be between 0-100 " - "or you must leave it blank."))) - return; - - if (check_edit_amount (cw->dialog, cw->credit_amount, &min, NULL, - _("Credit must be a positive amount or " - "you must leave it blank."))) - return; - - /* Set the customer id if one has not been chosen */ - if (safe_strcmp (gtk_entry_get_text (GTK_ENTRY (cw->id_entry)), "") == 0) { - string = g_strdup_printf ("%.6" G_GINT64_FORMAT, - gncCustomerNextID (cw->book)); - gtk_entry_set_text (GTK_ENTRY (cw->id_entry), string); - g_free(string); - } - - /* Now save it off */ - { - GncCustomer *customer = cw_get_customer (cw); - if (customer) { - gnc_ui_to_customer (cw, customer); + /* Make sure we have an address */ + if (check_entry_nonempty (cw->dialog, cw->addr1_entry, NULL) && + check_entry_nonempty (cw->dialog, cw->addr2_entry, NULL) && + check_entry_nonempty (cw->dialog, cw->addr3_entry, NULL) && + check_entry_nonempty (cw->dialog, cw->addr4_entry, NULL)) + { + const char *msg = _("You must enter a billing address."); + gnc_error_dialog (cw->dialog, "%s", msg); + return; } - cw->created_customer = customer; - cw->customer_guid = *xaccGUIDNULL (); - } - gnc_close_gui_component (cw->component_id); + /* Verify terms, discount, and credit are valid (or empty) */ + min = gnc_numeric_zero (); + max = gnc_numeric_create (100, 1); + + if (check_edit_amount (cw->dialog, cw->discount_amount, &min, &max, + _("Discount percentage must be between 0-100 " + "or you must leave it blank."))) + return; + + if (check_edit_amount (cw->dialog, cw->credit_amount, &min, NULL, + _("Credit must be a positive amount or " + "you must leave it blank."))) + return; + + /* Set the customer id if one has not been chosen */ + if (safe_strcmp (gtk_entry_get_text (GTK_ENTRY (cw->id_entry)), "") == 0) + { + string = g_strdup_printf ("%.6" G_GINT64_FORMAT, + gncCustomerNextID (cw->book)); + gtk_entry_set_text (GTK_ENTRY (cw->id_entry), string); + g_free(string); + } + + /* Now save it off */ + { + GncCustomer *customer = cw_get_customer (cw); + if (customer) + { + gnc_ui_to_customer (cw, customer); + } + cw->created_customer = customer; + cw->customer_guid = *xaccGUIDNULL (); + } + + gnc_close_gui_component (cw->component_id); } void gnc_customer_window_cancel_cb (GtkWidget *widget, gpointer data) { - CustomerWindow *cw = data; + CustomerWindow *cw = data; - gnc_close_gui_component (cw->component_id); + gnc_close_gui_component (cw->component_id); } void gnc_customer_window_help_cb (GtkWidget *widget, gpointer data) { - gnc_gnome_help(HF_HELP, HL_USAGE); + gnc_gnome_help(HF_HELP, HL_USAGE); } void gnc_customer_window_destroy_cb (GtkWidget *widget, gpointer data) { - CustomerWindow *cw = data; - GncCustomer *customer = cw_get_customer (cw); + CustomerWindow *cw = data; + GncCustomer *customer = cw_get_customer (cw); - gnc_suspend_gui_refresh (); + gnc_suspend_gui_refresh (); - if (cw->dialog_type == NEW_CUSTOMER && customer != NULL) { - gncCustomerBeginEdit (customer); - gncCustomerDestroy (customer); - cw->customer_guid = *xaccGUIDNULL (); - } + if (cw->dialog_type == NEW_CUSTOMER && customer != NULL) + { + gncCustomerBeginEdit (customer); + gncCustomerDestroy (customer); + cw->customer_guid = *xaccGUIDNULL (); + } - gnc_unregister_gui_component (cw->component_id); - gnc_resume_gui_refresh (); + gnc_unregister_gui_component (cw->component_id); + gnc_resume_gui_refresh (); - g_free (cw); + g_free (cw); } void gnc_customer_name_changed_cb (GtkWidget *widget, gpointer data) { - CustomerWindow *cw = data; - char *fullname, *title; - const char *id, *name; + CustomerWindow *cw = data; + char *fullname, *title; + const char *id, *name; - if (!cw) - return; + if (!cw) + return; - name = gtk_entry_get_text (GTK_ENTRY (cw->company_entry)); - if (!name || *name == '\0') - name = _(""); + name = gtk_entry_get_text (GTK_ENTRY (cw->company_entry)); + if (!name || *name == '\0') + name = _(""); - id = gtk_entry_get_text (GTK_ENTRY (cw->id_entry)); + id = gtk_entry_get_text (GTK_ENTRY (cw->id_entry)); - fullname = g_strconcat (name, " (", id, ")", (char *)NULL); + fullname = g_strconcat (name, " (", id, ")", (char *)NULL); - if (cw->dialog_type == EDIT_CUSTOMER) - title = g_strconcat (_("Edit Customer"), " - ", fullname, (char *)NULL); - else - title = g_strconcat (_("New Customer"), " - ", fullname, (char *)NULL); + if (cw->dialog_type == EDIT_CUSTOMER) + title = g_strconcat (_("Edit Customer"), " - ", fullname, (char *)NULL); + else + title = g_strconcat (_("New Customer"), " - ", fullname, (char *)NULL); - gtk_window_set_title (GTK_WINDOW (cw->dialog), title); + gtk_window_set_title (GTK_WINDOW (cw->dialog), title); - g_free (fullname); - g_free (title); + g_free (fullname); + g_free (title); } static void gnc_customer_window_close_handler (gpointer user_data) { - CustomerWindow *cw = user_data; + CustomerWindow *cw = user_data; - gtk_widget_destroy (cw->dialog); - // cw has already been freed by this point. - // cw->dialog = NULL; + gtk_widget_destroy (cw->dialog); + // cw has already been freed by this point. + // cw->dialog = NULL; } static void gnc_customer_window_refresh_handler (GHashTable *changes, gpointer user_data) { - CustomerWindow *cw = user_data; - const EventInfo *info; - GncCustomer *customer = cw_get_customer (cw); + CustomerWindow *cw = user_data; + const EventInfo *info; + GncCustomer *customer = cw_get_customer (cw); - /* If there isn't a customer behind us, close down */ - if (!customer) { - gnc_close_gui_component (cw->component_id); - return; - } - - /* Next, close if this is a destroy event */ - if (changes) { - info = gnc_gui_get_entity_events (changes, &cw->customer_guid); - if (info && (info->event_mask & QOF_EVENT_DESTROY)) { - gnc_close_gui_component (cw->component_id); - return; + /* If there isn't a customer behind us, close down */ + if (!customer) + { + gnc_close_gui_component (cw->component_id); + return; + } + + /* Next, close if this is a destroy event */ + if (changes) + { + info = gnc_gui_get_entity_events (changes, &cw->customer_guid); + if (info && (info->event_mask & QOF_EVENT_DESTROY)) + { + gnc_close_gui_component (cw->component_id); + return; + } } - } } static gboolean find_handler (gpointer find_data, gpointer user_data) { - const GUID *customer_guid = find_data; - CustomerWindow *cw = user_data; + const GUID *customer_guid = find_data; + CustomerWindow *cw = user_data; - return(cw && guid_equal(&cw->customer_guid, customer_guid)); + return(cw && guid_equal(&cw->customer_guid, customer_guid)); } static CustomerWindow * gnc_customer_new_window (QofBook *bookp, GncCustomer *cust) { - CustomerWindow *cw; - GladeXML *xml; - GtkWidget *hbox, *edit; - gnc_commodity *currency; - GNCPrintAmountInfo print_info; - - /* - * Find an existing window for this customer. If found, bring it to - * the front. - */ - if (cust) { - GUID customer_guid; + CustomerWindow *cw; + GladeXML *xml; + GtkWidget *hbox, *edit; + gnc_commodity *currency; + GNCPrintAmountInfo print_info; - customer_guid = *gncCustomerGetGUID(cust); - cw = gnc_find_first_gui_component (DIALOG_EDIT_CUSTOMER_CM_CLASS, - find_handler, &customer_guid); - if (cw) { - gtk_window_present (GTK_WINDOW(cw->dialog)); - return(cw); + /* + * Find an existing window for this customer. If found, bring it to + * the front. + */ + if (cust) + { + GUID customer_guid; + + customer_guid = *gncCustomerGetGUID(cust); + cw = gnc_find_first_gui_component (DIALOG_EDIT_CUSTOMER_CM_CLASS, + find_handler, &customer_guid); + if (cw) + { + gtk_window_present (GTK_WINDOW(cw->dialog)); + return(cw); + } } - } - - /* Find the default currency */ - if (cust) - currency = gncCustomerGetCurrency (cust); - else - currency = gnc_default_currency (); - /* - * No existing customer window found. Build a new one. - */ - cw = g_new0 (CustomerWindow, 1); + /* Find the default currency */ + if (cust) + currency = gncCustomerGetCurrency (cust); + else + currency = gnc_default_currency (); - cw->book = bookp; + /* + * No existing customer window found. Build a new one. + */ + cw = g_new0 (CustomerWindow, 1); - /* Find the dialog */ - xml = gnc_glade_xml_new ("customer.glade", "Customer Dialog"); - cw->dialog = glade_xml_get_widget (xml, "Customer Dialog"); + cw->book = bookp; - g_object_set_data (G_OBJECT (cw->dialog), "dialog_info", cw); + /* Find the dialog */ + xml = gnc_glade_xml_new ("customer.glade", "Customer Dialog"); + cw->dialog = glade_xml_get_widget (xml, "Customer Dialog"); - /* Get entry points */ - cw->id_entry = glade_xml_get_widget (xml, "id_entry"); - cw->company_entry = glade_xml_get_widget (xml, "company_entry"); + g_object_set_data (G_OBJECT (cw->dialog), "dialog_info", cw); - cw->name_entry = glade_xml_get_widget (xml, "name_entry"); - cw->addr1_entry = glade_xml_get_widget (xml, "addr1_entry"); - cw->addr2_entry = glade_xml_get_widget (xml, "addr2_entry"); - cw->addr3_entry = glade_xml_get_widget (xml, "addr3_entry"); - cw->addr4_entry = glade_xml_get_widget (xml, "addr4_entry"); - cw->phone_entry = glade_xml_get_widget (xml, "phone_entry"); - cw->fax_entry = glade_xml_get_widget (xml, "fax_entry"); - cw->email_entry = glade_xml_get_widget (xml, "email_entry"); + /* Get entry points */ + cw->id_entry = glade_xml_get_widget (xml, "id_entry"); + cw->company_entry = glade_xml_get_widget (xml, "company_entry"); - cw->shipname_entry = glade_xml_get_widget (xml, "shipname_entry"); - cw->shipaddr1_entry = glade_xml_get_widget (xml, "shipaddr1_entry"); - cw->shipaddr2_entry = glade_xml_get_widget (xml, "shipaddr2_entry"); - cw->shipaddr3_entry = glade_xml_get_widget (xml, "shipaddr3_entry"); - cw->shipaddr4_entry = glade_xml_get_widget (xml, "shipaddr4_entry"); - cw->shipphone_entry = glade_xml_get_widget (xml, "shipphone_entry"); - cw->shipfax_entry = glade_xml_get_widget (xml, "shipfax_entry"); - cw->shipemail_entry = glade_xml_get_widget (xml, "shipemail_entry"); + cw->name_entry = glade_xml_get_widget (xml, "name_entry"); + cw->addr1_entry = glade_xml_get_widget (xml, "addr1_entry"); + cw->addr2_entry = glade_xml_get_widget (xml, "addr2_entry"); + cw->addr3_entry = glade_xml_get_widget (xml, "addr3_entry"); + cw->addr4_entry = glade_xml_get_widget (xml, "addr4_entry"); + cw->phone_entry = glade_xml_get_widget (xml, "phone_entry"); + cw->fax_entry = glade_xml_get_widget (xml, "fax_entry"); + cw->email_entry = glade_xml_get_widget (xml, "email_entry"); - cw->active_check = glade_xml_get_widget (xml, "active_check"); - cw->taxincluded_menu = glade_xml_get_widget (xml, "tax_included_menu"); - cw->notes_text = glade_xml_get_widget (xml, "notes_text"); + cw->shipname_entry = glade_xml_get_widget (xml, "shipname_entry"); + cw->shipaddr1_entry = glade_xml_get_widget (xml, "shipaddr1_entry"); + cw->shipaddr2_entry = glade_xml_get_widget (xml, "shipaddr2_entry"); + cw->shipaddr3_entry = glade_xml_get_widget (xml, "shipaddr3_entry"); + cw->shipaddr4_entry = glade_xml_get_widget (xml, "shipaddr4_entry"); + cw->shipphone_entry = glade_xml_get_widget (xml, "shipphone_entry"); + cw->shipfax_entry = glade_xml_get_widget (xml, "shipfax_entry"); + cw->shipemail_entry = glade_xml_get_widget (xml, "shipemail_entry"); - cw->terms_menu = glade_xml_get_widget (xml, "terms_menu"); + cw->active_check = glade_xml_get_widget (xml, "active_check"); + cw->taxincluded_menu = glade_xml_get_widget (xml, "tax_included_menu"); + cw->notes_text = glade_xml_get_widget (xml, "notes_text"); - cw->taxtable_check = glade_xml_get_widget (xml, "taxtable_button"); - cw->taxtable_menu = glade_xml_get_widget (xml, "taxtable_menu"); + cw->terms_menu = glade_xml_get_widget (xml, "terms_menu"); - /* Currency */ - edit = gnc_currency_edit_new(); - gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(edit), currency); - cw->currency_edit = edit; + cw->taxtable_check = glade_xml_get_widget (xml, "taxtable_button"); + cw->taxtable_menu = glade_xml_get_widget (xml, "taxtable_menu"); - hbox = glade_xml_get_widget (xml, "currency_box"); - gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); + /* Currency */ + edit = gnc_currency_edit_new(); + gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(edit), currency); + cw->currency_edit = edit; - /* DISCOUNT: Percentage Value */ - edit = gnc_amount_edit_new(); - gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (edit), TRUE); - print_info = gnc_integral_print_info (); - print_info.max_decimal_places = 5; - gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (edit), print_info); - gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (edit), 100000); - cw->discount_amount = edit; - gtk_widget_show (edit); + hbox = glade_xml_get_widget (xml, "currency_box"); + gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); - hbox = glade_xml_get_widget (xml, "discount_box"); - gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); + /* DISCOUNT: Percentage Value */ + edit = gnc_amount_edit_new(); + gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (edit), TRUE); + print_info = gnc_integral_print_info (); + print_info.max_decimal_places = 5; + gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (edit), print_info); + gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (edit), 100000); + cw->discount_amount = edit; + gtk_widget_show (edit); - /* CREDIT: Monetary Value */ - edit = gnc_amount_edit_new(); - print_info = gnc_commodity_print_info (currency, FALSE); - gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (edit), TRUE); - gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (edit), print_info); - gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (edit), - gnc_commodity_get_fraction (currency)); - cw->credit_amount = edit; - gtk_widget_show (edit); + hbox = glade_xml_get_widget (xml, "discount_box"); + gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); - hbox = glade_xml_get_widget (xml, "credit_box"); - gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); + /* CREDIT: Monetary Value */ + edit = gnc_amount_edit_new(); + print_info = gnc_commodity_print_info (currency, FALSE); + gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (edit), TRUE); + gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (edit), print_info); + gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (edit), + gnc_commodity_get_fraction (currency)); + cw->credit_amount = edit; + gtk_widget_show (edit); - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - cw); + hbox = glade_xml_get_widget (xml, "credit_box"); + gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); - /* Setup initial values */ - if (cust != NULL) { - GtkTextBuffer* text_buffer; - GncAddress *addr, *shipaddr; - const char *string; + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + cw); - cw->dialog_type = EDIT_CUSTOMER; - cw->customer_guid = *gncCustomerGetGUID (cust); + /* Setup initial values */ + if (cust != NULL) + { + GtkTextBuffer* text_buffer; + GncAddress *addr, *shipaddr; + const char *string; - addr = gncCustomerGetAddr (cust); - shipaddr = gncCustomerGetShipAddr (cust); + cw->dialog_type = EDIT_CUSTOMER; + cw->customer_guid = *gncCustomerGetGUID (cust); - gtk_entry_set_text (GTK_ENTRY (cw->id_entry), gncCustomerGetID (cust)); - gtk_entry_set_text (GTK_ENTRY (cw->company_entry), gncCustomerGetName (cust)); + addr = gncCustomerGetAddr (cust); + shipaddr = gncCustomerGetShipAddr (cust); - /* Setup Address */ - gtk_entry_set_text (GTK_ENTRY (cw->name_entry), gncAddressGetName (addr)); - gtk_entry_set_text (GTK_ENTRY (cw->addr1_entry), gncAddressGetAddr1 (addr)); - gtk_entry_set_text (GTK_ENTRY (cw->addr2_entry), gncAddressGetAddr2 (addr)); - gtk_entry_set_text (GTK_ENTRY (cw->addr3_entry), gncAddressGetAddr3 (addr)); - gtk_entry_set_text (GTK_ENTRY (cw->addr4_entry), gncAddressGetAddr4 (addr)); - gtk_entry_set_text (GTK_ENTRY (cw->phone_entry), gncAddressGetPhone (addr)); - gtk_entry_set_text (GTK_ENTRY (cw->fax_entry), gncAddressGetFax (addr)); - gtk_entry_set_text (GTK_ENTRY (cw->email_entry), gncAddressGetEmail (addr)); + gtk_entry_set_text (GTK_ENTRY (cw->id_entry), gncCustomerGetID (cust)); + gtk_entry_set_text (GTK_ENTRY (cw->company_entry), gncCustomerGetName (cust)); - /* Setup Ship-to Address */ - gtk_entry_set_text (GTK_ENTRY (cw->shipname_entry), gncAddressGetName (shipaddr)); - gtk_entry_set_text (GTK_ENTRY (cw->shipaddr1_entry), gncAddressGetAddr1 (shipaddr)); - gtk_entry_set_text (GTK_ENTRY (cw->shipaddr2_entry), gncAddressGetAddr2 (shipaddr)); - gtk_entry_set_text (GTK_ENTRY (cw->shipaddr3_entry), gncAddressGetAddr3 (shipaddr)); - gtk_entry_set_text (GTK_ENTRY (cw->shipaddr4_entry), gncAddressGetAddr4 (shipaddr)); - gtk_entry_set_text (GTK_ENTRY (cw->shipphone_entry), gncAddressGetPhone (shipaddr)); - gtk_entry_set_text (GTK_ENTRY (cw->shipfax_entry), gncAddressGetFax (shipaddr)); - gtk_entry_set_text (GTK_ENTRY (cw->shipemail_entry), gncAddressGetEmail (shipaddr)); + /* Setup Address */ + gtk_entry_set_text (GTK_ENTRY (cw->name_entry), gncAddressGetName (addr)); + gtk_entry_set_text (GTK_ENTRY (cw->addr1_entry), gncAddressGetAddr1 (addr)); + gtk_entry_set_text (GTK_ENTRY (cw->addr2_entry), gncAddressGetAddr2 (addr)); + gtk_entry_set_text (GTK_ENTRY (cw->addr3_entry), gncAddressGetAddr3 (addr)); + gtk_entry_set_text (GTK_ENTRY (cw->addr4_entry), gncAddressGetAddr4 (addr)); + gtk_entry_set_text (GTK_ENTRY (cw->phone_entry), gncAddressGetPhone (addr)); + gtk_entry_set_text (GTK_ENTRY (cw->fax_entry), gncAddressGetFax (addr)); + gtk_entry_set_text (GTK_ENTRY (cw->email_entry), gncAddressGetEmail (addr)); - /* Set toggle buttons */ - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw->active_check), - gncCustomerGetActive (cust)); + /* Setup Ship-to Address */ + gtk_entry_set_text (GTK_ENTRY (cw->shipname_entry), gncAddressGetName (shipaddr)); + gtk_entry_set_text (GTK_ENTRY (cw->shipaddr1_entry), gncAddressGetAddr1 (shipaddr)); + gtk_entry_set_text (GTK_ENTRY (cw->shipaddr2_entry), gncAddressGetAddr2 (shipaddr)); + gtk_entry_set_text (GTK_ENTRY (cw->shipaddr3_entry), gncAddressGetAddr3 (shipaddr)); + gtk_entry_set_text (GTK_ENTRY (cw->shipaddr4_entry), gncAddressGetAddr4 (shipaddr)); + gtk_entry_set_text (GTK_ENTRY (cw->shipphone_entry), gncAddressGetPhone (shipaddr)); + gtk_entry_set_text (GTK_ENTRY (cw->shipfax_entry), gncAddressGetFax (shipaddr)); + gtk_entry_set_text (GTK_ENTRY (cw->shipemail_entry), gncAddressGetEmail (shipaddr)); - string = gncCustomerGetNotes (cust); - text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(cw->notes_text)); - gtk_text_buffer_set_text (text_buffer, string, -1); + /* Set toggle buttons */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw->active_check), + gncCustomerGetActive (cust)); - cw->component_id = - gnc_register_gui_component (DIALOG_EDIT_CUSTOMER_CM_CLASS, - gnc_customer_window_refresh_handler, - gnc_customer_window_close_handler, - cw); - cw->terms = gncCustomerGetTerms (cust); + string = gncCustomerGetNotes (cust); + text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(cw->notes_text)); + gtk_text_buffer_set_text (text_buffer, string, -1); - } else { - cust = gncCustomerCreate (bookp); - cw->customer_guid = *gncCustomerGetGUID (cust); + cw->component_id = + gnc_register_gui_component (DIALOG_EDIT_CUSTOMER_CM_CLASS, + gnc_customer_window_refresh_handler, + gnc_customer_window_close_handler, + cw); + cw->terms = gncCustomerGetTerms (cust); - cw->dialog_type = NEW_CUSTOMER; - cw->component_id = - gnc_register_gui_component (DIALOG_NEW_CUSTOMER_CM_CLASS, - gnc_customer_window_refresh_handler, - gnc_customer_window_close_handler, - cw); + } + else + { + cust = gncCustomerCreate (bookp); + cw->customer_guid = *gncCustomerGetGUID (cust); - /* XXX: get the global-default terms */ - cw->terms = NULL; - } + cw->dialog_type = NEW_CUSTOMER; + cw->component_id = + gnc_register_gui_component (DIALOG_NEW_CUSTOMER_CM_CLASS, + gnc_customer_window_refresh_handler, + gnc_customer_window_close_handler, + cw); - /* I know that cust exists here -- either passed in or just created */ + /* XXX: get the global-default terms */ + cw->terms = NULL; + } - cw->taxincluded = gncCustomerGetTaxIncluded (cust); - gnc_ui_taxincluded_optionmenu (cw->taxincluded_menu, &cw->taxincluded); - gnc_ui_billterms_optionmenu (cw->terms_menu, bookp, TRUE, &cw->terms); + /* I know that cust exists here -- either passed in or just created */ - cw->taxtable = gncCustomerGetTaxTable (cust); - gnc_ui_taxtables_optionmenu (cw->taxtable_menu, bookp, TRUE, &cw->taxtable); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw->taxtable_check), - gncCustomerGetTaxTableOverride (cust)); - gnc_customer_taxtable_check_cb (GTK_TOGGLE_BUTTON (cw->taxtable_check), cw); + cw->taxincluded = gncCustomerGetTaxIncluded (cust); + gnc_ui_taxincluded_optionmenu (cw->taxincluded_menu, &cw->taxincluded); + gnc_ui_billterms_optionmenu (cw->terms_menu, bookp, TRUE, &cw->terms); - /* Set the Discount, and Credit amounts */ - gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (cw->discount_amount), - gncCustomerGetDiscount (cust)); - gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (cw->credit_amount), - gncCustomerGetCredit (cust)); + cw->taxtable = gncCustomerGetTaxTable (cust); + gnc_ui_taxtables_optionmenu (cw->taxtable_menu, bookp, TRUE, &cw->taxtable); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw->taxtable_check), + gncCustomerGetTaxTableOverride (cust)); + gnc_customer_taxtable_check_cb (GTK_TOGGLE_BUTTON (cw->taxtable_check), cw); - gnc_gui_component_watch_entity_type (cw->component_id, - GNC_CUSTOMER_MODULE_NAME, - QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); + /* Set the Discount, and Credit amounts */ + gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (cw->discount_amount), + gncCustomerGetDiscount (cust)); + gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (cw->credit_amount), + gncCustomerGetCredit (cust)); - gtk_widget_show_all (cw->dialog); + gnc_gui_component_watch_entity_type (cw->component_id, + GNC_CUSTOMER_MODULE_NAME, + QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); - return cw; + gtk_widget_show_all (cw->dialog); + + return cw; } CustomerWindow * gnc_ui_customer_edit (GncCustomer *cust) { - CustomerWindow *cw; + CustomerWindow *cw; - if (!cust) return NULL; + if (!cust) return NULL; - cw = gnc_customer_new_window (gncCustomerGetBook(cust), cust); + cw = gnc_customer_new_window (gncCustomerGetBook(cust), cust); - return cw; + return cw; } CustomerWindow * gnc_ui_customer_new (QofBook *bookp) { - CustomerWindow *cw; + CustomerWindow *cw; - /* Make sure required options exist */ - if (!bookp) return NULL; + /* Make sure required options exist */ + if (!bookp) return NULL; - cw = gnc_customer_new_window (bookp, NULL); + cw = gnc_customer_new_window (bookp, NULL); - return cw; + return cw; } /* Functions for customer selection widgets */ @@ -657,197 +675,201 @@ gnc_ui_customer_new (QofBook *bookp) static void invoice_customer_cb (gpointer *cust_p, gpointer user_data) { - struct _customer_select_window *sw = user_data; - GncOwner owner; - GncCustomer *cust; + struct _customer_select_window *sw = user_data; + GncOwner owner; + GncCustomer *cust; - g_return_if_fail (cust_p && user_data); + g_return_if_fail (cust_p && user_data); - cust = *cust_p; + cust = *cust_p; - if (!cust) + if (!cust) + return; + + gncOwnerInitCustomer (&owner, cust); + gnc_invoice_search (NULL, &owner, sw->book); return; - - gncOwnerInitCustomer (&owner, cust); - gnc_invoice_search (NULL, &owner, sw->book); - return; } static void order_customer_cb (gpointer *cust_p, gpointer user_data) { - struct _customer_select_window *sw = user_data; - GncOwner owner; - GncCustomer *cust; + struct _customer_select_window *sw = user_data; + GncOwner owner; + GncCustomer *cust; - g_return_if_fail (cust_p && user_data); + g_return_if_fail (cust_p && user_data); - cust = *cust_p; + cust = *cust_p; - if (!cust) + if (!cust) + return; + + gncOwnerInitCustomer (&owner, cust); + gnc_order_search (NULL, &owner, sw->book); return; - - gncOwnerInitCustomer (&owner, cust); - gnc_order_search (NULL, &owner, sw->book); - return; } static void jobs_customer_cb (gpointer *cust_p, gpointer user_data) { - struct _customer_select_window *sw = user_data; - GncOwner owner; - GncCustomer *cust; + struct _customer_select_window *sw = user_data; + GncOwner owner; + GncCustomer *cust; - g_return_if_fail (cust_p && user_data); + g_return_if_fail (cust_p && user_data); - cust = *cust_p; + cust = *cust_p; - if (!cust) + if (!cust) + return; + + gncOwnerInitCustomer (&owner, cust); + gnc_job_search (NULL, &owner, sw->book); return; - - gncOwnerInitCustomer (&owner, cust); - gnc_job_search (NULL, &owner, sw->book); - return; } static void payment_customer_cb (gpointer *cust_p, gpointer user_data) { - struct _customer_select_window *sw = user_data; - GncOwner owner; - GncCustomer *cust; + struct _customer_select_window *sw = user_data; + GncOwner owner; + GncCustomer *cust; - g_return_if_fail (cust_p && user_data); + g_return_if_fail (cust_p && user_data); - cust = *cust_p; + cust = *cust_p; - if (!cust) + if (!cust) + return; + + gncOwnerInitCustomer (&owner, cust); + gnc_ui_payment_new (&owner, sw->book); return; - - gncOwnerInitCustomer (&owner, cust); - gnc_ui_payment_new (&owner, sw->book); - return; } static void edit_customer_cb (gpointer *cust_p, gpointer user_data) { - GncCustomer *cust; + GncCustomer *cust; - g_return_if_fail (cust_p); - cust = *cust_p; + g_return_if_fail (cust_p); + cust = *cust_p; + + if (!cust) + return; + + gnc_ui_customer_edit (cust); - if (!cust) return; - - gnc_ui_customer_edit (cust); - - return; } static gpointer new_customer_cb (gpointer user_data) { - struct _customer_select_window *sw = user_data; - CustomerWindow *cw; - - g_return_val_if_fail (sw, NULL); + struct _customer_select_window *sw = user_data; + CustomerWindow *cw; - cw = gnc_ui_customer_new (sw->book); - return cw_get_customer (cw); + g_return_val_if_fail (sw, NULL); + + cw = gnc_ui_customer_new (sw->book); + return cw_get_customer (cw); } static void free_userdata_cb (gpointer user_data) { - struct _customer_select_window *sw = user_data; + struct _customer_select_window *sw = user_data; - g_return_if_fail (sw); + g_return_if_fail (sw); - gncQueryDestroy (sw->q); - g_free (sw); + gncQueryDestroy (sw->q); + g_free (sw); } GNCSearchWindow * gnc_customer_search (GncCustomer *start, QofBook *book) { - QueryNew *q, *q2 = NULL; - GNCIdType type = GNC_CUSTOMER_MODULE_NAME; - struct _customer_select_window *sw; - static GList *params = NULL; - static GList *columns = NULL; - static GNCSearchCallbackButton buttons[] = { - { N_("View/Edit Customer"), edit_customer_cb}, - { N_("Customer's Jobs"), jobs_customer_cb}, - // { N_("Customer's Orders"), order_customer_cb}, - { N_("Customer's Invoices"), invoice_customer_cb}, - { N_("Process Payment"), payment_customer_cb}, - { NULL }, - }; - (void)order_customer_cb; + QueryNew *q, *q2 = NULL; + GNCIdType type = GNC_CUSTOMER_MODULE_NAME; + struct _customer_select_window *sw; + static GList *params = NULL; + static GList *columns = NULL; + static GNCSearchCallbackButton buttons[] = + { + { N_("View/Edit Customer"), edit_customer_cb}, + { N_("Customer's Jobs"), jobs_customer_cb}, + // { N_("Customer's Orders"), order_customer_cb}, + { N_("Customer's Invoices"), invoice_customer_cb}, + { N_("Process Payment"), payment_customer_cb}, + { NULL }, + }; + (void)order_customer_cb; - g_return_val_if_fail (book, NULL); + g_return_val_if_fail (book, NULL); - /* Build parameter list in reverse order*/ - if (params == NULL) { - params = gnc_search_param_prepend (params, _("Shipping Contact"), NULL, type, - CUSTOMER_SHIPADDR, ADDRESS_NAME, NULL); - params = gnc_search_param_prepend (params, _("Billing Contact"), NULL, type, - CUSTOMER_ADDR, ADDRESS_NAME, NULL); - params = gnc_search_param_prepend (params, _("Customer ID"), NULL, type, - CUSTOMER_ID, NULL); - params = gnc_search_param_prepend (params, _("Company Name"), NULL, type, - CUSTOMER_NAME, NULL); - } + /* Build parameter list in reverse order*/ + if (params == NULL) + { + params = gnc_search_param_prepend (params, _("Shipping Contact"), NULL, type, + CUSTOMER_SHIPADDR, ADDRESS_NAME, NULL); + params = gnc_search_param_prepend (params, _("Billing Contact"), NULL, type, + CUSTOMER_ADDR, ADDRESS_NAME, NULL); + params = gnc_search_param_prepend (params, _("Customer ID"), NULL, type, + CUSTOMER_ID, NULL); + params = gnc_search_param_prepend (params, _("Company Name"), NULL, type, + CUSTOMER_NAME, NULL); + } - /* Build the column list in reverse order */ - if (columns == NULL) { - columns = gnc_search_param_prepend (columns, _("Contact"), NULL, type, - CUSTOMER_ADDR, ADDRESS_NAME, NULL); - columns = gnc_search_param_prepend (columns, _("Company"), NULL, type, - CUSTOMER_NAME, NULL); - columns = gnc_search_param_prepend (columns, _("ID #"), NULL, type, - CUSTOMER_ID, NULL); - } + /* Build the column list in reverse order */ + if (columns == NULL) + { + columns = gnc_search_param_prepend (columns, _("Contact"), NULL, type, + CUSTOMER_ADDR, ADDRESS_NAME, NULL); + columns = gnc_search_param_prepend (columns, _("Company"), NULL, type, + CUSTOMER_NAME, NULL); + columns = gnc_search_param_prepend (columns, _("ID #"), NULL, type, + CUSTOMER_ID, NULL); + } - /* Build the queries */ - q = gncQueryCreateFor (type); - gncQuerySetBook (q, book); + /* Build the queries */ + q = gncQueryCreateFor (type); + gncQuerySetBook (q, book); #if 0 - if (start) { - q2 = gncQueryCopy (q); - gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), - gncCustomerGetGUID (start), QUERY_AND); - } + if (start) + { + q2 = gncQueryCopy (q); + gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), + gncCustomerGetGUID (start), QUERY_AND); + } #endif - /* launch select dialog and return the result */ - sw = g_new0 (struct _customer_select_window, 1); + /* launch select dialog and return the result */ + sw = g_new0 (struct _customer_select_window, 1); - sw->book = book; - sw->q = q; + sw->book = book; + sw->q = q; - return gnc_search_dialog_create (type, _("Find Customer"), - params, columns, q, q2, buttons, NULL, - new_customer_cb, sw, free_userdata_cb, - GCONF_SECTION_SEARCH, NULL); + return gnc_search_dialog_create (type, _("Find Customer"), + params, columns, q, q2, buttons, NULL, + new_customer_cb, sw, free_userdata_cb, + GCONF_SECTION_SEARCH, NULL); } GNCSearchWindow * gnc_customer_search_select (gpointer start, gpointer book) { - if (!book) return NULL; + if (!book) return NULL; - return gnc_customer_search (start, book); + return gnc_customer_search (start, book); } GNCSearchWindow * gnc_customer_search_edit (gpointer start, gpointer book) { - if (start) - gnc_ui_customer_edit (start); + if (start) + gnc_ui_customer_edit (start); - return NULL; + return NULL; } diff --git a/src/business/business-gnome/dialog-date-close.c b/src/business/business-gnome/dialog-date-close.c index 28b8e1cd17..dbeaf23760 100644 --- a/src/business/business-gnome/dialog-date-close.c +++ b/src/business/business-gnome/dialog-date-close.c @@ -37,22 +37,23 @@ #include "business-gnome-utils.h" #include "dialog-date-close.h" -typedef struct _dialog_date_close_window { - GtkWidget *dialog; - GtkWidget *date; - GtkWidget *post_date; - GtkWidget *acct_combo; - GtkWidget *memo_entry; - GtkWidget *question_check; - GncBillTerm *terms; - Timespec *ts, *ts2; - GList * acct_types; - GList * acct_commodities; - QofBook *book; - Account *acct; - char **memo; - gboolean retval; - gboolean answer; +typedef struct _dialog_date_close_window +{ + GtkWidget *dialog; + GtkWidget *date; + GtkWidget *post_date; + GtkWidget *acct_combo; + GtkWidget *memo_entry; + GtkWidget *question_check; + GncBillTerm *terms; + Timespec *ts, *ts2; + GList * acct_types; + GList * acct_commodities; + QofBook *book; + Account *acct; + char **memo; + gboolean retval; + gboolean answer; } DialogDateClose; void gnc_dialog_date_close_ok_cb (GtkWidget *widget, gpointer user_data); @@ -61,369 +62,383 @@ void gnc_dialog_date_close_ok_cb (GtkWidget *widget, gpointer user_data); void gnc_dialog_date_close_ok_cb (GtkWidget *widget, gpointer user_data) { - DialogDateClose *ddc = user_data; + DialogDateClose *ddc = user_data; - if (ddc->acct_combo) { - Account *acc; + if (ddc->acct_combo) + { + Account *acc; - acc = gnc_account_sel_get_account( GNC_ACCOUNT_SEL(ddc->acct_combo) ); + acc = gnc_account_sel_get_account( GNC_ACCOUNT_SEL(ddc->acct_combo) ); - if (!acc) { - gnc_error_dialog (ddc->dialog, "%s", - _("No Account selected. Please try again.")); - return; + if (!acc) + { + gnc_error_dialog (ddc->dialog, "%s", + _("No Account selected. Please try again.")); + return; + } + + if (xaccAccountGetPlaceholder (acc)) + { + gnc_error_dialog (ddc->dialog, "%s", + _("Placeholder account selected. Please try again.")); + return; + } + + ddc->acct = acc; } - if (xaccAccountGetPlaceholder (acc)) { - gnc_error_dialog (ddc->dialog, "%s", - _("Placeholder account selected. Please try again.")); - return; + if (ddc->post_date) + *(ddc->ts2) = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (ddc->post_date)); + + if (ddc->date) + { + if (ddc->terms) + *(ddc->ts) = gncBillTermComputeDueDate (ddc->terms, *(ddc->ts2)); + else + *(ddc->ts) = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (ddc->date)); } - ddc->acct = acc; - } - - if (ddc->post_date) - *(ddc->ts2) = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (ddc->post_date)); - - if (ddc->date) { - if (ddc->terms) - *(ddc->ts) = gncBillTermComputeDueDate (ddc->terms, *(ddc->ts2)); - else - *(ddc->ts) = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (ddc->date)); - } - - if (ddc->memo_entry && ddc->memo) - *(ddc->memo) = gtk_editable_get_chars (GTK_EDITABLE (ddc->memo_entry), - 0, -1); - if (ddc->question_check) - ddc->answer = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ddc->question_check)); - ddc->retval = TRUE; + if (ddc->memo_entry && ddc->memo) + *(ddc->memo) = gtk_editable_get_chars (GTK_EDITABLE (ddc->memo_entry), + 0, -1); + if (ddc->question_check) + ddc->answer = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ddc->question_check)); + ddc->retval = TRUE; } static void fill_in_acct_info (DialogDateClose *ddc, gboolean set_default_acct) { - GNCAccountSel *gas = GNC_ACCOUNT_SEL (ddc->acct_combo); + GNCAccountSel *gas = GNC_ACCOUNT_SEL (ddc->acct_combo); - /* How do I set the book? */ - gnc_account_sel_set_acct_filters( gas, ddc->acct_types, ddc->acct_commodities ); - gnc_account_sel_set_new_account_ability( gas, TRUE ); - gnc_account_sel_set_new_account_modal( gas, TRUE ); - gnc_account_sel_set_account( gas, ddc->acct, set_default_acct ); + /* How do I set the book? */ + gnc_account_sel_set_acct_filters( gas, ddc->acct_types, ddc->acct_commodities ); + gnc_account_sel_set_new_account_ability( gas, TRUE ); + gnc_account_sel_set_new_account_modal( gas, TRUE ); + gnc_account_sel_set_account( gas, ddc->acct, set_default_acct ); } static void build_date_close_window (GtkWidget *hbox, const char *message) { - GtkWidget *pixmap = NULL; - GtkWidget *label; - GtkWidget *alignment; - char *s; + GtkWidget *pixmap = NULL; + GtkWidget *label; + GtkWidget *alignment; + char *s; - s = gnome_program_locate_file (NULL, - GNOME_FILE_DOMAIN_PIXMAP, - "gnome-question.png", TRUE, NULL); - if (s) { - pixmap = gtk_image_new_from_file(s); - g_free(s); - } + s = gnome_program_locate_file (NULL, + GNOME_FILE_DOMAIN_PIXMAP, + "gnome-question.png", TRUE, NULL); + if (s) + { + pixmap = gtk_image_new_from_file(s); + g_free(s); + } - if (pixmap) { - gtk_box_pack_start (GTK_BOX(hbox), pixmap, FALSE, TRUE, 0); - gtk_widget_show (pixmap); - } + if (pixmap) + { + gtk_box_pack_start (GTK_BOX(hbox), pixmap, FALSE, TRUE, 0); + gtk_widget_show (pixmap); + } - label = gtk_label_new (message); - gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); - gtk_misc_set_padding (GTK_MISC (label), GNOME_PAD, 0); - gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); - gtk_widget_show (label); + label = gtk_label_new (message); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); + gtk_misc_set_padding (GTK_MISC (label), GNOME_PAD, 0); + gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); + gtk_widget_show (label); - /* Add some extra space on the right to balance the pixmap */ - if (pixmap) { - alignment = gtk_alignment_new (0., 0., 0., 0.); - gtk_widget_set_size_request (alignment, GNOME_PAD, -1); - gtk_widget_show (alignment); - - gtk_box_pack_start (GTK_BOX (hbox), alignment, FALSE, FALSE, 0); - } + /* Add some extra space on the right to balance the pixmap */ + if (pixmap) + { + alignment = gtk_alignment_new (0., 0., 0., 0.); + gtk_widget_set_size_request (alignment, GNOME_PAD, -1); + gtk_widget_show (alignment); + + gtk_box_pack_start (GTK_BOX (hbox), alignment, FALSE, FALSE, 0); + } } gboolean gnc_dialog_date_close_parented (GtkWidget *parent, const char *message, - const char *label_message, - gboolean ok_is_default, - /* Returned data ... */ - Timespec *ts) + const char *label_message, + gboolean ok_is_default, + /* Returned data ... */ + Timespec *ts) { - DialogDateClose *ddc; - GtkWidget *date_box; - GtkWidget *hbox; - GtkWidget *label; - GladeXML *xml; - gboolean retval; + DialogDateClose *ddc; + GtkWidget *date_box; + GtkWidget *hbox; + GtkWidget *label; + GladeXML *xml; + gboolean retval; - if (!message || !label_message || !ts) - return FALSE; + if (!message || !label_message || !ts) + return FALSE; - ddc = g_new0 (DialogDateClose, 1); - ddc->ts = ts; + ddc = g_new0 (DialogDateClose, 1); + ddc->ts = ts; - xml = gnc_glade_xml_new ("date-close.glade", "Date Close Dialog"); - ddc->dialog = glade_xml_get_widget (xml, "Date Close Dialog"); - hbox = glade_xml_get_widget (xml, "the_hbox"); - label = glade_xml_get_widget (xml, "label"); + xml = gnc_glade_xml_new ("date-close.glade", "Date Close Dialog"); + ddc->dialog = glade_xml_get_widget (xml, "Date Close Dialog"); + hbox = glade_xml_get_widget (xml, "the_hbox"); + label = glade_xml_get_widget (xml, "label"); - date_box = glade_xml_get_widget (xml, "date_box"); - ddc->date = gnc_date_edit_new (time(NULL), FALSE, FALSE); - gtk_box_pack_start (GTK_BOX(date_box), ddc->date, TRUE, TRUE, 0); + date_box = glade_xml_get_widget (xml, "date_box"); + ddc->date = gnc_date_edit_new (time(NULL), FALSE, FALSE); + gtk_box_pack_start (GTK_BOX(date_box), ddc->date, TRUE, TRUE, 0); - if (parent) - gtk_window_set_transient_for (GTK_WINDOW(ddc->dialog), GTK_WINDOW(parent)); + if (parent) + gtk_window_set_transient_for (GTK_WINDOW(ddc->dialog), GTK_WINDOW(parent)); - build_date_close_window (hbox, message); + build_date_close_window (hbox, message); - gnc_date_edit_set_time_ts (GNC_DATE_EDIT (ddc->date), *ts); - gtk_label_set_text (GTK_LABEL (label), label_message); + gnc_date_edit_set_time_ts (GNC_DATE_EDIT (ddc->date), *ts); + gtk_label_set_text (GTK_LABEL (label), label_message); - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - ddc); + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + ddc); - gtk_widget_show_all (ddc->dialog); + gtk_widget_show_all (ddc->dialog); - ddc->retval = FALSE; - while (gtk_dialog_run (GTK_DIALOG (ddc->dialog)) == GTK_RESPONSE_OK) { - /* If reponse is OK but flag is not set, try again */ - if (ddc->retval) - break; - } + ddc->retval = FALSE; + while (gtk_dialog_run (GTK_DIALOG (ddc->dialog)) == GTK_RESPONSE_OK) + { + /* If reponse is OK but flag is not set, try again */ + if (ddc->retval) + break; + } - gtk_widget_destroy(ddc->dialog); - retval = ddc->retval; - g_list_free (ddc->acct_types); - g_free (ddc); + gtk_widget_destroy(ddc->dialog); + retval = ddc->retval; + g_list_free (ddc->acct_types); + g_free (ddc); - return retval; + return retval; } static void post_date_changed_cb (GNCDateEdit *gde, gpointer d) { - DialogDateClose *ddc = d; - Timespec post_date; - Timespec due_date; + DialogDateClose *ddc = d; + Timespec post_date; + Timespec due_date; - post_date = gnc_date_edit_get_date_ts (gde); - due_date = gncBillTermComputeDueDate (ddc->terms, post_date); - gnc_date_edit_set_time_ts (GNC_DATE_EDIT (ddc->date), due_date); + post_date = gnc_date_edit_get_date_ts (gde); + due_date = gncBillTermComputeDueDate (ddc->terms, post_date); + gnc_date_edit_set_time_ts (GNC_DATE_EDIT (ddc->date), due_date); } gboolean gnc_dialog_dates_acct_question_parented (GtkWidget *parent, const char *message, - const char *ddue_label_message, - const char *post_label_message, - const char *acct_label_message, - const char *question_check_message, - gboolean ok_is_default, - gboolean set_default_acct, - GList * acct_types, GList * acct_commodities, - QofBook *book, GncBillTerm *terms, - /* Returned Data... */ - Timespec *ddue, Timespec *post, - char **memo, Account **acct, gboolean *answer) + const char *ddue_label_message, + const char *post_label_message, + const char *acct_label_message, + const char *question_check_message, + gboolean ok_is_default, + gboolean set_default_acct, + GList * acct_types, GList * acct_commodities, + QofBook *book, GncBillTerm *terms, + /* Returned Data... */ + Timespec *ddue, Timespec *post, + char **memo, Account **acct, gboolean *answer) { - DialogDateClose *ddc; - GtkWidget *hbox; - GtkWidget *label; - GtkWidget *date_box; - GtkWidget *acct_box; - GladeXML *xml; - gboolean retval; + DialogDateClose *ddc; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *date_box; + GtkWidget *acct_box; + GladeXML *xml; + gboolean retval; - if (!message || !ddue_label_message || !post_label_message || - !acct_label_message || !acct_types || !book || !ddue || !post || !acct) - return FALSE; - if (question_check_message && !answer) - return FALSE; + if (!message || !ddue_label_message || !post_label_message || + !acct_label_message || !acct_types || !book || !ddue || !post || !acct) + return FALSE; + if (question_check_message && !answer) + return FALSE; - ddc = g_new0 (DialogDateClose, 1); - ddc->ts = ddue; - ddc->ts2 = post; - ddc->book = book; - ddc->acct_types = acct_types; - ddc->acct_commodities = acct_commodities; - ddc->acct = *acct; - ddc->memo = memo; - ddc->terms = terms; + ddc = g_new0 (DialogDateClose, 1); + ddc->ts = ddue; + ddc->ts2 = post; + ddc->book = book; + ddc->acct_types = acct_types; + ddc->acct_commodities = acct_commodities; + ddc->acct = *acct; + ddc->memo = memo; + ddc->terms = terms; - xml = gnc_glade_xml_new ("date-close.glade", "Date Account Dialog"); - ddc->dialog = glade_xml_get_widget (xml, "Date Account Dialog"); - ddc->memo_entry = glade_xml_get_widget (xml, "memo_entry"); - hbox = glade_xml_get_widget (xml, "the_hbox"); + xml = gnc_glade_xml_new ("date-close.glade", "Date Account Dialog"); + ddc->dialog = glade_xml_get_widget (xml, "Date Account Dialog"); + ddc->memo_entry = glade_xml_get_widget (xml, "memo_entry"); + hbox = glade_xml_get_widget (xml, "the_hbox"); - acct_box = glade_xml_get_widget (xml, "acct_hbox"); - ddc->acct_combo = gnc_account_sel_new(); - gtk_box_pack_start (GTK_BOX(acct_box), ddc->acct_combo, TRUE, TRUE, 0); + acct_box = glade_xml_get_widget (xml, "acct_hbox"); + ddc->acct_combo = gnc_account_sel_new(); + gtk_box_pack_start (GTK_BOX(acct_box), ddc->acct_combo, TRUE, TRUE, 0); - date_box = glade_xml_get_widget (xml, "date_box"); - ddc->date = gnc_date_edit_new (time(NULL), FALSE, FALSE); - gtk_box_pack_start (GTK_BOX(date_box), ddc->date, TRUE, TRUE, 0); + date_box = glade_xml_get_widget (xml, "date_box"); + ddc->date = gnc_date_edit_new (time(NULL), FALSE, FALSE); + gtk_box_pack_start (GTK_BOX(date_box), ddc->date, TRUE, TRUE, 0); - date_box = glade_xml_get_widget (xml, "post_date_box"); - ddc->post_date = gnc_date_edit_new (time(NULL), FALSE, FALSE); - gtk_box_pack_start (GTK_BOX(date_box), ddc->post_date, TRUE, TRUE, 0); + date_box = glade_xml_get_widget (xml, "post_date_box"); + ddc->post_date = gnc_date_edit_new (time(NULL), FALSE, FALSE); + gtk_box_pack_start (GTK_BOX(date_box), ddc->post_date, TRUE, TRUE, 0); - ddc->question_check = glade_xml_get_widget(xml, "question_check"); - - if (parent) - gtk_window_set_transient_for (GTK_WINDOW(ddc->dialog), GTK_WINDOW(parent)); + ddc->question_check = glade_xml_get_widget(xml, "question_check"); - build_date_close_window (hbox, message); + if (parent) + gtk_window_set_transient_for (GTK_WINDOW(ddc->dialog), GTK_WINDOW(parent)); - /* Set the labels */ - label = glade_xml_get_widget (xml, "date_label"); - gtk_label_set_text (GTK_LABEL (label), ddue_label_message); - label = glade_xml_get_widget (xml, "postdate_label"); - gtk_label_set_text (GTK_LABEL (label), post_label_message); - label = glade_xml_get_widget (xml, "acct_label"); - gtk_label_set_text (GTK_LABEL (label), acct_label_message); + build_date_close_window (hbox, message); - if (question_check_message) - { - gtk_label_set_text(GTK_LABEL(GTK_BIN(ddc->question_check)->child), question_check_message); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ddc->question_check), *answer); - } else { - gtk_widget_hide(ddc->question_check); - gtk_widget_hide(glade_xml_get_widget(xml, "hide1")); - } + /* Set the labels */ + label = glade_xml_get_widget (xml, "date_label"); + gtk_label_set_text (GTK_LABEL (label), ddue_label_message); + label = glade_xml_get_widget (xml, "postdate_label"); + gtk_label_set_text (GTK_LABEL (label), post_label_message); + label = glade_xml_get_widget (xml, "acct_label"); + gtk_label_set_text (GTK_LABEL (label), acct_label_message); + + if (question_check_message) + { + gtk_label_set_text(GTK_LABEL(GTK_BIN(ddc->question_check)->child), question_check_message); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ddc->question_check), *answer); + } + else + { + gtk_widget_hide(ddc->question_check); + gtk_widget_hide(glade_xml_get_widget(xml, "hide1")); + } - /* Set the post date widget */ - gnc_date_edit_set_time_ts (GNC_DATE_EDIT (ddc->post_date), *post); + /* Set the post date widget */ + gnc_date_edit_set_time_ts (GNC_DATE_EDIT (ddc->post_date), *post); - /* Deal with the terms handling of the due date */ - if (terms) { - g_signal_connect (G_OBJECT (ddc->post_date), "date_changed", - G_CALLBACK (post_date_changed_cb), ddc); - gtk_widget_set_sensitive (ddc->date, FALSE); - post_date_changed_cb (GNC_DATE_EDIT (ddc->post_date), ddc); - } else - gnc_date_edit_set_time_ts (GNC_DATE_EDIT (ddc->date), *ddue); + /* Deal with the terms handling of the due date */ + if (terms) + { + g_signal_connect (G_OBJECT (ddc->post_date), "date_changed", + G_CALLBACK (post_date_changed_cb), ddc); + gtk_widget_set_sensitive (ddc->date, FALSE); + post_date_changed_cb (GNC_DATE_EDIT (ddc->post_date), ddc); + } + else + gnc_date_edit_set_time_ts (GNC_DATE_EDIT (ddc->date), *ddue); - /* Setup the account widget */ - fill_in_acct_info (ddc, set_default_acct); + /* Setup the account widget */ + fill_in_acct_info (ddc, set_default_acct); - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - ddc); + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + ddc); - gtk_widget_show_all (ddc->dialog); + gtk_widget_show_all (ddc->dialog); - /* Set the focus on the date widget */ - gnc_date_grab_focus (GNC_DATE_EDIT (ddc->post_date)); + /* Set the focus on the date widget */ + gnc_date_grab_focus (GNC_DATE_EDIT (ddc->post_date)); - ddc->retval = FALSE; - while (gtk_dialog_run (GTK_DIALOG (ddc->dialog)) == GTK_RESPONSE_OK) { - /* If reponse is OK but flag is not set, try again */ - if (ddc->retval) - break; - } + ddc->retval = FALSE; + while (gtk_dialog_run (GTK_DIALOG (ddc->dialog)) == GTK_RESPONSE_OK) + { + /* If reponse is OK but flag is not set, try again */ + if (ddc->retval) + break; + } - gtk_widget_destroy(ddc->dialog); - retval = ddc->retval; - *acct = ddc->acct; - if (question_check_message) - *answer = ddc->answer; - g_free (ddc); + gtk_widget_destroy(ddc->dialog); + retval = ddc->retval; + *acct = ddc->acct; + if (question_check_message) + *answer = ddc->answer; + g_free (ddc); - return retval; + return retval; } gboolean gnc_dialog_date_acct_parented (GtkWidget *parent, const char *message, - const char *date_label_message, - const char *acct_label_message, - gboolean ok_is_default, - GList * acct_types, QofBook *book, - /* Returned Data... */ - Timespec *date, Account **acct) + const char *date_label_message, + const char *acct_label_message, + gboolean ok_is_default, + GList * acct_types, QofBook *book, + /* Returned Data... */ + Timespec *date, Account **acct) { - DialogDateClose *ddc; - GtkWidget *hbox; - GtkWidget *label; - GtkWidget *date_box; - GtkWidget *acct_box; - GladeXML *xml; - gboolean retval; + DialogDateClose *ddc; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *date_box; + GtkWidget *acct_box; + GladeXML *xml; + gboolean retval; - if (!message || !date_label_message || !acct_label_message || - !acct_types || !book || !date || !acct) - return FALSE; + if (!message || !date_label_message || !acct_label_message || + !acct_types || !book || !date || !acct) + return FALSE; - ddc = g_new0 (DialogDateClose, 1); - ddc->ts = date; - ddc->book = book; - ddc->acct_types = acct_types; - ddc->acct = *acct; + ddc = g_new0 (DialogDateClose, 1); + ddc->ts = date; + ddc->book = book; + ddc->acct_types = acct_types; + ddc->acct = *acct; - xml = gnc_glade_xml_new ("date-close.glade", "Date Account Dialog"); - ddc->dialog = glade_xml_get_widget (xml, "Date Account Dialog"); - hbox = glade_xml_get_widget (xml, "the_hbox"); + xml = gnc_glade_xml_new ("date-close.glade", "Date Account Dialog"); + ddc->dialog = glade_xml_get_widget (xml, "Date Account Dialog"); + hbox = glade_xml_get_widget (xml, "the_hbox"); - acct_box = glade_xml_get_widget (xml, "acct_hbox"); - ddc->acct_combo = gnc_account_sel_new(); - if (*acct) - gnc_account_sel_set_account (GNC_ACCOUNT_SEL(ddc->acct_combo), *acct, FALSE); - gtk_box_pack_start (GTK_BOX(acct_box), ddc->acct_combo, TRUE, TRUE, 0); + acct_box = glade_xml_get_widget (xml, "acct_hbox"); + ddc->acct_combo = gnc_account_sel_new(); + if (*acct) + gnc_account_sel_set_account (GNC_ACCOUNT_SEL(ddc->acct_combo), *acct, FALSE); + gtk_box_pack_start (GTK_BOX(acct_box), ddc->acct_combo, TRUE, TRUE, 0); - date_box = glade_xml_get_widget (xml, "date_box"); - ddc->date = gnc_date_edit_new (time(NULL), FALSE, FALSE); - gtk_box_pack_start (GTK_BOX(date_box), ddc->date, TRUE, TRUE, 0); + date_box = glade_xml_get_widget (xml, "date_box"); + ddc->date = gnc_date_edit_new (time(NULL), FALSE, FALSE); + gtk_box_pack_start (GTK_BOX(date_box), ddc->date, TRUE, TRUE, 0); - if (parent) - gtk_window_set_transient_for (GTK_WINDOW(ddc->dialog), GTK_WINDOW(parent)); + if (parent) + gtk_window_set_transient_for (GTK_WINDOW(ddc->dialog), GTK_WINDOW(parent)); - build_date_close_window (hbox, message); + build_date_close_window (hbox, message); - /* Set the labels */ - label = glade_xml_get_widget (xml, "date_label"); - gtk_label_set_text (GTK_LABEL (label), date_label_message); - label = glade_xml_get_widget (xml, "acct_label"); - gtk_label_set_text (GTK_LABEL (label), acct_label_message); + /* Set the labels */ + label = glade_xml_get_widget (xml, "date_label"); + gtk_label_set_text (GTK_LABEL (label), date_label_message); + label = glade_xml_get_widget (xml, "acct_label"); + gtk_label_set_text (GTK_LABEL (label), acct_label_message); - /* Set the date widget */ - gnc_date_edit_set_time_ts (GNC_DATE_EDIT (ddc->date), *date); + /* Set the date widget */ + gnc_date_edit_set_time_ts (GNC_DATE_EDIT (ddc->date), *date); - /* Setup the account widget */ - fill_in_acct_info (ddc, FALSE); + /* Setup the account widget */ + fill_in_acct_info (ddc, FALSE); - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - ddc); + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + ddc); - gtk_widget_show_all (ddc->dialog); + gtk_widget_show_all (ddc->dialog); - gtk_widget_hide_all (glade_xml_get_widget (xml, "postdate_label")); - gtk_widget_hide_all (glade_xml_get_widget (xml, "post_date")); - gtk_widget_hide_all (glade_xml_get_widget (xml, "memo_entry")); - gtk_widget_hide_all (glade_xml_get_widget (xml, "memo_label")); + gtk_widget_hide_all (glade_xml_get_widget (xml, "postdate_label")); + gtk_widget_hide_all (glade_xml_get_widget (xml, "post_date")); + gtk_widget_hide_all (glade_xml_get_widget (xml, "memo_entry")); + gtk_widget_hide_all (glade_xml_get_widget (xml, "memo_label")); - ddc->retval = FALSE; - while (gtk_dialog_run (GTK_DIALOG (ddc->dialog)) == GTK_RESPONSE_OK) { - /* If reponse is OK but flag is not set, try again */ - if (ddc->retval) - break; - } + ddc->retval = FALSE; + while (gtk_dialog_run (GTK_DIALOG (ddc->dialog)) == GTK_RESPONSE_OK) + { + /* If reponse is OK but flag is not set, try again */ + if (ddc->retval) + break; + } - gtk_widget_destroy(ddc->dialog); - retval = ddc->retval; - *acct = ddc->acct; - g_free (ddc); + gtk_widget_destroy(ddc->dialog); + retval = ddc->retval; + *acct = ddc->acct; + g_free (ddc); - return retval; + return retval; } diff --git a/src/business/business-gnome/dialog-date-close.h b/src/business/business-gnome/dialog-date-close.h index 641d3f079e..e220912212 100644 --- a/src/business/business-gnome/dialog-date-close.h +++ b/src/business/business-gnome/dialog-date-close.h @@ -31,13 +31,13 @@ gboolean gnc_dialog_date_close_parented (GtkWidget *parent, const char *message, - const char *label_message, - gboolean ok_is_default, - /* Returned data ... */ - Timespec *date); + const char *label_message, + gboolean ok_is_default, + /* Returned data ... */ + Timespec *date); -/* +/* * Note that the dialog will "own" (and free) the acct_types list. * it should be a list of GNCAccountTypes. If memo is non-NULL, * it will g_malloc() a string. The caller should g_free() it. @@ -47,17 +47,17 @@ gnc_dialog_date_close_parented (GtkWidget *parent, const char *message, gboolean gnc_dialog_dates_acct_question_parented (GtkWidget *parent, const char *message, - const char *ddue_label_message, - const char *post_label_message, - const char *acct_label_message, - const char *question_check_message, - gboolean ok_is_default, - gboolean set_default_acct, - GList * acct_types, GList * acct_commodities, - QofBook *book, GncBillTerm *terms, - /* Returned Data... */ - Timespec *ddue, Timespec *post, - char **memo, Account **acct, gboolean *answer); + const char *ddue_label_message, + const char *post_label_message, + const char *acct_label_message, + const char *question_check_message, + gboolean ok_is_default, + gboolean set_default_acct, + GList * acct_types, GList * acct_commodities, + QofBook *book, GncBillTerm *terms, + /* Returned Data... */ + Timespec *ddue, Timespec *post, + char **memo, Account **acct, gboolean *answer); #define gnc_dialog_dates_acct_parented(parent, message, \ ddue_label_message, \ @@ -80,15 +80,15 @@ gnc_dialog_dates_acct_question_parented (GtkWidget *parent, const char *message, /* Returned Data... */ \ ddue, post, \ memo, acct, NULL) \ - + gboolean gnc_dialog_date_acct_parented (GtkWidget *parent, const char *message, - const char *date_label_message, - const char *acct_label_message, - gboolean ok_is_default, - GList * acct_types, QofBook *book, - /* Returned Data... */ - Timespec *date, Account **acct); + const char *date_label_message, + const char *acct_label_message, + gboolean ok_is_default, + GList * acct_types, QofBook *book, + /* Returned Data... */ + Timespec *date, Account **acct); #endif /* _DIALOG_DATE_CLOSE_H */ diff --git a/src/business/business-gnome/dialog-employee.c b/src/business/business-gnome/dialog-employee.c index a249ae758f..9e03c28657 100644 --- a/src/business/business-gnome/dialog-employee.c +++ b/src/business/business-gnome/dialog-employee.c @@ -61,534 +61,558 @@ void gnc_employee_ccard_acct_toggled_cb (GtkToggleButton *button, gpointer data) typedef enum { - NEW_EMPLOYEE, - EDIT_EMPLOYEE + NEW_EMPLOYEE, + EDIT_EMPLOYEE } EmployeeDialogType; -struct _employee_select_window { - QofBook * book; - QueryNew * q; +struct _employee_select_window +{ + QofBook * book; + QueryNew * q; }; -struct _employee_window { - GtkWidget * dialog; +struct _employee_window +{ + GtkWidget * dialog; - GtkWidget * id_entry; - GtkWidget * username_entry; + GtkWidget * id_entry; + GtkWidget * username_entry; - GtkWidget * name_entry; - GtkWidget * addr1_entry; - GtkWidget * addr2_entry; - GtkWidget * addr3_entry; - GtkWidget * addr4_entry; - GtkWidget * phone_entry; - GtkWidget * fax_entry; - GtkWidget * email_entry; + GtkWidget * name_entry; + GtkWidget * addr1_entry; + GtkWidget * addr2_entry; + GtkWidget * addr3_entry; + GtkWidget * addr4_entry; + GtkWidget * phone_entry; + GtkWidget * fax_entry; + GtkWidget * email_entry; - GtkWidget * language_entry; + GtkWidget * language_entry; - GtkWidget * workday_amount; - GtkWidget * rate_amount; - GtkWidget * currency_edit; - GtkWidget * ccard_acct_check; - GtkWidget * ccard_acct_sel; + GtkWidget * workday_amount; + GtkWidget * rate_amount; + GtkWidget * currency_edit; + GtkWidget * ccard_acct_check; + GtkWidget * ccard_acct_sel; - GtkWidget * active_check; + GtkWidget * active_check; - /* ACL? */ + /* ACL? */ - EmployeeDialogType dialog_type; - GUID employee_guid; - gint component_id; - QofBook * book; - GncEmployee * created_employee; + EmployeeDialogType dialog_type; + GUID employee_guid; + gint component_id; + QofBook * book; + GncEmployee * created_employee; }; static GncEmployee * ew_get_employee (EmployeeWindow *ew) { - if (!ew) - return NULL; + if (!ew) + return NULL; - return gncEmployeeLookup (ew->book, &ew->employee_guid); + return gncEmployeeLookup (ew->book, &ew->employee_guid); } static void gnc_ui_to_employee (EmployeeWindow *ew, GncEmployee *employee) { - GncAddress *addr; + GncAddress *addr; - addr = gncEmployeeGetAddr (employee); + addr = gncEmployeeGetAddr (employee); - gnc_suspend_gui_refresh (); + gnc_suspend_gui_refresh (); - gncEmployeeBeginEdit (employee); + gncEmployeeBeginEdit (employee); - gncEmployeeSetID (employee, gtk_editable_get_chars - (GTK_EDITABLE (ew->id_entry), 0, -1)); - gncEmployeeSetUsername (employee, gtk_editable_get_chars - (GTK_EDITABLE (ew->username_entry), 0, -1)); + gncEmployeeSetID (employee, gtk_editable_get_chars + (GTK_EDITABLE (ew->id_entry), 0, -1)); + gncEmployeeSetUsername (employee, gtk_editable_get_chars + (GTK_EDITABLE (ew->username_entry), 0, -1)); - gncAddressSetName (addr, gtk_editable_get_chars - (GTK_EDITABLE (ew->name_entry), 0, -1)); - gncAddressSetAddr1 (addr, gtk_editable_get_chars - (GTK_EDITABLE (ew->addr1_entry), 0, -1)); - gncAddressSetAddr2 (addr, gtk_editable_get_chars - (GTK_EDITABLE (ew->addr2_entry), 0, -1)); - gncAddressSetAddr3 (addr, gtk_editable_get_chars - (GTK_EDITABLE (ew->addr3_entry), 0, -1)); - gncAddressSetAddr4 (addr, gtk_editable_get_chars - (GTK_EDITABLE (ew->addr4_entry), 0, -1)); - gncAddressSetPhone (addr, gtk_editable_get_chars - (GTK_EDITABLE (ew->phone_entry), 0, -1)); - gncAddressSetFax (addr, gtk_editable_get_chars - (GTK_EDITABLE (ew->fax_entry), 0, -1)); - gncAddressSetEmail (addr, gtk_editable_get_chars - (GTK_EDITABLE (ew->email_entry), 0, -1)); + gncAddressSetName (addr, gtk_editable_get_chars + (GTK_EDITABLE (ew->name_entry), 0, -1)); + gncAddressSetAddr1 (addr, gtk_editable_get_chars + (GTK_EDITABLE (ew->addr1_entry), 0, -1)); + gncAddressSetAddr2 (addr, gtk_editable_get_chars + (GTK_EDITABLE (ew->addr2_entry), 0, -1)); + gncAddressSetAddr3 (addr, gtk_editable_get_chars + (GTK_EDITABLE (ew->addr3_entry), 0, -1)); + gncAddressSetAddr4 (addr, gtk_editable_get_chars + (GTK_EDITABLE (ew->addr4_entry), 0, -1)); + gncAddressSetPhone (addr, gtk_editable_get_chars + (GTK_EDITABLE (ew->phone_entry), 0, -1)); + gncAddressSetFax (addr, gtk_editable_get_chars + (GTK_EDITABLE (ew->fax_entry), 0, -1)); + gncAddressSetEmail (addr, gtk_editable_get_chars + (GTK_EDITABLE (ew->email_entry), 0, -1)); - gncEmployeeSetActive (employee, gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (ew->active_check))); - gncEmployeeSetLanguage (employee, gtk_editable_get_chars - (GTK_EDITABLE (ew->language_entry), 0, -1)); + gncEmployeeSetActive (employee, gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON (ew->active_check))); + gncEmployeeSetLanguage (employee, gtk_editable_get_chars + (GTK_EDITABLE (ew->language_entry), 0, -1)); - /* Parse and set the workday and rate amounts */ - gncEmployeeSetWorkday (employee, gnc_amount_edit_get_amount - (GNC_AMOUNT_EDIT (ew->workday_amount))); - gncEmployeeSetRate (employee, gnc_amount_edit_get_amount - (GNC_AMOUNT_EDIT (ew->rate_amount))); - gncEmployeeSetCurrency (employee, gnc_currency_edit_get_currency - (GNC_CURRENCY_EDIT (ew->currency_edit))); + /* Parse and set the workday and rate amounts */ + gncEmployeeSetWorkday (employee, gnc_amount_edit_get_amount + (GNC_AMOUNT_EDIT (ew->workday_amount))); + gncEmployeeSetRate (employee, gnc_amount_edit_get_amount + (GNC_AMOUNT_EDIT (ew->rate_amount))); + gncEmployeeSetCurrency (employee, gnc_currency_edit_get_currency + (GNC_CURRENCY_EDIT (ew->currency_edit))); - /* Fill in the CCard Acct */ - gncEmployeeSetCCard (employee, - (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (ew->ccard_acct_check)) ? - gnc_account_sel_get_account - (GNC_ACCOUNT_SEL (ew->ccard_acct_sel)) : NULL)); + /* Fill in the CCard Acct */ + gncEmployeeSetCCard (employee, + (gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON (ew->ccard_acct_check)) ? + gnc_account_sel_get_account + (GNC_ACCOUNT_SEL (ew->ccard_acct_sel)) : NULL)); - gncEmployeeCommitEdit (employee); - gnc_resume_gui_refresh (); + gncEmployeeCommitEdit (employee); + gnc_resume_gui_refresh (); } #if 0 static gboolean check_edit_amount (GtkWidget *dialog, GtkWidget *amount, - gnc_numeric *min, gnc_numeric *max, - const char * error_message) + gnc_numeric *min, gnc_numeric *max, + const char * error_message) { - if (!gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT (amount))) { - if (error_message) - gnc_error_dialog (dialog, error_message); - return TRUE; - } - /* We've got a valid-looking number; check mix/max */ - if (min || max) { - gnc_numeric val = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (amount)); - if ((min && gnc_numeric_compare (*min, val) > 0) || - (max && gnc_numeric_compare (val, *max) > 0)) { - if (error_message) - gnc_error_dialog (dialog, error_message); - return TRUE; + if (!gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT (amount))) + { + if (error_message) + gnc_error_dialog (dialog, error_message); + return TRUE; } - } - return FALSE; + /* We've got a valid-looking number; check mix/max */ + if (min || max) + { + gnc_numeric val = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (amount)); + if ((min && gnc_numeric_compare (*min, val) > 0) || + (max && gnc_numeric_compare (val, *max) > 0)) + { + if (error_message) + gnc_error_dialog (dialog, error_message); + return TRUE; + } + } + return FALSE; } #endif -static gboolean check_entry_nonempty (GtkWidget *dialog, GtkWidget *entry, - const char * error_message) +static gboolean check_entry_nonempty (GtkWidget *dialog, GtkWidget *entry, + const char * error_message) { - const char *res = gtk_entry_get_text (GTK_ENTRY (entry)); - if (safe_strcmp (res, "") == 0) { - if (error_message) - gnc_error_dialog (dialog, "%s", error_message); - return TRUE; - } - return FALSE; + const char *res = gtk_entry_get_text (GTK_ENTRY (entry)); + if (safe_strcmp (res, "") == 0) + { + if (error_message) + gnc_error_dialog (dialog, "%s", error_message); + return TRUE; + } + return FALSE; } void gnc_employee_window_ok_cb (GtkWidget *widget, gpointer data) { - EmployeeWindow *ew = data; - gchar *string; + EmployeeWindow *ew = data; + gchar *string; - /* Check for valid username */ - if (check_entry_nonempty (ew->dialog, ew->username_entry, - _("You must enter a username."))) - return; + /* Check for valid username */ + if (check_entry_nonempty (ew->dialog, ew->username_entry, + _("You must enter a username."))) + return; - /* Check for valid username */ - if (check_entry_nonempty (ew->dialog, ew->name_entry, - _("You must enter the employee's name."))) - return; + /* Check for valid username */ + if (check_entry_nonempty (ew->dialog, ew->name_entry, + _("You must enter the employee's name."))) + return; - /* Make sure we have an address */ - if (check_entry_nonempty (ew->dialog, ew->addr1_entry, NULL) && - check_entry_nonempty (ew->dialog, ew->addr2_entry, NULL) && - check_entry_nonempty (ew->dialog, ew->addr3_entry, NULL) && - check_entry_nonempty (ew->dialog, ew->addr4_entry, NULL)) { - const char *msg = _("You must enter an address."); - gnc_error_dialog (ew->dialog, "%s", msg); - return; - } - - /* Set the employee id if one has not been chosen */ - if (safe_strcmp (gtk_entry_get_text (GTK_ENTRY (ew->id_entry)), "") == 0) { - string = g_strdup_printf ("%.6" G_GINT64_FORMAT, - gncEmployeeNextID (ew->book)); - gtk_entry_set_text (GTK_ENTRY (ew->id_entry), string); - g_free(string); - } - - /* Now save it off */ - { - GncEmployee *employee = ew_get_employee (ew); - if (employee) { - gnc_ui_to_employee (ew, employee); + /* Make sure we have an address */ + if (check_entry_nonempty (ew->dialog, ew->addr1_entry, NULL) && + check_entry_nonempty (ew->dialog, ew->addr2_entry, NULL) && + check_entry_nonempty (ew->dialog, ew->addr3_entry, NULL) && + check_entry_nonempty (ew->dialog, ew->addr4_entry, NULL)) + { + const char *msg = _("You must enter an address."); + gnc_error_dialog (ew->dialog, "%s", msg); + return; } - ew->created_employee = employee; - ew->employee_guid = *xaccGUIDNULL (); - } - gnc_close_gui_component (ew->component_id); + /* Set the employee id if one has not been chosen */ + if (safe_strcmp (gtk_entry_get_text (GTK_ENTRY (ew->id_entry)), "") == 0) + { + string = g_strdup_printf ("%.6" G_GINT64_FORMAT, + gncEmployeeNextID (ew->book)); + gtk_entry_set_text (GTK_ENTRY (ew->id_entry), string); + g_free(string); + } + + /* Now save it off */ + { + GncEmployee *employee = ew_get_employee (ew); + if (employee) + { + gnc_ui_to_employee (ew, employee); + } + ew->created_employee = employee; + ew->employee_guid = *xaccGUIDNULL (); + } + + gnc_close_gui_component (ew->component_id); } void gnc_employee_window_cancel_cb (GtkWidget *widget, gpointer data) { - EmployeeWindow *ew = data; + EmployeeWindow *ew = data; - gnc_close_gui_component (ew->component_id); + gnc_close_gui_component (ew->component_id); } void gnc_employee_window_help_cb (GtkWidget *widget, gpointer data) { - gnc_gnome_help(HF_HELP, HL_USAGE); + gnc_gnome_help(HF_HELP, HL_USAGE); } void gnc_employee_window_destroy_cb (GtkWidget *widget, gpointer data) { - EmployeeWindow *ew = data; - GncEmployee *employee = ew_get_employee (ew); + EmployeeWindow *ew = data; + GncEmployee *employee = ew_get_employee (ew); - gnc_suspend_gui_refresh (); + gnc_suspend_gui_refresh (); - if (ew->dialog_type == NEW_EMPLOYEE && employee != NULL) { - gncEmployeeBeginEdit (employee); - gncEmployeeDestroy (employee); - ew->employee_guid = *xaccGUIDNULL (); - } + if (ew->dialog_type == NEW_EMPLOYEE && employee != NULL) + { + gncEmployeeBeginEdit (employee); + gncEmployeeDestroy (employee); + ew->employee_guid = *xaccGUIDNULL (); + } - gnc_unregister_gui_component (ew->component_id); - gnc_resume_gui_refresh (); + gnc_unregister_gui_component (ew->component_id); + gnc_resume_gui_refresh (); - g_free (ew); + g_free (ew); } void gnc_employee_name_changed_cb (GtkWidget *widget, gpointer data) { - EmployeeWindow *ew = data; - char *fullname, *title; - const char *name, *id; + EmployeeWindow *ew = data; + char *fullname, *title; + const char *name, *id; - if (!ew) - return; + if (!ew) + return; - name = gtk_entry_get_text (GTK_ENTRY (ew->name_entry)); - if (!name || *name == '\0') - name = _(""); + name = gtk_entry_get_text (GTK_ENTRY (ew->name_entry)); + if (!name || *name == '\0') + name = _(""); - id = gtk_entry_get_text (GTK_ENTRY (ew->id_entry)); + id = gtk_entry_get_text (GTK_ENTRY (ew->id_entry)); - fullname = g_strconcat (name, " (", id, ")", (char *)NULL); + fullname = g_strconcat (name, " (", id, ")", (char *)NULL); - if (ew->dialog_type == EDIT_EMPLOYEE) - title = g_strconcat (_("Edit Employee"), " - ", fullname, (char *)NULL); - else - title = g_strconcat (_("New Employee"), " - ", fullname, (char *)NULL); + if (ew->dialog_type == EDIT_EMPLOYEE) + title = g_strconcat (_("Edit Employee"), " - ", fullname, (char *)NULL); + else + title = g_strconcat (_("New Employee"), " - ", fullname, (char *)NULL); - gtk_window_set_title (GTK_WINDOW (ew->dialog), title); + gtk_window_set_title (GTK_WINDOW (ew->dialog), title); - g_free (fullname); - g_free (title); + g_free (fullname); + g_free (title); } void gnc_employee_ccard_acct_toggled_cb (GtkToggleButton *button, gpointer data) { - EmployeeWindow *ew = data; + EmployeeWindow *ew = data; - if (!ew) - return; + if (!ew) + return; - if (gtk_toggle_button_get_active (button)) { - gtk_widget_set_sensitive (ew->ccard_acct_sel, TRUE); - gtk_widget_show (ew->ccard_acct_sel); - } else { - gtk_widget_set_sensitive (ew->ccard_acct_sel, TRUE); - gtk_widget_hide (ew->ccard_acct_sel); - } + if (gtk_toggle_button_get_active (button)) + { + gtk_widget_set_sensitive (ew->ccard_acct_sel, TRUE); + gtk_widget_show (ew->ccard_acct_sel); + } + else + { + gtk_widget_set_sensitive (ew->ccard_acct_sel, TRUE); + gtk_widget_hide (ew->ccard_acct_sel); + } } static void gnc_employee_window_close_handler (gpointer user_data) { - EmployeeWindow *ew = user_data; + EmployeeWindow *ew = user_data; - gtk_widget_destroy (ew->dialog); + gtk_widget_destroy (ew->dialog); } static void gnc_employee_window_refresh_handler (GHashTable *changes, gpointer user_data) { - EmployeeWindow *ew = user_data; - const EventInfo *info; - GncEmployee *employee = ew_get_employee (ew); + EmployeeWindow *ew = user_data; + const EventInfo *info; + GncEmployee *employee = ew_get_employee (ew); - /* If there isn't a employee behind us, close down */ - if (!employee) { - gnc_close_gui_component (ew->component_id); - return; - } - - /* Next, close if this is a destroy event */ - if (changes) { - info = gnc_gui_get_entity_events (changes, &ew->employee_guid); - if (info && (info->event_mask & QOF_EVENT_DESTROY)) { - gnc_close_gui_component (ew->component_id); - return; + /* If there isn't a employee behind us, close down */ + if (!employee) + { + gnc_close_gui_component (ew->component_id); + return; + } + + /* Next, close if this is a destroy event */ + if (changes) + { + info = gnc_gui_get_entity_events (changes, &ew->employee_guid); + if (info && (info->event_mask & QOF_EVENT_DESTROY)) + { + gnc_close_gui_component (ew->component_id); + return; + } } - } } static gboolean find_handler (gpointer find_data, gpointer user_data) { - const GUID *employee_guid = find_data; - EmployeeWindow *ew = user_data; + const GUID *employee_guid = find_data; + EmployeeWindow *ew = user_data; - return(ew && guid_equal(&ew->employee_guid, employee_guid)); + return(ew && guid_equal(&ew->employee_guid, employee_guid)); } static EmployeeWindow * gnc_employee_new_window (QofBook *bookp, - GncEmployee *employee) + GncEmployee *employee) { - EmployeeWindow *ew; - GladeXML *xml; - GtkWidget *hbox, *edit; - gnc_commodity *currency; - GNCPrintAmountInfo print_info; - GList *acct_types; - Account *ccard_acct; + EmployeeWindow *ew; + GladeXML *xml; + GtkWidget *hbox, *edit; + gnc_commodity *currency; + GNCPrintAmountInfo print_info; + GList *acct_types; + Account *ccard_acct; - /* - * Find an existing window for this employee. If found, bring it to - * the front. - */ - if (employee) { - GUID employee_guid; - - employee_guid = *gncEmployeeGetGUID (employee); - ew = gnc_find_first_gui_component (DIALOG_EDIT_EMPLOYEE_CM_CLASS, - find_handler, &employee_guid); - if (ew) { - gtk_window_present (GTK_WINDOW(ew->dialog)); - return(ew); + /* + * Find an existing window for this employee. If found, bring it to + * the front. + */ + if (employee) + { + GUID employee_guid; + + employee_guid = *gncEmployeeGetGUID (employee); + ew = gnc_find_first_gui_component (DIALOG_EDIT_EMPLOYEE_CM_CLASS, + find_handler, &employee_guid); + if (ew) + { + gtk_window_present (GTK_WINDOW(ew->dialog)); + return(ew); + } } - } - - /* Find the default currency */ - if (employee) - currency = gncEmployeeGetCurrency (employee); - else - currency = gnc_default_currency (); - /* - * No existing employee window found. Build a new one. - */ - ew = g_new0 (EmployeeWindow, 1); + /* Find the default currency */ + if (employee) + currency = gncEmployeeGetCurrency (employee); + else + currency = gnc_default_currency (); - ew->book = bookp; + /* + * No existing employee window found. Build a new one. + */ + ew = g_new0 (EmployeeWindow, 1); - /* Find the dialog */ - xml = gnc_glade_xml_new ("employee.glade", "Employee Dialog"); - ew->dialog = glade_xml_get_widget (xml, "Employee Dialog"); + ew->book = bookp; - g_object_set_data (G_OBJECT (ew->dialog), "dialog_info", ew); + /* Find the dialog */ + xml = gnc_glade_xml_new ("employee.glade", "Employee Dialog"); + ew->dialog = glade_xml_get_widget (xml, "Employee Dialog"); - /* Get entry points */ - ew->id_entry = glade_xml_get_widget (xml, "id_entry"); - ew->username_entry = glade_xml_get_widget (xml, "username_entry"); + g_object_set_data (G_OBJECT (ew->dialog), "dialog_info", ew); - ew->name_entry = glade_xml_get_widget (xml, "name_entry"); - ew->addr1_entry = glade_xml_get_widget (xml, "addr1_entry"); - ew->addr2_entry = glade_xml_get_widget (xml, "addr2_entry"); - ew->addr3_entry = glade_xml_get_widget (xml, "addr3_entry"); - ew->addr4_entry = glade_xml_get_widget (xml, "addr4_entry"); - ew->phone_entry = glade_xml_get_widget (xml, "phone_entry"); - ew->fax_entry = glade_xml_get_widget (xml, "fax_entry"); - ew->email_entry = glade_xml_get_widget (xml, "email_entry"); + /* Get entry points */ + ew->id_entry = glade_xml_get_widget (xml, "id_entry"); + ew->username_entry = glade_xml_get_widget (xml, "username_entry"); - ew->language_entry = glade_xml_get_widget (xml, "language_entry"); - ew->active_check = glade_xml_get_widget (xml, "active_check"); + ew->name_entry = glade_xml_get_widget (xml, "name_entry"); + ew->addr1_entry = glade_xml_get_widget (xml, "addr1_entry"); + ew->addr2_entry = glade_xml_get_widget (xml, "addr2_entry"); + ew->addr3_entry = glade_xml_get_widget (xml, "addr3_entry"); + ew->addr4_entry = glade_xml_get_widget (xml, "addr4_entry"); + ew->phone_entry = glade_xml_get_widget (xml, "phone_entry"); + ew->fax_entry = glade_xml_get_widget (xml, "fax_entry"); + ew->email_entry = glade_xml_get_widget (xml, "email_entry"); - /* Currency */ - edit = gnc_currency_edit_new(); - gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(edit), currency); - ew->currency_edit = edit; + ew->language_entry = glade_xml_get_widget (xml, "language_entry"); + ew->active_check = glade_xml_get_widget (xml, "active_check"); - hbox = glade_xml_get_widget (xml, "currency_box"); - gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); + /* Currency */ + edit = gnc_currency_edit_new(); + gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(edit), currency); + ew->currency_edit = edit; - /* WORKDAY: Value */ - edit = gnc_amount_edit_new(); - gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (edit), TRUE); - print_info = gnc_integral_print_info (); - print_info.max_decimal_places = 5; - gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (edit), print_info); - gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (edit), 100000); - ew->workday_amount = edit; - gtk_widget_show (edit); + hbox = glade_xml_get_widget (xml, "currency_box"); + gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); - hbox = glade_xml_get_widget (xml, "hours_hbox"); - gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); + /* WORKDAY: Value */ + edit = gnc_amount_edit_new(); + gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (edit), TRUE); + print_info = gnc_integral_print_info (); + print_info.max_decimal_places = 5; + gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (edit), print_info); + gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (edit), 100000); + ew->workday_amount = edit; + gtk_widget_show (edit); - /* RATE: Monetary Value */ - edit = gnc_amount_edit_new(); - print_info = gnc_commodity_print_info (currency, FALSE); - gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (edit), TRUE); - gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (edit), print_info); - gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (edit), - gnc_commodity_get_fraction (currency)); - ew->rate_amount = edit; - gtk_widget_show (edit); + hbox = glade_xml_get_widget (xml, "hours_hbox"); + gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); - hbox = glade_xml_get_widget (xml, "rate_hbox"); - gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); + /* RATE: Monetary Value */ + edit = gnc_amount_edit_new(); + print_info = gnc_commodity_print_info (currency, FALSE); + gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (edit), TRUE); + gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (edit), print_info); + gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (edit), + gnc_commodity_get_fraction (currency)); + ew->rate_amount = edit; + gtk_widget_show (edit); - /* CCard Account Selection */ - ew->ccard_acct_check = glade_xml_get_widget (xml, "ccard_check"); + hbox = glade_xml_get_widget (xml, "rate_hbox"); + gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); - edit = gnc_account_sel_new(); - acct_types = g_list_prepend(NULL, (gpointer)ACCT_TYPE_CREDIT); - gnc_account_sel_set_acct_filters (GNC_ACCOUNT_SEL(edit), acct_types, NULL); - g_list_free (acct_types); + /* CCard Account Selection */ + ew->ccard_acct_check = glade_xml_get_widget (xml, "ccard_check"); - ew->ccard_acct_sel = edit; - gtk_widget_show (edit); + edit = gnc_account_sel_new(); + acct_types = g_list_prepend(NULL, (gpointer)ACCT_TYPE_CREDIT); + gnc_account_sel_set_acct_filters (GNC_ACCOUNT_SEL(edit), acct_types, NULL); + g_list_free (acct_types); - hbox = glade_xml_get_widget (xml, "ccard_acct_hbox"); - gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); + ew->ccard_acct_sel = edit; + gtk_widget_show (edit); - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - ew); + hbox = glade_xml_get_widget (xml, "ccard_acct_hbox"); + gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); - /* Setup initial values */ - if (employee != NULL) { - GncAddress *addr; + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + ew); - ew->dialog_type = EDIT_EMPLOYEE; - ew->employee_guid = *gncEmployeeGetGUID (employee); + /* Setup initial values */ + if (employee != NULL) + { + GncAddress *addr; - addr = gncEmployeeGetAddr (employee); + ew->dialog_type = EDIT_EMPLOYEE; + ew->employee_guid = *gncEmployeeGetGUID (employee); - gtk_entry_set_text (GTK_ENTRY (ew->id_entry), gncEmployeeGetID (employee)); - gtk_entry_set_text (GTK_ENTRY (ew->username_entry), gncEmployeeGetUsername (employee)); + addr = gncEmployeeGetAddr (employee); - /* Setup Address */ - gtk_entry_set_text (GTK_ENTRY (ew->name_entry), gncAddressGetName (addr)); - gtk_entry_set_text (GTK_ENTRY (ew->addr1_entry), gncAddressGetAddr1 (addr)); - gtk_entry_set_text (GTK_ENTRY (ew->addr2_entry), gncAddressGetAddr2 (addr)); - gtk_entry_set_text (GTK_ENTRY (ew->addr3_entry), gncAddressGetAddr3 (addr)); - gtk_entry_set_text (GTK_ENTRY (ew->addr4_entry), gncAddressGetAddr4 (addr)); - gtk_entry_set_text (GTK_ENTRY (ew->phone_entry), gncAddressGetPhone (addr)); - gtk_entry_set_text (GTK_ENTRY (ew->fax_entry), gncAddressGetFax (addr)); - gtk_entry_set_text (GTK_ENTRY (ew->email_entry), gncAddressGetEmail (addr)); + gtk_entry_set_text (GTK_ENTRY (ew->id_entry), gncEmployeeGetID (employee)); + gtk_entry_set_text (GTK_ENTRY (ew->username_entry), gncEmployeeGetUsername (employee)); - gtk_entry_set_text (GTK_ENTRY (ew->language_entry), - gncEmployeeGetLanguage (employee)); + /* Setup Address */ + gtk_entry_set_text (GTK_ENTRY (ew->name_entry), gncAddressGetName (addr)); + gtk_entry_set_text (GTK_ENTRY (ew->addr1_entry), gncAddressGetAddr1 (addr)); + gtk_entry_set_text (GTK_ENTRY (ew->addr2_entry), gncAddressGetAddr2 (addr)); + gtk_entry_set_text (GTK_ENTRY (ew->addr3_entry), gncAddressGetAddr3 (addr)); + gtk_entry_set_text (GTK_ENTRY (ew->addr4_entry), gncAddressGetAddr4 (addr)); + gtk_entry_set_text (GTK_ENTRY (ew->phone_entry), gncAddressGetPhone (addr)); + gtk_entry_set_text (GTK_ENTRY (ew->fax_entry), gncAddressGetFax (addr)); + gtk_entry_set_text (GTK_ENTRY (ew->email_entry), gncAddressGetEmail (addr)); - /* Set toggle buttons */ - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ew->active_check), - gncEmployeeGetActive (employee)); + gtk_entry_set_text (GTK_ENTRY (ew->language_entry), + gncEmployeeGetLanguage (employee)); - ew->component_id = - gnc_register_gui_component (DIALOG_EDIT_EMPLOYEE_CM_CLASS, - gnc_employee_window_refresh_handler, - gnc_employee_window_close_handler, - ew); - } else { - employee = gncEmployeeCreate (bookp); - ew->employee_guid = *gncEmployeeGetGUID (employee); + /* Set toggle buttons */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ew->active_check), + gncEmployeeGetActive (employee)); - ew->dialog_type = NEW_EMPLOYEE; - ew->component_id = - gnc_register_gui_component (DIALOG_NEW_EMPLOYEE_CM_CLASS, - gnc_employee_window_refresh_handler, - gnc_employee_window_close_handler, - ew); - } + ew->component_id = + gnc_register_gui_component (DIALOG_EDIT_EMPLOYEE_CM_CLASS, + gnc_employee_window_refresh_handler, + gnc_employee_window_close_handler, + ew); + } + else + { + employee = gncEmployeeCreate (bookp); + ew->employee_guid = *gncEmployeeGetGUID (employee); + + ew->dialog_type = NEW_EMPLOYEE; + ew->component_id = + gnc_register_gui_component (DIALOG_NEW_EMPLOYEE_CM_CLASS, + gnc_employee_window_refresh_handler, + gnc_employee_window_close_handler, + ew); + } - /* I know that employee exists here -- either passed in or just created */ - /* Set the workday and rate values */ - gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (ew->workday_amount), - gncEmployeeGetWorkday (employee)); - gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (ew->rate_amount), - gncEmployeeGetRate (employee)); + /* I know that employee exists here -- either passed in or just created */ + /* Set the workday and rate values */ + gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (ew->workday_amount), + gncEmployeeGetWorkday (employee)); + gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (ew->rate_amount), + gncEmployeeGetRate (employee)); - ccard_acct = gncEmployeeGetCCard (employee); - if (ccard_acct == NULL) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ew->ccard_acct_check), FALSE); - gtk_widget_set_sensitive (ew->ccard_acct_sel, FALSE); - } else { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ew->ccard_acct_check), TRUE); - gnc_account_sel_set_account (GNC_ACCOUNT_SEL (ew->ccard_acct_sel), ccard_acct, FALSE); - } + ccard_acct = gncEmployeeGetCCard (employee); + if (ccard_acct == NULL) + { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ew->ccard_acct_check), FALSE); + gtk_widget_set_sensitive (ew->ccard_acct_sel, FALSE); + } + else + { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ew->ccard_acct_check), TRUE); + gnc_account_sel_set_account (GNC_ACCOUNT_SEL (ew->ccard_acct_sel), ccard_acct, FALSE); + } - /* XXX: Set the ACL */ + /* XXX: Set the ACL */ - gnc_gui_component_watch_entity_type (ew->component_id, - GNC_EMPLOYEE_MODULE_NAME, - QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); + gnc_gui_component_watch_entity_type (ew->component_id, + GNC_EMPLOYEE_MODULE_NAME, + QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); - gtk_widget_show_all (ew->dialog); + gtk_widget_show_all (ew->dialog); - if (ccard_acct == NULL) - gtk_widget_hide (ew->ccard_acct_sel); + if (ccard_acct == NULL) + gtk_widget_hide (ew->ccard_acct_sel); - return ew; + return ew; } EmployeeWindow * gnc_ui_employee_new (QofBook *bookp) { - EmployeeWindow *ew; + EmployeeWindow *ew; - /* Make sure required options exist */ - if (!bookp) return NULL; + /* Make sure required options exist */ + if (!bookp) return NULL; - ew = gnc_employee_new_window (bookp, NULL); + ew = gnc_employee_new_window (bookp, NULL); - return ew; + return ew; } EmployeeWindow * gnc_ui_employee_edit (GncEmployee *employee) { - EmployeeWindow *ew; + EmployeeWindow *ew; - if (!employee) return NULL; + if (!employee) return NULL; - ew = gnc_employee_new_window (gncEmployeeGetBook(employee), employee); + ew = gnc_employee_new_window (gncEmployeeGetBook(employee), employee); - return ew; + return ew; } /* Functions for employee selection widgets */ @@ -596,154 +620,158 @@ gnc_ui_employee_edit (GncEmployee *employee) static void invoice_employee_cb (gpointer *employee_p, gpointer user_data) { - struct _employee_select_window *sw = user_data; - GncOwner owner; - GncEmployee *employee; + struct _employee_select_window *sw = user_data; + GncOwner owner; + GncEmployee *employee; - g_return_if_fail (employee_p && user_data); + g_return_if_fail (employee_p && user_data); - employee = *employee_p; + employee = *employee_p; - if (!employee) + if (!employee) + return; + + gncOwnerInitEmployee (&owner, employee); + gnc_invoice_search (NULL, &owner, sw->book); return; - - gncOwnerInitEmployee (&owner, employee); - gnc_invoice_search (NULL, &owner, sw->book); - return; } static void payment_employee_cb (gpointer *employee_p, gpointer user_data) { - struct _employee_select_window *sw = user_data; - GncOwner owner; - GncEmployee *employee; + struct _employee_select_window *sw = user_data; + GncOwner owner; + GncEmployee *employee; - g_return_if_fail (employee_p && user_data); + g_return_if_fail (employee_p && user_data); - employee = *employee_p; + employee = *employee_p; - if (!employee) + if (!employee) + return; + + gncOwnerInitEmployee (&owner, employee); + gnc_ui_payment_new (&owner, sw->book); return; - - gncOwnerInitEmployee (&owner, employee); - gnc_ui_payment_new (&owner, sw->book); - return; } static void edit_employee_cb (gpointer *employee_p, gpointer user_data) { - GncEmployee *employee; + GncEmployee *employee; - g_return_if_fail (employee_p && user_data); + g_return_if_fail (employee_p && user_data); - employee = *employee_p; + employee = *employee_p; - if (!employee) + if (!employee) + return; + + gnc_ui_employee_edit (employee); return; - - gnc_ui_employee_edit (employee); - return; } static gpointer new_employee_cb (gpointer user_data) { - struct _employee_select_window *sw = user_data; - EmployeeWindow *ew; - - g_return_val_if_fail (user_data, NULL); + struct _employee_select_window *sw = user_data; + EmployeeWindow *ew; - ew = gnc_ui_employee_new (sw->book); - return ew_get_employee (ew); + g_return_val_if_fail (user_data, NULL); + + ew = gnc_ui_employee_new (sw->book); + return ew_get_employee (ew); } static void free_employee_cb (gpointer user_data) { - struct _employee_select_window *sw = user_data; + struct _employee_select_window *sw = user_data; - g_return_if_fail (sw); + g_return_if_fail (sw); - gncQueryDestroy (sw->q); - g_free (sw); + gncQueryDestroy (sw->q); + g_free (sw); } GNCSearchWindow * gnc_employee_search (GncEmployee *start, QofBook *book) { - GNCIdType type = GNC_EMPLOYEE_MODULE_NAME; - struct _employee_select_window *sw; - QueryNew *q, *q2 = NULL; - static GList *params = NULL; - static GList *columns = NULL; - static GNCSearchCallbackButton buttons[] = { - { N_("View/Edit Employee"), edit_employee_cb}, - { N_("Expense Vouchers"), invoice_employee_cb}, - { N_("Process Payment"), payment_employee_cb}, - { NULL }, - }; + GNCIdType type = GNC_EMPLOYEE_MODULE_NAME; + struct _employee_select_window *sw; + QueryNew *q, *q2 = NULL; + static GList *params = NULL; + static GList *columns = NULL; + static GNCSearchCallbackButton buttons[] = + { + { N_("View/Edit Employee"), edit_employee_cb}, + { N_("Expense Vouchers"), invoice_employee_cb}, + { N_("Process Payment"), payment_employee_cb}, + { NULL }, + }; - g_return_val_if_fail (book, NULL); + g_return_val_if_fail (book, NULL); - /* Build parameter list in reverse order*/ - if (params == NULL) { - params = gnc_search_param_prepend (params, _("Employee ID"), NULL, type, - EMPLOYEE_ID, NULL); - params = gnc_search_param_prepend (params, _("Employee Username"), NULL, - type, EMPLOYEE_USERNAME, NULL); - params = gnc_search_param_prepend (params, _("Employee Name"), NULL, - type, EMPLOYEE_ADDR, ADDRESS_NAME, NULL); - } + /* Build parameter list in reverse order*/ + if (params == NULL) + { + params = gnc_search_param_prepend (params, _("Employee ID"), NULL, type, + EMPLOYEE_ID, NULL); + params = gnc_search_param_prepend (params, _("Employee Username"), NULL, + type, EMPLOYEE_USERNAME, NULL); + params = gnc_search_param_prepend (params, _("Employee Name"), NULL, + type, EMPLOYEE_ADDR, ADDRESS_NAME, NULL); + } - /* Build the column list in reverse order */ - if (columns == NULL) { - columns = gnc_search_param_prepend (columns, _("Username"), NULL, type, - EMPLOYEE_USERNAME, NULL); - columns = gnc_search_param_prepend (columns, _("ID #"), NULL, type, - EMPLOYEE_ID, NULL); - columns = gnc_search_param_prepend (columns, _("Name"), NULL, type, - EMPLOYEE_ADDR, ADDRESS_NAME, NULL); - } + /* Build the column list in reverse order */ + if (columns == NULL) + { + columns = gnc_search_param_prepend (columns, _("Username"), NULL, type, + EMPLOYEE_USERNAME, NULL); + columns = gnc_search_param_prepend (columns, _("ID #"), NULL, type, + EMPLOYEE_ID, NULL); + columns = gnc_search_param_prepend (columns, _("Name"), NULL, type, + EMPLOYEE_ADDR, ADDRESS_NAME, NULL); + } - /* Build the queries */ - q = gncQueryCreateFor (type); - gncQuerySetBook (q, book); + /* Build the queries */ + q = gncQueryCreateFor (type); + gncQuerySetBook (q, book); #if 0 - if (start) { - q2 = gncQueryCopy (q); - gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), - gncEmployeeGetGUID (start), QUERY_AND); - } + if (start) + { + q2 = gncQueryCopy (q); + gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), + gncEmployeeGetGUID (start), QUERY_AND); + } #endif - /* launch select dialog and return the result */ - sw = g_new0 (struct _employee_select_window, 1); - sw->book = book; - sw->q = q; + /* launch select dialog and return the result */ + sw = g_new0 (struct _employee_select_window, 1); + sw->book = book; + sw->q = q; - return gnc_search_dialog_create (type, _("Find Employee"), - params, columns, q, q2, - buttons, NULL, new_employee_cb, - sw, free_employee_cb, - GCONF_SECTION_SEARCH, NULL); + return gnc_search_dialog_create (type, _("Find Employee"), + params, columns, q, q2, + buttons, NULL, new_employee_cb, + sw, free_employee_cb, + GCONF_SECTION_SEARCH, NULL); } GNCSearchWindow * gnc_employee_search_select (gpointer start, gpointer book) { - if (!book) return NULL; + if (!book) return NULL; - return gnc_employee_search (start, book); + return gnc_employee_search (start, book); } GNCSearchWindow * gnc_employee_search_edit (gpointer start, gpointer book) { - if (start) - gnc_ui_employee_edit (start); + if (start) + gnc_ui_employee_edit (start); - return NULL; + return NULL; } diff --git a/src/business/business-gnome/dialog-invoice.c b/src/business/business-gnome/dialog-invoice.c index 6bc81c1e1a..d71249aef2 100644 --- a/src/business/business-gnome/dialog-invoice.c +++ b/src/business/business-gnome/dialog-invoice.c @@ -107,11 +107,12 @@ FROM_STRING_DEC(InvoiceDialogType, ENUM_INVOICE_TYPE) FROM_STRING_FUNC(InvoiceDialogType, ENUM_INVOICE_TYPE) AS_STRING_FUNC(InvoiceDialogType, ENUM_INVOICE_TYPE) -struct _invoice_select_window { - QofBook * book; - GncOwner * owner; - QueryNew * q; - GncOwner owner_def; +struct _invoice_select_window +{ + QofBook * book; + GncOwner * owner; + QueryNew * q; + GncOwner owner_def; }; @@ -120,68 +121,69 @@ struct _invoice_select_window { * maintain information for the "Invoice Entry" page that is embedded * into a main window. Beware, as not all fields are used by both windows. */ -struct _invoice_window { - GladeXML * xml; +struct _invoice_window +{ + GladeXML * xml; - GtkWidget * dialog; /* Used by 'New Invoice Window' */ - GncPluginPage *page; /* Used by 'Edit Invoice' Page */ + GtkWidget * dialog; /* Used by 'New Invoice Window' */ + GncPluginPage *page; /* Used by 'Edit Invoice' Page */ - /* Summary Bar Widgets */ - GtkWidget * total_label; - GtkWidget * total_cash_label; - GtkWidget * total_charge_label; - GtkWidget * total_subtotal_label; - GtkWidget * total_tax_label; + /* Summary Bar Widgets */ + GtkWidget * total_label; + GtkWidget * total_cash_label; + GtkWidget * total_charge_label; + GtkWidget * total_subtotal_label; + GtkWidget * total_tax_label; - /* Data Widgets */ - GtkWidget * id_entry; - GtkWidget * notes_text; - GtkWidget * opened_date; - GtkWidget * posted_date_hbox; - GtkWidget * posted_date; - GtkWidget * active_check; + /* Data Widgets */ + GtkWidget * id_entry; + GtkWidget * notes_text; + GtkWidget * opened_date; + GtkWidget * posted_date_hbox; + GtkWidget * posted_date; + GtkWidget * active_check; - GtkWidget * owner_box; - GtkWidget * owner_label; - GtkWidget * owner_choice; - GtkWidget * job_label; - GtkWidget * job_box; - GtkWidget * job_choice; - GtkWidget * billing_id_entry; - GtkWidget * terms_menu; + GtkWidget * owner_box; + GtkWidget * owner_label; + GtkWidget * owner_choice; + GtkWidget * job_label; + GtkWidget * job_box; + GtkWidget * job_choice; + GtkWidget * billing_id_entry; + GtkWidget * terms_menu; - /* Project Widgets (used for Bills only) */ - GtkWidget * proj_frame; - GtkWidget * proj_cust_box; - GtkWidget * proj_cust_choice; - GtkWidget * proj_job_box; - GtkWidget * proj_job_choice; + /* Project Widgets (used for Bills only) */ + GtkWidget * proj_frame; + GtkWidget * proj_cust_box; + GtkWidget * proj_cust_choice; + GtkWidget * proj_job_box; + GtkWidget * proj_job_choice; - /* Exp Voucher Widgets */ - GtkWidget * to_charge_frame; - GtkWidget * to_charge_edit; + /* Exp Voucher Widgets */ + GtkWidget * to_charge_frame; + GtkWidget * to_charge_edit; - gint width; + gint width; - GncBillTerm * terms; - GnucashRegister * reg; - GncEntryLedger * ledger; + GncBillTerm * terms; + GnucashRegister * reg; + GncEntryLedger * ledger; - invoice_sort_type_t last_sort; + invoice_sort_type_t last_sort; - InvoiceDialogType dialog_type; - GUID invoice_guid; - gint component_id; - QofBook * book; - GncInvoice * created_invoice; - GncOwner owner; - GncOwner job; + InvoiceDialogType dialog_type; + GUID invoice_guid; + gint component_id; + QofBook * book; + GncInvoice * created_invoice; + GncOwner owner; + GncOwner job; - GncOwner proj_cust; - GncOwner proj_job; + GncOwner proj_cust; + GncOwner proj_job; - /* for Unposting */ - gboolean reset_tax_tables; + /* for Unposting */ + gboolean reset_tax_tables; }; /* Forward definitions for CB functions */ @@ -202,17 +204,17 @@ static InvoiceWindow * gnc_ui_invoice_modify (GncInvoice *invoice); static GtkWidget * iw_get_window (InvoiceWindow *iw) { - if (iw->page) - return gnc_plugin_page_get_window(iw->page); - return iw->dialog; + if (iw->page) + return gnc_plugin_page_get_window(iw->page); + return iw->dialog; } GtkWidget * gnc_invoice_get_register(InvoiceWindow *iw) { - if (iw) - return (GtkWidget *)iw->reg; - return NULL; + if (iw) + return (GtkWidget *)iw->reg; + return NULL; } /*******************************************************************************/ @@ -221,38 +223,39 @@ gnc_invoice_get_register(InvoiceWindow *iw) static gboolean iw_ask_unpost (InvoiceWindow *iw) { - GtkWidget *dialog, *toggle, *pixmap; - GladeXML *xml; - gint response; - char *s; + GtkWidget *dialog, *toggle, *pixmap; + GladeXML *xml; + gint response; + char *s; - xml = gnc_glade_xml_new ("invoice.glade", "Unpost Message Dialog"); - dialog = glade_xml_get_widget (xml, "Unpost Message Dialog"); - toggle = glade_xml_get_widget (xml, "yes_tt_reset"); - pixmap = glade_xml_get_widget (xml, "q_pixmap"); + xml = gnc_glade_xml_new ("invoice.glade", "Unpost Message Dialog"); + dialog = glade_xml_get_widget (xml, "Unpost Message Dialog"); + toggle = glade_xml_get_widget (xml, "yes_tt_reset"); + pixmap = glade_xml_get_widget (xml, "q_pixmap"); - gtk_window_set_transient_for (GTK_WINDOW(dialog), - GTK_WINDOW(iw_get_window(iw))); + gtk_window_set_transient_for (GTK_WINDOW(dialog), + GTK_WINDOW(iw_get_window(iw))); - iw->reset_tax_tables = FALSE; + iw->reset_tax_tables = FALSE; - s = gnome_program_locate_file (NULL, - GNOME_FILE_DOMAIN_PIXMAP, - "gnome-question.png", TRUE, NULL); - if (s) { - pixmap = gtk_image_new_from_file(s); - g_free(s); - } + s = gnome_program_locate_file (NULL, + GNOME_FILE_DOMAIN_PIXMAP, + "gnome-question.png", TRUE, NULL); + if (s) + { + pixmap = gtk_image_new_from_file(s); + g_free(s); + } - gtk_widget_show_all(dialog); + gtk_widget_show_all(dialog); - response = gtk_dialog_run(GTK_DIALOG(dialog)); - if (response == GTK_RESPONSE_OK) - iw->reset_tax_tables = - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle)); + response = gtk_dialog_run(GTK_DIALOG(dialog)); + if (response == GTK_RESPONSE_OK) + iw->reset_tax_tables = + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle)); - gtk_widget_destroy(dialog); - return (response == GTK_RESPONSE_OK); + gtk_widget_destroy(dialog); + return (response == GTK_RESPONSE_OK); } /*******************************************************************************/ @@ -261,632 +264,648 @@ iw_ask_unpost (InvoiceWindow *iw) static GncInvoice * iw_get_invoice (InvoiceWindow *iw) { - if (!iw) - return NULL; + if (!iw) + return NULL; - return gncInvoiceLookup (iw->book, &iw->invoice_guid); + return gncInvoiceLookup (iw->book, &iw->invoice_guid); } static void gnc_ui_to_invoice (InvoiceWindow *iw, GncInvoice *invoice) { - GtkTextBuffer* text_buffer; - GtkTextIter start, end; - gchar *text; - Timespec ts; + GtkTextBuffer* text_buffer; + GtkTextIter start, end; + gchar *text; + Timespec ts; - if (iw->dialog_type == VIEW_INVOICE) - return; + if (iw->dialog_type == VIEW_INVOICE) + return; - gnc_suspend_gui_refresh (); + gnc_suspend_gui_refresh (); - gncInvoiceBeginEdit (invoice); + gncInvoiceBeginEdit (invoice); - if (iw->active_check) - gncInvoiceSetActive (invoice, gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (iw->active_check))); + if (iw->active_check) + gncInvoiceSetActive (invoice, gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON (iw->active_check))); - text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(iw->notes_text)); - gtk_text_buffer_get_bounds (text_buffer, &start, &end); - text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE); - gncInvoiceSetNotes (invoice, text); + text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(iw->notes_text)); + gtk_text_buffer_get_bounds (text_buffer, &start, &end); + text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE); + gncInvoiceSetNotes (invoice, text); - if (iw->to_charge_edit) - gncInvoiceSetToChargeAmount (invoice, - gnc_amount_edit_get_amount - (GNC_AMOUNT_EDIT (iw->to_charge_edit))); + if (iw->to_charge_edit) + gncInvoiceSetToChargeAmount (invoice, + gnc_amount_edit_get_amount + (GNC_AMOUNT_EDIT (iw->to_charge_edit))); - /* Only set these values for NEW/MOD INVOICE types */ - if (iw->dialog_type != EDIT_INVOICE) { - gncInvoiceSetID (invoice, gtk_editable_get_chars - (GTK_EDITABLE (iw->id_entry), 0, -1)); - gncInvoiceSetBillingID (invoice, gtk_editable_get_chars - (GTK_EDITABLE (iw->billing_id_entry), 0, -1)); - gncInvoiceSetTerms (invoice, iw->terms); + /* Only set these values for NEW/MOD INVOICE types */ + if (iw->dialog_type != EDIT_INVOICE) + { + gncInvoiceSetID (invoice, gtk_editable_get_chars + (GTK_EDITABLE (iw->id_entry), 0, -1)); + gncInvoiceSetBillingID (invoice, gtk_editable_get_chars + (GTK_EDITABLE (iw->billing_id_entry), 0, -1)); + gncInvoiceSetTerms (invoice, iw->terms); - ts = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (iw->opened_date)); - gncInvoiceSetDateOpened (invoice, ts); + ts = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (iw->opened_date)); + gncInvoiceSetDateOpened (invoice, ts); - gnc_owner_get_owner (iw->owner_choice, &(iw->owner)); - if (iw->job_choice) - gnc_owner_get_owner (iw->job_choice, &(iw->job)); + gnc_owner_get_owner (iw->owner_choice, &(iw->owner)); + if (iw->job_choice) + gnc_owner_get_owner (iw->job_choice, &(iw->job)); - /* Only set the job if we've actually got one */ - if (gncOwnerGetJob (&(iw->job))) - gncInvoiceSetOwner (invoice, &(iw->job)); - else - gncInvoiceSetOwner (invoice, &(iw->owner)); + /* Only set the job if we've actually got one */ + if (gncOwnerGetJob (&(iw->job))) + gncInvoiceSetOwner (invoice, &(iw->job)); + else + gncInvoiceSetOwner (invoice, &(iw->owner)); - /* Set the invoice currency based on the owner */ - gncInvoiceSetCurrency (invoice, gncOwnerGetCurrency (&iw->owner)); + /* Set the invoice currency based on the owner */ + gncInvoiceSetCurrency (invoice, gncOwnerGetCurrency (&iw->owner)); - /* Only set the BillTo if we've actually got one */ - if (gncOwnerGetJob (&iw->proj_job)) - gncInvoiceSetBillTo (invoice, &iw->proj_job); - else - gncInvoiceSetBillTo (invoice, &iw->proj_cust); - } + /* Only set the BillTo if we've actually got one */ + if (gncOwnerGetJob (&iw->proj_job)) + gncInvoiceSetBillTo (invoice, &iw->proj_job); + else + gncInvoiceSetBillTo (invoice, &iw->proj_cust); + } - gncInvoiceCommitEdit (invoice); - gnc_resume_gui_refresh (); + gncInvoiceCommitEdit (invoice); + gnc_resume_gui_refresh (); } static gboolean gnc_invoice_window_verify_ok (InvoiceWindow *iw) { - const char *res; - gchar *string; + const char *res; + gchar *string; - /* save the current entry in the ledger? */ - if (!gnc_entry_ledger_check_close (iw_get_window(iw), iw->ledger)) - return FALSE; + /* save the current entry in the ledger? */ + if (!gnc_entry_ledger_check_close (iw_get_window(iw), iw->ledger)) + return FALSE; - /* Check the Owner */ - gnc_owner_get_owner (iw->owner_choice, &(iw->owner)); - res = gncOwnerGetName (&(iw->owner)); - if (res == NULL || safe_strcmp (res, "") == 0) { - gnc_error_dialog (iw_get_window(iw), "%s", - /* Translators: In this context, - * 'Billing information' maps to the - * label in the frame and means - * e.g. customer i.e. the company being - * invoiced. */ - _("You need to supply Billing Information.")); - return FALSE; - } + /* Check the Owner */ + gnc_owner_get_owner (iw->owner_choice, &(iw->owner)); + res = gncOwnerGetName (&(iw->owner)); + if (res == NULL || safe_strcmp (res, "") == 0) + { + gnc_error_dialog (iw_get_window(iw), "%s", + /* Translators: In this context, + * 'Billing information' maps to the + * label in the frame and means + * e.g. customer i.e. the company being + * invoiced. */ + _("You need to supply Billing Information.")); + return FALSE; + } - /* Check the ID; set one if necessary */ - res = gtk_entry_get_text (GTK_ENTRY (iw->id_entry)); - if (safe_strcmp (res, "") == 0) { - /* Invoices and bills have separate counters. - Therefore we pass the GncOwer to gncInvoiceNextID - so it knows whether we are creating a bill - or an invoice. */ - string = g_strdup_printf ("%.6" G_GINT64_FORMAT, - gncInvoiceNextID(iw->book, &(iw->owner))); - gtk_entry_set_text (GTK_ENTRY (iw->id_entry), string); - g_free(string); - } + /* Check the ID; set one if necessary */ + res = gtk_entry_get_text (GTK_ENTRY (iw->id_entry)); + if (safe_strcmp (res, "") == 0) + { + /* Invoices and bills have separate counters. + Therefore we pass the GncOwer to gncInvoiceNextID + so it knows whether we are creating a bill + or an invoice. */ + string = g_strdup_printf ("%.6" G_GINT64_FORMAT, + gncInvoiceNextID(iw->book, &(iw->owner))); + gtk_entry_set_text (GTK_ENTRY (iw->id_entry), string); + g_free(string); + } - return TRUE; + return TRUE; } static gboolean gnc_invoice_window_ok_save (InvoiceWindow *iw) { - if (!gnc_invoice_window_verify_ok (iw)) - return FALSE; + if (!gnc_invoice_window_verify_ok (iw)) + return FALSE; - { - GncInvoice *invoice = iw_get_invoice (iw); - if (invoice) { - gnc_ui_to_invoice (iw, invoice); + { + GncInvoice *invoice = iw_get_invoice (iw); + if (invoice) + { + gnc_ui_to_invoice (iw, invoice); + } + /* Save the invoice to return it later. */ + iw->created_invoice = invoice; } - /* Save the invoice to return it later. */ - iw->created_invoice = invoice; - } - return TRUE; + return TRUE; } void gnc_invoice_window_ok_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; + InvoiceWindow *iw = data; - if (!gnc_invoice_window_ok_save (iw)) - return; + if (!gnc_invoice_window_ok_save (iw)) + return; - /* Ok, we don't need this anymore */ - iw->invoice_guid = *xaccGUIDNULL (); + /* Ok, we don't need this anymore */ + iw->invoice_guid = *xaccGUIDNULL (); - /* if this is a NEW_INVOICE, and created_invoice is NON-NULL, the - * open up a new window with the invoice. This used to be done - * in gnc_ui_invoice_new() but cannot be done anymore - */ - if (iw->dialog_type == NEW_INVOICE && iw->created_invoice) - gnc_ui_invoice_edit (iw->created_invoice); + /* if this is a NEW_INVOICE, and created_invoice is NON-NULL, the + * open up a new window with the invoice. This used to be done + * in gnc_ui_invoice_new() but cannot be done anymore + */ + if (iw->dialog_type == NEW_INVOICE && iw->created_invoice) + gnc_ui_invoice_edit (iw->created_invoice); - gnc_close_gui_component (iw->component_id); + gnc_close_gui_component (iw->component_id); } void gnc_invoice_window_cancel_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; + InvoiceWindow *iw = data; - gnc_close_gui_component (iw->component_id); + gnc_close_gui_component (iw->component_id); } void gnc_invoice_window_help_cb (GtkWidget *widget, gpointer data) { - gnc_gnome_help(HF_HELP, HL_USAGE); + gnc_gnome_help(HF_HELP, HL_USAGE); } void gnc_invoice_window_destroy_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncInvoice *invoice = iw_get_invoice (iw); + InvoiceWindow *iw = data; + GncInvoice *invoice = iw_get_invoice (iw); - gnc_suspend_gui_refresh (); + gnc_suspend_gui_refresh (); - if (iw->dialog_type == NEW_INVOICE && invoice != NULL) { - gncInvoiceBeginEdit (invoice); - gncInvoiceDestroy (invoice); - iw->invoice_guid = *xaccGUIDNULL (); - } + if (iw->dialog_type == NEW_INVOICE && invoice != NULL) + { + gncInvoiceBeginEdit (invoice); + gncInvoiceDestroy (invoice); + iw->invoice_guid = *xaccGUIDNULL (); + } - gnc_entry_ledger_destroy (iw->ledger); - gnc_unregister_gui_component (iw->component_id); - gtk_widget_destroy(widget); - gnc_resume_gui_refresh (); + gnc_entry_ledger_destroy (iw->ledger); + gnc_unregister_gui_component (iw->component_id); + gtk_widget_destroy(widget); + gnc_resume_gui_refresh (); - g_free (iw); + g_free (iw); } void gnc_invoice_window_closeCB (GtkWidget *widget, gpointer data) { - gnc_invoice_window_ok_cb (widget, data); + gnc_invoice_window_ok_cb (widget, data); } void gnc_invoice_window_editCB (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncInvoice *invoice = iw_get_invoice (iw); + InvoiceWindow *iw = data; + GncInvoice *invoice = iw_get_invoice (iw); - if (invoice) - gnc_ui_invoice_modify (invoice); + if (invoice) + gnc_ui_invoice_modify (invoice); } void gnc_invoice_window_recordCB (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; + InvoiceWindow *iw = data; - if (!iw || !iw->ledger) - return; + if (!iw || !iw->ledger) + return; - if (!gnc_entry_ledger_commit_entry (iw->ledger)) - return; + if (!gnc_entry_ledger_commit_entry (iw->ledger)) + return; - gnucash_register_goto_next_virt_row (iw->reg); + gnucash_register_goto_next_virt_row (iw->reg); } void gnc_invoice_window_cancelCB (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; + InvoiceWindow *iw = data; - if (!iw || !iw->ledger) - return; + if (!iw || !iw->ledger) + return; - gnc_entry_ledger_cancel_cursor_changes (iw->ledger); + gnc_entry_ledger_cancel_cursor_changes (iw->ledger); } void gnc_invoice_window_deleteCB (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncEntry *entry; + InvoiceWindow *iw = data; + GncEntry *entry; - if (!iw || !iw->ledger) + if (!iw || !iw->ledger) + return; + + /* get the current entry based on cursor position */ + entry = gnc_entry_ledger_get_current_entry (iw->ledger); + if (!entry) + { + gnc_entry_ledger_cancel_cursor_changes (iw->ledger); + return; + } + + /* deleting the blank entry just cancels */ + if (entry == gnc_entry_ledger_get_blank_entry (iw->ledger)) + { + gnc_entry_ledger_cancel_cursor_changes (iw->ledger); + return; + } + + /* Verify that the user really wants to delete this entry */ + { + const char *message = _("Are you sure you want to delete the " + "selected entry?"); + const char *order_warn = _("This entry is attached to an order and " + "will be deleted from that as well!"); + char *msg; + gboolean result; + + if (gncEntryGetOrder (entry)) + msg = g_strconcat (message, "\n\n", order_warn, (char *)NULL); + else + msg = g_strdup (message); + + result = gnc_verify_dialog (iw_get_window(iw), FALSE, "%s", msg); + g_free (msg); + + if (!result) + return; + } + + /* Yep, let's delete */ + gnc_entry_ledger_delete_current_entry (iw->ledger); return; - - /* get the current entry based on cursor position */ - entry = gnc_entry_ledger_get_current_entry (iw->ledger); - if (!entry) { - gnc_entry_ledger_cancel_cursor_changes (iw->ledger); - return; - } - - /* deleting the blank entry just cancels */ - if (entry == gnc_entry_ledger_get_blank_entry (iw->ledger)) { - gnc_entry_ledger_cancel_cursor_changes (iw->ledger); - return; - } - - /* Verify that the user really wants to delete this entry */ - { - const char *message = _("Are you sure you want to delete the " - "selected entry?"); - const char *order_warn = _("This entry is attached to an order and " - "will be deleted from that as well!"); - char *msg; - gboolean result; - - if (gncEntryGetOrder (entry)) - msg = g_strconcat (message, "\n\n", order_warn, (char *)NULL); - else - msg = g_strdup (message); - - result = gnc_verify_dialog (iw_get_window(iw), FALSE, "%s", msg); - g_free (msg); - - if (!result) - return; - } - - /* Yep, let's delete */ - gnc_entry_ledger_delete_current_entry (iw->ledger); - return; } void gnc_invoice_window_duplicateCB (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; + InvoiceWindow *iw = data; - if (!iw || !iw->ledger) - return; + if (!iw || !iw->ledger) + return; - gnc_entry_ledger_duplicate_current_entry (iw->ledger); + gnc_entry_ledger_duplicate_current_entry (iw->ledger); } void gnc_invoice_window_blankCB (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; + InvoiceWindow *iw = data; - if (!iw || !iw->ledger) - return; + if (!iw || !iw->ledger) + return; - if (!gnc_entry_ledger_commit_entry (iw->ledger)) - return; + if (!gnc_entry_ledger_commit_entry (iw->ledger)) + return; - { - VirtualCellLocation vcell_loc; - GncEntry *blank; + { + VirtualCellLocation vcell_loc; + GncEntry *blank; - blank = gnc_entry_ledger_get_blank_entry (iw->ledger); - if (blank == NULL) - return; + blank = gnc_entry_ledger_get_blank_entry (iw->ledger); + if (blank == NULL) + return; - if (gnc_entry_ledger_get_entry_virt_loc (iw->ledger, blank, &vcell_loc)) - gnucash_register_goto_virt_cell (iw->reg, vcell_loc); - } + if (gnc_entry_ledger_get_entry_virt_loc (iw->ledger, blank, &vcell_loc)) + gnucash_register_goto_virt_cell (iw->reg, vcell_loc); + } } void gnc_invoice_window_printCB (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncInvoice *invoice = iw_get_invoice (iw); - SCM func, arg; - SCM args = SCM_EOL; - int report_id; + InvoiceWindow *iw = data; + GncInvoice *invoice = iw_get_invoice (iw); + SCM func, arg; + SCM args = SCM_EOL; + int report_id; - g_return_if_fail (invoice); + g_return_if_fail (invoice); - func = scm_c_eval_string ("gnc:invoice-report-create"); - g_return_if_fail (scm_is_procedure (func)); + func = scm_c_eval_string ("gnc:invoice-report-create"); + g_return_if_fail (scm_is_procedure (func)); - arg = SWIG_NewPointerObj(invoice, SWIG_TypeQuery("_p__gncInvoice"), 0); - args = scm_cons (arg, args); + arg = SWIG_NewPointerObj(invoice, SWIG_TypeQuery("_p__gncInvoice"), 0); + args = scm_cons (arg, args); - /* scm_gc_protect_object(func); */ + /* scm_gc_protect_object(func); */ - arg = scm_apply (func, args, SCM_EOL); - g_return_if_fail (scm_is_exact (arg)); - report_id = scm_num2int (arg, SCM_ARG1, G_STRFUNC); + arg = scm_apply (func, args, SCM_EOL); + g_return_if_fail (scm_is_exact (arg)); + report_id = scm_num2int (arg, SCM_ARG1, G_STRFUNC); - /* scm_gc_unprotect_object(func); */ - if (report_id >= 0) - reportWindow (report_id); + /* scm_gc_unprotect_object(func); */ + if (report_id >= 0) + reportWindow (report_id); } void gnc_invoice_window_postCB (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncInvoice *invoice; - char *message, *memo, *ddue_label, *post_label, *acct_label, *question_label; - Account *acc = NULL; - GList * acct_types = NULL; - GList * acct_commodities = NULL; - Timespec ddue, postdate; - gboolean accumulate; - QofInstance *owner_inst; - KvpFrame *kvpf; - KvpValue *kvp_val; - const char *text; - EntryList *entries; - GncEntry* entry; - gboolean reverse; - gboolean show_dialog=TRUE; + InvoiceWindow *iw = data; + GncInvoice *invoice; + char *message, *memo, *ddue_label, *post_label, *acct_label, *question_label; + Account *acc = NULL; + GList * acct_types = NULL; + GList * acct_commodities = NULL; + Timespec ddue, postdate; + gboolean accumulate; + QofInstance *owner_inst; + KvpFrame *kvpf; + KvpValue *kvp_val; + const char *text; + EntryList *entries; + GncEntry* entry; + gboolean reverse; + gboolean show_dialog = TRUE; - /* Make sure the invoice is ok */ - if (!gnc_invoice_window_verify_ok (iw)) - return; + /* Make sure the invoice is ok */ + if (!gnc_invoice_window_verify_ok (iw)) + return; - invoice = iw_get_invoice (iw); - if (!invoice) - return; + invoice = iw_get_invoice (iw); + if (!invoice) + return; - /* Check that there is at least one Entry */ - invoice = iw_get_invoice (iw); - if (gncInvoiceGetEntries (invoice) == NULL) { - gnc_error_dialog (iw_get_window(iw), "%s", - _("The Invoice must have at least one Entry.")); - return; - } - - reverse = (gncInvoiceGetOwnerType (invoice) == GNC_OWNER_CUSTOMER); - - /* Make sure that the invoice has a positive balance */ - if (gnc_numeric_negative_p(gncInvoiceGetTotal(invoice))) { - gnc_error_dialog(iw_get_window(iw), "%s", - _("You may not post an invoice with a negative total value.")); - return; - } - - if (iw->total_cash_label && - gnc_numeric_negative_p(gncInvoiceGetTotalOf(invoice, GNC_PAYMENT_CASH))) { - gnc_error_dialog(iw_get_window(iw), "%s", - _("You may not post an expense voucher with a negative total cash value.")); - return; - } - - /* Ok, we can post this invoice. Ask for verification, set the due date, - * post date, and posted account - */ - message = _("Do you really want to post the invoice?"); - ddue_label = _("Due Date"); - post_label = _("Post Date"); - acct_label = _("Post to Account"); - question_label = _("Accumulate Splits?"); - - /* Determine the type of account to post to */ - acct_types = gnc_business_account_types (&(iw->owner)); - - /* Determine which commodity we're working with */ - acct_commodities = gnc_business_commodities(&(iw->owner)); - - /* Get the due date and posted account */ - timespecFromTime_t (&postdate, time(NULL)); - ddue = postdate; - memo = NULL; - - owner_inst = qofOwnerGetOwner (gncOwnerGetEndOwner (&(iw->owner))); - kvpf = qof_instance_get_slots (owner_inst); - acc = xaccAccountLookup (kvp_frame_get_guid (kvpf, LAST_POSTED_TO_ACCT), - iw->book); - - /* Get the default for the accumulate option */ - accumulate = gnc_gconf_get_bool(GCONF_SECTION_INVOICE, "accumulate_splits", NULL); - - if (!gnc_dialog_dates_acct_question_parented (iw_get_window(iw), message, ddue_label, - post_label, acct_label, question_label, TRUE, TRUE, - acct_types, acct_commodities, iw->book, iw->terms, - &ddue, &postdate, &memo, &acc, &accumulate)) - return; - - /* Yep, we're posting. So, save the invoice... - * Note that we can safely ignore the return value; we checked - * the verify_ok earlier, so we know it's ok. - */ - gnc_suspend_gui_refresh (); - gncInvoiceBeginEdit (invoice); - gnc_invoice_window_ok_save (iw); - - /* Fill in the conversion prices with feedback from the user */ - text = _("One or more of the entries are for accounts different from the invoice/bill currency. You will be asked a conversion rate for each."); - - for (entries=gncInvoiceGetEntries(invoice); entries != NULL; entries=g_list_next(entries)) - { - Account *this_acc; - - entry = (GncEntry*)entries->data; - this_acc = (reverse ? gncEntryGetInvAccount (entry) : - gncEntryGetBillAccount (entry)); - - if (!gnc_commodity_equal(gncInvoiceGetCurrency (invoice), xaccAccountGetCommodity(this_acc))) + /* Check that there is at least one Entry */ + invoice = iw_get_invoice (iw); + if (gncInvoiceGetEntries (invoice) == NULL) { - GNCPrice *convprice; - - if (show_dialog) - { - gnc_info_dialog(iw_get_window(iw), "%s", text); - show_dialog=FALSE; - } - - convprice = gncInvoiceGetPrice(invoice, xaccAccountGetCommodity(this_acc)); - if (convprice == NULL) - { - XferDialog *xfer; - gnc_numeric exch_rate; - Timespec date; - gnc_numeric amount = gnc_numeric_create(1,1); - - - /* create the exchange-rate dialog */ - xfer = gnc_xfer_dialog (iw_get_window(iw), this_acc); - gnc_xfer_dialog_select_to_account(xfer,acc); - gnc_xfer_dialog_set_amount(xfer, amount); - - /* All we want is the exchange rate so prevent the user from thinking - it makes sense to mess with other stuff */ - gnc_xfer_dialog_set_from_show_button_active(xfer, FALSE); - gnc_xfer_dialog_set_to_show_button_active(xfer, FALSE); - gnc_xfer_dialog_hide_from_account_tree(xfer); - gnc_xfer_dialog_hide_to_account_tree(xfer); - gnc_xfer_dialog_is_exchange_dialog(xfer, &exch_rate); - gnc_xfer_dialog_run_until_done(xfer); - - convprice = gnc_price_create(iw->book); - gnc_price_begin_edit (convprice); - gnc_price_set_commodity (convprice, xaccAccountGetCommodity(this_acc)); - gnc_price_set_currency (convprice, gncInvoiceGetCurrency (invoice)); - date.tv_sec = time (NULL); - date.tv_nsec = 0; - gnc_price_set_time (convprice, date); - gnc_price_set_source (convprice, "user:invoice-post"); - - /* Yes, magic strings are evil but I can't find any defined constants - for this..*/ - gnc_price_set_typestr (convprice, "last"); - gnc_price_set_value (convprice, exch_rate); - gncInvoiceAddPrice(invoice, convprice); - gnc_price_commit_edit (convprice); - } + gnc_error_dialog (iw_get_window(iw), "%s", + _("The Invoice must have at least one Entry.")); + return; } - } + + reverse = (gncInvoiceGetOwnerType (invoice) == GNC_OWNER_CUSTOMER); + + /* Make sure that the invoice has a positive balance */ + if (gnc_numeric_negative_p(gncInvoiceGetTotal(invoice))) + { + gnc_error_dialog(iw_get_window(iw), "%s", + _("You may not post an invoice with a negative total value.")); + return; + } + + if (iw->total_cash_label && + gnc_numeric_negative_p(gncInvoiceGetTotalOf(invoice, GNC_PAYMENT_CASH))) + { + gnc_error_dialog(iw_get_window(iw), "%s", + _("You may not post an expense voucher with a negative total cash value.")); + return; + } + + /* Ok, we can post this invoice. Ask for verification, set the due date, + * post date, and posted account + */ + message = _("Do you really want to post the invoice?"); + ddue_label = _("Due Date"); + post_label = _("Post Date"); + acct_label = _("Post to Account"); + question_label = _("Accumulate Splits?"); + + /* Determine the type of account to post to */ + acct_types = gnc_business_account_types (&(iw->owner)); + + /* Determine which commodity we're working with */ + acct_commodities = gnc_business_commodities(&(iw->owner)); + + /* Get the due date and posted account */ + timespecFromTime_t (&postdate, time(NULL)); + ddue = postdate; + memo = NULL; + + owner_inst = qofOwnerGetOwner (gncOwnerGetEndOwner (&(iw->owner))); + kvpf = qof_instance_get_slots (owner_inst); + acc = xaccAccountLookup (kvp_frame_get_guid (kvpf, LAST_POSTED_TO_ACCT), + iw->book); + + /* Get the default for the accumulate option */ + accumulate = gnc_gconf_get_bool(GCONF_SECTION_INVOICE, "accumulate_splits", NULL); + + if (!gnc_dialog_dates_acct_question_parented (iw_get_window(iw), message, ddue_label, + post_label, acct_label, question_label, TRUE, TRUE, + acct_types, acct_commodities, iw->book, iw->terms, + &ddue, &postdate, &memo, &acc, &accumulate)) + return; + + /* Yep, we're posting. So, save the invoice... + * Note that we can safely ignore the return value; we checked + * the verify_ok earlier, so we know it's ok. + */ + gnc_suspend_gui_refresh (); + gncInvoiceBeginEdit (invoice); + gnc_invoice_window_ok_save (iw); + + /* Fill in the conversion prices with feedback from the user */ + text = _("One or more of the entries are for accounts different from the invoice/bill currency. You will be asked a conversion rate for each."); + + for (entries = gncInvoiceGetEntries(invoice); entries != NULL; entries = g_list_next(entries)) + { + Account *this_acc; + + entry = (GncEntry*)entries->data; + this_acc = (reverse ? gncEntryGetInvAccount (entry) : + gncEntryGetBillAccount (entry)); + + if (!gnc_commodity_equal(gncInvoiceGetCurrency (invoice), xaccAccountGetCommodity(this_acc))) + { + GNCPrice *convprice; + + if (show_dialog) + { + gnc_info_dialog(iw_get_window(iw), "%s", text); + show_dialog = FALSE; + } + + convprice = gncInvoiceGetPrice(invoice, xaccAccountGetCommodity(this_acc)); + if (convprice == NULL) + { + XferDialog *xfer; + gnc_numeric exch_rate; + Timespec date; + gnc_numeric amount = gnc_numeric_create(1, 1); - /* Save acc as last used account in the kvp frame of the invoice owner */ - kvp_val = kvp_value_new_guid (qof_instance_get_guid (QOF_INSTANCE (acc)));; - qof_begin_edit (owner_inst); - kvp_frame_set_slot_nc (kvpf, LAST_POSTED_TO_ACCT, kvp_val); - qof_instance_set_dirty (owner_inst); - qof_commit_edit (owner_inst); + /* create the exchange-rate dialog */ + xfer = gnc_xfer_dialog (iw_get_window(iw), this_acc); + gnc_xfer_dialog_select_to_account(xfer, acc); + gnc_xfer_dialog_set_amount(xfer, amount); - /* ... post it; post date is set to now ... */ - gncInvoicePostToAccount (invoice, acc, &postdate, &ddue, memo, accumulate); - gncInvoiceCommitEdit (invoice); - gnc_resume_gui_refresh (); + /* All we want is the exchange rate so prevent the user from thinking + it makes sense to mess with other stuff */ + gnc_xfer_dialog_set_from_show_button_active(xfer, FALSE); + gnc_xfer_dialog_set_to_show_button_active(xfer, FALSE); + gnc_xfer_dialog_hide_from_account_tree(xfer); + gnc_xfer_dialog_hide_to_account_tree(xfer); + gnc_xfer_dialog_is_exchange_dialog(xfer, &exch_rate); + gnc_xfer_dialog_run_until_done(xfer); - if (memo) - g_free (memo); + convprice = gnc_price_create(iw->book); + gnc_price_begin_edit (convprice); + gnc_price_set_commodity (convprice, xaccAccountGetCommodity(this_acc)); + gnc_price_set_currency (convprice, gncInvoiceGetCurrency (invoice)); + date.tv_sec = time (NULL); + date.tv_nsec = 0; + gnc_price_set_time (convprice, date); + gnc_price_set_source (convprice, "user:invoice-post"); - /* Reset the type; change to read-only! */ - iw->dialog_type = VIEW_INVOICE; - gnc_entry_ledger_set_readonly (iw->ledger, TRUE); + /* Yes, magic strings are evil but I can't find any defined constants + for this..*/ + gnc_price_set_typestr (convprice, "last"); + gnc_price_set_value (convprice, exch_rate); + gncInvoiceAddPrice(invoice, convprice); + gnc_price_commit_edit (convprice); + } + } + } - /* ... and redisplay here. */ - gnc_invoice_update_window (iw, NULL); - gnc_table_refresh_gui (gnc_entry_ledger_get_table (iw->ledger), FALSE); + + /* Save acc as last used account in the kvp frame of the invoice owner */ + kvp_val = kvp_value_new_guid (qof_instance_get_guid (QOF_INSTANCE (acc)));; + qof_begin_edit (owner_inst); + kvp_frame_set_slot_nc (kvpf, LAST_POSTED_TO_ACCT, kvp_val); + qof_instance_set_dirty (owner_inst); + qof_commit_edit (owner_inst); + + /* ... post it; post date is set to now ... */ + gncInvoicePostToAccount (invoice, acc, &postdate, &ddue, memo, accumulate); + gncInvoiceCommitEdit (invoice); + gnc_resume_gui_refresh (); + + if (memo) + g_free (memo); + + /* Reset the type; change to read-only! */ + iw->dialog_type = VIEW_INVOICE; + gnc_entry_ledger_set_readonly (iw->ledger, TRUE); + + /* ... and redisplay here. */ + gnc_invoice_update_window (iw, NULL); + gnc_table_refresh_gui (gnc_entry_ledger_get_table (iw->ledger), FALSE); } void gnc_invoice_window_unpostCB (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncInvoice *invoice; - gboolean result; + InvoiceWindow *iw = data; + GncInvoice *invoice; + gboolean result; - invoice = iw_get_invoice (iw); - if (!invoice) - return; + invoice = iw_get_invoice (iw); + if (!invoice) + return; - /* make sure the user REALLY wants to do this! */ - result = iw_ask_unpost(iw); - if (!result) return; + /* make sure the user REALLY wants to do this! */ + result = iw_ask_unpost(iw); + if (!result) return; - /* Attempt to unpost the invoice */ - gnc_suspend_gui_refresh (); - result = gncInvoiceUnpost (invoice, iw->reset_tax_tables); - gnc_resume_gui_refresh (); - if (!result) return; + /* Attempt to unpost the invoice */ + gnc_suspend_gui_refresh (); + result = gncInvoiceUnpost (invoice, iw->reset_tax_tables); + gnc_resume_gui_refresh (); + if (!result) return; - /* if we get here, we succeeded in unposting -- reset the ledger and redisplay */ - iw->dialog_type = EDIT_INVOICE; - gnc_entry_ledger_set_readonly (iw->ledger, FALSE); - gnc_invoice_update_window (iw, NULL); - gnc_table_refresh_gui (gnc_entry_ledger_get_table (iw->ledger), FALSE); + /* if we get here, we succeeded in unposting -- reset the ledger and redisplay */ + iw->dialog_type = EDIT_INVOICE; + gnc_entry_ledger_set_readonly (iw->ledger, FALSE); + gnc_invoice_update_window (iw, NULL); + gnc_table_refresh_gui (gnc_entry_ledger_get_table (iw->ledger), FALSE); } void gnc_invoice_window_cut_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - gnucash_register_cut_clipboard (iw->reg); + InvoiceWindow *iw = data; + gnucash_register_cut_clipboard (iw->reg); } void gnc_invoice_window_copy_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - gnucash_register_copy_clipboard (iw->reg); + InvoiceWindow *iw = data; + gnucash_register_copy_clipboard (iw->reg); } void gnc_invoice_window_paste_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - gnucash_register_paste_clipboard (iw->reg); + InvoiceWindow *iw = data; + gnucash_register_paste_clipboard (iw->reg); } void gnc_invoice_window_new_invoice_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - if (gncOwnerGetJob (&iw->job)) { - gnc_ui_invoice_new (&iw->job, iw->book); - } else { - gnc_ui_invoice_new (&iw->owner, iw->book); - } + InvoiceWindow *iw = data; + if (gncOwnerGetJob (&iw->job)) + { + gnc_ui_invoice_new (&iw->job, iw->book); + } + else + { + gnc_ui_invoice_new (&iw->owner, iw->book); + } } void gnc_business_call_owner_report (GncOwner *owner, Account *acc) { - int id; - SCM args; - SCM func; - SCM arg; + int id; + SCM args; + SCM func; + SCM arg; - g_return_if_fail (owner); + g_return_if_fail (owner); - args = SCM_EOL; + args = SCM_EOL; - func = scm_c_eval_string ("gnc:owner-report-create"); - g_return_if_fail (scm_is_procedure (func)); + func = scm_c_eval_string ("gnc:owner-report-create"); + g_return_if_fail (scm_is_procedure (func)); - if (acc) { - swig_type_info * qtype = SWIG_TypeQuery("_p_Account"); - g_return_if_fail (qtype); + if (acc) + { + swig_type_info * qtype = SWIG_TypeQuery("_p_Account"); + g_return_if_fail (qtype); - arg = SWIG_NewPointerObj(acc, qtype, 0); + arg = SWIG_NewPointerObj(acc, qtype, 0); + g_return_if_fail (arg != SCM_UNDEFINED); + args = scm_cons (arg, args); + } + else + { + args = scm_cons (SCM_BOOL_F, args); + } + + arg = SWIG_NewPointerObj(owner, SWIG_TypeQuery("_p__gncOwner"), 0); g_return_if_fail (arg != SCM_UNDEFINED); args = scm_cons (arg, args); - } else { - args = scm_cons (SCM_BOOL_F, args); - } - arg = SWIG_NewPointerObj(owner, SWIG_TypeQuery("_p__gncOwner"), 0); - g_return_if_fail (arg != SCM_UNDEFINED); - args = scm_cons (arg, args); + /* Apply the function to the args */ + arg = scm_apply (func, args, SCM_EOL); + g_return_if_fail (scm_is_exact (arg)); + id = scm_num2int (arg, SCM_ARG1, G_STRFUNC); - /* Apply the function to the args */ - arg = scm_apply (func, args, SCM_EOL); - g_return_if_fail (scm_is_exact (arg)); - id = scm_num2int (arg, SCM_ARG1, G_STRFUNC); - - if (id >= 0) - reportWindow (id); + if (id >= 0) + reportWindow (id); } void gnc_invoice_window_report_owner_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - gnc_business_call_owner_report (&iw->owner, NULL); + InvoiceWindow *iw = data; + gnc_business_call_owner_report (&iw->owner, NULL); } void gnc_invoice_window_payment_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncInvoice *invoice = iw_get_invoice(iw); + InvoiceWindow *iw = data; + GncInvoice *invoice = iw_get_invoice(iw); - if (gncOwnerGetJob (&iw->job)) - gnc_ui_payment_new_with_invoice (&iw->job, iw->book, invoice); - else - gnc_ui_payment_new_with_invoice (&iw->owner, iw->book, invoice); + if (gncOwnerGetJob (&iw->job)) + gnc_ui_payment_new_with_invoice (&iw->job, iw->book, invoice); + else + gnc_ui_payment_new_with_invoice (&iw->owner, iw->book, invoice); } /* Sorting callbacks */ @@ -894,48 +913,48 @@ void gnc_invoice_window_payment_cb (GtkWidget *widget, gpointer data) void gnc_invoice_window_sort (InvoiceWindow *iw, invoice_sort_type_t sort_code) { - QueryNew *query = gnc_entry_ledger_get_query (iw->ledger); - GSList *p1 = NULL, *p2 = NULL, *p3 = NULL, *standard; + QueryNew *query = gnc_entry_ledger_get_query (iw->ledger); + GSList *p1 = NULL, *p2 = NULL, *p3 = NULL, *standard; - if (iw->last_sort == sort_code) - return; + if (iw->last_sort == sort_code) + return; - standard = g_slist_prepend (NULL, QUERY_DEFAULT_SORT); + standard = g_slist_prepend (NULL, QUERY_DEFAULT_SORT); - switch (sort_code) - { + switch (sort_code) + { case BY_STANDARD: - p1 = standard; - break; + p1 = standard; + break; case BY_DATE: - p1 = g_slist_prepend (p1, ENTRY_DATE); - p2 = standard; - break; + p1 = g_slist_prepend (p1, ENTRY_DATE); + p2 = standard; + break; case BY_DATE_ENTERED: - p1 = g_slist_prepend (p1, ENTRY_DATE_ENTERED); - p2 = standard; - break; + p1 = g_slist_prepend (p1, ENTRY_DATE_ENTERED); + p2 = standard; + break; case BY_DESC: - p1 = g_slist_prepend (p1, ENTRY_DESC); - p2 = standard; - break; + p1 = g_slist_prepend (p1, ENTRY_DESC); + p2 = standard; + break; case BY_QTY: - p1 = g_slist_prepend (p1, ENTRY_QTY); - p2 = standard; - break; + p1 = g_slist_prepend (p1, ENTRY_QTY); + p2 = standard; + break; case BY_PRICE: - p1 = g_slist_prepend (p1, ((iw->owner.type == GNC_OWNER_CUSTOMER) ? - ENTRY_IPRICE : ENTRY_BPRICE)); - p2 = standard; - break; + p1 = g_slist_prepend (p1, ((iw->owner.type == GNC_OWNER_CUSTOMER) ? + ENTRY_IPRICE : ENTRY_BPRICE)); + p2 = standard; + break; default: - g_slist_free (standard); - g_return_if_fail (FALSE); - } + g_slist_free (standard); + g_return_if_fail (FALSE); + } - gncQuerySetSortOrder (query, p1, p2, p3); - iw->last_sort = sort_code; - gnc_entry_ledger_display_refresh (iw->ledger); + gncQuerySetSortOrder (query, p1, p2, p3); + iw->last_sort = sort_code; + gnc_entry_ledger_display_refresh (iw->ledger); } /* Window configuration callbacks */ @@ -943,486 +962,512 @@ gnc_invoice_window_sort (InvoiceWindow *iw, invoice_sort_type_t sort_code) void gnc_invoice_window_active_toggled_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncInvoice *invoice = iw_get_invoice(iw); + InvoiceWindow *iw = data; + GncInvoice *invoice = iw_get_invoice(iw); - if (!invoice) return; + if (!invoice) return; - gncInvoiceSetActive (invoice, - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))); + gncInvoiceSetActive (invoice, + gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))); } gboolean gnc_invoice_window_leave_notes_cb (GtkWidget *widget, GdkEventFocus *event, - gpointer data) + gpointer data) { - InvoiceWindow *iw = data; - GncInvoice *invoice = iw_get_invoice(iw); - GtkTextBuffer* text_buffer; - GtkTextIter start, end; - gchar *text; + InvoiceWindow *iw = data; + GncInvoice *invoice = iw_get_invoice(iw); + GtkTextBuffer* text_buffer; + GtkTextIter start, end; + gchar *text; - if (!invoice) return FALSE; + if (!invoice) return FALSE; - text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(iw->notes_text)); - gtk_text_buffer_get_bounds (text_buffer, &start, &end); - text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE); - gncInvoiceSetNotes (invoice, text); - return FALSE; + text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(iw->notes_text)); + gtk_text_buffer_get_bounds (text_buffer, &start, &end); + text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE); + gncInvoiceSetNotes (invoice, text); + return FALSE; } static gboolean gnc_invoice_window_leave_to_charge_cb (GtkWidget *widget, GdkEventFocus *event, - gpointer data) + gpointer data) { - gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT (widget)); - return FALSE; + gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT (widget)); + return FALSE; } static void gnc_invoice_window_changed_to_charge_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncInvoice *invoice = iw_get_invoice(iw); + InvoiceWindow *iw = data; + GncInvoice *invoice = iw_get_invoice(iw); - if (!invoice) return; + if (!invoice) return; - gncInvoiceSetToChargeAmount (invoice, gnc_amount_edit_get_amount - (GNC_AMOUNT_EDIT (widget))); + gncInvoiceSetToChargeAmount (invoice, gnc_amount_edit_get_amount + (GNC_AMOUNT_EDIT (widget))); } static GtkWidget * add_summary_label (GtkWidget *summarybar, const char *label_str) { - GtkWidget *hbox; - GtkWidget *label; + GtkWidget *hbox; + GtkWidget *label; - hbox = gtk_hbox_new(FALSE, 2); - gtk_box_pack_start (GTK_BOX(summarybar), hbox, FALSE, FALSE, 5); + hbox = gtk_hbox_new(FALSE, 2); + gtk_box_pack_start (GTK_BOX(summarybar), hbox, FALSE, FALSE, 5); - label = gtk_label_new (label_str); - gtk_misc_set_alignment (GTK_MISC(label), 1.0, 0.5); - gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0); + label = gtk_label_new (label_str); + gtk_misc_set_alignment (GTK_MISC(label), 1.0, 0.5); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0); - label = gtk_label_new (""); - gtk_misc_set_alignment (GTK_MISC(label), 1.0, 0.5); - gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0); + label = gtk_label_new (""); + gtk_misc_set_alignment (GTK_MISC(label), 1.0, 0.5); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0); - return label; + return label; } GtkWidget * gnc_invoice_window_create_summary_bar (InvoiceWindow *iw) { - GtkWidget *summarybar; + GtkWidget *summarybar; - iw->total_label = NULL; - iw->total_cash_label = NULL; - iw->total_charge_label = NULL; - iw->total_subtotal_label = NULL; - iw->total_tax_label = NULL; + iw->total_label = NULL; + iw->total_cash_label = NULL; + iw->total_charge_label = NULL; + iw->total_subtotal_label = NULL; + iw->total_tax_label = NULL; - summarybar = gtk_hbox_new (FALSE, 4); + summarybar = gtk_hbox_new (FALSE, 4); - iw->total_label = add_summary_label (summarybar, _("Total:")); + iw->total_label = add_summary_label (summarybar, _("Total:")); - switch (gncOwnerGetType (&iw->owner)) { - case GNC_OWNER_CUSTOMER: - case GNC_OWNER_VENDOR: - iw->total_subtotal_label= add_summary_label (summarybar, _("Subtotal:")); - iw->total_tax_label = add_summary_label (summarybar, _("Tax:")); - break; + switch (gncOwnerGetType (&iw->owner)) + { + case GNC_OWNER_CUSTOMER: + case GNC_OWNER_VENDOR: + iw->total_subtotal_label = add_summary_label (summarybar, _("Subtotal:")); + iw->total_tax_label = add_summary_label (summarybar, _("Tax:")); + break; - case GNC_OWNER_EMPLOYEE: - iw->total_cash_label = add_summary_label (summarybar, _("Total Cash:")); - iw->total_charge_label = add_summary_label (summarybar, _("Total Charge:")); - break; + case GNC_OWNER_EMPLOYEE: + iw->total_cash_label = add_summary_label (summarybar, _("Total Cash:")); + iw->total_charge_label = add_summary_label (summarybar, _("Total Charge:")); + break; - default: - break; - } + default: + break; + } - gtk_widget_show_all(summarybar); - return summarybar; + gtk_widget_show_all(summarybar); + return summarybar; } static int gnc_invoice_job_changed_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncInvoice *invoice; - char const *msg = ""; + InvoiceWindow *iw = data; + GncInvoice *invoice; + char const *msg = ""; + + if (!iw) + return FALSE; + + if (iw->dialog_type == VIEW_INVOICE) + return FALSE; + + gnc_owner_get_owner (iw->job_choice, &(iw->job)); + invoice = iw_get_invoice (iw); + + if (iw->dialog_type == EDIT_INVOICE) + return FALSE; + + msg = gncJobGetReference (gncOwnerGetJob (&(iw->job))); + gtk_entry_set_text (GTK_ENTRY (iw->billing_id_entry), msg ? msg : ""); - if (!iw) return FALSE; - if (iw->dialog_type == VIEW_INVOICE) - return FALSE; - - gnc_owner_get_owner (iw->job_choice, &(iw->job)); - invoice = iw_get_invoice (iw); - - if (iw->dialog_type == EDIT_INVOICE) - return FALSE; - - msg = gncJobGetReference (gncOwnerGetJob (&(iw->job))); - gtk_entry_set_text (GTK_ENTRY (iw->billing_id_entry), msg ? msg : ""); - - return FALSE; - } static GNCSearchWindow * gnc_invoice_select_job_cb (gpointer jobp, gpointer user_data) { - GncJob *j = jobp; - InvoiceWindow *iw = user_data; - GncOwner owner, *ownerp; + GncJob *j = jobp; + InvoiceWindow *iw = user_data; + GncOwner owner, *ownerp; - if (!iw) return NULL; + if (!iw) return NULL; - if (j) { - ownerp = gncJobGetOwner (j); - gncOwnerCopy (ownerp, &owner); - } else - gncOwnerCopy (&(iw->owner), &owner); + if (j) + { + ownerp = gncJobGetOwner (j); + gncOwnerCopy (ownerp, &owner); + } + else + gncOwnerCopy (&(iw->owner), &owner); - return gnc_job_search (j, &owner, iw->book); + return gnc_job_search (j, &owner, iw->book); } static void gnc_invoice_update_job_choice (InvoiceWindow *iw) { - if (iw->job_choice) - gtk_container_remove (GTK_CONTAINER (iw->job_box), iw->job_choice); + if (iw->job_choice) + gtk_container_remove (GTK_CONTAINER (iw->job_box), iw->job_choice); - /* If we don't have a real owner, then we obviously can't have a job */ - if (iw->owner.owner.undefined == NULL) { - iw->job_choice = NULL; + /* If we don't have a real owner, then we obviously can't have a job */ + if (iw->owner.owner.undefined == NULL) + { + iw->job_choice = NULL; - } else - switch (iw->dialog_type) { - case VIEW_INVOICE: - case EDIT_INVOICE: - iw->job_choice = - gnc_owner_edit_create (NULL, iw->job_box, iw->book, &(iw->job)); - break; - case NEW_INVOICE: - case MOD_INVOICE: - iw->job_choice = - gnc_general_search_new (GNC_JOB_MODULE_NAME, _("Select..."), TRUE, - gnc_invoice_select_job_cb, iw, iw->book); - - gnc_general_search_set_selected (GNC_GENERAL_SEARCH (iw->job_choice), - gncOwnerGetJob (&iw->job)); - gnc_general_search_allow_clear (GNC_GENERAL_SEARCH (iw->job_choice), - TRUE); - gtk_box_pack_start (GTK_BOX (iw->job_box), iw->job_choice, - TRUE, TRUE, 0); - - g_signal_connect (G_OBJECT (iw->job_choice), "changed", - G_CALLBACK (gnc_invoice_job_changed_cb), iw); - break; } + else + switch (iw->dialog_type) + { + case VIEW_INVOICE: + case EDIT_INVOICE: + iw->job_choice = + gnc_owner_edit_create (NULL, iw->job_box, iw->book, &(iw->job)); + break; + case NEW_INVOICE: + case MOD_INVOICE: + iw->job_choice = + gnc_general_search_new (GNC_JOB_MODULE_NAME, _("Select..."), TRUE, + gnc_invoice_select_job_cb, iw, iw->book); - if (iw->job_choice) - gtk_widget_show_all (iw->job_choice); + gnc_general_search_set_selected (GNC_GENERAL_SEARCH (iw->job_choice), + gncOwnerGetJob (&iw->job)); + gnc_general_search_allow_clear (GNC_GENERAL_SEARCH (iw->job_choice), + TRUE); + gtk_box_pack_start (GTK_BOX (iw->job_box), iw->job_choice, + TRUE, TRUE, 0); + + g_signal_connect (G_OBJECT (iw->job_choice), "changed", + G_CALLBACK (gnc_invoice_job_changed_cb), iw); + break; + } + + if (iw->job_choice) + gtk_widget_show_all (iw->job_choice); } static GNCSearchWindow * gnc_invoice_select_proj_job_cb (gpointer jobp, gpointer user_data) { - GncJob *j = jobp; - InvoiceWindow *iw = user_data; - GncOwner owner, *ownerp; + GncJob *j = jobp; + InvoiceWindow *iw = user_data; + GncOwner owner, *ownerp; - if (!iw) return NULL; + if (!iw) return NULL; - if (j) { - ownerp = gncJobGetOwner (j); - gncOwnerCopy (ownerp, &owner); - } else - gncOwnerCopy (&(iw->proj_cust), &owner); + if (j) + { + ownerp = gncJobGetOwner (j); + gncOwnerCopy (ownerp, &owner); + } + else + gncOwnerCopy (&(iw->proj_cust), &owner); - return gnc_job_search (j, &owner, iw->book); + return gnc_job_search (j, &owner, iw->book); } static int gnc_invoice_proj_job_changed_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; + InvoiceWindow *iw = data; - if (!iw) + if (!iw) + return FALSE; + + if (iw->dialog_type == VIEW_INVOICE) + return FALSE; + + gnc_owner_get_owner (iw->proj_job_choice, &(iw->proj_job)); return FALSE; - - if (iw->dialog_type == VIEW_INVOICE) - return FALSE; - - gnc_owner_get_owner (iw->proj_job_choice, &(iw->proj_job)); - return FALSE; } static void gnc_invoice_update_proj_job (InvoiceWindow *iw) { - if (iw->proj_job_choice) - gtk_container_remove (GTK_CONTAINER (iw->proj_job_box), - iw->proj_job_choice); + if (iw->proj_job_choice) + gtk_container_remove (GTK_CONTAINER (iw->proj_job_box), + iw->proj_job_choice); - switch (iw->dialog_type) { - case VIEW_INVOICE: - case EDIT_INVOICE: - iw->proj_job_choice = - gnc_owner_edit_create (NULL, iw->proj_job_box, iw->book, &(iw->job)); - break; - case NEW_INVOICE: - case MOD_INVOICE: - if (iw->proj_cust.owner.undefined == NULL) { - iw->proj_job_choice = NULL; - } else { - iw->proj_job_choice = - gnc_general_search_new (GNC_JOB_MODULE_NAME, _("Select..."), TRUE, - gnc_invoice_select_proj_job_cb, iw, iw->book); + switch (iw->dialog_type) + { + case VIEW_INVOICE: + case EDIT_INVOICE: + iw->proj_job_choice = + gnc_owner_edit_create (NULL, iw->proj_job_box, iw->book, &(iw->job)); + break; + case NEW_INVOICE: + case MOD_INVOICE: + if (iw->proj_cust.owner.undefined == NULL) + { + iw->proj_job_choice = NULL; + } + else + { + iw->proj_job_choice = + gnc_general_search_new (GNC_JOB_MODULE_NAME, _("Select..."), TRUE, + gnc_invoice_select_proj_job_cb, iw, iw->book); - gnc_general_search_set_selected (GNC_GENERAL_SEARCH(iw->proj_job_choice), - gncOwnerGetJob (&iw->proj_job)); - gnc_general_search_allow_clear (GNC_GENERAL_SEARCH (iw->proj_job_choice), - TRUE); - gtk_box_pack_start (GTK_BOX (iw->proj_job_box), iw->proj_job_choice, - TRUE, TRUE, 0); + gnc_general_search_set_selected (GNC_GENERAL_SEARCH(iw->proj_job_choice), + gncOwnerGetJob (&iw->proj_job)); + gnc_general_search_allow_clear (GNC_GENERAL_SEARCH (iw->proj_job_choice), + TRUE); + gtk_box_pack_start (GTK_BOX (iw->proj_job_box), iw->proj_job_choice, + TRUE, TRUE, 0); - g_signal_connect (G_OBJECT (iw->proj_job_choice), "changed", - G_CALLBACK (gnc_invoice_proj_job_changed_cb), iw); + g_signal_connect (G_OBJECT (iw->proj_job_choice), "changed", + G_CALLBACK (gnc_invoice_proj_job_changed_cb), iw); + } + break; } - break; - } - if (iw->proj_job_choice) - gtk_widget_show_all (iw->proj_job_choice); + if (iw->proj_job_choice) + gtk_widget_show_all (iw->proj_job_choice); } static int gnc_invoice_owner_changed_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncBillTerm *term = NULL; - GncOwner owner; + InvoiceWindow *iw = data; + GncBillTerm *term = NULL; + GncOwner owner; + + if (!iw) + return FALSE; + + if (iw->dialog_type == VIEW_INVOICE) + return FALSE; + + gncOwnerCopy (&(iw->owner), &owner); + gnc_owner_get_owner (iw->owner_choice, &owner); + + /* If this owner really changed, then reset ourselves */ + if (!gncOwnerEqual (&owner, &(iw->owner))) + { + GncInvoice *invoice; + + gncOwnerCopy (&owner, &(iw->owner)); + gncOwnerInitJob (&(iw->job), NULL); + invoice = iw_get_invoice (iw); + gnc_entry_ledger_reset_query (iw->ledger); + } + + if (iw->dialog_type == EDIT_INVOICE) + return FALSE; + + switch (gncOwnerGetType (&(iw->owner))) + { + case GNC_OWNER_CUSTOMER: + term = gncCustomerGetTerms (gncOwnerGetCustomer (&(iw->owner))); + break; + case GNC_OWNER_VENDOR: + term = gncVendorGetTerms (gncOwnerGetVendor (&(iw->owner))); + break; + case GNC_OWNER_EMPLOYEE: + term = NULL; + break; + default: + g_warning ("Unknown owner type: %d\n", gncOwnerGetType (&(iw->owner))); + break; + } + + /* XXX: I'm not sure -- should we change the terms if this happens? */ + iw->terms = term; + gnc_ui_optionmenu_set_value (iw->terms_menu, iw->terms); + + gnc_invoice_update_job_choice (iw); - if (!iw) return FALSE; - - if (iw->dialog_type == VIEW_INVOICE) - return FALSE; - - gncOwnerCopy (&(iw->owner), &owner); - gnc_owner_get_owner (iw->owner_choice, &owner); - - /* If this owner really changed, then reset ourselves */ - if (!gncOwnerEqual (&owner, &(iw->owner))) { - GncInvoice *invoice; - - gncOwnerCopy (&owner, &(iw->owner)); - gncOwnerInitJob (&(iw->job), NULL); - invoice = iw_get_invoice (iw); - gnc_entry_ledger_reset_query (iw->ledger); - } - - if (iw->dialog_type == EDIT_INVOICE) - return FALSE; - - switch (gncOwnerGetType (&(iw->owner))) { - case GNC_OWNER_CUSTOMER: - term = gncCustomerGetTerms (gncOwnerGetCustomer (&(iw->owner))); - break; - case GNC_OWNER_VENDOR: - term = gncVendorGetTerms (gncOwnerGetVendor (&(iw->owner))); - break; - case GNC_OWNER_EMPLOYEE: - term = NULL; - break; - default: - g_warning ("Unknown owner type: %d\n", gncOwnerGetType (&(iw->owner))); - break; - } - - /* XXX: I'm not sure -- should we change the terms if this happens? */ - iw->terms = term; - gnc_ui_optionmenu_set_value (iw->terms_menu, iw->terms); - - gnc_invoice_update_job_choice (iw); - - return FALSE; } static int gnc_invoice_proj_cust_changed_cb (GtkWidget *widget, gpointer data) { - InvoiceWindow *iw = data; - GncOwner owner; + InvoiceWindow *iw = data; + GncOwner owner; + + if (!iw) + return FALSE; + + if (iw->dialog_type == VIEW_INVOICE) + return FALSE; + + gncOwnerCopy (&(iw->proj_cust), &owner); + gnc_owner_get_owner (iw->proj_cust_choice, &owner); + + /* If this owner really changed, then reset ourselves */ + if (!gncOwnerEqual (&owner, &(iw->proj_cust))) + { + gncOwnerCopy (&owner, &(iw->proj_cust)); + gncOwnerInitJob (&(iw->proj_job), NULL); + } + + if (iw->dialog_type == EDIT_INVOICE) + return FALSE; + + gnc_invoice_update_proj_job (iw); - if (!iw) return FALSE; - - if (iw->dialog_type == VIEW_INVOICE) - return FALSE; - - gncOwnerCopy (&(iw->proj_cust), &owner); - gnc_owner_get_owner (iw->proj_cust_choice, &owner); - - /* If this owner really changed, then reset ourselves */ - if (!gncOwnerEqual (&owner, &(iw->proj_cust))) { - gncOwnerCopy (&owner, &(iw->proj_cust)); - gncOwnerInitJob (&(iw->proj_job), NULL); - } - - if (iw->dialog_type == EDIT_INVOICE) - return FALSE; - - gnc_invoice_update_proj_job (iw); - - return FALSE; } static void gnc_invoice_dialog_close_handler (gpointer user_data) { - InvoiceWindow *iw = user_data; + InvoiceWindow *iw = user_data; - if (iw) { - gtk_widget_destroy (iw->dialog); - } + if (iw) + { + gtk_widget_destroy (iw->dialog); + } } static void gnc_invoice_window_close_handler (gpointer user_data) { - InvoiceWindow *iw = user_data; + InvoiceWindow *iw = user_data; - if (iw) { - gnc_main_window_close_page(iw->page); - iw->page = NULL; - } + if (iw) + { + gnc_main_window_close_page(iw->page); + iw->page = NULL; + } } static void gnc_invoice_reset_total_label (GtkLabel *label, gnc_numeric amt, gnc_commodity *com) { - char string[256]; + char string[256]; - amt = gnc_numeric_convert (amt, gnc_commodity_get_fraction(com), GNC_RND_ROUND); - xaccSPrintAmount (string, amt, gnc_default_print_info (TRUE)); - gtk_label_set_text (label, string); + amt = gnc_numeric_convert (amt, gnc_commodity_get_fraction(com), GNC_RND_ROUND); + xaccSPrintAmount (string, amt, gnc_default_print_info (TRUE)); + gtk_label_set_text (label, string); } static void gnc_invoice_redraw_all_cb (GnucashRegister *g_reg, gpointer data) { - InvoiceWindow *iw = data; - GncInvoice * invoice; - gnc_commodity * currency; - gnc_numeric amount, to_charge_amt = gnc_numeric_zero(); + InvoiceWindow *iw = data; + GncInvoice * invoice; + gnc_commodity * currency; + gnc_numeric amount, to_charge_amt = gnc_numeric_zero(); - if (!iw) - return; + if (!iw) + return; - // if (iw) - // gnc_invoice_update_window (iw, NULL); + // if (iw) + // gnc_invoice_update_window (iw, NULL); - invoice = iw_get_invoice (iw); - if (!invoice) - return; + invoice = iw_get_invoice (iw); + if (!invoice) + return; - currency = gncInvoiceGetCurrency (invoice); + currency = gncInvoiceGetCurrency (invoice); - if (iw->total_label) { - amount = gncInvoiceGetTotal (invoice); - gnc_invoice_reset_total_label (GTK_LABEL (iw->total_label), amount, currency); - } + if (iw->total_label) + { + amount = gncInvoiceGetTotal (invoice); + gnc_invoice_reset_total_label (GTK_LABEL (iw->total_label), amount, currency); + } - if (iw->total_subtotal_label) { - amount = gncInvoiceGetTotalSubtotal (invoice); - gnc_invoice_reset_total_label (GTK_LABEL (iw->total_subtotal_label), amount, currency); - } + if (iw->total_subtotal_label) + { + amount = gncInvoiceGetTotalSubtotal (invoice); + gnc_invoice_reset_total_label (GTK_LABEL (iw->total_subtotal_label), amount, currency); + } - if (iw->total_tax_label) { - amount = gncInvoiceGetTotalTax (invoice); - gnc_invoice_reset_total_label (GTK_LABEL (iw->total_tax_label), amount, currency); - } + if (iw->total_tax_label) + { + amount = gncInvoiceGetTotalTax (invoice); + gnc_invoice_reset_total_label (GTK_LABEL (iw->total_tax_label), amount, currency); + } - /* Deal with extra items for the expense voucher */ + /* Deal with extra items for the expense voucher */ - if (iw->to_charge_edit) { - gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT (iw->to_charge_edit)); - to_charge_amt = gnc_amount_edit_get_amount(GNC_AMOUNT_EDIT(iw->to_charge_edit)); - } + if (iw->to_charge_edit) + { + gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT (iw->to_charge_edit)); + to_charge_amt = gnc_amount_edit_get_amount(GNC_AMOUNT_EDIT(iw->to_charge_edit)); + } - if (iw->total_cash_label) { - amount = gncInvoiceGetTotalOf (invoice, GNC_PAYMENT_CASH); - amount = gnc_numeric_sub (amount, to_charge_amt, - gnc_commodity_get_fraction (currency), GNC_RND_ROUND); - gnc_invoice_reset_total_label (GTK_LABEL (iw->total_cash_label), amount, currency); - } + if (iw->total_cash_label) + { + amount = gncInvoiceGetTotalOf (invoice, GNC_PAYMENT_CASH); + amount = gnc_numeric_sub (amount, to_charge_amt, + gnc_commodity_get_fraction (currency), GNC_RND_ROUND); + gnc_invoice_reset_total_label (GTK_LABEL (iw->total_cash_label), amount, currency); + } - if (iw->total_charge_label) { - amount = gncInvoiceGetTotalOf (invoice, GNC_PAYMENT_CARD); - amount = gnc_numeric_add (amount, to_charge_amt, - gnc_commodity_get_fraction (currency), GNC_RND_ROUND); - gnc_invoice_reset_total_label (GTK_LABEL (iw->total_charge_label), amount, currency); - } + if (iw->total_charge_label) + { + amount = gncInvoiceGetTotalOf (invoice, GNC_PAYMENT_CARD); + amount = gnc_numeric_add (amount, to_charge_amt, + gnc_commodity_get_fraction (currency), GNC_RND_ROUND); + gnc_invoice_reset_total_label (GTK_LABEL (iw->total_charge_label), amount, currency); + } } void gnc_invoice_window_changed (InvoiceWindow *iw, GtkWidget *window) { - gnc_entry_ledger_set_parent(iw->ledger, window); + gnc_entry_ledger_set_parent(iw->ledger, window); } gchar * gnc_invoice_get_help (InvoiceWindow *iw) { - if (!iw) - return NULL; + if (!iw) + return NULL; - return gnc_table_get_help (gnc_entry_ledger_get_table (iw->ledger)); + return gnc_table_get_help (gnc_entry_ledger_get_table (iw->ledger)); } static void gnc_invoice_window_refresh_handler (GHashTable *changes, gpointer user_data) { - InvoiceWindow *iw = user_data; - const EventInfo *info; - GncInvoice *invoice = iw_get_invoice (iw); - GncOwner *owner; + InvoiceWindow *iw = user_data; + const EventInfo *info; + GncInvoice *invoice = iw_get_invoice (iw); + GncOwner *owner; - /* If there isn't a invoice behind us, close down */ - if (!invoice) { - gnc_close_gui_component (iw->component_id); - return; - } - - /* Next, close if this is a destroy event */ - if (changes) { - info = gnc_gui_get_entity_events (changes, &iw->invoice_guid); - if (info && (info->event_mask & QOF_EVENT_DESTROY)) { - gnc_close_gui_component (iw->component_id); - return; + /* If there isn't a invoice behind us, close down */ + if (!invoice) + { + gnc_close_gui_component (iw->component_id); + return; } - } - /* Check the owners, and see if they have changed */ - owner = gncInvoiceGetOwner (invoice); + /* Next, close if this is a destroy event */ + if (changes) + { + info = gnc_gui_get_entity_events (changes, &iw->invoice_guid); + if (info && (info->event_mask & QOF_EVENT_DESTROY)) + { + gnc_close_gui_component (iw->component_id); + return; + } + } - /* Copy the owner information into our window */ - gncOwnerCopy (gncOwnerGetEndOwner (owner), &(iw->owner)); - gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner)); + /* Check the owners, and see if they have changed */ + owner = gncInvoiceGetOwner (invoice); - /* Copy the billto information into our window */ - owner = gncInvoiceGetBillTo (invoice); - gncOwnerCopy (gncOwnerGetEndOwner (owner), &iw->proj_cust); - gncOwnerInitJob (&iw->proj_job, gncOwnerGetJob (owner)); + /* Copy the owner information into our window */ + gncOwnerCopy (gncOwnerGetEndOwner (owner), &(iw->owner)); + gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner)); - /* Ok, NOW let's refresh ourselves */ - gnc_invoice_update_window (iw, NULL); + /* Copy the billto information into our window */ + owner = gncInvoiceGetBillTo (invoice); + gncOwnerCopy (gncOwnerGetEndOwner (owner), &iw->proj_cust); + gncOwnerInitJob (&iw->proj_job, gncOwnerGetJob (owner)); + + /* Ok, NOW let's refresh ourselves */ + gnc_invoice_update_window (iw, NULL); } /** Update the various widgets in the window/page vased upon the data @@ -1438,355 +1483,375 @@ gnc_invoice_window_refresh_handler (GHashTable *changes, gpointer user_data) static void gnc_invoice_update_window (InvoiceWindow *iw, GtkWidget *widget) { - GtkWidget *acct_entry; - GncInvoice *invoice; - gboolean is_posted = FALSE; - gboolean can_unpost = FALSE; + GtkWidget *acct_entry; + GncInvoice *invoice; + gboolean is_posted = FALSE; + gboolean can_unpost = FALSE; - invoice = iw_get_invoice (iw); + invoice = iw_get_invoice (iw); - if (iw->owner_choice) - gtk_container_remove (GTK_CONTAINER (iw->owner_box), iw->owner_choice); + if (iw->owner_choice) + gtk_container_remove (GTK_CONTAINER (iw->owner_box), iw->owner_choice); - if (iw->proj_cust_choice) - gtk_container_remove (GTK_CONTAINER (iw->proj_cust_box), - iw->proj_cust_choice); + if (iw->proj_cust_choice) + gtk_container_remove (GTK_CONTAINER (iw->proj_cust_box), + iw->proj_cust_choice); - switch (iw->dialog_type) { - case VIEW_INVOICE: - case EDIT_INVOICE: - iw->owner_choice = - gnc_owner_edit_create (iw->owner_label, iw->owner_box, iw->book, - &(iw->owner)); - iw->proj_cust_choice = - gnc_owner_edit_create (NULL, iw->proj_cust_box, iw->book, - &(iw->proj_cust)); - break; - case NEW_INVOICE: - case MOD_INVOICE: - iw->owner_choice = - gnc_owner_select_create (iw->owner_label, iw->owner_box, iw->book, - &(iw->owner)); - iw->proj_cust_choice = - gnc_owner_select_create (NULL, iw->proj_cust_box, iw->book, - &(iw->proj_cust)); + switch (iw->dialog_type) + { + case VIEW_INVOICE: + case EDIT_INVOICE: + iw->owner_choice = + gnc_owner_edit_create (iw->owner_label, iw->owner_box, iw->book, + &(iw->owner)); + iw->proj_cust_choice = + gnc_owner_edit_create (NULL, iw->proj_cust_box, iw->book, + &(iw->proj_cust)); + break; + case NEW_INVOICE: + case MOD_INVOICE: + iw->owner_choice = + gnc_owner_select_create (iw->owner_label, iw->owner_box, iw->book, + &(iw->owner)); + iw->proj_cust_choice = + gnc_owner_select_create (NULL, iw->proj_cust_box, iw->book, + &(iw->proj_cust)); - g_signal_connect (G_OBJECT (iw->owner_choice), "changed", - G_CALLBACK (gnc_invoice_owner_changed_cb), iw); + g_signal_connect (G_OBJECT (iw->owner_choice), "changed", + G_CALLBACK (gnc_invoice_owner_changed_cb), iw); - g_signal_connect (G_OBJECT (iw->proj_cust_choice), "changed", - G_CALLBACK (gnc_invoice_proj_cust_changed_cb), iw); + g_signal_connect (G_OBJECT (iw->proj_cust_choice), "changed", + G_CALLBACK (gnc_invoice_proj_cust_changed_cb), iw); - break; - } - - if (iw->owner_choice) - gtk_widget_show_all (iw->owner_choice); - if (iw->proj_cust_choice) - gtk_widget_show_all (iw->proj_cust_choice); - - gnc_invoice_update_job_choice (iw); - gnc_invoice_update_proj_job (iw); - - /* Hide the project frame for customer invoices */ - if (iw->owner.type == GNC_OWNER_CUSTOMER) - gtk_widget_hide_all (iw->proj_frame); - - /* Hide the "job" label and entry for employee invoices */ - if (iw->owner.type == GNC_OWNER_EMPLOYEE) { - gtk_widget_hide_all (iw->job_label); - gtk_widget_hide_all (iw->job_box); - } - - acct_entry = glade_xml_get_widget (iw->xml, "acct_entry"); - - /* We know that "invoice" (and "owner") exist now */ - do { - GtkTextBuffer* text_buffer; - const char *string; - gchar * tmp_string; - Timespec ts, ts_zero = {0,0}; - Account *acct; - - gtk_entry_set_text (GTK_ENTRY (iw->id_entry), gncInvoiceGetID (invoice)); - - gtk_entry_set_text (GTK_ENTRY (iw->billing_id_entry), - gncInvoiceGetBillingID (invoice)); - - string = gncInvoiceGetNotes (invoice); - text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(iw->notes_text)); - gtk_text_buffer_set_text (text_buffer, string, -1); - - if (iw->active_check) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (iw->active_check), - gncInvoiceGetActive (invoice)); - - ts = gncInvoiceGetDateOpened (invoice); - if (timespec_equal (&ts, &ts_zero)) { - gnc_date_edit_set_time (GNC_DATE_EDIT (iw->opened_date), time(NULL)); - } else { - gnc_date_edit_set_time_ts (GNC_DATE_EDIT (iw->opened_date), ts); + break; } - /* fill in the terms menu */ - iw->terms = gncInvoiceGetTerms (invoice); - gnc_ui_optionmenu_set_value (iw->terms_menu, iw->terms); + if (iw->owner_choice) + gtk_widget_show_all (iw->owner_choice); + if (iw->proj_cust_choice) + gtk_widget_show_all (iw->proj_cust_choice); - /* - * Next, figure out if we've been posted, and if so set the - * appropriate bits of information.. Then work on hiding or - * unhiding as necessary. + gnc_invoice_update_job_choice (iw); + gnc_invoice_update_proj_job (iw); + + /* Hide the project frame for customer invoices */ + if (iw->owner.type == GNC_OWNER_CUSTOMER) + gtk_widget_hide_all (iw->proj_frame); + + /* Hide the "job" label and entry for employee invoices */ + if (iw->owner.type == GNC_OWNER_EMPLOYEE) + { + gtk_widget_hide_all (iw->job_label); + gtk_widget_hide_all (iw->job_box); + } + + acct_entry = glade_xml_get_widget (iw->xml, "acct_entry"); + + /* We know that "invoice" (and "owner") exist now */ + do + { + GtkTextBuffer* text_buffer; + const char *string; + gchar * tmp_string; + Timespec ts, ts_zero = {0, 0}; + Account *acct; + + gtk_entry_set_text (GTK_ENTRY (iw->id_entry), gncInvoiceGetID (invoice)); + + gtk_entry_set_text (GTK_ENTRY (iw->billing_id_entry), + gncInvoiceGetBillingID (invoice)); + + string = gncInvoiceGetNotes (invoice); + text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(iw->notes_text)); + gtk_text_buffer_set_text (text_buffer, string, -1); + + if (iw->active_check) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (iw->active_check), + gncInvoiceGetActive (invoice)); + + ts = gncInvoiceGetDateOpened (invoice); + if (timespec_equal (&ts, &ts_zero)) + { + gnc_date_edit_set_time (GNC_DATE_EDIT (iw->opened_date), time(NULL)); + } + else + { + gnc_date_edit_set_time_ts (GNC_DATE_EDIT (iw->opened_date), ts); + } + + /* fill in the terms menu */ + iw->terms = gncInvoiceGetTerms (invoice); + gnc_ui_optionmenu_set_value (iw->terms_menu, iw->terms); + + /* + * Next, figure out if we've been posted, and if so set the + * appropriate bits of information.. Then work on hiding or + * unhiding as necessary. + */ + + acct = gncInvoiceGetPostedAcc (invoice); + if (!acct) + break; + + /* Ok, it's definitely posted. Setup the 'posted-invoice' fields now */ + is_posted = TRUE; + + /* Can we unpost this invoice? + * XXX: right now we always can, but there + * may be times in the future when we cannot. + */ + can_unpost = TRUE; + + ts = gncInvoiceGetDatePosted (invoice); + gnc_date_edit_set_time_ts (GNC_DATE_EDIT (iw->posted_date), ts); + + tmp_string = gnc_account_get_full_name (acct); + gtk_entry_set_text (GTK_ENTRY (acct_entry), tmp_string); + g_free(tmp_string); + + } + while (FALSE); + + gnc_invoice_id_changed_cb(NULL, iw); + if (iw->dialog_type == NEW_INVOICE || iw->dialog_type == MOD_INVOICE) + { + if (widget) + gtk_widget_show (widget); + else + gtk_widget_show (iw_get_window(iw)); + return; + } + + /* Fill in the to_charge amount (only in VIEW/EDIT modes) */ + { + gnc_numeric amount; + + amount = gncInvoiceGetToChargeAmount (invoice); + gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (iw->to_charge_edit), amount); + } + + /* Hide/show the appropriate widgets based on our posted/paid state */ + + { + GtkWidget *hide; + + if (is_posted == TRUE) + { + hide = glade_xml_get_widget (iw->xml, "hide3"); + gtk_widget_hide_all (hide); + hide = glade_xml_get_widget (iw->xml, "hide4"); + gtk_widget_hide_all (hide); + + } + else /* ! posted */ + { + hide = glade_xml_get_widget (iw->xml, "posted_label"); + gtk_widget_hide_all (hide); + gtk_widget_hide_all (iw->posted_date_hbox); + + hide = glade_xml_get_widget (iw->xml, "acct_label"); + gtk_widget_hide_all (hide); + gtk_widget_hide_all (acct_entry); + + hide = glade_xml_get_widget (iw->xml, "hide1"); + gtk_widget_hide_all (hide); + hide = glade_xml_get_widget (iw->xml, "hide2"); + gtk_widget_hide_all (hide); + } + } + + /* Set the toolbar widgets sensitivity */ + if (iw->page) + gnc_plugin_page_invoice_update_menus(iw->page, is_posted, can_unpost); + + /* Set the to-change widget */ + gtk_widget_set_sensitive (iw->to_charge_edit, !is_posted); + + /* Hide the to_charge frame for all non-employee invoices, + * or set insensitive if the employee does not have a charge card */ - - acct = gncInvoiceGetPostedAcc (invoice); - if (!acct) - break; - - /* Ok, it's definitely posted. Setup the 'posted-invoice' fields now */ - is_posted = TRUE; - - /* Can we unpost this invoice? - * XXX: right now we always can, but there - * may be times in the future when we cannot. - */ - can_unpost = TRUE; - - ts = gncInvoiceGetDatePosted (invoice); - gnc_date_edit_set_time_ts (GNC_DATE_EDIT (iw->posted_date), ts); - - tmp_string = gnc_account_get_full_name (acct); - gtk_entry_set_text (GTK_ENTRY (acct_entry), tmp_string); - g_free(tmp_string); - - } while (FALSE); - - gnc_invoice_id_changed_cb(NULL, iw); - if (iw->dialog_type == NEW_INVOICE || iw->dialog_type == MOD_INVOICE) { - if (widget) - gtk_widget_show (widget); + if (iw->owner.type == GNC_OWNER_EMPLOYEE) + { + if (!gncEmployeeGetCCard (gncOwnerGetEmployee(&iw->owner))) + gtk_widget_set_sensitive (iw->to_charge_edit, FALSE); + } else - gtk_widget_show (iw_get_window(iw)); - return; - } - - /* Fill in the to_charge amount (only in VIEW/EDIT modes) */ - { - gnc_numeric amount; - - amount = gncInvoiceGetToChargeAmount (invoice); - gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (iw->to_charge_edit), amount); - } - - /* Hide/show the appropriate widgets based on our posted/paid state */ - - { - GtkWidget *hide; - - if (is_posted == TRUE) { - hide = glade_xml_get_widget (iw->xml, "hide3"); - gtk_widget_hide_all (hide); - hide = glade_xml_get_widget (iw->xml, "hide4"); - gtk_widget_hide_all (hide); - - } else { /* ! posted */ - hide = glade_xml_get_widget (iw->xml, "posted_label"); - gtk_widget_hide_all (hide); - gtk_widget_hide_all (iw->posted_date_hbox); - - hide = glade_xml_get_widget (iw->xml, "acct_label"); - gtk_widget_hide_all (hide); - gtk_widget_hide_all (acct_entry); - - hide = glade_xml_get_widget (iw->xml, "hide1"); - gtk_widget_hide_all (hide); - hide = glade_xml_get_widget (iw->xml, "hide2"); - gtk_widget_hide_all (hide); + { + gtk_widget_hide_all (iw->to_charge_frame); } - } - /* Set the toolbar widgets sensitivity */ - if (iw->page) - gnc_plugin_page_invoice_update_menus(iw->page, is_posted, can_unpost); + if (is_posted) + { + // GtkWidget *hide; - /* Set the to-change widget */ - gtk_widget_set_sensitive (iw->to_charge_edit, !is_posted); + /* Setup viewer for read-only access */ + /* + gtk_widget_set_sensitive (iw->id_entry, FALSE); + gtk_widget_set_sensitive (iw->terms_menu, FALSE); + gtk_widget_set_sensitive (iw->notes_text, FALSE); *//* XXX: should notes remain writable? */ + } - /* Hide the to_charge frame for all non-employee invoices, - * or set insensitive if the employee does not have a charge card - */ - if (iw->owner.type == GNC_OWNER_EMPLOYEE) { - if (!gncEmployeeGetCCard (gncOwnerGetEmployee(&iw->owner))) - gtk_widget_set_sensitive (iw->to_charge_edit, FALSE); - } else { - gtk_widget_hide_all (iw->to_charge_frame); - } - - if (is_posted) { - // GtkWidget *hide; - - /* Setup viewer for read-only access */ - /* - gtk_widget_set_sensitive (iw->id_entry, FALSE); - gtk_widget_set_sensitive (iw->terms_menu, FALSE); - gtk_widget_set_sensitive (iw->notes_text, FALSE); *//* XXX: should notes remain writable? */ - } - - if (widget) - gtk_widget_show (widget); - else - gtk_widget_show (iw_get_window(iw)); + if (widget) + gtk_widget_show (widget); + else + gtk_widget_show (iw_get_window(iw)); } gchar * gnc_invoice_get_title (InvoiceWindow *iw) { - char *wintitle = NULL; - const char *id = NULL; + char *wintitle = NULL; + const char *id = NULL; - if (!iw) return NULL; + if (!iw) return NULL; - switch (gncOwnerGetType (&iw->owner)) + switch (gncOwnerGetType (&iw->owner)) { case GNC_OWNER_CUSTOMER: - switch (iw->dialog_type) - { - case NEW_INVOICE: - wintitle = _("New Invoice"); - break; - case MOD_INVOICE: - case EDIT_INVOICE: - wintitle = _("Edit Invoice"); - break; - case VIEW_INVOICE: - wintitle = _("View Invoice"); - break; - } - break; + switch (iw->dialog_type) + { + case NEW_INVOICE: + wintitle = _("New Invoice"); + break; + case MOD_INVOICE: + case EDIT_INVOICE: + wintitle = _("Edit Invoice"); + break; + case VIEW_INVOICE: + wintitle = _("View Invoice"); + break; + } + break; case GNC_OWNER_VENDOR: - switch (iw->dialog_type) - { - case NEW_INVOICE: - wintitle = _("New Bill"); - break; - case MOD_INVOICE: - case EDIT_INVOICE: - wintitle = _("Edit Bill"); - break; - case VIEW_INVOICE: - wintitle = _("View Bill"); - break; - } - break; + switch (iw->dialog_type) + { + case NEW_INVOICE: + wintitle = _("New Bill"); + break; + case MOD_INVOICE: + case EDIT_INVOICE: + wintitle = _("Edit Bill"); + break; + case VIEW_INVOICE: + wintitle = _("View Bill"); + break; + } + break; case GNC_OWNER_EMPLOYEE: - switch (iw->dialog_type) - { - case NEW_INVOICE: - wintitle = _("New Expense Voucher"); - break; - case MOD_INVOICE: - case EDIT_INVOICE: - wintitle = _("Edit Expense Voucher"); - break; - case VIEW_INVOICE: - wintitle = _("View Expense Voucher"); - break; - } - break; + switch (iw->dialog_type) + { + case NEW_INVOICE: + wintitle = _("New Expense Voucher"); + break; + case MOD_INVOICE: + case EDIT_INVOICE: + wintitle = _("Edit Expense Voucher"); + break; + case VIEW_INVOICE: + wintitle = _("View Expense Voucher"); + break; + } + break; default: - break; + break; } - if (iw->id_entry) - id = gtk_entry_get_text (GTK_ENTRY (iw->id_entry)); - if (id && *id) - return g_strconcat (wintitle, " - ", id, (char *)NULL); - return g_strdup (wintitle); + if (iw->id_entry) + id = gtk_entry_get_text (GTK_ENTRY (iw->id_entry)); + if (id && *id) + return g_strconcat (wintitle, " - ", id, (char *)NULL); + return g_strdup (wintitle); } void gnc_invoice_id_changed_cb (GtkWidget *unused, gpointer data) { - InvoiceWindow *iw = data; - gchar *title; + InvoiceWindow *iw = data; + gchar *title; - if (!iw) return; - if (iw->page) { - gnc_plugin_page_invoice_update_title (iw->page); - } else { - title = gnc_invoice_get_title (iw); - gtk_window_set_title (GTK_WINDOW (iw->dialog), title); - g_free (title); - } + if (!iw) return; + if (iw->page) + { + gnc_plugin_page_invoice_update_title (iw->page); + } + else + { + title = gnc_invoice_get_title (iw); + gtk_window_set_title (GTK_WINDOW (iw->dialog), title); + g_free (title); + } } static gboolean find_handler (gpointer find_data, gpointer user_data) { - const GUID *invoice_guid = find_data; - InvoiceWindow *iw = user_data; + const GUID *invoice_guid = find_data; + InvoiceWindow *iw = user_data; - return(iw && guid_equal(&iw->invoice_guid, invoice_guid)); + return(iw && guid_equal(&iw->invoice_guid, invoice_guid)); } static InvoiceWindow * gnc_invoice_new_page (QofBook *bookp, InvoiceDialogType type, - GncInvoice *invoice, GncOwner *owner, - GncMainWindow *window) + GncInvoice *invoice, GncOwner *owner, + GncMainWindow *window) { - InvoiceWindow *iw; - GncOwner *billto; - GncPluginPage *new_page; + InvoiceWindow *iw; + GncOwner *billto; + GncPluginPage *new_page; - g_assert (type != NEW_INVOICE && type != MOD_INVOICE); - g_assert (invoice != NULL); + g_assert (type != NEW_INVOICE && type != MOD_INVOICE); + g_assert (invoice != NULL); - /* - * Find an existing window for this invoice. If found, bring it to - * the front. - */ - if (invoice) { - GUID invoice_guid; + /* + * Find an existing window for this invoice. If found, bring it to + * the front. + */ + if (invoice) + { + GUID invoice_guid; - invoice_guid = *gncInvoiceGetGUID (invoice); - iw = gnc_find_first_gui_component (DIALOG_VIEW_INVOICE_CM_CLASS, - find_handler, &invoice_guid); - if (iw) { - gnc_main_window_display_page(iw->page); - return(iw); + invoice_guid = *gncInvoiceGetGUID (invoice); + iw = gnc_find_first_gui_component (DIALOG_VIEW_INVOICE_CM_CLASS, + find_handler, &invoice_guid); + if (iw) + { + gnc_main_window_display_page(iw->page); + return(iw); + } } - } - /* - * No existing invoice window found. Build a new one. - */ - iw = g_new0 (InvoiceWindow, 1); - iw->book = bookp; - iw->dialog_type = type; - iw->invoice_guid = *gncInvoiceGetGUID (invoice); - iw->width = -1; + /* + * No existing invoice window found. Build a new one. + */ + iw = g_new0 (InvoiceWindow, 1); + iw->book = bookp; + iw->dialog_type = type; + iw->invoice_guid = *gncInvoiceGetGUID (invoice); + iw->width = -1; - /* Save this for later */ - gncOwnerCopy (gncOwnerGetEndOwner (owner), &(iw->owner)); - gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner)); + /* Save this for later */ + gncOwnerCopy (gncOwnerGetEndOwner (owner), &(iw->owner)); + gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner)); - billto = gncInvoiceGetBillTo (invoice); - gncOwnerCopy (gncOwnerGetEndOwner (billto), &(iw->proj_cust)); - gncOwnerInitJob (&iw->proj_job, gncOwnerGetJob (billto)); + billto = gncInvoiceGetBillTo (invoice); + gncOwnerCopy (gncOwnerGetEndOwner (billto), &(iw->proj_cust)); + gncOwnerInitJob (&iw->proj_job, gncOwnerGetJob (billto)); - /* Now create the plugin page for this invoice and display it. */ - new_page = gnc_plugin_page_invoice_new (iw); - if (window) - gnc_plugin_page_set_use_new_window (new_page, FALSE); - else - window = gnc_plugin_business_get_window (); + /* Now create the plugin page for this invoice and display it. */ + new_page = gnc_plugin_page_invoice_new (iw); + if (window) + gnc_plugin_page_set_use_new_window (new_page, FALSE); + else + window = gnc_plugin_business_get_window (); - gnc_main_window_open_page (window, new_page); + gnc_main_window_open_page (window, new_page); - /* Initialize the summary bar */ - gnc_invoice_redraw_all_cb(iw->reg, iw); + /* Initialize the summary bar */ + gnc_invoice_redraw_all_cb(iw->reg, iw); - return iw; + return iw; } #define KEY_INVOICE_TYPE "InvoiceType" @@ -1796,443 +1861,461 @@ gnc_invoice_new_page (QofBook *bookp, InvoiceDialogType type, GncPluginPage * gnc_invoice_recreate_page (GncMainWindow *window, - GKeyFile *key_file, - const gchar *group_name) + GKeyFile *key_file, + const gchar *group_name) { - InvoiceWindow *iw; - GError *error = NULL; - char *tmp_string = NULL, *owner_type = NULL; - InvoiceDialogType type; - GncInvoice *invoice; - GUID guid; - QofBook *book; - GncOwner owner = { 0 }; + InvoiceWindow *iw; + GError *error = NULL; + char *tmp_string = NULL, *owner_type = NULL; + InvoiceDialogType type; + GncInvoice *invoice; + GUID guid; + QofBook *book; + GncOwner owner = { 0 }; - /* Get Invoice Type */ - tmp_string = g_key_file_get_string(key_file, group_name, - KEY_INVOICE_TYPE, &error); - if (error) { - g_warning("Error reading group %s key %s: %s.", - group_name, KEY_INVOICE_TYPE, error->message); - goto give_up; - } - type = InvoiceDialogTypefromString(tmp_string); - g_free(tmp_string); - - /* Get Invoice GUID */ - tmp_string = g_key_file_get_string(key_file, group_name, - KEY_INVOICE_GUID, &error); - if (error) { - g_warning("Error reading group %s key %s: %s.", - group_name, KEY_INVOICE_GUID, error->message); - goto give_up; - } - if (!string_to_guid(tmp_string, &guid)) { - g_warning("Invalid invoice guid: %s.", tmp_string); - goto give_up; - } - book = gnc_get_current_book(); - invoice = gncInvoiceLookup(gnc_get_current_book(), &guid); - if (invoice == NULL) { - g_warning("Can't find invoice %s in current book.", tmp_string); - goto give_up; - } - g_free(tmp_string); - - /* Get Owner Type */ - owner_type = g_key_file_get_string(key_file, group_name, - KEY_OWNER_TYPE, &error); - if (error) { - g_warning("Error reading group %s key %s: %s.", - group_name, KEY_OWNER_TYPE, error->message); - goto give_up; - } - - /* Get Owner GUID */ - tmp_string = g_key_file_get_string(key_file, group_name, - KEY_OWNER_GUID, &error); - if (error) { - g_warning("Error reading group %s key %s: %s.", - group_name, KEY_OWNER_GUID, error->message); - goto give_up; - } - if (!string_to_guid(tmp_string, &guid)) { - g_warning("Invalid owner guid: %s.", tmp_string); - goto give_up; - } - - if (!gncOwnerGetOwnerFromTypeGuid(book, &owner, owner_type, &guid)) { - g_warning("Can't find owner %s in current book.", tmp_string); - goto give_up; - } - g_free(tmp_string); - g_free(owner_type); - - iw = gnc_invoice_new_page (book, type, invoice, &owner, window); - return iw->page; - - give_up: - g_warning("Giving up on restoring '%s'.", group_name); - if (error) - g_error_free(error); - if (tmp_string) + /* Get Invoice Type */ + tmp_string = g_key_file_get_string(key_file, group_name, + KEY_INVOICE_TYPE, &error); + if (error) + { + g_warning("Error reading group %s key %s: %s.", + group_name, KEY_INVOICE_TYPE, error->message); + goto give_up; + } + type = InvoiceDialogTypefromString(tmp_string); + g_free(tmp_string); + + /* Get Invoice GUID */ + tmp_string = g_key_file_get_string(key_file, group_name, + KEY_INVOICE_GUID, &error); + if (error) + { + g_warning("Error reading group %s key %s: %s.", + group_name, KEY_INVOICE_GUID, error->message); + goto give_up; + } + if (!string_to_guid(tmp_string, &guid)) + { + g_warning("Invalid invoice guid: %s.", tmp_string); + goto give_up; + } + book = gnc_get_current_book(); + invoice = gncInvoiceLookup(gnc_get_current_book(), &guid); + if (invoice == NULL) + { + g_warning("Can't find invoice %s in current book.", tmp_string); + goto give_up; + } + g_free(tmp_string); + + /* Get Owner Type */ + owner_type = g_key_file_get_string(key_file, group_name, + KEY_OWNER_TYPE, &error); + if (error) + { + g_warning("Error reading group %s key %s: %s.", + group_name, KEY_OWNER_TYPE, error->message); + goto give_up; + } + + /* Get Owner GUID */ + tmp_string = g_key_file_get_string(key_file, group_name, + KEY_OWNER_GUID, &error); + if (error) + { + g_warning("Error reading group %s key %s: %s.", + group_name, KEY_OWNER_GUID, error->message); + goto give_up; + } + if (!string_to_guid(tmp_string, &guid)) + { + g_warning("Invalid owner guid: %s.", tmp_string); + goto give_up; + } + + if (!gncOwnerGetOwnerFromTypeGuid(book, &owner, owner_type, &guid)) + { + g_warning("Can't find owner %s in current book.", tmp_string); + goto give_up; + } g_free(tmp_string); - if (owner_type) g_free(owner_type); - return NULL; + + iw = gnc_invoice_new_page (book, type, invoice, &owner, window); + return iw->page; + +give_up: + g_warning("Giving up on restoring '%s'.", group_name); + if (error) + g_error_free(error); + if (tmp_string) + g_free(tmp_string); + if (owner_type) + g_free(owner_type); + return NULL; } void gnc_invoice_save_page (InvoiceWindow *iw, - GKeyFile *key_file, - const gchar *group_name) + GKeyFile *key_file, + const gchar *group_name) { - g_key_file_set_string(key_file, group_name, KEY_INVOICE_TYPE, - InvoiceDialogTypeasString(iw->dialog_type)); - g_key_file_set_string(key_file, group_name, KEY_INVOICE_GUID, - guid_to_string(&iw->invoice_guid)); + g_key_file_set_string(key_file, group_name, KEY_INVOICE_TYPE, + InvoiceDialogTypeasString(iw->dialog_type)); + g_key_file_set_string(key_file, group_name, KEY_INVOICE_GUID, + guid_to_string(&iw->invoice_guid)); - g_key_file_set_string(key_file, group_name, KEY_OWNER_TYPE, - qofOwnerGetType(&iw->owner)); - g_key_file_set_string(key_file, group_name, KEY_OWNER_GUID, - guid_to_string(gncOwnerGetGUID(&iw->owner))); + g_key_file_set_string(key_file, group_name, KEY_OWNER_TYPE, + qofOwnerGetType(&iw->owner)); + g_key_file_set_string(key_file, group_name, KEY_OWNER_GUID, + guid_to_string(gncOwnerGetGUID(&iw->owner))); } GtkWidget * gnc_invoice_create_page (InvoiceWindow *iw, gpointer page) { - GncInvoice *invoice; - GladeXML *xml; - GtkWidget *dialog, *hbox; - GncEntryLedger *entry_ledger = NULL; - GncOwnerType owner_type; - GncEntryLedgerType ledger_type; - const gchar *gconf_section = NULL; + GncInvoice *invoice; + GladeXML *xml; + GtkWidget *dialog, *hbox; + GncEntryLedger *entry_ledger = NULL; + GncOwnerType owner_type; + GncEntryLedgerType ledger_type; + const gchar *gconf_section = NULL; - invoice = gncInvoiceLookup(iw->book,&iw->invoice_guid); + invoice = gncInvoiceLookup(iw->book, &iw->invoice_guid); - iw->page = page; + iw->page = page; - /* Find the dialog */ - iw->xml = xml = gnc_glade_xml_new ("invoice.glade", "invoice_entry_vbox"); - dialog = glade_xml_get_widget (xml, "invoice_entry_vbox"); + /* Find the dialog */ + iw->xml = xml = gnc_glade_xml_new ("invoice.glade", "invoice_entry_vbox"); + dialog = glade_xml_get_widget (xml, "invoice_entry_vbox"); - /* Autoconnect all the signals */ - glade_xml_signal_autoconnect_full (xml, gnc_glade_autoconnect_full_func, iw); + /* Autoconnect all the signals */ + glade_xml_signal_autoconnect_full (xml, gnc_glade_autoconnect_full_func, iw); - /* Grab the widgets */ - iw->id_entry = glade_xml_get_widget (xml, "id_entry"); - iw->billing_id_entry = glade_xml_get_widget (xml, "billing_id_entry"); - iw->terms_menu = glade_xml_get_widget (xml, "terms_menu"); - iw->notes_text = glade_xml_get_widget (xml, "notes_text"); - iw->active_check = glade_xml_get_widget (xml, "active_check"); - iw->owner_box = glade_xml_get_widget (xml, "owner_hbox"); - iw->owner_label = glade_xml_get_widget (xml, "owner_label"); - iw->job_label = glade_xml_get_widget (xml, "job_label"); - iw->job_box = glade_xml_get_widget (xml, "job_hbox"); + /* Grab the widgets */ + iw->id_entry = glade_xml_get_widget (xml, "id_entry"); + iw->billing_id_entry = glade_xml_get_widget (xml, "billing_id_entry"); + iw->terms_menu = glade_xml_get_widget (xml, "terms_menu"); + iw->notes_text = glade_xml_get_widget (xml, "notes_text"); + iw->active_check = glade_xml_get_widget (xml, "active_check"); + iw->owner_box = glade_xml_get_widget (xml, "owner_hbox"); + iw->owner_label = glade_xml_get_widget (xml, "owner_label"); + iw->job_label = glade_xml_get_widget (xml, "job_label"); + iw->job_box = glade_xml_get_widget (xml, "job_hbox"); - /* grab the project widgets */ - iw->proj_frame = glade_xml_get_widget (xml, "proj_frame"); - iw->proj_cust_box = glade_xml_get_widget (xml, "proj_cust_hbox"); - iw->proj_job_box = glade_xml_get_widget (xml, "proj_job_hbox"); + /* grab the project widgets */ + iw->proj_frame = glade_xml_get_widget (xml, "proj_frame"); + iw->proj_cust_box = glade_xml_get_widget (xml, "proj_cust_hbox"); + iw->proj_job_box = glade_xml_get_widget (xml, "proj_job_hbox"); - /* grab the to_charge widgets */ - { - GtkWidget *edit; + /* grab the to_charge widgets */ + { + GtkWidget *edit; - gnc_commodity *currency = gncInvoiceGetCurrency (invoice); - GNCPrintAmountInfo print_info; + gnc_commodity *currency = gncInvoiceGetCurrency (invoice); + GNCPrintAmountInfo print_info; - iw->to_charge_frame = glade_xml_get_widget (xml, "to_charge_frame"); - edit = gnc_amount_edit_new(); - print_info = gnc_commodity_print_info (currency, FALSE); - gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (edit), TRUE); - gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (edit), print_info); - gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (edit), - gnc_commodity_get_fraction (currency)); - iw->to_charge_edit = edit; - gtk_widget_show (edit); - hbox = glade_xml_get_widget (xml, "to_charge_box"); - gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); + iw->to_charge_frame = glade_xml_get_widget (xml, "to_charge_frame"); + edit = gnc_amount_edit_new(); + print_info = gnc_commodity_print_info (currency, FALSE); + gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (edit), TRUE); + gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (edit), print_info); + gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (edit), + gnc_commodity_get_fraction (currency)); + iw->to_charge_edit = edit; + gtk_widget_show (edit); + hbox = glade_xml_get_widget (xml, "to_charge_box"); + gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); - g_signal_connect(G_OBJECT(gnc_amount_edit_gtk_entry(GNC_AMOUNT_EDIT(edit))), - "focus-out-event", - G_CALLBACK(gnc_invoice_window_leave_to_charge_cb), iw); - g_signal_connect(G_OBJECT(edit), "amount_changed", - G_CALLBACK(gnc_invoice_window_changed_to_charge_cb), iw); - } - - hbox = glade_xml_get_widget (xml, "date_opened_hbox"); - iw->opened_date = gnc_date_edit_new (time(NULL), FALSE, FALSE); - gtk_widget_show(iw->opened_date); - gtk_box_pack_start (GTK_BOX(hbox), iw->opened_date, TRUE, TRUE, 0); - - iw->posted_date_hbox = glade_xml_get_widget (xml, "date_posted_hbox"); - iw->posted_date = gnc_date_edit_new (time(NULL), FALSE, FALSE); - gtk_widget_show(iw->posted_date); - gtk_box_pack_start (GTK_BOX(iw->posted_date_hbox), iw->posted_date, - TRUE, TRUE, 0); - - /* Make the opened and posted dates insensitive in this window */ - gtk_widget_set_sensitive (iw->opened_date, FALSE); - gtk_widget_set_sensitive (iw->posted_date, FALSE); - - /* Build the ledger */ - ledger_type = GNCENTRY_INVOICE_VIEWER; - owner_type = gncOwnerGetType (&iw->owner); - switch (iw->dialog_type) { - case EDIT_INVOICE: - switch (owner_type) { - case GNC_OWNER_CUSTOMER: - ledger_type = GNCENTRY_INVOICE_ENTRY; - break; - case GNC_OWNER_VENDOR: - ledger_type = GNCENTRY_BILL_ENTRY; - break; - case GNC_OWNER_EMPLOYEE: - ledger_type = GNCENTRY_EXPVOUCHER_ENTRY; - break; - default: - g_warning ("Invalid owner type"); + g_signal_connect(G_OBJECT(gnc_amount_edit_gtk_entry(GNC_AMOUNT_EDIT(edit))), + "focus-out-event", + G_CALLBACK(gnc_invoice_window_leave_to_charge_cb), iw); + g_signal_connect(G_OBJECT(edit), "amount_changed", + G_CALLBACK(gnc_invoice_window_changed_to_charge_cb), iw); } - break; - case VIEW_INVOICE: - default: - switch (owner_type) { - case GNC_OWNER_CUSTOMER: - ledger_type = GNCENTRY_INVOICE_VIEWER; - gconf_section = GCONF_SECTION_INVOICE; - break; - case GNC_OWNER_VENDOR: - ledger_type = GNCENTRY_BILL_VIEWER; - gconf_section = GCONF_SECTION_BILL; - break; - case GNC_OWNER_EMPLOYEE: - ledger_type = GNCENTRY_EXPVOUCHER_VIEWER; - gconf_section = GCONF_SECTION_BILL; - break; + + hbox = glade_xml_get_widget (xml, "date_opened_hbox"); + iw->opened_date = gnc_date_edit_new (time(NULL), FALSE, FALSE); + gtk_widget_show(iw->opened_date); + gtk_box_pack_start (GTK_BOX(hbox), iw->opened_date, TRUE, TRUE, 0); + + iw->posted_date_hbox = glade_xml_get_widget (xml, "date_posted_hbox"); + iw->posted_date = gnc_date_edit_new (time(NULL), FALSE, FALSE); + gtk_widget_show(iw->posted_date); + gtk_box_pack_start (GTK_BOX(iw->posted_date_hbox), iw->posted_date, + TRUE, TRUE, 0); + + /* Make the opened and posted dates insensitive in this window */ + gtk_widget_set_sensitive (iw->opened_date, FALSE); + gtk_widget_set_sensitive (iw->posted_date, FALSE); + + /* Build the ledger */ + ledger_type = GNCENTRY_INVOICE_VIEWER; + owner_type = gncOwnerGetType (&iw->owner); + switch (iw->dialog_type) + { + case EDIT_INVOICE: + switch (owner_type) + { + case GNC_OWNER_CUSTOMER: + ledger_type = GNCENTRY_INVOICE_ENTRY; + break; + case GNC_OWNER_VENDOR: + ledger_type = GNCENTRY_BILL_ENTRY; + break; + case GNC_OWNER_EMPLOYEE: + ledger_type = GNCENTRY_EXPVOUCHER_ENTRY; + break; + default: + g_warning ("Invalid owner type"); + } + break; + case VIEW_INVOICE: default: - g_warning ("Invalid owner type"); + switch (owner_type) + { + case GNC_OWNER_CUSTOMER: + ledger_type = GNCENTRY_INVOICE_VIEWER; + gconf_section = GCONF_SECTION_INVOICE; + break; + case GNC_OWNER_VENDOR: + ledger_type = GNCENTRY_BILL_VIEWER; + gconf_section = GCONF_SECTION_BILL; + break; + case GNC_OWNER_EMPLOYEE: + ledger_type = GNCENTRY_EXPVOUCHER_VIEWER; + gconf_section = GCONF_SECTION_BILL; + break; + default: + g_warning ("Invalid owner type"); + } } - } - entry_ledger = gnc_entry_ledger_new (iw->book, ledger_type); + entry_ledger = gnc_entry_ledger_new (iw->book, ledger_type); - /* Save the ledger... */ - iw->ledger = entry_ledger; - /* window will be updated in a callback */ + /* Save the ledger... */ + iw->ledger = entry_ledger; + /* window will be updated in a callback */ - /* Set the entry_ledger's invoice */ - gnc_entry_ledger_set_default_invoice (entry_ledger, invoice); + /* Set the entry_ledger's invoice */ + gnc_entry_ledger_set_default_invoice (entry_ledger, invoice); - /* Set the gconf section */ - gnc_entry_ledger_set_gconf_section (entry_ledger, gconf_section); + /* Set the gconf section */ + gnc_entry_ledger_set_gconf_section (entry_ledger, gconf_section); - /* Setup initial values */ - iw->component_id = - gnc_register_gui_component (DIALOG_VIEW_INVOICE_CM_CLASS, - gnc_invoice_window_refresh_handler, - gnc_invoice_window_close_handler, - iw); + /* Setup initial values */ + iw->component_id = + gnc_register_gui_component (DIALOG_VIEW_INVOICE_CM_CLASS, + gnc_invoice_window_refresh_handler, + gnc_invoice_window_close_handler, + iw); - gnc_gui_component_watch_entity_type (iw->component_id, - GNC_INVOICE_MODULE_NAME, - QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); + gnc_gui_component_watch_entity_type (iw->component_id, + GNC_INVOICE_MODULE_NAME, + QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); - /* Create the register */ - { - GtkWidget *regWidget, *frame, *window; - guint num_rows; + /* Create the register */ + { + GtkWidget *regWidget, *frame, *window; + guint num_rows; - num_rows = gnc_gconf_get_float(GCONF_SECTION_INVOICE, - KEY_NUMBER_OF_ROWS, NULL); - if (num_rows == 0) - num_rows = 10; - gnucash_register_set_initial_rows( num_rows ); + num_rows = gnc_gconf_get_float(GCONF_SECTION_INVOICE, + KEY_NUMBER_OF_ROWS, NULL); + if (num_rows == 0) + num_rows = 10; + gnucash_register_set_initial_rows( num_rows ); - /* Watch the order of operations, here... */ - regWidget = gnucash_register_new (gnc_entry_ledger_get_table - (entry_ledger)); - gtk_widget_show(regWidget); - gnc_table_init_gui( regWidget, entry_ledger ); + /* Watch the order of operations, here... */ + regWidget = gnucash_register_new (gnc_entry_ledger_get_table + (entry_ledger)); + gtk_widget_show(regWidget); + gnc_table_init_gui( regWidget, entry_ledger ); - frame = glade_xml_get_widget (xml, "ledger_frame"); - gtk_container_add (GTK_CONTAINER (frame), regWidget); + frame = glade_xml_get_widget (xml, "ledger_frame"); + gtk_container_add (GTK_CONTAINER (frame), regWidget); - iw->reg = GNUCASH_REGISTER (regWidget); - window = gnc_plugin_page_get_window(iw->page); - GNUCASH_SHEET (iw->reg->sheet)->window = window; + iw->reg = GNUCASH_REGISTER (regWidget); + window = gnc_plugin_page_get_window(iw->page); + GNUCASH_SHEET (iw->reg->sheet)->window = window; - g_signal_connect (G_OBJECT (regWidget), "activate_cursor", - G_CALLBACK (gnc_invoice_window_recordCB), iw); - g_signal_connect (G_OBJECT (regWidget), "redraw_all", - G_CALLBACK (gnc_invoice_redraw_all_cb), iw); - } + g_signal_connect (G_OBJECT (regWidget), "activate_cursor", + G_CALLBACK (gnc_invoice_window_recordCB), iw); + g_signal_connect (G_OBJECT (regWidget), "redraw_all", + G_CALLBACK (gnc_invoice_redraw_all_cb), iw); + } - gnc_table_realize_gui (gnc_entry_ledger_get_table (entry_ledger)); + gnc_table_realize_gui (gnc_entry_ledger_get_table (entry_ledger)); - /* Now fill in a lot of the pieces and display properly */ - gnc_ui_billterms_optionmenu (iw->terms_menu, iw->book, TRUE, &iw->terms); - gnc_invoice_update_window (iw, dialog); + /* Now fill in a lot of the pieces and display properly */ + gnc_ui_billterms_optionmenu (iw->terms_menu, iw->book, TRUE, &iw->terms); + gnc_invoice_update_window (iw, dialog); - gnc_table_refresh_gui (gnc_entry_ledger_get_table (iw->ledger), TRUE); + gnc_table_refresh_gui (gnc_entry_ledger_get_table (iw->ledger), TRUE); - /* Show the dialog */ - // gtk_widget_show_all (dialog); + /* Show the dialog */ + // gtk_widget_show_all (dialog); - return dialog; + return dialog; } static InvoiceWindow * gnc_invoice_window_new_invoice (QofBook *bookp, GncOwner *owner, - GncInvoice *invoice) + GncInvoice *invoice) { - InvoiceWindow *iw; - GladeXML *xml; - GtkWidget *hbox; - GncOwner *billto; + InvoiceWindow *iw; + GladeXML *xml; + GtkWidget *hbox; + GncOwner *billto; - if (invoice) { - /* - * Try to find an existing window for this invoice. If found, - * bring it to the front. - */ - GUID invoice_guid; + if (invoice) + { + /* + * Try to find an existing window for this invoice. If found, + * bring it to the front. + */ + GUID invoice_guid; - invoice_guid = *gncInvoiceGetGUID (invoice); - iw = gnc_find_first_gui_component (DIALOG_NEW_INVOICE_CM_CLASS, - find_handler, &invoice_guid); - if (iw) { - gtk_window_present (GTK_WINDOW(iw->dialog)); - return(iw); + invoice_guid = *gncInvoiceGetGUID (invoice); + iw = gnc_find_first_gui_component (DIALOG_NEW_INVOICE_CM_CLASS, + find_handler, &invoice_guid); + if (iw) + { + gtk_window_present (GTK_WINDOW(iw->dialog)); + return(iw); + } } - } - /* - * No existing invoice window found. Build a new one. - */ + /* + * No existing invoice window found. Build a new one. + */ - iw = g_new0 (InvoiceWindow, 1); + iw = g_new0 (InvoiceWindow, 1); - if (invoice == NULL) { - iw->dialog_type = NEW_INVOICE; - invoice = gncInvoiceCreate (bookp); - gncInvoiceSetCurrency (invoice, gnc_default_currency ()); - iw->book = bookp; - } else { - iw->dialog_type = MOD_INVOICE; - owner = gncInvoiceGetOwner (invoice); - iw->book = gncInvoiceGetBook (invoice); - } + if (invoice == NULL) + { + iw->dialog_type = NEW_INVOICE; + invoice = gncInvoiceCreate (bookp); + gncInvoiceSetCurrency (invoice, gnc_default_currency ()); + iw->book = bookp; + } + else + { + iw->dialog_type = MOD_INVOICE; + owner = gncInvoiceGetOwner (invoice); + iw->book = gncInvoiceGetBook (invoice); + } - /* Save this for later */ - gncOwnerCopy (gncOwnerGetEndOwner(owner), &(iw->owner)); - gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner)); + /* Save this for later */ + gncOwnerCopy (gncOwnerGetEndOwner(owner), &(iw->owner)); + gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner)); - billto = gncInvoiceGetBillTo (invoice); - gncOwnerCopy (gncOwnerGetEndOwner (billto), &(iw->proj_cust)); - gncOwnerInitJob (&iw->proj_job, gncOwnerGetJob (billto)); + billto = gncInvoiceGetBillTo (invoice); + gncOwnerCopy (gncOwnerGetEndOwner (billto), &(iw->proj_cust)); + gncOwnerInitJob (&iw->proj_job, gncOwnerGetJob (billto)); - /* Find the glade page layout */ - iw->xml = xml = gnc_glade_xml_new ("invoice.glade", "New Invoice Dialog"); - iw->dialog = glade_xml_get_widget (xml, "New Invoice Dialog"); + /* Find the glade page layout */ + iw->xml = xml = gnc_glade_xml_new ("invoice.glade", "New Invoice Dialog"); + iw->dialog = glade_xml_get_widget (xml, "New Invoice Dialog"); - g_object_set_data (G_OBJECT (iw->dialog), "dialog_info", iw); + g_object_set_data (G_OBJECT (iw->dialog), "dialog_info", iw); - /* Grab the widgets */ - iw->id_entry = glade_xml_get_widget (xml, "id_entry"); - iw->billing_id_entry = glade_xml_get_widget (xml, "billing_id_entry"); - iw->terms_menu = glade_xml_get_widget (xml, "terms_menu"); - iw->notes_text = glade_xml_get_widget (xml, "notes_text"); - iw->owner_box = glade_xml_get_widget (xml, "owner_hbox"); - iw->owner_label = glade_xml_get_widget (xml, "owner_label"); - iw->job_label = glade_xml_get_widget (xml, "job_label"); - iw->job_box = glade_xml_get_widget (xml, "job_hbox"); + /* Grab the widgets */ + iw->id_entry = glade_xml_get_widget (xml, "id_entry"); + iw->billing_id_entry = glade_xml_get_widget (xml, "billing_id_entry"); + iw->terms_menu = glade_xml_get_widget (xml, "terms_menu"); + iw->notes_text = glade_xml_get_widget (xml, "notes_text"); + iw->owner_box = glade_xml_get_widget (xml, "owner_hbox"); + iw->owner_label = glade_xml_get_widget (xml, "owner_label"); + iw->job_label = glade_xml_get_widget (xml, "job_label"); + iw->job_box = glade_xml_get_widget (xml, "job_hbox"); - /* grab the project widgets */ - iw->proj_frame = glade_xml_get_widget (xml, "proj_frame"); - iw->proj_cust_box = glade_xml_get_widget (xml, "proj_cust_hbox"); - iw->proj_job_box = glade_xml_get_widget (xml, "proj_job_hbox"); + /* grab the project widgets */ + iw->proj_frame = glade_xml_get_widget (xml, "proj_frame"); + iw->proj_cust_box = glade_xml_get_widget (xml, "proj_cust_hbox"); + iw->proj_job_box = glade_xml_get_widget (xml, "proj_job_hbox"); - hbox = glade_xml_get_widget (xml, "date_opened_hbox"); - iw->opened_date = gnc_date_edit_new (time(NULL), FALSE, FALSE); - gtk_widget_show(iw->opened_date); - gtk_box_pack_start (GTK_BOX(hbox), iw->opened_date, TRUE, TRUE, 0); + hbox = glade_xml_get_widget (xml, "date_opened_hbox"); + iw->opened_date = gnc_date_edit_new (time(NULL), FALSE, FALSE); + gtk_widget_show(iw->opened_date); + gtk_box_pack_start (GTK_BOX(hbox), iw->opened_date, TRUE, TRUE, 0); - /* If this is a New Invoice, reset the Notes file to read/write */ - gtk_widget_set_sensitive (iw->notes_text, (iw->dialog_type == NEW_INVOICE)); + /* If this is a New Invoice, reset the Notes file to read/write */ + gtk_widget_set_sensitive (iw->notes_text, (iw->dialog_type == NEW_INVOICE)); - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - iw); - /* Setup initial values */ - iw->invoice_guid = *gncInvoiceGetGUID (invoice); + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + iw); + /* Setup initial values */ + iw->invoice_guid = *gncInvoiceGetGUID (invoice); - iw->component_id = - gnc_register_gui_component (DIALOG_NEW_INVOICE_CM_CLASS, - gnc_invoice_window_refresh_handler, - gnc_invoice_dialog_close_handler, - iw); + iw->component_id = + gnc_register_gui_component (DIALOG_NEW_INVOICE_CM_CLASS, + gnc_invoice_window_refresh_handler, + gnc_invoice_dialog_close_handler, + iw); - gnc_gui_component_watch_entity_type (iw->component_id, - GNC_INVOICE_MODULE_NAME, - QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); + gnc_gui_component_watch_entity_type (iw->component_id, + GNC_INVOICE_MODULE_NAME, + QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); - /* Now fill in a lot of the pieces and display properly */ - gnc_ui_billterms_optionmenu (iw->terms_menu, iw->book, TRUE, &iw->terms); - gnc_invoice_update_window (iw, iw->dialog); - gnc_table_refresh_gui (gnc_entry_ledger_get_table (iw->ledger), TRUE); + /* Now fill in a lot of the pieces and display properly */ + gnc_ui_billterms_optionmenu (iw->terms_menu, iw->book, TRUE, &iw->terms); + gnc_invoice_update_window (iw, iw->dialog); + gnc_table_refresh_gui (gnc_entry_ledger_get_table (iw->ledger), TRUE); - return iw; + return iw; } InvoiceWindow * gnc_ui_invoice_edit (GncInvoice *invoice) { - InvoiceWindow *iw; - InvoiceDialogType type; + InvoiceWindow *iw; + InvoiceDialogType type; - if (!invoice) return NULL; + if (!invoice) return NULL; - /* Immutable once we've been posted */ - if (gncInvoiceGetPostedAcc (invoice)) - type = VIEW_INVOICE; - else - type = EDIT_INVOICE; + /* Immutable once we've been posted */ + if (gncInvoiceGetPostedAcc (invoice)) + type = VIEW_INVOICE; + else + type = EDIT_INVOICE; - iw = gnc_invoice_new_page (gncInvoiceGetBook(invoice), type, - invoice, gncInvoiceGetOwner (invoice), NULL); + iw = gnc_invoice_new_page (gncInvoiceGetBook(invoice), type, + invoice, gncInvoiceGetOwner (invoice), NULL); - return iw; + return iw; } static InvoiceWindow * gnc_ui_invoice_modify (GncInvoice *invoice) { - InvoiceWindow *iw; - if (!invoice) return NULL; + InvoiceWindow *iw; + if (!invoice) return NULL; - iw = gnc_invoice_window_new_invoice (NULL, NULL, invoice); - return iw; + iw = gnc_invoice_window_new_invoice (NULL, NULL, invoice); + return iw; } InvoiceWindow * gnc_ui_invoice_new (GncOwner *ownerp, QofBook *bookp) { - InvoiceWindow *iw; - GncOwner owner; + InvoiceWindow *iw; + GncOwner owner; - if (ownerp) { - gncOwnerCopy (ownerp, &owner); - } else - gncOwnerInitCustomer (&owner, NULL); /* XXX: pass in the owner type? */ + if (ownerp) + { + gncOwnerCopy (ownerp, &owner); + } + else + gncOwnerInitCustomer (&owner, NULL); /* XXX: pass in the owner type? */ - /* Make sure required options exist */ - if (!bookp) return NULL; + /* Make sure required options exist */ + if (!bookp) return NULL; - iw = gnc_invoice_window_new_invoice (bookp, &owner, NULL); + iw = gnc_invoice_window_new_invoice (bookp, &owner, NULL); - return iw; + return iw; } /* Functions for invoice selection widgets */ @@ -2240,424 +2323,441 @@ gnc_ui_invoice_new (GncOwner *ownerp, QofBook *bookp) static void edit_invoice_direct (gpointer invoice, gpointer user_data) { - g_return_if_fail (invoice); - gnc_ui_invoice_edit (invoice); + g_return_if_fail (invoice); + gnc_ui_invoice_edit (invoice); } static void edit_invoice_cb (gpointer *invoice_p, gpointer user_data) { - g_return_if_fail (invoice_p && user_data); - if (! *invoice_p) - return; - edit_invoice_direct (*invoice_p, user_data); + g_return_if_fail (invoice_p && user_data); + if (! *invoice_p) + return; + edit_invoice_direct (*invoice_p, user_data); } static void pay_invoice_direct (gpointer inv, gpointer user_data) { - GncInvoice *invoice = inv; + GncInvoice *invoice = inv; - g_return_if_fail (invoice); - gnc_ui_payment_new_with_invoice (gncInvoiceGetOwner (invoice), - gncInvoiceGetBook (invoice), invoice); + g_return_if_fail (invoice); + gnc_ui_payment_new_with_invoice (gncInvoiceGetOwner (invoice), + gncInvoiceGetBook (invoice), invoice); } static void pay_invoice_cb (gpointer *invoice_p, gpointer user_data) { - g_return_if_fail (invoice_p && user_data); - if (! *invoice_p) - return; - pay_invoice_direct (*invoice_p, user_data); + g_return_if_fail (invoice_p && user_data); + if (! *invoice_p) + return; + pay_invoice_direct (*invoice_p, user_data); } static gpointer new_invoice_cb (gpointer user_data) { - struct _invoice_select_window *sw = user_data; - InvoiceWindow *iw; + struct _invoice_select_window *sw = user_data; + InvoiceWindow *iw; - g_return_val_if_fail (user_data, NULL); + g_return_val_if_fail (user_data, NULL); - iw = gnc_ui_invoice_new (sw->owner, sw->book); - return iw_get_invoice (iw); + iw = gnc_ui_invoice_new (sw->owner, sw->book); + return iw_get_invoice (iw); } static void free_invoice_cb (gpointer user_data) { - struct _invoice_select_window *sw = user_data; + struct _invoice_select_window *sw = user_data; - g_return_if_fail (sw); + g_return_if_fail (sw); - gncQueryDestroy (sw->q); - g_free (sw); + gncQueryDestroy (sw->q); + g_free (sw); } GNCSearchWindow * gnc_invoice_search (GncInvoice *start, GncOwner *owner, QofBook *book) { - GNCIdType type = GNC_INVOICE_MODULE_NAME; - struct _invoice_select_window *sw; - QueryNew *q, *q2 = NULL; - GncOwnerType owner_type = GNC_OWNER_CUSTOMER; - static GList *inv_params = NULL, *bill_params = NULL, *emp_params = NULL, *params; - static GList *columns = NULL; - const gchar *title, *label; - static GNCSearchCallbackButton *buttons; - static GNCSearchCallbackButton inv_buttons[] = { - { N_("View/Edit Invoice"), edit_invoice_cb}, - { N_("Process Payment"), pay_invoice_cb}, - { NULL }, - }; - static GNCSearchCallbackButton bill_buttons[] = { - { N_("View/Edit Bill"), edit_invoice_cb}, - { N_("Process Payment"), pay_invoice_cb}, - { NULL }, - }; - static GNCSearchCallbackButton emp_buttons[] = { - /* Translators: The terms 'Voucher' and 'Expense Voucher' are used - interchangeably in gnucash and mean the same thing. */ - { N_("View/Edit Voucher"), edit_invoice_cb}, - { N_("Process Payment"), pay_invoice_cb}, - { NULL }, - }; + GNCIdType type = GNC_INVOICE_MODULE_NAME; + struct _invoice_select_window *sw; + QueryNew *q, *q2 = NULL; + GncOwnerType owner_type = GNC_OWNER_CUSTOMER; + static GList *inv_params = NULL, *bill_params = NULL, *emp_params = NULL, *params; + static GList *columns = NULL; + const gchar *title, *label; + static GNCSearchCallbackButton *buttons; + static GNCSearchCallbackButton inv_buttons[] = + { + { N_("View/Edit Invoice"), edit_invoice_cb}, + { N_("Process Payment"), pay_invoice_cb}, + { NULL }, + }; + static GNCSearchCallbackButton bill_buttons[] = + { + { N_("View/Edit Bill"), edit_invoice_cb}, + { N_("Process Payment"), pay_invoice_cb}, + { NULL }, + }; + static GNCSearchCallbackButton emp_buttons[] = + { + /* Translators: The terms 'Voucher' and 'Expense Voucher' are used + interchangeably in gnucash and mean the same thing. */ + { N_("View/Edit Voucher"), edit_invoice_cb}, + { N_("Process Payment"), pay_invoice_cb}, + { NULL }, + }; - g_return_val_if_fail (book, NULL); + g_return_val_if_fail (book, NULL); - /* Build parameter list in reverse order */ - if (inv_params == NULL) { - inv_params = gnc_search_param_prepend (inv_params, - _("Invoice Owner"), NULL, type, - INVOICE_OWNER, NULL); - inv_params = gnc_search_param_prepend (inv_params, - _("Invoice Notes"), NULL, type, - INVOICE_NOTES, NULL); - inv_params = gnc_search_param_prepend (inv_params, - _("Billing ID"), NULL, type, - INVOICE_BILLINGID, NULL); - inv_params = gnc_search_param_prepend (inv_params, - _("Is Paid?"), NULL, type, - INVOICE_IS_PAID, NULL); - inv_params = gnc_search_param_prepend (inv_params, - _("Date Posted"), NULL, type, - INVOICE_POSTED, NULL); - inv_params = gnc_search_param_prepend (inv_params, - _("Is Posted?"), NULL, type, - INVOICE_IS_POSTED, NULL); - inv_params = gnc_search_param_prepend (inv_params, - _("Date Opened"), NULL, type, - INVOICE_OPENED, NULL); - inv_params = gnc_search_param_prepend (inv_params, - _("Company Name "), NULL, type, - INVOICE_OWNER, OWNER_PARENT, - OWNER_NAME, NULL); - inv_params = gnc_search_param_prepend (inv_params, - _("Invoice ID"), NULL, type, - INVOICE_ID, NULL); - } - if (bill_params == NULL) { - bill_params = gnc_search_param_prepend (bill_params, - _("Bill Owner"), NULL, type, - INVOICE_OWNER, NULL); - bill_params = gnc_search_param_prepend (bill_params, - _("Bill Notes"), NULL, type, - INVOICE_NOTES, NULL); - bill_params = gnc_search_param_prepend (bill_params, - _("Billing ID"), NULL, type, - INVOICE_BILLINGID, NULL); - bill_params = gnc_search_param_prepend (bill_params, - _("Is Paid?"), NULL, type, - INVOICE_IS_PAID, NULL); - bill_params = gnc_search_param_prepend (bill_params, - _("Date Posted"), NULL, type, - INVOICE_POSTED, NULL); - bill_params = gnc_search_param_prepend (bill_params, - _("Is Posted?"), NULL, type, - INVOICE_IS_POSTED, NULL); - bill_params = gnc_search_param_prepend (bill_params, - _("Date Opened"), NULL, type, - INVOICE_OPENED, NULL); - bill_params = gnc_search_param_prepend (bill_params, - _("Company Name "), NULL, type, - INVOICE_OWNER, OWNER_PARENT, - OWNER_NAME, NULL); - bill_params = gnc_search_param_prepend (bill_params, - _("Bill ID"), NULL, type, - INVOICE_ID, NULL); - } - if (emp_params == NULL) { - emp_params = gnc_search_param_prepend (emp_params, - _("Voucher Owner"), NULL, type, - INVOICE_OWNER, NULL); - emp_params = gnc_search_param_prepend (emp_params, - _("Voucher Notes"), NULL, type, - INVOICE_NOTES, NULL); - emp_params = gnc_search_param_prepend (emp_params, - _("Billing ID"), NULL, type, - INVOICE_BILLINGID, NULL); - emp_params = gnc_search_param_prepend (emp_params, - _("Is Paid?"), NULL, type, - INVOICE_IS_PAID, NULL); - emp_params = gnc_search_param_prepend (emp_params, - _("Date Posted"), NULL, type, - INVOICE_POSTED, NULL); - emp_params = gnc_search_param_prepend (emp_params, - _("Is Posted?"), NULL, type, - INVOICE_IS_POSTED, NULL); - emp_params = gnc_search_param_prepend (emp_params, - _("Date Opened"), NULL, type, - INVOICE_OPENED, NULL); - emp_params = gnc_search_param_prepend (emp_params, - _("Employee Name"), NULL, type, - INVOICE_OWNER, OWNER_PARENT, - OWNER_NAME, NULL); - emp_params = gnc_search_param_prepend (emp_params, - _("Voucher ID"), NULL, type, - INVOICE_ID, NULL); - } - - /* Build the column list in reverse order */ - if (columns == NULL) { - columns = gnc_search_param_prepend (columns, _("Billing ID"), NULL, type, - INVOICE_BILLINGID, NULL); - columns = gnc_search_param_prepend (columns, _("Type"), NULL, type, - INVOICE_TYPE, NULL); - columns = gnc_search_param_prepend_with_justify (columns, _("Paid"), - GTK_JUSTIFY_CENTER, NULL, type, - INVOICE_IS_PAID, NULL); - columns = gnc_search_param_prepend (columns, _("Posted"), NULL, type, - INVOICE_POSTED, NULL); - columns = gnc_search_param_prepend (columns, _("Company"), NULL, type, - INVOICE_OWNER, OWNER_PARENT, - OWNER_NAME, NULL); - columns = gnc_search_param_prepend (columns, _("Opened"), NULL, type, - INVOICE_OPENED, NULL); - columns = gnc_search_param_prepend (columns, _("Num"), NULL, type, - INVOICE_ID, NULL); - } - - /* Build the queries */ - q = gncQueryCreateFor (type); - gncQuerySetBook (q, book); - - /* If owner is supplied, limit all searches to invoices who's owner - * or end-owner is the supplied owner! Show all invoices by this - * owner. If a Job is supplied, search for all invoices for that - * job, but if a Customer is supplied, search for all invoices owned - * by that Customer or any of that Customer's Jobs. In other words, - * match on == Invoice->Owner->GUID or - * Invoice->owner->parentGUID. - */ - if (owner) { - GncOwner *tmp = owner; - - /* First, figure out the type of owner here.. */ - owner_type = gncOwnerGetType(owner); - while (owner_type == GNC_OWNER_JOB) { - tmp = gncOwnerGetEndOwner(tmp); - owner_type = gncOwnerGetType(tmp); + /* Build parameter list in reverse order */ + if (inv_params == NULL) + { + inv_params = gnc_search_param_prepend (inv_params, + _("Invoice Owner"), NULL, type, + INVOICE_OWNER, NULL); + inv_params = gnc_search_param_prepend (inv_params, + _("Invoice Notes"), NULL, type, + INVOICE_NOTES, NULL); + inv_params = gnc_search_param_prepend (inv_params, + _("Billing ID"), NULL, type, + INVOICE_BILLINGID, NULL); + inv_params = gnc_search_param_prepend (inv_params, + _("Is Paid?"), NULL, type, + INVOICE_IS_PAID, NULL); + inv_params = gnc_search_param_prepend (inv_params, + _("Date Posted"), NULL, type, + INVOICE_POSTED, NULL); + inv_params = gnc_search_param_prepend (inv_params, + _("Is Posted?"), NULL, type, + INVOICE_IS_POSTED, NULL); + inv_params = gnc_search_param_prepend (inv_params, + _("Date Opened"), NULL, type, + INVOICE_OPENED, NULL); + inv_params = gnc_search_param_prepend (inv_params, + _("Company Name "), NULL, type, + INVOICE_OWNER, OWNER_PARENT, + OWNER_NAME, NULL); + inv_params = gnc_search_param_prepend (inv_params, + _("Invoice ID"), NULL, type, + INVOICE_ID, NULL); + } + if (bill_params == NULL) + { + bill_params = gnc_search_param_prepend (bill_params, + _("Bill Owner"), NULL, type, + INVOICE_OWNER, NULL); + bill_params = gnc_search_param_prepend (bill_params, + _("Bill Notes"), NULL, type, + INVOICE_NOTES, NULL); + bill_params = gnc_search_param_prepend (bill_params, + _("Billing ID"), NULL, type, + INVOICE_BILLINGID, NULL); + bill_params = gnc_search_param_prepend (bill_params, + _("Is Paid?"), NULL, type, + INVOICE_IS_PAID, NULL); + bill_params = gnc_search_param_prepend (bill_params, + _("Date Posted"), NULL, type, + INVOICE_POSTED, NULL); + bill_params = gnc_search_param_prepend (bill_params, + _("Is Posted?"), NULL, type, + INVOICE_IS_POSTED, NULL); + bill_params = gnc_search_param_prepend (bill_params, + _("Date Opened"), NULL, type, + INVOICE_OPENED, NULL); + bill_params = gnc_search_param_prepend (bill_params, + _("Company Name "), NULL, type, + INVOICE_OWNER, OWNER_PARENT, + OWNER_NAME, NULL); + bill_params = gnc_search_param_prepend (bill_params, + _("Bill ID"), NULL, type, + INVOICE_ID, NULL); + } + if (emp_params == NULL) + { + emp_params = gnc_search_param_prepend (emp_params, + _("Voucher Owner"), NULL, type, + INVOICE_OWNER, NULL); + emp_params = gnc_search_param_prepend (emp_params, + _("Voucher Notes"), NULL, type, + INVOICE_NOTES, NULL); + emp_params = gnc_search_param_prepend (emp_params, + _("Billing ID"), NULL, type, + INVOICE_BILLINGID, NULL); + emp_params = gnc_search_param_prepend (emp_params, + _("Is Paid?"), NULL, type, + INVOICE_IS_PAID, NULL); + emp_params = gnc_search_param_prepend (emp_params, + _("Date Posted"), NULL, type, + INVOICE_POSTED, NULL); + emp_params = gnc_search_param_prepend (emp_params, + _("Is Posted?"), NULL, type, + INVOICE_IS_POSTED, NULL); + emp_params = gnc_search_param_prepend (emp_params, + _("Date Opened"), NULL, type, + INVOICE_OPENED, NULL); + emp_params = gnc_search_param_prepend (emp_params, + _("Employee Name"), NULL, type, + INVOICE_OWNER, OWNER_PARENT, + OWNER_NAME, NULL); + emp_params = gnc_search_param_prepend (emp_params, + _("Voucher ID"), NULL, type, + INVOICE_ID, NULL); } - /* Then if there's an actual owner (and not just a type) - * then add it to the query and limit the search to this owner + /* Build the column list in reverse order */ + if (columns == NULL) + { + columns = gnc_search_param_prepend (columns, _("Billing ID"), NULL, type, + INVOICE_BILLINGID, NULL); + columns = gnc_search_param_prepend (columns, _("Type"), NULL, type, + INVOICE_TYPE, NULL); + columns = gnc_search_param_prepend_with_justify (columns, _("Paid"), + GTK_JUSTIFY_CENTER, NULL, type, + INVOICE_IS_PAID, NULL); + columns = gnc_search_param_prepend (columns, _("Posted"), NULL, type, + INVOICE_POSTED, NULL); + columns = gnc_search_param_prepend (columns, _("Company"), NULL, type, + INVOICE_OWNER, OWNER_PARENT, + OWNER_NAME, NULL); + columns = gnc_search_param_prepend (columns, _("Opened"), NULL, type, + INVOICE_OPENED, NULL); + columns = gnc_search_param_prepend (columns, _("Num"), NULL, type, + INVOICE_ID, NULL); + } + + /* Build the queries */ + q = gncQueryCreateFor (type); + gncQuerySetBook (q, book); + + /* If owner is supplied, limit all searches to invoices who's owner + * or end-owner is the supplied owner! Show all invoices by this + * owner. If a Job is supplied, search for all invoices for that + * job, but if a Customer is supplied, search for all invoices owned + * by that Customer or any of that Customer's Jobs. In other words, + * match on == Invoice->Owner->GUID or + * Invoice->owner->parentGUID. */ - if (gncOwnerGetGUID (owner)) { - q2 = gncQueryCreate (); - gncQueryAddGUIDMatch (q2, g_slist_prepend - (g_slist_prepend (NULL, QUERY_PARAM_GUID), - INVOICE_OWNER), - gncOwnerGetGUID (owner), QUERY_OR); + if (owner) + { + GncOwner *tmp = owner; - gncQueryAddGUIDMatch (q2, g_slist_prepend - (g_slist_prepend (NULL, OWNER_PARENTG), - INVOICE_OWNER), - gncOwnerGetGUID (owner), QUERY_OR); + /* First, figure out the type of owner here.. */ + owner_type = gncOwnerGetType(owner); + while (owner_type == GNC_OWNER_JOB) + { + tmp = gncOwnerGetEndOwner(tmp); + owner_type = gncOwnerGetType(tmp); + } - gncQueryMergeInPlace (q, q2, QUERY_AND); - gncQueryDestroy (q2); - q2 = gncQueryCopy (q); + /* Then if there's an actual owner (and not just a type) + * then add it to the query and limit the search to this owner + */ + if (gncOwnerGetGUID (owner)) + { + q2 = gncQueryCreate (); + gncQueryAddGUIDMatch (q2, g_slist_prepend + (g_slist_prepend (NULL, QUERY_PARAM_GUID), + INVOICE_OWNER), + gncOwnerGetGUID (owner), QUERY_OR); + + gncQueryAddGUIDMatch (q2, g_slist_prepend + (g_slist_prepend (NULL, OWNER_PARENTG), + INVOICE_OWNER), + gncOwnerGetGUID (owner), QUERY_OR); + + gncQueryMergeInPlace (q, q2, QUERY_AND); + gncQueryDestroy (q2); + q2 = gncQueryCopy (q); + } } - } #if 0 - if (start) { - if (q2 == NULL) - q2 = gncQueryCopy (q); + if (start) + { + if (q2 == NULL) + q2 = gncQueryCopy (q); - gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), - gncInvoiceGetGUID (start), QUERY_AND); - } + gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), + gncInvoiceGetGUID (start), QUERY_AND); + } #endif - /* launch select dialog and return the result */ - sw = g_new0 (struct _invoice_select_window, 1); + /* launch select dialog and return the result */ + sw = g_new0 (struct _invoice_select_window, 1); - if (owner) { - gncOwnerCopy (owner, &(sw->owner_def)); - sw->owner = &(sw->owner_def); - } - sw->book = book; - sw->q = q; + if (owner) + { + gncOwnerCopy (owner, &(sw->owner_def)); + sw->owner = &(sw->owner_def); + } + sw->book = book; + sw->q = q; - switch (owner_type) { + switch (owner_type) + { case GNC_OWNER_VENDOR: - title = _("Find Bill"); - label = _("Bill"); - params = bill_params; - buttons = bill_buttons; - break; + title = _("Find Bill"); + label = _("Bill"); + params = bill_params; + buttons = bill_buttons; + break; case GNC_OWNER_EMPLOYEE: - title = _("Find Expense Voucher"); - label = _("Expense Voucher"); - params = emp_params; - buttons = emp_buttons; - break; + title = _("Find Expense Voucher"); + label = _("Expense Voucher"); + params = emp_params; + buttons = emp_buttons; + break; default: - title = _("Find Invoice"); - label = _("Invoice"); - params = inv_params; - buttons = inv_buttons; - break; - } - return gnc_search_dialog_create (type, title, params, columns, q, q2, - buttons, NULL, new_invoice_cb, - sw, free_invoice_cb, GCONF_SECTION_SEARCH, - label); + title = _("Find Invoice"); + label = _("Invoice"); + params = inv_params; + buttons = inv_buttons; + break; + } + return gnc_search_dialog_create (type, title, params, columns, q, q2, + buttons, NULL, new_invoice_cb, + sw, free_invoice_cb, GCONF_SECTION_SEARCH, + label); } GNCSearchWindow * gnc_invoice_search_select (gpointer start, gpointer book) { - GncInvoice *i = start; - GncOwner owner, *ownerp; + GncInvoice *i = start; + GncOwner owner, *ownerp; - if (!book) return NULL; + if (!book) return NULL; - if (i) { - ownerp = gncInvoiceGetOwner (i); - gncOwnerCopy (ownerp, &owner); - } else - gncOwnerInitCustomer (&owner, NULL); /* XXX */ + if (i) + { + ownerp = gncInvoiceGetOwner (i); + gncOwnerCopy (ownerp, &owner); + } + else + gncOwnerInitCustomer (&owner, NULL); /* XXX */ - return gnc_invoice_search (start, NULL, book); + return gnc_invoice_search (start, NULL, book); } GNCSearchWindow * gnc_invoice_search_edit (gpointer start, gpointer book) { - if (start) - gnc_ui_invoice_edit (start); + if (start) + gnc_ui_invoice_edit (start); - return NULL; + return NULL; } DialogQueryList * gnc_invoice_show_bills_due (QofBook *book, double days_in_advance) { - GNCIdType type = GNC_INVOICE_MODULE_NAME; - Query *q; - QueryPredData_t pred_data; - time_t end_date; - GList *res; - gint len; - Timespec ts; - static GList *param_list = NULL; - static GNCDisplayListButton buttons[] = { - { N_("View/Edit Bill"), edit_invoice_direct }, - { N_("Process Payment"), pay_invoice_direct }, - { NULL }, - }; + GNCIdType type = GNC_INVOICE_MODULE_NAME; + Query *q; + QueryPredData_t pred_data; + time_t end_date; + GList *res; + gint len; + Timespec ts; + static GList *param_list = NULL; + static GNCDisplayListButton buttons[] = + { + { N_("View/Edit Bill"), edit_invoice_direct }, + { N_("Process Payment"), pay_invoice_direct }, + { NULL }, + }; - /* create the param list (in reverse order) */ - if (param_list == NULL) { - param_list = gnc_search_param_prepend (param_list, _("Amount"), NULL, type, - INVOICE_POST_LOT, LOT_BALANCE, NULL); - param_list = gnc_search_param_prepend (param_list, _("Company"), NULL, type, - INVOICE_OWNER, OWNER_NAME, NULL); - param_list = gnc_search_param_prepend (param_list, _("Due"), NULL, type, - INVOICE_DUE, NULL); - } + /* create the param list (in reverse order) */ + if (param_list == NULL) + { + param_list = gnc_search_param_prepend (param_list, _("Amount"), NULL, type, + INVOICE_POST_LOT, LOT_BALANCE, NULL); + param_list = gnc_search_param_prepend (param_list, _("Company"), NULL, type, + INVOICE_OWNER, OWNER_NAME, NULL); + param_list = gnc_search_param_prepend (param_list, _("Due"), NULL, type, + INVOICE_DUE, NULL); + } - /* Create the query to search for invoices; set the book */ - q = gncQueryCreate(); - gncQuerySearchFor(q, GNC_INVOICE_MODULE_NAME); - gncQuerySetBook (q, book); + /* Create the query to search for invoices; set the book */ + q = gncQueryCreate(); + gncQuerySearchFor(q, GNC_INVOICE_MODULE_NAME); + gncQuerySetBook (q, book); - /* we want to find all invoices where: - * invoice -> is_posted == TRUE - * AND invoice -> lot -> is_closed? == FALSE - * AND invoice -> type != "Invoice" - * AND invoice -> due >= (today - days_in_advance) - */ + /* we want to find all invoices where: + * invoice -> is_posted == TRUE + * AND invoice -> lot -> is_closed? == FALSE + * AND invoice -> type != "Invoice" + * AND invoice -> due >= (today - days_in_advance) + */ - gncQueryAddBooleanMatch (q, g_slist_prepend(NULL, INVOICE_IS_POSTED), TRUE, - QUERY_AND); + gncQueryAddBooleanMatch (q, g_slist_prepend(NULL, INVOICE_IS_POSTED), TRUE, + QUERY_AND); - gncQueryAddBooleanMatch (q, g_slist_prepend(g_slist_prepend(NULL, LOT_IS_CLOSED), - INVOICE_POST_LOT), FALSE, QUERY_AND); + gncQueryAddBooleanMatch (q, g_slist_prepend(g_slist_prepend(NULL, LOT_IS_CLOSED), + INVOICE_POST_LOT), FALSE, QUERY_AND); - /* Watch out: Do *not* translate the string "Invoice" here because - it must match the QofObject.type_label string exactly, which - implies it is used in untranslated form! */ - pred_data = gncQueryStringPredicate (COMPARE_NEQ, "Invoice", - STRING_MATCH_NORMAL, FALSE); - gncQueryAddTerm (q, g_slist_prepend(NULL, INVOICE_TYPE), pred_data, QUERY_AND); + /* Watch out: Do *not* translate the string "Invoice" here because + it must match the QofObject.type_label string exactly, which + implies it is used in untranslated form! */ + pred_data = gncQueryStringPredicate (COMPARE_NEQ, "Invoice", + STRING_MATCH_NORMAL, FALSE); + gncQueryAddTerm (q, g_slist_prepend(NULL, INVOICE_TYPE), pred_data, QUERY_AND); - end_date = time(NULL); - if (days_in_advance < 0) - days_in_advance = 0; - end_date += days_in_advance*60*60*24; + end_date = time(NULL); + if (days_in_advance < 0) + days_in_advance = 0; + end_date += days_in_advance * 60 * 60 * 24; - ts.tv_sec = (gint64) end_date; - ts.tv_nsec = 0; - pred_data = gncQueryDatePredicate (COMPARE_LTE, DATE_MATCH_NORMAL, ts); - gncQueryAddTerm (q, g_slist_prepend(NULL, INVOICE_DUE), pred_data, QUERY_AND); + ts.tv_sec = (gint64) end_date; + ts.tv_nsec = 0; + pred_data = gncQueryDatePredicate (COMPARE_LTE, DATE_MATCH_NORMAL, ts); + gncQueryAddTerm (q, g_slist_prepend(NULL, INVOICE_DUE), pred_data, QUERY_AND); - res = gncQueryRun(q); - len = g_list_length (res); - if (!res || len <= 0) - return NULL; + res = gncQueryRun(q); + len = g_list_length (res); + if (!res || len <= 0) + return NULL; - { - gchar *message = g_strdup_printf - (/* Translators: %d is the number of bills due. This is a + { + gchar *message = g_strdup_printf + (/* Translators: %d is the number of bills due. This is a ngettext(3) message. */ - ngettext("The following %d bill is due:", - "The following %d bills are due:", - len), - len); - DialogQueryList *dialog = - gnc_dialog_query_list_create(param_list, q, - _("Due Bills Reminder"), - message, - TRUE, FALSE, - buttons, NULL); - g_free(message); - return dialog; - } + ngettext("The following %d bill is due:", + "The following %d bills are due:", + len), + len); + DialogQueryList *dialog = + gnc_dialog_query_list_create(param_list, q, + _("Due Bills Reminder"), + message, + TRUE, FALSE, + buttons, NULL); + g_free(message); + return dialog; + } } void gnc_invoice_remind_bills_due (void) { - QofBook *book; - gint days; + QofBook *book; + gint days; - if (!gnc_current_session_exist()) return; - book = qof_session_get_book(gnc_get_current_session()); - days = gnc_gconf_get_float(GCONF_SECTION_BILL, "days_in_advance", NULL); + if (!gnc_current_session_exist()) return; + book = qof_session_get_book(gnc_get_current_session()); + days = gnc_gconf_get_float(GCONF_SECTION_BILL, "days_in_advance", NULL); - gnc_invoice_show_bills_due(book, days); + gnc_invoice_show_bills_due(book, days); } void gnc_invoice_remind_bills_due_cb (void) { - if (!gnc_gconf_get_bool(GCONF_SECTION_BILL, "notify_when_due", NULL)) - return; + if (!gnc_gconf_get_bool(GCONF_SECTION_BILL, "notify_when_due", NULL)) + return; - gnc_invoice_remind_bills_due(); + gnc_invoice_remind_bills_due(); } diff --git a/src/business/business-gnome/dialog-invoice.h b/src/business/business-gnome/dialog-invoice.h index b7251b5c15..f5b53cd817 100644 --- a/src/business/business-gnome/dialog-invoice.h +++ b/src/business/business-gnome/dialog-invoice.h @@ -37,12 +37,12 @@ typedef struct _invoice_window InvoiceWindow; typedef enum { - BY_STANDARD = 0, - BY_DATE, - BY_DATE_ENTERED, - BY_DESC, - BY_QTY, - BY_PRICE + BY_STANDARD = 0, + BY_DATE, + BY_DATE_ENTERED, + BY_DESC, + BY_QTY, + BY_PRICE } invoice_sort_type_t; diff --git a/src/business/business-gnome/dialog-job.c b/src/business/business-gnome/dialog-job.c index d24c1a829d..b05f394fa8 100644 --- a/src/business/business-gnome/dialog-job.c +++ b/src/business/business-gnome/dialog-job.c @@ -56,374 +56,394 @@ void gnc_job_name_changed_cb (GtkWidget *widget, gpointer data); typedef enum { - NEW_JOB, - EDIT_JOB + NEW_JOB, + EDIT_JOB } JobDialogType; -struct _job_select_window { - QofBook * book; - GncOwner * owner; - QueryNew * q; - GncOwner owner_def; +struct _job_select_window +{ + QofBook * book; + GncOwner * owner; + QueryNew * q; + GncOwner owner_def; }; -struct _job_window { - GtkWidget * dialog; - GtkWidget * id_entry; - GtkWidget * cust_edit; - GtkWidget * name_entry; - GtkWidget * desc_entry; - GtkWidget * active_check; +struct _job_window +{ + GtkWidget * dialog; + GtkWidget * id_entry; + GtkWidget * cust_edit; + GtkWidget * name_entry; + GtkWidget * desc_entry; + GtkWidget * active_check; - JobDialogType dialog_type; - GUID job_guid; - gint component_id; - QofBook * book; - GncJob * created_job; + JobDialogType dialog_type; + GUID job_guid; + gint component_id; + QofBook * book; + GncJob * created_job; - GncOwner owner; + GncOwner owner; }; static GncJob * jw_get_job (JobWindow *jw) { - if (!jw) - return NULL; + if (!jw) + return NULL; - return gncJobLookup (jw->book, &jw->job_guid); + return gncJobLookup (jw->book, &jw->job_guid); } static void gnc_ui_to_job (JobWindow *jw, GncJob *job) { - gnc_suspend_gui_refresh (); - gncJobBeginEdit (job); + gnc_suspend_gui_refresh (); + gncJobBeginEdit (job); - gncJobSetID (job, gtk_editable_get_chars (GTK_EDITABLE (jw->id_entry), - 0, -1)); - gncJobSetName (job, gtk_editable_get_chars (GTK_EDITABLE (jw->name_entry), - 0, -1)); - gncJobSetReference (job, gtk_editable_get_chars - (GTK_EDITABLE (jw->desc_entry), 0, -1)); - gncJobSetActive (job, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON - (jw->active_check))); - { - GncOwner * old = gncJobGetOwner (job); - gnc_owner_get_owner (jw->cust_edit, &(jw->owner)); - if (! gncOwnerEqual (old, &(jw->owner))) - gncJobSetOwner (job, &(jw->owner)); - } + gncJobSetID (job, gtk_editable_get_chars (GTK_EDITABLE (jw->id_entry), + 0, -1)); + gncJobSetName (job, gtk_editable_get_chars (GTK_EDITABLE (jw->name_entry), + 0, -1)); + gncJobSetReference (job, gtk_editable_get_chars + (GTK_EDITABLE (jw->desc_entry), 0, -1)); + gncJobSetActive (job, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON + (jw->active_check))); + { + GncOwner * old = gncJobGetOwner (job); + gnc_owner_get_owner (jw->cust_edit, &(jw->owner)); + if (! gncOwnerEqual (old, &(jw->owner))) + gncJobSetOwner (job, &(jw->owner)); + } - gncJobCommitEdit (job); - gnc_resume_gui_refresh (); + gncJobCommitEdit (job); + gnc_resume_gui_refresh (); } static gboolean gnc_job_verify_ok (JobWindow *jw) { - const char *res; - gchar *string; + const char *res; + gchar *string; - /* Check for valid name */ - res = gtk_entry_get_text (GTK_ENTRY (jw->name_entry)); - if (safe_strcmp (res, "") == 0) { - const char *message = _("The Job must be given a name."); - gnc_error_dialog(jw->dialog, "%s", message); - return FALSE; - } - - /* Check for owner */ - gnc_owner_get_owner (jw->cust_edit, &(jw->owner)); - res = gncOwnerGetName (&(jw->owner)); - if (res == NULL || safe_strcmp (res, "") == 0) { - const char *message = _("You must choose an owner for this job."); - gnc_error_dialog(jw->dialog, "%s", message); - return FALSE; - } - - /* Set a valid id if one was not created */ - res = gtk_entry_get_text (GTK_ENTRY (jw->id_entry)); - if (safe_strcmp (res, "") == 0) { - string = g_strdup_printf ("%.6" G_GINT64_FORMAT, - gncJobNextID(jw->book)); - gtk_entry_set_text (GTK_ENTRY (jw->id_entry), string); - g_free(string); - } - - /* Now save it off */ - { - GncJob *job = jw_get_job (jw); - if (job) { - gnc_ui_to_job (jw, job); + /* Check for valid name */ + res = gtk_entry_get_text (GTK_ENTRY (jw->name_entry)); + if (safe_strcmp (res, "") == 0) + { + const char *message = _("The Job must be given a name."); + gnc_error_dialog(jw->dialog, "%s", message); + return FALSE; } - } - /* Ok, it's been saved... Change to an editor.. */ - jw->dialog_type = EDIT_JOB; + /* Check for owner */ + gnc_owner_get_owner (jw->cust_edit, &(jw->owner)); + res = gncOwnerGetName (&(jw->owner)); + if (res == NULL || safe_strcmp (res, "") == 0) + { + const char *message = _("You must choose an owner for this job."); + gnc_error_dialog(jw->dialog, "%s", message); + return FALSE; + } - return TRUE; + /* Set a valid id if one was not created */ + res = gtk_entry_get_text (GTK_ENTRY (jw->id_entry)); + if (safe_strcmp (res, "") == 0) + { + string = g_strdup_printf ("%.6" G_GINT64_FORMAT, + gncJobNextID(jw->book)); + gtk_entry_set_text (GTK_ENTRY (jw->id_entry), string); + g_free(string); + } + + /* Now save it off */ + { + GncJob *job = jw_get_job (jw); + if (job) + { + gnc_ui_to_job (jw, job); + } + } + + /* Ok, it's been saved... Change to an editor.. */ + jw->dialog_type = EDIT_JOB; + + return TRUE; } void gnc_job_window_ok_cb (GtkWidget *widget, gpointer data) { - JobWindow *jw = data; + JobWindow *jw = data; - /* Make sure this is ok */ - if (!gnc_job_verify_ok (jw)) - return; + /* Make sure this is ok */ + if (!gnc_job_verify_ok (jw)) + return; - /* Now save off the job so we can return it */ - jw->created_job = jw_get_job (jw); - jw->job_guid = *xaccGUIDNULL (); + /* Now save off the job so we can return it */ + jw->created_job = jw_get_job (jw); + jw->job_guid = *xaccGUIDNULL (); - gnc_close_gui_component (jw->component_id); + gnc_close_gui_component (jw->component_id); } void gnc_job_window_cancel_cb (GtkWidget *widget, gpointer data) { - JobWindow *jw = data; + JobWindow *jw = data; - gnc_close_gui_component (jw->component_id); + gnc_close_gui_component (jw->component_id); } void gnc_job_window_help_cb (GtkWidget *widget, gpointer data) { - gnc_gnome_help(HF_HELP, HL_USAGE); + gnc_gnome_help(HF_HELP, HL_USAGE); } void gnc_job_window_destroy_cb (GtkWidget *widget, gpointer data) { - JobWindow *jw = data; - GncJob *job = jw_get_job (jw); + JobWindow *jw = data; + GncJob *job = jw_get_job (jw); - gnc_suspend_gui_refresh (); + gnc_suspend_gui_refresh (); - if (jw->dialog_type == NEW_JOB && job != NULL) { - gncJobBeginEdit (job); - gncJobDestroy (job); - jw->job_guid = *xaccGUIDNULL (); - } + if (jw->dialog_type == NEW_JOB && job != NULL) + { + gncJobBeginEdit (job); + gncJobDestroy (job); + jw->job_guid = *xaccGUIDNULL (); + } - gnc_unregister_gui_component (jw->component_id); - gnc_resume_gui_refresh (); + gnc_unregister_gui_component (jw->component_id); + gnc_resume_gui_refresh (); - g_free (jw); + g_free (jw); } void gnc_job_name_changed_cb (GtkWidget *widget, gpointer data) { - JobWindow *jw = data; - char *fullname, *title; - const char *name, *id; + JobWindow *jw = data; + char *fullname, *title; + const char *name, *id; - if (!jw) - return; + if (!jw) + return; - name = gtk_entry_get_text (GTK_ENTRY (jw->name_entry)); - if (!name || *name == '\0') - name = _(""); + name = gtk_entry_get_text (GTK_ENTRY (jw->name_entry)); + if (!name || *name == '\0') + name = _(""); - id = gtk_entry_get_text (GTK_ENTRY (jw->id_entry)); + id = gtk_entry_get_text (GTK_ENTRY (jw->id_entry)); - fullname = g_strconcat (name, " (", id, ")", (char *)NULL); + fullname = g_strconcat (name, " (", id, ")", (char *)NULL); - if (jw->dialog_type == EDIT_JOB) - title = g_strconcat (_("Edit Job"), " - ", fullname, (char *)NULL); - else - title = g_strconcat (_("New Job"), " - ", fullname, (char *)NULL); + if (jw->dialog_type == EDIT_JOB) + title = g_strconcat (_("Edit Job"), " - ", fullname, (char *)NULL); + else + title = g_strconcat (_("New Job"), " - ", fullname, (char *)NULL); - gtk_window_set_title (GTK_WINDOW (jw->dialog), title); + gtk_window_set_title (GTK_WINDOW (jw->dialog), title); - g_free (fullname); - g_free (title); + g_free (fullname); + g_free (title); } static void gnc_job_window_close_handler (gpointer user_data) { - JobWindow *jw = user_data; + JobWindow *jw = user_data; - gtk_widget_destroy (jw->dialog); - jw->dialog = NULL; + gtk_widget_destroy (jw->dialog); + jw->dialog = NULL; } static void gnc_job_window_refresh_handler (GHashTable *changes, gpointer user_data) { - JobWindow *jw = user_data; - const EventInfo *info; - GncJob *job = jw_get_job (jw); + JobWindow *jw = user_data; + const EventInfo *info; + GncJob *job = jw_get_job (jw); - /* If there isn't a job behind us, close down */ - if (!job) { - gnc_close_gui_component (jw->component_id); - return; - } - - /* Next, close if this is a destroy event */ - if (changes) { - info = gnc_gui_get_entity_events (changes, &jw->job_guid); - if (info && (info->event_mask & QOF_EVENT_DESTROY)) { - gnc_close_gui_component (jw->component_id); - return; + /* If there isn't a job behind us, close down */ + if (!job) + { + gnc_close_gui_component (jw->component_id); + return; + } + + /* Next, close if this is a destroy event */ + if (changes) + { + info = gnc_gui_get_entity_events (changes, &jw->job_guid); + if (info && (info->event_mask & QOF_EVENT_DESTROY)) + { + gnc_close_gui_component (jw->component_id); + return; + } } - } } static gboolean find_handler (gpointer find_data, gpointer user_data) { - const GUID *job_guid = find_data; - JobWindow *jw = user_data; + const GUID *job_guid = find_data; + JobWindow *jw = user_data; - return(jw && guid_equal(&jw->job_guid, job_guid)); + return(jw && guid_equal(&jw->job_guid, job_guid)); } static JobWindow * gnc_job_new_window (QofBook *bookp, GncOwner *owner, GncJob *job) { - JobWindow *jw; - GladeXML *xml; - GtkWidget *owner_box, *owner_label; + JobWindow *jw; + GladeXML *xml; + GtkWidget *owner_box, *owner_label; - /* - * Find an existing window for this job. If found, bring it to - * the front. - */ - if (job) { - GUID job_guid; + /* + * Find an existing window for this job. If found, bring it to + * the front. + */ + if (job) + { + GUID job_guid; - job_guid = *gncJobGetGUID (job); - jw = gnc_find_first_gui_component (DIALOG_EDIT_JOB_CM_CLASS, - find_handler, &job_guid); - if (jw) { - gtk_window_present (GTK_WINDOW(jw->dialog)); - return(jw); - } - } - - /* - * No existing job window found. Build a new one. - */ - jw = g_new0 (JobWindow, 1); - jw->book = bookp; - gncOwnerCopy (owner, &(jw->owner)); /* save it off now, we know it's valid */ - - /* Load the XML */ - xml = gnc_glade_xml_new ("job.glade", "Job Dialog"); - - /* Find the dialog */ - jw->dialog = glade_xml_get_widget (xml, "Job Dialog"); - g_object_set_data (G_OBJECT (jw->dialog), "dialog_info", jw); - - /* Get entry points */ - jw->id_entry = glade_xml_get_widget (xml, "id_entry"); - jw->name_entry = glade_xml_get_widget (xml, "name_entry"); - jw->desc_entry = glade_xml_get_widget (xml, "desc_entry"); - jw->active_check = glade_xml_get_widget (xml, "active_check"); - - owner_box = glade_xml_get_widget (xml, "customer_hbox"); - owner_label = glade_xml_get_widget (xml, "owner_label"); - - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - jw); - /* Set initial entries */ - if (job != NULL) { - jw->job_guid = *gncJobGetGUID (job); - - jw->dialog_type = EDIT_JOB; - jw->cust_edit = gnc_owner_edit_create (owner_label, owner_box, - bookp, owner); - - gtk_entry_set_text (GTK_ENTRY (jw->id_entry), gncJobGetID (job)); - gtk_entry_set_text (GTK_ENTRY (jw->name_entry), gncJobGetName (job)); - gtk_entry_set_text (GTK_ENTRY (jw->desc_entry), gncJobGetReference (job)); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (jw->active_check), - gncJobGetActive (job)); - - jw->component_id = gnc_register_gui_component (DIALOG_EDIT_JOB_CM_CLASS, - gnc_job_window_refresh_handler, - gnc_job_window_close_handler, - jw); - } else { - job = gncJobCreate (bookp); - gncJobSetOwner (job, owner); - jw->job_guid = *gncJobGetGUID (job); - - jw->dialog_type = NEW_JOB; - - /* If we are passed a real owner, don't allow the user to change it */ - if (owner->owner.undefined) { - jw->cust_edit = gnc_owner_edit_create (owner_label, owner_box, - bookp, owner); - } else { - jw->cust_edit = gnc_owner_select_create (owner_label, owner_box, - bookp, owner); + job_guid = *gncJobGetGUID (job); + jw = gnc_find_first_gui_component (DIALOG_EDIT_JOB_CM_CLASS, + find_handler, &job_guid); + if (jw) + { + gtk_window_present (GTK_WINDOW(jw->dialog)); + return(jw); + } } - jw->component_id = gnc_register_gui_component (DIALOG_NEW_JOB_CM_CLASS, - gnc_job_window_refresh_handler, - gnc_job_window_close_handler, - jw); - } + /* + * No existing job window found. Build a new one. + */ + jw = g_new0 (JobWindow, 1); + jw->book = bookp; + gncOwnerCopy (owner, &(jw->owner)); /* save it off now, we know it's valid */ - gnc_job_name_changed_cb (NULL, jw); - gnc_gui_component_watch_entity_type (jw->component_id, - GNC_JOB_MODULE_NAME, - QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); + /* Load the XML */ + xml = gnc_glade_xml_new ("job.glade", "Job Dialog"); - gtk_widget_show_all (jw->dialog); + /* Find the dialog */ + jw->dialog = glade_xml_get_widget (xml, "Job Dialog"); + g_object_set_data (G_OBJECT (jw->dialog), "dialog_info", jw); - return jw; + /* Get entry points */ + jw->id_entry = glade_xml_get_widget (xml, "id_entry"); + jw->name_entry = glade_xml_get_widget (xml, "name_entry"); + jw->desc_entry = glade_xml_get_widget (xml, "desc_entry"); + jw->active_check = glade_xml_get_widget (xml, "active_check"); + + owner_box = glade_xml_get_widget (xml, "customer_hbox"); + owner_label = glade_xml_get_widget (xml, "owner_label"); + + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + jw); + /* Set initial entries */ + if (job != NULL) + { + jw->job_guid = *gncJobGetGUID (job); + + jw->dialog_type = EDIT_JOB; + jw->cust_edit = gnc_owner_edit_create (owner_label, owner_box, + bookp, owner); + + gtk_entry_set_text (GTK_ENTRY (jw->id_entry), gncJobGetID (job)); + gtk_entry_set_text (GTK_ENTRY (jw->name_entry), gncJobGetName (job)); + gtk_entry_set_text (GTK_ENTRY (jw->desc_entry), gncJobGetReference (job)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (jw->active_check), + gncJobGetActive (job)); + + jw->component_id = gnc_register_gui_component (DIALOG_EDIT_JOB_CM_CLASS, + gnc_job_window_refresh_handler, + gnc_job_window_close_handler, + jw); + } + else + { + job = gncJobCreate (bookp); + gncJobSetOwner (job, owner); + jw->job_guid = *gncJobGetGUID (job); + + jw->dialog_type = NEW_JOB; + + /* If we are passed a real owner, don't allow the user to change it */ + if (owner->owner.undefined) + { + jw->cust_edit = gnc_owner_edit_create (owner_label, owner_box, + bookp, owner); + } + else + { + jw->cust_edit = gnc_owner_select_create (owner_label, owner_box, + bookp, owner); + } + + jw->component_id = gnc_register_gui_component (DIALOG_NEW_JOB_CM_CLASS, + gnc_job_window_refresh_handler, + gnc_job_window_close_handler, + jw); + } + + gnc_job_name_changed_cb (NULL, jw); + gnc_gui_component_watch_entity_type (jw->component_id, + GNC_JOB_MODULE_NAME, + QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); + + gtk_widget_show_all (jw->dialog); + + return jw; } GncJob * gnc_ui_job_new_return_handle (GncOwner *owner, QofBook *book) { - JobWindow *jw; - if (!book) return NULL; - jw = gnc_ui_job_new (owner, book); - return jw_get_job (jw); + JobWindow *jw; + if (!book) return NULL; + jw = gnc_ui_job_new (owner, book); + return jw_get_job (jw); } JobWindow * gnc_ui_job_new (GncOwner *ownerp, QofBook *bookp) { - JobWindow *jw; - GncOwner owner; + JobWindow *jw; + GncOwner owner; - /* Make sure required options exist */ - if (!bookp) return NULL; + /* Make sure required options exist */ + if (!bookp) return NULL; - if (ownerp) { - g_return_val_if_fail ((gncOwnerGetType (ownerp) == GNC_OWNER_CUSTOMER) || - (gncOwnerGetType (ownerp) == GNC_OWNER_VENDOR), - NULL); - gncOwnerCopy (ownerp, &owner); - } else - gncOwnerInitCustomer (&owner, NULL); /* XXX */ + if (ownerp) + { + g_return_val_if_fail ((gncOwnerGetType (ownerp) == GNC_OWNER_CUSTOMER) || + (gncOwnerGetType (ownerp) == GNC_OWNER_VENDOR), + NULL); + gncOwnerCopy (ownerp, &owner); + } + else + gncOwnerInitCustomer (&owner, NULL); /* XXX */ - jw = gnc_job_new_window (bookp, &owner, NULL); - return jw; + jw = gnc_job_new_window (bookp, &owner, NULL); + return jw; } JobWindow * gnc_ui_job_edit (GncJob *job) { - JobWindow *jw; + JobWindow *jw; - if (!job) return NULL; + if (!job) return NULL; - jw = gnc_job_new_window (gncJobGetBook(job), gncJobGetOwner(job), job); - return jw; + jw = gnc_job_new_window (gncJobGetBook(job), gncJobGetOwner(job), job); + return jw; } /* Search functionality */ @@ -431,166 +451,172 @@ gnc_ui_job_edit (GncJob *job) static void edit_job_cb (gpointer *job_p, gpointer user_data) { - GncJob *job; + GncJob *job; - g_return_if_fail (job_p && user_data); + g_return_if_fail (job_p && user_data); - job = *job_p; + job = *job_p; - if (!job) - return; + if (!job) + return; - gnc_ui_job_edit (job); + gnc_ui_job_edit (job); } static void invoice_job_cb (gpointer *job_p, gpointer user_data) { - struct _job_select_window * sw = user_data; - GncJob *job; - GncOwner owner; + struct _job_select_window * sw = user_data; + GncJob *job; + GncOwner owner; - g_return_if_fail (job_p && user_data); + g_return_if_fail (job_p && user_data); - job = *job_p; - if (!job) - return; + job = *job_p; + if (!job) + return; - gncOwnerInitJob (&owner, job); - gnc_invoice_search (NULL, &owner, sw->book); + gncOwnerInitJob (&owner, job); + gnc_invoice_search (NULL, &owner, sw->book); } static void payment_job_cb (gpointer *job_p, gpointer user_data) { - struct _job_select_window *sw = user_data; - GncOwner owner; - GncJob *job; + struct _job_select_window *sw = user_data; + GncOwner owner; + GncJob *job; - g_return_if_fail (job_p && user_data); + g_return_if_fail (job_p && user_data); - job = *job_p; + job = *job_p; - if (!job) + if (!job) + return; + + gncOwnerInitJob (&owner, job); + gnc_ui_payment_new (&owner, sw->book); return; - - gncOwnerInitJob (&owner, job); - gnc_ui_payment_new (&owner, sw->book); - return; } static gpointer new_job_cb (gpointer user_data) { - struct _job_select_window *sw = user_data; - JobWindow *jw; - - g_return_val_if_fail (user_data, NULL); + struct _job_select_window *sw = user_data; + JobWindow *jw; - jw = gnc_ui_job_new (sw->owner, sw->book); - return jw_get_job (jw); + g_return_val_if_fail (user_data, NULL); + + jw = gnc_ui_job_new (sw->owner, sw->book); + return jw_get_job (jw); } static void free_userdata_cb (gpointer user_data) { - struct _job_select_window *sw = user_data; + struct _job_select_window *sw = user_data; - g_return_if_fail (sw); + g_return_if_fail (sw); - gncQueryDestroy (sw->q); - g_free (sw); + gncQueryDestroy (sw->q); + g_free (sw); } GNCSearchWindow * gnc_job_search (GncJob *start, GncOwner *owner, QofBook *book) { - QueryNew *q, *q2 = NULL; - GNCIdType type = GNC_JOB_MODULE_NAME; - struct _job_select_window *sw; - static GList *params = NULL; - static GList *columns = NULL; - static GNCSearchCallbackButton buttons[] = { - { N_("View/Edit Job"), edit_job_cb}, - { N_("View Invoices"), invoice_job_cb}, - { N_("Process Payment"), payment_job_cb}, - { NULL }, - }; + QueryNew *q, *q2 = NULL; + GNCIdType type = GNC_JOB_MODULE_NAME; + struct _job_select_window *sw; + static GList *params = NULL; + static GList *columns = NULL; + static GNCSearchCallbackButton buttons[] = + { + { N_("View/Edit Job"), edit_job_cb}, + { N_("View Invoices"), invoice_job_cb}, + { N_("Process Payment"), payment_job_cb}, + { NULL }, + }; - g_return_val_if_fail (book, NULL); + g_return_val_if_fail (book, NULL); - /* Build parameter list in reverse order*/ - if (params == NULL) { - params = gnc_search_param_prepend (params, _("Owner's Name"), NULL, type, - JOB_OWNER, OWNER_NAME, NULL); - params = gnc_search_param_prepend (params, _("Only Active?"), NULL, type, - JOB_ACTIVE, NULL); - params = gnc_search_param_prepend (params, _("Billing ID"), NULL, type, - JOB_REFERENCE, NULL); - params = gnc_search_param_prepend (params, _("Job Number"), NULL, type, - JOB_ID, NULL); - params = gnc_search_param_prepend (params, _("Job Name"), NULL, type, - JOB_NAME, NULL); - } + /* Build parameter list in reverse order*/ + if (params == NULL) + { + params = gnc_search_param_prepend (params, _("Owner's Name"), NULL, type, + JOB_OWNER, OWNER_NAME, NULL); + params = gnc_search_param_prepend (params, _("Only Active?"), NULL, type, + JOB_ACTIVE, NULL); + params = gnc_search_param_prepend (params, _("Billing ID"), NULL, type, + JOB_REFERENCE, NULL); + params = gnc_search_param_prepend (params, _("Job Number"), NULL, type, + JOB_ID, NULL); + params = gnc_search_param_prepend (params, _("Job Name"), NULL, type, + JOB_NAME, NULL); + } - /* Build the column list in reverse order */ - if (columns == NULL) { - columns = gnc_search_param_prepend (columns, _("Billing ID"), NULL, type, - JOB_REFERENCE, NULL); - columns = gnc_search_param_prepend (columns, _("Company"), NULL, type, - JOB_OWNER, OWNER_NAME, NULL); - columns = gnc_search_param_prepend (columns, _("Job Name"), NULL, type, - JOB_NAME, NULL); - columns = gnc_search_param_prepend (columns, _("ID #"), NULL, type, - JOB_ID, NULL); - } + /* Build the column list in reverse order */ + if (columns == NULL) + { + columns = gnc_search_param_prepend (columns, _("Billing ID"), NULL, type, + JOB_REFERENCE, NULL); + columns = gnc_search_param_prepend (columns, _("Company"), NULL, type, + JOB_OWNER, OWNER_NAME, NULL); + columns = gnc_search_param_prepend (columns, _("Job Name"), NULL, type, + JOB_NAME, NULL); + columns = gnc_search_param_prepend (columns, _("ID #"), NULL, type, + JOB_ID, NULL); + } - /* Build the queries */ - q = gncQueryCreateFor (type); - gncQuerySetBook (q, book); + /* Build the queries */ + q = gncQueryCreateFor (type); + gncQuerySetBook (q, book); - /* If we have a start job but, for some reason, not an owner -- grab - * the owner from the starting job. - */ - if ((!owner || !gncOwnerGetGUID (owner)) && start) - owner = gncJobGetOwner (start); + /* If we have a start job but, for some reason, not an owner -- grab + * the owner from the starting job. + */ + if ((!owner || !gncOwnerGetGUID (owner)) && start) + owner = gncJobGetOwner (start); - /* If owner is supplied, limit all searches to invoices who's owner - * is the supplied owner! Show all invoices by this owner. - */ - if (owner && gncOwnerGetGUID (owner)) { - gncQueryAddGUIDMatch (q, g_slist_prepend - (g_slist_prepend (NULL, QUERY_PARAM_GUID), - JOB_OWNER), - gncOwnerGetGUID (owner), QUERY_AND); + /* If owner is supplied, limit all searches to invoices who's owner + * is the supplied owner! Show all invoices by this owner. + */ + if (owner && gncOwnerGetGUID (owner)) + { + gncQueryAddGUIDMatch (q, g_slist_prepend + (g_slist_prepend (NULL, QUERY_PARAM_GUID), + JOB_OWNER), + gncOwnerGetGUID (owner), QUERY_AND); - q2 = gncQueryCopy (q); - } + q2 = gncQueryCopy (q); + } #if 0 - if (start) { - if (q2 == NULL) - q2 = gncQueryCopy (q); + if (start) + { + if (q2 == NULL) + q2 = gncQueryCopy (q); - gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), - gncJobGetGUID (start), QUERY_AND); - } + gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), + gncJobGetGUID (start), QUERY_AND); + } #endif - /* launch select dialog and return the result */ - sw = g_new0 (struct _job_select_window, 1); + /* launch select dialog and return the result */ + sw = g_new0 (struct _job_select_window, 1); - if (owner) { - gncOwnerCopy (owner, &(sw->owner_def)); - sw->owner = &(sw->owner_def); - } - sw->book = book; - sw->q = q; + if (owner) + { + gncOwnerCopy (owner, &(sw->owner_def)); + sw->owner = &(sw->owner_def); + } + sw->book = book; + sw->q = q; - return gnc_search_dialog_create (type, _("Find Job"), - params, columns, q, q2, buttons, NULL, - new_job_cb, sw, free_userdata_cb, - GCONF_SECTION_SEARCH, NULL); + return gnc_search_dialog_create (type, _("Find Job"), + params, columns, q, q2, buttons, NULL, + new_job_cb, sw, free_userdata_cb, + GCONF_SECTION_SEARCH, NULL); } /* Functions for widgets for job selection */ @@ -598,25 +624,27 @@ gnc_job_search (GncJob *start, GncOwner *owner, QofBook *book) GNCSearchWindow * gnc_job_search_select (gpointer start, gpointer book) { - GncJob *j = start; - GncOwner owner, *ownerp; + GncJob *j = start; + GncOwner owner, *ownerp; - if (!book) return NULL; + if (!book) return NULL; - if (j) { - ownerp = gncJobGetOwner (j); - gncOwnerCopy (ownerp, &owner); - } else - gncOwnerInitCustomer (&owner, NULL); /* XXX */ + if (j) + { + ownerp = gncJobGetOwner (j); + gncOwnerCopy (ownerp, &owner); + } + else + gncOwnerInitCustomer (&owner, NULL); /* XXX */ - return gnc_job_search (start, &owner, book); + return gnc_job_search (start, &owner, book); } GNCSearchWindow * gnc_job_search_edit (gpointer start, gpointer book) { - if (start) - gnc_ui_job_edit (start); + if (start) + gnc_ui_job_edit (start); - return NULL; + return NULL; } diff --git a/src/business/business-gnome/dialog-job.h b/src/business/business-gnome/dialog-job.h index d56120e804..40da5d8e23 100644 --- a/src/business/business-gnome/dialog-job.h +++ b/src/business/business-gnome/dialog-job.h @@ -38,7 +38,7 @@ JobWindow * gnc_ui_job_new (GncOwner *owner, QofBook *book); /* Search for Jobs */ GNCSearchWindow * gnc_job_search (GncJob *start, GncOwner *owner, - QofBook *book); + QofBook *book); /* * These callbacks are for use with the gnc_general_search widget diff --git a/src/business/business-gnome/dialog-order.c b/src/business/business-gnome/dialog-order.c index 91c009d884..a00a4fe528 100644 --- a/src/business/business-gnome/dialog-order.c +++ b/src/business/business-gnome/dialog-order.c @@ -61,43 +61,45 @@ void gnc_order_window_destroy_cb (GtkWidget *widget, gpointer data); typedef enum { - NEW_ORDER, - EDIT_ORDER, - VIEW_ORDER + NEW_ORDER, + EDIT_ORDER, + VIEW_ORDER } OrderDialogType; -struct _order_select_window { - QofBook * book; - GncOwner * owner; - QueryNew * q; - GncOwner owner_def; +struct _order_select_window +{ + QofBook * book; + GncOwner * owner; + QueryNew * q; + GncOwner owner_def; }; -struct _order_window { - GladeXML * xml; +struct _order_window +{ + GladeXML * xml; - GtkWidget * dialog; + GtkWidget * dialog; - GtkWidget * id_entry; - GtkWidget * ref_entry; - GtkWidget * notes_text; - GtkWidget * opened_date; - GtkWidget * closed_date; - GtkWidget * active_check; + GtkWidget * id_entry; + GtkWidget * ref_entry; + GtkWidget * notes_text; + GtkWidget * opened_date; + GtkWidget * closed_date; + GtkWidget * active_check; - GtkWidget * owner_box; - GtkWidget * owner_label; - GtkWidget * owner_choice; + GtkWidget * owner_box; + GtkWidget * owner_label; + GtkWidget * owner_choice; - GnucashRegister * reg; - GncEntryLedger * ledger; + GnucashRegister * reg; + GncEntryLedger * ledger; - OrderDialogType dialog_type; - GUID order_guid; - gint component_id; - QofBook * book; - GncOrder * created_order; - GncOwner owner; + OrderDialogType dialog_type; + GUID order_guid; + gint component_id; + QofBook * book; + GncOrder * created_order; + GncOwner owner; }; @@ -106,646 +108,675 @@ static void gnc_order_update_window (OrderWindow *ow); static GncOrder * ow_get_order (OrderWindow *ow) { - if (!ow) - return NULL; + if (!ow) + return NULL; - return gncOrderLookup (ow->book, &ow->order_guid); + return gncOrderLookup (ow->book, &ow->order_guid); } static void gnc_ui_to_order (OrderWindow *ow, GncOrder *order) { - GtkTextBuffer* text_buffer; - GtkTextIter start, end; - gchar *text; - Timespec ts; - time_t tt; + GtkTextBuffer* text_buffer; + GtkTextIter start, end; + gchar *text; + Timespec ts; + time_t tt; - /* Do nothing if this is view only */ - if (ow->dialog_type == VIEW_ORDER) - return; + /* Do nothing if this is view only */ + if (ow->dialog_type == VIEW_ORDER) + return; - gnc_suspend_gui_refresh (); - gncOrderBeginEdit (order); - - gncOrderSetID (order, gtk_editable_get_chars - (GTK_EDITABLE (ow->id_entry), 0, -1)); + gnc_suspend_gui_refresh (); + gncOrderBeginEdit (order); - text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(ow->notes_text)); - gtk_text_buffer_get_bounds (text_buffer, &start, &end); - text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE); - gncOrderSetNotes (order, text); + gncOrderSetID (order, gtk_editable_get_chars + (GTK_EDITABLE (ow->id_entry), 0, -1)); - gncOrderSetReference (order, gtk_editable_get_chars - (GTK_EDITABLE (ow->ref_entry), 0, -1)); + text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(ow->notes_text)); + gtk_text_buffer_get_bounds (text_buffer, &start, &end); + text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE); + gncOrderSetNotes (order, text); - tt = gnome_date_edit_get_time (GNOME_DATE_EDIT (ow->opened_date)); - timespecFromTime_t (&ts, tt); - gncOrderSetDateOpened (order, ts); + gncOrderSetReference (order, gtk_editable_get_chars + (GTK_EDITABLE (ow->ref_entry), 0, -1)); - if (ow->active_check) - gncOrderSetActive (order, gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (ow->active_check))); + tt = gnome_date_edit_get_time (GNOME_DATE_EDIT (ow->opened_date)); + timespecFromTime_t (&ts, tt); + gncOrderSetDateOpened (order, ts); - gnc_owner_get_owner (ow->owner_choice, &(ow->owner)); - gncOrderSetOwner (order, &(ow->owner)); + if (ow->active_check) + gncOrderSetActive (order, gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON (ow->active_check))); - gncOrderCommitEdit (order); - gnc_resume_gui_refresh (); + gnc_owner_get_owner (ow->owner_choice, &(ow->owner)); + gncOrderSetOwner (order, &(ow->owner)); + + gncOrderCommitEdit (order); + gnc_resume_gui_refresh (); } static gboolean gnc_order_window_verify_ok (OrderWindow *ow) { - const char *res; + const char *res; - /* Check the ID */ - res = gtk_entry_get_text (GTK_ENTRY (ow->id_entry)); - if (safe_strcmp (res, "") == 0) { - gnc_error_dialog (ow->dialog, "%s", - _("The Order must be given an ID.")); - return FALSE; - } + /* Check the ID */ + res = gtk_entry_get_text (GTK_ENTRY (ow->id_entry)); + if (safe_strcmp (res, "") == 0) + { + gnc_error_dialog (ow->dialog, "%s", + _("The Order must be given an ID.")); + return FALSE; + } - /* Check the Owner */ - gnc_owner_get_owner (ow->owner_choice, &(ow->owner)); - res = gncOwnerGetName (&(ow->owner)); - if (res == NULL || safe_strcmp (res, "") == 0) { - gnc_error_dialog (ow->dialog, "%s", - _("You need to supply Billing Information.")); - return FALSE; - } + /* Check the Owner */ + gnc_owner_get_owner (ow->owner_choice, &(ow->owner)); + res = gncOwnerGetName (&(ow->owner)); + if (res == NULL || safe_strcmp (res, "") == 0) + { + gnc_error_dialog (ow->dialog, "%s", + _("You need to supply Billing Information.")); + return FALSE; + } - return TRUE; + return TRUE; } static gboolean gnc_order_window_ok_save (OrderWindow *ow) { - if (!gnc_entry_ledger_check_close (ow->dialog, ow->ledger)) - return FALSE; + if (!gnc_entry_ledger_check_close (ow->dialog, ow->ledger)) + return FALSE; - if (!gnc_order_window_verify_ok (ow)) - return FALSE; - - /* Now save it off */ - { - GncOrder *order = ow_get_order (ow); - if (order) { - gnc_ui_to_order (ow, order); + if (!gnc_order_window_verify_ok (ow)) + return FALSE; + /* Now save it off */ + { + GncOrder *order = ow_get_order (ow); + if (order) + { + gnc_ui_to_order (ow, order); + + } + ow->created_order = order; } - ow->created_order = order; - } - return TRUE; + return TRUE; } void gnc_order_window_ok_cb (GtkWidget *widget, gpointer data) { - OrderWindow *ow = data; + OrderWindow *ow = data; - if (!gnc_order_window_ok_save (ow)) - return; + if (!gnc_order_window_ok_save (ow)) + return; - /* Ok, we don't need this anymore */ - ow->order_guid = *xaccGUIDNULL (); + /* Ok, we don't need this anymore */ + ow->order_guid = *xaccGUIDNULL (); - gnc_close_gui_component (ow->component_id); + gnc_close_gui_component (ow->component_id); } void gnc_order_window_cancel_cb (GtkWidget *widget, gpointer data) { - OrderWindow *ow = data; + OrderWindow *ow = data; - gnc_close_gui_component (ow->component_id); + gnc_close_gui_component (ow->component_id); } void gnc_order_window_help_cb (GtkWidget *widget, gpointer data) { - gnc_gnome_help(HF_HELP, HL_USAGE); + gnc_gnome_help(HF_HELP, HL_USAGE); } void gnc_order_window_invoice_cb (GtkWidget *widget, gpointer data) { - OrderWindow *ow = data; + OrderWindow *ow = data; - /* make sure we're ok */ - if (!gnc_order_window_verify_ok (ow)) - return; + /* make sure we're ok */ + if (!gnc_order_window_verify_ok (ow)) + return; - /* Ok, go make an invoice */ - gnc_invoice_search (NULL, &(ow->owner), ow->book); + /* Ok, go make an invoice */ + gnc_invoice_search (NULL, &(ow->owner), ow->book); - /* refresh the window */ - gnc_order_update_window (ow); + /* refresh the window */ + gnc_order_update_window (ow); } void gnc_order_window_close_order_cb (GtkWidget *widget, gpointer data) { - OrderWindow *ow = data; - GncOrder *order; - GList *entries; - char *message, *label; - gboolean non_inv = FALSE; - Timespec ts; + OrderWindow *ow = data; + GncOrder *order; + GList *entries; + char *message, *label; + gboolean non_inv = FALSE; + Timespec ts; - /* Make sure the order is ok */ - if (!gnc_order_window_verify_ok (ow)) - return; + /* Make sure the order is ok */ + if (!gnc_order_window_verify_ok (ow)) + return; - /* Make sure the order exists */ - order = ow_get_order (ow); - if (!order) - return; + /* Make sure the order exists */ + order = ow_get_order (ow); + if (!order) + return; - /* Check that there is at least one Entry */ - if (gncOrderGetEntries (order) == NULL) { - gnc_error_dialog (ow->dialog, "%s", - _("The Order must have at least one Entry.")); - return; - } - - /* Make sure we can close the order. Are there any uninvoiced entries? */ - entries = gncOrderGetEntries (order); - for ( ; entries ; entries = entries->next) { - GncEntry *entry = entries->data; - if (gncEntryGetInvoice (entry) == NULL) { - non_inv = TRUE; - break; + /* Check that there is at least one Entry */ + if (gncOrderGetEntries (order) == NULL) + { + gnc_error_dialog (ow->dialog, "%s", + _("The Order must have at least one Entry.")); + return; } - } - if (non_inv) { - /* Damn; yes. Well, ask the user to make sure they REALLY want to - * close this order! - */ + /* Make sure we can close the order. Are there any uninvoiced entries? */ + entries = gncOrderGetEntries (order); + for ( ; entries ; entries = entries->next) + { + GncEntry *entry = entries->data; + if (gncEntryGetInvoice (entry) == NULL) + { + non_inv = TRUE; + break; + } + } - message = _("This order contains entries that have not been invoiced. " - "Are you sure you want to close it out before " - "you invoice all the entries?"); + if (non_inv) + { + /* Damn; yes. Well, ask the user to make sure they REALLY want to + * close this order! + */ - if (gnc_verify_dialog (ow->dialog, FALSE, "%s", message) == FALSE) - return; - } + message = _("This order contains entries that have not been invoiced. " + "Are you sure you want to close it out before " + "you invoice all the entries?"); - /* Ok, we can close this. Ask for verification and set the closed date */ - message = _("Do you really want to close the order?"); - label = _("Close Date"); + if (gnc_verify_dialog (ow->dialog, FALSE, "%s", message) == FALSE) + return; + } - timespecFromTime_t (&ts, time(NULL)); - if (!gnc_dialog_date_close_parented (ow->dialog, message, label, TRUE, &ts)) - return; + /* Ok, we can close this. Ask for verification and set the closed date */ + message = _("Do you really want to close the order?"); + label = _("Close Date"); - gncOrderSetDateClosed (order, ts); + timespecFromTime_t (&ts, time(NULL)); + if (!gnc_dialog_date_close_parented (ow->dialog, message, label, TRUE, &ts)) + return; - /* save it off */ - gnc_order_window_ok_save (ow); + gncOrderSetDateClosed (order, ts); - /* Reset the type; change to read-only */ - ow->dialog_type = VIEW_ORDER; - gnc_entry_ledger_set_readonly (ow->ledger, TRUE); + /* save it off */ + gnc_order_window_ok_save (ow); - /* And redisplay the window */ - gnc_order_update_window (ow); + /* Reset the type; change to read-only */ + ow->dialog_type = VIEW_ORDER; + gnc_entry_ledger_set_readonly (ow->ledger, TRUE); + + /* And redisplay the window */ + gnc_order_update_window (ow); } void gnc_order_window_destroy_cb (GtkWidget *widget, gpointer data) { - OrderWindow *ow = data; - GncOrder *order = ow_get_order (ow); + OrderWindow *ow = data; + GncOrder *order = ow_get_order (ow); - gnc_suspend_gui_refresh (); + gnc_suspend_gui_refresh (); - if (ow->dialog_type == NEW_ORDER && order != NULL) { - gncOrderBeginEdit (order); - gncOrderDestroy (order); - ow->order_guid = *xaccGUIDNULL (); - } + if (ow->dialog_type == NEW_ORDER && order != NULL) + { + gncOrderBeginEdit (order); + gncOrderDestroy (order); + ow->order_guid = *xaccGUIDNULL (); + } - if (ow->ledger) - gnc_entry_ledger_destroy (ow->ledger); - gnc_unregister_gui_component (ow->component_id); - gnc_resume_gui_refresh (); + if (ow->ledger) + gnc_entry_ledger_destroy (ow->ledger); + gnc_unregister_gui_component (ow->component_id); + gnc_resume_gui_refresh (); - g_free (ow); + g_free (ow); } static int gnc_order_owner_changed_cb (GtkWidget *widget, gpointer data) { - OrderWindow *ow = data; - GncOrder *order; + OrderWindow *ow = data; + GncOrder *order; + + if (!ow) + return FALSE; + + if (ow->dialog_type == VIEW_ORDER) + return FALSE; + + gnc_owner_get_owner (ow->owner_choice, &(ow->owner)); + + /* Set the Order's owner now! */ + order = ow_get_order (ow); + gncOrderSetOwner (order, &(ow->owner)); + + if (ow->dialog_type == EDIT_ORDER) + return FALSE; + + /* Only set the reference during the New Job dialog */ + switch (gncOwnerGetType (&(ow->owner))) + { + case GNC_OWNER_JOB: + { + char const *msg = gncJobGetReference (gncOwnerGetJob (&(ow->owner))); + gtk_entry_set_text (GTK_ENTRY (ow->ref_entry), msg ? msg : ""); + break; + } + default: + gtk_entry_set_text (GTK_ENTRY (ow->ref_entry), ""); + break; + } - if (!ow) return FALSE; - - if (ow->dialog_type == VIEW_ORDER) - return FALSE; - - gnc_owner_get_owner (ow->owner_choice, &(ow->owner)); - - /* Set the Order's owner now! */ - order = ow_get_order (ow); - gncOrderSetOwner (order, &(ow->owner)); - - if (ow->dialog_type == EDIT_ORDER) - return FALSE; - - /* Only set the reference during the New Job dialog */ - switch (gncOwnerGetType (&(ow->owner))) { - case GNC_OWNER_JOB: - { - char const *msg = gncJobGetReference (gncOwnerGetJob (&(ow->owner))); - gtk_entry_set_text (GTK_ENTRY (ow->ref_entry), msg ? msg : ""); - break; - } - default: - gtk_entry_set_text (GTK_ENTRY (ow->ref_entry), ""); - break; - } - - return FALSE; } static void gnc_order_window_close_handler (gpointer user_data) { - OrderWindow *ow = user_data; + OrderWindow *ow = user_data; - gtk_widget_destroy (ow->dialog); + gtk_widget_destroy (ow->dialog); } static void gnc_order_window_refresh_handler (GHashTable *changes, gpointer user_data) { - OrderWindow *ow = user_data; - const EventInfo *info; - GncOrder *order = ow_get_order (ow); + OrderWindow *ow = user_data; + const EventInfo *info; + GncOrder *order = ow_get_order (ow); - /* If there isn't a order behind us, close down */ - if (!order) { - gnc_close_gui_component (ow->component_id); - return; - } - - /* Next, close if this is a destroy event */ - if (changes) { - info = gnc_gui_get_entity_events (changes, &ow->order_guid); - if (info && (info->event_mask & QOF_EVENT_DESTROY)) { - gnc_close_gui_component (ow->component_id); - return; + /* If there isn't a order behind us, close down */ + if (!order) + { + gnc_close_gui_component (ow->component_id); + return; + } + + /* Next, close if this is a destroy event */ + if (changes) + { + info = gnc_gui_get_entity_events (changes, &ow->order_guid); + if (info && (info->event_mask & QOF_EVENT_DESTROY)) + { + gnc_close_gui_component (ow->component_id); + return; + } } - } } static void gnc_order_update_window (OrderWindow *ow) { - GncOrder *order; - GncOwner *owner; - gboolean hide_cd = FALSE; + GncOrder *order; + GncOwner *owner; + gboolean hide_cd = FALSE; - order = ow_get_order (ow); - owner = gncOrderGetOwner (order); + order = ow_get_order (ow); + owner = gncOrderGetOwner (order); - if (ow->owner_choice) { - gtk_container_remove (GTK_CONTAINER (ow->owner_box), ow->owner_choice); - gtk_object_destroy (GTK_OBJECT (ow->owner_choice)); - } + if (ow->owner_choice) + { + gtk_container_remove (GTK_CONTAINER (ow->owner_box), ow->owner_choice); + gtk_object_destroy (GTK_OBJECT (ow->owner_choice)); + } - switch (ow->dialog_type) { + switch (ow->dialog_type) + { case VIEW_ORDER: case EDIT_ORDER: - ow->owner_choice = - gnc_owner_edit_create (ow->owner_label, ow->owner_box, ow->book, - owner); - break; + ow->owner_choice = + gnc_owner_edit_create (ow->owner_label, ow->owner_box, ow->book, + owner); + break; case NEW_ORDER: - ow->owner_choice = - gnc_owner_select_create (ow->owner_label, ow->owner_box, ow->book, - owner); - break; + ow->owner_choice = + gnc_owner_select_create (ow->owner_label, ow->owner_box, ow->book, + owner); + break; } - g_signal_connect (ow->owner_choice, "changed", - G_CALLBACK (gnc_order_owner_changed_cb), - ow); + g_signal_connect (ow->owner_choice, "changed", + G_CALLBACK (gnc_order_owner_changed_cb), + ow); - gtk_widget_show_all (ow->dialog); + gtk_widget_show_all (ow->dialog); - { - GtkTextBuffer* text_buffer; - const char *string; - Timespec ts, ts_zero = {0,0}; - time_t tt; + { + GtkTextBuffer* text_buffer; + const char *string; + Timespec ts, ts_zero = {0, 0}; + time_t tt; - gtk_entry_set_text (GTK_ENTRY (ow->ref_entry), - gncOrderGetReference (order)); + gtk_entry_set_text (GTK_ENTRY (ow->ref_entry), + gncOrderGetReference (order)); - string = gncOrderGetNotes (order); - text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(ow->notes_text)); - gtk_text_buffer_set_text (text_buffer, string, -1); + string = gncOrderGetNotes (order); + text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(ow->notes_text)); + gtk_text_buffer_set_text (text_buffer, string, -1); + + ts = gncOrderGetDateOpened (order); + if (timespec_equal (&ts, &ts_zero)) + { + tt = time(NULL); + } + else + { + tt = ts.tv_sec; /* XXX */ + } + gnome_date_edit_set_time (GNOME_DATE_EDIT (ow->opened_date), tt); + + + /* If this is a "New Order Window" we can stop here! */ + if (ow->dialog_type == NEW_ORDER) + return; + + ts = gncOrderGetDateClosed (order); + if (timespec_equal (&ts, &ts_zero)) + { + tt = time(NULL); + hide_cd = TRUE; + } + else + { + tt = ts.tv_sec; /* XXX */ + } + gnome_date_edit_set_time (GNOME_DATE_EDIT (ow->closed_date), tt); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ow->active_check), + gncOrderGetActive (order)); - ts = gncOrderGetDateOpened (order); - if (timespec_equal (&ts, &ts_zero)) { - tt = time(NULL); - } else { - tt = ts.tv_sec; /* XXX */ } - gnome_date_edit_set_time (GNOME_DATE_EDIT (ow->opened_date), tt); + gnc_gui_component_watch_entity_type (ow->component_id, + GNC_ORDER_MODULE_NAME, + QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); - /* If this is a "New Order Window" we can stop here! */ - if (ow->dialog_type == NEW_ORDER) - return; + gnc_table_refresh_gui (gnc_entry_ledger_get_table (ow->ledger), TRUE); - ts = gncOrderGetDateClosed (order); - if (timespec_equal (&ts, &ts_zero)) { - tt = time(NULL); - hide_cd = TRUE; - } else { - tt = ts.tv_sec; /* XXX */ + if (hide_cd) + { + GtkWidget *hide; + + gtk_widget_hide_all (ow->closed_date); + hide = glade_xml_get_widget (ow->xml, "cd_label"); + gtk_widget_hide_all (hide); + + hide = glade_xml_get_widget (ow->xml, "hide1"); + gtk_widget_hide_all (hide); + hide = glade_xml_get_widget (ow->xml, "hide2"); + gtk_widget_hide_all (hide); } - gnome_date_edit_set_time (GNOME_DATE_EDIT (ow->closed_date), tt); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ow->active_check), - gncOrderGetActive (order)); + if (ow->dialog_type == VIEW_ORDER) + { + GtkWidget *hide; - } + /* Setup viewer for read-only access */ + gtk_widget_set_sensitive (ow->id_entry, FALSE); + gtk_widget_set_sensitive (ow->opened_date, FALSE); + gtk_widget_set_sensitive (ow->closed_date, FALSE); + gtk_widget_set_sensitive (ow->notes_text, FALSE); /* XXX: Should notes remain writable? */ - gnc_gui_component_watch_entity_type (ow->component_id, - GNC_ORDER_MODULE_NAME, - QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); - - gnc_table_refresh_gui (gnc_entry_ledger_get_table (ow->ledger), TRUE); - - if (hide_cd) { - GtkWidget *hide; - - gtk_widget_hide_all (ow->closed_date); - hide = glade_xml_get_widget (ow->xml, "cd_label"); - gtk_widget_hide_all (hide); - - hide = glade_xml_get_widget (ow->xml, "hide1"); - gtk_widget_hide_all (hide); - hide = glade_xml_get_widget (ow->xml, "hide2"); - gtk_widget_hide_all (hide); - } - - if (ow->dialog_type == VIEW_ORDER) { - GtkWidget *hide; - - /* Setup viewer for read-only access */ - gtk_widget_set_sensitive (ow->id_entry, FALSE); - gtk_widget_set_sensitive (ow->opened_date, FALSE); - gtk_widget_set_sensitive (ow->closed_date, FALSE); - gtk_widget_set_sensitive (ow->notes_text, FALSE); /* XXX: Should notes remain writable? */ - - /* Hide the 'close order' button */ - hide = glade_xml_get_widget (ow->xml, "close_order_button"); - gtk_widget_hide_all (hide); - } + /* Hide the 'close order' button */ + hide = glade_xml_get_widget (ow->xml, "close_order_button"); + gtk_widget_hide_all (hide); + } } static gboolean find_handler (gpointer find_data, gpointer user_data) { - const GUID *order_guid = find_data; - OrderWindow *ow = user_data; + const GUID *order_guid = find_data; + OrderWindow *ow = user_data; - return(ow && guid_equal(&ow->order_guid, order_guid)); + return(ow && guid_equal(&ow->order_guid, order_guid)); } static OrderWindow * gnc_order_new_window (QofBook *bookp, OrderDialogType type, - GncOrder *order, GncOwner *owner) + GncOrder *order, GncOwner *owner) { - OrderWindow *ow; - GladeXML *xml; - GtkWidget *vbox, *regWidget; - GncEntryLedger *entry_ledger = NULL; - const char * class_name; + OrderWindow *ow; + GladeXML *xml; + GtkWidget *vbox, *regWidget; + GncEntryLedger *entry_ledger = NULL; + const char * class_name; - switch (type) { - case EDIT_ORDER: - class_name = DIALOG_EDIT_ORDER_CM_CLASS; - break; - case VIEW_ORDER: - default: - class_name = DIALOG_VIEW_ORDER_CM_CLASS; - break; - } - - /* - * Find an existing window for this order. If found, bring it to - * the front. - */ - if (order) { - GUID order_guid; - - order_guid = *gncOrderGetGUID(order); - ow = gnc_find_first_gui_component (class_name, find_handler, - &order_guid); - if (ow) { - gtk_window_present (GTK_WINDOW(ow->dialog)); - return(ow); + switch (type) + { + case EDIT_ORDER: + class_name = DIALOG_EDIT_ORDER_CM_CLASS; + break; + case VIEW_ORDER: + default: + class_name = DIALOG_VIEW_ORDER_CM_CLASS; + break; } - } - - /* - * No existing order window found. Build a new one. - */ - ow = g_new0 (OrderWindow, 1); - ow->book = bookp; - ow->dialog_type = type; - /* Save this for later */ - gncOwnerCopy (owner, &(ow->owner)); + /* + * Find an existing window for this order. If found, bring it to + * the front. + */ + if (order) + { + GUID order_guid; - /* Find the dialog */ - ow->xml = xml = gnc_glade_xml_new ("order.glade", "Order Entry Dialog"); - ow->dialog = glade_xml_get_widget (xml, "Order Entry Dialog"); + order_guid = *gncOrderGetGUID(order); + ow = gnc_find_first_gui_component (class_name, find_handler, + &order_guid); + if (ow) + { + gtk_window_present (GTK_WINDOW(ow->dialog)); + return(ow); + } + } - /* Grab the widgets */ - ow->id_entry = glade_xml_get_widget (xml, "id_entry"); - ow->ref_entry = glade_xml_get_widget (xml, "ref_entry"); - ow->notes_text = glade_xml_get_widget (xml, "notes_text"); - ow->opened_date = glade_xml_get_widget (xml, "opened_date"); - ow->closed_date = glade_xml_get_widget (xml, "closed_date"); - ow->active_check = glade_xml_get_widget (xml, "active_check"); - ow->owner_box = glade_xml_get_widget (xml, "owner_hbox"); - ow->owner_label = glade_xml_get_widget (xml, "owner_label"); + /* + * No existing order window found. Build a new one. + */ + ow = g_new0 (OrderWindow, 1); + ow->book = bookp; + ow->dialog_type = type; - /* Build the ledger */ - switch (type) { - case EDIT_ORDER: - entry_ledger = gnc_entry_ledger_new (ow->book, GNCENTRY_ORDER_ENTRY); - break; - case VIEW_ORDER: - default: - entry_ledger = gnc_entry_ledger_new (ow->book, GNCENTRY_ORDER_VIEWER); - break; - } + /* Save this for later */ + gncOwnerCopy (owner, &(ow->owner)); - /* Save the entry ledger for later */ - ow->ledger = entry_ledger; + /* Find the dialog */ + ow->xml = xml = gnc_glade_xml_new ("order.glade", "Order Entry Dialog"); + ow->dialog = glade_xml_get_widget (xml, "Order Entry Dialog"); - /* Set the order for the entry_ledger */ - gnc_entry_ledger_set_default_order (entry_ledger, order); + /* Grab the widgets */ + ow->id_entry = glade_xml_get_widget (xml, "id_entry"); + ow->ref_entry = glade_xml_get_widget (xml, "ref_entry"); + ow->notes_text = glade_xml_get_widget (xml, "notes_text"); + ow->opened_date = glade_xml_get_widget (xml, "opened_date"); + ow->closed_date = glade_xml_get_widget (xml, "closed_date"); + ow->active_check = glade_xml_get_widget (xml, "active_check"); + ow->owner_box = glade_xml_get_widget (xml, "owner_hbox"); + ow->owner_label = glade_xml_get_widget (xml, "owner_label"); - /* Set watches on entries */ - // entries = gncOrderGetEntries (order); - // gnc_entry_ledger_load (entry_ledger, entries); + /* Build the ledger */ + switch (type) + { + case EDIT_ORDER: + entry_ledger = gnc_entry_ledger_new (ow->book, GNCENTRY_ORDER_ENTRY); + break; + case VIEW_ORDER: + default: + entry_ledger = gnc_entry_ledger_new (ow->book, GNCENTRY_ORDER_VIEWER); + break; + } - /* Watch the order of operations, here... */ - gnucash_register_set_initial_rows( 10 ); - regWidget = gnucash_register_new (gnc_entry_ledger_get_table (entry_ledger)); - gnc_table_init_gui( regWidget, entry_ledger ); - ow->reg = GNUCASH_REGISTER (regWidget); - GNUCASH_SHEET (ow->reg->sheet)->window = GTK_WIDGET(ow->dialog); - gnc_entry_ledger_set_parent (entry_ledger, ow->dialog); + /* Save the entry ledger for later */ + ow->ledger = entry_ledger; - vbox = glade_xml_get_widget (xml, "ledger_vbox"); - // gtk_box_pack_start (GTK_BOX(vbox), toolbar, FALSE, FALSE, 2); - gtk_box_pack_start (GTK_BOX(vbox), regWidget, TRUE, TRUE, 2); + /* Set the order for the entry_ledger */ + gnc_entry_ledger_set_default_order (entry_ledger, order); - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - ow); - /* Setup initial values */ - ow->order_guid = *gncOrderGetGUID (order); + /* Set watches on entries */ + // entries = gncOrderGetEntries (order); + // gnc_entry_ledger_load (entry_ledger, entries); - gtk_entry_set_text (GTK_ENTRY (ow->id_entry), gncOrderGetID (order)); + /* Watch the order of operations, here... */ + gnucash_register_set_initial_rows( 10 ); + regWidget = gnucash_register_new (gnc_entry_ledger_get_table (entry_ledger)); + gnc_table_init_gui( regWidget, entry_ledger ); + ow->reg = GNUCASH_REGISTER (regWidget); + GNUCASH_SHEET (ow->reg->sheet)->window = GTK_WIDGET(ow->dialog); + gnc_entry_ledger_set_parent (entry_ledger, ow->dialog); - ow->component_id = - gnc_register_gui_component (class_name, - gnc_order_window_refresh_handler, - gnc_order_window_close_handler, - ow); + vbox = glade_xml_get_widget (xml, "ledger_vbox"); + // gtk_box_pack_start (GTK_BOX(vbox), toolbar, FALSE, FALSE, 2); + gtk_box_pack_start (GTK_BOX(vbox), regWidget, TRUE, TRUE, 2); - gnc_table_realize_gui (gnc_entry_ledger_get_table (entry_ledger)); + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + ow); + /* Setup initial values */ + ow->order_guid = *gncOrderGetGUID (order); - /* Now fill in a lot of the pieces and display properly */ - gnc_order_update_window (ow); + gtk_entry_set_text (GTK_ENTRY (ow->id_entry), gncOrderGetID (order)); - /* Maybe set the reference */ - gnc_order_owner_changed_cb (ow->owner_choice, ow); + ow->component_id = + gnc_register_gui_component (class_name, + gnc_order_window_refresh_handler, + gnc_order_window_close_handler, + ow); - return ow; + gnc_table_realize_gui (gnc_entry_ledger_get_table (entry_ledger)); + + /* Now fill in a lot of the pieces and display properly */ + gnc_order_update_window (ow); + + /* Maybe set the reference */ + gnc_order_owner_changed_cb (ow->owner_choice, ow); + + return ow; } static OrderWindow * gnc_order_window_new_order (QofBook *bookp, GncOwner *owner) { - OrderWindow *ow; - GladeXML *xml; - GncOrder *order; - gchar *string; + OrderWindow *ow; + GladeXML *xml; + GncOrder *order; + gchar *string; - ow = g_new0 (OrderWindow, 1); - ow->book = bookp; - ow->dialog_type = NEW_ORDER; + ow = g_new0 (OrderWindow, 1); + ow->book = bookp; + ow->dialog_type = NEW_ORDER; - order = gncOrderCreate (bookp); - gncOrderSetOwner (order, owner); + order = gncOrderCreate (bookp); + gncOrderSetOwner (order, owner); - /* Save this for later */ - gncOwnerCopy (owner, &(ow->owner)); + /* Save this for later */ + gncOwnerCopy (owner, &(ow->owner)); - /* Find the dialog */ - xml = gnc_glade_xml_new ("order.glade", "New Order Dialog"); - ow->dialog = glade_xml_get_widget (xml, "New Order Dialog"); + /* Find the dialog */ + xml = gnc_glade_xml_new ("order.glade", "New Order Dialog"); + ow->dialog = glade_xml_get_widget (xml, "New Order Dialog"); - g_object_set_data (G_OBJECT (ow->dialog), "dialog_info", ow); + g_object_set_data (G_OBJECT (ow->dialog), "dialog_info", ow); - /* Grab the widgets */ - ow->id_entry = glade_xml_get_widget (xml, "id_entry"); - ow->ref_entry = glade_xml_get_widget (xml, "ref_entry"); - ow->notes_text = glade_xml_get_widget (xml, "notes_text"); - ow->opened_date = glade_xml_get_widget (xml, "opened_date"); - ow->owner_box = glade_xml_get_widget (xml, "owner_hbox"); - ow->owner_label = glade_xml_get_widget (xml, "owner_label"); + /* Grab the widgets */ + ow->id_entry = glade_xml_get_widget (xml, "id_entry"); + ow->ref_entry = glade_xml_get_widget (xml, "ref_entry"); + ow->notes_text = glade_xml_get_widget (xml, "notes_text"); + ow->opened_date = glade_xml_get_widget (xml, "opened_date"); + ow->owner_box = glade_xml_get_widget (xml, "owner_hbox"); + ow->owner_label = glade_xml_get_widget (xml, "owner_label"); - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - ow); - /* Setup initial values */ - ow->order_guid = *gncOrderGetGUID (order); - string = g_strdup_printf ("%.6" G_GINT64_FORMAT, - gncOrderNextID(bookp)); - gtk_entry_set_text (GTK_ENTRY (ow->id_entry), string); - g_free(string); - - ow->component_id = - gnc_register_gui_component (DIALOG_NEW_ORDER_CM_CLASS, - gnc_order_window_refresh_handler, - gnc_order_window_close_handler, - ow); + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + ow); + /* Setup initial values */ + ow->order_guid = *gncOrderGetGUID (order); + string = g_strdup_printf ("%.6" G_GINT64_FORMAT, + gncOrderNextID(bookp)); + gtk_entry_set_text (GTK_ENTRY (ow->id_entry), string); + g_free(string); - /* Now fill in a lot of the pieces and display properly */ - gnc_order_update_window (ow); + ow->component_id = + gnc_register_gui_component (DIALOG_NEW_ORDER_CM_CLASS, + gnc_order_window_refresh_handler, + gnc_order_window_close_handler, + ow); - /* Maybe set the reference */ - gnc_order_owner_changed_cb (ow->owner_choice, ow); + /* Now fill in a lot of the pieces and display properly */ + gnc_order_update_window (ow); - return ow; + /* Maybe set the reference */ + gnc_order_owner_changed_cb (ow->owner_choice, ow); + + return ow; } OrderWindow * gnc_ui_order_edit (GncOrder *order) { - OrderWindow *ow; - OrderDialogType type; + OrderWindow *ow; + OrderDialogType type; - if (!order) return NULL; + if (!order) return NULL; - type = EDIT_ORDER; - { - Timespec ts = gncOrderGetDateClosed (order); - if (ts.tv_sec || ts.tv_nsec) - type = VIEW_ORDER; - } + type = EDIT_ORDER; + { + Timespec ts = gncOrderGetDateClosed (order); + if (ts.tv_sec || ts.tv_nsec) + type = VIEW_ORDER; + } - ow = gnc_order_new_window (gncOrderGetBook(order), type, order, - gncOrderGetOwner (order)); + ow = gnc_order_new_window (gncOrderGetBook(order), type, order, + gncOrderGetOwner (order)); - return ow; + return ow; } OrderWindow * gnc_ui_order_new (GncOwner *ownerp, QofBook *bookp) { - OrderWindow *ow; - GncOwner owner; + OrderWindow *ow; + GncOwner owner; - if (ownerp) { - switch (gncOwnerGetType (ownerp)) { - case GNC_OWNER_CUSTOMER: - case GNC_OWNER_VENDOR: - case GNC_OWNER_JOB: - gncOwnerCopy (ownerp, &owner); - break; - default: - g_warning ("Cannot deal with unknown Owner types"); - /* XXX: popup a warning? */ - return NULL; + if (ownerp) + { + switch (gncOwnerGetType (ownerp)) + { + case GNC_OWNER_CUSTOMER: + case GNC_OWNER_VENDOR: + case GNC_OWNER_JOB: + gncOwnerCopy (ownerp, &owner); + break; + default: + g_warning ("Cannot deal with unknown Owner types"); + /* XXX: popup a warning? */ + return NULL; + } } - } else - gncOwnerInitJob (&owner, NULL); /* XXX: pass in the owner type? */ + else + gncOwnerInitJob (&owner, NULL); /* XXX: pass in the owner type? */ - /* Make sure required options exist */ - if (!bookp) return NULL; + /* Make sure required options exist */ + if (!bookp) return NULL; - ow = gnc_order_window_new_order (bookp, &owner); + ow = gnc_order_window_new_order (bookp, &owner); - return ow; + return ow; } /* Functions for order selection widgets */ @@ -753,163 +784,171 @@ gnc_ui_order_new (GncOwner *ownerp, QofBook *bookp) static void edit_order_cb (gpointer *order_p, gpointer user_data) { - GncOrder *order; + GncOrder *order; - g_return_if_fail (order_p && user_data); + g_return_if_fail (order_p && user_data); - order = *order_p; + order = *order_p; - if (order) - gnc_ui_order_edit (order); + if (order) + gnc_ui_order_edit (order); - return; + return; } static gpointer new_order_cb (gpointer user_data) { - struct _order_select_window *sw = user_data; - OrderWindow *ow; - - g_return_val_if_fail (user_data, NULL); + struct _order_select_window *sw = user_data; + OrderWindow *ow; - ow = gnc_ui_order_new (sw->owner, sw->book); - return ow_get_order (ow); + g_return_val_if_fail (user_data, NULL); + + ow = gnc_ui_order_new (sw->owner, sw->book); + return ow_get_order (ow); } static void free_order_cb (gpointer user_data) { - struct _order_select_window *sw = user_data; + struct _order_select_window *sw = user_data; - g_return_if_fail (sw); + g_return_if_fail (sw); - gncQueryDestroy (sw->q); - g_free (sw); + gncQueryDestroy (sw->q); + g_free (sw); } GNCSearchWindow * gnc_order_search (GncOrder *start, GncOwner *owner, QofBook *book) { - GNCIdType type = GNC_ORDER_MODULE_NAME; - struct _order_select_window *sw; - QueryNew *q, *q2 = NULL; - static GList *params = NULL; - static GList *columns = NULL; - static GNCSearchCallbackButton buttons[] = { - { N_("View/Edit Order"), edit_order_cb}, - { NULL }, - }; + GNCIdType type = GNC_ORDER_MODULE_NAME; + struct _order_select_window *sw; + QueryNew *q, *q2 = NULL; + static GList *params = NULL; + static GList *columns = NULL; + static GNCSearchCallbackButton buttons[] = + { + { N_("View/Edit Order"), edit_order_cb}, + { NULL }, + }; - g_return_val_if_fail (book, NULL); + g_return_val_if_fail (book, NULL); - /* Build parameter list in reverse order*/ - if (params == NULL) { - params = gnc_search_param_prepend (params, _("Order Notes"), NULL, type, - ORDER_NOTES, NULL); - params = gnc_search_param_prepend (params, _("Date Closed"), NULL, type, - ORDER_CLOSED, NULL); - params = gnc_search_param_prepend (params, _("Is Closed?"), NULL, type, - ORDER_IS_CLOSED, NULL); - params = gnc_search_param_prepend (params, _("Date Opened"), NULL, type, - ORDER_OPENED, NULL); - params = gnc_search_param_prepend (params, _("Owner Name "), NULL, type, - ORDER_OWNER, OWNER_NAME, NULL); - params = gnc_search_param_prepend (params, _("Order ID"), NULL, type, - ORDER_ID, NULL); - } + /* Build parameter list in reverse order*/ + if (params == NULL) + { + params = gnc_search_param_prepend (params, _("Order Notes"), NULL, type, + ORDER_NOTES, NULL); + params = gnc_search_param_prepend (params, _("Date Closed"), NULL, type, + ORDER_CLOSED, NULL); + params = gnc_search_param_prepend (params, _("Is Closed?"), NULL, type, + ORDER_IS_CLOSED, NULL); + params = gnc_search_param_prepend (params, _("Date Opened"), NULL, type, + ORDER_OPENED, NULL); + params = gnc_search_param_prepend (params, _("Owner Name "), NULL, type, + ORDER_OWNER, OWNER_NAME, NULL); + params = gnc_search_param_prepend (params, _("Order ID"), NULL, type, + ORDER_ID, NULL); + } - /* Build the column list in reverse order */ - if (columns == NULL) { - columns = gnc_search_param_prepend (columns, _("Billing ID"), NULL, type, - ORDER_REFERENCE, NULL); - columns = gnc_search_param_prepend (columns, _("Company"), NULL, type, - ORDER_OWNER, OWNER_PARENT, - OWNER_NAME, NULL); - columns = gnc_search_param_prepend (columns, _("Closed"), NULL, type, - ORDER_CLOSED, NULL); - columns = gnc_search_param_prepend (columns, _("Opened"), NULL, type, - ORDER_OPENED, NULL); - columns = gnc_search_param_prepend (columns, _("Num"), NULL, type, - ORDER_ID, NULL); - } + /* Build the column list in reverse order */ + if (columns == NULL) + { + columns = gnc_search_param_prepend (columns, _("Billing ID"), NULL, type, + ORDER_REFERENCE, NULL); + columns = gnc_search_param_prepend (columns, _("Company"), NULL, type, + ORDER_OWNER, OWNER_PARENT, + OWNER_NAME, NULL); + columns = gnc_search_param_prepend (columns, _("Closed"), NULL, type, + ORDER_CLOSED, NULL); + columns = gnc_search_param_prepend (columns, _("Opened"), NULL, type, + ORDER_OPENED, NULL); + columns = gnc_search_param_prepend (columns, _("Num"), NULL, type, + ORDER_ID, NULL); + } - /* Build the queries */ - q = gncQueryCreateFor (type); - gncQuerySetBook (q, book); + /* Build the queries */ + q = gncQueryCreateFor (type); + gncQuerySetBook (q, book); - /* If owner is supplied, limit all searches to orders who's owner - * (or parent) is the supplied owner! - */ - if (owner && gncOwnerGetGUID (owner)) { - QueryNew *tmp, *q3; + /* If owner is supplied, limit all searches to orders who's owner + * (or parent) is the supplied owner! + */ + if (owner && gncOwnerGetGUID (owner)) + { + QueryNew *tmp, *q3; - q3 = gncQueryCreateFor (type); - gncQueryAddGUIDMatch (q3, g_slist_prepend - (g_slist_prepend (NULL, QUERY_PARAM_GUID), - ORDER_OWNER), - gncOwnerGetGUID (owner), QUERY_OR); - gncQueryAddGUIDMatch (q3, g_slist_prepend - (g_slist_prepend (NULL, OWNER_PARENTG), - ORDER_OWNER), - gncOwnerGetGUID (owner), QUERY_OR); + q3 = gncQueryCreateFor (type); + gncQueryAddGUIDMatch (q3, g_slist_prepend + (g_slist_prepend (NULL, QUERY_PARAM_GUID), + ORDER_OWNER), + gncOwnerGetGUID (owner), QUERY_OR); + gncQueryAddGUIDMatch (q3, g_slist_prepend + (g_slist_prepend (NULL, OWNER_PARENTG), + ORDER_OWNER), + gncOwnerGetGUID (owner), QUERY_OR); - tmp = gncQueryMerge (q, q3, QUERY_AND); - gncQueryDestroy (q); - gncQueryDestroy (q3); - q = tmp; - q2 = gncQueryCopy (q); - } + tmp = gncQueryMerge (q, q3, QUERY_AND); + gncQueryDestroy (q); + gncQueryDestroy (q3); + q = tmp; + q2 = gncQueryCopy (q); + } #if 0 - if (start) { - if (q2 == NULL) - q2 = gncQueryCopy (q); + if (start) + { + if (q2 == NULL) + q2 = gncQueryCopy (q); - gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), - gncOrderGetGUID (start), QUERY_AND); - } + gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), + gncOrderGetGUID (start), QUERY_AND); + } #endif - /* launch select dialog and return the result */ - sw = g_new0 (struct _order_select_window, 1); + /* launch select dialog and return the result */ + sw = g_new0 (struct _order_select_window, 1); - if (owner) { - gncOwnerCopy (owner, &(sw->owner_def)); - sw->owner = &(sw->owner_def); - } - sw->book = book; - sw->q = q; + if (owner) + { + gncOwnerCopy (owner, &(sw->owner_def)); + sw->owner = &(sw->owner_def); + } + sw->book = book; + sw->q = q; - return gnc_search_dialog_create (type, _("Find Order"), - params, columns, q, q2, - buttons, NULL, new_order_cb, - sw, free_order_cb, GCONF_SECTION_SEARCH, - NULL); + return gnc_search_dialog_create (type, _("Find Order"), + params, columns, q, q2, + buttons, NULL, new_order_cb, + sw, free_order_cb, GCONF_SECTION_SEARCH, + NULL); } GNCSearchWindow * gnc_order_search_select (gpointer start, gpointer book) { - GncOrder *o = start; - GncOwner owner, *ownerp; + GncOrder *o = start; + GncOwner owner, *ownerp; - if (!book) return NULL; + if (!book) return NULL; - if (o) { - ownerp = gncOrderGetOwner (o); - gncOwnerCopy (ownerp, &owner); - } else - gncOwnerInitCustomer (&owner, NULL); /* XXX */ + if (o) + { + ownerp = gncOrderGetOwner (o); + gncOwnerCopy (ownerp, &owner); + } + else + gncOwnerInitCustomer (&owner, NULL); /* XXX */ - return gnc_order_search (start, NULL, book); + return gnc_order_search (start, NULL, book); } GNCSearchWindow * gnc_order_search_edit (gpointer start, gpointer book) { - if (start) - gnc_ui_order_edit (start); + if (start) + gnc_ui_order_edit (start); - return NULL; + return NULL; } diff --git a/src/business/business-gnome/dialog-order.h b/src/business/business-gnome/dialog-order.h index 5fff9ab5f3..2398235e1c 100644 --- a/src/business/business-gnome/dialog-order.h +++ b/src/business/business-gnome/dialog-order.h @@ -37,7 +37,7 @@ OrderWindow * gnc_ui_order_new (GncOwner *owner, QofBook *book); /* Search for orders */ GNCSearchWindow * gnc_order_search (GncOrder *start, GncOwner *owner, - QofBook *book); + QofBook *book); /* * These callbacks are for use with the gnc_general_search widget diff --git a/src/business/business-gnome/dialog-payment.c b/src/business/business-gnome/dialog-payment.c index f0256a040e..a9fc707059 100644 --- a/src/business/business-gnome/dialog-payment.c +++ b/src/business/business-gnome/dialog-payment.c @@ -50,24 +50,25 @@ #define DIALOG_PAYMENT_CUSTOMER_CM_CLASS "customer-payment-dialog" #define DIALOG_PAYMENT_VENDOR_CM_CLASS "vendor-payment-dialog" -struct _payment_window { - GtkWidget * dialog; +struct _payment_window +{ + GtkWidget * dialog; - GtkWidget * num_entry; - GtkWidget * memo_entry; - GtkWidget * post_combo; - GtkWidget * owner_choice; - GtkWidget * invoice_choice; - GtkWidget * amount_edit; - GtkWidget * date_edit; - GtkWidget * acct_tree; + GtkWidget * num_entry; + GtkWidget * memo_entry; + GtkWidget * post_combo; + GtkWidget * owner_choice; + GtkWidget * invoice_choice; + GtkWidget * amount_edit; + GtkWidget * date_edit; + GtkWidget * acct_tree; - gint component_id; - QofBook * book; - GncOwner owner; - GncInvoice * invoice; - GList * acct_types; - GList * acct_commodities; + gint component_id; + QofBook * book; + GncOwner owner; + GncInvoice * invoice; + GList * acct_types; + GList * acct_commodities; }; @@ -75,518 +76,535 @@ void gnc_payment_ok_cb (GtkWidget *widget, gpointer data); void gnc_payment_cancel_cb (GtkWidget *widget, gpointer data); void gnc_payment_window_destroy_cb (GtkWidget *widget, gpointer data); void gnc_payment_acct_tree_row_activated_cb (GtkWidget *widget, GtkTreePath *path, - GtkTreeViewColumn *column, PaymentWindow *pw); + GtkTreeViewColumn *column, PaymentWindow *pw); static void gnc_payment_window_refresh_handler (GHashTable *changes, gpointer data) { - PaymentWindow *pw = data; + PaymentWindow *pw = data; - gnc_fill_account_select_combo (pw->post_combo, pw->book, pw->acct_types, pw->acct_commodities); + gnc_fill_account_select_combo (pw->post_combo, pw->book, pw->acct_types, pw->acct_commodities); } static void gnc_payment_window_close_handler (gpointer data) { - PaymentWindow *pw = data; + PaymentWindow *pw = data; - if (pw) - gtk_widget_destroy (pw->dialog); + if (pw) + gtk_widget_destroy (pw->dialog); } static void gnc_payment_dialog_invoice_changed(PaymentWindow *pw) { - GNCLot *lot; - gnc_numeric val; + GNCLot *lot; + gnc_numeric val; - /* Set the payment amount in the dialog */ - if (pw->invoice) { - lot = gncInvoiceGetPostedLot (pw->invoice); - val = gnc_numeric_abs (gnc_lot_get_balance (lot)); - } else { - val = gnc_numeric_zero(); - } + /* Set the payment amount in the dialog */ + if (pw->invoice) + { + lot = gncInvoiceGetPostedLot (pw->invoice); + val = gnc_numeric_abs (gnc_lot_get_balance (lot)); + } + else + { + val = gnc_numeric_zero(); + } - gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT(pw->amount_edit), val); + gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT(pw->amount_edit), val); } static void gnc_payment_dialog_owner_changed(PaymentWindow *pw) { - Account *last_acct=NULL; - GUID *guid=NULL; - KvpValue* value; - KvpFrame* slots; + Account *last_acct = NULL; + GUID *guid = NULL; + KvpValue* value; + KvpFrame* slots; - /* If the owner changed, the invoice selection is invalid */ - pw->invoice = NULL; - gnc_invoice_set_owner(pw->invoice_choice, &pw->owner); - /* note that set_owner implies ...set_invoice(...,NULL); */ + /* If the owner changed, the invoice selection is invalid */ + pw->invoice = NULL; + gnc_invoice_set_owner(pw->invoice_choice, &pw->owner); + /* note that set_owner implies ...set_invoice(...,NULL); */ - /* in case we don't get the callback */ - gnc_payment_dialog_invoice_changed(pw); + /* in case we don't get the callback */ + gnc_payment_dialog_invoice_changed(pw); - /* XXX: We should set the sensitive flag on the invoice_choice - * based on whether 'owner' is NULL or not... - */ + /* XXX: We should set the sensitive flag on the invoice_choice + * based on whether 'owner' is NULL or not... + */ - /* Now handle the account tree */ - slots = gncOwnerGetSlots(&pw->owner); - if (slots) - { - value = kvp_frame_get_slot_path(slots, "payment", "last_acct", NULL); - if (value) + /* Now handle the account tree */ + slots = gncOwnerGetSlots(&pw->owner); + if (slots) { - guid = kvp_value_get_guid(value); + value = kvp_frame_get_slot_path(slots, "payment", "last_acct", NULL); + if (value) + { + guid = kvp_value_get_guid(value); + } } - } - /* refresh the post and acc available accounts, but cleanup first */ - if (pw->acct_types) - { - g_list_free(pw->acct_types); - pw->acct_types = NULL; - } + /* refresh the post and acc available accounts, but cleanup first */ + if (pw->acct_types) + { + g_list_free(pw->acct_types); + pw->acct_types = NULL; + } - if (pw->acct_commodities) - { - g_list_free(pw->acct_commodities); - pw->acct_commodities = NULL; - } + if (pw->acct_commodities) + { + g_list_free(pw->acct_commodities); + pw->acct_commodities = NULL; + } - pw->acct_types = gnc_business_account_types(&pw->owner); - pw->acct_commodities = gnc_business_commodities (&pw->owner); - gnc_fill_account_select_combo (pw->post_combo, pw->book, pw->acct_types, pw->acct_commodities); + pw->acct_types = gnc_business_account_types(&pw->owner); + pw->acct_commodities = gnc_business_commodities (&pw->owner); + gnc_fill_account_select_combo (pw->post_combo, pw->book, pw->acct_types, pw->acct_commodities); - if (guid) - { - last_acct = xaccAccountLookup(guid, pw->book); - } + if (guid) + { + last_acct = xaccAccountLookup(guid, pw->book); + } - /* Set the last-used transfer account */ - if (last_acct) { - gnc_tree_view_account_set_selected_account(GNC_TREE_VIEW_ACCOUNT(pw->acct_tree), - last_acct); - } + /* Set the last-used transfer account */ + if (last_acct) + { + gnc_tree_view_account_set_selected_account(GNC_TREE_VIEW_ACCOUNT(pw->acct_tree), + last_acct); + } } static void gnc_payment_dialog_remember_account(PaymentWindow *pw, Account *acc) { - KvpValue* value; - KvpFrame* slots = gncOwnerGetSlots(&pw->owner); + KvpValue* value; + KvpFrame* slots = gncOwnerGetSlots(&pw->owner); - if (!acc) return; - if (!slots) return; + if (!acc) return; + if (!slots) return; - value = kvp_value_new_guid(xaccAccountGetGUID(acc)); - if (!value) return; - - kvp_frame_set_slot_path(slots, value, "payment", "last_acct", NULL); - kvp_value_delete(value); + value = kvp_value_new_guid(xaccAccountGetGUID(acc)); + if (!value) return; - /* XXX: FIXME: Need a commit_edit here to save the data! */ + kvp_frame_set_slot_path(slots, value, "payment", "last_acct", NULL); + kvp_value_delete(value); + + /* XXX: FIXME: Need a commit_edit here to save the data! */ } static void gnc_payment_set_owner (PaymentWindow *pw, GncOwner *owner) { - gnc_owner_set_owner (pw->owner_choice, owner); - gnc_payment_dialog_owner_changed(pw); + gnc_owner_set_owner (pw->owner_choice, owner); + gnc_payment_dialog_owner_changed(pw); } static int gnc_payment_dialog_owner_changed_cb (GtkWidget *widget, gpointer data) { - PaymentWindow *pw = data; - GncOwner owner; + PaymentWindow *pw = data; + GncOwner owner; - if (!pw) return FALSE; + if (!pw) return FALSE; - gncOwnerCopy (&(pw->owner), &owner); - gnc_owner_get_owner (pw->owner_choice, &owner); + gncOwnerCopy (&(pw->owner), &owner); + gnc_owner_get_owner (pw->owner_choice, &owner); - /* If this owner really changed, then reset ourselves */ - if (!gncOwnerEqual (&owner, &(pw->owner))) { - gncOwnerCopy (&owner, &(pw->owner)); - gnc_payment_dialog_owner_changed(pw); - } + /* If this owner really changed, then reset ourselves */ + if (!gncOwnerEqual (&owner, &(pw->owner))) + { + gncOwnerCopy (&owner, &(pw->owner)); + gnc_payment_dialog_owner_changed(pw); + } - return FALSE; + return FALSE; } static int gnc_payment_dialog_invoice_changed_cb (GtkWidget *widget, gpointer data) { - PaymentWindow *pw = data; - GncInvoice *invoice; + PaymentWindow *pw = data; + GncInvoice *invoice; - if (!pw) return FALSE; + if (!pw) return FALSE; - invoice = gnc_invoice_get_invoice (pw->invoice_choice); + invoice = gnc_invoice_get_invoice (pw->invoice_choice); - /* If this invoice really changed, then reset ourselves */ - if (invoice != pw->invoice) { - pw->invoice = invoice; - gnc_payment_dialog_invoice_changed(pw); - } + /* If this invoice really changed, then reset ourselves */ + if (invoice != pw->invoice) + { + pw->invoice = invoice; + gnc_payment_dialog_invoice_changed(pw); + } - return FALSE; + return FALSE; } void gnc_payment_ok_cb (GtkWidget *widget, gpointer data) { - PaymentWindow *pw = data; - const char *text; - Account *post, *acc; - gnc_numeric amount; + PaymentWindow *pw = data; + const char *text; + Account *post, *acc; + gnc_numeric amount; - if (!pw) - return; + if (!pw) + return; - /* Verify the amount is non-zero */ - amount = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (pw->amount_edit)); - if (gnc_numeric_check (amount) || !gnc_numeric_positive_p (amount)) { - text = _("You must enter the amount of the payment. " - "The payment amount must be greater than zero."); - gnc_error_dialog (pw->dialog, "%s", text); - return; - } - - /* Verify the user has selected an owner */ - gnc_owner_get_owner (pw->owner_choice, &(pw->owner)); - if (pw->owner.owner.undefined == NULL) { - text = _("You must select a company for payment processing."); - gnc_error_dialog (pw->dialog, "%s", text); - return; - } - - /* Verify the user has selected a transfer account */ - acc = gnc_tree_view_account_get_selected_account (GNC_TREE_VIEW_ACCOUNT(pw->acct_tree)); - if (!acc) { - text = _("You must select a transfer account from the account tree."); - gnc_error_dialog (pw->dialog, "%s", text); - return; - } - - /* Verify the "post" account */ - text = gtk_combo_box_get_active_text(GTK_COMBO_BOX(pw->post_combo)); - if (!text || safe_strcmp (text, "") == 0) { - text = _("You must enter an account name for posting."); - gnc_error_dialog (pw->dialog, "%s", text); - return; - } - - post = gnc_account_lookup_by_full_name (gnc_book_get_root_account (pw->book), text); - - if (!post) { - char *msg = g_strdup_printf ( - _("Your selected post account, %s, does not exist"), - text); - gnc_error_dialog (pw->dialog, "%s", msg); - g_free (msg); - return; - } - - /* Ok, now post the damn thing */ - gnc_suspend_gui_refresh (); - { - const char *memo, *num; - Timespec date; - gnc_numeric exch = gnc_numeric_create(1,1); //default to "one to one" rate - - /* Obtain all our ancillary information */ - memo = gtk_entry_get_text (GTK_ENTRY (pw->memo_entry)); - num = gtk_entry_get_text (GTK_ENTRY (pw->num_entry)); - date = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (pw->date_edit)); - - /* If the 'acc' account and the post account don't have the same - currency, we need to get the user to specify the exchange rate */ - if (!gnc_commodity_equal(xaccAccountGetCommodity(acc), xaccAccountGetCommodity(post))) + /* Verify the amount is non-zero */ + amount = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (pw->amount_edit)); + if (gnc_numeric_check (amount) || !gnc_numeric_positive_p (amount)) { - XferDialog* xfer; - - text = _("The transfer and post accounts are associated with different currencies. Please specify the conversion rate."); - - xfer = gnc_xfer_dialog(pw->dialog, acc); - gnc_info_dialog(pw->dialog, "%s", text); - - gnc_xfer_dialog_select_to_account(xfer,post); - gnc_xfer_dialog_set_amount(xfer, amount); - - /* All we want is the exchange rate so prevent the user from thinking - it makes sense to mess with other stuff */ - gnc_xfer_dialog_set_from_show_button_active(xfer, FALSE); - gnc_xfer_dialog_set_to_show_button_active(xfer, FALSE); - gnc_xfer_dialog_hide_from_account_tree(xfer); - gnc_xfer_dialog_hide_to_account_tree(xfer); - gnc_xfer_dialog_is_exchange_dialog(xfer, &exch); - gnc_xfer_dialog_run_until_done(xfer); + text = _("You must enter the amount of the payment. " + "The payment amount must be greater than zero."); + gnc_error_dialog (pw->dialog, "%s", text); + return; } - - /* Now apply the payment */ - gncOwnerApplyPayment (&pw->owner, pw->invoice, - post, acc, amount, exch, date, memo, num); - - } - gnc_resume_gui_refresh (); - /* Save the transfer account, acc */ - gnc_payment_dialog_remember_account(pw, acc); + /* Verify the user has selected an owner */ + gnc_owner_get_owner (pw->owner_choice, &(pw->owner)); + if (pw->owner.owner.undefined == NULL) + { + text = _("You must select a company for payment processing."); + gnc_error_dialog (pw->dialog, "%s", text); + return; + } - gnc_ui_payment_window_destroy (pw); + /* Verify the user has selected a transfer account */ + acc = gnc_tree_view_account_get_selected_account (GNC_TREE_VIEW_ACCOUNT(pw->acct_tree)); + if (!acc) + { + text = _("You must select a transfer account from the account tree."); + gnc_error_dialog (pw->dialog, "%s", text); + return; + } + + /* Verify the "post" account */ + text = gtk_combo_box_get_active_text(GTK_COMBO_BOX(pw->post_combo)); + if (!text || safe_strcmp (text, "") == 0) + { + text = _("You must enter an account name for posting."); + gnc_error_dialog (pw->dialog, "%s", text); + return; + } + + post = gnc_account_lookup_by_full_name (gnc_book_get_root_account (pw->book), text); + + if (!post) + { + char *msg = g_strdup_printf ( + _("Your selected post account, %s, does not exist"), + text); + gnc_error_dialog (pw->dialog, "%s", msg); + g_free (msg); + return; + } + + /* Ok, now post the damn thing */ + gnc_suspend_gui_refresh (); + { + const char *memo, *num; + Timespec date; + gnc_numeric exch = gnc_numeric_create(1, 1); //default to "one to one" rate + + /* Obtain all our ancillary information */ + memo = gtk_entry_get_text (GTK_ENTRY (pw->memo_entry)); + num = gtk_entry_get_text (GTK_ENTRY (pw->num_entry)); + date = gnc_date_edit_get_date_ts (GNC_DATE_EDIT (pw->date_edit)); + + /* If the 'acc' account and the post account don't have the same + currency, we need to get the user to specify the exchange rate */ + if (!gnc_commodity_equal(xaccAccountGetCommodity(acc), xaccAccountGetCommodity(post))) + { + XferDialog* xfer; + + text = _("The transfer and post accounts are associated with different currencies. Please specify the conversion rate."); + + xfer = gnc_xfer_dialog(pw->dialog, acc); + gnc_info_dialog(pw->dialog, "%s", text); + + gnc_xfer_dialog_select_to_account(xfer, post); + gnc_xfer_dialog_set_amount(xfer, amount); + + /* All we want is the exchange rate so prevent the user from thinking + it makes sense to mess with other stuff */ + gnc_xfer_dialog_set_from_show_button_active(xfer, FALSE); + gnc_xfer_dialog_set_to_show_button_active(xfer, FALSE); + gnc_xfer_dialog_hide_from_account_tree(xfer); + gnc_xfer_dialog_hide_to_account_tree(xfer); + gnc_xfer_dialog_is_exchange_dialog(xfer, &exch); + gnc_xfer_dialog_run_until_done(xfer); + } + + /* Now apply the payment */ + gncOwnerApplyPayment (&pw->owner, pw->invoice, + post, acc, amount, exch, date, memo, num); + + } + gnc_resume_gui_refresh (); + + /* Save the transfer account, acc */ + gnc_payment_dialog_remember_account(pw, acc); + + gnc_ui_payment_window_destroy (pw); } void gnc_payment_cancel_cb (GtkWidget *widget, gpointer data) { - PaymentWindow *pw = data; - gnc_ui_payment_window_destroy (pw); + PaymentWindow *pw = data; + gnc_ui_payment_window_destroy (pw); } void gnc_payment_window_destroy_cb (GtkWidget *widget, gpointer data) { - PaymentWindow *pw = data; + PaymentWindow *pw = data; - if (!pw) return; + if (!pw) return; - gnc_unregister_gui_component (pw->component_id); + gnc_unregister_gui_component (pw->component_id); - g_list_free (pw->acct_types); - g_list_free (pw->acct_commodities); - g_free (pw); + g_list_free (pw->acct_types); + g_list_free (pw->acct_commodities); + g_free (pw); } void gnc_payment_acct_tree_row_activated_cb (GtkWidget *widget, GtkTreePath *path, GtkTreeViewColumn *column, PaymentWindow *pw) { -GtkTreeView *view; -GtkTreeModel *model; -GtkTreeIter iter; + GtkTreeView *view; + GtkTreeModel *model; + GtkTreeIter iter; -g_return_if_fail(widget); -view = GTK_TREE_VIEW(widget); + g_return_if_fail(widget); + view = GTK_TREE_VIEW(widget); -model = gtk_tree_view_get_model(view); -if (gtk_tree_model_get_iter(model, &iter, path)) -{ - if (gtk_tree_model_iter_has_child(model, &iter)) - { - /* There are children, - * just expand or collapse the row. */ - if (gtk_tree_view_row_expanded(view, path)) - gtk_tree_view_collapse_row(view, path); - else - gtk_tree_view_expand_row(view, path, FALSE); - } - else - /* It's an account without any children, so click the Ok button. */ - gnc_payment_ok_cb(widget, pw); -} + model = gtk_tree_view_get_model(view); + if (gtk_tree_model_get_iter(model, &iter, path)) + { + if (gtk_tree_model_iter_has_child(model, &iter)) + { + /* There are children, + * just expand or collapse the row. */ + if (gtk_tree_view_row_expanded(view, path)) + gtk_tree_view_collapse_row(view, path); + else + gtk_tree_view_expand_row(view, path, FALSE); + } + else + /* It's an account without any children, so click the Ok button. */ + gnc_payment_ok_cb(widget, pw); + } } /* Select the list of accounts to show in the tree */ static void gnc_payment_set_account_types (GncTreeViewAccount *tree) { - AccountViewInfo avi; - int i; + AccountViewInfo avi; + int i; - gnc_tree_view_account_get_view_info (tree, &avi); + gnc_tree_view_account_get_view_info (tree, &avi); - for (i = 0; i < NUM_ACCOUNT_TYPES; i++) - switch (i) { - case ACCT_TYPE_BANK: - case ACCT_TYPE_CASH: - case ACCT_TYPE_CREDIT: - case ACCT_TYPE_ASSET: - case ACCT_TYPE_LIABILITY: - avi.include_type[i] = TRUE; - break; - default: - avi.include_type[i] = FALSE; - break; - } + for (i = 0; i < NUM_ACCOUNT_TYPES; i++) + switch (i) + { + case ACCT_TYPE_BANK: + case ACCT_TYPE_CASH: + case ACCT_TYPE_CREDIT: + case ACCT_TYPE_ASSET: + case ACCT_TYPE_LIABILITY: + avi.include_type[i] = TRUE; + break; + default: + avi.include_type[i] = FALSE; + break; + } - gnc_tree_view_account_set_view_info (tree, &avi); + gnc_tree_view_account_set_view_info (tree, &avi); } static gboolean find_handler (gpointer find_data, gpointer user_data) { - PaymentWindow *pw = user_data; + PaymentWindow *pw = user_data; - return (pw != NULL); + return (pw != NULL); } static PaymentWindow * new_payment_window (GncOwner *owner, QofBook *book, GncInvoice *invoice) { - PaymentWindow *pw; - GladeXML *xml; - GtkWidget *box, *label; - char * cm_class = (gncOwnerGetType (owner) == GNC_OWNER_CUSTOMER ? - DIALOG_PAYMENT_CUSTOMER_CM_CLASS : - DIALOG_PAYMENT_VENDOR_CM_CLASS); + PaymentWindow *pw; + GladeXML *xml; + GtkWidget *box, *label; + char * cm_class = (gncOwnerGetType (owner) == GNC_OWNER_CUSTOMER ? + DIALOG_PAYMENT_CUSTOMER_CM_CLASS : + DIALOG_PAYMENT_VENDOR_CM_CLASS); - /* - * Find an existing payment window. If found, bring it to - * the front. If we have an actual owner, then set it in - * the window. - */ + /* + * Find an existing payment window. If found, bring it to + * the front. If we have an actual owner, then set it in + * the window. + */ - pw = gnc_find_first_gui_component (cm_class, find_handler, NULL); - if (pw) { - if (owner->owner.undefined) - gnc_payment_set_owner (pw, owner); + pw = gnc_find_first_gui_component (cm_class, find_handler, NULL); + if (pw) + { + if (owner->owner.undefined) + gnc_payment_set_owner (pw, owner); - gtk_window_present (GTK_WINDOW(pw->dialog)); - return(pw); - } - - /* Ok, we need a new window */ - - pw = g_new0 (PaymentWindow, 1); - pw->book = book; - gncOwnerCopy (owner, &(pw->owner)); - - /* Compute the post-to account types */ - pw->acct_types = gnc_business_account_types (owner); - - pw->acct_commodities = gnc_business_commodities (owner); - - /* Open and read the XML */ - xml = gnc_glade_xml_new ("payment.glade", "Payment Dialog"); - pw->dialog = glade_xml_get_widget (xml, "Payment Dialog"); - - /* Grab the widgets and build the dialog */ - pw->num_entry = glade_xml_get_widget (xml, "num_entry"); - pw->memo_entry = glade_xml_get_widget (xml, "memo_entry"); - pw->post_combo = glade_xml_get_widget (xml, "post_combo"); - gnc_cbe_require_list_item(GTK_COMBO_BOX_ENTRY(pw->post_combo)); - - label = glade_xml_get_widget (xml, "owner_label"); - box = glade_xml_get_widget (xml, "owner_box"); - pw->owner_choice = gnc_owner_select_create (label, box, book, owner); - - label = glade_xml_get_widget (xml, "invoice_label"); - box = glade_xml_get_widget (xml, "invoice_box"); - pw->invoice_choice = gnc_invoice_select_create (box, book, owner, invoice, label); - - box = glade_xml_get_widget (xml, "amount_box"); - pw->amount_edit = gnc_amount_edit_new (); - gtk_box_pack_start (GTK_BOX (box), pw->amount_edit, TRUE, TRUE, 0); - gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (pw->amount_edit), - TRUE); - gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (pw->amount_edit), gnc_numeric_zero()); - - box = glade_xml_get_widget (xml, "date_box"); - pw->date_edit = gnc_date_edit_new (time(NULL), FALSE, FALSE); - gtk_box_pack_start (GTK_BOX (box), pw->date_edit, TRUE, TRUE, 0); - - box = glade_xml_get_widget (xml, "acct_window"); - pw->acct_tree = GTK_WIDGET(gnc_tree_view_account_new (FALSE)); - gtk_container_add (GTK_CONTAINER (box), pw->acct_tree); - gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(pw->acct_tree), FALSE); - gnc_payment_set_account_types (GNC_TREE_VIEW_ACCOUNT (pw->acct_tree)); - - /* Set the dialog for the 'new' owner */ - gnc_payment_dialog_owner_changed(pw); - - /* Set the dialog for the 'new' invoice */ - pw->invoice = invoice; - gnc_payment_dialog_invoice_changed(pw); - - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - pw); - - g_signal_connect (G_OBJECT (pw->owner_choice), "changed", - G_CALLBACK (gnc_payment_dialog_owner_changed_cb), pw); - - g_signal_connect (G_OBJECT (pw->invoice_choice), "changed", - G_CALLBACK (gnc_payment_dialog_invoice_changed_cb), pw); - - g_signal_connect (G_OBJECT (pw->acct_tree), "row-activated", - G_CALLBACK (gnc_payment_acct_tree_row_activated_cb), pw); - - /* Register with the component manager */ - pw->component_id = - gnc_register_gui_component (cm_class, - gnc_payment_window_refresh_handler, - gnc_payment_window_close_handler, - pw); - - /* Watch for any new or changed accounts */ - gnc_gui_component_watch_entity_type (pw->component_id, - GNC_ID_ACCOUNT, - QOF_EVENT_CREATE | QOF_EVENT_MODIFY | - QOF_EVENT_DESTROY); - - /* Fill in the post_combo and account_tree widgets */ - gnc_fill_account_select_combo (pw->post_combo, pw->book, pw->acct_types, pw->acct_commodities); - /* Show it all */ - gtk_widget_show_all (pw->dialog); - - /* Warn the user if they have no valid post-to accounts */ - { - const gchar *text; - const char *acct_type; - - text = gtk_combo_box_get_active_text(GTK_COMBO_BOX(pw->post_combo)); - if (!text || safe_strcmp (text, "") == 0) { - - /* XXX: I know there's only one type here */ - acct_type = xaccAccountGetTypeStr(GPOINTER_TO_INT(pw->acct_types->data)); - gnc_warning_dialog(pw->dialog, - _("You have no valid \"Post To\" accounts. " - "Please create an account of type \"%s\" " - "before you continue to process this payment. " - "Perhaps you want to create an Invoice or " - "Bill first?"), - acct_type); + gtk_window_present (GTK_WINDOW(pw->dialog)); + return(pw); } - } - return pw; + /* Ok, we need a new window */ + + pw = g_new0 (PaymentWindow, 1); + pw->book = book; + gncOwnerCopy (owner, &(pw->owner)); + + /* Compute the post-to account types */ + pw->acct_types = gnc_business_account_types (owner); + + pw->acct_commodities = gnc_business_commodities (owner); + + /* Open and read the XML */ + xml = gnc_glade_xml_new ("payment.glade", "Payment Dialog"); + pw->dialog = glade_xml_get_widget (xml, "Payment Dialog"); + + /* Grab the widgets and build the dialog */ + pw->num_entry = glade_xml_get_widget (xml, "num_entry"); + pw->memo_entry = glade_xml_get_widget (xml, "memo_entry"); + pw->post_combo = glade_xml_get_widget (xml, "post_combo"); + gnc_cbe_require_list_item(GTK_COMBO_BOX_ENTRY(pw->post_combo)); + + label = glade_xml_get_widget (xml, "owner_label"); + box = glade_xml_get_widget (xml, "owner_box"); + pw->owner_choice = gnc_owner_select_create (label, box, book, owner); + + label = glade_xml_get_widget (xml, "invoice_label"); + box = glade_xml_get_widget (xml, "invoice_box"); + pw->invoice_choice = gnc_invoice_select_create (box, book, owner, invoice, label); + + box = glade_xml_get_widget (xml, "amount_box"); + pw->amount_edit = gnc_amount_edit_new (); + gtk_box_pack_start (GTK_BOX (box), pw->amount_edit, TRUE, TRUE, 0); + gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (pw->amount_edit), + TRUE); + gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (pw->amount_edit), gnc_numeric_zero()); + + box = glade_xml_get_widget (xml, "date_box"); + pw->date_edit = gnc_date_edit_new (time(NULL), FALSE, FALSE); + gtk_box_pack_start (GTK_BOX (box), pw->date_edit, TRUE, TRUE, 0); + + box = glade_xml_get_widget (xml, "acct_window"); + pw->acct_tree = GTK_WIDGET(gnc_tree_view_account_new (FALSE)); + gtk_container_add (GTK_CONTAINER (box), pw->acct_tree); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(pw->acct_tree), FALSE); + gnc_payment_set_account_types (GNC_TREE_VIEW_ACCOUNT (pw->acct_tree)); + + /* Set the dialog for the 'new' owner */ + gnc_payment_dialog_owner_changed(pw); + + /* Set the dialog for the 'new' invoice */ + pw->invoice = invoice; + gnc_payment_dialog_invoice_changed(pw); + + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + pw); + + g_signal_connect (G_OBJECT (pw->owner_choice), "changed", + G_CALLBACK (gnc_payment_dialog_owner_changed_cb), pw); + + g_signal_connect (G_OBJECT (pw->invoice_choice), "changed", + G_CALLBACK (gnc_payment_dialog_invoice_changed_cb), pw); + + g_signal_connect (G_OBJECT (pw->acct_tree), "row-activated", + G_CALLBACK (gnc_payment_acct_tree_row_activated_cb), pw); + + /* Register with the component manager */ + pw->component_id = + gnc_register_gui_component (cm_class, + gnc_payment_window_refresh_handler, + gnc_payment_window_close_handler, + pw); + + /* Watch for any new or changed accounts */ + gnc_gui_component_watch_entity_type (pw->component_id, + GNC_ID_ACCOUNT, + QOF_EVENT_CREATE | QOF_EVENT_MODIFY | + QOF_EVENT_DESTROY); + + /* Fill in the post_combo and account_tree widgets */ + gnc_fill_account_select_combo (pw->post_combo, pw->book, pw->acct_types, pw->acct_commodities); + /* Show it all */ + gtk_widget_show_all (pw->dialog); + + /* Warn the user if they have no valid post-to accounts */ + { + const gchar *text; + const char *acct_type; + + text = gtk_combo_box_get_active_text(GTK_COMBO_BOX(pw->post_combo)); + if (!text || safe_strcmp (text, "") == 0) + { + + /* XXX: I know there's only one type here */ + acct_type = xaccAccountGetTypeStr(GPOINTER_TO_INT(pw->acct_types->data)); + gnc_warning_dialog(pw->dialog, + _("You have no valid \"Post To\" accounts. " + "Please create an account of type \"%s\" " + "before you continue to process this payment. " + "Perhaps you want to create an Invoice or " + "Bill first?"), + acct_type); + } + } + + return pw; } void gnc_ui_payment_window_destroy (PaymentWindow *pw) { - if (!pw) return; - gnc_close_gui_component (pw->component_id); + if (!pw) return; + gnc_close_gui_component (pw->component_id); } PaymentWindow * gnc_ui_payment_new_with_invoice (GncOwner *owner, QofBook *book, - GncInvoice *invoice) + GncInvoice *invoice) { - GncOwner owner_def; + GncOwner owner_def; - if (!book) return NULL; - if (owner) { - /* Figure out the company */ - owner = gncOwnerGetEndOwner (owner); - } else { - gncOwnerInitCustomer (&owner_def, NULL); - owner = &owner_def; - } + if (!book) return NULL; + if (owner) + { + /* Figure out the company */ + owner = gncOwnerGetEndOwner (owner); + } + else + { + gncOwnerInitCustomer (&owner_def, NULL); + owner = &owner_def; + } - return new_payment_window (owner, book, invoice); + return new_payment_window (owner, book, invoice); } PaymentWindow * gnc_ui_payment_new (GncOwner *owner, QofBook *book) { - return gnc_ui_payment_new_with_invoice (owner, book, NULL); + return gnc_ui_payment_new_with_invoice (owner, book, NULL); } diff --git a/src/business/business-gnome/dialog-payment.h b/src/business/business-gnome/dialog-payment.h index 5ecc4ed1d7..e1ad71e567 100644 --- a/src/business/business-gnome/dialog-payment.h +++ b/src/business/business-gnome/dialog-payment.h @@ -33,8 +33,8 @@ typedef struct _payment_window PaymentWindow; /* Create a payment window */ PaymentWindow * gnc_ui_payment_new (GncOwner *owner, QofBook *book); PaymentWindow * gnc_ui_payment_new_with_invoice (GncOwner *owner, - QofBook *book, - GncInvoice *invoice); + QofBook *book, + GncInvoice *invoice); /* Destroy a payment window */ void gnc_ui_payment_window_destroy (PaymentWindow *pw); diff --git a/src/business/business-gnome/dialog-vendor.c b/src/business/business-gnome/dialog-vendor.c index a9c3b4d6e6..13f35fbea8 100644 --- a/src/business/business-gnome/dialog-vendor.c +++ b/src/business/business-gnome/dialog-vendor.c @@ -61,461 +61,476 @@ void gnc_vendor_name_changed_cb (GtkWidget *widget, gpointer data); typedef enum { - NEW_VENDOR, - EDIT_VENDOR + NEW_VENDOR, + EDIT_VENDOR } VendorDialogType; -struct _vendor_select_window { - QofBook * book; - QueryNew * q; +struct _vendor_select_window +{ + QofBook * book; + QueryNew * q; }; -struct _vendor_window { - GtkWidget * dialog; +struct _vendor_window +{ + GtkWidget * dialog; - GtkWidget * id_entry; - GtkWidget * company_entry; + GtkWidget * id_entry; + GtkWidget * company_entry; - GtkWidget * name_entry; - GtkWidget * addr1_entry; - GtkWidget * addr2_entry; - GtkWidget * addr3_entry; - GtkWidget * addr4_entry; - GtkWidget * phone_entry; - GtkWidget * fax_entry; - GtkWidget * email_entry; - GtkWidget * terms_menu; - GtkWidget * currency_edit; + GtkWidget * name_entry; + GtkWidget * addr1_entry; + GtkWidget * addr2_entry; + GtkWidget * addr3_entry; + GtkWidget * addr4_entry; + GtkWidget * phone_entry; + GtkWidget * fax_entry; + GtkWidget * email_entry; + GtkWidget * terms_menu; + GtkWidget * currency_edit; - GtkWidget * active_check; - GtkWidget * taxincluded_menu; - GtkWidget * notes_text; + GtkWidget * active_check; + GtkWidget * taxincluded_menu; + GtkWidget * notes_text; - GtkWidget * taxtable_check; - GtkWidget * taxtable_menu; + GtkWidget * taxtable_check; + GtkWidget * taxtable_menu; - GncTaxIncluded taxincluded; - GncBillTerm * terms; - VendorDialogType dialog_type; - GUID vendor_guid; - gint component_id; - QofBook * book; - GncVendor * created_vendor; + GncTaxIncluded taxincluded; + GncBillTerm * terms; + VendorDialogType dialog_type; + GUID vendor_guid; + gint component_id; + QofBook * book; + GncVendor * created_vendor; - GncTaxTable * taxtable; + GncTaxTable * taxtable; }; void gnc_vendor_taxtable_check_cb (GtkToggleButton *togglebutton, - gpointer user_data) + gpointer user_data) { - VendorWindow *vw = user_data; + VendorWindow *vw = user_data; - if (gtk_toggle_button_get_active (togglebutton)) - gtk_widget_set_sensitive (vw->taxtable_menu, TRUE); - else - gtk_widget_set_sensitive (vw->taxtable_menu, FALSE); + if (gtk_toggle_button_get_active (togglebutton)) + gtk_widget_set_sensitive (vw->taxtable_menu, TRUE); + else + gtk_widget_set_sensitive (vw->taxtable_menu, FALSE); } static GncVendor * vw_get_vendor (VendorWindow *vw) { - if (!vw) - return NULL; + if (!vw) + return NULL; - return gncVendorLookup (vw->book, &vw->vendor_guid); + return gncVendorLookup (vw->book, &vw->vendor_guid); } static void gnc_ui_to_vendor (VendorWindow *vw, GncVendor *vendor) { - GtkTextBuffer* text_buffer; - GtkTextIter start, end; - gchar *text; - GncAddress *addr; + GtkTextBuffer* text_buffer; + GtkTextIter start, end; + gchar *text; + GncAddress *addr; - addr = gncVendorGetAddr (vendor); + addr = gncVendorGetAddr (vendor); - gnc_suspend_gui_refresh (); - gncVendorBeginEdit (vendor); + gnc_suspend_gui_refresh (); + gncVendorBeginEdit (vendor); - gncVendorSetID (vendor, gtk_editable_get_chars - (GTK_EDITABLE (vw->id_entry), 0, -1)); - gncVendorSetName (vendor, gtk_editable_get_chars - (GTK_EDITABLE (vw->company_entry), 0, -1)); + gncVendorSetID (vendor, gtk_editable_get_chars + (GTK_EDITABLE (vw->id_entry), 0, -1)); + gncVendorSetName (vendor, gtk_editable_get_chars + (GTK_EDITABLE (vw->company_entry), 0, -1)); - gncAddressSetName (addr, gtk_editable_get_chars - (GTK_EDITABLE (vw->name_entry), 0, -1)); - gncAddressSetAddr1 (addr, gtk_editable_get_chars - (GTK_EDITABLE (vw->addr1_entry), 0, -1)); - gncAddressSetAddr2 (addr, gtk_editable_get_chars - (GTK_EDITABLE (vw->addr2_entry), 0, -1)); - gncAddressSetAddr3 (addr, gtk_editable_get_chars - (GTK_EDITABLE (vw->addr3_entry), 0, -1)); - gncAddressSetAddr4 (addr, gtk_editable_get_chars - (GTK_EDITABLE (vw->addr4_entry), 0, -1)); - gncAddressSetPhone (addr, gtk_editable_get_chars - (GTK_EDITABLE (vw->phone_entry), 0, -1)); - gncAddressSetFax (addr, gtk_editable_get_chars - (GTK_EDITABLE (vw->fax_entry), 0, -1)); - gncAddressSetEmail (addr, gtk_editable_get_chars - (GTK_EDITABLE (vw->email_entry), 0, -1)); + gncAddressSetName (addr, gtk_editable_get_chars + (GTK_EDITABLE (vw->name_entry), 0, -1)); + gncAddressSetAddr1 (addr, gtk_editable_get_chars + (GTK_EDITABLE (vw->addr1_entry), 0, -1)); + gncAddressSetAddr2 (addr, gtk_editable_get_chars + (GTK_EDITABLE (vw->addr2_entry), 0, -1)); + gncAddressSetAddr3 (addr, gtk_editable_get_chars + (GTK_EDITABLE (vw->addr3_entry), 0, -1)); + gncAddressSetAddr4 (addr, gtk_editable_get_chars + (GTK_EDITABLE (vw->addr4_entry), 0, -1)); + gncAddressSetPhone (addr, gtk_editable_get_chars + (GTK_EDITABLE (vw->phone_entry), 0, -1)); + gncAddressSetFax (addr, gtk_editable_get_chars + (GTK_EDITABLE (vw->fax_entry), 0, -1)); + gncAddressSetEmail (addr, gtk_editable_get_chars + (GTK_EDITABLE (vw->email_entry), 0, -1)); - gncVendorSetActive (vendor, gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (vw->active_check))); - gncVendorSetTaxIncluded (vendor, vw->taxincluded); + gncVendorSetActive (vendor, gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON (vw->active_check))); + gncVendorSetTaxIncluded (vendor, vw->taxincluded); - text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(vw->notes_text)); - gtk_text_buffer_get_bounds (text_buffer, &start, &end); - text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE); - gncVendorSetNotes (vendor, text); + text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(vw->notes_text)); + gtk_text_buffer_get_bounds (text_buffer, &start, &end); + text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE); + gncVendorSetNotes (vendor, text); - gncVendorSetTerms (vendor, vw->terms); - gncVendorSetCurrency (vendor, - gnc_currency_edit_get_currency (GNC_CURRENCY_EDIT - (vw->currency_edit))); + gncVendorSetTerms (vendor, vw->terms); + gncVendorSetCurrency (vendor, + gnc_currency_edit_get_currency (GNC_CURRENCY_EDIT + (vw->currency_edit))); - gncVendorSetTaxTableOverride + gncVendorSetTaxTableOverride (vendor, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (vw->taxtable_check))); - gncVendorSetTaxTable (vendor, vw->taxtable); + gncVendorSetTaxTable (vendor, vw->taxtable); - gncVendorCommitEdit (vendor); - gnc_resume_gui_refresh (); + gncVendorCommitEdit (vendor); + gnc_resume_gui_refresh (); } -static gboolean check_entry_nonempty (GtkWidget *dialog, GtkWidget *entry, - const char * error_message) +static gboolean check_entry_nonempty (GtkWidget *dialog, GtkWidget *entry, + const char * error_message) { - const char *res = gtk_entry_get_text (GTK_ENTRY (entry)); - if (safe_strcmp (res, "") == 0) { - if (error_message) - gnc_error_dialog (dialog, "%s", error_message); - return TRUE; - } - return FALSE; + const char *res = gtk_entry_get_text (GTK_ENTRY (entry)); + if (safe_strcmp (res, "") == 0) + { + if (error_message) + gnc_error_dialog (dialog, "%s", error_message); + return TRUE; + } + return FALSE; } void gnc_vendor_window_ok_cb (GtkWidget *widget, gpointer data) { - VendorWindow *vw = data; - gchar *string; + VendorWindow *vw = data; + gchar *string; - /* Check for valid company name */ - if (check_entry_nonempty (vw->dialog, vw->company_entry, - _("You must enter a company name. " - "If this vendor is an individual (and not a company) " - "you should set the \"company name\" and \"contact name\" " - "the same."))) - return; + /* Check for valid company name */ + if (check_entry_nonempty (vw->dialog, vw->company_entry, + _("You must enter a company name. " + "If this vendor is an individual (and not a company) " + "you should set the \"company name\" and \"contact name\" " + "the same."))) + return; - /* Make sure we have an address */ - if (check_entry_nonempty (vw->dialog, vw->addr1_entry, NULL) && - check_entry_nonempty (vw->dialog, vw->addr2_entry, NULL) && - check_entry_nonempty (vw->dialog, vw->addr3_entry, NULL) && - check_entry_nonempty (vw->dialog, vw->addr4_entry, NULL)) { - const char *msg = _("You must enter a payment address."); - gnc_error_dialog (vw->dialog, "%s", msg); - return; - } - - /* Check for valid id and set one if necessary */ - if (safe_strcmp (gtk_entry_get_text (GTK_ENTRY (vw->id_entry)), "") == 0) { - string = g_strdup_printf ("%.6" G_GINT64_FORMAT, - gncVendorNextID(vw->book)); - gtk_entry_set_text (GTK_ENTRY (vw->id_entry), string); - g_free(string); - } - - /* Now save it off */ - { - GncVendor *vendor = vw_get_vendor (vw); - if (vendor) { - gnc_ui_to_vendor (vw, vendor); + /* Make sure we have an address */ + if (check_entry_nonempty (vw->dialog, vw->addr1_entry, NULL) && + check_entry_nonempty (vw->dialog, vw->addr2_entry, NULL) && + check_entry_nonempty (vw->dialog, vw->addr3_entry, NULL) && + check_entry_nonempty (vw->dialog, vw->addr4_entry, NULL)) + { + const char *msg = _("You must enter a payment address."); + gnc_error_dialog (vw->dialog, "%s", msg); + return; } - vw->created_vendor = vendor; - vw->vendor_guid = *xaccGUIDNULL (); - } - gnc_close_gui_component (vw->component_id); + /* Check for valid id and set one if necessary */ + if (safe_strcmp (gtk_entry_get_text (GTK_ENTRY (vw->id_entry)), "") == 0) + { + string = g_strdup_printf ("%.6" G_GINT64_FORMAT, + gncVendorNextID(vw->book)); + gtk_entry_set_text (GTK_ENTRY (vw->id_entry), string); + g_free(string); + } + + /* Now save it off */ + { + GncVendor *vendor = vw_get_vendor (vw); + if (vendor) + { + gnc_ui_to_vendor (vw, vendor); + } + vw->created_vendor = vendor; + vw->vendor_guid = *xaccGUIDNULL (); + } + + gnc_close_gui_component (vw->component_id); } void gnc_vendor_window_cancel_cb (GtkWidget *widget, gpointer data) { - VendorWindow *vw = data; + VendorWindow *vw = data; - gnc_close_gui_component (vw->component_id); + gnc_close_gui_component (vw->component_id); } void gnc_vendor_window_help_cb (GtkWidget *widget, gpointer data) { - gnc_gnome_help(HF_HELP, HL_USAGE); + gnc_gnome_help(HF_HELP, HL_USAGE); } void gnc_vendor_window_destroy_cb (GtkWidget *widget, gpointer data) { - VendorWindow *vw = data; - GncVendor *vendor = vw_get_vendor (vw); + VendorWindow *vw = data; + GncVendor *vendor = vw_get_vendor (vw); - gnc_suspend_gui_refresh (); + gnc_suspend_gui_refresh (); - if (vw->dialog_type == NEW_VENDOR && vendor != NULL) { - gncVendorBeginEdit (vendor); - gncVendorDestroy (vendor); - vw->vendor_guid = *xaccGUIDNULL (); - } + if (vw->dialog_type == NEW_VENDOR && vendor != NULL) + { + gncVendorBeginEdit (vendor); + gncVendorDestroy (vendor); + vw->vendor_guid = *xaccGUIDNULL (); + } - gnc_unregister_gui_component (vw->component_id); - gnc_resume_gui_refresh (); + gnc_unregister_gui_component (vw->component_id); + gnc_resume_gui_refresh (); - g_free (vw); + g_free (vw); } void gnc_vendor_name_changed_cb (GtkWidget *widget, gpointer data) { - VendorWindow *vw = data; - char *name, *id, *fullname, *title; + VendorWindow *vw = data; + char *name, *id, *fullname, *title; - if (!vw) - return; + if (!vw) + return; - name = gtk_editable_get_chars (GTK_EDITABLE (vw->company_entry), 0, -1); - if (!name || *name == '\0') - name = g_strdup (_("")); + name = gtk_editable_get_chars (GTK_EDITABLE (vw->company_entry), 0, -1); + if (!name || *name == '\0') + name = g_strdup (_("")); - id = gtk_editable_get_chars (GTK_EDITABLE (vw->id_entry), 0, -1); + id = gtk_editable_get_chars (GTK_EDITABLE (vw->id_entry), 0, -1); - fullname = g_strconcat (name, " (", id, ")", (char *)NULL); + fullname = g_strconcat (name, " (", id, ")", (char *)NULL); - if (vw->dialog_type == EDIT_VENDOR) - title = g_strconcat (_("Edit Vendor"), " - ", fullname, (char *)NULL); - else - title = g_strconcat (_("New Vendor"), " - ", fullname, (char *)NULL); + if (vw->dialog_type == EDIT_VENDOR) + title = g_strconcat (_("Edit Vendor"), " - ", fullname, (char *)NULL); + else + title = g_strconcat (_("New Vendor"), " - ", fullname, (char *)NULL); - gtk_window_set_title (GTK_WINDOW (vw->dialog), title); + gtk_window_set_title (GTK_WINDOW (vw->dialog), title); - g_free (name); - g_free (id); - g_free (fullname); - g_free (title); + g_free (name); + g_free (id); + g_free (fullname); + g_free (title); } static void gnc_vendor_window_close_handler (gpointer user_data) { - VendorWindow *vw = user_data; + VendorWindow *vw = user_data; - gtk_widget_destroy (vw->dialog); + gtk_widget_destroy (vw->dialog); } static void gnc_vendor_window_refresh_handler (GHashTable *changes, gpointer user_data) { - VendorWindow *vw = user_data; - const EventInfo *info; - GncVendor *vendor = vw_get_vendor (vw); + VendorWindow *vw = user_data; + const EventInfo *info; + GncVendor *vendor = vw_get_vendor (vw); - /* If there isn't a vendor behind us, close down */ - if (!vendor) { - gnc_close_gui_component (vw->component_id); - return; - } - - /* Next, close if this is a destroy event */ - if (changes) { - info = gnc_gui_get_entity_events (changes, &vw->vendor_guid); - if (info && (info->event_mask & QOF_EVENT_DESTROY)) { - gnc_close_gui_component (vw->component_id); - return; + /* If there isn't a vendor behind us, close down */ + if (!vendor) + { + gnc_close_gui_component (vw->component_id); + return; + } + + /* Next, close if this is a destroy event */ + if (changes) + { + info = gnc_gui_get_entity_events (changes, &vw->vendor_guid); + if (info && (info->event_mask & QOF_EVENT_DESTROY)) + { + gnc_close_gui_component (vw->component_id); + return; + } } - } } static gboolean find_handler (gpointer find_data, gpointer user_data) { - const GUID *vendor_guid = find_data; - VendorWindow *vw = user_data; + const GUID *vendor_guid = find_data; + VendorWindow *vw = user_data; - return(vw && guid_equal(&vw->vendor_guid, vendor_guid)); + return(vw && guid_equal(&vw->vendor_guid, vendor_guid)); } static VendorWindow * gnc_vendor_new_window (QofBook *bookp, GncVendor *vendor) { - VendorWindow *vw; - GladeXML *xml; - GtkWidget *edit, *hbox; - gnc_commodity *currency; + VendorWindow *vw; + GladeXML *xml; + GtkWidget *edit, *hbox; + gnc_commodity *currency; - /* - * Find an existing window for this vendor. If found, bring it to - * the front. - */ - if (vendor) { - GUID vendor_guid; - - vendor_guid = *gncVendorGetGUID (vendor); - vw = gnc_find_first_gui_component (DIALOG_EDIT_VENDOR_CM_CLASS, - find_handler, &vendor_guid); - if (vw) { - gtk_window_present (GTK_WINDOW(vw->dialog)); - return(vw); + /* + * Find an existing window for this vendor. If found, bring it to + * the front. + */ + if (vendor) + { + GUID vendor_guid; + + vendor_guid = *gncVendorGetGUID (vendor); + vw = gnc_find_first_gui_component (DIALOG_EDIT_VENDOR_CM_CLASS, + find_handler, &vendor_guid); + if (vw) + { + gtk_window_present (GTK_WINDOW(vw->dialog)); + return(vw); + } } - } - - /* Find the default currency */ - if (vendor) - currency = gncVendorGetCurrency (vendor); - else - currency = gnc_default_currency (); - /* - * No existing employee window found. Build a new one. - */ - vw = g_new0 (VendorWindow, 1); + /* Find the default currency */ + if (vendor) + currency = gncVendorGetCurrency (vendor); + else + currency = gnc_default_currency (); - vw->book = bookp; + /* + * No existing employee window found. Build a new one. + */ + vw = g_new0 (VendorWindow, 1); - /* Find the dialog */ - xml = gnc_glade_xml_new ("vendor.glade", "Vendor Dialog"); - vw->dialog = glade_xml_get_widget (xml, "Vendor Dialog"); + vw->book = bookp; - /* Get entry points */ - vw->id_entry = glade_xml_get_widget (xml, "id_entry"); - vw->company_entry = glade_xml_get_widget (xml, "company_entry"); + /* Find the dialog */ + xml = gnc_glade_xml_new ("vendor.glade", "Vendor Dialog"); + vw->dialog = glade_xml_get_widget (xml, "Vendor Dialog"); - vw->name_entry = glade_xml_get_widget (xml, "name_entry"); - vw->addr1_entry = glade_xml_get_widget (xml, "addr1_entry"); - vw->addr2_entry = glade_xml_get_widget (xml, "addr2_entry"); - vw->addr3_entry = glade_xml_get_widget (xml, "addr3_entry"); - vw->addr4_entry = glade_xml_get_widget (xml, "addr4_entry"); - vw->phone_entry = glade_xml_get_widget (xml, "phone_entry"); - vw->fax_entry = glade_xml_get_widget (xml, "fax_entry"); - vw->email_entry = glade_xml_get_widget (xml, "email_entry"); + /* Get entry points */ + vw->id_entry = glade_xml_get_widget (xml, "id_entry"); + vw->company_entry = glade_xml_get_widget (xml, "company_entry"); - vw->active_check = glade_xml_get_widget (xml, "active_check"); - vw->taxincluded_menu = glade_xml_get_widget (xml, "tax_included_menu"); - vw->notes_text = glade_xml_get_widget (xml, "notes_text"); - vw->terms_menu = glade_xml_get_widget (xml, "terms_menu"); + vw->name_entry = glade_xml_get_widget (xml, "name_entry"); + vw->addr1_entry = glade_xml_get_widget (xml, "addr1_entry"); + vw->addr2_entry = glade_xml_get_widget (xml, "addr2_entry"); + vw->addr3_entry = glade_xml_get_widget (xml, "addr3_entry"); + vw->addr4_entry = glade_xml_get_widget (xml, "addr4_entry"); + vw->phone_entry = glade_xml_get_widget (xml, "phone_entry"); + vw->fax_entry = glade_xml_get_widget (xml, "fax_entry"); + vw->email_entry = glade_xml_get_widget (xml, "email_entry"); - vw->taxtable_check = glade_xml_get_widget (xml, "taxtable_button"); - vw->taxtable_menu = glade_xml_get_widget (xml, "taxtable_menu"); + vw->active_check = glade_xml_get_widget (xml, "active_check"); + vw->taxincluded_menu = glade_xml_get_widget (xml, "tax_included_menu"); + vw->notes_text = glade_xml_get_widget (xml, "notes_text"); + vw->terms_menu = glade_xml_get_widget (xml, "terms_menu"); - /* Currency */ - edit = gnc_currency_edit_new(); - gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(edit), currency); - vw->currency_edit = edit; + vw->taxtable_check = glade_xml_get_widget (xml, "taxtable_button"); + vw->taxtable_menu = glade_xml_get_widget (xml, "taxtable_menu"); - hbox = glade_xml_get_widget (xml, "currency_box"); - gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); + /* Currency */ + edit = gnc_currency_edit_new(); + gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(edit), currency); + vw->currency_edit = edit; - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - vw); + hbox = glade_xml_get_widget (xml, "currency_box"); + gtk_box_pack_start (GTK_BOX (hbox), edit, TRUE, TRUE, 0); - /* Setup initial values */ - if (vendor != NULL) { - GtkTextBuffer* text_buffer; - GncAddress *addr; - const char *string; + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + vw); - vw->dialog_type = EDIT_VENDOR; - vw->vendor_guid = *gncVendorGetGUID (vendor); + /* Setup initial values */ + if (vendor != NULL) + { + GtkTextBuffer* text_buffer; + GncAddress *addr; + const char *string; - addr = gncVendorGetAddr (vendor); + vw->dialog_type = EDIT_VENDOR; + vw->vendor_guid = *gncVendorGetGUID (vendor); - gtk_entry_set_text (GTK_ENTRY (vw->id_entry), gncVendorGetID (vendor)); - gtk_entry_set_text (GTK_ENTRY (vw->company_entry), gncVendorGetName (vendor)); + addr = gncVendorGetAddr (vendor); - /* Setup Address */ - gtk_entry_set_text (GTK_ENTRY (vw->name_entry), gncAddressGetName (addr)); - gtk_entry_set_text (GTK_ENTRY (vw->addr1_entry), gncAddressGetAddr1 (addr)); - gtk_entry_set_text (GTK_ENTRY (vw->addr2_entry), gncAddressGetAddr2 (addr)); - gtk_entry_set_text (GTK_ENTRY (vw->addr3_entry), gncAddressGetAddr3 (addr)); - gtk_entry_set_text (GTK_ENTRY (vw->addr4_entry), gncAddressGetAddr4 (addr)); - gtk_entry_set_text (GTK_ENTRY (vw->phone_entry), gncAddressGetPhone (addr)); - gtk_entry_set_text (GTK_ENTRY (vw->fax_entry), gncAddressGetFax (addr)); - gtk_entry_set_text (GTK_ENTRY (vw->email_entry), gncAddressGetEmail (addr)); + gtk_entry_set_text (GTK_ENTRY (vw->id_entry), gncVendorGetID (vendor)); + gtk_entry_set_text (GTK_ENTRY (vw->company_entry), gncVendorGetName (vendor)); - /* Set toggle buttons */ - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vw->active_check), - gncVendorGetActive (vendor)); + /* Setup Address */ + gtk_entry_set_text (GTK_ENTRY (vw->name_entry), gncAddressGetName (addr)); + gtk_entry_set_text (GTK_ENTRY (vw->addr1_entry), gncAddressGetAddr1 (addr)); + gtk_entry_set_text (GTK_ENTRY (vw->addr2_entry), gncAddressGetAddr2 (addr)); + gtk_entry_set_text (GTK_ENTRY (vw->addr3_entry), gncAddressGetAddr3 (addr)); + gtk_entry_set_text (GTK_ENTRY (vw->addr4_entry), gncAddressGetAddr4 (addr)); + gtk_entry_set_text (GTK_ENTRY (vw->phone_entry), gncAddressGetPhone (addr)); + gtk_entry_set_text (GTK_ENTRY (vw->fax_entry), gncAddressGetFax (addr)); + gtk_entry_set_text (GTK_ENTRY (vw->email_entry), gncAddressGetEmail (addr)); - string = gncVendorGetNotes (vendor); - text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(vw->notes_text)); - gtk_text_buffer_set_text (text_buffer, string, -1); + /* Set toggle buttons */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vw->active_check), + gncVendorGetActive (vendor)); - vw->component_id = - gnc_register_gui_component (DIALOG_EDIT_VENDOR_CM_CLASS, - gnc_vendor_window_refresh_handler, - gnc_vendor_window_close_handler, - vw); + string = gncVendorGetNotes (vendor); + text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(vw->notes_text)); + gtk_text_buffer_set_text (text_buffer, string, -1); - vw->terms = gncVendorGetTerms (vendor); + vw->component_id = + gnc_register_gui_component (DIALOG_EDIT_VENDOR_CM_CLASS, + gnc_vendor_window_refresh_handler, + gnc_vendor_window_close_handler, + vw); - } else { - vendor = gncVendorCreate (bookp); - vw->vendor_guid = *gncVendorGetGUID (vendor); + vw->terms = gncVendorGetTerms (vendor); - vw->dialog_type = NEW_VENDOR; - vw->component_id = - gnc_register_gui_component (DIALOG_NEW_VENDOR_CM_CLASS, - gnc_vendor_window_refresh_handler, - gnc_vendor_window_close_handler, - vw); + } + else + { + vendor = gncVendorCreate (bookp); + vw->vendor_guid = *gncVendorGetGUID (vendor); - /* XXX: Get the default Billing Terms */ - vw->terms = NULL; - } + vw->dialog_type = NEW_VENDOR; + vw->component_id = + gnc_register_gui_component (DIALOG_NEW_VENDOR_CM_CLASS, + gnc_vendor_window_refresh_handler, + gnc_vendor_window_close_handler, + vw); - /* I know that vendor exists here -- either passed in or just created */ + /* XXX: Get the default Billing Terms */ + vw->terms = NULL; + } - vw->taxincluded = gncVendorGetTaxIncluded (vendor); - gnc_ui_taxincluded_optionmenu (vw->taxincluded_menu, &vw->taxincluded); - gnc_ui_billterms_optionmenu (vw->terms_menu, bookp, TRUE, &vw->terms); + /* I know that vendor exists here -- either passed in or just created */ - vw->taxtable = gncVendorGetTaxTable (vendor); - gnc_ui_taxtables_optionmenu (vw->taxtable_menu, bookp, TRUE, &vw->taxtable); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vw->taxtable_check), - gncVendorGetTaxTableOverride (vendor)); - gnc_vendor_taxtable_check_cb (GTK_TOGGLE_BUTTON (vw->taxtable_check), vw); + vw->taxincluded = gncVendorGetTaxIncluded (vendor); + gnc_ui_taxincluded_optionmenu (vw->taxincluded_menu, &vw->taxincluded); + gnc_ui_billterms_optionmenu (vw->terms_menu, bookp, TRUE, &vw->terms); - gnc_gui_component_watch_entity_type (vw->component_id, - GNC_VENDOR_MODULE_NAME, - QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); + vw->taxtable = gncVendorGetTaxTable (vendor); + gnc_ui_taxtables_optionmenu (vw->taxtable_menu, bookp, TRUE, &vw->taxtable); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vw->taxtable_check), + gncVendorGetTaxTableOverride (vendor)); + gnc_vendor_taxtable_check_cb (GTK_TOGGLE_BUTTON (vw->taxtable_check), vw); - gtk_widget_show_all (vw->dialog); + gnc_gui_component_watch_entity_type (vw->component_id, + GNC_VENDOR_MODULE_NAME, + QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); - return vw; + gtk_widget_show_all (vw->dialog); + + return vw; } VendorWindow * gnc_ui_vendor_new (QofBook *bookp) { - VendorWindow *vw; + VendorWindow *vw; - /* Make sure required options exist */ - if (!bookp) return NULL; + /* Make sure required options exist */ + if (!bookp) return NULL; - vw = gnc_vendor_new_window (bookp, NULL); - return vw; + vw = gnc_vendor_new_window (bookp, NULL); + return vw; } VendorWindow * gnc_ui_vendor_edit (GncVendor *vendor) { - VendorWindow *vw; + VendorWindow *vw; - if (!vendor) return NULL; + if (!vendor) return NULL; - vw = gnc_vendor_new_window (gncVendorGetBook(vendor), vendor); + vw = gnc_vendor_new_window (gncVendorGetBook(vendor), vendor); - return vw; + return vw; } /* Functions for vendor selection widgets */ @@ -523,193 +538,197 @@ gnc_ui_vendor_edit (GncVendor *vendor) static void invoice_vendor_cb (gpointer *vendor_p, gpointer user_data) { - struct _vendor_select_window *sw = user_data; - GncOwner owner; - GncVendor *vendor; + struct _vendor_select_window *sw = user_data; + GncOwner owner; + GncVendor *vendor; - g_return_if_fail (vendor_p && user_data); + g_return_if_fail (vendor_p && user_data); - vendor = *vendor_p; + vendor = *vendor_p; - if (!vendor) + if (!vendor) + return; + + gncOwnerInitVendor (&owner, vendor); + gnc_invoice_search (NULL, &owner, sw->book); return; - - gncOwnerInitVendor (&owner, vendor); - gnc_invoice_search (NULL, &owner, sw->book); - return; } static void order_vendor_cb (gpointer *vendor_p, gpointer user_data) { - struct _vendor_select_window *sw = user_data; - GncOwner owner; - GncVendor *vendor; + struct _vendor_select_window *sw = user_data; + GncOwner owner; + GncVendor *vendor; - g_return_if_fail (vendor_p && user_data); + g_return_if_fail (vendor_p && user_data); - vendor = *vendor_p; + vendor = *vendor_p; - if (!vendor) + if (!vendor) + return; + + gncOwnerInitVendor (&owner, vendor); + gnc_order_search (NULL, &owner, sw->book); return; - - gncOwnerInitVendor (&owner, vendor); - gnc_order_search (NULL, &owner, sw->book); - return; } static void jobs_vendor_cb (gpointer *vendor_p, gpointer user_data) { - struct _vendor_select_window *sw = user_data; - GncOwner owner; - GncVendor *vendor; + struct _vendor_select_window *sw = user_data; + GncOwner owner; + GncVendor *vendor; - g_return_if_fail (vendor_p && user_data); + g_return_if_fail (vendor_p && user_data); - vendor = *vendor_p; + vendor = *vendor_p; - if (!vendor) + if (!vendor) + return; + + gncOwnerInitVendor (&owner, vendor); + gnc_job_search (NULL, &owner, sw->book); return; - - gncOwnerInitVendor (&owner, vendor); - gnc_job_search (NULL, &owner, sw->book); - return; } static void payment_vendor_cb (gpointer *vendor_p, gpointer user_data) { - struct _vendor_select_window *sw = user_data; - GncOwner owner; - GncVendor *vendor; + struct _vendor_select_window *sw = user_data; + GncOwner owner; + GncVendor *vendor; - g_return_if_fail (vendor_p && user_data); + g_return_if_fail (vendor_p && user_data); - vendor = *vendor_p; + vendor = *vendor_p; - if (!vendor) + if (!vendor) + return; + + gncOwnerInitVendor (&owner, vendor); + gnc_ui_payment_new (&owner, sw->book); return; - - gncOwnerInitVendor (&owner, vendor); - gnc_ui_payment_new (&owner, sw->book); - return; } static void edit_vendor_cb (gpointer *vendor_p, gpointer user_data) { - GncVendor *vendor; + GncVendor *vendor; - g_return_if_fail (vendor_p && user_data); + g_return_if_fail (vendor_p && user_data); - vendor = *vendor_p; + vendor = *vendor_p; - if (!vendor) + if (!vendor) + return; + + gnc_ui_vendor_edit (vendor); return; - - gnc_ui_vendor_edit (vendor); - return; } static gpointer new_vendor_cb (gpointer user_data) { - struct _vendor_select_window *sw = user_data; - VendorWindow *vw; - - g_return_val_if_fail (user_data, NULL); + struct _vendor_select_window *sw = user_data; + VendorWindow *vw; - vw = gnc_ui_vendor_new (sw->book); - return vw_get_vendor (vw); + g_return_val_if_fail (user_data, NULL); + + vw = gnc_ui_vendor_new (sw->book); + return vw_get_vendor (vw); } static void free_vendor_cb (gpointer user_data) { - struct _vendor_select_window *sw = user_data; - g_return_if_fail (sw); + struct _vendor_select_window *sw = user_data; + g_return_if_fail (sw); - gncQueryDestroy (sw->q); - g_free (sw); + gncQueryDestroy (sw->q); + g_free (sw); } GNCSearchWindow * gnc_vendor_search (GncVendor *start, QofBook *book) { - GNCIdType type = GNC_VENDOR_MODULE_NAME; - struct _vendor_select_window *sw; - QueryNew *q, *q2 = NULL; - static GList *params = NULL; - static GList *columns = NULL; - static GNCSearchCallbackButton buttons[] = { - { N_("View/Edit Vendor"), edit_vendor_cb}, - { N_("Vendor's Jobs"), jobs_vendor_cb}, - // { N_("Vendor Orders"), order_vendor_cb}, - { N_("Vendor's Bills"), invoice_vendor_cb}, - { N_("Pay Bill"), payment_vendor_cb}, - { NULL }, - }; - (void)order_vendor_cb; + GNCIdType type = GNC_VENDOR_MODULE_NAME; + struct _vendor_select_window *sw; + QueryNew *q, *q2 = NULL; + static GList *params = NULL; + static GList *columns = NULL; + static GNCSearchCallbackButton buttons[] = + { + { N_("View/Edit Vendor"), edit_vendor_cb}, + { N_("Vendor's Jobs"), jobs_vendor_cb}, + // { N_("Vendor Orders"), order_vendor_cb}, + { N_("Vendor's Bills"), invoice_vendor_cb}, + { N_("Pay Bill"), payment_vendor_cb}, + { NULL }, + }; + (void)order_vendor_cb; - g_return_val_if_fail (book, NULL); + g_return_val_if_fail (book, NULL); - /* Build parameter list in reverse order*/ - if (params == NULL) { - params = gnc_search_param_prepend (params, _("Billing Contact"), NULL, type, - VENDOR_ADDR, ADDRESS_NAME, NULL); - params = gnc_search_param_prepend (params, _("Vendor ID"), NULL, type, - VENDOR_ID, NULL); - params = gnc_search_param_prepend (params, _("Company Name"), NULL, type, - VENDOR_NAME, NULL); - } + /* Build parameter list in reverse order*/ + if (params == NULL) + { + params = gnc_search_param_prepend (params, _("Billing Contact"), NULL, type, + VENDOR_ADDR, ADDRESS_NAME, NULL); + params = gnc_search_param_prepend (params, _("Vendor ID"), NULL, type, + VENDOR_ID, NULL); + params = gnc_search_param_prepend (params, _("Company Name"), NULL, type, + VENDOR_NAME, NULL); + } - /* Build the column list in reverse order */ - if (columns == NULL) { - columns = gnc_search_param_prepend (columns, _("Contact"), NULL, type, - VENDOR_ADDR, ADDRESS_NAME, NULL); - columns = gnc_search_param_prepend (columns, _("Company"), NULL, type, - VENDOR_NAME, NULL); - columns = gnc_search_param_prepend (columns, _("ID #"), NULL, type, - VENDOR_ID, NULL); - } + /* Build the column list in reverse order */ + if (columns == NULL) + { + columns = gnc_search_param_prepend (columns, _("Contact"), NULL, type, + VENDOR_ADDR, ADDRESS_NAME, NULL); + columns = gnc_search_param_prepend (columns, _("Company"), NULL, type, + VENDOR_NAME, NULL); + columns = gnc_search_param_prepend (columns, _("ID #"), NULL, type, + VENDOR_ID, NULL); + } - /* Build the queries */ - q = gncQueryCreateFor (type); - gncQuerySetBook (q, book); + /* Build the queries */ + q = gncQueryCreateFor (type); + gncQuerySetBook (q, book); #if 0 - if (start) { - q2 = gncQueryCopy (q); - gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), - gncVendorGetGUID (start), QUERY_AND); - } + if (start) + { + q2 = gncQueryCopy (q); + gncQueryAddGUIDMatch (q2, g_slist_prepend (NULL, QUERY_PARAM_GUID), + gncVendorGetGUID (start), QUERY_AND); + } #endif - /* launch select dialog and return the result */ - sw = g_new0 (struct _vendor_select_window, 1); - sw->book = book; - sw->q = q; + /* launch select dialog and return the result */ + sw = g_new0 (struct _vendor_select_window, 1); + sw->book = book; + sw->q = q; - return gnc_search_dialog_create (type, _("Find Vendor"), - params, columns, q, q2, buttons, NULL, - new_vendor_cb, sw, free_vendor_cb, - GCONF_SECTION_SEARCH, NULL); + return gnc_search_dialog_create (type, _("Find Vendor"), + params, columns, q, q2, buttons, NULL, + new_vendor_cb, sw, free_vendor_cb, + GCONF_SECTION_SEARCH, NULL); } GNCSearchWindow * gnc_vendor_search_select (gpointer start, gpointer book) { - if (!book) return NULL; + if (!book) return NULL; - return gnc_vendor_search (start, book); + return gnc_vendor_search (start, book); } GNCSearchWindow * gnc_vendor_search_edit (gpointer start, gpointer book) { - if (start) - gnc_ui_vendor_edit (start); + if (start) + gnc_ui_vendor_edit (start); - return NULL; + return NULL; } diff --git a/src/business/business-gnome/gnc-plugin-business.c b/src/business/business-gnome/gnc-plugin-business.c index e842137d93..ad1c6e4fa4 100644 --- a/src/business/business-gnome/gnc-plugin-business.c +++ b/src/business/business-gnome/gnc-plugin-business.c @@ -1,5 +1,5 @@ -/* - * gnc-plugin-business.c -- +/* + * gnc-plugin-business.c -- * * Author: Jan Arne Petersen * Copyright (C) 2003 Jan Arne Petersen @@ -54,79 +54,79 @@ static void gnc_plugin_business_finalize (GObject *object); /* Command callbacks */ static void gnc_plugin_business_cmd_customer_new_customer (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_customer_find_customer (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_customer_new_invoice (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_customer_find_invoice (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_customer_new_job (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_customer_find_job (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_customer_process_payment (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_vendor_new_vendor (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_vendor_find_vendor (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_vendor_new_bill (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_vendor_find_bill (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_vendor_new_job (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_vendor_find_job (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_vendor_process_payment (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_employee_new_employee (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_employee_find_employee (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_employee_new_expense_voucher (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_employee_find_expense_voucher (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_employee_process_payment (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_tax_tables (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_billing_terms (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_bills_due_reminder (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_export_invoice (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_export_customer (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_export_vendor (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_export_employee (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_test_search (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_test_reload_invoice_report (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_test_reload_owner_report (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_test_reload_receivable_report (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); static void gnc_plugin_business_cmd_test_init_data (GtkAction *action, - GncMainWindowActionData *data); + GncMainWindowActionData *data); /*static void gnc_plugin_business_cmd_export_report (GtkAction *action, GncMainWindowActionData *data);*/ @@ -142,118 +142,180 @@ static void gnc_plugin_business_cmd_test_init_data (GtkAction *action, */ static GncMainWindow *last_window = NULL; -static GtkActionEntry gnc_plugin_actions [] = +static GtkActionEntry gnc_plugin_actions [] = { - /* Toplevel */ - { "BusinessAction", NULL, N_("_Business"), NULL, NULL, NULL }, + /* Toplevel */ + { "BusinessAction", NULL, N_("_Business"), NULL, NULL, NULL }, - /* Customer submenu */ - { "CustomerMenuAction", NULL, N_("_Customer"), NULL, NULL, NULL }, - { "CustomerNewCustomerOpenAction", NULL, N_("_New Customer..."), NULL, - N_("Open the New Customer dialog"), - G_CALLBACK (gnc_plugin_business_cmd_customer_new_customer) }, - { "CustomerFindCustomerOpenAction", NULL, N_("_Find Customer..."), NULL, - N_("Open the Find Customer dialog"), - G_CALLBACK (gnc_plugin_business_cmd_customer_find_customer) }, - { "CustomerNewInvoiceOpenAction", NULL, N_("New _Invoice..."), NULL, - N_("Open the New Invoice dialog"), - G_CALLBACK (gnc_plugin_business_cmd_customer_new_invoice) }, - { "CustomerFindInvoiceOpenAction", NULL, N_("Find In_voice..."), NULL, - N_("Open the Find Invoice dialog"), - G_CALLBACK (gnc_plugin_business_cmd_customer_find_invoice) }, - { "CustomerNewJobOpenAction", NULL, N_("New _Job..."), NULL, - N_("Open the New Job dialog"), - G_CALLBACK (gnc_plugin_business_cmd_customer_new_job) }, - { "CustomerFindJobOpenAction", NULL, N_("Find Jo_b..."), NULL, - N_("Open the Find Job dialog"), - G_CALLBACK (gnc_plugin_business_cmd_customer_find_job) }, - { "CustomerProcessPaymentAction", NULL, N_("_Process Payment..."), NULL, - N_("Open the Process Payment dialog"), - G_CALLBACK (gnc_plugin_business_cmd_customer_process_payment) }, + /* Customer submenu */ + { "CustomerMenuAction", NULL, N_("_Customer"), NULL, NULL, NULL }, + { + "CustomerNewCustomerOpenAction", NULL, N_("_New Customer..."), NULL, + N_("Open the New Customer dialog"), + G_CALLBACK (gnc_plugin_business_cmd_customer_new_customer) + }, + { + "CustomerFindCustomerOpenAction", NULL, N_("_Find Customer..."), NULL, + N_("Open the Find Customer dialog"), + G_CALLBACK (gnc_plugin_business_cmd_customer_find_customer) + }, + { + "CustomerNewInvoiceOpenAction", NULL, N_("New _Invoice..."), NULL, + N_("Open the New Invoice dialog"), + G_CALLBACK (gnc_plugin_business_cmd_customer_new_invoice) + }, + { + "CustomerFindInvoiceOpenAction", NULL, N_("Find In_voice..."), NULL, + N_("Open the Find Invoice dialog"), + G_CALLBACK (gnc_plugin_business_cmd_customer_find_invoice) + }, + { + "CustomerNewJobOpenAction", NULL, N_("New _Job..."), NULL, + N_("Open the New Job dialog"), + G_CALLBACK (gnc_plugin_business_cmd_customer_new_job) + }, + { + "CustomerFindJobOpenAction", NULL, N_("Find Jo_b..."), NULL, + N_("Open the Find Job dialog"), + G_CALLBACK (gnc_plugin_business_cmd_customer_find_job) + }, + { + "CustomerProcessPaymentAction", NULL, N_("_Process Payment..."), NULL, + N_("Open the Process Payment dialog"), + G_CALLBACK (gnc_plugin_business_cmd_customer_process_payment) + }, - /* Vendor submenu */ - { "VendorMenuAction", NULL, N_("_Vendor"), NULL, NULL, NULL }, - { "VendorNewVendorOpenAction", NULL, N_("_New Vendor..."), NULL, - N_("Open the New Vendor dialog"), - G_CALLBACK (gnc_plugin_business_cmd_vendor_new_vendor) }, - { "VendorFindVendorOpenAction", NULL, N_("_Find Vendor..."), NULL, - N_("Open the Find Vendor dialog"), - G_CALLBACK (gnc_plugin_business_cmd_vendor_find_vendor) }, - { "VendorNewBillOpenAction", NULL, N_("New _Bill..."), NULL, - N_("Open the New Bill dialog"), - G_CALLBACK (gnc_plugin_business_cmd_vendor_new_bill) }, - { "VendorFindBillOpenAction", NULL, N_("Find Bi_ll..."), NULL, - N_("Open the Find Bill dialog"), - G_CALLBACK (gnc_plugin_business_cmd_vendor_find_bill) }, - { "VendorNewJobOpenAction", NULL, N_("New _Job..."), NULL, - N_("Open the New Job dialog"), - G_CALLBACK (gnc_plugin_business_cmd_vendor_new_job) }, - { "VendorFindJobOpenAction", NULL, N_("Find Jo_b..."), NULL, - N_("Open the Find Job dialog"), - G_CALLBACK (gnc_plugin_business_cmd_vendor_find_job) }, - { "VendorProcessPaymentAction", NULL, N_("_Process Payment..."), NULL, - N_("Open the Process Payment dialog"), - G_CALLBACK (gnc_plugin_business_cmd_vendor_process_payment) }, + /* Vendor submenu */ + { "VendorMenuAction", NULL, N_("_Vendor"), NULL, NULL, NULL }, + { + "VendorNewVendorOpenAction", NULL, N_("_New Vendor..."), NULL, + N_("Open the New Vendor dialog"), + G_CALLBACK (gnc_plugin_business_cmd_vendor_new_vendor) + }, + { + "VendorFindVendorOpenAction", NULL, N_("_Find Vendor..."), NULL, + N_("Open the Find Vendor dialog"), + G_CALLBACK (gnc_plugin_business_cmd_vendor_find_vendor) + }, + { + "VendorNewBillOpenAction", NULL, N_("New _Bill..."), NULL, + N_("Open the New Bill dialog"), + G_CALLBACK (gnc_plugin_business_cmd_vendor_new_bill) + }, + { + "VendorFindBillOpenAction", NULL, N_("Find Bi_ll..."), NULL, + N_("Open the Find Bill dialog"), + G_CALLBACK (gnc_plugin_business_cmd_vendor_find_bill) + }, + { + "VendorNewJobOpenAction", NULL, N_("New _Job..."), NULL, + N_("Open the New Job dialog"), + G_CALLBACK (gnc_plugin_business_cmd_vendor_new_job) + }, + { + "VendorFindJobOpenAction", NULL, N_("Find Jo_b..."), NULL, + N_("Open the Find Job dialog"), + G_CALLBACK (gnc_plugin_business_cmd_vendor_find_job) + }, + { + "VendorProcessPaymentAction", NULL, N_("_Process Payment..."), NULL, + N_("Open the Process Payment dialog"), + G_CALLBACK (gnc_plugin_business_cmd_vendor_process_payment) + }, - /* Employee submenu */ - { "EmployeeMenuAction", NULL, N_("_Employee"), NULL, NULL, NULL }, - { "EmployeeNewEmployeeOpenAction", NULL, N_("_New Employee..."), NULL, - N_("Open the New Employee dialog"), - G_CALLBACK (gnc_plugin_business_cmd_employee_new_employee) }, - { "EmployeeFindEmployeeOpenAction", NULL, N_("_Find Employee..."), NULL, - N_("Open the Find Employee dialog"), - G_CALLBACK (gnc_plugin_business_cmd_employee_find_employee) }, - { "EmployeeNewExpenseVoucherOpenAction", NULL, N_("New _Expense Voucher..."), NULL, - N_("Open the New Expense Voucher dialog"), - G_CALLBACK (gnc_plugin_business_cmd_employee_new_expense_voucher) }, - { "EmployeeFindExpenseVoucherOpenAction", NULL, N_("Find Expense _Voucher..."), NULL, - N_("Open the Find Expense Voucher dialog"), - G_CALLBACK (gnc_plugin_business_cmd_employee_find_expense_voucher) }, - { "EmployeeProcessPaymentAction", NULL, N_("_Process Payment..."), NULL, - N_("Open the Process Payment dialog"), - G_CALLBACK (gnc_plugin_business_cmd_employee_process_payment) }, + /* Employee submenu */ + { "EmployeeMenuAction", NULL, N_("_Employee"), NULL, NULL, NULL }, + { + "EmployeeNewEmployeeOpenAction", NULL, N_("_New Employee..."), NULL, + N_("Open the New Employee dialog"), + G_CALLBACK (gnc_plugin_business_cmd_employee_new_employee) + }, + { + "EmployeeFindEmployeeOpenAction", NULL, N_("_Find Employee..."), NULL, + N_("Open the Find Employee dialog"), + G_CALLBACK (gnc_plugin_business_cmd_employee_find_employee) + }, + { + "EmployeeNewExpenseVoucherOpenAction", NULL, N_("New _Expense Voucher..."), NULL, + N_("Open the New Expense Voucher dialog"), + G_CALLBACK (gnc_plugin_business_cmd_employee_new_expense_voucher) + }, + { + "EmployeeFindExpenseVoucherOpenAction", NULL, N_("Find Expense _Voucher..."), NULL, + N_("Open the Find Expense Voucher dialog"), + G_CALLBACK (gnc_plugin_business_cmd_employee_find_expense_voucher) + }, + { + "EmployeeProcessPaymentAction", NULL, N_("_Process Payment..."), NULL, + N_("Open the Process Payment dialog"), + G_CALLBACK (gnc_plugin_business_cmd_employee_process_payment) + }, - /* Other menu items */ - { "TaxTablesOpenAction", NULL, N_("Sales _Tax Table"), NULL, - N_("View and edit the list of Sales Tax Tables (GST/VAT)"), - G_CALLBACK (gnc_plugin_business_cmd_tax_tables) }, - { "BillingTermsOpenAction", NULL, N_("_Billing Terms Editor"), NULL, - N_("View and edit the list of Billing Terms"), - G_CALLBACK (gnc_plugin_business_cmd_billing_terms) }, - { "BillsDueReminderOpenAction", NULL, N_("Bills _Due Reminder"), NULL, - N_("Open the Bills Due Reminder dialog"), - G_CALLBACK (gnc_plugin_business_cmd_bills_due_reminder) }, - { "ExportMenuAction", NULL, N_("E_xport"), NULL, NULL, NULL }, - { "QSFInvoiceAction", NULL, N_("QSF _Invoice..."), NULL, - N_("Export one or more invoices to QSF"), - G_CALLBACK (gnc_plugin_business_cmd_export_invoice) }, - { "QSFCustomerAction", NULL, N_("QSF _Customer..."), NULL, - N_("Export one or more customers to QSF"), - G_CALLBACK (gnc_plugin_business_cmd_export_customer) }, - { "QSFVendorAction", NULL, N_("QSF _Vendor..."), NULL, - N_("Export one or more vendors to QSF"), - G_CALLBACK (gnc_plugin_business_cmd_export_vendor) }, - { "QSFEmployeeAction", NULL, N_("QSF _Employee..."), NULL, - N_("Export one or more employees to QSF"), - G_CALLBACK (gnc_plugin_business_cmd_export_employee) }, + /* Other menu items */ + { + "TaxTablesOpenAction", NULL, N_("Sales _Tax Table"), NULL, + N_("View and edit the list of Sales Tax Tables (GST/VAT)"), + G_CALLBACK (gnc_plugin_business_cmd_tax_tables) + }, + { + "BillingTermsOpenAction", NULL, N_("_Billing Terms Editor"), NULL, + N_("View and edit the list of Billing Terms"), + G_CALLBACK (gnc_plugin_business_cmd_billing_terms) + }, + { + "BillsDueReminderOpenAction", NULL, N_("Bills _Due Reminder"), NULL, + N_("Open the Bills Due Reminder dialog"), + G_CALLBACK (gnc_plugin_business_cmd_bills_due_reminder) + }, + { "ExportMenuAction", NULL, N_("E_xport"), NULL, NULL, NULL }, + { + "QSFInvoiceAction", NULL, N_("QSF _Invoice..."), NULL, + N_("Export one or more invoices to QSF"), + G_CALLBACK (gnc_plugin_business_cmd_export_invoice) + }, + { + "QSFCustomerAction", NULL, N_("QSF _Customer..."), NULL, + N_("Export one or more customers to QSF"), + G_CALLBACK (gnc_plugin_business_cmd_export_customer) + }, + { + "QSFVendorAction", NULL, N_("QSF _Vendor..."), NULL, + N_("Export one or more vendors to QSF"), + G_CALLBACK (gnc_plugin_business_cmd_export_vendor) + }, + { + "QSFEmployeeAction", NULL, N_("QSF _Employee..."), NULL, + N_("Export one or more employees to QSF"), + G_CALLBACK (gnc_plugin_business_cmd_export_employee) + }, - /* Extensions Menu */ - { "BusinessTestAction", NULL, N_("_Business"), NULL, NULL, NULL }, - { "BusinessTestSearchAction", NULL, N_("Test Search Dialog"), NULL, - N_("Test Search Dialog"), - G_CALLBACK (gnc_plugin_business_cmd_test_search) }, - { "BusinessTestReloadInvoiceAction", NULL, N_("Reload invoice report"), NULL, - N_("Reload invoice report scheme file"), - G_CALLBACK (gnc_plugin_business_cmd_test_reload_invoice_report) }, - { "BusinessTestReloadOwnerAction", NULL, N_("Reload owner report"), NULL, - N_("Reload owner report scheme file"), - G_CALLBACK (gnc_plugin_business_cmd_test_reload_owner_report) }, - { "BusinessTestReloadReceivableAction", NULL, N_("Reload receivable report"), NULL, - N_("Reload receivable report scheme file"), - G_CALLBACK (gnc_plugin_business_cmd_test_reload_receivable_report) }, - { "BusinessTestInitDataAction", NULL, N_("Initialize Test Data"), NULL, - N_("Initialize Test Data"), - G_CALLBACK (gnc_plugin_business_cmd_test_init_data) }, + /* Extensions Menu */ + { "BusinessTestAction", NULL, N_("_Business"), NULL, NULL, NULL }, + { + "BusinessTestSearchAction", NULL, N_("Test Search Dialog"), NULL, + N_("Test Search Dialog"), + G_CALLBACK (gnc_plugin_business_cmd_test_search) + }, + { + "BusinessTestReloadInvoiceAction", NULL, N_("Reload invoice report"), NULL, + N_("Reload invoice report scheme file"), + G_CALLBACK (gnc_plugin_business_cmd_test_reload_invoice_report) + }, + { + "BusinessTestReloadOwnerAction", NULL, N_("Reload owner report"), NULL, + N_("Reload owner report scheme file"), + G_CALLBACK (gnc_plugin_business_cmd_test_reload_owner_report) + }, + { + "BusinessTestReloadReceivableAction", NULL, N_("Reload receivable report"), NULL, + N_("Reload receivable report scheme file"), + G_CALLBACK (gnc_plugin_business_cmd_test_reload_receivable_report) + }, + { + "BusinessTestInitDataAction", NULL, N_("Initialize Test Data"), NULL, + N_("Initialize Test Data"), + G_CALLBACK (gnc_plugin_business_cmd_test_init_data) + }, }; static guint gnc_plugin_n_actions = G_N_ELEMENTS (gnc_plugin_actions); @@ -264,9 +326,9 @@ static guint gnc_plugin_n_actions = G_N_ELEMENTS (gnc_plugin_actions); typedef struct GncPluginBusinessPrivate { - GncOwner *last_customer; - GncOwner *last_vendor; - GncOwner *last_employee; + GncOwner *last_customer; + GncOwner *last_vendor; + GncOwner *last_employee; } GncPluginBusinessPrivate; #define GNC_PLUGIN_BUSINESS_GET_PRIVATE(o) \ @@ -277,94 +339,96 @@ static GObjectClass *parent_class = NULL; GType gnc_plugin_business_get_type (void) { - static GType gnc_plugin_business_type = 0; + static GType gnc_plugin_business_type = 0; - if (gnc_plugin_business_type == 0) { - static const GTypeInfo our_info = { - sizeof (GncPluginBusinessClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) gnc_plugin_business_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GncPluginBusiness), - 0, /* n_preallocs */ - (GInstanceInitFunc) gnc_plugin_business_init - }; - - gnc_plugin_business_type = g_type_register_static (GNC_TYPE_PLUGIN, - "GncPluginBusiness", - &our_info, 0); - } + if (gnc_plugin_business_type == 0) + { + static const GTypeInfo our_info = + { + sizeof (GncPluginBusinessClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) gnc_plugin_business_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (GncPluginBusiness), + 0, /* n_preallocs */ + (GInstanceInitFunc) gnc_plugin_business_init + }; - return gnc_plugin_business_type; + gnc_plugin_business_type = g_type_register_static (GNC_TYPE_PLUGIN, + "GncPluginBusiness", + &our_info, 0); + } + + return gnc_plugin_business_type; } GncPlugin * gnc_plugin_business_new (void) { - GncPluginBusiness *plugin; + GncPluginBusiness *plugin; - /* Reference the invoice page plugin to ensure it exists in - * the gtk type system. */ - GNC_TYPE_PLUGIN_PAGE_INVOICE; + /* Reference the invoice page plugin to ensure it exists in + * the gtk type system. */ + GNC_TYPE_PLUGIN_PAGE_INVOICE; - plugin = g_object_new (GNC_TYPE_PLUGIN_BUSINESS, - (char *)NULL); + plugin = g_object_new (GNC_TYPE_PLUGIN_BUSINESS, + (char *)NULL); - return GNC_PLUGIN (plugin); + return GNC_PLUGIN (plugin); } static void gnc_plugin_business_class_init (GncPluginBusinessClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GncPluginClass *plugin_class = GNC_PLUGIN_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GncPluginClass *plugin_class = GNC_PLUGIN_CLASS (klass); - parent_class = g_type_class_peek_parent (klass); + parent_class = g_type_class_peek_parent (klass); - object_class->finalize = gnc_plugin_business_finalize; + object_class->finalize = gnc_plugin_business_finalize; - /* plugin info */ - plugin_class->plugin_name = GNC_PLUGIN_BUSINESS_NAME; + /* plugin info */ + plugin_class->plugin_name = GNC_PLUGIN_BUSINESS_NAME; - /* widget addition/removal */ - plugin_class->actions_name = PLUGIN_ACTIONS_NAME; - plugin_class->actions = gnc_plugin_actions; - plugin_class->n_actions = gnc_plugin_n_actions; - plugin_class->ui_filename = PLUGIN_UI_FILENAME; + /* widget addition/removal */ + plugin_class->actions_name = PLUGIN_ACTIONS_NAME; + plugin_class->actions = gnc_plugin_actions; + plugin_class->n_actions = gnc_plugin_n_actions; + plugin_class->ui_filename = PLUGIN_UI_FILENAME; - g_type_class_add_private(klass, sizeof(GncPluginBusinessPrivate)); + g_type_class_add_private(klass, sizeof(GncPluginBusinessPrivate)); } static void gnc_plugin_business_init (GncPluginBusiness *plugin) { - GncPluginBusinessPrivate *priv; + GncPluginBusinessPrivate *priv; - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - priv->last_customer = gncOwnerCreate (); - gncOwnerInitCustomer (priv->last_customer, NULL); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + priv->last_customer = gncOwnerCreate (); + gncOwnerInitCustomer (priv->last_customer, NULL); - priv->last_vendor = gncOwnerCreate (); - gncOwnerInitVendor (priv->last_vendor, NULL); + priv->last_vendor = gncOwnerCreate (); + gncOwnerInitVendor (priv->last_vendor, NULL); - priv->last_employee = gncOwnerCreate (); - gncOwnerInitEmployee (priv->last_employee, NULL); + priv->last_employee = gncOwnerCreate (); + gncOwnerInitEmployee (priv->last_employee, NULL); } static void gnc_plugin_business_finalize (GObject *object) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (object)); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (object)); - plugin = GNC_PLUGIN_BUSINESS (object); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + plugin = GNC_PLUGIN_BUSINESS (object); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - G_OBJECT_CLASS (parent_class)->finalize (object); + G_OBJECT_CLASS (parent_class)->finalize (object); } /************************************************************ @@ -374,7 +438,7 @@ gnc_plugin_business_finalize (GObject *object) GncMainWindow* gnc_plugin_business_get_window() { - return last_window; + return last_window; } /************************************************************ @@ -383,325 +447,325 @@ gnc_plugin_business_get_window() static void gnc_plugin_business_cmd_customer_new_customer (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - gnc_ui_customer_new (gnc_get_current_book()); + gnc_ui_customer_new (gnc_get_current_book()); } static void gnc_plugin_business_cmd_customer_find_customer (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; - GncCustomer*customer; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; + GncCustomer*customer; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - customer = gncOwnerGetCustomer (priv->last_customer); - gnc_customer_search (customer, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + customer = gncOwnerGetCustomer (priv->last_customer); + gnc_customer_search (customer, gnc_get_current_book()); } static void gnc_plugin_business_cmd_customer_new_invoice (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - last_window = mw->window; - gnc_ui_invoice_new (priv->last_customer, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + last_window = mw->window; + gnc_ui_invoice_new (priv->last_customer, gnc_get_current_book()); } static void gnc_plugin_business_cmd_customer_find_invoice (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - last_window = mw->window; - gnc_invoice_search (NULL, priv->last_customer, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + last_window = mw->window; + gnc_invoice_search (NULL, priv->last_customer, gnc_get_current_book()); } static void gnc_plugin_business_cmd_customer_new_job (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - gnc_ui_job_new (priv->last_customer, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + gnc_ui_job_new (priv->last_customer, gnc_get_current_book()); } static void gnc_plugin_business_cmd_customer_find_job (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - gnc_job_search (NULL, priv->last_customer, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + gnc_job_search (NULL, priv->last_customer, gnc_get_current_book()); } static void gnc_plugin_business_cmd_customer_process_payment (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - gnc_ui_payment_new (priv->last_customer, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + gnc_ui_payment_new (priv->last_customer, gnc_get_current_book()); } static void gnc_plugin_business_cmd_vendor_new_vendor (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - gnc_ui_vendor_new (gnc_get_current_book()); + gnc_ui_vendor_new (gnc_get_current_book()); } static void gnc_plugin_business_cmd_vendor_find_vendor (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; - GncVendor *vendor; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; + GncVendor *vendor; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - vendor = gncOwnerGetVendor (priv->last_vendor); - gnc_vendor_search (vendor, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + vendor = gncOwnerGetVendor (priv->last_vendor); + gnc_vendor_search (vendor, gnc_get_current_book()); } static void gnc_plugin_business_cmd_vendor_new_bill (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - last_window = mw->window; - gnc_ui_invoice_new (priv->last_vendor, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + last_window = mw->window; + gnc_ui_invoice_new (priv->last_vendor, gnc_get_current_book()); } static void gnc_plugin_business_cmd_vendor_find_bill (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - last_window = mw->window; - gnc_invoice_search (NULL, priv->last_vendor, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + last_window = mw->window; + gnc_invoice_search (NULL, priv->last_vendor, gnc_get_current_book()); } static void gnc_plugin_business_cmd_vendor_new_job (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - gnc_ui_job_new (priv->last_vendor, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + gnc_ui_job_new (priv->last_vendor, gnc_get_current_book()); } static void gnc_plugin_business_cmd_vendor_find_job (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - gnc_job_search (NULL, priv->last_vendor, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + gnc_job_search (NULL, priv->last_vendor, gnc_get_current_book()); } static void gnc_plugin_business_cmd_vendor_process_payment (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - gnc_ui_payment_new (priv->last_vendor, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + gnc_ui_payment_new (priv->last_vendor, gnc_get_current_book()); } static void gnc_plugin_business_cmd_employee_new_employee (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - gnc_ui_employee_new (gnc_get_current_book()); + gnc_ui_employee_new (gnc_get_current_book()); } static void gnc_plugin_business_cmd_employee_find_employee (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; - GncEmployee *employee; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; + GncEmployee *employee; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - employee = gncOwnerGetEmployee (priv->last_employee); - gnc_employee_search (employee, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + employee = gncOwnerGetEmployee (priv->last_employee); + gnc_employee_search (employee, gnc_get_current_book()); } static void gnc_plugin_business_cmd_employee_new_expense_voucher (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - last_window = mw->window; - gnc_ui_invoice_new (priv->last_employee, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + last_window = mw->window; + gnc_ui_invoice_new (priv->last_employee, gnc_get_current_book()); } static void gnc_plugin_business_cmd_employee_find_expense_voucher (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - last_window = mw->window; - gnc_invoice_search (NULL, priv->last_employee, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + last_window = mw->window; + gnc_invoice_search (NULL, priv->last_employee, gnc_get_current_book()); } static void gnc_plugin_business_cmd_employee_process_payment (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - gnc_ui_payment_new (priv->last_employee, gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + gnc_ui_payment_new (priv->last_employee, gnc_get_current_book()); } static void gnc_plugin_business_cmd_tax_tables (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - gnc_ui_tax_table_window_new (gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + gnc_ui_tax_table_window_new (gnc_get_current_book()); } static void gnc_plugin_business_cmd_billing_terms (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - GncPluginBusiness *plugin; - GncPluginBusinessPrivate *priv; + GncPluginBusiness *plugin; + GncPluginBusinessPrivate *priv; - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - plugin = GNC_PLUGIN_BUSINESS (mw->data); - priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); - gnc_ui_billterms_window_new (gnc_get_current_book()); + plugin = GNC_PLUGIN_BUSINESS (mw->data); + priv = GNC_PLUGIN_BUSINESS_GET_PRIVATE (plugin); + gnc_ui_billterms_window_new (gnc_get_current_book()); } static void gnc_plugin_business_cmd_bills_due_reminder (GtkAction *action, - GncMainWindowActionData *mw) + GncMainWindowActionData *mw) { - g_return_if_fail (mw != NULL); - g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); + g_return_if_fail (mw != NULL); + g_return_if_fail (GNC_IS_PLUGIN_BUSINESS (mw->data)); - gnc_invoice_remind_bills_due(); + gnc_invoice_remind_bills_due(); } /************************************************************** @@ -711,248 +775,248 @@ gnc_plugin_business_cmd_bills_due_reminder (GtkAction *action, static void gnc_plugin_business_cmd_export_invoice (GtkAction *action, GncMainWindowActionData *mw) { - QofSession *current_session, *chart_session; - QofBook *book; - QofCollection *coll; - gchar *filename; - gboolean success; + QofSession *current_session, *chart_session; + QofBook *book; + QofCollection *coll; + gchar *filename; + gboolean success; - current_session = gnc_get_current_session(); - book = qof_session_get_book(current_session); - chart_session = qof_session_new(); - success = FALSE; - filename = gnc_file_dialog(_("Export Invoices to XML"), NULL, - NULL, GNC_FILE_DIALOG_EXPORT); - if (filename) - { - gchar* url = g_strdup_printf( "qsf:%s", filename ); - qof_session_begin(chart_session, url, TRUE, TRUE); - coll = qof_book_get_collection(book, GNC_ID_INVOICE); - success = qof_instance_copy_coll_r(chart_session, coll); - /* Need to get the GList of GncEntry's - KVP */ - coll = qof_book_get_collection(book, GNC_ID_CUSTOMER); - success = qof_instance_copy_coll_r(chart_session, coll); - if(success) - { - qof_session_save(chart_session, NULL); - } - g_free(url); - } - show_session_error(qof_session_get_error(chart_session), filename, - GNC_FILE_DIALOG_EXPORT); - g_free(filename); - qof_session_end(chart_session); - gnc_set_current_session(current_session); + current_session = gnc_get_current_session(); + book = qof_session_get_book(current_session); + chart_session = qof_session_new(); + success = FALSE; + filename = gnc_file_dialog(_("Export Invoices to XML"), NULL, + NULL, GNC_FILE_DIALOG_EXPORT); + if (filename) + { + gchar* url = g_strdup_printf( "qsf:%s", filename ); + qof_session_begin(chart_session, url, TRUE, TRUE); + coll = qof_book_get_collection(book, GNC_ID_INVOICE); + success = qof_instance_copy_coll_r(chart_session, coll); + /* Need to get the GList of GncEntry's - KVP */ + coll = qof_book_get_collection(book, GNC_ID_CUSTOMER); + success = qof_instance_copy_coll_r(chart_session, coll); + if (success) + { + qof_session_save(chart_session, NULL); + } + g_free(url); + } + show_session_error(qof_session_get_error(chart_session), filename, + GNC_FILE_DIALOG_EXPORT); + g_free(filename); + qof_session_end(chart_session); + gnc_set_current_session(current_session); } static void gnc_plugin_business_cmd_export_customer (GtkAction *action, GncMainWindowActionData *mw) { - QofSession *current_session, *chart_session; - QofBook *book; - QofCollection *coll; - gchar *filename; - gboolean success; + QofSession *current_session, *chart_session; + QofBook *book; + QofCollection *coll; + gchar *filename; + gboolean success; - current_session = gnc_get_current_session(); - book = qof_session_get_book(current_session); - chart_session = qof_session_new(); - success = FALSE; - filename = gnc_file_dialog(_("Export Customers to XML"), NULL, - NULL, GNC_FILE_DIALOG_EXPORT); - if (filename) - { - gchar* url = g_strdup_printf( "qsf:%s", filename ); - qof_session_begin(chart_session, url, TRUE, TRUE); - coll = qof_book_get_collection(book, GNC_ID_CUSTOMER); - success = qof_instance_copy_coll_r(chart_session, coll); - if(success) - { - qof_session_save(chart_session, NULL); - } - g_free(url); - } - show_session_error(qof_session_get_error(chart_session), filename, - GNC_FILE_DIALOG_EXPORT); - qof_session_end(chart_session); - g_free(filename); - gnc_set_current_session(current_session); + current_session = gnc_get_current_session(); + book = qof_session_get_book(current_session); + chart_session = qof_session_new(); + success = FALSE; + filename = gnc_file_dialog(_("Export Customers to XML"), NULL, + NULL, GNC_FILE_DIALOG_EXPORT); + if (filename) + { + gchar* url = g_strdup_printf( "qsf:%s", filename ); + qof_session_begin(chart_session, url, TRUE, TRUE); + coll = qof_book_get_collection(book, GNC_ID_CUSTOMER); + success = qof_instance_copy_coll_r(chart_session, coll); + if (success) + { + qof_session_save(chart_session, NULL); + } + g_free(url); + } + show_session_error(qof_session_get_error(chart_session), filename, + GNC_FILE_DIALOG_EXPORT); + qof_session_end(chart_session); + g_free(filename); + gnc_set_current_session(current_session); } static void gnc_plugin_business_cmd_export_vendor (GtkAction *action, GncMainWindowActionData *mw) { - QofSession *current_session, *chart_session; - QofBook *book; - QofCollection *coll; - gchar *filename; - gboolean success; + QofSession *current_session, *chart_session; + QofBook *book; + QofCollection *coll; + gchar *filename; + gboolean success; - current_session = gnc_get_current_session(); - book = qof_session_get_book(current_session); - chart_session = qof_session_new(); - success = FALSE; - filename = gnc_file_dialog(_("Export Vendors to XML"), NULL, - NULL, GNC_FILE_DIALOG_EXPORT); - if (filename) - { - gchar* url = g_strdup_printf( "qsf:%s", filename ); - qof_session_begin(chart_session, url, TRUE, TRUE); - coll = qof_book_get_collection(book, GNC_ID_VENDOR); - success = qof_instance_copy_coll_r(chart_session, coll); - if(success) - { - qof_session_save(chart_session, NULL); - } - g_free(url); - } - show_session_error(qof_session_get_error(chart_session), filename, - GNC_FILE_DIALOG_EXPORT); - qof_session_end(chart_session); - g_free(filename); - gnc_set_current_session(current_session); + current_session = gnc_get_current_session(); + book = qof_session_get_book(current_session); + chart_session = qof_session_new(); + success = FALSE; + filename = gnc_file_dialog(_("Export Vendors to XML"), NULL, + NULL, GNC_FILE_DIALOG_EXPORT); + if (filename) + { + gchar* url = g_strdup_printf( "qsf:%s", filename ); + qof_session_begin(chart_session, url, TRUE, TRUE); + coll = qof_book_get_collection(book, GNC_ID_VENDOR); + success = qof_instance_copy_coll_r(chart_session, coll); + if (success) + { + qof_session_save(chart_session, NULL); + } + g_free(url); + } + show_session_error(qof_session_get_error(chart_session), filename, + GNC_FILE_DIALOG_EXPORT); + qof_session_end(chart_session); + g_free(filename); + gnc_set_current_session(current_session); } static void gnc_plugin_business_cmd_export_employee (GtkAction *action, GncMainWindowActionData *mw) { - QofSession *current_session, *chart_session; - QofBook *book; - QofCollection *coll; - gchar *filename; - gboolean success; + QofSession *current_session, *chart_session; + QofBook *book; + QofCollection *coll; + gchar *filename; + gboolean success; - current_session = gnc_get_current_session(); - book = qof_session_get_book(current_session); - chart_session = qof_session_new(); - success = FALSE; - filename = gnc_file_dialog(_("Export Employees to XML"), NULL, - NULL, GNC_FILE_DIALOG_EXPORT); - if (filename) - { - gchar* url = g_strdup_printf( "qsf:%s", filename ); - qof_session_begin(chart_session, url, TRUE, TRUE); - coll = qof_book_get_collection(book, GNC_ID_EMPLOYEE); - success = qof_instance_copy_coll_r(chart_session, coll); - if(success) - { - qof_session_save(chart_session, NULL); - } - g_free(url); - } - show_session_error(qof_session_get_error(chart_session), filename, - GNC_FILE_DIALOG_EXPORT); - qof_session_end(chart_session); - g_free(filename); - gnc_set_current_session(current_session); + current_session = gnc_get_current_session(); + book = qof_session_get_book(current_session); + chart_session = qof_session_new(); + success = FALSE; + filename = gnc_file_dialog(_("Export Employees to XML"), NULL, + NULL, GNC_FILE_DIALOG_EXPORT); + if (filename) + { + gchar* url = g_strdup_printf( "qsf:%s", filename ); + qof_session_begin(chart_session, url, TRUE, TRUE); + coll = qof_book_get_collection(book, GNC_ID_EMPLOYEE); + success = qof_instance_copy_coll_r(chart_session, coll); + if (success) + { + qof_session_save(chart_session, NULL); + } + g_free(url); + } + show_session_error(qof_session_get_error(chart_session), filename, + GNC_FILE_DIALOG_EXPORT); + qof_session_end(chart_session); + g_free(filename); + gnc_set_current_session(current_session); } static void gnc_plugin_business_cmd_test_search (GtkAction *action, - GncMainWindowActionData *data) + GncMainWindowActionData *data) { - gnc_search_dialog_test(); + gnc_search_dialog_test(); } static void gnc_plugin_business_reload_module (const gchar *name) { - SCM file_scm; + SCM file_scm; - file_scm = scm_makfrom0str (name); - scm_call_1(scm_c_eval_string("gnc:reload-module"), file_scm); + file_scm = scm_makfrom0str (name); + scm_call_1(scm_c_eval_string("gnc:reload-module"), file_scm); } static void gnc_plugin_business_cmd_test_reload_invoice_report (GtkAction *action, - GncMainWindowActionData *data) + GncMainWindowActionData *data) { - gnc_plugin_business_reload_module("gnucash/report/invoice.scm"); + gnc_plugin_business_reload_module("gnucash/report/invoice.scm"); } static void gnc_plugin_business_cmd_test_reload_owner_report (GtkAction *action, - GncMainWindowActionData *data) + GncMainWindowActionData *data) { - gnc_plugin_business_reload_module("gnucash/report/owner-report.scm"); + gnc_plugin_business_reload_module("gnucash/report/owner-report.scm"); } static void gnc_plugin_business_cmd_test_reload_receivable_report (GtkAction *action, - GncMainWindowActionData *data) + GncMainWindowActionData *data) { - gnc_plugin_business_reload_module("gnucash/report/receivable-report.scm"); + gnc_plugin_business_reload_module("gnucash/report/receivable-report.scm"); } static void gnc_plugin_business_cmd_test_init_data (GtkAction *action, - GncMainWindowActionData *data) + GncMainWindowActionData *data) { - QofBook *book = gnc_get_current_book(); - GncCustomer *customer = gncCustomerCreate(book); - GncAddress *address = gncCustomerGetAddr(customer); - GncInvoice *invoice = gncInvoiceCreate(book); - GncOwner *owner = gncOwnerCreate(); - GncJob *job = gncJobCreate(book); - Account *root = gnc_book_get_root_account(book); - Account *inc_acct = xaccMallocAccount(book); - Account *bank_acct = xaccMallocAccount(book); - Account *tax_acct = xaccMallocAccount(book); - Account *ar_acct = xaccMallocAccount(book); - Timespec now; + QofBook *book = gnc_get_current_book(); + GncCustomer *customer = gncCustomerCreate(book); + GncAddress *address = gncCustomerGetAddr(customer); + GncInvoice *invoice = gncInvoiceCreate(book); + GncOwner *owner = gncOwnerCreate(); + GncJob *job = gncJobCreate(book); + Account *root = gnc_book_get_root_account(book); + Account *inc_acct = xaccMallocAccount(book); + Account *bank_acct = xaccMallocAccount(book); + Account *tax_acct = xaccMallocAccount(book); + Account *ar_acct = xaccMallocAccount(book); + Timespec now; - // Create Customer - gncCustomerSetID(customer, "000001"); - gncCustomerSetName(customer, "Test Customer"); - gncCustomerSetCurrency(customer, gnc_default_currency()); - gncAddressSetName(address, "Contact Person"); - gncAddressSetAddr1(address, "20 Customer Lane"); - gncAddressSetAddr2(address, "Customer M/S"); - gncAddressSetAddr3(address, "Addr3, XXX 12345"); + // Create Customer + gncCustomerSetID(customer, "000001"); + gncCustomerSetName(customer, "Test Customer"); + gncCustomerSetCurrency(customer, gnc_default_currency()); + gncAddressSetName(address, "Contact Person"); + gncAddressSetAddr1(address, "20 Customer Lane"); + gncAddressSetAddr2(address, "Customer M/S"); + gncAddressSetAddr3(address, "Addr3, XXX 12345"); - // Create the Owner - gncOwnerInitCustomer(owner, customer); + // Create the Owner + gncOwnerInitCustomer(owner, customer); - // Create the Invoice - timespecFromTime_t(&now, time(NULL)); - gncInvoiceSetID(invoice, "000012"); - gncInvoiceSetOwner(invoice, owner); - gncInvoiceSetDateOpened(invoice, now); - gncInvoiceSetCurrency(invoice, gnc_default_currency()); + // Create the Invoice + timespecFromTime_t(&now, time(NULL)); + gncInvoiceSetID(invoice, "000012"); + gncInvoiceSetOwner(invoice, owner); + gncInvoiceSetDateOpened(invoice, now); + gncInvoiceSetCurrency(invoice, gnc_default_currency()); - // Create the Job - gncJobSetID(job, "000025"); - gncJobSetName(job, "Test Job"); - gncJobSetReference(job, "Customer's ref#"); - gncJobSetOwner(job, owner); + // Create the Job + gncJobSetID(job, "000025"); + gncJobSetName(job, "Test Job"); + gncJobSetReference(job, "Customer's ref#"); + gncJobSetOwner(job, owner); - // MODIFY THE OWNER - gncOwnerInitJob(owner, job); + // MODIFY THE OWNER + gncOwnerInitJob(owner, job); - // Create the A/R account - xaccAccountSetType(ar_acct, ACCT_TYPE_RECEIVABLE); - xaccAccountSetName(ar_acct, "A/R"); - xaccAccountSetCommodity(ar_acct, gnc_default_currency()); - gnc_account_append_child(root, ar_acct); + // Create the A/R account + xaccAccountSetType(ar_acct, ACCT_TYPE_RECEIVABLE); + xaccAccountSetName(ar_acct, "A/R"); + xaccAccountSetCommodity(ar_acct, gnc_default_currency()); + gnc_account_append_child(root, ar_acct); - // Create the Income account - xaccAccountSetType(inc_acct, ACCT_TYPE_INCOME); - xaccAccountSetName(inc_acct, "Income"); - xaccAccountSetCommodity(inc_acct, gnc_default_currency()); - gnc_account_append_child(root, inc_acct); + // Create the Income account + xaccAccountSetType(inc_acct, ACCT_TYPE_INCOME); + xaccAccountSetName(inc_acct, "Income"); + xaccAccountSetCommodity(inc_acct, gnc_default_currency()); + gnc_account_append_child(root, inc_acct); - // Create the Bank account - xaccAccountSetType(bank_acct, ACCT_TYPE_BANK); - xaccAccountSetName(bank_acct, "Bank"); - xaccAccountSetCommodity(bank_acct, gnc_default_currency()); - gnc_account_append_child(root, bank_acct); + // Create the Bank account + xaccAccountSetType(bank_acct, ACCT_TYPE_BANK); + xaccAccountSetName(bank_acct, "Bank"); + xaccAccountSetCommodity(bank_acct, gnc_default_currency()); + gnc_account_append_child(root, bank_acct); - // Create the Tax account - xaccAccountSetType(tax_acct, ACCT_TYPE_LIABILITY); - xaccAccountSetName(tax_acct, "Tax-Holding"); - xaccAccountSetCommodity(tax_acct, gnc_default_currency()); - gnc_account_append_child(root, tax_acct); + // Create the Tax account + xaccAccountSetType(tax_acct, ACCT_TYPE_LIABILITY); + xaccAccountSetName(tax_acct, "Tax-Holding"); + xaccAccountSetCommodity(tax_acct, gnc_default_currency()); + gnc_account_append_child(root, tax_acct); - // Launch the invoice editor - gnc_ui_invoice_edit(invoice); + // Launch the invoice editor + gnc_ui_invoice_edit(invoice); } diff --git a/src/business/business-gnome/gnc-plugin-business.h b/src/business/business-gnome/gnc-plugin-business.h index be7abbf509..8ab19e2aac 100644 --- a/src/business/business-gnome/gnc-plugin-business.h +++ b/src/business/business-gnome/gnc-plugin-business.h @@ -1,5 +1,5 @@ -/* - * gnc-plugin-business.h -- +/* + * gnc-plugin-business.h -- * * Copyright (C) 2003 Jan Arne Petersen * Author: Jan Arne Petersen @@ -42,12 +42,14 @@ G_BEGIN_DECLS #define GNC_PLUGIN_BUSINESS_NAME "gnc-plugin-business" /* typedefs & structures */ -typedef struct { - GncPlugin gnc_plugin; +typedef struct +{ + GncPlugin gnc_plugin; } GncPluginBusiness; -typedef struct { - GncPluginClass gnc_plugin; +typedef struct +{ + GncPluginClass gnc_plugin; } GncPluginBusinessClass; /* function prototypes */ diff --git a/src/business/business-gnome/gnc-plugin-page-invoice.c b/src/business/business-gnome/gnc-plugin-page-invoice.c index 090ee3aa66..71f3ae6689 100644 --- a/src/business/business-gnome/gnc-plugin-page-invoice.c +++ b/src/business/business-gnome/gnc-plugin-page-invoice.c @@ -1,5 +1,5 @@ -/* - * gnc-plugin-page-invoice.c -- +/* + * gnc-plugin-page-invoice.c -- * * Copyright (C) 2005,2006 David Hampton * @@ -71,8 +71,8 @@ static void gnc_plugin_page_invoice_cmd_post (GtkAction *action, GncPluginPageIn static void gnc_plugin_page_invoice_cmd_unpost (GtkAction *action, GncPluginPageInvoice *plugin_page); static void gnc_plugin_page_invoice_cmd_sort_changed (GtkAction *action, - GtkRadioAction *current, - GncPluginPageInvoice *plugin_page); + GtkRadioAction *current, + GncPluginPageInvoice *plugin_page); static void gnc_plugin_page_invoice_cmd_enter (GtkAction *action, GncPluginPageInvoice *plugin_page); static void gnc_plugin_page_invoice_cmd_cancel (GtkAction *action, GncPluginPageInvoice *plugin_page); @@ -91,114 +91,150 @@ static void gnc_plugin_page_invoice_refresh_cb (GHashTable *changes, gpointer us static GtkActionEntry gnc_plugin_page_invoice_actions [] = { - /* Toplevel */ - { "FakeToplevel", NULL, "", NULL, NULL, NULL }, - { "SortOrderAction", NULL, N_("Sort _Order"), NULL, NULL, NULL }, + /* Toplevel */ + { "FakeToplevel", NULL, "", NULL, NULL, NULL }, + { "SortOrderAction", NULL, N_("Sort _Order"), NULL, NULL, NULL }, - /* File menu */ - { "FileNewInvoiceAction", GTK_STOCK_NEW, N_("New _Invoice"), "", - N_("Create a new invoice"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_new_invoice) }, - { "FileNewAccountAction", GNC_STOCK_NEW_ACCOUNT, N_("New _Account..."), NULL, - N_("Create a new account"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_new_account) }, - { "FilePrintAction", GTK_STOCK_PRINT, N_("Print Invoice"), "p", - N_("Make a printable invoice"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_print) }, + /* File menu */ + { + "FileNewInvoiceAction", GTK_STOCK_NEW, N_("New _Invoice"), "", + N_("Create a new invoice"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_new_invoice) + }, + { + "FileNewAccountAction", GNC_STOCK_NEW_ACCOUNT, N_("New _Account..."), NULL, + N_("Create a new account"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_new_account) + }, + { + "FilePrintAction", GTK_STOCK_PRINT, N_("Print Invoice"), "p", + N_("Make a printable invoice"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_print) + }, - /* Edit menu */ - { "EditCutAction", GTK_STOCK_CUT, N_("_Cut"), NULL, - NULL, - G_CALLBACK (gnc_plugin_page_invoice_cmd_cut) }, - { "EditCopyAction", GTK_STOCK_COPY, N_("Copy"), NULL, - NULL, - G_CALLBACK (gnc_plugin_page_invoice_cmd_copy) }, - { "EditPasteAction", GTK_STOCK_PASTE, N_("_Paste"), NULL, - NULL, - G_CALLBACK (gnc_plugin_page_invoice_cmd_paste) }, - { "EditEditInvoiceAction", GNC_STOCK_INVOICE_EDIT, N_("_Edit Invoice"), NULL, - N_("Edit this invoice"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_edit) }, - { "EditPostInvoiceAction", GNC_STOCK_INVOICE_POST, N_("_Post Invoice"), NULL, - N_("Post this Invoice to your Chart of Accounts"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_post) }, - { "EditUnpostInvoiceAction", GNC_STOCK_INVOICE_UNPOST, N_("_Unpost Invoice"), NULL, - N_("Unpost this Invoice and make it editable"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_unpost) }, + /* Edit menu */ + { + "EditCutAction", GTK_STOCK_CUT, N_("_Cut"), NULL, + NULL, + G_CALLBACK (gnc_plugin_page_invoice_cmd_cut) + }, + { + "EditCopyAction", GTK_STOCK_COPY, N_("Copy"), NULL, + NULL, + G_CALLBACK (gnc_plugin_page_invoice_cmd_copy) + }, + { + "EditPasteAction", GTK_STOCK_PASTE, N_("_Paste"), NULL, + NULL, + G_CALLBACK (gnc_plugin_page_invoice_cmd_paste) + }, + { + "EditEditInvoiceAction", GNC_STOCK_INVOICE_EDIT, N_("_Edit Invoice"), NULL, + N_("Edit this invoice"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_edit) + }, + { + "EditPostInvoiceAction", GNC_STOCK_INVOICE_POST, N_("_Post Invoice"), NULL, + N_("Post this Invoice to your Chart of Accounts"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_post) + }, + { + "EditUnpostInvoiceAction", GNC_STOCK_INVOICE_UNPOST, N_("_Unpost Invoice"), NULL, + N_("Unpost this Invoice and make it editable"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_unpost) + }, - /* Actions menu */ - { "RecordEntryAction", GTK_STOCK_ADD, N_("_Enter"), NULL, - N_("Record the current entry"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_enter) }, - { "CancelEntryAction", GTK_STOCK_CANCEL, N_("_Cancel"), NULL, - N_("Cancel the current entry"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_cancel) }, - { "DeleteEntryAction", GTK_STOCK_DELETE, N_("_Delete"), NULL, - N_("Delete the current entry"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_delete) }, - { "BlankEntryAction", GTK_STOCK_GOTO_BOTTOM, N_("_Blank"), NULL, - N_("Move to the blank entry at the bottom of the Invoice"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_blank) }, - { "DuplicateEntryAction", GTK_STOCK_COPY, N_("Dup_licate Entry"), NULL, - N_("Make a copy of the current entry"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_duplicate) }, + /* Actions menu */ + { + "RecordEntryAction", GTK_STOCK_ADD, N_("_Enter"), NULL, + N_("Record the current entry"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_enter) + }, + { + "CancelEntryAction", GTK_STOCK_CANCEL, N_("_Cancel"), NULL, + N_("Cancel the current entry"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_cancel) + }, + { + "DeleteEntryAction", GTK_STOCK_DELETE, N_("_Delete"), NULL, + N_("Delete the current entry"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_delete) + }, + { + "BlankEntryAction", GTK_STOCK_GOTO_BOTTOM, N_("_Blank"), NULL, + N_("Move to the blank entry at the bottom of the Invoice"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_blank) + }, + { + "DuplicateEntryAction", GTK_STOCK_COPY, N_("Dup_licate Entry"), NULL, + N_("Make a copy of the current entry"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_duplicate) + }, - /* Business menu */ - { "ToolsProcessPaymentAction", NULL, N_("_Pay Invoice"), NULL, - N_("Enter a payment for the owner of this Invoice"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_pay_invoice) }, + /* Business menu */ + { + "ToolsProcessPaymentAction", NULL, N_("_Pay Invoice"), NULL, + N_("Enter a payment for the owner of this Invoice"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_pay_invoice) + }, - /* Reports menu */ - { "ReportsCompanyReportAction", NULL, N_("_Company Report"), NULL, - N_("Open a company report window for the owner of this Invoice"), - G_CALLBACK (gnc_plugin_page_invoice_cmd_company_report) }, + /* Reports menu */ + { + "ReportsCompanyReportAction", NULL, N_("_Company Report"), NULL, + N_("Open a company report window for the owner of this Invoice"), + G_CALLBACK (gnc_plugin_page_invoice_cmd_company_report) + }, }; static guint gnc_plugin_page_invoice_n_actions = G_N_ELEMENTS (gnc_plugin_page_invoice_actions); static GtkRadioActionEntry radio_entries [] = { - { "SortStandardAction", NULL, N_("_Standard"), NULL, "Keep normal invoice order", BY_STANDARD }, - { "SortDateAction", NULL, N_("_Date"), NULL, "Sort by date", BY_DATE }, - { "SortDateEntryAction", NULL, N_("Date of _Entry"), NULL, "Sort by the date of entry", BY_DATE_ENTERED }, - { "SortQuantityAction", NULL, N_("_Quantity"), NULL, "Sort by quantity", BY_QTY }, - { "SortPriceAction", NULL, N_("_Price"), NULL, "Sort by price", BY_PRICE }, - { "SortDescriptionAction", NULL, N_("Descri_ption"), NULL, "Sort by description", BY_DESC }, + { "SortStandardAction", NULL, N_("_Standard"), NULL, "Keep normal invoice order", BY_STANDARD }, + { "SortDateAction", NULL, N_("_Date"), NULL, "Sort by date", BY_DATE }, + { "SortDateEntryAction", NULL, N_("Date of _Entry"), NULL, "Sort by the date of entry", BY_DATE_ENTERED }, + { "SortQuantityAction", NULL, N_("_Quantity"), NULL, "Sort by quantity", BY_QTY }, + { "SortPriceAction", NULL, N_("_Price"), NULL, "Sort by price", BY_PRICE }, + { "SortDescriptionAction", NULL, N_("Descri_ption"), NULL, "Sort by description", BY_DESC }, }; static guint n_radio_entries = G_N_ELEMENTS (radio_entries); -static const gchar *posted_actions[] = { - "FilePrintAction", - NULL +static const gchar *posted_actions[] = +{ + "FilePrintAction", + NULL }; -static const gchar *unposted_actions[] = { - "EditCutAction", - "EditPasteAction", - "EditEditInvoiceAction", - "EditPostInvoiceAction", - "RecordEntryAction", - "CancelEntryAction", - "DeleteEntryAction", - "DuplicateEntryAction", - "BlankEntryAction", - NULL +static const gchar *unposted_actions[] = +{ + "EditCutAction", + "EditPasteAction", + "EditEditInvoiceAction", + "EditPostInvoiceAction", + "RecordEntryAction", + "CancelEntryAction", + "DeleteEntryAction", + "DuplicateEntryAction", + "BlankEntryAction", + NULL }; -static const gchar *can_unpost_actions[] = { - "EditUnpostInvoiceAction", - NULL +static const gchar *can_unpost_actions[] = +{ + "EditUnpostInvoiceAction", + NULL }; /** Short labels for use on the toolbar buttons. */ -static action_toolbar_labels toolbar_labels[] = { - { "RecordEntryAction", N_("Enter") }, - { "CancelEntryAction", N_("Cancel") }, - { "DeleteEntryAction", N_("Delete") }, - { "DuplicateEntryAction", N_("Duplicate") }, - { "BlankEntryAction", N_("Blank") }, - { "EditPostInvoiceAction", N_("Post") }, - { "EditUnpostInvoiceAction", N_("Unpost") }, - { NULL, NULL }, +static action_toolbar_labels toolbar_labels[] = +{ + { "RecordEntryAction", N_("Enter") }, + { "CancelEntryAction", N_("Cancel") }, + { "DeleteEntryAction", N_("Delete") }, + { "DuplicateEntryAction", N_("Duplicate") }, + { "BlankEntryAction", N_("Blank") }, + { "EditPostInvoiceAction", N_("Post") }, + { "EditUnpostInvoiceAction", N_("Unpost") }, + { NULL, NULL }, }; @@ -208,11 +244,11 @@ static action_toolbar_labels toolbar_labels[] = { typedef struct GncPluginPageInvoicePrivate { - InvoiceWindow *iw; + InvoiceWindow *iw; - GtkWidget *widget; + GtkWidget *widget; - gint component_manager_id; + gint component_manager_id; } GncPluginPageInvoicePrivate; #define GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(o) \ @@ -227,148 +263,151 @@ static GObjectClass *parent_class = NULL; GType gnc_plugin_page_invoice_get_type (void) { - static GType gnc_plugin_page_invoice_type = 0; + static GType gnc_plugin_page_invoice_type = 0; - if (gnc_plugin_page_invoice_type == 0) { - static const GTypeInfo our_info = { - sizeof (GncPluginPageInvoiceClass), - NULL, - NULL, - (GClassInitFunc) gnc_plugin_page_invoice_class_init, - NULL, - NULL, - sizeof (GncPluginPageInvoice), - 0, - (GInstanceInitFunc) gnc_plugin_page_invoice_init - }; - - gnc_plugin_page_invoice_type = g_type_register_static (GNC_TYPE_PLUGIN_PAGE, - "GncPluginPageInvoice", - &our_info, 0); - } + if (gnc_plugin_page_invoice_type == 0) + { + static const GTypeInfo our_info = + { + sizeof (GncPluginPageInvoiceClass), + NULL, + NULL, + (GClassInitFunc) gnc_plugin_page_invoice_class_init, + NULL, + NULL, + sizeof (GncPluginPageInvoice), + 0, + (GInstanceInitFunc) gnc_plugin_page_invoice_init + }; - return gnc_plugin_page_invoice_type; + gnc_plugin_page_invoice_type = g_type_register_static (GNC_TYPE_PLUGIN_PAGE, + "GncPluginPageInvoice", + &our_info, 0); + } + + return gnc_plugin_page_invoice_type; } GncPluginPage * gnc_plugin_page_invoice_new (InvoiceWindow *iw) { - GncPluginPageInvoicePrivate *priv; - GncPluginPageInvoice *invoice_page; - GncPluginPage *plugin_page; - const GList *item; + GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoice *invoice_page; + GncPluginPage *plugin_page; + const GList *item; - /* Is there an existing page? */ - item = gnc_gobject_tracking_get_list(GNC_PLUGIN_PAGE_INVOICE_NAME); - for ( ; item; item = g_list_next(item)) { - invoice_page = (GncPluginPageInvoice *)item->data; - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice_page); - if (priv->iw == iw) - return GNC_PLUGIN_PAGE(invoice_page); - } + /* Is there an existing page? */ + item = gnc_gobject_tracking_get_list(GNC_PLUGIN_PAGE_INVOICE_NAME); + for ( ; item; item = g_list_next(item)) + { + invoice_page = (GncPluginPageInvoice *)item->data; + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice_page); + if (priv->iw == iw) + return GNC_PLUGIN_PAGE(invoice_page); + } - invoice_page = g_object_new (GNC_TYPE_PLUGIN_PAGE_INVOICE, (char *)NULL); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice_page); - priv->iw = iw; + invoice_page = g_object_new (GNC_TYPE_PLUGIN_PAGE_INVOICE, (char *)NULL); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice_page); + priv->iw = iw; - plugin_page = GNC_PLUGIN_PAGE(invoice_page); - gnc_plugin_page_invoice_update_title(plugin_page); - gnc_plugin_page_set_uri(plugin_page, "default:"); + plugin_page = GNC_PLUGIN_PAGE(invoice_page); + gnc_plugin_page_invoice_update_title(plugin_page); + gnc_plugin_page_set_uri(plugin_page, "default:"); - priv->component_manager_id = 0; - return plugin_page; + priv->component_manager_id = 0; + return plugin_page; } static void gnc_plugin_page_invoice_class_init (GncPluginPageInvoiceClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GncPluginPageClass *gnc_plugin_class = GNC_PLUGIN_PAGE_CLASS(klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GncPluginPageClass *gnc_plugin_class = GNC_PLUGIN_PAGE_CLASS(klass); - parent_class = g_type_class_peek_parent (klass); + parent_class = g_type_class_peek_parent (klass); - object_class->finalize = gnc_plugin_page_invoice_finalize; + object_class->finalize = gnc_plugin_page_invoice_finalize; - gnc_plugin_class->tab_icon = NULL; - gnc_plugin_class->plugin_name = GNC_PLUGIN_PAGE_INVOICE_NAME; - gnc_plugin_class->create_widget = gnc_plugin_page_invoice_create_widget; - gnc_plugin_class->destroy_widget = gnc_plugin_page_invoice_destroy_widget; - gnc_plugin_class->save_page = gnc_plugin_page_invoice_save_page; - gnc_plugin_class->recreate_page = gnc_plugin_page_invoice_recreate_page; - gnc_plugin_class->window_changed = gnc_plugin_page_invoice_window_changed; + gnc_plugin_class->tab_icon = NULL; + gnc_plugin_class->plugin_name = GNC_PLUGIN_PAGE_INVOICE_NAME; + gnc_plugin_class->create_widget = gnc_plugin_page_invoice_create_widget; + gnc_plugin_class->destroy_widget = gnc_plugin_page_invoice_destroy_widget; + gnc_plugin_class->save_page = gnc_plugin_page_invoice_save_page; + gnc_plugin_class->recreate_page = gnc_plugin_page_invoice_recreate_page; + gnc_plugin_class->window_changed = gnc_plugin_page_invoice_window_changed; - g_type_class_add_private(klass, sizeof(GncPluginPageInvoicePrivate)); + g_type_class_add_private(klass, sizeof(GncPluginPageInvoicePrivate)); } static void gnc_plugin_page_invoice_init (GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; - GncPluginPage *parent; - GtkActionGroup *action_group; - gboolean use_new; + GncPluginPageInvoicePrivate *priv; + GncPluginPage *parent; + GtkActionGroup *action_group; + gboolean use_new; - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - /* Init parent declared variables */ - parent = GNC_PLUGIN_PAGE(plugin_page); - use_new = gnc_gconf_get_bool(GCONF_SECTION_INVOICE, KEY_USE_NEW, NULL); - g_object_set(G_OBJECT(plugin_page), - "page-name", _("Invoice"), - "page-uri", "default:", - "ui-description", "gnc-plugin-page-invoice-ui.xml", - "use-new-window", use_new, - (char *)NULL); + /* Init parent declared variables */ + parent = GNC_PLUGIN_PAGE(plugin_page); + use_new = gnc_gconf_get_bool(GCONF_SECTION_INVOICE, KEY_USE_NEW, NULL); + g_object_set(G_OBJECT(plugin_page), + "page-name", _("Invoice"), + "page-uri", "default:", + "ui-description", "gnc-plugin-page-invoice-ui.xml", + "use-new-window", use_new, + (char *)NULL); - /* change me when the system supports multiple books */ - gnc_plugin_page_add_book(parent, gnc_get_current_book()); + /* change me when the system supports multiple books */ + gnc_plugin_page_add_book(parent, gnc_get_current_book()); - /* Create menu and toolbar information */ - action_group = - gnc_plugin_page_create_action_group(parent, - "GncPluginPageInvoiceActions"); - gtk_action_group_add_actions (action_group, gnc_plugin_page_invoice_actions, - gnc_plugin_page_invoice_n_actions, plugin_page); - gtk_action_group_add_radio_actions (action_group, - radio_entries, n_radio_entries, - REG_STYLE_LEDGER, - G_CALLBACK(gnc_plugin_page_invoice_cmd_sort_changed), - plugin_page); + /* Create menu and toolbar information */ + action_group = + gnc_plugin_page_create_action_group(parent, + "GncPluginPageInvoiceActions"); + gtk_action_group_add_actions (action_group, gnc_plugin_page_invoice_actions, + gnc_plugin_page_invoice_n_actions, plugin_page); + gtk_action_group_add_radio_actions (action_group, + radio_entries, n_radio_entries, + REG_STYLE_LEDGER, + G_CALLBACK(gnc_plugin_page_invoice_cmd_sort_changed), + plugin_page); - gnc_plugin_init_short_names (action_group, toolbar_labels); + gnc_plugin_init_short_names (action_group, toolbar_labels); } static void gnc_plugin_page_invoice_finalize (GObject *object) { - GncPluginPageInvoice *page; - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoice *page; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE (object)); + g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE (object)); - ENTER("object %p", object); - page = GNC_PLUGIN_PAGE_INVOICE (object); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); + ENTER("object %p", object); + page = GNC_PLUGIN_PAGE_INVOICE (object); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); - G_OBJECT_CLASS (parent_class)->finalize (object); - LEAVE(" "); + G_OBJECT_CLASS (parent_class)->finalize (object); + LEAVE(" "); } void gnc_plugin_page_invoice_update_menus (GncPluginPage *page, gboolean is_posted, gboolean can_unpost) -{ - GtkActionGroup *action_group; +{ + GtkActionGroup *action_group; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(page)); - action_group = gnc_plugin_page_get_action_group(page); - gnc_plugin_update_actions (action_group, posted_actions, - "sensitive", is_posted); - gnc_plugin_update_actions (action_group, unposted_actions, - "sensitive", !is_posted); - gnc_plugin_update_actions (action_group, can_unpost_actions, - "sensitive", can_unpost); + action_group = gnc_plugin_page_get_action_group(page); + gnc_plugin_update_actions (action_group, posted_actions, + "sensitive", is_posted); + gnc_plugin_update_actions (action_group, unposted_actions, + "sensitive", !is_posted); + gnc_plugin_update_actions (action_group, can_unpost_actions, + "sensitive", can_unpost); } @@ -377,74 +416,76 @@ gnc_plugin_page_invoice_update_menus (GncPluginPage *page, gboolean is_posted, g static GtkWidget * gnc_plugin_page_invoice_create_widget (GncPluginPage *plugin_page) { - GncPluginPageInvoice *page; - GncPluginPageInvoicePrivate *priv; - GtkWidget *regWidget, *widget; + GncPluginPageInvoice *page; + GncPluginPageInvoicePrivate *priv; + GtkWidget *regWidget, *widget; - ENTER("page %p", plugin_page); - page = GNC_PLUGIN_PAGE_INVOICE (plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); - if (priv->widget != NULL) + ENTER("page %p", plugin_page); + page = GNC_PLUGIN_PAGE_INVOICE (plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); + if (priv->widget != NULL) { LEAVE(""); - return priv->widget; + return priv->widget; } - priv->widget = gtk_vbox_new (FALSE, 0); - gtk_widget_show (priv->widget); - - widget = gnc_invoice_create_page(priv->iw, page); - gtk_widget_show (widget); - gtk_box_pack_start(GTK_BOX (priv->widget), widget, TRUE, TRUE, 0); + priv->widget = gtk_vbox_new (FALSE, 0); + gtk_widget_show (priv->widget); - plugin_page->summarybar = gnc_invoice_window_create_summary_bar(priv->iw); - gtk_box_pack_start(GTK_BOX (priv->widget), plugin_page->summarybar, FALSE, FALSE, 0); - gnc_plugin_page_invoice_summarybar_position_changed(NULL, page); - gnc_gconf_general_register_cb(KEY_SUMMARYBAR_POSITION, - gnc_plugin_page_invoice_summarybar_position_changed, page); + widget = gnc_invoice_create_page(priv->iw, page); + gtk_widget_show (widget); + gtk_box_pack_start(GTK_BOX (priv->widget), widget, TRUE, TRUE, 0); - regWidget = gnc_invoice_get_register(priv->iw); - if (regWidget) { - g_signal_connect (G_OBJECT (regWidget), "redraw-help", - G_CALLBACK (gnc_plugin_page_redraw_help_cb), page); - } + plugin_page->summarybar = gnc_invoice_window_create_summary_bar(priv->iw); + gtk_box_pack_start(GTK_BOX (priv->widget), plugin_page->summarybar, FALSE, FALSE, 0); + gnc_plugin_page_invoice_summarybar_position_changed(NULL, page); + gnc_gconf_general_register_cb(KEY_SUMMARYBAR_POSITION, + gnc_plugin_page_invoice_summarybar_position_changed, page); - priv->component_manager_id = - gnc_register_gui_component(GNC_PLUGIN_PAGE_INVOICE_NAME, - gnc_plugin_page_invoice_refresh_cb, - NULL, page); + regWidget = gnc_invoice_get_register(priv->iw); + if (regWidget) + { + g_signal_connect (G_OBJECT (regWidget), "redraw-help", + G_CALLBACK (gnc_plugin_page_redraw_help_cb), page); + } + + priv->component_manager_id = + gnc_register_gui_component(GNC_PLUGIN_PAGE_INVOICE_NAME, + gnc_plugin_page_invoice_refresh_cb, + NULL, page); LEAVE(""); - return priv->widget; + return priv->widget; } static void gnc_plugin_page_invoice_destroy_widget (GncPluginPage *plugin_page) { - GncPluginPageInvoice *page; - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoice *page; + GncPluginPageInvoicePrivate *priv; - ENTER("page %p", plugin_page); - page = GNC_PLUGIN_PAGE_INVOICE (plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); + ENTER("page %p", plugin_page); + page = GNC_PLUGIN_PAGE_INVOICE (plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); - gnc_gconf_general_remove_cb(KEY_SUMMARYBAR_POSITION, - gnc_plugin_page_invoice_summarybar_position_changed, page); + gnc_gconf_general_remove_cb(KEY_SUMMARYBAR_POSITION, + gnc_plugin_page_invoice_summarybar_position_changed, page); - if (priv->widget == NULL) + if (priv->widget == NULL) { LEAVE(""); - return; + return; } - if (priv->component_manager_id) { - gnc_unregister_gui_component(priv->component_manager_id); - priv->component_manager_id = 0; - } + if (priv->component_manager_id) + { + gnc_unregister_gui_component(priv->component_manager_id); + priv->component_manager_id = 0; + } - gtk_widget_hide(priv->widget); - gnc_invoice_window_destroy_cb(priv->widget, priv->iw); - priv->widget = NULL; + gtk_widget_hide(priv->widget); + gnc_invoice_window_destroy_cb(priv->widget, priv->iw); + priv->widget = NULL; LEAVE(""); } @@ -459,24 +500,24 @@ gnc_plugin_page_invoice_destroy_widget (GncPluginPage *plugin_page) * @param group_name The group name to use when saving data. */ static void gnc_plugin_page_invoice_save_page (GncPluginPage *plugin_page, - GKeyFile *key_file, - const gchar *group_name) + GKeyFile *key_file, + const gchar *group_name) { - GncPluginPageInvoice *invoice; - GncPluginPageInvoicePrivate *priv; - - g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - g_return_if_fail (key_file != NULL); - g_return_if_fail (group_name != NULL); + GncPluginPageInvoice *invoice; + GncPluginPageInvoicePrivate *priv; - ENTER("page %p, key_file %p, group_name %s", plugin_page, key_file, - group_name); + g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail (key_file != NULL); + g_return_if_fail (group_name != NULL); - invoice = GNC_PLUGIN_PAGE_INVOICE(plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice); + ENTER("page %p, key_file %p, group_name %s", plugin_page, key_file, + group_name); + + invoice = GNC_PLUGIN_PAGE_INVOICE(plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice); gnc_invoice_save_page(priv->iw, key_file, group_name); - LEAVE(" "); + LEAVE(" "); } @@ -492,67 +533,68 @@ gnc_plugin_page_invoice_save_page (GncPluginPage *plugin_page, * @param group_name The group name to use when restoring data. */ static GncPluginPage * gnc_plugin_page_invoice_recreate_page (GtkWidget *window, - GKeyFile *key_file, - const gchar *group_name) + GKeyFile *key_file, + const gchar *group_name) { - GncPluginPage *page; + GncPluginPage *page; - g_return_val_if_fail(GNC_IS_MAIN_WINDOW(window), NULL); - g_return_val_if_fail(key_file, NULL); - g_return_val_if_fail(group_name, NULL); - ENTER("key_file %p, group_name %s", key_file, group_name); + g_return_val_if_fail(GNC_IS_MAIN_WINDOW(window), NULL); + g_return_val_if_fail(key_file, NULL); + g_return_val_if_fail(group_name, NULL); + ENTER("key_file %p, group_name %s", key_file, group_name); - /* Create the new page. */ - page = gnc_invoice_recreate_page(GNC_MAIN_WINDOW(window), - key_file, group_name); + /* Create the new page. */ + page = gnc_invoice_recreate_page(GNC_MAIN_WINDOW(window), + key_file, group_name); - LEAVE(" "); - return page; + LEAVE(" "); + return page; } static void gnc_plugin_page_invoice_window_changed (GncPluginPage *plugin_page, - GtkWidget *window) + GtkWidget *window) { - GncPluginPageInvoice *page; - GncPluginPageInvoicePrivate *priv; - - g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE (plugin_page)); + GncPluginPageInvoice *page; + GncPluginPageInvoicePrivate *priv; - page = GNC_PLUGIN_PAGE_INVOICE(plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); - gnc_invoice_window_changed (priv->iw, window); + g_return_if_fail (GNC_IS_PLUGIN_PAGE_INVOICE (plugin_page)); + + page = GNC_PLUGIN_PAGE_INVOICE(plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); + gnc_invoice_window_changed (priv->iw, window); } static void gnc_plugin_page_invoice_summarybar_position_changed(GConfEntry *entry, - gpointer user_data) + gpointer user_data) { - GncPluginPage *plugin_page; - GncPluginPageInvoice *page; - GncPluginPageInvoicePrivate *priv; - GtkPositionType position = GTK_POS_BOTTOM; - gchar *conf_string; - - g_return_if_fail(user_data != NULL); - - plugin_page = GNC_PLUGIN_PAGE(user_data); - page = GNC_PLUGIN_PAGE_INVOICE (user_data); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); - - conf_string = gnc_gconf_get_string (GCONF_GENERAL, - KEY_SUMMARYBAR_POSITION, NULL); - if (conf_string) { - position = gnc_enum_from_nick (GTK_TYPE_POSITION_TYPE, - conf_string, GTK_POS_BOTTOM); - g_free (conf_string); - } + GncPluginPage *plugin_page; + GncPluginPageInvoice *page; + GncPluginPageInvoicePrivate *priv; + GtkPositionType position = GTK_POS_BOTTOM; + gchar *conf_string; - gtk_box_reorder_child(GTK_BOX(priv->widget), - plugin_page->summarybar, - (position == GTK_POS_TOP ? 0 : -1) ); + g_return_if_fail(user_data != NULL); + + plugin_page = GNC_PLUGIN_PAGE(user_data); + page = GNC_PLUGIN_PAGE_INVOICE (user_data); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); + + conf_string = gnc_gconf_get_string (GCONF_GENERAL, + KEY_SUMMARYBAR_POSITION, NULL); + if (conf_string) + { + position = gnc_enum_from_nick (GTK_TYPE_POSITION_TYPE, + conf_string, GTK_POS_BOTTOM); + g_free (conf_string); + } + + gtk_box_reorder_child(GTK_BOX(priv->widget), + plugin_page->summarybar, + (position == GTK_POS_TOP ? 0 : -1) ); } @@ -562,248 +604,248 @@ gnc_plugin_page_invoice_summarybar_position_changed(GConfEntry *entry, static void gnc_plugin_page_invoice_cmd_new_invoice (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_new_invoice_cb(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_new_invoice_cb(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_new_account (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - gnc_ui_new_account_window (gnc_get_current_book(), NULL); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + gnc_ui_new_account_window (gnc_get_current_book(), NULL); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_print (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_printCB(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_printCB(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_cut (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_cut_cb(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_cut_cb(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_copy (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_copy_cb(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_copy_cb(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_paste (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_paste_cb(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_paste_cb(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_edit (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_editCB(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_editCB(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_post (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_postCB(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_postCB(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_unpost (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_unpostCB(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_unpostCB(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_sort_changed (GtkAction *action, - GtkRadioAction *current, - GncPluginPageInvoice *plugin_page) + GtkRadioAction *current, + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; - invoice_sort_type_t value; + GncPluginPageInvoicePrivate *priv; + invoice_sort_type_t value; - ENTER("(action %p, radio action %p, plugin_page %p)", - action, current, plugin_page); - LEAVE("g_return testing..."); + ENTER("(action %p, radio action %p, plugin_page %p)", + action, current, plugin_page); + LEAVE("g_return testing..."); - g_return_if_fail(GTK_IS_ACTION(action)); - g_return_if_fail(GTK_IS_RADIO_ACTION(current)); - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GTK_IS_ACTION(action)); + g_return_if_fail(GTK_IS_RADIO_ACTION(current)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("...passed (action %p, radio action %p, plugin_page %p)", - action, current, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - value = gtk_radio_action_get_current_value(current); - gnc_invoice_window_sort (priv->iw, value); - LEAVE(" "); + ENTER("...passed (action %p, radio action %p, plugin_page %p)", + action, current, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + value = gtk_radio_action_get_current_value(current); + gnc_invoice_window_sort (priv->iw, value); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_enter (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_recordCB(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_recordCB(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_cancel (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_cancelCB(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_cancelCB(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_delete (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_deleteCB(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_deleteCB(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_blank (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_blankCB(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_blankCB(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_duplicate (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_duplicateCB(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_duplicateCB(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_pay_invoice (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_payment_cb(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_payment_cb(NULL, priv->iw); + LEAVE(" "); } static void gnc_plugin_page_invoice_cmd_company_report (GtkAction *action, - GncPluginPageInvoice *plugin_page) + GncPluginPageInvoice *plugin_page) { - GncPluginPageInvoicePrivate *priv; + GncPluginPageInvoicePrivate *priv; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - ENTER("(action %p, plugin_page %p)", action, plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); - gnc_invoice_window_report_owner_cb(NULL, priv->iw); - LEAVE(" "); + ENTER("(action %p, plugin_page %p)", action, plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(plugin_page); + gnc_invoice_window_report_owner_cb(NULL, priv->iw); + LEAVE(" "); } /************************************************************/ @@ -812,57 +854,57 @@ gnc_plugin_page_invoice_cmd_company_report (GtkAction *action, static void gnc_plugin_page_redraw_help_cb (GnucashRegister *g_reg, - GncPluginPageInvoice *invoice_page) + GncPluginPageInvoice *invoice_page) { - GncPluginPageInvoicePrivate *priv; - GncWindow *window; - const char *status; - char *help; + GncPluginPageInvoicePrivate *priv; + GncWindow *window; + const char *status; + char *help; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(invoice_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(invoice_page)); - window = GNC_WINDOW(GNC_PLUGIN_PAGE(invoice_page)->window); + window = GNC_WINDOW(GNC_PLUGIN_PAGE(invoice_page)->window); - /* Get the text from the ledger */ - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice_page); - help = gnc_invoice_get_help(priv->iw); - status = help ? help : g_strdup(""); - gnc_window_set_status(window, GNC_PLUGIN_PAGE(invoice_page), status); - g_free(help); + /* Get the text from the ledger */ + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(invoice_page); + help = gnc_invoice_get_help(priv->iw); + status = help ? help : g_strdup(""); + gnc_window_set_status(window, GNC_PLUGIN_PAGE(invoice_page), status); + g_free(help); } void gnc_plugin_page_invoice_update_title (GncPluginPage *plugin_page) { - GncPluginPageInvoice *page; - GncPluginPageInvoicePrivate *priv; - gchar *title; + GncPluginPageInvoice *page; + GncPluginPageInvoicePrivate *priv; + gchar *title; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(plugin_page)); - page = GNC_PLUGIN_PAGE_INVOICE(plugin_page); - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); - title = gnc_invoice_get_title(priv->iw); - gnc_plugin_page_set_page_name(plugin_page, title); - g_free(title); + page = GNC_PLUGIN_PAGE_INVOICE(plugin_page); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); + title = gnc_invoice_get_title(priv->iw); + gnc_plugin_page_set_page_name(plugin_page, title); + g_free(title); } static void gnc_plugin_page_invoice_refresh_cb (GHashTable *changes, gpointer user_data) { - GncPluginPageInvoice *page = user_data; - GncPluginPageInvoicePrivate *priv; - GtkWidget *reg; + GncPluginPageInvoice *page = user_data; + GncPluginPageInvoicePrivate *priv; + GtkWidget *reg; - g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(page)); + g_return_if_fail(GNC_IS_PLUGIN_PAGE_INVOICE(page)); - /* We're only looking for forced updates here. */ - if (changes) - return; + /* We're only looking for forced updates here. */ + if (changes) + return; - priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); - reg = gnc_invoice_get_register(priv->iw); - gnucash_register_refresh_from_gconf(GNUCASH_REGISTER(reg)); - gtk_widget_queue_draw(priv->widget); + priv = GNC_PLUGIN_PAGE_INVOICE_GET_PRIVATE(page); + reg = gnc_invoice_get_register(priv->iw); + gnucash_register_refresh_from_gconf(GNUCASH_REGISTER(reg)); + gtk_widget_queue_draw(priv->widget); } diff --git a/src/business/business-gnome/gnc-plugin-page-invoice.h b/src/business/business-gnome/gnc-plugin-page-invoice.h index d96b759ab5..479ea43cb1 100644 --- a/src/business/business-gnome/gnc-plugin-page-invoice.h +++ b/src/business/business-gnome/gnc-plugin-page-invoice.h @@ -1,5 +1,5 @@ -/* - * gnc-plugin-page-invoice.h -- +/* + * gnc-plugin-page-invoice.h -- * * Copyright (C) 2005,2006 David Hampton * @@ -25,7 +25,7 @@ @{ */ /** @addtogroup InvoicePlugin Business Invoice Page @{ */ -/** @file gnc-plugin-page-invoice.h +/** @file gnc-plugin-page-invoice.h @brief utility functions for the GnuCash UI @author Copyright (C) 2005,2006 David Hampton */ @@ -52,12 +52,14 @@ G_BEGIN_DECLS #define GNC_PLUGIN_PAGE_INVOICE_NAME "GncPluginPageInvoice" /* typedefs & structures */ -typedef struct { - GncPluginPage gnc_plugin_page; +typedef struct +{ + GncPluginPage gnc_plugin_page; } GncPluginPageInvoice; -typedef struct { - GncPluginPageClass gnc_plugin_page; +typedef struct +{ + GncPluginPageClass gnc_plugin_page; } GncPluginPageInvoiceClass; /* function prototypes */ diff --git a/src/business/business-gnome/search-owner.c b/src/business/business-gnome/search-owner.c index e24988a8ae..95de0fd6e4 100644 --- a/src/business/business-gnome/search-owner.c +++ b/src/business/business-gnome/search-owner.c @@ -49,10 +49,11 @@ static void gnc_search_owner_finalize (GObject *obj); #define _PRIVATE(x) (((GNCSearchOwner *)(x))->priv) -typedef struct _GNCSearchOwnerPrivate { - GncOwner owner; - GtkWidget * owner_box; - GtkWidget * owner_choice; +typedef struct _GNCSearchOwnerPrivate +{ + GncOwner owner; + GtkWidget * owner_box; + GtkWidget * owner_choice; } GNCSearchOwnerPrivate; #define GNC_SEARCH_OWNER_GET_PRIVATE(o) \ @@ -60,8 +61,9 @@ typedef struct _GNCSearchOwnerPrivate { static GNCSearchCoreTypeClass *parent_class; -enum { - LAST_SIGNAL +enum +{ + LAST_SIGNAL }; #if LAST_SIGNAL > 0 @@ -71,47 +73,49 @@ static guint signals[LAST_SIGNAL] = { 0 }; GType gnc_search_owner_get_type (void) { - static GType type = 0; - - if (!type) { - GTypeInfo type_info = { - sizeof(GNCSearchOwnerClass), /* class_size */ - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc)gnc_search_owner_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(GNCSearchOwner), /* */ - 0, /* n_preallocs */ - (GInstanceInitFunc)gnc_search_owner_init, - }; - - type = g_type_register_static (GNC_TYPE_SEARCH_CORE_TYPE, - "GNCSearchOwner", - &type_info, 0); - } - - return type; + static GType type = 0; + + if (!type) + { + GTypeInfo type_info = + { + sizeof(GNCSearchOwnerClass), /* class_size */ + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc)gnc_search_owner_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof(GNCSearchOwner), /* */ + 0, /* n_preallocs */ + (GInstanceInitFunc)gnc_search_owner_init, + }; + + type = g_type_register_static (GNC_TYPE_SEARCH_CORE_TYPE, + "GNCSearchOwner", + &type_info, 0); + } + + return type; } static void gnc_search_owner_class_init (GNCSearchOwnerClass *class) { - GObjectClass *object_class; - GNCSearchCoreTypeClass *gnc_search_core_type = (GNCSearchCoreTypeClass *)class; + GObjectClass *object_class; + GNCSearchCoreTypeClass *gnc_search_core_type = (GNCSearchCoreTypeClass *)class; - object_class = G_OBJECT_CLASS (class); - parent_class = gtk_type_class(gnc_search_core_type_get_type ()); + object_class = G_OBJECT_CLASS (class); + parent_class = gtk_type_class(gnc_search_core_type_get_type ()); - object_class->finalize = gnc_search_owner_finalize; + object_class->finalize = gnc_search_owner_finalize; - /* override methods */ - gnc_search_core_type->validate = gncs_validate; - gnc_search_core_type->get_widget = gncs_get_widget; - gnc_search_core_type->get_predicate = gncs_get_predicate; - gnc_search_core_type->clone = gncs_clone; + /* override methods */ + gnc_search_core_type->validate = gncs_validate; + gnc_search_core_type->get_widget = gncs_get_widget; + gnc_search_core_type->get_predicate = gncs_get_predicate; + gnc_search_core_type->clone = gncs_clone; - g_type_class_add_private(class, sizeof(GNCSearchOwnerPrivate)); + g_type_class_add_private(class, sizeof(GNCSearchOwnerPrivate)); } static void @@ -122,126 +126,129 @@ gnc_search_owner_init (GNCSearchOwner *o) static void gnc_search_owner_finalize (GObject *obj) { - GNCSearchOwner *o; - GNCSearchOwnerPrivate *priv; + GNCSearchOwner *o; + GNCSearchOwnerPrivate *priv; - g_assert (IS_GNCSEARCH_OWNER (obj)); + g_assert (IS_GNCSEARCH_OWNER (obj)); - o = GNCSEARCH_OWNER(obj); - priv = GNC_SEARCH_OWNER_GET_PRIVATE(o); + o = GNCSEARCH_OWNER(obj); + priv = GNC_SEARCH_OWNER_GET_PRIVATE(o); - G_OBJECT_CLASS (parent_class)->finalize(obj); + G_OBJECT_CLASS (parent_class)->finalize(obj); } /** * gnc_search_owner_new: * * Create a new GNCSearchOwner object. - * + * * Return value: A new #GNCSearchOwner object. **/ GNCSearchOwner * gnc_search_owner_new (void) { - GNCSearchOwner *o = g_object_new(gnc_search_owner_get_type (), NULL); - return o; + GNCSearchOwner *o = g_object_new(gnc_search_owner_get_type (), NULL); + return o; } static gboolean gncs_validate (GNCSearchCoreType *fe) { - GNCSearchOwner *fi = (GNCSearchOwner *)fe; - GNCSearchOwnerPrivate *priv; - gboolean valid = TRUE; + GNCSearchOwner *fi = (GNCSearchOwner *)fe; + GNCSearchOwnerPrivate *priv; + gboolean valid = TRUE; - g_return_val_if_fail (fi, FALSE); - g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), FALSE); - - priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi); - if (priv->owner.owner.undefined == NULL) { - valid = FALSE; - gnc_error_dialog (NULL, "%s", _("You have not selected an owner")); - } + g_return_val_if_fail (fi, FALSE); + g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), FALSE); - /* XXX */ + priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi); + if (priv->owner.owner.undefined == NULL) + { + valid = FALSE; + gnc_error_dialog (NULL, "%s", _("You have not selected an owner")); + } - return valid; + /* XXX */ + + return valid; } static int owner_changed_cb (GtkWidget *widget, gpointer data) { - GNCSearchOwner *fe = data; - GNCSearchOwnerPrivate *priv; + GNCSearchOwner *fe = data; + GNCSearchOwnerPrivate *priv; - priv = GNC_SEARCH_OWNER_GET_PRIVATE(fe); - gnc_owner_get_owner (priv->owner_choice, &(priv->owner)); - return FALSE; + priv = GNC_SEARCH_OWNER_GET_PRIVATE(fe); + gnc_owner_get_owner (priv->owner_choice, &(priv->owner)); + return FALSE; } static void set_owner_widget (GNCSearchOwner *fe) { - GNCSearchOwnerPrivate *priv; + GNCSearchOwnerPrivate *priv; - /* Remove the old choice widget */ - priv = GNC_SEARCH_OWNER_GET_PRIVATE(fe); - if (priv->owner_choice) - gtk_container_remove (GTK_CONTAINER (priv->owner_box), priv->owner_choice); + /* Remove the old choice widget */ + priv = GNC_SEARCH_OWNER_GET_PRIVATE(fe); + if (priv->owner_choice) + gtk_container_remove (GTK_CONTAINER (priv->owner_box), priv->owner_choice); - /* Create a new choice widget */ - priv->owner_choice = - gnc_owner_select_create (NULL, priv->owner_box, - gnc_get_current_book(), &(priv->owner)); + /* Create a new choice widget */ + priv->owner_choice = + gnc_owner_select_create (NULL, priv->owner_box, + gnc_get_current_book(), &(priv->owner)); - /* Setup the "changed" callback */ - g_signal_connect (G_OBJECT (priv->owner_choice), "changed", - G_CALLBACK (owner_changed_cb), fe); + /* Setup the "changed" callback */ + g_signal_connect (G_OBJECT (priv->owner_choice), "changed", + G_CALLBACK (owner_changed_cb), fe); - gtk_widget_show_all (priv->owner_choice); + gtk_widget_show_all (priv->owner_choice); } static void type_combo_changed (GtkWidget *widget, GNCSearchOwner *fe) { - GNCSearchOwnerPrivate *priv; - GncOwnerType type; + GNCSearchOwnerPrivate *priv; + GncOwnerType type; - g_return_if_fail(GTK_IS_COMBO_BOX(widget)); + g_return_if_fail(GTK_IS_COMBO_BOX(widget)); - type = gnc_combo_box_search_get_active(GTK_COMBO_BOX(widget)); + type = gnc_combo_box_search_get_active(GTK_COMBO_BOX(widget)); - /* If the type changed or if we don't have a type create the owner_choice */ - priv = GNC_SEARCH_OWNER_GET_PRIVATE(fe); - if (type != gncOwnerGetType (&(priv->owner))) { - priv->owner.type = type; - priv->owner.owner.undefined = NULL; - set_owner_widget (fe); - } else if (priv->owner_choice == NULL) - set_owner_widget (fe); + /* If the type changed or if we don't have a type create the owner_choice */ + priv = GNC_SEARCH_OWNER_GET_PRIVATE(fe); + if (type != gncOwnerGetType (&(priv->owner))) + { + priv->owner.type = type; + priv->owner.owner.undefined = NULL; + set_owner_widget (fe); + } + else if (priv->owner_choice == NULL) + set_owner_widget (fe); } static GtkWidget * make_type_menu (GNCSearchCoreType *fe) { - GNCSearchOwner *fi = (GNCSearchOwner *)fe; - GNCSearchOwnerPrivate *priv; - GtkComboBox *combo; - GncOwnerType type; + GNCSearchOwner *fi = (GNCSearchOwner *)fe; + GNCSearchOwnerPrivate *priv; + GtkComboBox *combo; + GncOwnerType type; - priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi); - type = gncOwnerGetType (&(priv->owner)); + priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi); + type = gncOwnerGetType (&(priv->owner)); - combo = GTK_COMBO_BOX(gnc_combo_box_new_search()); - gnc_combo_box_search_add(combo, _("Customer"), GNC_OWNER_CUSTOMER); - gnc_combo_box_search_add(combo, _("Vendor"), GNC_OWNER_VENDOR); - gnc_combo_box_search_add(combo, _("Employee"), GNC_OWNER_EMPLOYEE); - gnc_combo_box_search_add(combo, _("Job"), GNC_OWNER_JOB); + combo = GTK_COMBO_BOX(gnc_combo_box_new_search()); + gnc_combo_box_search_add(combo, _("Customer"), GNC_OWNER_CUSTOMER); + gnc_combo_box_search_add(combo, _("Vendor"), GNC_OWNER_VENDOR); + gnc_combo_box_search_add(combo, _("Employee"), GNC_OWNER_EMPLOYEE); + gnc_combo_box_search_add(combo, _("Job"), GNC_OWNER_JOB); - g_signal_connect (combo, "changed", G_CALLBACK (type_combo_changed), fe); - gnc_combo_box_search_set_active(combo, type); + g_signal_connect (combo, "changed", G_CALLBACK (type_combo_changed), fe); + gnc_combo_box_search_set_active(combo, type); - return GTK_WIDGET(combo); + return GTK_WIDGET(combo); } @@ -249,82 +256,82 @@ make_type_menu (GNCSearchCoreType *fe) static GtkWidget * make_how_menu (GNCSearchCoreType *fe) { - GNCSearchOwner *fi = (GNCSearchOwner *)fe; - GtkComboBox *combo; + GNCSearchOwner *fi = (GNCSearchOwner *)fe; + GtkComboBox *combo; - combo = GTK_COMBO_BOX(gnc_combo_box_new_search()); - gnc_combo_box_search_add(combo, _("is"), GUID_MATCH_ANY); - gnc_combo_box_search_add(combo, _("is not"), GUID_MATCH_NONE); - gnc_combo_box_search_changed(combo, &fi->how); - gnc_combo_box_search_set_active(combo, fi->how ? fi->how : GUID_MATCH_ANY); + combo = GTK_COMBO_BOX(gnc_combo_box_new_search()); + gnc_combo_box_search_add(combo, _("is"), GUID_MATCH_ANY); + gnc_combo_box_search_add(combo, _("is not"), GUID_MATCH_NONE); + gnc_combo_box_search_changed(combo, &fi->how); + gnc_combo_box_search_set_active(combo, fi->how ? fi->how : GUID_MATCH_ANY); - return GTK_WIDGET(combo); + return GTK_WIDGET(combo); } static GtkWidget * gncs_get_widget (GNCSearchCoreType *fe) { - GtkWidget *how_menu, *type_menu, *box; - GNCSearchOwner *fi = (GNCSearchOwner *)fe; - GNCSearchOwnerPrivate *priv; - - g_return_val_if_fail (fi, NULL); - g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), NULL); + GtkWidget *how_menu, *type_menu, *box; + GNCSearchOwner *fi = (GNCSearchOwner *)fe; + GNCSearchOwnerPrivate *priv; - priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi); - box = gtk_hbox_new (FALSE, 3); + g_return_val_if_fail (fi, NULL); + g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), NULL); - /* Build and connect the "how" option menu. */ - how_menu = make_how_menu (fe); - gtk_box_pack_start (GTK_BOX (box), how_menu, FALSE, FALSE, 3); + priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi); + box = gtk_hbox_new (FALSE, 3); - /* Create the owner box */ - priv->owner_box = gtk_hbox_new (FALSE, 0); + /* Build and connect the "how" option menu. */ + how_menu = make_how_menu (fe); + gtk_box_pack_start (GTK_BOX (box), how_menu, FALSE, FALSE, 3); - /* Build and connect the "type" option menu. - * Note that this will build the owner_choice and - * put it in the owner_box we just created. - */ - type_menu = make_type_menu (fe); - gtk_box_pack_start (GTK_BOX (box), type_menu, FALSE, FALSE, 3); + /* Create the owner box */ + priv->owner_box = gtk_hbox_new (FALSE, 0); - /* connect the owner box */ - gtk_box_pack_start (GTK_BOX (box), priv->owner_box, FALSE, FALSE, 3); + /* Build and connect the "type" option menu. + * Note that this will build the owner_choice and + * put it in the owner_box we just created. + */ + type_menu = make_type_menu (fe); + gtk_box_pack_start (GTK_BOX (box), type_menu, FALSE, FALSE, 3); - /* And return the box */ - return box; + /* connect the owner box */ + gtk_box_pack_start (GTK_BOX (box), priv->owner_box, FALSE, FALSE, 3); + + /* And return the box */ + return box; } static QueryPredData_t gncs_get_predicate (GNCSearchCoreType *fe) { - GNCSearchOwner *fi = (GNCSearchOwner *)fe; - GNCSearchOwnerPrivate *priv; - const GUID *guid; - GList *l = NULL; + GNCSearchOwner *fi = (GNCSearchOwner *)fe; + GNCSearchOwnerPrivate *priv; + const GUID *guid; + GList *l = NULL; - g_return_val_if_fail (fi, NULL); - g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), NULL); + g_return_val_if_fail (fi, NULL); + g_return_val_if_fail (IS_GNCSEARCH_OWNER (fi), NULL); - priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi); - guid = gncOwnerGetGUID (&(priv->owner)); - l = g_list_prepend (l, (gpointer)guid); + priv = GNC_SEARCH_OWNER_GET_PRIVATE(fi); + guid = gncOwnerGetGUID (&(priv->owner)); + l = g_list_prepend (l, (gpointer)guid); - return gncQueryGUIDPredicate (fi->how, l); + return gncQueryGUIDPredicate (fi->how, l); } static GNCSearchCoreType *gncs_clone(GNCSearchCoreType *fe) { - GNCSearchOwner *se, *fse = (GNCSearchOwner *)fe; - GNCSearchOwnerPrivate *se_priv, *fse_priv; + GNCSearchOwner *se, *fse = (GNCSearchOwner *)fe; + GNCSearchOwnerPrivate *se_priv, *fse_priv; - g_return_val_if_fail (fse, NULL); - g_return_val_if_fail (IS_GNCSEARCH_OWNER (fse), NULL); + g_return_val_if_fail (fse, NULL); + g_return_val_if_fail (IS_GNCSEARCH_OWNER (fse), NULL); - se = gnc_search_owner_new (); - se->how = fse->how; - se_priv = GNC_SEARCH_OWNER_GET_PRIVATE(se); - fse_priv = GNC_SEARCH_OWNER_GET_PRIVATE(fse); - gncOwnerCopy (&(fse_priv->owner), &(se_priv->owner)); + se = gnc_search_owner_new (); + se->how = fse->how; + se_priv = GNC_SEARCH_OWNER_GET_PRIVATE(se); + fse_priv = GNC_SEARCH_OWNER_GET_PRIVATE(fse); + gncOwnerCopy (&(fse_priv->owner), &(se_priv->owner)); - return (GNCSearchCoreType *)se; + return (GNCSearchCoreType *)se; } diff --git a/src/business/business-gnome/search-owner.h b/src/business/business-gnome/search-owner.h index c4f8d783da..3b41c6f552 100644 --- a/src/business/business-gnome/search-owner.h +++ b/src/business/business-gnome/search-owner.h @@ -32,18 +32,20 @@ typedef struct _GNCSearchOwner GNCSearchOwner; typedef struct _GNCSearchOwnerClass GNCSearchOwnerClass; -struct _GNCSearchOwner { - GNCSearchCoreType parent; +struct _GNCSearchOwner +{ + GNCSearchCoreType parent; - guid_match_t how; + guid_match_t how; }; -struct _GNCSearchOwnerClass { - GNCSearchCoreTypeClass parent_class; +struct _GNCSearchOwnerClass +{ + GNCSearchCoreTypeClass parent_class; - /* virtual methods */ + /* virtual methods */ - /* signals */ + /* signals */ }; GType gnc_search_owner_get_type (void); diff --git a/src/business/business-ledger/gncEntryLedger.c b/src/business/business-ledger/gncEntryLedger.c index 3e20a8a905..522045a62b 100644 --- a/src/business/business-ledger/gncEntryLedger.c +++ b/src/business/business-ledger/gncEntryLedger.c @@ -50,19 +50,20 @@ static void gnc_entry_ledger_clear_blank_entry (GncEntryLedger *ledger) { - GncEntry *entry; + GncEntry *entry; - if (!ledger) return; + if (!ledger) return; - entry = gnc_entry_ledger_get_blank_entry (ledger); - if (entry) { - if (!gncEntryIsOpen (entry)) - gncEntryBeginEdit (entry); - gncEntryDestroy (entry); - } + entry = gnc_entry_ledger_get_blank_entry (ledger); + if (entry) + { + if (!gncEntryIsOpen (entry)) + gncEntryBeginEdit (entry); + gncEntryDestroy (entry); + } - ledger->blank_entry_guid = *xaccGUIDNULL (); - ledger->blank_entry_edited = FALSE; + ledger->blank_entry_guid = *xaccGUIDNULL (); + ledger->blank_entry_edited = FALSE; } /** Exported Functions ***************************************************/ @@ -70,801 +71,819 @@ gnc_entry_ledger_clear_blank_entry (GncEntryLedger *ledger) GncEntry * gnc_entry_ledger_get_blank_entry (GncEntryLedger *ledger) { - if (!ledger) return NULL; - return gncEntryLookup (ledger->book, &(ledger->blank_entry_guid)); + if (!ledger) return NULL; + return gncEntryLookup (ledger->book, &(ledger->blank_entry_guid)); } - + Account * gnc_entry_ledger_get_account_by_name (GncEntryLedger *ledger, BasicCell * bcell, - const char *name, gboolean *new) + const char *name, gboolean *new) { - const char *placeholder = _("The account %s does not allow transactions."); - const char *missing = _("The account %s does not exist. " - "Would you like to create it?"); - char *account_name; - ComboCell *cell = (ComboCell *) bcell; - Account *account; + const char *placeholder = _("The account %s does not allow transactions."); + const char *missing = _("The account %s does not exist. " + "Would you like to create it?"); + char *account_name; + ComboCell *cell = (ComboCell *) bcell; + Account *account; - /* Find the account */ - account = gnc_account_lookup_for_register (gnc_get_current_root_account (), name); + /* Find the account */ + account = gnc_account_lookup_for_register (gnc_get_current_root_account (), name); - if (!account) { - /* Ask if they want to create a new one. */ - if (!gnc_verify_dialog (ledger->parent, TRUE, missing, name)) - return NULL; - - /* No changes, as yet. */ - *new = FALSE; - - /* User said yes, they want to create a new account. */ - account = gnc_ui_new_accounts_from_name_window (name); if (!account) - return NULL; - *new = TRUE; + { + /* Ask if they want to create a new one. */ + if (!gnc_verify_dialog (ledger->parent, TRUE, missing, name)) + return NULL; - /* Now have a new account. Update the cell with the name as created. */ - account_name = gnc_get_account_name_for_register (account); - gnc_combo_cell_set_value (cell, account_name); - gnc_basic_cell_set_changed (&cell->cell, TRUE); - g_free (account_name); - } + /* No changes, as yet. */ + *new = FALSE; - /* See if the account (either old or new) is a placeholder. */ - if (xaccAccountGetPlaceholder (account)) { - gnc_error_dialog (ledger->parent, placeholder, name); - } + /* User said yes, they want to create a new account. */ + account = gnc_ui_new_accounts_from_name_window (name); + if (!account) + return NULL; + *new = TRUE; - /* Be seeing you. */ - return account; + /* Now have a new account. Update the cell with the name as created. */ + account_name = gnc_get_account_name_for_register (account); + gnc_combo_cell_set_value (cell, account_name); + gnc_basic_cell_set_changed (&cell->cell, TRUE); + g_free (account_name); + } + + /* See if the account (either old or new) is a placeholder. */ + if (xaccAccountGetPlaceholder (account)) + { + gnc_error_dialog (ledger->parent, placeholder, name); + } + + /* Be seeing you. */ + return account; } Account * gnc_entry_ledger_get_account (GncEntryLedger *ledger, - const char * cell_name) + const char * cell_name) { - BasicCell *cell; - const char * name; - gboolean dummy; + BasicCell *cell; + const char * name; + gboolean dummy; - cell = gnc_table_layout_get_cell (ledger->table->layout, cell_name); - if (!cell) - return NULL; - name = gnc_basic_cell_get_value (cell); - return gnc_entry_ledger_get_account_by_name (ledger, cell, name, &dummy); + cell = gnc_table_layout_get_cell (ledger->table->layout, cell_name); + if (!cell) + return NULL; + name = gnc_basic_cell_get_value (cell); + return gnc_entry_ledger_get_account_by_name (ledger, cell, name, &dummy); } GncTaxTable * gnc_entry_ledger_get_taxtable (GncEntryLedger *ledger, - const char *cell_name) + const char *cell_name) { - GncEntry *entry; - const char * name; + GncEntry *entry; + const char * name; - /* If the cursor has changed, then pull in the current table */ - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - cell_name, TRUE)) { - name = gnc_table_layout_get_cell_value (ledger->table->layout, cell_name); - return gncTaxTableLookupByName (ledger->book, name); - } + /* If the cursor has changed, then pull in the current table */ + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + cell_name, TRUE)) + { + name = gnc_table_layout_get_cell_value (ledger->table->layout, cell_name); + return gncTaxTableLookupByName (ledger->book, name); + } - /* If it has not changed, pull in the table from the entry */ - entry = gnc_entry_ledger_get_current_entry (ledger); - if (ledger->is_invoice) - return gncEntryGetInvTaxTable (entry); - else - return gncEntryGetBillTaxTable (entry); + /* If it has not changed, pull in the table from the entry */ + entry = gnc_entry_ledger_get_current_entry (ledger); + if (ledger->is_invoice) + return gncEntryGetInvTaxTable (entry); + else + return gncEntryGetBillTaxTable (entry); } gboolean gnc_entry_ledger_get_checkmark (GncEntryLedger *ledger, - const char * cell_name) + const char * cell_name) { - CheckboxCell *cell = - (CheckboxCell *) gnc_table_layout_get_cell (ledger->table->layout, cell_name); + CheckboxCell *cell = + (CheckboxCell *) gnc_table_layout_get_cell (ledger->table->layout, cell_name); - if (!cell) - return FALSE; + if (!cell) + return FALSE; - return cell->flag; + return cell->flag; } gint gnc_entry_ledger_get_type (GncEntryLedger *ledger, const char * cell_name) { - RecnCell *cell = - (RecnCell *) gnc_table_layout_get_cell (ledger->table->layout, cell_name); + RecnCell *cell = + (RecnCell *) gnc_table_layout_get_cell (ledger->table->layout, cell_name); - if (!cell) - return -1; + if (!cell) + return -1; - return (gnc_recn_cell_get_flag (cell) - '0'); + return (gnc_recn_cell_get_flag (cell) - '0'); } /* Return TRUE if value is valid, return FALSE if invalid */ gboolean gnc_entry_ledger_get_numeric (GncEntryLedger *ledger, - const char *cell_name, - gnc_numeric *value) + const char *cell_name, + gnc_numeric *value) { - PriceCell *cell = - (PriceCell *) gnc_table_layout_get_cell (ledger->table->layout, cell_name); + PriceCell *cell = + (PriceCell *) gnc_table_layout_get_cell (ledger->table->layout, cell_name); - if (!value || !cell) - return FALSE; + if (!value || !cell) + return FALSE; - *value = gnc_price_cell_get_value (cell); - return TRUE; + *value = gnc_price_cell_get_value (cell); + return TRUE; } - + GncEntry * gnc_entry_ledger_get_entry (GncEntryLedger *ledger, - VirtualCellLocation vcell_loc) + VirtualCellLocation vcell_loc) { - GUID *guid; + GUID *guid; - if (!ledger) return NULL; + if (!ledger) return NULL; - guid = gnc_table_get_vcell_data (ledger->table, vcell_loc); - if (!guid) return NULL; + guid = gnc_table_get_vcell_data (ledger->table, vcell_loc); + if (!guid) return NULL; - return gncEntryLookup (ledger->book, guid); + return gncEntryLookup (ledger->book, guid); } /* Returns the Entry where the cursor is currently located. */ GncEntry * gnc_entry_ledger_get_current_entry (GncEntryLedger *ledger) { - if (!ledger) return NULL; + if (!ledger) return NULL; - return - gnc_entry_ledger_get_entry (ledger, - ledger->table->current_cursor_loc.vcell_loc); + return + gnc_entry_ledger_get_entry (ledger, + ledger->table->current_cursor_loc.vcell_loc); } static void gnc_entry_ledger_config_action (GncEntryLedger *ledger) { - ComboCell *cell; + ComboCell *cell; - cell = (ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, - ENTRY_ACTN_CELL); - if (!cell) return; + cell = (ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, + ENTRY_ACTN_CELL); + if (!cell) return; - /* XXX: change this based on the ledger type */ + /* XXX: change this based on the ledger type */ - gnc_combo_cell_add_menu_item (cell, _("Hours")); - gnc_combo_cell_add_menu_item (cell, _("Project")); - gnc_combo_cell_add_menu_item (cell, _("Material")); + gnc_combo_cell_add_menu_item (cell, _("Hours")); + gnc_combo_cell_add_menu_item (cell, _("Project")); + gnc_combo_cell_add_menu_item (cell, _("Material")); } static void gnc_entry_ledger_config_cells (GncEntryLedger *ledger) { - /* the action cell */ - gnc_combo_cell_set_autosize + /* the action cell */ + gnc_combo_cell_set_autosize ((ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, ENTRY_ACTN_CELL), TRUE); - /* The action cell should also accept strings not in the list */ - gnc_combo_cell_set_strict + /* The action cell should also accept strings not in the list */ + gnc_combo_cell_set_strict ((ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, ENTRY_ACTN_CELL), FALSE); - /* Use 6 decimal places for all prices and quantities */ - gnc_price_cell_set_fraction + /* Use 6 decimal places for all prices and quantities */ + gnc_price_cell_set_fraction ((PriceCell *) gnc_table_layout_get_cell (ledger->table->layout, ENTRY_PRIC_CELL), 1000000); - gnc_price_cell_set_fraction + gnc_price_cell_set_fraction ((PriceCell *) gnc_table_layout_get_cell (ledger->table->layout, ENTRY_DISC_CELL), 1000000); - gnc_price_cell_set_fraction + gnc_price_cell_set_fraction ((PriceCell *) gnc_table_layout_get_cell (ledger->table->layout, - ENTRY_QTY_CELL), + ENTRY_QTY_CELL), 1000000); - /* add menu items for the action and payment cells */ - gnc_entry_ledger_config_action (ledger); + /* add menu items for the action and payment cells */ + gnc_entry_ledger_config_action (ledger); } /* Create and return a new GncEntry Ledger */ GncEntryLedger * gnc_entry_ledger_new (QofBook *book, GncEntryLedgerType type) { - GncEntryLedger *ledger; + GncEntryLedger *ledger; - if (!book) return NULL; - if (type < 0 || type >= GNCENTRY_NUM_REGISTER_TYPES) return NULL; + if (!book) return NULL; + if (type < 0 || type >= GNCENTRY_NUM_REGISTER_TYPES) return NULL; - ledger = g_new0 (GncEntryLedger, 1); - ledger->type = type; - ledger->book = book; - ledger->traverse_to_new = TRUE; - ledger->gconf_section = NULL; + ledger = g_new0 (GncEntryLedger, 1); + ledger->type = type; + ledger->book = book; + ledger->traverse_to_new = TRUE; + ledger->gconf_section = NULL; - /* Orders and Invoices are "invoices" for lookups */ - switch (type) { - case GNCENTRY_ORDER_ENTRY: - case GNCENTRY_ORDER_VIEWER: - case GNCENTRY_INVOICE_ENTRY: - case GNCENTRY_INVOICE_VIEWER: - ledger->is_invoice = TRUE; - break; - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_BILL_VIEWER: - case GNCENTRY_EXPVOUCHER_ENTRY: - case GNCENTRY_EXPVOUCHER_VIEWER: - case GNCENTRY_NUM_REGISTER_TYPES: - ledger->is_invoice = FALSE; - break; - } - - ledger->blank_entry_guid = *xaccGUIDNULL(); - ledger->blank_entry_edited = FALSE; - - { - Timespec ts = { 0, 0 }; - ts.tv_sec = time (NULL); - ledger->last_date_entered = timespecCanonicalDayTime (ts); - } - - { - TableLayout *layout = gnc_entry_ledger_layout_new (ledger); - TableModel *model = gnc_entry_ledger_model_new (type); - TableControl *control = gnc_entry_ledger_control_new (); - model->handler_user_data = ledger; - control->user_data = ledger; - - ledger->table = gnc_table_new (layout, model, control); - } - - gnc_entry_ledger_config_cells (ledger); - - /* set up header */ - { - VirtualCellLocation vcell_loc = { 0, 0 }; - CellBlock *header; - - header = gnc_table_layout_get_cursor (ledger->table->layout, CURSOR_HEADER); - - gnc_table_set_vcell (ledger->table, header, NULL, TRUE, TRUE, vcell_loc); - } - - /* set up first initial row */ - { - VirtualLocation vloc; - CellBlock *cursor; - - vloc.vcell_loc.virt_row = 1; - vloc.vcell_loc.virt_col = 0; - vloc.phys_row_offset = 0; - vloc.phys_col_offset = 0; - - cursor = gnc_table_layout_get_cursor (ledger->table->layout, "cursor"); - - gnc_table_set_vcell (ledger->table, cursor, NULL, TRUE, TRUE, vloc.vcell_loc); - - if (gnc_table_find_close_valid_cell (ledger->table, &vloc, FALSE)) - gnc_table_move_cursor (ledger->table, vloc); - else + /* Orders and Invoices are "invoices" for lookups */ + switch (type) { - g_warning ("Can't find valid initial location"); + case GNCENTRY_ORDER_ENTRY: + case GNCENTRY_ORDER_VIEWER: + case GNCENTRY_INVOICE_ENTRY: + case GNCENTRY_INVOICE_VIEWER: + ledger->is_invoice = TRUE; + break; + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_BILL_VIEWER: + case GNCENTRY_EXPVOUCHER_ENTRY: + case GNCENTRY_EXPVOUCHER_VIEWER: + case GNCENTRY_NUM_REGISTER_TYPES: + ledger->is_invoice = FALSE; + break; } - } - /* Initialize Display */ - gnc_entry_ledger_display_init (ledger); - return ledger; + ledger->blank_entry_guid = *xaccGUIDNULL(); + ledger->blank_entry_edited = FALSE; + + { + Timespec ts = { 0, 0 }; + ts.tv_sec = time (NULL); + ledger->last_date_entered = timespecCanonicalDayTime (ts); + } + + { + TableLayout *layout = gnc_entry_ledger_layout_new (ledger); + TableModel *model = gnc_entry_ledger_model_new (type); + TableControl *control = gnc_entry_ledger_control_new (); + model->handler_user_data = ledger; + control->user_data = ledger; + + ledger->table = gnc_table_new (layout, model, control); + } + + gnc_entry_ledger_config_cells (ledger); + + /* set up header */ + { + VirtualCellLocation vcell_loc = { 0, 0 }; + CellBlock *header; + + header = gnc_table_layout_get_cursor (ledger->table->layout, CURSOR_HEADER); + + gnc_table_set_vcell (ledger->table, header, NULL, TRUE, TRUE, vcell_loc); + } + + /* set up first initial row */ + { + VirtualLocation vloc; + CellBlock *cursor; + + vloc.vcell_loc.virt_row = 1; + vloc.vcell_loc.virt_col = 0; + vloc.phys_row_offset = 0; + vloc.phys_col_offset = 0; + + cursor = gnc_table_layout_get_cursor (ledger->table->layout, "cursor"); + + gnc_table_set_vcell (ledger->table, cursor, NULL, TRUE, TRUE, vloc.vcell_loc); + + if (gnc_table_find_close_valid_cell (ledger->table, &vloc, FALSE)) + gnc_table_move_cursor (ledger->table, vloc); + else + { + g_warning ("Can't find valid initial location"); + } + } + + /* Initialize Display */ + gnc_entry_ledger_display_init (ledger); + return ledger; } /* Destroy the GncEntry Ledger */ void gnc_entry_ledger_destroy (GncEntryLedger *ledger) { - if (!ledger) return; + if (!ledger) return; - /* Destroy blank entry, etc. */ - gnc_entry_ledger_clear_blank_entry (ledger); - gnc_entry_ledger_display_fini (ledger); - gnc_table_destroy (ledger->table); - gncQueryDestroy (ledger->query); - g_free (ledger); + /* Destroy blank entry, etc. */ + gnc_entry_ledger_clear_blank_entry (ledger); + gnc_entry_ledger_display_fini (ledger); + gnc_table_destroy (ledger->table); + gncQueryDestroy (ledger->query); + g_free (ledger); } Table * gnc_entry_ledger_get_table (GncEntryLedger *ledger) { - if (!ledger) return NULL; - return ledger->table; + if (!ledger) return NULL; + return ledger->table; } void gnc_entry_ledger_set_default_order (GncEntryLedger *ledger, - GncOrder *order) + GncOrder *order) { - if (!ledger) return; - ledger->order = order; + if (!ledger) return; + ledger->order = order; - if (!ledger->query && order) { - ledger->query = gncQueryCreateFor (GNC_ENTRY_MODULE_NAME); - gncQuerySetBook (ledger->query, gncOrderGetBook (order)); - gncQueryAddGUIDMatch (ledger->query, - g_slist_prepend (g_slist_prepend (NULL, - QUERY_PARAM_GUID), - ENTRY_ORDER), - gncOrderGetGUID (order), QUERY_AND); - } - gnc_entry_ledger_display_refresh (ledger); + if (!ledger->query && order) + { + ledger->query = gncQueryCreateFor (GNC_ENTRY_MODULE_NAME); + gncQuerySetBook (ledger->query, gncOrderGetBook (order)); + gncQueryAddGUIDMatch (ledger->query, + g_slist_prepend (g_slist_prepend (NULL, + QUERY_PARAM_GUID), + ENTRY_ORDER), + gncOrderGetGUID (order), QUERY_AND); + } + gnc_entry_ledger_display_refresh (ledger); } static void create_invoice_query (GncEntryLedger *ledger) { - QueryNew *q, *q1; - char * type = NULL; + QueryNew *q, *q1; + char * type = NULL; - if (!ledger->invoice) - return; + if (!ledger->invoice) + return; - if (ledger->query) - gncQueryDestroy (ledger->query); + if (ledger->query) + gncQueryDestroy (ledger->query); - /* Match: (where I-TYPE == Invoice or Bill) - * - * 1. book AND - * 2. ( Entry->I-TYPE == ledger->invoice - * #if I-TYPE == Invoice (entry only) - * OR - * 3. ( Entry->Invoice == NULL AND - * ( Entry->Billable == TRUE AND - * Entry->Bill->Is-Posted? == TRUE AND - * ( Entry->BillTo == Invoice->parent OR - * Entry->Bill->BillTo == Invoice->parent ) ) - * OR - * ( Entry->Order->real-parent == Invoice->parent ) ) - * #endif - * ) - * - * Note that term 3 is only for Editable invoices. - */ - - /* Term 1 */ - ledger->query = gncQueryCreateFor (GNC_ENTRY_MODULE_NAME); - gncQuerySetBook (ledger->query, gncInvoiceGetBook (ledger->invoice)); - - /* Term 2 */ - switch (ledger->type) { - case GNCENTRY_INVOICE_ENTRY: - case GNCENTRY_INVOICE_VIEWER: - type = ENTRY_INVOICE; - break; - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_BILL_VIEWER: - case GNCENTRY_EXPVOUCHER_ENTRY: - case GNCENTRY_EXPVOUCHER_VIEWER: - type = ENTRY_BILL; - break; - default: - g_warning ("Invalid Ledger type"); - type = ENTRY_INVOICE; - break; - } - - q = gncQueryCreateFor (GNC_ENTRY_MODULE_NAME); - gncQueryAddGUIDMatch (q, gncQueryBuildParamList (type, QUERY_PARAM_GUID, NULL), - gncInvoiceGetGUID (ledger->invoice), QUERY_OR); - - /* Term 3 */ - if (ledger->type == GNCENTRY_INVOICE_ENTRY && - gncOwnerGetEndGUID (gncInvoiceGetOwner (ledger->invoice)) != NULL) { - - const GUID *invoice_parent = - gncOwnerGetGUID (gncInvoiceGetOwner (ledger->invoice)); - QueryNew *q2 = gncQueryCreateFor (GNC_ENTRY_MODULE_NAME); - - /* - * Entry->BillTo == Invoice->parent OR - * ( Entry->BillTo == NULL AND Entry->Bill->BillTo == Invoice->parent ) + /* Match: (where I-TYPE == Invoice or Bill) + * + * 1. book AND + * 2. ( Entry->I-TYPE == ledger->invoice + * #if I-TYPE == Invoice (entry only) + * OR + * 3. ( Entry->Invoice == NULL AND + * ( Entry->Billable == TRUE AND + * Entry->Bill->Is-Posted? == TRUE AND + * ( Entry->BillTo == Invoice->parent OR + * Entry->Bill->BillTo == Invoice->parent ) ) + * OR + * ( Entry->Order->real-parent == Invoice->parent ) ) + * #endif + * ) + * + * Note that term 3 is only for Editable invoices. */ - gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILLTO, - QUERY_PARAM_GUID, NULL), - NULL, QUERY_AND); - gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILL, INVOICE_BILLTO, - QUERY_PARAM_GUID, NULL), - invoice_parent, QUERY_AND); - gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILLTO, - QUERY_PARAM_GUID, NULL), - invoice_parent, QUERY_OR); + /* Term 1 */ + ledger->query = gncQueryCreateFor (GNC_ENTRY_MODULE_NAME); + gncQuerySetBook (ledger->query, gncInvoiceGetBook (ledger->invoice)); - /* Entry->Billable == TRUE AND Entry->Bill->Is-Posted? == TRUE */ - gncQueryAddBooleanMatch (q2, gncQueryBuildParamList (ENTRY_BILLABLE, NULL), - TRUE, QUERY_AND); - gncQueryAddBooleanMatch (q2, gncQueryBuildParamList (ENTRY_BILL, - INVOICE_IS_POSTED, NULL), - TRUE, QUERY_AND); + /* Term 2 */ + switch (ledger->type) + { + case GNCENTRY_INVOICE_ENTRY: + case GNCENTRY_INVOICE_VIEWER: + type = ENTRY_INVOICE; + break; + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_BILL_VIEWER: + case GNCENTRY_EXPVOUCHER_ENTRY: + case GNCENTRY_EXPVOUCHER_VIEWER: + type = ENTRY_BILL; + break; + default: + g_warning ("Invalid Ledger type"); + type = ENTRY_INVOICE; + break; + } - /* Entry->Order->real-parent == Invoice->parent */ - gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_ORDER, ORDER_OWNER, - OWNER_PARENTG, NULL), - invoice_parent, QUERY_OR); - - /* Entry->Invoice == NULL */ - gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_INVOICE, - QUERY_PARAM_GUID, NULL), - NULL, QUERY_AND); + q = gncQueryCreateFor (GNC_ENTRY_MODULE_NAME); + gncQueryAddGUIDMatch (q, gncQueryBuildParamList (type, QUERY_PARAM_GUID, NULL), + gncInvoiceGetGUID (ledger->invoice), QUERY_OR); + + /* Term 3 */ + if (ledger->type == GNCENTRY_INVOICE_ENTRY && + gncOwnerGetEndGUID (gncInvoiceGetOwner (ledger->invoice)) != NULL) + { + + const GUID *invoice_parent = + gncOwnerGetGUID (gncInvoiceGetOwner (ledger->invoice)); + QueryNew *q2 = gncQueryCreateFor (GNC_ENTRY_MODULE_NAME); + + /* + * Entry->BillTo == Invoice->parent OR + * ( Entry->BillTo == NULL AND Entry->Bill->BillTo == Invoice->parent ) + */ + + gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILLTO, + QUERY_PARAM_GUID, NULL), + NULL, QUERY_AND); + gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILL, INVOICE_BILLTO, + QUERY_PARAM_GUID, NULL), + invoice_parent, QUERY_AND); + gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_BILLTO, + QUERY_PARAM_GUID, NULL), + invoice_parent, QUERY_OR); + + /* Entry->Billable == TRUE AND Entry->Bill->Is-Posted? == TRUE */ + gncQueryAddBooleanMatch (q2, gncQueryBuildParamList (ENTRY_BILLABLE, NULL), + TRUE, QUERY_AND); + gncQueryAddBooleanMatch (q2, gncQueryBuildParamList (ENTRY_BILL, + INVOICE_IS_POSTED, NULL), + TRUE, QUERY_AND); + + /* Entry->Order->real-parent == Invoice->parent */ + gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_ORDER, ORDER_OWNER, + OWNER_PARENTG, NULL), + invoice_parent, QUERY_OR); + + /* Entry->Invoice == NULL */ + gncQueryAddGUIDMatch (q2, gncQueryBuildParamList (ENTRY_INVOICE, + QUERY_PARAM_GUID, NULL), + NULL, QUERY_AND); - /* Combine terms 2 and 3 */ - q1 = gncQueryMerge (q, q2, QUERY_OR); + /* Combine terms 2 and 3 */ + q1 = gncQueryMerge (q, q2, QUERY_OR); + gncQueryDestroy (q); + gncQueryDestroy (q2); + q = q1; + } + + /* Combine terms 1 and 2 */ + q1 = gncQueryMerge (ledger->query, q, QUERY_AND); gncQueryDestroy (q); - gncQueryDestroy (q2); - q = q1; - } - - /* Combine terms 1 and 2 */ - q1 = gncQueryMerge (ledger->query, q, QUERY_AND); - gncQueryDestroy (q); - gncQueryDestroy (ledger->query); - ledger->query = q1; + gncQueryDestroy (ledger->query); + ledger->query = q1; } void gnc_entry_ledger_set_default_invoice (GncEntryLedger *ledger, - GncInvoice *invoice) + GncInvoice *invoice) { - if (!ledger) return; - ledger->invoice = invoice; + if (!ledger) return; + ledger->invoice = invoice; - if (!ledger->query && invoice) - create_invoice_query (ledger); + if (!ledger->query && invoice) + create_invoice_query (ledger); - gnc_entry_ledger_display_refresh (ledger); + gnc_entry_ledger_display_refresh (ledger); } void gnc_entry_ledger_reset_query (GncEntryLedger *ledger) { - if (!ledger) return; - if (!ledger->invoice) return; + if (!ledger) return; + if (!ledger->invoice) return; - create_invoice_query (ledger); - gnc_entry_ledger_display_refresh (ledger); + create_invoice_query (ledger); + gnc_entry_ledger_display_refresh (ledger); } void gnc_entry_ledger_set_parent (GncEntryLedger *ledger, gncUIWidget parent) { - if (!ledger) return; - ledger->parent = parent; + if (!ledger) return; + ledger->parent = parent; } gboolean gnc_entry_ledger_find_entry (GncEntryLedger *ledger, GncEntry *entry, - VirtualCellLocation *vcell_loc) + VirtualCellLocation *vcell_loc) { - Table *table = ledger->table; - int v_row; - GncEntry *e; + Table *table = ledger->table; + int v_row; + GncEntry *e; - for (v_row = 1; v_row < table->num_virt_rows; v_row++) { - VirtualCellLocation vc_loc = { v_row, 0 }; + for (v_row = 1; v_row < table->num_virt_rows; v_row++) + { + VirtualCellLocation vc_loc = { v_row, 0 }; - e = gnc_entry_ledger_get_entry (ledger, vc_loc); + e = gnc_entry_ledger_get_entry (ledger, vc_loc); - if (e == entry) { - if (vcell_loc != NULL) - *vcell_loc = vc_loc; - return TRUE; + if (e == entry) + { + if (vcell_loc != NULL) + *vcell_loc = vc_loc; + return TRUE; + } } - } - return FALSE; + return FALSE; } void gnc_entry_ledger_set_readonly (GncEntryLedger *ledger, gboolean readonly) { - if (!ledger) return; + if (!ledger) return; - /* reset the ledger type appropriately */ - if (readonly) { - switch (ledger->type) { - case GNCENTRY_ORDER_ENTRY: - ledger->type = GNCENTRY_ORDER_VIEWER; - break; - case GNCENTRY_INVOICE_ENTRY: - ledger->type = GNCENTRY_INVOICE_VIEWER; - create_invoice_query (ledger); - break; - case GNCENTRY_BILL_ENTRY: - ledger->type = GNCENTRY_BILL_VIEWER; - create_invoice_query (ledger); - break; - case GNCENTRY_EXPVOUCHER_ENTRY: - ledger->type = GNCENTRY_EXPVOUCHER_VIEWER; - create_invoice_query (ledger); - break; - default: - return; /* Nothing to do */ + /* reset the ledger type appropriately */ + if (readonly) + { + switch (ledger->type) + { + case GNCENTRY_ORDER_ENTRY: + ledger->type = GNCENTRY_ORDER_VIEWER; + break; + case GNCENTRY_INVOICE_ENTRY: + ledger->type = GNCENTRY_INVOICE_VIEWER; + create_invoice_query (ledger); + break; + case GNCENTRY_BILL_ENTRY: + ledger->type = GNCENTRY_BILL_VIEWER; + create_invoice_query (ledger); + break; + case GNCENTRY_EXPVOUCHER_ENTRY: + ledger->type = GNCENTRY_EXPVOUCHER_VIEWER; + create_invoice_query (ledger); + break; + default: + return; /* Nothing to do */ + } } - } else { - switch (ledger->type) { - case GNCENTRY_ORDER_VIEWER: - ledger->type = GNCENTRY_ORDER_ENTRY; - break; - case GNCENTRY_INVOICE_VIEWER: - ledger->type = GNCENTRY_INVOICE_ENTRY; - create_invoice_query (ledger); - break; - case GNCENTRY_BILL_VIEWER: - ledger->type = GNCENTRY_BILL_ENTRY; - create_invoice_query (ledger); - break; - case GNCENTRY_EXPVOUCHER_VIEWER: - ledger->type = GNCENTRY_EXPVOUCHER_ENTRY; - create_invoice_query (ledger); - break; - default: - return; /* Nothing to do */ + else + { + switch (ledger->type) + { + case GNCENTRY_ORDER_VIEWER: + ledger->type = GNCENTRY_ORDER_ENTRY; + break; + case GNCENTRY_INVOICE_VIEWER: + ledger->type = GNCENTRY_INVOICE_ENTRY; + create_invoice_query (ledger); + break; + case GNCENTRY_BILL_VIEWER: + ledger->type = GNCENTRY_BILL_ENTRY; + create_invoice_query (ledger); + break; + case GNCENTRY_EXPVOUCHER_VIEWER: + ledger->type = GNCENTRY_EXPVOUCHER_ENTRY; + create_invoice_query (ledger); + break; + default: + return; /* Nothing to do */ + } } - } - /* reset the model */ - gnc_table_model_set_read_only (ledger->table->model, readonly); + /* reset the model */ + gnc_table_model_set_read_only (ledger->table->model, readonly); - /* if readonly is TRUE, get rid of the blank entry. */ - if (readonly) - gnc_entry_ledger_clear_blank_entry (ledger); + /* if readonly is TRUE, get rid of the blank entry. */ + if (readonly) + gnc_entry_ledger_clear_blank_entry (ledger); - /* and refresh the display */ - gnc_entry_ledger_display_refresh (ledger); + /* and refresh the display */ + gnc_entry_ledger_display_refresh (ledger); } gboolean gnc_entry_ledger_changed (GncEntryLedger *ledger) { - if (!ledger) + if (!ledger) + return FALSE; + + if (gnc_table_current_cursor_changed (ledger->table, FALSE)) + return TRUE; + return FALSE; - - if (gnc_table_current_cursor_changed (ledger->table, FALSE)) - return TRUE; - - return FALSE; } void gnc_entry_ledger_compute_value (GncEntryLedger *ledger, - gnc_numeric *value, gnc_numeric *tax_value) + gnc_numeric *value, gnc_numeric *tax_value) { - gnc_numeric qty, price, discount; - gint disc_type, disc_how; - gboolean taxable, taxincluded; - GncTaxTable *table; - GList *taxes = NULL; - int denom = 100; + gnc_numeric qty, price, discount; + gint disc_type, disc_how; + gboolean taxable, taxincluded; + GncTaxTable *table; + GList *taxes = NULL; + int denom = 100; - gnc_entry_ledger_get_numeric (ledger, ENTRY_QTY_CELL, &qty); - gnc_entry_ledger_get_numeric (ledger, ENTRY_PRIC_CELL, &price); - gnc_entry_ledger_get_numeric (ledger, ENTRY_DISC_CELL, &discount); + gnc_entry_ledger_get_numeric (ledger, ENTRY_QTY_CELL, &qty); + gnc_entry_ledger_get_numeric (ledger, ENTRY_PRIC_CELL, &price); + gnc_entry_ledger_get_numeric (ledger, ENTRY_DISC_CELL, &discount); - disc_type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL); - disc_how = gnc_entry_ledger_get_type (ledger, ENTRY_DISHOW_CELL); + disc_type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL); + disc_how = gnc_entry_ledger_get_type (ledger, ENTRY_DISHOW_CELL); - /* Bills and exp-vouchers dont have discounts */ - if (ledger->type == GNCENTRY_BILL_ENTRY || - ledger->type == GNCENTRY_BILL_VIEWER || - ledger->type == GNCENTRY_EXPVOUCHER_ENTRY || - ledger->type == GNCENTRY_EXPVOUCHER_VIEWER) - { - g_assert (gnc_numeric_zero_p (discount)); - disc_type = GNC_AMT_TYPE_VALUE; - disc_how = GNC_DISC_PRETAX; - } + /* Bills and exp-vouchers dont have discounts */ + if (ledger->type == GNCENTRY_BILL_ENTRY || + ledger->type == GNCENTRY_BILL_VIEWER || + ledger->type == GNCENTRY_EXPVOUCHER_ENTRY || + ledger->type == GNCENTRY_EXPVOUCHER_VIEWER) + { + g_assert (gnc_numeric_zero_p (discount)); + disc_type = GNC_AMT_TYPE_VALUE; + disc_how = GNC_DISC_PRETAX; + } - /* If we're so early in the process that we don't have info, stop now */ - if (disc_type < 0 || disc_how < 0) - { - if (value) - *value = gnc_numeric_zero (); + /* If we're so early in the process that we don't have info, stop now */ + if (disc_type < 0 || disc_how < 0) + { + if (value) + *value = gnc_numeric_zero (); + if (tax_value) + *tax_value = gnc_numeric_zero (); + return; + } + + taxable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL); + taxincluded = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXINCLUDED_CELL); + table = gnc_entry_ledger_get_taxtable (ledger, ENTRY_TAXTABLE_CELL); + + /* Expense vouchers don't have taxable, taxincluded, or taxtable cells, either */ + if (ledger->type == GNCENTRY_EXPVOUCHER_ENTRY || + ledger->type == GNCENTRY_EXPVOUCHER_VIEWER) + { + taxable = FALSE; + taxincluded = FALSE; + table = NULL; + } + + if (ledger->invoice) + { + gnc_commodity *currency = gncInvoiceGetCurrency(ledger->invoice); + if (currency) + denom = gnc_commodity_get_fraction(currency); + } + + gncEntryComputeValue (qty, price, (taxable ? table : NULL), taxincluded, + discount, disc_type, disc_how, denom, + value, NULL, &taxes); + + /* return the tax value */ if (tax_value) - *tax_value = gnc_numeric_zero (); - return; - } - - taxable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL); - taxincluded = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXINCLUDED_CELL); - table = gnc_entry_ledger_get_taxtable (ledger, ENTRY_TAXTABLE_CELL); - - /* Expense vouchers don't have taxable, taxincluded, or taxtable cells, either */ - if (ledger->type == GNCENTRY_EXPVOUCHER_ENTRY || - ledger->type == GNCENTRY_EXPVOUCHER_VIEWER) - { - taxable = FALSE; - taxincluded = FALSE; - table = NULL; - } - - if (ledger->invoice) - { - gnc_commodity *currency = gncInvoiceGetCurrency(ledger->invoice); - if (currency) - denom = gnc_commodity_get_fraction(currency); - } - - gncEntryComputeValue (qty, price, (taxable ? table : NULL), taxincluded, - discount, disc_type, disc_how, denom, - value, NULL, &taxes); - - /* return the tax value */ - if (tax_value) - *tax_value = gncAccountValueTotal (taxes); + *tax_value = gncAccountValueTotal (taxes); } gboolean gnc_entry_ledger_get_entry_virt_loc (GncEntryLedger *ledger, GncEntry *entry, - VirtualCellLocation *vcell_loc) + VirtualCellLocation *vcell_loc) { - Table *table; - int v_row; - int v_col; + Table *table; + int v_row; + int v_col; + + if ((ledger == NULL) || (entry == NULL)) + return FALSE; + + table = ledger->table; + + /* go backwards because typically you search for entries at the end */ + + for (v_row = table->num_virt_rows - 1; v_row > 0; v_row--) + for (v_col = 0; v_col < table->num_virt_cols; v_col++) + { + VirtualCellLocation vc_loc = { v_row, v_col }; + VirtualCell *vcell; + GncEntry *e; + + vcell = gnc_table_get_virtual_cell (table, vc_loc); + if (vcell == NULL) + continue; + + if (!vcell->visible) + continue; + + e = gncEntryLookup (ledger->book, vcell->vcell_data); + + if (e == entry) + { + if (vcell_loc) + *vcell_loc = vc_loc; + + return TRUE; + } + } - if ((ledger == NULL) || (entry == NULL)) return FALSE; - - table = ledger->table; - - /* go backwards because typically you search for entries at the end */ - - for (v_row = table->num_virt_rows - 1; v_row > 0; v_row--) - for (v_col = 0; v_col < table->num_virt_cols; v_col++) - { - VirtualCellLocation vc_loc = { v_row, v_col }; - VirtualCell *vcell; - GncEntry *e; - - vcell = gnc_table_get_virtual_cell (table, vc_loc); - if (vcell == NULL) - continue; - - if (!vcell->visible) - continue; - - e = gncEntryLookup (ledger->book, vcell->vcell_data); - - if (e == entry) - { - if (vcell_loc) - *vcell_loc = vc_loc; - - return TRUE; - } - } - - return FALSE; } void gnc_entry_ledger_delete_current_entry (GncEntryLedger *ledger) { - GncEntry *entry; + GncEntry *entry; - if (!ledger) - return; + if (!ledger) + return; - /* If there is no entry, just return */ - entry = gnc_entry_ledger_get_current_entry (ledger); - if (!entry) - return; + /* If there is no entry, just return */ + entry = gnc_entry_ledger_get_current_entry (ledger); + if (!entry) + return; - /* If this is the blank entry, just cancel the changes */ - if (entry == gnc_entry_ledger_get_blank_entry (ledger)) { - gnc_entry_ledger_cancel_cursor_changes (ledger); - return; - } + /* If this is the blank entry, just cancel the changes */ + if (entry == gnc_entry_ledger_get_blank_entry (ledger)) + { + gnc_entry_ledger_cancel_cursor_changes (ledger); + return; + } - /* Ok, let's delete this entry */ - gnc_suspend_gui_refresh (); - if (!gncEntryIsOpen (entry)) - gncEntryBeginEdit (entry); + /* Ok, let's delete this entry */ + gnc_suspend_gui_refresh (); + if (!gncEntryIsOpen (entry)) + gncEntryBeginEdit (entry); - { - GncOrder *order; - GncInvoice *invoice; + { + GncOrder *order; + GncInvoice *invoice; - order = gncEntryGetOrder (entry); - if (order) - gncOrderRemoveEntry (order, entry); + order = gncEntryGetOrder (entry); + if (order) + gncOrderRemoveEntry (order, entry); - invoice = gncEntryGetInvoice (entry); - if (invoice) - gncInvoiceRemoveEntry (invoice, entry); + invoice = gncEntryGetInvoice (entry); + if (invoice) + gncInvoiceRemoveEntry (invoice, entry); - invoice = gncEntryGetBill (entry); - if (invoice) - gncBillRemoveEntry (invoice, entry); + invoice = gncEntryGetBill (entry); + if (invoice) + gncBillRemoveEntry (invoice, entry); - gncEntryDestroy (entry); - } - gnc_resume_gui_refresh (); + gncEntryDestroy (entry); + } + gnc_resume_gui_refresh (); } void gnc_entry_ledger_duplicate_current_entry (GncEntryLedger *ledger) { - GncEntry *entry; - gboolean changed; + GncEntry *entry; + gboolean changed; - if (!ledger) - return; + if (!ledger) + return; - /* Be paranoid */ - entry = gnc_entry_ledger_get_current_entry (ledger); - if (!entry) - return; + /* Be paranoid */ + entry = gnc_entry_ledger_get_current_entry (ledger); + if (!entry) + return; - changed = gnc_table_current_cursor_changed (ledger->table, FALSE); + changed = gnc_table_current_cursor_changed (ledger->table, FALSE); - /* See if we're asked to duplicate an unchanged blank entry -- - * there is no point in doing that. - */ - if (!changed && entry == gnc_entry_ledger_get_blank_entry (ledger)) - return; + /* See if we're asked to duplicate an unchanged blank entry -- + * there is no point in doing that. + */ + if (!changed && entry == gnc_entry_ledger_get_blank_entry (ledger)) + return; - gnc_suspend_gui_refresh (); + gnc_suspend_gui_refresh (); - /* If the cursor has been edited, we are going to have to commit - * it before we can duplicate. Make sure the user wants to do that. */ - if (changed) { - const char *title = _("Save the current entry?"); - const char *message = - _("The current transaction has been changed. Would you like to " - "record the changes before duplicating this entry, or " - "cancel the duplication?"); - GtkWidget *dialog; - gint response; + /* If the cursor has been edited, we are going to have to commit + * it before we can duplicate. Make sure the user wants to do that. */ + if (changed) + { + const char *title = _("Save the current entry?"); + const char *message = + _("The current transaction has been changed. Would you like to " + "record the changes before duplicating this entry, or " + "cancel the duplication?"); + GtkWidget *dialog; + gint response; - dialog = gtk_message_dialog_new(GTK_WINDOW(ledger->parent), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_QUESTION, - GTK_BUTTONS_NONE, - "%s", title); - gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), - "%s", message); - gtk_dialog_add_buttons(GTK_DIALOG(dialog), - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - _("_Record"), GTK_RESPONSE_ACCEPT, - NULL); - response = gnc_dialog_run(GTK_DIALOG(dialog), "invoice_entry_duplicated"); - gtk_widget_destroy(dialog); + dialog = gtk_message_dialog_new(GTK_WINDOW(ledger->parent), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_NONE, + "%s", title); + gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), + "%s", message); + gtk_dialog_add_buttons(GTK_DIALOG(dialog), + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + _("_Record"), GTK_RESPONSE_ACCEPT, + NULL); + response = gnc_dialog_run(GTK_DIALOG(dialog), "invoice_entry_duplicated"); + gtk_widget_destroy(dialog); - if (response != GTK_RESPONSE_ACCEPT) { - gnc_resume_gui_refresh (); - return; + if (response != GTK_RESPONSE_ACCEPT) + { + gnc_resume_gui_refresh (); + return; + } + + if (!gnc_entry_ledger_commit_entry (ledger)) + { + gnc_resume_gui_refresh (); + return; + } } - if (!gnc_entry_ledger_commit_entry (ledger)) { - gnc_resume_gui_refresh (); - return; + /* Ok, we're ready to make the copy */ + { + GncEntry * new_entry; + + new_entry = gncEntryCreate (ledger->book); + gncEntryCopy (entry, new_entry); + gncEntrySetDate (new_entry, ledger->last_date_entered); + + /* Set the hint for where to display on the refresh */ + ledger->hint_entry = new_entry; } - } - /* Ok, we're ready to make the copy */ - { - GncEntry * new_entry; - - new_entry = gncEntryCreate (ledger->book); - gncEntryCopy (entry, new_entry); - gncEntrySetDate (new_entry, ledger->last_date_entered); - - /* Set the hint for where to display on the refresh */ - ledger->hint_entry = new_entry; - } - - gnc_resume_gui_refresh (); - return; + gnc_resume_gui_refresh (); + return; } QueryNew * gnc_entry_ledger_get_query (GncEntryLedger *ledger) { - if (!ledger) - return NULL; + if (!ledger) + return NULL; - return ledger->query; + return ledger->query; } void gnc_entry_ledger_set_gconf_section (GncEntryLedger *ledger, const gchar *string) { - if (!ledger) - return; + if (!ledger) + return; - ledger->gconf_section = string; + ledger->gconf_section = string; } diff --git a/src/business/business-ledger/gncEntryLedger.h b/src/business/business-ledger/gncEntryLedger.h index 2dd95cf1b3..b906f6a59f 100644 --- a/src/business/business-ledger/gncEntryLedger.h +++ b/src/business/business-ledger/gncEntryLedger.h @@ -30,27 +30,28 @@ #include "gnc-book.h" #include "table-allgui.h" -typedef enum { - GNCENTRY_ORDER_ENTRY, - GNCENTRY_ORDER_VIEWER, - GNCENTRY_INVOICE_ENTRY, - GNCENTRY_INVOICE_VIEWER, - GNCENTRY_BILL_ENTRY, - GNCENTRY_BILL_VIEWER, - GNCENTRY_EXPVOUCHER_ENTRY, - GNCENTRY_EXPVOUCHER_VIEWER, - GNCENTRY_NUM_REGISTER_TYPES +typedef enum +{ + GNCENTRY_ORDER_ENTRY, + GNCENTRY_ORDER_VIEWER, + GNCENTRY_INVOICE_ENTRY, + GNCENTRY_INVOICE_VIEWER, + GNCENTRY_BILL_ENTRY, + GNCENTRY_BILL_VIEWER, + GNCENTRY_EXPVOUCHER_ENTRY, + GNCENTRY_EXPVOUCHER_VIEWER, + GNCENTRY_NUM_REGISTER_TYPES } GncEntryLedgerType; typedef struct entry_ledger_colors { - guint32 header_bg_color; + guint32 header_bg_color; - guint32 primary_bg_color; - guint32 secondary_bg_color; + guint32 primary_bg_color; + guint32 secondary_bg_color; - guint32 primary_active_bg_color; - guint32 secondary_active_bg_color; + guint32 primary_active_bg_color; + guint32 secondary_active_bg_color; } GncEntryLedgerColors; #define ENTRY_IACCT_CELL "inv-account" @@ -83,11 +84,11 @@ GncEntryLedger * gnc_entry_ledger_new (QofBook *book, GncEntryLedgerType type); /* Set the default order for this ledger */ void gnc_entry_ledger_set_default_order (GncEntryLedger *ledger, - GncOrder *order); + GncOrder *order); /* Set the default invoice for this ledger */ void gnc_entry_ledger_set_default_invoice (GncEntryLedger *ledger, - GncInvoice *invoice); + GncInvoice *invoice); /* Destroy the GncEntry Ledger */ void gnc_entry_ledger_destroy (GncEntryLedger *ledger); @@ -122,8 +123,8 @@ void gnc_entry_ledger_reset_query (GncEntryLedger *ledger); GncEntry * gnc_entry_ledger_get_blank_entry (GncEntryLedger *ledger); gboolean gnc_entry_ledger_get_entry_virt_loc (GncEntryLedger *ledger, - GncEntry *entry, - VirtualCellLocation *vcell_loc); + GncEntry *entry, + VirtualCellLocation *vcell_loc); void gnc_entry_ledger_delete_current_entry (GncEntryLedger *ledger); void gnc_entry_ledger_duplicate_current_entry (GncEntryLedger *ledger); diff --git a/src/business/business-ledger/gncEntryLedgerControl.c b/src/business/business-ledger/gncEntryLedgerControl.c index d55123a3cd..e0822ecbc8 100644 --- a/src/business/business-ledger/gncEntryLedgerControl.c +++ b/src/business/business-ledger/gncEntryLedgerControl.c @@ -44,105 +44,115 @@ static gboolean gnc_entry_ledger_save (GncEntryLedger *ledger, gboolean do_commit) { - GncEntry *blank_entry; - GncEntry *entry; + GncEntry *blank_entry; + GncEntry *entry; - if (!ledger) return FALSE; + if (!ledger) return FALSE; - blank_entry = gnc_entry_ledger_get_blank_entry (ledger); + blank_entry = gnc_entry_ledger_get_blank_entry (ledger); - entry = gnc_entry_ledger_get_current_entry (ledger); - if (entry == NULL) return FALSE; + entry = gnc_entry_ledger_get_current_entry (ledger); + if (entry == NULL) return FALSE; - /* Try to avoid heavy-weight updates if nothing has changed */ - if (!gnc_table_current_cursor_changed (ledger->table, FALSE)) { - if (!do_commit) return FALSE; + /* Try to avoid heavy-weight updates if nothing has changed */ + if (!gnc_table_current_cursor_changed (ledger->table, FALSE)) + { + if (!do_commit) return FALSE; - if (entry == blank_entry) { - if (ledger->blank_entry_edited) { - ledger->last_date_entered = gncEntryGetDate (entry); - ledger->blank_entry_guid = *xaccGUIDNULL (); - ledger->blank_entry_edited = FALSE; - blank_entry = NULL; - } else - return FALSE; + if (entry == blank_entry) + { + if (ledger->blank_entry_edited) + { + ledger->last_date_entered = gncEntryGetDate (entry); + ledger->blank_entry_guid = *xaccGUIDNULL (); + ledger->blank_entry_edited = FALSE; + blank_entry = NULL; + } + else + return FALSE; + } + + return TRUE; } + gnc_suspend_gui_refresh (); + + if (!gncEntryIsOpen (entry)) + gncEntryBeginEdit (entry); + + gnc_table_save_cells (ledger->table, entry); + + if (entry == blank_entry) + { + Timespec ts; + ts.tv_sec = time(NULL); + ts.tv_nsec = 0; + gncEntrySetDateEntered (blank_entry, ts); + + switch (ledger->type) + { + case GNCENTRY_ORDER_ENTRY: + gncOrderAddEntry (ledger->order, blank_entry); + break; + case GNCENTRY_INVOICE_ENTRY: + /* Anything entered on an invoice entry must be part of the invoice! */ + gncInvoiceAddEntry (ledger->invoice, blank_entry); + break; + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_EXPVOUCHER_ENTRY: + /* Anything entered on an invoice entry must be part of the invoice! */ + gncBillAddEntry (ledger->invoice, blank_entry); + break; + default: + /* Nothing to do for viewers */ + g_warning ("blank entry traversed in a viewer"); + break; + } + } + + if (entry == blank_entry) + { + if (do_commit) + { + ledger->blank_entry_guid = *xaccGUIDNULL (); + blank_entry = NULL; + ledger->last_date_entered = gncEntryGetDate (entry); + } + else + ledger->blank_entry_edited = TRUE; + } + + if (do_commit) + gncEntryCommitEdit (entry); + + gnc_table_clear_current_cursor_changes (ledger->table); + + gnc_resume_gui_refresh (); + return TRUE; - } - - gnc_suspend_gui_refresh (); - - if (!gncEntryIsOpen (entry)) - gncEntryBeginEdit (entry); - - gnc_table_save_cells (ledger->table, entry); - - if (entry == blank_entry) { - Timespec ts; - ts.tv_sec = time(NULL); - ts.tv_nsec = 0; - gncEntrySetDateEntered (blank_entry, ts); - - switch (ledger->type) { - case GNCENTRY_ORDER_ENTRY: - gncOrderAddEntry (ledger->order, blank_entry); - break; - case GNCENTRY_INVOICE_ENTRY: - /* Anything entered on an invoice entry must be part of the invoice! */ - gncInvoiceAddEntry (ledger->invoice, blank_entry); - break; - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_EXPVOUCHER_ENTRY: - /* Anything entered on an invoice entry must be part of the invoice! */ - gncBillAddEntry (ledger->invoice, blank_entry); - break; - default: - /* Nothing to do for viewers */ - g_warning ("blank entry traversed in a viewer"); - break; - } - } - - if (entry == blank_entry) { - if (do_commit) { - ledger->blank_entry_guid = *xaccGUIDNULL (); - blank_entry = NULL; - ledger->last_date_entered = gncEntryGetDate (entry); - } else - ledger->blank_entry_edited = TRUE; - } - - if (do_commit) - gncEntryCommitEdit (entry); - - gnc_table_clear_current_cursor_changes (ledger->table); - - gnc_resume_gui_refresh (); - - return TRUE; } static gboolean gnc_entry_ledger_verify_acc_cell_ok (GncEntryLedger *ledger, - const char *cell_name, - const char *cell_msg) + const char *cell_name, + const char *cell_msg) { - ComboCell *cell; - const char *name; + ComboCell *cell; + const char *name; - cell = (ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, - cell_name); - g_return_val_if_fail (cell, TRUE); - name = cell->cell.value; - if (!name || *name == '\0') { - /* Translators: %s is the string "an Account" i.e. its translation. */ - const char *format = _("Invalid Entry: You need to supply %s."); + cell = (ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, + cell_name); + g_return_val_if_fail (cell, TRUE); + name = cell->cell.value; + if (!name || *name == '\0') + { + /* Translators: %s is the string "an Account" i.e. its translation. */ + const char *format = _("Invalid Entry: You need to supply %s."); - gnc_error_dialog (ledger->parent, format, cell_msg); - return FALSE; - } - return TRUE; + gnc_error_dialog (ledger->parent, format, cell_msg); + return FALSE; + } + return TRUE; } /* Verify whether we can save the entry, or warn the user when we can't @@ -151,501 +161,518 @@ gnc_entry_ledger_verify_acc_cell_ok (GncEntryLedger *ledger, static gboolean gnc_entry_ledger_verify_can_save (GncEntryLedger *ledger) { - gnc_numeric value; + gnc_numeric value; - /* Compute the value and tax value of the current cursor */ - gnc_entry_ledger_compute_value (ledger, &value, NULL); + /* Compute the value and tax value of the current cursor */ + gnc_entry_ledger_compute_value (ledger, &value, NULL); - /* If there is a value, make sure there is an account */ - if (! gnc_numeric_zero_p (value)) { - switch (ledger->type) { - case GNCENTRY_INVOICE_ENTRY: - if (!gnc_entry_ledger_verify_acc_cell_ok (ledger, ENTRY_IACCT_CELL, - _("an Account"))) - return FALSE; - break; - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_EXPVOUCHER_ENTRY: - if (!gnc_entry_ledger_verify_acc_cell_ok (ledger, ENTRY_BACCT_CELL, - _("an Account"))) - return FALSE; - break; - default: - g_warning ("Unhandled ledger type"); - break; + /* If there is a value, make sure there is an account */ + if (! gnc_numeric_zero_p (value)) + { + switch (ledger->type) + { + case GNCENTRY_INVOICE_ENTRY: + if (!gnc_entry_ledger_verify_acc_cell_ok (ledger, ENTRY_IACCT_CELL, + _("an Account"))) + return FALSE; + break; + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_EXPVOUCHER_ENTRY: + if (!gnc_entry_ledger_verify_acc_cell_ok (ledger, ENTRY_BACCT_CELL, + _("an Account"))) + return FALSE; + break; + default: + g_warning ("Unhandled ledger type"); + break; + } } - } - return TRUE; + return TRUE; } static void gnc_entry_ledger_move_cursor (VirtualLocation *p_new_virt_loc, - gpointer user_data) + gpointer user_data) { - GncEntryLedger *ledger = user_data; - VirtualLocation new_virt_loc = *p_new_virt_loc; - GncEntry *new_entry; - GncEntry *old_entry; - gboolean saved; + GncEntryLedger *ledger = user_data; + VirtualLocation new_virt_loc = *p_new_virt_loc; + GncEntry *new_entry; + GncEntry *old_entry; + gboolean saved; - if (!ledger) return; + if (!ledger) return; - old_entry = gnc_entry_ledger_get_current_entry (ledger); - new_entry = gnc_entry_ledger_get_entry (ledger, new_virt_loc.vcell_loc); + old_entry = gnc_entry_ledger_get_current_entry (ledger); + new_entry = gnc_entry_ledger_get_entry (ledger, new_virt_loc.vcell_loc); - gnc_suspend_gui_refresh (); - saved = gnc_entry_ledger_save (ledger, old_entry != new_entry); - gnc_resume_gui_refresh (); + gnc_suspend_gui_refresh (); + saved = gnc_entry_ledger_save (ledger, old_entry != new_entry); + gnc_resume_gui_refresh (); - /* redrawing can muck everything up */ - if (saved) { - VirtualCellLocation vcell_loc; + /* redrawing can muck everything up */ + if (saved) + { + VirtualCellLocation vcell_loc; - /* redraw */ - gnc_entry_ledger_display_refresh (ledger); + /* redraw */ + gnc_entry_ledger_display_refresh (ledger); - if (ledger->traverse_to_new) - new_entry = gnc_entry_ledger_get_blank_entry (ledger); + if (ledger->traverse_to_new) + new_entry = gnc_entry_ledger_get_blank_entry (ledger); - /* if the entry we were going to is still in the register, - * then it may have moved. Find out where it is now. */ - if (gnc_entry_ledger_find_entry (ledger, new_entry, &vcell_loc)) { - VirtualCell *vcell; + /* if the entry we were going to is still in the register, + * then it may have moved. Find out where it is now. */ + if (gnc_entry_ledger_find_entry (ledger, new_entry, &vcell_loc)) + { + VirtualCell *vcell; - vcell = gnc_table_get_virtual_cell (ledger->table, vcell_loc); - new_virt_loc.vcell_loc = vcell_loc; - } else - new_virt_loc.vcell_loc = ledger->table->current_cursor_loc.vcell_loc; - } + vcell = gnc_table_get_virtual_cell (ledger->table, vcell_loc); + new_virt_loc.vcell_loc = vcell_loc; + } + else + new_virt_loc.vcell_loc = ledger->table->current_cursor_loc.vcell_loc; + } - gnc_table_find_close_valid_cell (ledger->table, &new_virt_loc, FALSE); + gnc_table_find_close_valid_cell (ledger->table, &new_virt_loc, FALSE); - *p_new_virt_loc = new_virt_loc; + *p_new_virt_loc = new_virt_loc; } static gboolean gnc_entry_ledger_auto_completion (GncEntryLedger *ledger, - gncTableTraversalDir dir, - VirtualLocation *p_new_virt_loc) + gncTableTraversalDir dir, + VirtualLocation *p_new_virt_loc) { - GncEntry *entry; - GncEntry *blank_entry; + GncEntry *entry; + GncEntry *blank_entry; - blank_entry = gnc_entry_ledger_get_blank_entry (ledger); + blank_entry = gnc_entry_ledger_get_blank_entry (ledger); - /* auto-completion is only triggered by a tab out */ - if (dir != GNC_TABLE_TRAVERSE_RIGHT) - return FALSE; + /* auto-completion is only triggered by a tab out */ + if (dir != GNC_TABLE_TRAVERSE_RIGHT) + return FALSE; - entry = gnc_entry_ledger_get_current_entry (ledger); - if (entry == NULL) - return FALSE; - - switch (ledger->type) { - case GNCENTRY_ORDER_ENTRY: - case GNCENTRY_INVOICE_ENTRY: - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_EXPVOUCHER_ENTRY: - - /* There must be a blank entry */ - if (blank_entry == NULL) - return FALSE; - - /* we must be on the blank entry */ - if (entry != blank_entry) - return FALSE; - - /* XXX: No other autocompletion, yet */ - break; - - default: - break; - } - - return TRUE; -} - -static gboolean gnc_entry_ledger_traverse (VirtualLocation *p_new_virt_loc, - gncTableTraversalDir dir, - gpointer user_data) -{ - GncEntryLedger *ledger = user_data; - GncEntry *entry, *new_entry; - gint response; - VirtualLocation virt_loc; - int changed; - char const *cell_name; - gboolean exact_traversal; - - if (!ledger) return FALSE; - - exact_traversal = (dir == GNC_TABLE_TRAVERSE_POINTER); - - entry = gnc_entry_ledger_get_current_entry (ledger); - if (!entry) - return FALSE; - - /* no changes, make sure we aren't going off the end */ - changed = gnc_table_current_cursor_changed (ledger->table, FALSE); - if (!changed) - return FALSE; - - virt_loc = *p_new_virt_loc; - - cell_name = gnc_table_get_current_cell_name (ledger->table); - - /* See if we are leaving the account field */ - do - { - ComboCell *cell; - char *name; - char *cell_name = NULL; - - switch (ledger->type) { - case GNCENTRY_INVOICE_ENTRY: - case GNCENTRY_INVOICE_VIEWER: - cell_name = ENTRY_IACCT_CELL; - break; - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_BILL_VIEWER: - case GNCENTRY_EXPVOUCHER_ENTRY: - case GNCENTRY_EXPVOUCHER_VIEWER: - cell_name = ENTRY_BACCT_CELL; - break; - default: - g_warning ("Unhandled ledger type"); - break; - } - - if (!cell_name) - break; - - if (!gnc_cell_name_equal (cell_name, cell_name)) - break; - - if (!gnc_table_layout_get_cell_changed (ledger->table->layout, - cell_name, FALSE)) - break; - - cell = (ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, - cell_name); - if (!cell) - break; - - name = cell->cell.value; - if (!name || *name == '\0') - break; - - /* Create the account if necessary. Also checks for a placeholder */ - if (!gnc_entry_ledger_get_account_by_name (ledger, (BasicCell *) cell, - cell->cell.value, - &ledger->full_refresh)) - return TRUE; - - } while (FALSE); - - - /* See if we are leaving the TaxTable field */ - do - { - ComboCell *cell; - GncTaxTable *table; - char *name; - - if (!gnc_cell_name_equal (cell_name, ENTRY_TAXTABLE_CELL)) - break; - - if (!gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_TAXTABLE_CELL, FALSE)) - break; - - cell = (ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, - ENTRY_TAXTABLE_CELL); - if (!cell) - break; - - name = cell->cell.value; - if (!name || *name == '\0') - break; - - table = gncTaxTableLookupByName (ledger->book, cell->cell.value); - if (table) - break; + entry = gnc_entry_ledger_get_current_entry (ledger); + if (entry == NULL) + return FALSE; + switch (ledger->type) { - const char *format = _("The tax table %s does not exist. " - "Would you like to create it?"); - if (!gnc_verify_dialog (ledger->parent, TRUE, format, name)) + case GNCENTRY_ORDER_ENTRY: + case GNCENTRY_INVOICE_ENTRY: + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_EXPVOUCHER_ENTRY: + + /* There must be a blank entry */ + if (blank_entry == NULL) + return FALSE; + + /* we must be on the blank entry */ + if (entry != blank_entry) + return FALSE; + + /* XXX: No other autocompletion, yet */ + break; + + default: break; } - ledger->full_refresh = FALSE; + return TRUE; +} - table = gnc_ui_tax_table_new_from_name (ledger->book, name); - if (!table) - break; - - ledger->full_refresh = TRUE; - - name = (char *)gncTaxTableGetName (table); - gnc_combo_cell_set_value (cell, name); - gnc_basic_cell_set_changed (&cell->cell, TRUE); - - } while (FALSE); - - - /* See if we are tabbing off the end of the very last line - * (i.e. the blank entry) - */ - do - { +static gboolean gnc_entry_ledger_traverse (VirtualLocation *p_new_virt_loc, + gncTableTraversalDir dir, + gpointer user_data) +{ + GncEntryLedger *ledger = user_data; + GncEntry *entry, *new_entry; + gint response; VirtualLocation virt_loc; + int changed; + char const *cell_name; + gboolean exact_traversal; - if (!changed && !ledger->blank_entry_edited) - break; + if (!ledger) return FALSE; - if (dir != GNC_TABLE_TRAVERSE_RIGHT) - break; + exact_traversal = (dir == GNC_TABLE_TRAVERSE_POINTER); - virt_loc = ledger->table->current_cursor_loc; - if (gnc_table_move_vertical_position (ledger->table, &virt_loc, 1)) - break; + entry = gnc_entry_ledger_get_current_entry (ledger); + if (!entry) + return FALSE; - virt_loc = ledger->table->current_cursor_loc; - if (gnc_table_move_tab (ledger->table, &virt_loc, TRUE)) - break; + /* no changes, make sure we aren't going off the end */ + changed = gnc_table_current_cursor_changed (ledger->table, FALSE); + if (!changed) + return FALSE; - *p_new_virt_loc = ledger->table->current_cursor_loc; + virt_loc = *p_new_virt_loc; - /* Yep, we're trying to leave the blank entry -- make sure - * we are allowed to do so by verifying the current cursor. - * If the current cursor is ok, then move on! + cell_name = gnc_table_get_current_cell_name (ledger->table); + + /* See if we are leaving the account field */ + do + { + ComboCell *cell; + char *name; + char *cell_name = NULL; + + switch (ledger->type) + { + case GNCENTRY_INVOICE_ENTRY: + case GNCENTRY_INVOICE_VIEWER: + cell_name = ENTRY_IACCT_CELL; + break; + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_BILL_VIEWER: + case GNCENTRY_EXPVOUCHER_ENTRY: + case GNCENTRY_EXPVOUCHER_VIEWER: + cell_name = ENTRY_BACCT_CELL; + break; + default: + g_warning ("Unhandled ledger type"); + break; + } + + if (!cell_name) + break; + + if (!gnc_cell_name_equal (cell_name, cell_name)) + break; + + if (!gnc_table_layout_get_cell_changed (ledger->table->layout, + cell_name, FALSE)) + break; + + cell = (ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, + cell_name); + if (!cell) + break; + + name = cell->cell.value; + if (!name || *name == '\0') + break; + + /* Create the account if necessary. Also checks for a placeholder */ + if (!gnc_entry_ledger_get_account_by_name (ledger, (BasicCell *) cell, + cell->cell.value, + &ledger->full_refresh)) + return TRUE; + + } + while (FALSE); + + + /* See if we are leaving the TaxTable field */ + do + { + ComboCell *cell; + GncTaxTable *table; + char *name; + + if (!gnc_cell_name_equal (cell_name, ENTRY_TAXTABLE_CELL)) + break; + + if (!gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_TAXTABLE_CELL, FALSE)) + break; + + cell = (ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, + ENTRY_TAXTABLE_CELL); + if (!cell) + break; + + name = cell->cell.value; + if (!name || *name == '\0') + break; + + table = gncTaxTableLookupByName (ledger->book, cell->cell.value); + if (table) + break; + + { + const char *format = _("The tax table %s does not exist. " + "Would you like to create it?"); + if (!gnc_verify_dialog (ledger->parent, TRUE, format, name)) + break; + } + + ledger->full_refresh = FALSE; + + table = gnc_ui_tax_table_new_from_name (ledger->book, name); + if (!table) + break; + + ledger->full_refresh = TRUE; + + name = (char *)gncTaxTableGetName (table); + gnc_combo_cell_set_value (cell, name); + gnc_basic_cell_set_changed (&cell->cell, TRUE); + + } + while (FALSE); + + + /* See if we are tabbing off the end of the very last line + * (i.e. the blank entry) + */ + do + { + VirtualLocation virt_loc; + + if (!changed && !ledger->blank_entry_edited) + break; + + if (dir != GNC_TABLE_TRAVERSE_RIGHT) + break; + + virt_loc = ledger->table->current_cursor_loc; + if (gnc_table_move_vertical_position (ledger->table, &virt_loc, 1)) + break; + + virt_loc = ledger->table->current_cursor_loc; + if (gnc_table_move_tab (ledger->table, &virt_loc, TRUE)) + break; + + *p_new_virt_loc = ledger->table->current_cursor_loc; + + /* Yep, we're trying to leave the blank entry -- make sure + * we are allowed to do so by verifying the current cursor. + * If the current cursor is ok, then move on! + */ + + /* Verify that the cursor is ok. If we can't save the cell, don't move! */ + if (!gnc_entry_ledger_verify_can_save (ledger)) + { + return TRUE; + } + + (p_new_virt_loc->vcell_loc.virt_row)++; + p_new_virt_loc->phys_row_offset = 0; + p_new_virt_loc->phys_col_offset = 0; + + ledger->traverse_to_new = TRUE; + + /* If we're here, we're tabbing off the end of the 'blank entry' */ + return FALSE; + + } + while (FALSE); + + /* Now see if we are changing cursors. If not, we may be able to + * auto-complete. */ + if (!gnc_table_virtual_cell_out_of_bounds (ledger->table, + virt_loc.vcell_loc)) + { + if (gnc_entry_ledger_auto_completion (ledger, dir, p_new_virt_loc)) + return FALSE; + } + + /* Check for going off the end */ + gnc_table_find_close_valid_cell (ledger->table, &virt_loc, exact_traversal); + + /* Same entry, no problem -- we're just moving backwards in the cursor */ + new_entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + if (entry == new_entry) + { + *p_new_virt_loc = virt_loc; + + return FALSE; + } + + /* If we are here, then we are trying to leave the cursor. Make sure + * the cursor we are leaving is valid. If so, ask the user if the + * changes should be recorded. If not, don't go anywhere. */ - /* Verify that the cursor is ok. If we can't save the cell, don't move! */ - if (!gnc_entry_ledger_verify_can_save (ledger)) { - return TRUE; + /* Verify this cursor -- if it's not valid, don't let them move on */ + if (!gnc_entry_ledger_verify_can_save (ledger)) + { + *p_new_virt_loc = ledger->table->current_cursor_loc; + return TRUE; } - (p_new_virt_loc->vcell_loc.virt_row)++; - p_new_virt_loc->phys_row_offset = 0; - p_new_virt_loc->phys_col_offset = 0; + /* + * XXX GNCENTRY_INVOICE_EDIT processing to be added: + * 1) check if the qty field changed. + * 2) if so, check if this entry is part of an order. + * 3) if so, ask if they want to change the entry or + * split the entry into two parts. + */ - ledger->traverse_to_new = TRUE; + /* Ok, we are changing lines and the current entry has + * changed. We only ask them what they want to do in + * limited cases -- usually just let the change go through. + */ + { + GtkWidget *dialog; + const char *title = _("Save the current entry?"); + const char *message = + _("The current entry has been changed. However, this entry is " + "part of an existing order. Would you like to record the change " + "and effectively change your order?"); - /* If we're here, we're tabbing off the end of the 'blank entry' */ - return FALSE; + switch (ledger->type) + { + case GNCENTRY_INVOICE_ENTRY: + if (gncEntryGetOrder (entry) != NULL) + { + dialog = gtk_message_dialog_new(GTK_WINDOW(ledger->parent), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_NONE, + "%s", title); + gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), + "%s", message); + gtk_dialog_add_buttons(GTK_DIALOG(dialog), + _("_Don't Record"), GTK_RESPONSE_REJECT, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + _("_Record"), GTK_RESPONSE_ACCEPT, + NULL); + response = gnc_dialog_run(GTK_DIALOG(dialog), "invoice_entry_changed"); + gtk_widget_destroy(dialog); + break; + } - } while (FALSE); - - /* Now see if we are changing cursors. If not, we may be able to - * auto-complete. */ - if (!gnc_table_virtual_cell_out_of_bounds (ledger->table, - virt_loc.vcell_loc)) - { - if (gnc_entry_ledger_auto_completion (ledger, dir, p_new_virt_loc)) - return FALSE; - } - - /* Check for going off the end */ - gnc_table_find_close_valid_cell (ledger->table, &virt_loc, exact_traversal); - - /* Same entry, no problem -- we're just moving backwards in the cursor */ - new_entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - if (entry == new_entry) - { - *p_new_virt_loc = virt_loc; - - return FALSE; - } - - /* If we are here, then we are trying to leave the cursor. Make sure - * the cursor we are leaving is valid. If so, ask the user if the - * changes should be recorded. If not, don't go anywhere. - */ - - /* Verify this cursor -- if it's not valid, don't let them move on */ - if (!gnc_entry_ledger_verify_can_save (ledger)) { - *p_new_virt_loc = ledger->table->current_cursor_loc; - return TRUE; - } - - /* - * XXX GNCENTRY_INVOICE_EDIT processing to be added: - * 1) check if the qty field changed. - * 2) if so, check if this entry is part of an order. - * 3) if so, ask if they want to change the entry or - * split the entry into two parts. - */ - - /* Ok, we are changing lines and the current entry has - * changed. We only ask them what they want to do in - * limited cases -- usually just let the change go through. - */ - { - GtkWidget *dialog; - const char *title = _("Save the current entry?"); - const char *message = - _("The current entry has been changed. However, this entry is " - "part of an existing order. Would you like to record the change " - "and effectively change your order?"); - - switch (ledger->type) { - case GNCENTRY_INVOICE_ENTRY: - if (gncEntryGetOrder (entry) != NULL) { - dialog = gtk_message_dialog_new(GTK_WINDOW(ledger->parent), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_QUESTION, - GTK_BUTTONS_NONE, - "%s", title); - gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), - "%s", message); - gtk_dialog_add_buttons(GTK_DIALOG(dialog), - _("_Don't Record"), GTK_RESPONSE_REJECT, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - _("_Record"), GTK_RESPONSE_ACCEPT, - NULL); - response = gnc_dialog_run(GTK_DIALOG(dialog), "invoice_entry_changed"); - gtk_widget_destroy(dialog); - break; - } - - /* FALLTHROUGH */ - default: - response = GTK_RESPONSE_ACCEPT; - break; + /* FALLTHROUGH */ + default: + response = GTK_RESPONSE_ACCEPT; + break; + } } - } - switch (response) - { + switch (response) + { case GTK_RESPONSE_ACCEPT: - break; + break; case GTK_RESPONSE_REJECT: - { + { VirtualCellLocation vcell_loc; - GncEntry *new_entry; + GncEntry *new_entry; - new_entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + new_entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - gnc_entry_ledger_cancel_cursor_changes (ledger); + gnc_entry_ledger_cancel_cursor_changes (ledger); - if (gnc_entry_ledger_find_entry (ledger, new_entry, &vcell_loc)) - virt_loc.vcell_loc = vcell_loc; + if (gnc_entry_ledger_find_entry (ledger, new_entry, &vcell_loc)) + virt_loc.vcell_loc = vcell_loc; gnc_table_find_close_valid_cell (ledger->table, &virt_loc, exact_traversal); *p_new_virt_loc = virt_loc; - } + } - break; + break; case GTK_RESPONSE_CANCEL: default: - return TRUE; - } + return TRUE; + } - return FALSE; + return FALSE; } TableControl * gnc_entry_ledger_control_new (void) { - TableControl * control; + TableControl * control; - control = gnc_table_control_new (); - control->move_cursor = gnc_entry_ledger_move_cursor; - control->traverse = gnc_entry_ledger_traverse; + control = gnc_table_control_new (); + control->move_cursor = gnc_entry_ledger_move_cursor; + control->traverse = gnc_entry_ledger_traverse; - return control; + return control; } void gnc_entry_ledger_cancel_cursor_changes (GncEntryLedger *ledger) { - VirtualLocation virt_loc; + VirtualLocation virt_loc; - if (ledger == NULL) - return; + if (ledger == NULL) + return; - virt_loc = ledger->table->current_cursor_loc; + virt_loc = ledger->table->current_cursor_loc; - if (!gnc_table_current_cursor_changed (ledger->table, FALSE)) - return; + if (!gnc_table_current_cursor_changed (ledger->table, FALSE)) + return; - /* When cancelling edits, reload the cursor from the entry. */ - gnc_table_clear_current_cursor_changes (ledger->table); + /* When cancelling edits, reload the cursor from the entry. */ + gnc_table_clear_current_cursor_changes (ledger->table); - if (gnc_table_find_close_valid_cell (ledger->table, &virt_loc, FALSE)) - gnc_table_move_cursor_gui (ledger->table, virt_loc); + if (gnc_table_find_close_valid_cell (ledger->table, &virt_loc, FALSE)) + gnc_table_move_cursor_gui (ledger->table, virt_loc); - gnc_table_refresh_gui (ledger->table, TRUE); + gnc_table_refresh_gui (ledger->table, TRUE); } static gboolean gnc_entry_ledger_check_close_internal (GtkWidget *parent, - GncEntryLedger *ledger, - gboolean dontask) + GncEntryLedger *ledger, + gboolean dontask) { - const char *message = _("The current entry has been changed. " - "Would you like to save it?"); - VirtualLocation virt_loc; - - virt_loc = ledger->table->current_cursor_loc; - - if (gnc_entry_ledger_traverse (&virt_loc, GNC_TABLE_TRAVERSE_POINTER, - ledger)) - return FALSE; + const char *message = _("The current entry has been changed. " + "Would you like to save it?"); + VirtualLocation virt_loc; - if (!gnc_entry_ledger_verify_can_save (ledger)) - return FALSE; + virt_loc = ledger->table->current_cursor_loc; - if (dontask || gnc_verify_dialog (parent, TRUE, "%s", message)) - gnc_entry_ledger_save (ledger, TRUE); - else - gnc_entry_ledger_cancel_cursor_changes (ledger); + if (gnc_entry_ledger_traverse (&virt_loc, GNC_TABLE_TRAVERSE_POINTER, + ledger)) + return FALSE; - return TRUE; + if (!gnc_entry_ledger_verify_can_save (ledger)) + return FALSE; + + if (dontask || gnc_verify_dialog (parent, TRUE, "%s", message)) + gnc_entry_ledger_save (ledger, TRUE); + else + gnc_entry_ledger_cancel_cursor_changes (ledger); + + return TRUE; } gboolean gnc_entry_ledger_commit_entry (GncEntryLedger *ledger) { - if (!ledger) return TRUE; + if (!ledger) return TRUE; - return gnc_entry_ledger_check_close_internal (NULL, ledger, TRUE); + return gnc_entry_ledger_check_close_internal (NULL, ledger, TRUE); } gboolean gnc_entry_ledger_check_close (GtkWidget *parent, GncEntryLedger *ledger) { - if (!ledger) return TRUE; + if (!ledger) return TRUE; - if (gnc_entry_ledger_changed (ledger)) { - gboolean dontask = FALSE; + if (gnc_entry_ledger_changed (ledger)) + { + gboolean dontask = FALSE; - if (ledger->type == GNCENTRY_INVOICE_ENTRY) { - gboolean inv_value; - gboolean only_inv_changed = FALSE; + if (ledger->type == GNCENTRY_INVOICE_ENTRY) + { + gboolean inv_value; + gboolean only_inv_changed = FALSE; - if (gnc_table_current_cursor_changed (ledger->table, FALSE) == 1 && - gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_INV_CELL, TRUE)) - only_inv_changed = TRUE; + if (gnc_table_current_cursor_changed (ledger->table, FALSE) == 1 && + gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_INV_CELL, TRUE)) + only_inv_changed = TRUE; + + inv_value = gnc_entry_ledger_get_checkmark (ledger, ENTRY_INV_CELL); + + if (inv_value && only_inv_changed) + { + /* If the only change is that the 'inv' entry was clicked + * "on", then just accept the change it without question. + */ + dontask = TRUE; + } + } + + return gnc_entry_ledger_check_close_internal (parent, ledger, dontask); - inv_value = gnc_entry_ledger_get_checkmark (ledger, ENTRY_INV_CELL); - - if (inv_value && only_inv_changed) { - /* If the only change is that the 'inv' entry was clicked - * "on", then just accept the change it without question. - */ - dontask = TRUE; - } } - - return gnc_entry_ledger_check_close_internal (parent, ledger, dontask); - - } - return TRUE; + return TRUE; } diff --git a/src/business/business-ledger/gncEntryLedgerDisplay.c b/src/business/business-ledger/gncEntryLedgerDisplay.c index f1a88b6ab3..3dadb9e5bd 100644 --- a/src/business/business-ledger/gncEntryLedgerDisplay.c +++ b/src/business/business-ledger/gncEntryLedgerDisplay.c @@ -40,162 +40,168 @@ static GList * gnc_entry_ledger_get_entries (GncEntryLedger *ledger) { - if (ledger->query) - return gncQueryRun (ledger->query); + if (ledger->query) + return gncQueryRun (ledger->query); - // g_warning ("No query to run?"); - return NULL; + // g_warning ("No query to run?"); + return NULL; } static void gnc_entry_ledger_refresh_internal (GncEntryLedger *ledger, GList *entries) { - if (!ledger || ledger->loading) - return; + if (!ledger || ledger->loading) + return; - /* If not full refresh ok, just load the xfer cells */ - if (!ledger->full_refresh) { - gnc_entry_ledger_load_xfer_cells (ledger); - return; - } + /* If not full refresh ok, just load the xfer cells */ + if (!ledger->full_refresh) + { + gnc_entry_ledger_load_xfer_cells (ledger); + return; + } - /* Viewers must always have at least one entry! */ - if ((ledger->type == GNCENTRY_ORDER_VIEWER || - ledger->type == GNCENTRY_INVOICE_VIEWER || - ledger->type == GNCENTRY_BILL_VIEWER || - ledger->type == GNCENTRY_EXPVOUCHER_VIEWER) && !entries) - return; + /* Viewers must always have at least one entry! */ + if ((ledger->type == GNCENTRY_ORDER_VIEWER || + ledger->type == GNCENTRY_INVOICE_VIEWER || + ledger->type == GNCENTRY_BILL_VIEWER || + ledger->type == GNCENTRY_EXPVOUCHER_VIEWER) && !entries) + return; - ledger->loading = TRUE; - gnc_entry_ledger_load (ledger, entries); - ledger->loading = FALSE; + ledger->loading = TRUE; + gnc_entry_ledger_load (ledger, entries); + ledger->loading = FALSE; } static void gnc_entry_ledger_gconf_changed (GConfEntry *entry, gpointer user_data) { - GncEntryLedger *ledger = user_data; + GncEntryLedger *ledger = user_data; - g_return_if_fail (ledger && entry && entry->key); + g_return_if_fail (ledger && entry && entry->key); - if (g_str_has_suffix (entry->key, KEY_ACCOUNT_SEPARATOR)) { - gnc_entry_ledger_display_refresh (ledger); - } else { - g_warning ("gnc_entry_gconf_changed: Unknown gconf key %s", entry->key); - } + if (g_str_has_suffix (entry->key, KEY_ACCOUNT_SEPARATOR)) + { + gnc_entry_ledger_display_refresh (ledger); + } + else + { + g_warning ("gnc_entry_gconf_changed: Unknown gconf key %s", entry->key); + } } static void gnc_entry_ledger_set_watches (GncEntryLedger *ledger, GList *entries) { - GList *node; - GNCIdType type = NULL; + GList *node; + GNCIdType type = NULL; - gnc_gui_component_clear_watches (ledger->component_id); + gnc_gui_component_clear_watches (ledger->component_id); - switch (ledger->type) { - case GNCENTRY_ORDER_ENTRY: - case GNCENTRY_ORDER_VIEWER: - type = GNC_ORDER_MODULE_NAME; - break; + switch (ledger->type) + { + case GNCENTRY_ORDER_ENTRY: + case GNCENTRY_ORDER_VIEWER: + type = GNC_ORDER_MODULE_NAME; + break; - case GNCENTRY_INVOICE_ENTRY: - /* Watch the invoice owner to see when items get added via orders */ - gnc_gui_component_watch_entity (ledger->component_id, - gncOwnerGetGUID - (gncInvoiceGetOwner (ledger->invoice)), - QOF_EVENT_MODIFY); - case GNCENTRY_INVOICE_VIEWER: - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_BILL_VIEWER: - case GNCENTRY_EXPVOUCHER_ENTRY: - case GNCENTRY_EXPVOUCHER_VIEWER: - type = GNC_INVOICE_MODULE_NAME; - break; + case GNCENTRY_INVOICE_ENTRY: + /* Watch the invoice owner to see when items get added via orders */ + gnc_gui_component_watch_entity (ledger->component_id, + gncOwnerGetGUID + (gncInvoiceGetOwner (ledger->invoice)), + QOF_EVENT_MODIFY); + case GNCENTRY_INVOICE_VIEWER: + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_BILL_VIEWER: + case GNCENTRY_EXPVOUCHER_ENTRY: + case GNCENTRY_EXPVOUCHER_VIEWER: + type = GNC_INVOICE_MODULE_NAME; + break; - default: - g_warning ("Invalid ledger type"); - break; - } + default: + g_warning ("Invalid ledger type"); + break; + } - gnc_gui_component_watch_entity_type (ledger->component_id, - type, - QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); + gnc_gui_component_watch_entity_type (ledger->component_id, + type, + QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); - /* To make sure the xfer cell is up to date */ - gnc_gui_component_watch_entity_type (ledger->component_id, - GNC_ID_ACCOUNT, - QOF_EVENT_MODIFY | QOF_EVENT_DESTROY - | GNC_EVENT_ITEM_CHANGED); + /* To make sure the xfer cell is up to date */ + gnc_gui_component_watch_entity_type (ledger->component_id, + GNC_ID_ACCOUNT, + QOF_EVENT_MODIFY | QOF_EVENT_DESTROY + | GNC_EVENT_ITEM_CHANGED); - /* To make sure the taxtable cell is up to date */ - gnc_gui_component_watch_entity_type (ledger->component_id, - GNC_TAXTABLE_MODULE_NAME, - QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); + /* To make sure the taxtable cell is up to date */ + gnc_gui_component_watch_entity_type (ledger->component_id, + GNC_TAXTABLE_MODULE_NAME, + QOF_EVENT_MODIFY | QOF_EVENT_DESTROY); - /* For expense vouchers, watch the employee and refresh if it's changed */ - if (ledger->type == GNCENTRY_EXPVOUCHER_ENTRY) { - GncOwner *owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (ledger->invoice)); - GncEmployee *employee = gncOwnerGetEmployee (owner); + /* For expense vouchers, watch the employee and refresh if it's changed */ + if (ledger->type == GNCENTRY_EXPVOUCHER_ENTRY) + { + GncOwner *owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (ledger->invoice)); + GncEmployee *employee = gncOwnerGetEmployee (owner); - if (employee) - gnc_gui_component_watch_entity (ledger->component_id, - gncEmployeeGetGUID (employee), - QOF_EVENT_MODIFY); - } + if (employee) + gnc_gui_component_watch_entity (ledger->component_id, + gncEmployeeGetGUID (employee), + QOF_EVENT_MODIFY); + } - for (node = entries; node; node = node->next) - { - GncEntry *entry = node->data; - gnc_gui_component_watch_entity (ledger->component_id, - gncEntryGetGUID (entry), - QOF_EVENT_MODIFY); - } + for (node = entries; node; node = node->next) + { + GncEntry *entry = node->data; + gnc_gui_component_watch_entity (ledger->component_id, + gncEntryGetGUID (entry), + QOF_EVENT_MODIFY); + } } static void refresh_handler (GHashTable *changes, gpointer user_data) { - GncEntryLedger *ledger = user_data; + GncEntryLedger *ledger = user_data; - gnc_entry_ledger_display_refresh (ledger); + gnc_entry_ledger_display_refresh (ledger); } void gnc_entry_ledger_display_init (GncEntryLedger *ledger) { - if (!ledger) return; + if (!ledger) return; - ledger->full_refresh = TRUE; - ledger->component_id = gnc_register_gui_component (ENTRYLEDGER_CLASS, - refresh_handler, - NULL, ledger); - gnc_gconf_general_register_cb(KEY_ACCOUNT_SEPARATOR, - gnc_entry_ledger_gconf_changed, ledger); + ledger->full_refresh = TRUE; + ledger->component_id = gnc_register_gui_component (ENTRYLEDGER_CLASS, + refresh_handler, + NULL, ledger); + gnc_gconf_general_register_cb(KEY_ACCOUNT_SEPARATOR, + gnc_entry_ledger_gconf_changed, ledger); - gnc_entry_ledger_display_refresh (ledger); + gnc_entry_ledger_display_refresh (ledger); } void gnc_entry_ledger_display_fini (GncEntryLedger *ledger) { - if (!ledger) return; + if (!ledger) return; - gnc_unregister_gui_component (ledger->component_id); - gnc_gconf_general_remove_cb(KEY_ACCOUNT_SEPARATOR, - gnc_entry_ledger_gconf_changed, ledger); + gnc_unregister_gui_component (ledger->component_id); + gnc_gconf_general_remove_cb(KEY_ACCOUNT_SEPARATOR, + gnc_entry_ledger_gconf_changed, ledger); } void gnc_entry_ledger_display_refresh (GncEntryLedger *ledger) { - GList *entries; + GList *entries; - if (!ledger || ledger->loading) return; + if (!ledger || ledger->loading) return; - entries = gnc_entry_ledger_get_entries (ledger); + entries = gnc_entry_ledger_get_entries (ledger); - gnc_entry_ledger_set_watches (ledger, entries); + gnc_entry_ledger_set_watches (ledger, entries); - gnc_entry_ledger_refresh_internal (ledger, entries); + gnc_entry_ledger_refresh_internal (ledger, entries); } diff --git a/src/business/business-ledger/gncEntryLedgerLayout.c b/src/business/business-ledger/gncEntryLedgerLayout.c index cbeba5da70..e07312c98a 100644 --- a/src/business/business-ledger/gncEntryLedgerLayout.c +++ b/src/business/business-ledger/gncEntryLedgerLayout.c @@ -38,203 +38,243 @@ gnc_register_add_cell (TableLayout *layout, gboolean expandable, gboolean span) { - BasicCell *cell; + BasicCell *cell; - g_return_if_fail (layout != NULL); - g_return_if_fail (cell_type_name != NULL); + g_return_if_fail (layout != NULL); + g_return_if_fail (cell_type_name != NULL); - cell = gnc_register_make_cell (cell_type_name); + cell = gnc_register_make_cell (cell_type_name); - gnc_basic_cell_set_name (cell, cell_name); - gnc_basic_cell_set_sample_text (cell, sample_text); - gnc_basic_cell_set_alignment (cell, alignment); - gnc_basic_cell_set_expandable (cell, expandable); - gnc_basic_cell_set_span (cell, span); + gnc_basic_cell_set_name (cell, cell_name); + gnc_basic_cell_set_sample_text (cell, sample_text); + gnc_basic_cell_set_alignment (cell, alignment); + gnc_basic_cell_set_expandable (cell, expandable); + gnc_basic_cell_set_span (cell, span); - gnc_table_layout_add_cell (layout, cell); + gnc_table_layout_add_cell (layout, cell); } static void gnc_entry_ledger_layout_add_cells (GncEntryLedger *ledger, - TableLayout *layout) + TableLayout *layout) { - struct cell_list { - const char *cell_name; - const char *cell_type_name; - const char *sample_text; - CellAlignment alignment; - gboolean expandable; - gboolean span; - } cells[] = { - /* Translators: The 'sample:' items are strings which are not - displayed, but only used to estimate widths. Please only - translate the portion after the ':' and leave the rest - ("sample:") as is. */ - { ENTRY_INV_CELL, CHECKBOX_CELL_TYPE_NAME, N_("sample:X")+7, - CELL_ALIGN_LEFT, FALSE, FALSE }, - { ENTRY_DATE_CELL, DATE_CELL_TYPE_NAME, N_("sample:12/12/2000")+7, - CELL_ALIGN_RIGHT, FALSE, FALSE }, - { ENTRY_DESC_CELL, QUICKFILL_CELL_TYPE_NAME, - N_("sample:Description of an Entry")+7, CELL_ALIGN_LEFT, TRUE, FALSE }, - { ENTRY_ACTN_CELL, COMBO_CELL_TYPE_NAME, - N_("sample:Action")+7, CELL_ALIGN_RIGHT, - FALSE, FALSE }, - { ENTRY_QTY_CELL, PRICE_CELL_TYPE_NAME, N_("sample:9,999.00") + 7, - CELL_ALIGN_RIGHT, FALSE, FALSE }, - { ENTRY_PRIC_CELL, PRICE_CELL_TYPE_NAME, N_("sample:999,999.00") + 7, - CELL_ALIGN_RIGHT, FALSE, FALSE }, - { ENTRY_DISC_CELL, PRICE_CELL_TYPE_NAME, N_("sample:9,999.00") + 7, - CELL_ALIGN_RIGHT, FALSE, FALSE }, - /* xgettext:no-c-format */ - { ENTRY_DISTYPE_CELL, RECN_CELL_TYPE_NAME, N_("sample(DT):+%")+11, - CELL_ALIGN_LEFT, FALSE, FALSE }, - /* xgettext:no-c-format */ - { ENTRY_DISHOW_CELL, RECN_CELL_TYPE_NAME, N_("sample(DH):+%")+11, - CELL_ALIGN_LEFT, FALSE, FALSE }, - { ENTRY_IACCT_CELL, COMBO_CELL_TYPE_NAME, - N_("sample:Expenses:Automobile:Gasoline") + 7, - CELL_ALIGN_RIGHT, FALSE, FALSE }, - { ENTRY_BACCT_CELL, COMBO_CELL_TYPE_NAME, - N_("sample:Expenses:Automobile:Gasoline") + 7, - CELL_ALIGN_RIGHT, FALSE, FALSE }, - { ENTRY_TAXABLE_CELL, CHECKBOX_CELL_TYPE_NAME, N_("sample:T?")+7, - CELL_ALIGN_LEFT, FALSE, FALSE }, - { ENTRY_TAXINCLUDED_CELL, CHECKBOX_CELL_TYPE_NAME, N_("sample:TI")+7, - CELL_ALIGN_LEFT, FALSE, FALSE }, - { ENTRY_TAXTABLE_CELL, COMBO_CELL_TYPE_NAME, N_("sample:Tax Table 1")+7, - CELL_ALIGN_RIGHT, FALSE, FALSE }, - { ENTRY_VALUE_CELL, PRICE_CELL_TYPE_NAME, N_("sample:999,999.00")+7, - CELL_ALIGN_RIGHT, FALSE, FALSE }, - { ENTRY_TAXVAL_CELL, PRICE_CELL_TYPE_NAME, N_("sample:999.00")+7, - CELL_ALIGN_RIGHT, FALSE, FALSE }, - { ENTRY_BILLABLE_CELL, CHECKBOX_CELL_TYPE_NAME, N_("sample:BI")+7, - CELL_ALIGN_LEFT, FALSE, FALSE }, - { ENTRY_PAYMENT_CELL, COMBO_CELL_TYPE_NAME, N_("sample:Payment")+7, - CELL_ALIGN_LEFT, FALSE, FALSE } - }; - unsigned int i; + struct cell_list + { + const char *cell_name; + const char *cell_type_name; + const char *sample_text; + CellAlignment alignment; + gboolean expandable; + gboolean span; + } cells[] = + { + /* Translators: The 'sample:' items are strings which are not + displayed, but only used to estimate widths. Please only + translate the portion after the ':' and leave the rest + ("sample:") as is. */ + { + ENTRY_INV_CELL, CHECKBOX_CELL_TYPE_NAME, N_("sample:X") + 7, + CELL_ALIGN_LEFT, FALSE, FALSE + }, + { + ENTRY_DATE_CELL, DATE_CELL_TYPE_NAME, N_("sample:12/12/2000") + 7, + CELL_ALIGN_RIGHT, FALSE, FALSE + }, + { + ENTRY_DESC_CELL, QUICKFILL_CELL_TYPE_NAME, + N_("sample:Description of an Entry") + 7, CELL_ALIGN_LEFT, TRUE, FALSE + }, + { + ENTRY_ACTN_CELL, COMBO_CELL_TYPE_NAME, + N_("sample:Action") + 7, CELL_ALIGN_RIGHT, + FALSE, FALSE + }, + { + ENTRY_QTY_CELL, PRICE_CELL_TYPE_NAME, N_("sample:9,999.00") + 7, + CELL_ALIGN_RIGHT, FALSE, FALSE + }, + { + ENTRY_PRIC_CELL, PRICE_CELL_TYPE_NAME, N_("sample:999,999.00") + 7, + CELL_ALIGN_RIGHT, FALSE, FALSE + }, + { + ENTRY_DISC_CELL, PRICE_CELL_TYPE_NAME, N_("sample:9,999.00") + 7, + CELL_ALIGN_RIGHT, FALSE, FALSE + }, + /* xgettext:no-c-format */ + { + ENTRY_DISTYPE_CELL, RECN_CELL_TYPE_NAME, N_("sample(DT):+%") + 11, + CELL_ALIGN_LEFT, FALSE, FALSE + }, + /* xgettext:no-c-format */ + { + ENTRY_DISHOW_CELL, RECN_CELL_TYPE_NAME, N_("sample(DH):+%") + 11, + CELL_ALIGN_LEFT, FALSE, FALSE + }, + { + ENTRY_IACCT_CELL, COMBO_CELL_TYPE_NAME, + N_("sample:Expenses:Automobile:Gasoline") + 7, + CELL_ALIGN_RIGHT, FALSE, FALSE + }, + { + ENTRY_BACCT_CELL, COMBO_CELL_TYPE_NAME, + N_("sample:Expenses:Automobile:Gasoline") + 7, + CELL_ALIGN_RIGHT, FALSE, FALSE + }, + { + ENTRY_TAXABLE_CELL, CHECKBOX_CELL_TYPE_NAME, N_("sample:T?") + 7, + CELL_ALIGN_LEFT, FALSE, FALSE + }, + { + ENTRY_TAXINCLUDED_CELL, CHECKBOX_CELL_TYPE_NAME, N_("sample:TI") + 7, + CELL_ALIGN_LEFT, FALSE, FALSE + }, + { + ENTRY_TAXTABLE_CELL, COMBO_CELL_TYPE_NAME, N_("sample:Tax Table 1") + 7, + CELL_ALIGN_RIGHT, FALSE, FALSE + }, + { + ENTRY_VALUE_CELL, PRICE_CELL_TYPE_NAME, N_("sample:999,999.00") + 7, + CELL_ALIGN_RIGHT, FALSE, FALSE + }, + { + ENTRY_TAXVAL_CELL, PRICE_CELL_TYPE_NAME, N_("sample:999.00") + 7, + CELL_ALIGN_RIGHT, FALSE, FALSE + }, + { + ENTRY_BILLABLE_CELL, CHECKBOX_CELL_TYPE_NAME, N_("sample:BI") + 7, + CELL_ALIGN_LEFT, FALSE, FALSE + }, + { + ENTRY_PAYMENT_CELL, COMBO_CELL_TYPE_NAME, N_("sample:Payment") + 7, + CELL_ALIGN_LEFT, FALSE, FALSE + } + }; + unsigned int i; - for (i = 0; i < (sizeof(cells)/sizeof(*cells)); i++) - gnc_register_add_cell (layout, cells[i].cell_name, cells[i].cell_type_name, - cells[i].sample_text, cells[i].alignment, - cells[i].expandable, cells[i].span); + for (i = 0; i < (sizeof(cells) / sizeof(*cells)); i++) + gnc_register_add_cell (layout, cells[i].cell_name, cells[i].cell_type_name, + cells[i].sample_text, cells[i].alignment, + cells[i].expandable, cells[i].span); } static void gnc_entry_ledger_layout_add_cursors (GncEntryLedger *ledger, - TableLayout *layout) + TableLayout *layout) { - CellBlock *cursor; - int num_cols; + CellBlock *cursor; + int num_cols; - switch (ledger->type) { - case GNCENTRY_ORDER_ENTRY: - case GNCENTRY_ORDER_VIEWER: - case GNCENTRY_INVOICE_ENTRY: - case GNCENTRY_INVOICE_VIEWER: - num_cols = 15; - break; - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_BILL_VIEWER: - num_cols = 12; - break; - case GNCENTRY_EXPVOUCHER_ENTRY: - case GNCENTRY_EXPVOUCHER_VIEWER: - num_cols = 10; - break; - default: - g_assert (FALSE); - return; - } + switch (ledger->type) + { + case GNCENTRY_ORDER_ENTRY: + case GNCENTRY_ORDER_VIEWER: + case GNCENTRY_INVOICE_ENTRY: + case GNCENTRY_INVOICE_VIEWER: + num_cols = 15; + break; + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_BILL_VIEWER: + num_cols = 12; + break; + case GNCENTRY_EXPVOUCHER_ENTRY: + case GNCENTRY_EXPVOUCHER_VIEWER: + num_cols = 10; + break; + default: + g_assert (FALSE); + return; + } - cursor = gnc_cellblock_new (1, num_cols, CURSOR_HEADER); - gnc_table_layout_add_cursor (layout, cursor); + cursor = gnc_cellblock_new (1, num_cols, CURSOR_HEADER); + gnc_table_layout_add_cursor (layout, cursor); - cursor = gnc_cellblock_new (1, num_cols, "cursor"); - gnc_table_layout_add_cursor (layout, cursor); - gnc_table_layout_set_primary_cursor (layout, cursor); + cursor = gnc_cellblock_new (1, num_cols, "cursor"); + gnc_table_layout_add_cursor (layout, cursor); + gnc_table_layout_set_primary_cursor (layout, cursor); } static void gnc_entry_ledger_set_cells (GncEntryLedger *ledger, - TableLayout *layout) + TableLayout *layout) { - CellBlock *curs; + CellBlock *curs; - switch (ledger->type) { - case GNCENTRY_ORDER_ENTRY: - case GNCENTRY_ORDER_VIEWER: - case GNCENTRY_INVOICE_ENTRY: - case GNCENTRY_INVOICE_VIEWER: + switch (ledger->type) + { + case GNCENTRY_ORDER_ENTRY: + case GNCENTRY_ORDER_VIEWER: + case GNCENTRY_INVOICE_ENTRY: + case GNCENTRY_INVOICE_VIEWER: - curs = gnc_table_layout_get_cursor (layout, "cursor"); - gnc_table_layout_set_cell (layout, curs, ENTRY_DATE_CELL, 0, 0); - gnc_table_layout_set_cell (layout, curs, ENTRY_INV_CELL, 0, 1); - gnc_table_layout_set_cell (layout, curs, ENTRY_DESC_CELL, 0, 2); - gnc_table_layout_set_cell (layout, curs, ENTRY_ACTN_CELL, 0, 3); - gnc_table_layout_set_cell (layout, curs, ENTRY_IACCT_CELL, 0, 4); - gnc_table_layout_set_cell (layout, curs, ENTRY_QTY_CELL, 0, 5); - gnc_table_layout_set_cell (layout, curs, ENTRY_PRIC_CELL, 0, 6); - gnc_table_layout_set_cell (layout, curs, ENTRY_DISTYPE_CELL, 0, 7); - gnc_table_layout_set_cell (layout, curs, ENTRY_DISHOW_CELL, 0, 8); - gnc_table_layout_set_cell (layout, curs, ENTRY_DISC_CELL, 0, 9); - gnc_table_layout_set_cell (layout, curs, ENTRY_TAXABLE_CELL, 0, 10); - gnc_table_layout_set_cell (layout, curs, ENTRY_TAXINCLUDED_CELL, 0, 11); - gnc_table_layout_set_cell (layout, curs, ENTRY_TAXTABLE_CELL, 0, 12); - gnc_table_layout_set_cell (layout, curs, ENTRY_VALUE_CELL, 0, 13); - gnc_table_layout_set_cell (layout, curs, ENTRY_TAXVAL_CELL, 0, 14); + curs = gnc_table_layout_get_cursor (layout, "cursor"); + gnc_table_layout_set_cell (layout, curs, ENTRY_DATE_CELL, 0, 0); + gnc_table_layout_set_cell (layout, curs, ENTRY_INV_CELL, 0, 1); + gnc_table_layout_set_cell (layout, curs, ENTRY_DESC_CELL, 0, 2); + gnc_table_layout_set_cell (layout, curs, ENTRY_ACTN_CELL, 0, 3); + gnc_table_layout_set_cell (layout, curs, ENTRY_IACCT_CELL, 0, 4); + gnc_table_layout_set_cell (layout, curs, ENTRY_QTY_CELL, 0, 5); + gnc_table_layout_set_cell (layout, curs, ENTRY_PRIC_CELL, 0, 6); + gnc_table_layout_set_cell (layout, curs, ENTRY_DISTYPE_CELL, 0, 7); + gnc_table_layout_set_cell (layout, curs, ENTRY_DISHOW_CELL, 0, 8); + gnc_table_layout_set_cell (layout, curs, ENTRY_DISC_CELL, 0, 9); + gnc_table_layout_set_cell (layout, curs, ENTRY_TAXABLE_CELL, 0, 10); + gnc_table_layout_set_cell (layout, curs, ENTRY_TAXINCLUDED_CELL, 0, 11); + gnc_table_layout_set_cell (layout, curs, ENTRY_TAXTABLE_CELL, 0, 12); + gnc_table_layout_set_cell (layout, curs, ENTRY_VALUE_CELL, 0, 13); + gnc_table_layout_set_cell (layout, curs, ENTRY_TAXVAL_CELL, 0, 14); - break; + break; - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_BILL_VIEWER: + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_BILL_VIEWER: - curs = gnc_table_layout_get_cursor (layout, "cursor"); - gnc_table_layout_set_cell (layout, curs, ENTRY_DATE_CELL, 0, 0); - gnc_table_layout_set_cell (layout, curs, ENTRY_INV_CELL, 0, 1); - gnc_table_layout_set_cell (layout, curs, ENTRY_DESC_CELL, 0, 2); - gnc_table_layout_set_cell (layout, curs, ENTRY_ACTN_CELL, 0, 3); - gnc_table_layout_set_cell (layout, curs, ENTRY_BACCT_CELL, 0, 4); - gnc_table_layout_set_cell (layout, curs, ENTRY_QTY_CELL, 0, 5); - gnc_table_layout_set_cell (layout, curs, ENTRY_PRIC_CELL, 0, 6); - gnc_table_layout_set_cell (layout, curs, ENTRY_TAXABLE_CELL, 0, 7); - gnc_table_layout_set_cell (layout, curs, ENTRY_TAXINCLUDED_CELL, 0, 8); - gnc_table_layout_set_cell (layout, curs, ENTRY_TAXTABLE_CELL, 0, 9); - gnc_table_layout_set_cell (layout, curs, ENTRY_VALUE_CELL, 0, 10); - gnc_table_layout_set_cell (layout, curs, ENTRY_BILLABLE_CELL, 0, 11); + curs = gnc_table_layout_get_cursor (layout, "cursor"); + gnc_table_layout_set_cell (layout, curs, ENTRY_DATE_CELL, 0, 0); + gnc_table_layout_set_cell (layout, curs, ENTRY_INV_CELL, 0, 1); + gnc_table_layout_set_cell (layout, curs, ENTRY_DESC_CELL, 0, 2); + gnc_table_layout_set_cell (layout, curs, ENTRY_ACTN_CELL, 0, 3); + gnc_table_layout_set_cell (layout, curs, ENTRY_BACCT_CELL, 0, 4); + gnc_table_layout_set_cell (layout, curs, ENTRY_QTY_CELL, 0, 5); + gnc_table_layout_set_cell (layout, curs, ENTRY_PRIC_CELL, 0, 6); + gnc_table_layout_set_cell (layout, curs, ENTRY_TAXABLE_CELL, 0, 7); + gnc_table_layout_set_cell (layout, curs, ENTRY_TAXINCLUDED_CELL, 0, 8); + gnc_table_layout_set_cell (layout, curs, ENTRY_TAXTABLE_CELL, 0, 9); + gnc_table_layout_set_cell (layout, curs, ENTRY_VALUE_CELL, 0, 10); + gnc_table_layout_set_cell (layout, curs, ENTRY_BILLABLE_CELL, 0, 11); - break; + break; - case GNCENTRY_EXPVOUCHER_ENTRY: - case GNCENTRY_EXPVOUCHER_VIEWER: + case GNCENTRY_EXPVOUCHER_ENTRY: + case GNCENTRY_EXPVOUCHER_VIEWER: - curs = gnc_table_layout_get_cursor (layout, "cursor"); - gnc_table_layout_set_cell (layout, curs, ENTRY_DATE_CELL, 0, 0); - gnc_table_layout_set_cell (layout, curs, ENTRY_INV_CELL, 0, 1); - gnc_table_layout_set_cell (layout, curs, ENTRY_DESC_CELL, 0, 2); - gnc_table_layout_set_cell (layout, curs, ENTRY_ACTN_CELL, 0, 3); - gnc_table_layout_set_cell (layout, curs, ENTRY_BACCT_CELL, 0, 4); - gnc_table_layout_set_cell (layout, curs, ENTRY_QTY_CELL, 0, 5); - gnc_table_layout_set_cell (layout, curs, ENTRY_PRIC_CELL, 0, 6); - gnc_table_layout_set_cell (layout, curs, ENTRY_VALUE_CELL, 0, 7); - gnc_table_layout_set_cell (layout, curs, ENTRY_BILLABLE_CELL, 0, 8); - gnc_table_layout_set_cell (layout, curs, ENTRY_PAYMENT_CELL, 0, 9); + curs = gnc_table_layout_get_cursor (layout, "cursor"); + gnc_table_layout_set_cell (layout, curs, ENTRY_DATE_CELL, 0, 0); + gnc_table_layout_set_cell (layout, curs, ENTRY_INV_CELL, 0, 1); + gnc_table_layout_set_cell (layout, curs, ENTRY_DESC_CELL, 0, 2); + gnc_table_layout_set_cell (layout, curs, ENTRY_ACTN_CELL, 0, 3); + gnc_table_layout_set_cell (layout, curs, ENTRY_BACCT_CELL, 0, 4); + gnc_table_layout_set_cell (layout, curs, ENTRY_QTY_CELL, 0, 5); + gnc_table_layout_set_cell (layout, curs, ENTRY_PRIC_CELL, 0, 6); + gnc_table_layout_set_cell (layout, curs, ENTRY_VALUE_CELL, 0, 7); + gnc_table_layout_set_cell (layout, curs, ENTRY_BILLABLE_CELL, 0, 8); + gnc_table_layout_set_cell (layout, curs, ENTRY_PAYMENT_CELL, 0, 9); - break; + break; - default: - g_assert (FALSE); - return; - } + default: + g_assert (FALSE); + return; + } } TableLayout * gnc_entry_ledger_layout_new (GncEntryLedger *ledger) { - TableLayout *layout; + TableLayout *layout; - layout = gnc_table_layout_new (); - gnc_entry_ledger_layout_add_cells (ledger, layout); - gnc_entry_ledger_layout_add_cursors (ledger, layout); - gnc_entry_ledger_set_cells (ledger, layout); + layout = gnc_table_layout_new (); + gnc_entry_ledger_layout_add_cells (ledger, layout); + gnc_entry_ledger_layout_add_cursors (ledger, layout); + gnc_entry_ledger_set_cells (ledger, layout); - return layout; + return layout; } diff --git a/src/business/business-ledger/gncEntryLedgerLoad.c b/src/business/business-ledger/gncEntryLedgerLoad.c index cebb5b1894..ddd8b855cd 100644 --- a/src/business/business-ledger/gncEntryLedgerLoad.c +++ b/src/business/business-ledger/gncEntryLedgerLoad.c @@ -45,81 +45,88 @@ /* XXX: This should go elsewhere */ const char * gnc_entry_ledger_type_string_getter (char flag) { - switch (flag) { - case '1': return _("$"); - case '2': return _("%"); - default: - return "?"; - }; + switch (flag) + { + case '1': + return _("$"); + case '2': + return _("%"); + default: + return "?"; + }; } const char * gnc_entry_ledger_how_string_getter (char flag) { - switch (flag) { - case '1': return _("<"); - case '2': return _("="); - case '3': return _(">"); - default: - return "?"; - }; + switch (flag) + { + case '1': + return _("<"); + case '2': + return _("="); + case '3': + return _(">"); + default: + return "?"; + }; } static void load_discount_type_cells (GncEntryLedger *ledger) { - RecnCell *cell; + RecnCell *cell; - if (!ledger) return; + if (!ledger) return; - cell = (RecnCell *) - gnc_table_layout_get_cell (ledger->table->layout, ENTRY_DISTYPE_CELL); + cell = (RecnCell *) + gnc_table_layout_get_cell (ledger->table->layout, ENTRY_DISTYPE_CELL); - if (!cell) return; + if (!cell) return; - gnc_recn_cell_set_valid_flags (cell, "12", '2'); - gnc_recn_cell_set_flag_order (cell, "21"); - gnc_recn_cell_set_string_getter (cell, gnc_entry_ledger_type_string_getter); + gnc_recn_cell_set_valid_flags (cell, "12", '2'); + gnc_recn_cell_set_flag_order (cell, "21"); + gnc_recn_cell_set_string_getter (cell, gnc_entry_ledger_type_string_getter); } static void load_discount_how_cells (GncEntryLedger *ledger) { - RecnCell *cell; + RecnCell *cell; - if (!ledger) return; + if (!ledger) return; - cell = (RecnCell *) - gnc_table_layout_get_cell (ledger->table->layout, ENTRY_DISHOW_CELL); + cell = (RecnCell *) + gnc_table_layout_get_cell (ledger->table->layout, ENTRY_DISHOW_CELL); - if (!cell) return; + if (!cell) return; - gnc_recn_cell_set_valid_flags (cell, "123", '1'); - gnc_recn_cell_set_flag_order (cell, "123"); - gnc_recn_cell_set_string_getter (cell, gnc_entry_ledger_how_string_getter); + gnc_recn_cell_set_valid_flags (cell, "123", '1'); + gnc_recn_cell_set_flag_order (cell, "123"); + gnc_recn_cell_set_string_getter (cell, gnc_entry_ledger_how_string_getter); } static void load_payment_type_cells (GncEntryLedger *ledger) { - ComboCell *cell; - GncOwner *owner; - GncEmployee *employee; + ComboCell *cell; + GncOwner *owner; + GncEmployee *employee; - cell = (ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, - ENTRY_PAYMENT_CELL); - if (!cell) return; + cell = (ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, + ENTRY_PAYMENT_CELL); + if (!cell) return; - if (!ledger->invoice) return; + if (!ledger->invoice) return; - owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (ledger->invoice)); - if (gncOwnerGetType (owner) != GNC_OWNER_EMPLOYEE) - return; + owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (ledger->invoice)); + if (gncOwnerGetType (owner) != GNC_OWNER_EMPLOYEE) + return; - employee = gncOwnerGetEmployee (owner); - g_return_if_fail (employee); + employee = gncOwnerGetEmployee (owner); + g_return_if_fail (employee); - gnc_combo_cell_clear_menu (cell); - gnc_combo_cell_add_menu_item (cell, _("Cash")); + gnc_combo_cell_clear_menu (cell); + gnc_combo_cell_add_menu_item (cell, _("Cash")); - if (gncEmployeeGetCCard (employee)) - gnc_combo_cell_add_menu_item (cell, _("Charge")); + if (gncEmployeeGetCCard (employee)) + gnc_combo_cell_add_menu_item (cell, _("Charge")); } /* ==================================================================== */ @@ -128,47 +135,47 @@ static void load_payment_type_cells (GncEntryLedger *ledger) static gboolean skip_expense_acct_cb (Account *account, gpointer user_data) { - GNCAccountType type; + GNCAccountType type; - /* Don't add A/R, A/P, Bank, Cash, or Equity accounts */ - type = xaccAccountGetType (account); - if (type == ACCT_TYPE_PAYABLE || type == ACCT_TYPE_RECEIVABLE || - type == ACCT_TYPE_CASH || type == ACCT_TYPE_BANK || - type == ACCT_TYPE_EQUITY || type == ACCT_TYPE_TRADING) - { - return TRUE; - } + /* Don't add A/R, A/P, Bank, Cash, or Equity accounts */ + type = xaccAccountGetType (account); + if (type == ACCT_TYPE_PAYABLE || type == ACCT_TYPE_RECEIVABLE || + type == ACCT_TYPE_CASH || type == ACCT_TYPE_BANK || + type == ACCT_TYPE_EQUITY || type == ACCT_TYPE_TRADING) + { + return TRUE; + } - /* If this is an ORDER or INVOICE, then leave out the expenses. */ - if (type == ACCT_TYPE_EXPENSE) return TRUE; + /* If this is an ORDER or INVOICE, then leave out the expenses. */ + if (type == ACCT_TYPE_EXPENSE) return TRUE; - /* Don't add placeholder accounts */ - if (xaccAccountGetPlaceholder (account)) return TRUE; + /* Don't add placeholder accounts */ + if (xaccAccountGetPlaceholder (account)) return TRUE; - return FALSE; + return FALSE; } static gboolean skip_income_acct_cb (Account *account, gpointer user_data) { - GNCAccountType type; + GNCAccountType type; - /* Don't add A/R, A/P, Bank, Cash, or Equity accounts */ - type = xaccAccountGetType (account); - if (type == ACCT_TYPE_PAYABLE || type == ACCT_TYPE_RECEIVABLE || - type == ACCT_TYPE_CASH || type == ACCT_TYPE_BANK || - type == ACCT_TYPE_EQUITY || type == ACCT_TYPE_TRADING) - { - return TRUE; - } + /* Don't add A/R, A/P, Bank, Cash, or Equity accounts */ + type = xaccAccountGetType (account); + if (type == ACCT_TYPE_PAYABLE || type == ACCT_TYPE_RECEIVABLE || + type == ACCT_TYPE_CASH || type == ACCT_TYPE_BANK || + type == ACCT_TYPE_EQUITY || type == ACCT_TYPE_TRADING) + { + return TRUE; + } - /* If this is a BILL, then leave out the incomes */ - if (type == ACCT_TYPE_INCOME) return TRUE; + /* If this is a BILL, then leave out the incomes */ + if (type == ACCT_TYPE_INCOME) return TRUE; - /* Don't add placeholder accounts */ - if (xaccAccountGetPlaceholder (account)) return TRUE; + /* Don't add placeholder accounts */ + if (xaccAccountGetPlaceholder (account)) return TRUE; - return FALSE; + return FALSE; } /* ===================================================================== */ @@ -177,95 +184,96 @@ skip_income_acct_cb (Account *account, gpointer user_data) #define EKEY "Expense Business entry quickfill" #define IKEY "Income Business entry quickfill" -static void +static void load_xfer_type_cells (GncEntryLedger *ledger) { - Account *root; - ComboCell *cell; - QuickFill *qf=NULL; - GtkListStore *store = NULL; + Account *root; + ComboCell *cell; + QuickFill *qf = NULL; + GtkListStore *store = NULL; - root = gnc_book_get_root_account (ledger->book); - if (root == NULL) return; + root = gnc_book_get_root_account (ledger->book); + if (root == NULL) return; - /* Use a common, shared quickfill. For the ORDER or INVOICE, - * ledgers, we don't want expense-type accounts in the menu. - * For BILL, etc. then leave out the income types. - */ - switch (ledger->type) - { + /* Use a common, shared quickfill. For the ORDER or INVOICE, + * ledgers, we don't want expense-type accounts in the menu. + * For BILL, etc. then leave out the income types. + */ + switch (ledger->type) + { case GNCENTRY_ORDER_ENTRY: case GNCENTRY_ORDER_VIEWER: case GNCENTRY_INVOICE_ENTRY: case GNCENTRY_INVOICE_VIEWER: - qf = gnc_get_shared_account_name_quickfill (root, IKEY, - skip_expense_acct_cb, NULL); - store = gnc_get_shared_account_name_list_store (root, IKEY, - skip_expense_acct_cb, NULL); - break; + qf = gnc_get_shared_account_name_quickfill (root, IKEY, + skip_expense_acct_cb, NULL); + store = gnc_get_shared_account_name_list_store (root, IKEY, + skip_expense_acct_cb, NULL); + break; case GNCENTRY_BILL_ENTRY: case GNCENTRY_BILL_VIEWER: case GNCENTRY_EXPVOUCHER_ENTRY: case GNCENTRY_EXPVOUCHER_VIEWER: case GNCENTRY_NUM_REGISTER_TYPES: - qf = gnc_get_shared_account_name_quickfill (root, EKEY, - skip_income_acct_cb, NULL); - store = gnc_get_shared_account_name_list_store (root, EKEY, - skip_income_acct_cb, NULL); - break; - } + qf = gnc_get_shared_account_name_quickfill (root, EKEY, + skip_income_acct_cb, NULL); + store = gnc_get_shared_account_name_list_store (root, EKEY, + skip_income_acct_cb, NULL); + break; + } - cell = (ComboCell *) - gnc_table_layout_get_cell (ledger->table->layout, ENTRY_IACCT_CELL); - gnc_combo_cell_use_quickfill_cache (cell, qf); - gnc_combo_cell_use_list_store_cache (cell, store); + cell = (ComboCell *) + gnc_table_layout_get_cell (ledger->table->layout, ENTRY_IACCT_CELL); + gnc_combo_cell_use_quickfill_cache (cell, qf); + gnc_combo_cell_use_list_store_cache (cell, store); - cell = (ComboCell *) - gnc_table_layout_get_cell (ledger->table->layout, ENTRY_BACCT_CELL); - gnc_combo_cell_use_quickfill_cache (cell, qf); - gnc_combo_cell_use_list_store_cache (cell, store); + cell = (ComboCell *) + gnc_table_layout_get_cell (ledger->table->layout, ENTRY_BACCT_CELL); + gnc_combo_cell_use_quickfill_cache (cell, qf); + gnc_combo_cell_use_list_store_cache (cell, store); } /* ===================================================================== */ static void load_taxtable_type_cells (GncEntryLedger *ledger) { - GList *list; - ComboCell *cell; + GList *list; + ComboCell *cell; - cell = (ComboCell *) - gnc_table_layout_get_cell (ledger->table->layout, ENTRY_TAXTABLE_CELL); - gnc_combo_cell_clear_menu (cell); - - list = gncTaxTableGetTables (ledger->book); - for ( ; list ; list = list->next ) { - GncTaxTable *table = list->data; - const char *name = gncTaxTableGetName (table); - if (name != NULL) - gnc_combo_cell_add_menu_item (cell, (char*)name); - } + cell = (ComboCell *) + gnc_table_layout_get_cell (ledger->table->layout, ENTRY_TAXTABLE_CELL); + gnc_combo_cell_clear_menu (cell); + + list = gncTaxTableGetTables (ledger->book); + for ( ; list ; list = list->next ) + { + GncTaxTable *table = list->data; + const char *name = gncTaxTableGetName (table); + if (name != NULL) + gnc_combo_cell_add_menu_item (cell, (char*)name); + } } static void gnc_entry_ledger_show_entry (GncEntryLedger *ledger, - VirtualCellLocation start_loc) + VirtualCellLocation start_loc) { - VirtualCellLocation end_loc; - int v_row; + VirtualCellLocation end_loc; + int v_row; - end_loc = start_loc; - v_row = end_loc.virt_row + 1; - end_loc.virt_row = MIN (v_row, ledger->table->num_virt_rows - 1); + end_loc = start_loc; + v_row = end_loc.virt_row + 1; + end_loc.virt_row = MIN (v_row, ledger->table->num_virt_rows - 1); - gnc_table_show_range (ledger->table, start_loc, end_loc); + gnc_table_show_range (ledger->table, start_loc, end_loc); } void gnc_entry_ledger_load_xfer_cells (GncEntryLedger *ledger) { - load_xfer_type_cells (ledger); - load_taxtable_type_cells (ledger); - load_payment_type_cells (ledger); + load_xfer_type_cells (ledger); + load_taxtable_type_cells (ledger); + load_payment_type_cells (ledger); } /* XXX (FIXME): This should be in a config file! */ @@ -276,265 +284,284 @@ void gnc_entry_ledger_load_xfer_cells (GncEntryLedger *ledger) */ void gnc_entry_ledger_load (GncEntryLedger *ledger, GList *entry_list) { - GncEntry *blank_entry, *find_entry; - CursorBuffer *cursor_buffer; - Table *table; + GncEntry *blank_entry, *find_entry; + CursorBuffer *cursor_buffer; + Table *table; - GList *node; - CellBlock *cursor_header, *cursor; - VirtualCellLocation vcell_loc; - VirtualLocation save_loc; - time_t present; - gboolean start_primary_color = TRUE; + GList *node; + CellBlock *cursor_header, *cursor; + VirtualCellLocation vcell_loc; + VirtualLocation save_loc; + time_t present; + gboolean start_primary_color = TRUE; - int new_entry_row = -1; + int new_entry_row = -1; - if (!ledger) return; + if (!ledger) return; - /* Load up cells */ - load_discount_type_cells (ledger); - load_discount_how_cells (ledger); - gnc_entry_ledger_load_xfer_cells (ledger); + /* Load up cells */ + load_discount_type_cells (ledger); + load_discount_how_cells (ledger); + gnc_entry_ledger_load_xfer_cells (ledger); - blank_entry = gnc_entry_ledger_get_blank_entry (ledger); + blank_entry = gnc_entry_ledger_get_blank_entry (ledger); - if (blank_entry == NULL && ledger->invoice == NULL && entry_list == NULL) - return; + if (blank_entry == NULL && ledger->invoice == NULL && entry_list == NULL) + return; - if (blank_entry == NULL && ledger->invoice) { - switch (ledger->type) { - case GNCENTRY_ORDER_ENTRY: - case GNCENTRY_INVOICE_ENTRY: - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_EXPVOUCHER_ENTRY: + if (blank_entry == NULL && ledger->invoice) + { + switch (ledger->type) + { + case GNCENTRY_ORDER_ENTRY: + case GNCENTRY_INVOICE_ENTRY: + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_EXPVOUCHER_ENTRY: - gnc_suspend_gui_refresh (); + gnc_suspend_gui_refresh (); - blank_entry = gncEntryCreate (ledger->book); - gncEntrySetDate (blank_entry, ledger->last_date_entered); - ledger->blank_entry_guid = *gncEntryGetGUID (blank_entry); + blank_entry = gncEntryCreate (ledger->book); + gncEntrySetDate (blank_entry, ledger->last_date_entered); + ledger->blank_entry_guid = *gncEntryGetGUID (blank_entry); - gnc_resume_gui_refresh (); + gnc_resume_gui_refresh (); - /* The rest of this does not apply to expense vouchers */ - if (ledger->type != GNCENTRY_EXPVOUCHER_ENTRY) - { - GncOwner *owner = gncInvoiceGetOwner (ledger->invoice); - GncTaxTable *table = NULL; - GncTaxIncluded taxincluded_p = GNC_TAXINCLUDED_USEGLOBAL; - gboolean taxincluded = FALSE; - gnc_numeric discount = gnc_numeric_zero (); - GNCOptionDB *odb; + /* The rest of this does not apply to expense vouchers */ + if (ledger->type != GNCENTRY_EXPVOUCHER_ENTRY) + { + GncOwner *owner = gncInvoiceGetOwner (ledger->invoice); + GncTaxTable *table = NULL; + GncTaxIncluded taxincluded_p = GNC_TAXINCLUDED_USEGLOBAL; + gboolean taxincluded = FALSE; + gnc_numeric discount = gnc_numeric_zero (); + GNCOptionDB *odb; - /* Determine the TaxIncluded and Discount values */ - owner = gncOwnerGetEndOwner (owner); - switch (gncOwnerGetType (owner)) { - case GNC_OWNER_CUSTOMER: - taxincluded_p = gncCustomerGetTaxIncluded (owner->owner.customer); - discount = gncCustomerGetDiscount (owner->owner.customer); - break; - case GNC_OWNER_VENDOR: - taxincluded_p = gncVendorGetTaxIncluded (owner->owner.vendor); - break; - default: - break; - } + /* Determine the TaxIncluded and Discount values */ + owner = gncOwnerGetEndOwner (owner); + switch (gncOwnerGetType (owner)) + { + case GNC_OWNER_CUSTOMER: + taxincluded_p = gncCustomerGetTaxIncluded (owner->owner.customer); + discount = gncCustomerGetDiscount (owner->owner.customer); + break; + case GNC_OWNER_VENDOR: + taxincluded_p = gncVendorGetTaxIncluded (owner->owner.vendor); + break; + default: + break; + } - /* Compute the default taxincluded */ - switch (taxincluded_p) { - case GNC_TAXINCLUDED_YES: - taxincluded = TRUE; - break; - case GNC_TAXINCLUDED_NO: - taxincluded = FALSE; - break; - case GNC_TAXINCLUDED_USEGLOBAL: - if (ledger->gconf_section) { - taxincluded = gnc_gconf_get_bool(ledger->gconf_section, "tax_included", NULL); - } else { - taxincluded = FALSE; - } - break; - } + /* Compute the default taxincluded */ + switch (taxincluded_p) + { + case GNC_TAXINCLUDED_YES: + taxincluded = TRUE; + break; + case GNC_TAXINCLUDED_NO: + taxincluded = FALSE; + break; + case GNC_TAXINCLUDED_USEGLOBAL: + if (ledger->gconf_section) + { + taxincluded = gnc_gconf_get_bool(ledger->gconf_section, "tax_included", NULL); + } + else + { + taxincluded = FALSE; + } + break; + } - /* Compute the proper taxtable */ - odb = gnc_option_db_new_for_type (GNC_ID_BOOK); - gnc_option_db_load_from_kvp (odb, gnc_book_get_slots (ledger->book)); + /* Compute the proper taxtable */ + odb = gnc_option_db_new_for_type (GNC_ID_BOOK); + gnc_option_db_load_from_kvp (odb, gnc_book_get_slots (ledger->book)); - switch (gncOwnerGetType (owner)) { - case GNC_OWNER_CUSTOMER: - table = gnc_option_db_lookup_taxtable_option (odb, - "Business", - "Default Customer TaxTable", - NULL); + switch (gncOwnerGetType (owner)) + { + case GNC_OWNER_CUSTOMER: + table = gnc_option_db_lookup_taxtable_option (odb, + "Business", + "Default Customer TaxTable", + NULL); - if (gncCustomerGetTaxTableOverride (owner->owner.customer)) - table = gncCustomerGetTaxTable (owner->owner.customer); - break; + if (gncCustomerGetTaxTableOverride (owner->owner.customer)) + table = gncCustomerGetTaxTable (owner->owner.customer); + break; - case GNC_OWNER_VENDOR: - table = gnc_option_db_lookup_taxtable_option (odb, - "Business", - "Default Vendor TaxTable", - NULL); + case GNC_OWNER_VENDOR: + table = gnc_option_db_lookup_taxtable_option (odb, + "Business", + "Default Vendor TaxTable", + NULL); - if (gncVendorGetTaxTableOverride (owner->owner.vendor)) - table = gncVendorGetTaxTable (owner->owner.vendor); - break; + if (gncVendorGetTaxTableOverride (owner->owner.vendor)) + table = gncVendorGetTaxTable (owner->owner.vendor); + break; - default: - break; - } + default: + break; + } - gnc_option_db_destroy (odb); + gnc_option_db_destroy (odb); - if (ledger->is_invoice) { - gncEntrySetInvTaxTable (blank_entry, table); - gncEntrySetInvTaxIncluded (blank_entry, taxincluded); - gncEntrySetInvDiscount (blank_entry, discount); - } else { - gncEntrySetBillTaxTable (blank_entry, table); - gncEntrySetBillTaxIncluded (blank_entry, taxincluded); - } - } + if (ledger->is_invoice) + { + gncEntrySetInvTaxTable (blank_entry, table); + gncEntrySetInvTaxIncluded (blank_entry, taxincluded); + gncEntrySetInvDiscount (blank_entry, discount); + } + else + { + gncEntrySetBillTaxTable (blank_entry, table); + gncEntrySetBillTaxIncluded (blank_entry, taxincluded); + } + } - break; - default: - ledger->blank_entry_guid = *xaccGUIDNULL (); - break; + break; + default: + ledger->blank_entry_guid = *xaccGUIDNULL (); + break; + } + ledger->blank_entry_edited = FALSE; } - ledger->blank_entry_edited = FALSE; - } - table = ledger->table; + table = ledger->table; - gnc_table_leave_update (table, table->current_cursor_loc); - save_loc = table->current_cursor_loc; + gnc_table_leave_update (table, table->current_cursor_loc); + save_loc = table->current_cursor_loc; - /* Figure out where we are going to */ - if (ledger->traverse_to_new) { - find_entry = blank_entry; - } else if (ledger->hint_entry) { - find_entry = ledger->hint_entry; - } else { - find_entry = gnc_entry_ledger_get_current_entry(ledger); - /* XXX: get current entry (cursor_hint_xxx) */ - } + /* Figure out where we are going to */ + if (ledger->traverse_to_new) + { + find_entry = blank_entry; + } + else if (ledger->hint_entry) + { + find_entry = ledger->hint_entry; + } + else + { + find_entry = gnc_entry_ledger_get_current_entry(ledger); + /* XXX: get current entry (cursor_hint_xxx) */ + } - /* If the current cursor has changed we save the values for later - * possible restoration. */ - if (gnc_table_current_cursor_changed (table, TRUE) && - (find_entry == gnc_entry_ledger_get_current_entry (ledger))) - { - cursor_buffer = gnc_cursor_buffer_new (); - gnc_table_save_current_cursor (table, cursor_buffer); - } - else + /* If the current cursor has changed we save the values for later + * possible restoration. */ + if (gnc_table_current_cursor_changed (table, TRUE) && + (find_entry == gnc_entry_ledger_get_current_entry (ledger))) + { + cursor_buffer = gnc_cursor_buffer_new (); + gnc_table_save_current_cursor (table, cursor_buffer); + } + else + cursor_buffer = NULL; + + /* disable move callback -- we don't want the cascade of + * callbacks while we are fiddling with loading the register */ + gnc_table_control_allow_move (table->control, FALSE); + + /* invalidate the cursor */ + { + VirtualLocation virt_loc; + + virt_loc.vcell_loc.virt_row = -1; + virt_loc.vcell_loc.virt_col = -1; + virt_loc.phys_row_offset = -1; + virt_loc.phys_col_offset = -1; + + gnc_table_move_cursor_gui (table, virt_loc); + } + + /* make sure that the header is loaded */ + vcell_loc.virt_row = 0; + vcell_loc.virt_col = 0; + cursor_header = gnc_table_layout_get_cursor (table->layout, CURSOR_HEADER); + gnc_table_set_vcell (table, cursor_header, NULL, TRUE, TRUE, vcell_loc); + vcell_loc.virt_row++; + + /* get the current time and reset the dividing row */ + present = gnc_timet_get_today_end (); + table->model->dividing_row = -1; + cursor = gnc_table_layout_get_cursor (table->layout, "cursor"); + + /* Populate the table */ + for (node = entry_list; node; node = node->next) + { + GncEntry *entry = node->data; + + /* Don't load the blank entry */ + if (entry == blank_entry) + continue; + + /* If this is the first load of the ledger, fill the quickfill cells */ + { + /* XXX */ + } + + if (entry == find_entry) + new_entry_row = vcell_loc.virt_row; + + gnc_table_set_vcell (table, cursor, gncEntryGetGUID (entry), + TRUE, start_primary_color, vcell_loc); + vcell_loc.virt_row++; + + /* Flip color for the next guy */ + start_primary_color = !start_primary_color; + } + + /* Add the blank entry at the end. */ + if (blank_entry) + { + gnc_table_set_vcell (table, cursor, gncEntryGetGUID (blank_entry), + TRUE, start_primary_color, vcell_loc); + + if (find_entry == blank_entry) + new_entry_row = vcell_loc.virt_row; + + vcell_loc.virt_row++; + } + + /* Resize the table */ + gnc_table_set_size (table, vcell_loc.virt_row, 1); + + /* Restore the cursor to its rightful position */ + if (new_entry_row > 0) + save_loc.vcell_loc.virt_row = new_entry_row; + + if (gnc_table_find_close_valid_cell (table, &save_loc, FALSE)) + { + gnc_table_move_cursor_gui (table, save_loc); + + if (find_entry == gnc_entry_ledger_get_current_entry (ledger)) + gnc_table_restore_current_cursor (table, cursor_buffer); + } + + gnc_cursor_buffer_destroy (cursor_buffer); cursor_buffer = NULL; - /* disable move callback -- we don't want the cascade of - * callbacks while we are fiddling with loading the register */ - gnc_table_control_allow_move (table->control, FALSE); + /* Reset the ledger */ + ledger->traverse_to_new = FALSE; + ledger->hint_entry = NULL; - /* invalidate the cursor */ - { - VirtualLocation virt_loc; - - virt_loc.vcell_loc.virt_row = -1; - virt_loc.vcell_loc.virt_col = -1; - virt_loc.phys_row_offset = -1; - virt_loc.phys_col_offset = -1; - - gnc_table_move_cursor_gui (table, virt_loc); - } - - /* make sure that the header is loaded */ - vcell_loc.virt_row = 0; - vcell_loc.virt_col = 0; - cursor_header = gnc_table_layout_get_cursor (table->layout, CURSOR_HEADER); - gnc_table_set_vcell (table, cursor_header, NULL, TRUE, TRUE, vcell_loc); - vcell_loc.virt_row++; - - /* get the current time and reset the dividing row */ - present = gnc_timet_get_today_end (); - table->model->dividing_row = -1; - cursor = gnc_table_layout_get_cursor (table->layout, "cursor"); - - /* Populate the table */ - for (node = entry_list; node; node = node->next) { - GncEntry *entry = node->data; - - /* Don't load the blank entry */ - if (entry == blank_entry) - continue; - - /* If this is the first load of the ledger, fill the quickfill cells */ - { - /* XXX */ - } - - if (entry == find_entry) - new_entry_row = vcell_loc.virt_row; - - gnc_table_set_vcell (table, cursor, gncEntryGetGUID (entry), - TRUE, start_primary_color, vcell_loc); - vcell_loc.virt_row++; - - /* Flip color for the next guy */ - start_primary_color = !start_primary_color; - } - - /* Add the blank entry at the end. */ - if (blank_entry) { - gnc_table_set_vcell (table, cursor, gncEntryGetGUID (blank_entry), - TRUE, start_primary_color, vcell_loc); - - if (find_entry == blank_entry) - new_entry_row = vcell_loc.virt_row; - - vcell_loc.virt_row++; - } - - /* Resize the table */ - gnc_table_set_size (table, vcell_loc.virt_row, 1); - - /* Restore the cursor to its rightful position */ - if (new_entry_row > 0) - save_loc.vcell_loc.virt_row = new_entry_row; - - if (gnc_table_find_close_valid_cell (table, &save_loc, FALSE)) { - gnc_table_move_cursor_gui (table, save_loc); - - if (find_entry == gnc_entry_ledger_get_current_entry (ledger)) - gnc_table_restore_current_cursor (table, cursor_buffer); - } - - gnc_cursor_buffer_destroy (cursor_buffer); - cursor_buffer = NULL; - - /* Reset the ledger */ - ledger->traverse_to_new = FALSE; - ledger->hint_entry = NULL; - - /* Set the cell fractions */ + /* Set the cell fractions */ - gnc_table_refresh_gui (table, TRUE); - gnc_entry_ledger_show_entry (ledger, table->current_cursor_loc.vcell_loc); + gnc_table_refresh_gui (table, TRUE); + gnc_entry_ledger_show_entry (ledger, table->current_cursor_loc.vcell_loc); - /* Set completion character */ - gnc_combo_cell_set_complete_char + /* Set completion character */ + gnc_combo_cell_set_complete_char ((ComboCell *) gnc_table_layout_get_cell (table->layout, ENTRY_IACCT_CELL), gnc_get_account_separator ()); - gnc_combo_cell_set_complete_char + gnc_combo_cell_set_complete_char ((ComboCell *) gnc_table_layout_get_cell (table->layout, ENTRY_BACCT_CELL), gnc_get_account_separator ()); - /* enable callback for cursor user-driven moves */ - gnc_table_control_allow_move (table->control, TRUE); + /* enable callback for cursor user-driven moves */ + gnc_table_control_allow_move (table->control, TRUE); } /* =========================== END OF FILE ========================== */ diff --git a/src/business/business-ledger/gncEntryLedgerModel.c b/src/business/business-ledger/gncEntryLedgerModel.c index 124ec68b21..a1b07d38ef 100644 --- a/src/business/business-ledger/gncEntryLedgerModel.c +++ b/src/business/business-ledger/gncEntryLedgerModel.c @@ -38,12 +38,12 @@ static GncEntryLedgerColors reg_colors = { - 0x96B183, - 0xBFDEB9, - 0xF6FFDA, + 0x96B183, + 0xBFDEB9, + 0xF6FFDA, - 0xFFEF98, - 0xFFEF98, + 0xFFEF98, + 0xFFEF98, }; /** Private Interfaces ***********************************************/ @@ -52,405 +52,417 @@ static GncEntryLedgerColors reg_colors = static const char * get_iacct_label (VirtualLocation virt_loc, gpointer data) { - return _("Income Account"); + return _("Income Account"); } static const char * get_bacct_label (VirtualLocation virt_loc, gpointer data) { - return _("Expense Account"); + return _("Expense Account"); } static const char * get_actn_label (VirtualLocation virt_loc, gpointer data) { - return _("Action"); + return _("Action"); } static const char * get_date_label (VirtualLocation virt_loc, gpointer data) { - return _("Date"); + return _("Date"); } static const char * get_desc_label (VirtualLocation virt_loc, gpointer data) { - return _("Description"); + return _("Description"); } static const char * get_disc_label (VirtualLocation virt_loc, gpointer data) { - return _("Discount"); + return _("Discount"); } static const char * get_distype_label (VirtualLocation virt_loc, gpointer data) { - return _("Discount Type"); + return _("Discount Type"); } static const char * get_dishow_label (VirtualLocation virt_loc, gpointer data) { - return _("Discount How"); + return _("Discount How"); } static const char * get_pric_label (VirtualLocation virt_loc, gpointer data) { - return _("Unit Price"); + return _("Unit Price"); } static const char * get_qty_label (VirtualLocation virt_loc, gpointer data) { - return _("Quantity"); + return _("Quantity"); } static const char * get_taxtable_label (VirtualLocation virt_loc, gpointer data) { - return _("Tax Table"); + return _("Tax Table"); } static const char * get_taxable_label (VirtualLocation virt_loc, gpointer data) { - return _("Taxable?"); + return _("Taxable?"); } static const char * get_taxincluded_label (VirtualLocation virt_loc, gpointer data) { - return _("Tax Included?"); + return _("Tax Included?"); } static const char * get_inv_label (VirtualLocation virt_loc, gpointer data) { - return _("Invoiced?"); + return _("Invoiced?"); } static const char * get_value_label (VirtualLocation virt_loc, gpointer data) { - return _("Subtotal"); + return _("Subtotal"); } static const char * get_taxval_label (VirtualLocation virt_loc, gpointer data) { - return _("Tax"); + return _("Tax"); } static const char * get_billable_label (VirtualLocation virt_loc, gpointer data) { - return _("Billable?"); + return _("Billable?"); } static const char * get_payment_label (VirtualLocation virt_loc, gpointer data) { - return _("Payment"); + return _("Payment"); } /* GET_ENTRY */ static const char * get_iacct_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) { - static char *name = NULL; + static char *name = NULL; - GncEntryLedger *ledger = user_data; - GncEntry *entry; + GncEntryLedger *ledger = user_data; + GncEntry *entry; - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - g_free (name); - name = gnc_get_account_name_for_register (gncEntryGetInvAccount (entry)); - return name; + g_free (name); + name = gnc_get_account_name_for_register (gncEntryGetInvAccount (entry)); + return name; } static const char * get_bacct_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) { - static char *name = NULL; + static char *name = NULL; - GncEntryLedger *ledger = user_data; - GncEntry *entry; + GncEntryLedger *ledger = user_data; + GncEntry *entry; - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - g_free (name); - name = gnc_get_account_name_for_register (gncEntryGetBillAccount (entry)); - return name; + g_free (name); + name = gnc_get_account_name_for_register (gncEntryGetBillAccount (entry)); + return name; } static const char * get_actn_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) { - GncEntryLedger *ledger = user_data; - GncEntry *entry; + GncEntryLedger *ledger = user_data; + GncEntry *entry; - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - return gncEntryGetAction (entry); + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + return gncEntryGetAction (entry); } static const char * get_date_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) { - GncEntryLedger *ledger = user_data; - GncEntry *entry; - Timespec ts; + GncEntryLedger *ledger = user_data; + GncEntry *entry; + Timespec ts; - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - ts = gncEntryGetDate (entry); - return gnc_print_date (ts); + ts = gncEntryGetDate (entry); + return gnc_print_date (ts); } static const char * get_desc_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) { - GncEntryLedger *ledger = user_data; - GncEntry *entry; + GncEntryLedger *ledger = user_data; + GncEntry *entry; - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - return gncEntryGetDescription (entry); + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + return gncEntryGetDescription (entry); } static const char * get_disc_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) { - GncEntryLedger *ledger = user_data; - GncEntry *entry; - gnc_numeric discount; + GncEntryLedger *ledger = user_data; + GncEntry *entry; + gnc_numeric discount; - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - discount = gncEntryGetInvDiscount (entry); - if (gnc_numeric_zero_p (discount)) - return NULL; + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + discount = gncEntryGetInvDiscount (entry); + if (gnc_numeric_zero_p (discount)) + return NULL; - return xaccPrintAmount (discount, gnc_default_print_info (FALSE)); + return xaccPrintAmount (discount, gnc_default_print_info (FALSE)); } static const char * get_distype_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) { - GncEntryLedger *ledger = user_data; - GncEntry *entry; - char type; + GncEntryLedger *ledger = user_data; + GncEntry *entry; + char type; - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - type = gncEntryGetInvDiscountType (entry); + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + type = gncEntryGetInvDiscountType (entry); - if (translate) { - return gnc_entry_ledger_type_string_getter (type + '0'); - } else { - static char s[2]; - s[0] = '0' + type; - s[1] = '\0'; - return s; - } + if (translate) + { + return gnc_entry_ledger_type_string_getter (type + '0'); + } + else + { + static char s[2]; + s[0] = '0' + type; + s[1] = '\0'; + return s; + } } static const char * get_dishow_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) -{ - GncEntryLedger *ledger = user_data; - GncEntry *entry; - char type; - - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - type = gncEntryGetInvDiscountHow (entry); - - if (translate) { - return gnc_entry_ledger_how_string_getter (type + '0'); - } else { - static char s[2]; - s[0] = '0' + type; - s[1] = '\0'; - return s; - } -} - -static const char * get_pric_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) -{ - GncEntryLedger *ledger = user_data; - GncEntry *entry; - gnc_numeric price; - - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - if (ledger->is_invoice) - price = gncEntryGetInvPrice (entry); - else - price = gncEntryGetBillPrice (entry); - - if (gnc_numeric_zero_p (price)) - return NULL; - - return xaccPrintAmount (price, gnc_default_print_info (FALSE)); -} - -static const char * get_qty_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) -{ - GncEntryLedger *ledger = user_data; - GncEntry *entry; - gnc_numeric qty; - - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - qty = gncEntryGetQuantity (entry); - - if (gnc_numeric_zero_p (qty)) - return NULL; - - return xaccPrintAmount (qty, gnc_default_print_info (FALSE)); -} - -static const char * get_taxable_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) -{ - GncEntryLedger *ledger = user_data; - GncEntry *entry; - gboolean taxable; - - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - if (ledger->is_invoice) - taxable = gncEntryGetInvTaxable (entry); - else - taxable = gncEntryGetBillTaxable (entry); - - return gnc_checkbox_cell_get_string (taxable); -} - -static gboolean -gnc_entry_ledger_get_taxable_value (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) -{ - GncEntryLedger *ledger = user_data; - gboolean is_current; - - is_current = virt_cell_loc_equal(ledger->table->current_cursor_loc.vcell_loc, - virt_loc.vcell_loc); - if (is_current) - return gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL); - else { - const char *valstr = - get_taxable_entry (virt_loc, translate, conditionally_changed, - user_data); - if (valstr && *valstr == 'X') - return TRUE; - } - return FALSE; -} - -static const char * get_taxtable_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) -{ - GncEntryLedger *ledger = user_data; - GncEntry *entry; - GncTaxTable *table; - gboolean taxable; - - /* load the cell properly; just shadow the value */ - if (!conditionally_changed) { - taxable = gnc_entry_ledger_get_taxable_value (virt_loc, translate, - conditionally_changed, - user_data); - if (!taxable) - return NULL; - } - - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - if (ledger->is_invoice) - table = gncEntryGetInvTaxTable (entry); - else - table = gncEntryGetBillTaxTable (entry); - - return gncTaxTableGetName (table); -} - -static const char * get_taxincluded_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) -{ - GncEntryLedger *ledger = user_data; - GncEntry *entry; - gboolean taxable, taxincluded; - - /* load the cell properly; just shadow the value */ - if (!conditionally_changed) { - taxable = gnc_entry_ledger_get_taxable_value (virt_loc, translate, - conditionally_changed, - user_data); - if (!taxable) - return NULL; - } - - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - if (ledger->is_invoice) - taxincluded = gncEntryGetInvTaxIncluded (entry); - else - taxincluded = gncEntryGetBillTaxIncluded (entry); - - return gnc_checkbox_cell_get_string (taxincluded); -} - -static const char * get_inv_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) -{ - GncEntryLedger *ledger = user_data; - GncEntry *entry; - - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - - return gnc_checkbox_cell_get_string (gncEntryGetInvoice (entry) != NULL); - - /* XXX: what if this entry doesn't belong to this invoice? - * Or, better question, what if this is the blank_entry on - * an invoice page? For the latter, don't worry about it; - * it will be added automatically during the Save operation - */ -} - -static const char * get_value_entry (VirtualLocation virt_loc, gboolean translate, gboolean *conditionally_changed, gpointer user_data) { - GncEntryLedger *ledger = user_data; - gnc_numeric value; + GncEntryLedger *ledger = user_data; + GncEntry *entry; + char type; - /* Check if this is the current cursor */ - if (virt_cell_loc_equal (ledger->table->current_cursor_loc.vcell_loc, - virt_loc.vcell_loc)) { - gnc_entry_ledger_compute_value (ledger, &value, NULL); - } else { - GncEntry *entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + type = gncEntryGetInvDiscountHow (entry); - if (entry == gnc_entry_ledger_get_blank_entry (ledger)) - return NULL; + if (translate) + { + return gnc_entry_ledger_how_string_getter (type + '0'); + } + else + { + static char s[2]; + s[0] = '0' + type; + s[1] = '\0'; + return s; + } +} - value = gncEntryReturnValue (entry, ledger->is_invoice); - } - return xaccPrintAmount (value, gnc_default_print_info (FALSE)); +static const char * get_pric_entry (VirtualLocation virt_loc, + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) +{ + GncEntryLedger *ledger = user_data; + GncEntry *entry; + gnc_numeric price; + + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + if (ledger->is_invoice) + price = gncEntryGetInvPrice (entry); + else + price = gncEntryGetBillPrice (entry); + + if (gnc_numeric_zero_p (price)) + return NULL; + + return xaccPrintAmount (price, gnc_default_print_info (FALSE)); +} + +static const char * get_qty_entry (VirtualLocation virt_loc, + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) +{ + GncEntryLedger *ledger = user_data; + GncEntry *entry; + gnc_numeric qty; + + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + qty = gncEntryGetQuantity (entry); + + if (gnc_numeric_zero_p (qty)) + return NULL; + + return xaccPrintAmount (qty, gnc_default_print_info (FALSE)); +} + +static const char * get_taxable_entry (VirtualLocation virt_loc, + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) +{ + GncEntryLedger *ledger = user_data; + GncEntry *entry; + gboolean taxable; + + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + if (ledger->is_invoice) + taxable = gncEntryGetInvTaxable (entry); + else + taxable = gncEntryGetBillTaxable (entry); + + return gnc_checkbox_cell_get_string (taxable); +} + +static gboolean +gnc_entry_ledger_get_taxable_value (VirtualLocation virt_loc, + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) +{ + GncEntryLedger *ledger = user_data; + gboolean is_current; + + is_current = virt_cell_loc_equal(ledger->table->current_cursor_loc.vcell_loc, + virt_loc.vcell_loc); + if (is_current) + return gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL); + else + { + const char *valstr = + get_taxable_entry (virt_loc, translate, conditionally_changed, + user_data); + if (valstr && *valstr == 'X') + return TRUE; + } + return FALSE; +} + +static const char * get_taxtable_entry (VirtualLocation virt_loc, + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) +{ + GncEntryLedger *ledger = user_data; + GncEntry *entry; + GncTaxTable *table; + gboolean taxable; + + /* load the cell properly; just shadow the value */ + if (!conditionally_changed) + { + taxable = gnc_entry_ledger_get_taxable_value (virt_loc, translate, + conditionally_changed, + user_data); + if (!taxable) + return NULL; + } + + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + if (ledger->is_invoice) + table = gncEntryGetInvTaxTable (entry); + else + table = gncEntryGetBillTaxTable (entry); + + return gncTaxTableGetName (table); +} + +static const char * get_taxincluded_entry (VirtualLocation virt_loc, + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) +{ + GncEntryLedger *ledger = user_data; + GncEntry *entry; + gboolean taxable, taxincluded; + + /* load the cell properly; just shadow the value */ + if (!conditionally_changed) + { + taxable = gnc_entry_ledger_get_taxable_value (virt_loc, translate, + conditionally_changed, + user_data); + if (!taxable) + return NULL; + } + + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + if (ledger->is_invoice) + taxincluded = gncEntryGetInvTaxIncluded (entry); + else + taxincluded = gncEntryGetBillTaxIncluded (entry); + + return gnc_checkbox_cell_get_string (taxincluded); +} + +static const char * get_inv_entry (VirtualLocation virt_loc, + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) +{ + GncEntryLedger *ledger = user_data; + GncEntry *entry; + + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + + return gnc_checkbox_cell_get_string (gncEntryGetInvoice (entry) != NULL); + + /* XXX: what if this entry doesn't belong to this invoice? + * Or, better question, what if this is the blank_entry on + * an invoice page? For the latter, don't worry about it; + * it will be added automatically during the Save operation + */ +} + +static const char * get_value_entry (VirtualLocation virt_loc, + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) +{ + GncEntryLedger *ledger = user_data; + gnc_numeric value; + + /* Check if this is the current cursor */ + if (virt_cell_loc_equal (ledger->table->current_cursor_loc.vcell_loc, + virt_loc.vcell_loc)) + { + gnc_entry_ledger_compute_value (ledger, &value, NULL); + } + else + { + GncEntry *entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + + if (entry == gnc_entry_ledger_get_blank_entry (ledger)) + return NULL; + + value = gncEntryReturnValue (entry, ledger->is_invoice); + } + return xaccPrintAmount (value, gnc_default_print_info (FALSE)); } static const char * get_taxval_entry (VirtualLocation virt_loc, @@ -458,738 +470,773 @@ static const char * get_taxval_entry (VirtualLocation virt_loc, gboolean *conditionally_changed, gpointer user_data) { - GncEntryLedger *ledger = user_data; - gnc_numeric value; + GncEntryLedger *ledger = user_data; + gnc_numeric value; - /* Check if this is the current cursor */ - if (virt_cell_loc_equal (ledger->table->current_cursor_loc.vcell_loc, - virt_loc.vcell_loc)) { - gnc_entry_ledger_compute_value (ledger, NULL, &value); - } else { - GncEntry *entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + /* Check if this is the current cursor */ + if (virt_cell_loc_equal (ledger->table->current_cursor_loc.vcell_loc, + virt_loc.vcell_loc)) + { + gnc_entry_ledger_compute_value (ledger, NULL, &value); + } + else + { + GncEntry *entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - if (entry == gnc_entry_ledger_get_blank_entry (ledger)) - return NULL; + if (entry == gnc_entry_ledger_get_blank_entry (ledger)) + return NULL; - value = gncEntryReturnTaxValue (entry, ledger->is_invoice); - } + value = gncEntryReturnTaxValue (entry, ledger->is_invoice); + } - return xaccPrintAmount (value, gnc_default_print_info (FALSE)); + return xaccPrintAmount (value, gnc_default_print_info (FALSE)); } static const char * get_billable_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) { - GncEntryLedger *ledger = user_data; - GncEntry *entry; + GncEntryLedger *ledger = user_data; + GncEntry *entry; - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - return gnc_checkbox_cell_get_string (gncEntryGetBillable (entry)); + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + return gnc_checkbox_cell_get_string (gncEntryGetBillable (entry)); } static const char * get_payment_entry (VirtualLocation virt_loc, - gboolean translate, - gboolean *conditionally_changed, - gpointer user_data) + gboolean translate, + gboolean *conditionally_changed, + gpointer user_data) { - GncEntryLedger *ledger = user_data; - GncEntry *entry; - GncEntryPaymentType type; + GncEntryLedger *ledger = user_data; + GncEntry *entry; + GncEntryPaymentType type; - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - if (!entry) - return ""; + if (!entry) + return ""; - type = gncEntryGetBillPayment (entry); + type = gncEntryGetBillPayment (entry); - switch (type) { - case GNC_PAYMENT_CASH: - return _("Cash"); - case GNC_PAYMENT_CARD: - return _("Charge"); - default: - g_warning ("Invalid payment type: %d", type); - return ""; - } + switch (type) + { + case GNC_PAYMENT_CASH: + return _("Cash"); + case GNC_PAYMENT_CARD: + return _("Charge"); + default: + g_warning ("Invalid payment type: %d", type); + return ""; + } } /* GET_HELP */ static char * get_acct_help (VirtualLocation virt_loc, gpointer user_data) { - const char *help; - GncEntryLedger *ledger = user_data; + const char *help; + GncEntryLedger *ledger = user_data; - help = gnc_table_get_entry (ledger->table, virt_loc); - if (!help || *help == '\0') - help = _("Enter the income/expense account for the Entry, " - "or choose one from the list"); + help = gnc_table_get_entry (ledger->table, virt_loc); + if (!help || *help == '\0') + help = _("Enter the income/expense account for the Entry, " + "or choose one from the list"); - return g_strdup (help); + return g_strdup (help); } static char * get_actn_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - const char *help; + GncEntryLedger *ledger = user_data; + const char *help; - help = gnc_table_get_entry (ledger->table, virt_loc); - if (!help || *help == '\0') - help = _("Enter the type of Entry"); + help = gnc_table_get_entry (ledger->table, virt_loc); + if (!help || *help == '\0') + help = _("Enter the type of Entry"); - return g_strdup (help); + return g_strdup (help); } static char * get_date_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - BasicCell *cell; - char string[1024]; - struct tm *tm; - Timespec ts; - time_t tt; + GncEntryLedger *ledger = user_data; + BasicCell *cell; + char string[1024]; + struct tm *tm; + Timespec ts; + time_t tt; - cell = gnc_table_get_cell (ledger->table, virt_loc); - if (!cell) - return NULL; + cell = gnc_table_get_cell (ledger->table, virt_loc); + if (!cell) + return NULL; - if (!cell->value || *cell->value == '\0') - return NULL; + if (!cell->value || *cell->value == '\0') + return NULL; - gnc_date_cell_get_date ((DateCell *) cell, &ts); - tt = ts.tv_sec; - tm = localtime (&tt); - qof_strftime (string, sizeof(string), "%A %d %B %Y", tm); + gnc_date_cell_get_date ((DateCell *) cell, &ts); + tt = ts.tv_sec; + tm = localtime (&tt); + qof_strftime (string, sizeof(string), "%A %d %B %Y", tm); - return g_strdup (string); + return g_strdup (string); } static char * get_desc_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - const char *help; + GncEntryLedger *ledger = user_data; + const char *help; - help = gnc_table_get_entry (ledger->table, virt_loc); - if (!help || *help == '\0') - help = _("Enter the Entry Description"); + help = gnc_table_get_entry (ledger->table, virt_loc); + if (!help || *help == '\0') + help = _("Enter the Entry Description"); - return g_strdup (help); + return g_strdup (help); } static char * get_disc_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - const char *help; - gint type; + GncEntryLedger *ledger = user_data; + const char *help; + gint type; - type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL); + type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL); - switch (type) { - case GNC_AMT_TYPE_VALUE: - help = _("Enter the Discount Amount"); - break; - case GNC_AMT_TYPE_PERCENT: - help = _("Enter the Discount Percent"); - break; - default: - help = _("Enter the Discount ... unknown type"); - break; - } + switch (type) + { + case GNC_AMT_TYPE_VALUE: + help = _("Enter the Discount Amount"); + break; + case GNC_AMT_TYPE_PERCENT: + help = _("Enter the Discount Percent"); + break; + default: + help = _("Enter the Discount ... unknown type"); + break; + } - return g_strdup (help); + return g_strdup (help); } static char * get_distype_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - const char *help; - gint type; + GncEntryLedger *ledger = user_data; + const char *help; + gint type; - type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL); + type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL); - switch (type) { - case GNC_AMT_TYPE_VALUE: - help = _("Discount Type: Monetary Value"); - break; - case GNC_AMT_TYPE_PERCENT: - help = _("Discount Type: Percent"); - break; - default: - help = _("Select the Discount Type"); - break; - } - return g_strdup (help); + switch (type) + { + case GNC_AMT_TYPE_VALUE: + help = _("Discount Type: Monetary Value"); + break; + case GNC_AMT_TYPE_PERCENT: + help = _("Discount Type: Percent"); + break; + default: + help = _("Select the Discount Type"); + break; + } + return g_strdup (help); } static char * get_dishow_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - const char *help; - gint type; + GncEntryLedger *ledger = user_data; + const char *help; + gint type; - type = gnc_entry_ledger_get_type (ledger, ENTRY_DISHOW_CELL); + type = gnc_entry_ledger_get_type (ledger, ENTRY_DISHOW_CELL); - switch (type) { - case GNC_DISC_PRETAX: - help = _("Tax computed after discount is applied"); - break; - case GNC_DISC_SAMETIME: - help = _("Discount and tax both applied on pretax value"); - break; - case GNC_DISC_POSTTAX: - help = _("Discount computed after tax is applied"); - break; - default: - help = _("Select how to compute the Discount and Taxes"); - break; - } - return g_strdup (help); + switch (type) + { + case GNC_DISC_PRETAX: + help = _("Tax computed after discount is applied"); + break; + case GNC_DISC_SAMETIME: + help = _("Discount and tax both applied on pretax value"); + break; + case GNC_DISC_POSTTAX: + help = _("Discount computed after tax is applied"); + break; + default: + help = _("Select how to compute the Discount and Taxes"); + break; + } + return g_strdup (help); } static char * get_pric_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - const char *help; + GncEntryLedger *ledger = user_data; + const char *help; - help = gnc_table_get_entry (ledger->table, virt_loc); - if (!help || *help == '\0') - help = _("Enter the unit-Price for this Entry"); + help = gnc_table_get_entry (ledger->table, virt_loc); + if (!help || *help == '\0') + help = _("Enter the unit-Price for this Entry"); - return g_strdup (help); + return g_strdup (help); } static char * get_qty_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - const char *help; + GncEntryLedger *ledger = user_data; + const char *help; - help = gnc_table_get_entry (ledger->table, virt_loc); - if (!help || *help == '\0') - help = _("Enter the Quantity of units for this Entry"); + help = gnc_table_get_entry (ledger->table, virt_loc); + if (!help || *help == '\0') + help = _("Enter the Quantity of units for this Entry"); - return g_strdup (help); + return g_strdup (help); } static char * get_taxtable_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - const char *help; + GncEntryLedger *ledger = user_data; + const char *help; - help = gnc_table_get_entry (ledger->table, virt_loc); - if (!help || *help == '\0') - help = _("Enter the Tax Table to apply to this entry"); + help = gnc_table_get_entry (ledger->table, virt_loc); + if (!help || *help == '\0') + help = _("Enter the Tax Table to apply to this entry"); - return g_strdup (help); + return g_strdup (help); } static char * get_taxable_help (VirtualLocation virt_loc, gpointer user_data) { - const char *help; + const char *help; - help = _("Is this entry taxable?"); + help = _("Is this entry taxable?"); - return g_strdup (help); + return g_strdup (help); } static char * get_taxincluded_help (VirtualLocation virt_loc, gpointer user_data) { - const char *help; + const char *help; - help = _("Is the tax already included in the price of this entry?"); + help = _("Is the tax already included in the price of this entry?"); - return g_strdup (help); + return g_strdup (help); } static char * get_inv_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - const char *help; + GncEntryLedger *ledger = user_data; + const char *help; - switch (ledger->type) { - case GNCENTRY_ORDER_ENTRY: - case GNCENTRY_ORDER_VIEWER: - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_BILL_VIEWER: - case GNCENTRY_EXPVOUCHER_ENTRY: - case GNCENTRY_EXPVOUCHER_VIEWER: - help = _("Is this entry Invoiced?"); - break; - case GNCENTRY_INVOICE_ENTRY: - case GNCENTRY_INVOICE_VIEWER: - help = _("Include this entry on this invoice?"); - break; - default: - help = _("Unknown EntryLedger Type"); - } + switch (ledger->type) + { + case GNCENTRY_ORDER_ENTRY: + case GNCENTRY_ORDER_VIEWER: + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_BILL_VIEWER: + case GNCENTRY_EXPVOUCHER_ENTRY: + case GNCENTRY_EXPVOUCHER_VIEWER: + help = _("Is this entry Invoiced?"); + break; + case GNCENTRY_INVOICE_ENTRY: + case GNCENTRY_INVOICE_VIEWER: + help = _("Include this entry on this invoice?"); + break; + default: + help = _("Unknown EntryLedger Type"); + } - return g_strdup (help); + return g_strdup (help); } static char * get_value_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - const char *help; + GncEntryLedger *ledger = user_data; + const char *help; - help = gnc_table_get_entry (ledger->table, virt_loc); - if (!help || *help == '\0') - help = _("The subtotal value of this entry "); + help = gnc_table_get_entry (ledger->table, virt_loc); + if (!help || *help == '\0') + help = _("The subtotal value of this entry "); - return g_strdup (help); + return g_strdup (help); } static char * get_taxval_help (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - const char *help; + GncEntryLedger *ledger = user_data; + const char *help; - help = gnc_table_get_entry (ledger->table, virt_loc); - if (!help || *help == '\0') - help = _("The total tax of this entry "); + help = gnc_table_get_entry (ledger->table, virt_loc); + if (!help || *help == '\0') + help = _("The total tax of this entry "); - return g_strdup (help); + return g_strdup (help); } static char * get_billable_help (VirtualLocation virt_loc, gpointer user_data) { - const char *help; + const char *help; - help = _("Is this entry billable to a customer or job?"); + help = _("Is this entry billable to a customer or job?"); - return g_strdup (help); + return g_strdup (help); } static char * get_payment_help (VirtualLocation virt_loc, gpointer user_data) { - const char *help; + const char *help; - help = _("How did you pay for this item?"); + help = _("How did you pay for this item?"); - return g_strdup (help); + return g_strdup (help); } /* GET_IO_FLAGS */ static CellIOFlags get_standard_io_flags (VirtualLocation virt_loc, - gpointer user_data) + gpointer user_data) { - GncEntryLedger *ledger = user_data; - switch (ledger->type) { - case GNCENTRY_ORDER_ENTRY: - case GNCENTRY_BILL_ENTRY: - case GNCENTRY_EXPVOUCHER_ENTRY: + GncEntryLedger *ledger = user_data; + switch (ledger->type) { - GncEntry *entry = - gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + case GNCENTRY_ORDER_ENTRY: + case GNCENTRY_BILL_ENTRY: + case GNCENTRY_EXPVOUCHER_ENTRY: + { + GncEntry *entry = + gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - /* - * If the type is an order_entry and the entry was invoiced, - * make the entry immutable - */ - if (gncEntryGetInvoice (entry) != NULL) - return XACC_CELL_ALLOW_SHADOW; + /* + * If the type is an order_entry and the entry was invoiced, + * make the entry immutable + */ + if (gncEntryGetInvoice (entry) != NULL) + return XACC_CELL_ALLOW_SHADOW; } /* FALLTHROUGH */ - default: - return XACC_CELL_ALLOW_ALL; - } + default: + return XACC_CELL_ALLOW_ALL; + } } static CellIOFlags get_typecell_io_flags (VirtualLocation virt_loc, - gpointer user_data) + gpointer user_data) { - return (get_standard_io_flags (virt_loc, user_data) | - XACC_CELL_ALLOW_EXACT_ONLY); + return (get_standard_io_flags (virt_loc, user_data) | + XACC_CELL_ALLOW_EXACT_ONLY); } static CellIOFlags get_inv_io_flags (VirtualLocation virt_loc, - gpointer user_data) + gpointer user_data) { - GncEntryLedger *ledger = user_data; + GncEntryLedger *ledger = user_data; - switch (ledger->type) { - case GNCENTRY_INVOICE_ENTRY: - { - /* This cell should be mutably IFF this entry is attached to - * a bill, order, or something else. - */ - GncEntry * entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + switch (ledger->type) + { + case GNCENTRY_INVOICE_ENTRY: + { + /* This cell should be mutably IFF this entry is attached to + * a bill, order, or something else. + */ + GncEntry * entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - if ((gncEntryGetOrder (entry) != NULL) || (gncEntryGetBill (entry) != NULL)) - return XACC_CELL_ALLOW_ALL | XACC_CELL_ALLOW_EXACT_ONLY; + if ((gncEntryGetOrder (entry) != NULL) || (gncEntryGetBill (entry) != NULL)) + return XACC_CELL_ALLOW_ALL | XACC_CELL_ALLOW_EXACT_ONLY; - } - /* FALLTHROUGH */ - default: - return XACC_CELL_ALLOW_SHADOW; - } + } + /* FALLTHROUGH */ + default: + return XACC_CELL_ALLOW_SHADOW; + } } static CellIOFlags get_value_io_flags (VirtualLocation virt_loc, - gpointer user_data) + gpointer user_data) { - return XACC_CELL_ALLOW_SHADOW; + return XACC_CELL_ALLOW_SHADOW; } static CellIOFlags get_tax_io_flags (VirtualLocation virt_loc, - gpointer user_data) + gpointer user_data) { - GncEntryLedger *ledger = user_data; - gboolean taxable; + GncEntryLedger *ledger = user_data; + gboolean taxable; - taxable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL); + taxable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL); - /* Only print the taxtable and taxincluded cells if taxable is true */ - if (taxable) - return get_standard_io_flags (virt_loc, user_data); + /* Only print the taxtable and taxincluded cells if taxable is true */ + if (taxable) + return get_standard_io_flags (virt_loc, user_data); - /* Shadow the value, so the cell is loaded properly */ - return XACC_CELL_ALLOW_SHADOW; + /* Shadow the value, so the cell is loaded properly */ + return XACC_CELL_ALLOW_SHADOW; } static CellIOFlags get_taxincluded_io_flags (VirtualLocation virt_loc, - gpointer user_data) + gpointer user_data) { - CellIOFlags flags = get_tax_io_flags (virt_loc, user_data); - if (flags == XACC_CELL_ALLOW_SHADOW) - return flags; - return flags | XACC_CELL_ALLOW_EXACT_ONLY; + CellIOFlags flags = get_tax_io_flags (virt_loc, user_data); + if (flags == XACC_CELL_ALLOW_SHADOW) + return flags; + return flags | XACC_CELL_ALLOW_EXACT_ONLY; } static CellIOFlags get_qty_io_flags (VirtualLocation virt_loc, gpointer user_data) { - GncEntryLedger *ledger = user_data; - GncEntry *entry; - CellIOFlags flags = get_standard_io_flags (virt_loc, user_data); + GncEntryLedger *ledger = user_data; + GncEntry *entry; + CellIOFlags flags = get_standard_io_flags (virt_loc, user_data); + + /* If this isn't an invoice, or the flags are already read-only ... */ + if (!ledger->is_invoice || flags == XACC_CELL_ALLOW_SHADOW) + return flags; + + /* ok, if this is an invoice ledger AND this entry is attached to a + * bill (i.e. it's billable), freeze the quantity + */ + entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); + if (gncEntryGetBillable (entry)) + return XACC_CELL_ALLOW_SHADOW; - /* If this isn't an invoice, or the flags are already read-only ... */ - if (!ledger->is_invoice || flags == XACC_CELL_ALLOW_SHADOW) return flags; - - /* ok, if this is an invoice ledger AND this entry is attached to a - * bill (i.e. it's billable), freeze the quantity - */ - entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc); - if (gncEntryGetBillable (entry)) - return XACC_CELL_ALLOW_SHADOW; - - return flags; } /* GET BG_COLORS */ static guint32 gnc_entry_ledger_get_bg_color (VirtualLocation virt_loc, - gboolean *hatching, gpointer user_data) + gboolean *hatching, gpointer user_data) { - GncEntryLedger *ledger = user_data; - VirtualCell *vcell; - guint32 bg_color; - gboolean is_current; + GncEntryLedger *ledger = user_data; + VirtualCell *vcell; + guint32 bg_color; + gboolean is_current; - if (hatching) - *hatching = FALSE; + if (hatching) + *hatching = FALSE; - bg_color = 0xffffff; /* white */ + bg_color = 0xffffff; /* white */ - if (!ledger) return bg_color; + if (!ledger) return bg_color; - if (gnc_table_virtual_location_in_header (ledger->table, virt_loc)) - return reg_colors.header_bg_color; + if (gnc_table_virtual_location_in_header (ledger->table, virt_loc)) + return reg_colors.header_bg_color; - vcell = gnc_table_get_virtual_cell (ledger->table, virt_loc.vcell_loc); - if (!vcell || !vcell->cellblock) - return bg_color; + vcell = gnc_table_get_virtual_cell (ledger->table, virt_loc.vcell_loc); + if (!vcell || !vcell->cellblock) + return bg_color; - if ((virt_loc.phys_col_offset < vcell->cellblock->start_col) || - (virt_loc.phys_col_offset > vcell->cellblock->stop_col)) - return bg_color; + if ((virt_loc.phys_col_offset < vcell->cellblock->start_col) || + (virt_loc.phys_col_offset > vcell->cellblock->stop_col)) + return bg_color; - is_current = virt_cell_loc_equal - (ledger->table->current_cursor_loc.vcell_loc, virt_loc.vcell_loc); + is_current = virt_cell_loc_equal + (ledger->table->current_cursor_loc.vcell_loc, virt_loc.vcell_loc); + + if (is_current) + return vcell->start_primary_color ? + reg_colors.primary_active_bg_color : + reg_colors.secondary_active_bg_color; - if (is_current) return vcell->start_primary_color ? - reg_colors.primary_active_bg_color : - reg_colors.secondary_active_bg_color; - - return vcell->start_primary_color ? - reg_colors.primary_bg_color : reg_colors.secondary_bg_color; + reg_colors.primary_bg_color : reg_colors.secondary_bg_color; } /* SAVE CELLS */ static void gnc_entry_ledger_save_cells (gpointer save_data, - gpointer user_data) + gpointer user_data) { - GncEntryLedger *ledger = user_data; - GncEntry *entry = save_data; + GncEntryLedger *ledger = user_data; + GncEntry *entry = save_data; - g_return_if_fail (entry != NULL); + g_return_if_fail (entry != NULL); - /* copy the contents from the cursor to the split */ + /* copy the contents from the cursor to the split */ - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_IACCT_CELL, TRUE)) { - Account *acc; + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_IACCT_CELL, TRUE)) + { + Account *acc; - acc = gnc_entry_ledger_get_account (ledger, ENTRY_IACCT_CELL); + acc = gnc_entry_ledger_get_account (ledger, ENTRY_IACCT_CELL); - if (acc != NULL) - gncEntrySetInvAccount (entry, acc); - } - - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_BACCT_CELL, TRUE)) { - Account *acc; - - acc = gnc_entry_ledger_get_account (ledger, ENTRY_BACCT_CELL); - - if (acc != NULL) - gncEntrySetBillAccount (entry, acc); - } - - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_ACTN_CELL, TRUE)) { - const char *value; - - value = gnc_table_layout_get_cell_value (ledger->table->layout, - ENTRY_ACTN_CELL); - gncEntrySetAction (entry, value); - } - - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_DATE_CELL, TRUE)) { - BasicCell *cell; - Timespec ts; - - cell = gnc_table_layout_get_cell (ledger->table->layout, ENTRY_DATE_CELL); - - /* commit any pending changes */ - gnc_date_cell_commit ((DateCell *) cell); - - gnc_date_cell_get_date ((DateCell *) cell, &ts); - gncEntrySetDate (entry, ts); - } - - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_DESC_CELL, TRUE)) { - const char *value; - - value = gnc_table_layout_get_cell_value (ledger->table->layout, - ENTRY_DESC_CELL); - gncEntrySetDescription (entry, value); - } - - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_DISC_CELL, TRUE)) { - gnc_numeric amount; - - if (gnc_entry_ledger_get_numeric (ledger, ENTRY_DISC_CELL, &amount)) - gncEntrySetInvDiscount (entry, amount); - } - - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_DISTYPE_CELL, TRUE)) { - gint type; - - type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL); - - if (type != -1) - gncEntrySetInvDiscountType (entry, type); - } - - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_DISHOW_CELL, TRUE)) { - gint type; - - type = gnc_entry_ledger_get_type (ledger, ENTRY_DISHOW_CELL); - - if (type != -1) - gncEntrySetInvDiscountHow (entry, type); - } - - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_QTY_CELL, TRUE)) { - gnc_numeric amount; - - if (gnc_entry_ledger_get_numeric (ledger, ENTRY_QTY_CELL, &amount)) - gncEntrySetQuantity (entry, amount); - } - - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_BILLABLE_CELL, TRUE)) { - gboolean billable; - - billable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_BILLABLE_CELL); - gncEntrySetBillable (entry, billable); - } - - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_PAYMENT_CELL, TRUE)) { - const char *value; - - value = gnc_table_layout_get_cell_value (ledger->table->layout, - ENTRY_PAYMENT_CELL); - if (!safe_strcmp (value, _("Cash"))) - gncEntrySetBillPayment (entry, GNC_PAYMENT_CASH); - else if (!safe_strcmp (value, _("Charge"))) - gncEntrySetBillPayment (entry, GNC_PAYMENT_CARD); - else - g_warning ("Invalid Payment cell: %s", value ? value : "(null)"); - } - - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_PRIC_CELL, TRUE)) { - gnc_numeric amount; - - if (gnc_entry_ledger_get_numeric (ledger, ENTRY_PRIC_CELL, &amount)) { - if (ledger->is_invoice) - gncEntrySetInvPrice (entry, amount); - else - gncEntrySetBillPrice (entry, amount); + if (acc != NULL) + gncEntrySetInvAccount (entry, acc); } - } - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_TAXABLE_CELL, TRUE)) { - gboolean taxable; + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_BACCT_CELL, TRUE)) + { + Account *acc; - taxable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL); - if (ledger->is_invoice) - gncEntrySetInvTaxable (entry, taxable); - else - gncEntrySetBillTaxable (entry, taxable); - } + acc = gnc_entry_ledger_get_account (ledger, ENTRY_BACCT_CELL); - /* XXX: Only (re-set) these if taxable is TRUE? */ - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_TAXTABLE_CELL, TRUE)) { - GncTaxTable *table; - - table = gnc_entry_ledger_get_taxtable (ledger, ENTRY_TAXTABLE_CELL); - if (table) { - if (ledger->is_invoice) - gncEntrySetInvTaxTable (entry, table); - else - gncEntrySetBillTaxTable (entry, table); + if (acc != NULL) + gncEntrySetBillAccount (entry, acc); } - } - if (gnc_table_layout_get_cell_changed (ledger->table->layout, - ENTRY_TAXINCLUDED_CELL, TRUE)) { - gboolean taxincluded; + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_ACTN_CELL, TRUE)) + { + const char *value; - taxincluded = gnc_entry_ledger_get_checkmark (ledger, - ENTRY_TAXINCLUDED_CELL); - if (ledger->is_invoice) - gncEntrySetInvTaxIncluded (entry, taxincluded); - else - gncEntrySetBillTaxIncluded (entry, taxincluded); - } - - if (ledger->type == GNCENTRY_INVOICE_ENTRY) { - gboolean inv_value; - - inv_value = gnc_entry_ledger_get_checkmark (ledger, ENTRY_INV_CELL); - - if (inv_value) { - /* Add this to the invoice (if it's not already attached) */ - if (gncEntryGetInvoice (entry) == NULL) - gncInvoiceAddEntry (ledger->invoice, entry); - - } else { - /* Remove from the invoice iff we're attached to an order or bill */ - if ((gncEntryGetOrder (entry) != NULL) || - (gncEntryGetBill (entry) != NULL)) - gncInvoiceRemoveEntry (ledger->invoice, entry); + value = gnc_table_layout_get_cell_value (ledger->table->layout, + ENTRY_ACTN_CELL); + gncEntrySetAction (entry, value); + } + + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_DATE_CELL, TRUE)) + { + BasicCell *cell; + Timespec ts; + + cell = gnc_table_layout_get_cell (ledger->table->layout, ENTRY_DATE_CELL); + + /* commit any pending changes */ + gnc_date_cell_commit ((DateCell *) cell); + + gnc_date_cell_get_date ((DateCell *) cell, &ts); + gncEntrySetDate (entry, ts); + } + + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_DESC_CELL, TRUE)) + { + const char *value; + + value = gnc_table_layout_get_cell_value (ledger->table->layout, + ENTRY_DESC_CELL); + gncEntrySetDescription (entry, value); + } + + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_DISC_CELL, TRUE)) + { + gnc_numeric amount; + + if (gnc_entry_ledger_get_numeric (ledger, ENTRY_DISC_CELL, &amount)) + gncEntrySetInvDiscount (entry, amount); + } + + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_DISTYPE_CELL, TRUE)) + { + gint type; + + type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL); + + if (type != -1) + gncEntrySetInvDiscountType (entry, type); + } + + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_DISHOW_CELL, TRUE)) + { + gint type; + + type = gnc_entry_ledger_get_type (ledger, ENTRY_DISHOW_CELL); + + if (type != -1) + gncEntrySetInvDiscountHow (entry, type); + } + + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_QTY_CELL, TRUE)) + { + gnc_numeric amount; + + if (gnc_entry_ledger_get_numeric (ledger, ENTRY_QTY_CELL, &amount)) + gncEntrySetQuantity (entry, amount); + } + + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_BILLABLE_CELL, TRUE)) + { + gboolean billable; + + billable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_BILLABLE_CELL); + gncEntrySetBillable (entry, billable); + } + + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_PAYMENT_CELL, TRUE)) + { + const char *value; + + value = gnc_table_layout_get_cell_value (ledger->table->layout, + ENTRY_PAYMENT_CELL); + if (!safe_strcmp (value, _("Cash"))) + gncEntrySetBillPayment (entry, GNC_PAYMENT_CASH); + else if (!safe_strcmp (value, _("Charge"))) + gncEntrySetBillPayment (entry, GNC_PAYMENT_CARD); + else + g_warning ("Invalid Payment cell: %s", value ? value : "(null)"); + } + + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_PRIC_CELL, TRUE)) + { + gnc_numeric amount; + + if (gnc_entry_ledger_get_numeric (ledger, ENTRY_PRIC_CELL, &amount)) + { + if (ledger->is_invoice) + gncEntrySetInvPrice (entry, amount); + else + gncEntrySetBillPrice (entry, amount); + } + } + + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_TAXABLE_CELL, TRUE)) + { + gboolean taxable; + + taxable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL); + if (ledger->is_invoice) + gncEntrySetInvTaxable (entry, taxable); + else + gncEntrySetBillTaxable (entry, taxable); + } + + /* XXX: Only (re-set) these if taxable is TRUE? */ + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_TAXTABLE_CELL, TRUE)) + { + GncTaxTable *table; + + table = gnc_entry_ledger_get_taxtable (ledger, ENTRY_TAXTABLE_CELL); + if (table) + { + if (ledger->is_invoice) + gncEntrySetInvTaxTable (entry, table); + else + gncEntrySetBillTaxTable (entry, table); + } + } + + if (gnc_table_layout_get_cell_changed (ledger->table->layout, + ENTRY_TAXINCLUDED_CELL, TRUE)) + { + gboolean taxincluded; + + taxincluded = gnc_entry_ledger_get_checkmark (ledger, + ENTRY_TAXINCLUDED_CELL); + if (ledger->is_invoice) + gncEntrySetInvTaxIncluded (entry, taxincluded); + else + gncEntrySetBillTaxIncluded (entry, taxincluded); + } + + if (ledger->type == GNCENTRY_INVOICE_ENTRY) + { + gboolean inv_value; + + inv_value = gnc_entry_ledger_get_checkmark (ledger, ENTRY_INV_CELL); + + if (inv_value) + { + /* Add this to the invoice (if it's not already attached) */ + if (gncEntryGetInvoice (entry) == NULL) + gncInvoiceAddEntry (ledger->invoice, entry); + + } + else + { + /* Remove from the invoice iff we're attached to an order or bill */ + if ((gncEntryGetOrder (entry) != NULL) || + (gncEntryGetBill (entry) != NULL)) + gncInvoiceRemoveEntry (ledger->invoice, entry); + } } - } } /* Set Cell Handlers */ static void gnc_entry_ledger_model_new_handlers (TableModel *model, - GncEntryLedgerType type) + GncEntryLedgerType type) { - struct model_desc { - const char * cell; - gpointer entry_handler; - gpointer label_handler; - gpointer help_handler; - gpointer io_flags_handler; - } models[] = { - { ENTRY_IACCT_CELL, get_iacct_entry, get_iacct_label, get_acct_help, get_standard_io_flags }, - { ENTRY_BACCT_CELL, get_bacct_entry, get_bacct_label, get_acct_help, get_standard_io_flags }, - { ENTRY_ACTN_CELL, get_actn_entry, get_actn_label, get_actn_help, get_standard_io_flags }, - { ENTRY_DATE_CELL, get_date_entry, get_date_label, get_date_help, get_standard_io_flags }, - { ENTRY_DESC_CELL, get_desc_entry, get_desc_label, get_desc_help, get_standard_io_flags }, - { ENTRY_DISC_CELL, get_disc_entry, get_disc_label, get_disc_help, get_standard_io_flags }, - { ENTRY_DISTYPE_CELL, get_distype_entry, get_distype_label, get_distype_help, get_typecell_io_flags }, - { ENTRY_DISHOW_CELL, get_dishow_entry, get_dishow_label, get_dishow_help, get_typecell_io_flags }, - { ENTRY_PRIC_CELL, get_pric_entry, get_pric_label, get_pric_help, get_standard_io_flags }, - { ENTRY_QTY_CELL, get_qty_entry, get_qty_label, get_qty_help, get_qty_io_flags }, - { ENTRY_TAXABLE_CELL, get_taxable_entry, get_taxable_label, get_taxable_help, get_typecell_io_flags }, - { ENTRY_TAXTABLE_CELL, get_taxtable_entry, get_taxtable_label, get_taxtable_help, get_tax_io_flags }, - { ENTRY_TAXINCLUDED_CELL, get_taxincluded_entry, get_taxincluded_label, get_taxincluded_help, get_taxincluded_io_flags }, - { ENTRY_INV_CELL, get_inv_entry, get_inv_label, get_inv_help, get_inv_io_flags }, - { ENTRY_VALUE_CELL, get_value_entry, get_value_label, get_value_help, get_value_io_flags }, - { ENTRY_TAXVAL_CELL, get_taxval_entry, get_taxval_label, get_taxval_help, get_value_io_flags }, - { ENTRY_BILLABLE_CELL, get_billable_entry, get_billable_label, get_billable_help, get_typecell_io_flags }, - { ENTRY_PAYMENT_CELL, get_payment_entry, get_payment_label, get_payment_help, get_standard_io_flags }, - }; - unsigned int i; + struct model_desc + { + const char * cell; + gpointer entry_handler; + gpointer label_handler; + gpointer help_handler; + gpointer io_flags_handler; + } models[] = + { + { ENTRY_IACCT_CELL, get_iacct_entry, get_iacct_label, get_acct_help, get_standard_io_flags }, + { ENTRY_BACCT_CELL, get_bacct_entry, get_bacct_label, get_acct_help, get_standard_io_flags }, + { ENTRY_ACTN_CELL, get_actn_entry, get_actn_label, get_actn_help, get_standard_io_flags }, + { ENTRY_DATE_CELL, get_date_entry, get_date_label, get_date_help, get_standard_io_flags }, + { ENTRY_DESC_CELL, get_desc_entry, get_desc_label, get_desc_help, get_standard_io_flags }, + { ENTRY_DISC_CELL, get_disc_entry, get_disc_label, get_disc_help, get_standard_io_flags }, + { ENTRY_DISTYPE_CELL, get_distype_entry, get_distype_label, get_distype_help, get_typecell_io_flags }, + { ENTRY_DISHOW_CELL, get_dishow_entry, get_dishow_label, get_dishow_help, get_typecell_io_flags }, + { ENTRY_PRIC_CELL, get_pric_entry, get_pric_label, get_pric_help, get_standard_io_flags }, + { ENTRY_QTY_CELL, get_qty_entry, get_qty_label, get_qty_help, get_qty_io_flags }, + { ENTRY_TAXABLE_CELL, get_taxable_entry, get_taxable_label, get_taxable_help, get_typecell_io_flags }, + { ENTRY_TAXTABLE_CELL, get_taxtable_entry, get_taxtable_label, get_taxtable_help, get_tax_io_flags }, + { ENTRY_TAXINCLUDED_CELL, get_taxincluded_entry, get_taxincluded_label, get_taxincluded_help, get_taxincluded_io_flags }, + { ENTRY_INV_CELL, get_inv_entry, get_inv_label, get_inv_help, get_inv_io_flags }, + { ENTRY_VALUE_CELL, get_value_entry, get_value_label, get_value_help, get_value_io_flags }, + { ENTRY_TAXVAL_CELL, get_taxval_entry, get_taxval_label, get_taxval_help, get_value_io_flags }, + { ENTRY_BILLABLE_CELL, get_billable_entry, get_billable_label, get_billable_help, get_typecell_io_flags }, + { ENTRY_PAYMENT_CELL, get_payment_entry, get_payment_label, get_payment_help, get_standard_io_flags }, + }; + unsigned int i; - gnc_table_model_set_default_bg_color_handler + gnc_table_model_set_default_bg_color_handler (model, gnc_entry_ledger_get_bg_color); - for (i = 0; i < (sizeof(models)/sizeof(*models)); i++) { - if (models[i].entry_handler) - gnc_table_model_set_entry_handler (model, models[i].entry_handler, - models[i].cell); - if (models[i].label_handler) - gnc_table_model_set_label_handler (model, models[i].label_handler, - models[i].cell); - if (models[i].help_handler) - gnc_table_model_set_help_handler (model, models[i].help_handler, - models[i].cell); - if (models[i].io_flags_handler) - gnc_table_model_set_io_flags_handler (model, models[i].io_flags_handler, - models[i].cell); - } /* for */ + for (i = 0; i < (sizeof(models) / sizeof(*models)); i++) + { + if (models[i].entry_handler) + gnc_table_model_set_entry_handler (model, models[i].entry_handler, + models[i].cell); + if (models[i].label_handler) + gnc_table_model_set_label_handler (model, models[i].label_handler, + models[i].cell); + if (models[i].help_handler) + gnc_table_model_set_help_handler (model, models[i].help_handler, + models[i].cell); + if (models[i].io_flags_handler) + gnc_table_model_set_io_flags_handler (model, models[i].io_flags_handler, + models[i].cell); + } /* for */ - /* - model->cell_data_allocator = ; - model->cell_data_deallocator = ; - model->cell_data_copy = ; - */ + /* + model->cell_data_allocator = ; + model->cell_data_deallocator = ; + model->cell_data_copy = ; + */ - gnc_table_model_set_post_save_handler (model, gnc_entry_ledger_save_cells); + gnc_table_model_set_post_save_handler (model, gnc_entry_ledger_save_cells); - switch (type) { - case GNCENTRY_ORDER_VIEWER: - case GNCENTRY_INVOICE_VIEWER: - case GNCENTRY_BILL_VIEWER: - case GNCENTRY_EXPVOUCHER_VIEWER: - /* make this table read-only */ - gnc_table_model_set_read_only (model, TRUE); - break; - default: - break; - } + switch (type) + { + case GNCENTRY_ORDER_VIEWER: + case GNCENTRY_INVOICE_VIEWER: + case GNCENTRY_BILL_VIEWER: + case GNCENTRY_EXPVOUCHER_VIEWER: + /* make this table read-only */ + gnc_table_model_set_read_only (model, TRUE); + break; + default: + break; + } } /** Public Interface ***********************************************/ TableModel * gnc_entry_ledger_model_new (GncEntryLedgerType type) { - TableModel * model; + TableModel * model; - model = gnc_table_model_new (); - gnc_entry_ledger_model_new_handlers (model, type); + model = gnc_table_model_new (); + gnc_entry_ledger_model_new_handlers (model, type); - return model; + return model; } diff --git a/src/business/business-ledger/gncEntryLedgerP.h b/src/business/business-ledger/gncEntryLedgerP.h index 1f54cb5c0c..b059f4eeb5 100644 --- a/src/business/business-ledger/gncEntryLedgerP.h +++ b/src/business/business-ledger/gncEntryLedgerP.h @@ -29,55 +29,56 @@ #include "table-allgui.h" #include "gncEntryLedger.h" -struct GncEntryLedger_s { - GUID blank_entry_guid; - gboolean blank_entry_edited; - gboolean traverse_to_new; +struct GncEntryLedger_s +{ + GUID blank_entry_guid; + gboolean blank_entry_edited; + gboolean traverse_to_new; - gboolean loading; /* To keep from recursing from events */ - gboolean full_refresh; /* Is a full refresh ok? */ - gint component_id; /* To register for events */ + gboolean loading; /* To keep from recursing from events */ + gboolean full_refresh; /* Is a full refresh ok? */ + gint component_id; /* To register for events */ - Timespec last_date_entered; + Timespec last_date_entered; - GncEntry * hint_entry; /* A Hint for where to display */ + GncEntry * hint_entry; /* A Hint for where to display */ - gncUIWidget parent; - QofBook * book; - Table * table; - GncOrder * order; - GncInvoice * invoice; - QueryNew * query; - - GncEntryLedgerType type; + gncUIWidget parent; + QofBook * book; + Table * table; + GncOrder * order; + GncInvoice * invoice; + QueryNew * query; - gboolean is_invoice; /* is this an invoice (or a bill)? */ + GncEntryLedgerType type; - const gchar * gconf_section; + gboolean is_invoice; /* is this an invoice (or a bill)? */ + + const gchar * gconf_section; }; GncEntry * gnc_entry_ledger_get_entry (GncEntryLedger *ledger, - VirtualCellLocation vcell_loc); + VirtualCellLocation vcell_loc); Account * gnc_entry_ledger_get_account_by_name (GncEntryLedger *ledger, BasicCell * bcell, - const char *name, gboolean *new); + const char *name, gboolean *new); Account * gnc_entry_ledger_get_account (GncEntryLedger *ledger, - const char * cell_name); + const char * cell_name); GncTaxTable * gnc_entry_ledger_get_taxtable (GncEntryLedger *ledger, - const char *cell_name); + const char *cell_name); gint gnc_entry_ledger_get_type (GncEntryLedger *ledger, - const char * cell_name); + const char * cell_name); gboolean gnc_entry_ledger_get_checkmark (GncEntryLedger *ledger, - const char * cell_name); + const char * cell_name); gboolean gnc_entry_ledger_get_numeric (GncEntryLedger *ledger, - const char *cell_name, - gnc_numeric *value); + const char *cell_name, + gnc_numeric *value); const char * gnc_entry_ledger_type_string_getter (char flag); const char * gnc_entry_ledger_how_string_getter (char flag); gboolean gnc_entry_ledger_find_entry (GncEntryLedger *ledger, GncEntry *entry, - VirtualCellLocation *vcell_loc); + VirtualCellLocation *vcell_loc); void gnc_entry_ledger_load_xfer_cells (GncEntryLedger *ledger); @@ -85,7 +86,7 @@ void gnc_entry_ledger_display_init (GncEntryLedger *ledger); void gnc_entry_ledger_display_fini (GncEntryLedger *ledger); void gnc_entry_ledger_compute_value (GncEntryLedger *ledger, - gnc_numeric *value, - gnc_numeric *tax_value); + gnc_numeric *value, + gnc_numeric *tax_value); #endif /* GNC_ENTRY_LEDGERP_H */ diff --git a/src/business/business-utils/business-options.c b/src/business/business-utils/business-options.c index fc73765631..9f482b6e09 100644 --- a/src/business/business-utils/business-options.c +++ b/src/business/business-utils/business-options.c @@ -52,40 +52,40 @@ GncTaxTable* gnc_option_db_lookup_taxtable_option(GNCOptionDB *odb, - const char *section, - const char *name, - GncTaxTable * default_value) + const char *section, + const char *name, + GncTaxTable * default_value) { - LOOKUP_OPTION("gnc_option_db_lookup_taxtable_option"); - return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncTaxTable"), 1, 0); + LOOKUP_OPTION("gnc_option_db_lookup_taxtable_option"); + return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncTaxTable"), 1, 0); } GncInvoice* gnc_option_db_lookup_invoice_option(GNCOptionDB *odb, - const char *section, - const char *name, - GncInvoice * default_value) + const char *section, + const char *name, + GncInvoice * default_value) { - LOOKUP_OPTION("gnc_option_db_lookup_invoice_option"); - return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncInvoice"), 1, 0); + LOOKUP_OPTION("gnc_option_db_lookup_invoice_option"); + return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncInvoice"), 1, 0); } GncCustomer* gnc_option_db_lookup_customer_option(GNCOptionDB *odb, - const char *section, - const char *name, - GncCustomer * default_value) + const char *section, + const char *name, + GncCustomer * default_value) { - LOOKUP_OPTION("gnc_option_db_lookup_customer_option"); - return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncCustomer"), 1, 0); + LOOKUP_OPTION("gnc_option_db_lookup_customer_option"); + return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncCustomer"), 1, 0); } GncVendor* gnc_option_db_lookup_vendor_option(GNCOptionDB *odb, - const char *section, - const char *name, - GncVendor * default_value) + const char *section, + const char *name, + GncVendor * default_value) { - LOOKUP_OPTION("gnc_option_db_lookup_vendor_option"); - return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncVendor"), 1, 0); + LOOKUP_OPTION("gnc_option_db_lookup_vendor_option"); + return SWIG_MustGetPtr(value, SWIG_TypeQuery("_p__gncVendor"), 1, 0); } diff --git a/src/business/business-utils/business-options.h b/src/business/business-utils/business-options.h index 75fbde87d9..285e3e9a43 100644 --- a/src/business/business-utils/business-options.h +++ b/src/business/business-utils/business-options.h @@ -33,24 +33,24 @@ GncTaxTable* gnc_option_db_lookup_taxtable_option(GNCOptionDB *odb, - const char *section, - const char *name, - GncTaxTable * default_value); + const char *section, + const char *name, + GncTaxTable * default_value); GncInvoice* gnc_option_db_lookup_invoice_option(GNCOptionDB *odb, - const char *section, - const char *name, - GncInvoice * default_value); + const char *section, + const char *name, + GncInvoice * default_value); GncCustomer* gnc_option_db_lookup_customer_option(GNCOptionDB *odb, - const char *section, - const char *name, - GncCustomer * default_value); + const char *section, + const char *name, + GncCustomer * default_value); GncVendor* gnc_option_db_lookup_vendor_option(GNCOptionDB *odb, - const char *section, - const char *name, - GncVendor * default_value); + const char *section, + const char *name, + GncVendor * default_value); #endif /* GNC_BUSINESS_OPTIONS_UTILS_H_ */ diff --git a/src/business/dialog-tax-table/dialog-tax-table.c b/src/business/dialog-tax-table/dialog-tax-table.c index 760c78ba61..e950a10a16 100644 --- a/src/business/dialog-tax-table/dialog-tax-table.c +++ b/src/business/dialog-tax-table/dialog-tax-table.c @@ -44,17 +44,19 @@ #define DIALOG_TAX_TABLE_CM_CLASS "tax-table-dialog" #define GCONF_SECTION "dialogs/business/tax_tables" -enum tax_table_cols { - TAX_TABLE_COL_NAME = 0, - TAX_TABLE_COL_POINTER, - NUM_TAX_TABLE_COLS +enum tax_table_cols +{ + TAX_TABLE_COL_NAME = 0, + TAX_TABLE_COL_POINTER, + NUM_TAX_TABLE_COLS }; -enum tax_entry_cols { - TAX_ENTRY_COL_NAME = 0, - TAX_ENTRY_COL_POINTER, - TAX_ENTRY_COL_AMOUNT, - NUM_TAX_ENTRY_COLS +enum tax_entry_cols +{ + TAX_ENTRY_COL_NAME = 0, + TAX_ENTRY_COL_POINTER, + TAX_ENTRY_COL_AMOUNT, + NUM_TAX_ENTRY_COLS }; void tax_table_new_table_cb (GtkButton *button, TaxTableWindow *ttw); @@ -66,252 +68,271 @@ void tax_table_window_close (GtkWidget *widget, gpointer data); void tax_table_window_destroy_cb (GtkWidget *widget, gpointer data); -struct _taxtable_window { - GtkWidget * dialog; - GtkWidget * names_view; - GtkWidget * entries_view; +struct _taxtable_window +{ + GtkWidget * dialog; + GtkWidget * names_view; + GtkWidget * entries_view; - GncTaxTable * current_table; - GncTaxTableEntry * current_entry; - QofBook * book; - gint component_id; + GncTaxTable * current_table; + GncTaxTableEntry * current_entry; + QofBook * book; + gint component_id; }; -typedef struct _new_taxtable { - GtkWidget * dialog; - GtkWidget * name_entry; - GtkWidget * amount_entry; - GtkWidget * acct_tree; +typedef struct _new_taxtable +{ + GtkWidget * dialog; + GtkWidget * name_entry; + GtkWidget * amount_entry; + GtkWidget * acct_tree; - GncTaxTable * created_table; - TaxTableWindow * ttw; - GncTaxTableEntry * entry; - gint type; - gboolean new_table; + GncTaxTable * created_table; + TaxTableWindow * ttw; + GncTaxTableEntry * entry; + gint type; + gboolean new_table; } NewTaxTable; static gboolean new_tax_table_ok_cb (NewTaxTable *ntt) { - TaxTableWindow *ttw; - const char *name = NULL; - char *message; - Account *acc; - gnc_numeric amount; + TaxTableWindow *ttw; + const char *name = NULL; + char *message; + Account *acc; + gnc_numeric amount; - g_return_val_if_fail (ntt, FALSE); - ttw = ntt->ttw; + g_return_val_if_fail (ntt, FALSE); + ttw = ntt->ttw; - /* Verify that we've got real, valid data */ + /* Verify that we've got real, valid data */ - /* verify the name, maybe */ - if (ntt->new_table) { - name = gtk_entry_get_text (GTK_ENTRY (ntt->name_entry)); - if (name == NULL || *name == '\0') { - message = _("You must provide a name for this Tax Table."); - gnc_error_dialog (ntt->dialog, "%s", message); - return FALSE; - } - if (gncTaxTableLookupByName (ttw->book, name)) { - message = g_strdup_printf(_( - "You must provide a unique name for this Tax Table. " - "Your choice \"%s\" is already in use."), name); - gnc_error_dialog (ntt->dialog, "%s", message); - g_free (message); - return FALSE; - } - } - - /* verify the amount */ - amount = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (ntt->amount_entry)); - if (gnc_numeric_negative_p (amount)) { - message = _("Negative amounts are not allowed."); - gnc_error_dialog (ntt->dialog, "%s", message); - return FALSE; - } - if (ntt->type == GNC_AMT_TYPE_PERCENT && - gnc_numeric_compare (amount, - gnc_numeric_create (100, 1)) > 0) { - message = _("Percentage amount must be between 0 and 100."); - gnc_error_dialog (ntt->dialog, "%s", message); - return FALSE; - } - - /* verify the account */ - acc = gnc_tree_view_account_get_selected_account (GNC_TREE_VIEW_ACCOUNT(ntt->acct_tree)); - if (acc == NULL) { - message = _("You must choose a Tax Account."); - gnc_error_dialog (ntt->dialog, "%s", message); - return FALSE; - } - - gnc_suspend_gui_refresh (); - - /* Ok, it's all valid, now either change to add this thing */ - if (ntt->new_table) { - GncTaxTable *table = gncTaxTableCreate (ttw->book); - gncTaxTableBeginEdit (table); - gncTaxTableSetName (table, name); - /* Reset the current table */ - ttw->current_table = table; - ntt->created_table = table; - } else - gncTaxTableBeginEdit (ttw->current_table); - - /* Create/edit the entry */ - { - GncTaxTableEntry *entry; - - if (ntt->entry) { - entry = ntt->entry; - } else { - entry = gncTaxTableEntryCreate (); - gncTaxTableAddEntry (ttw->current_table, entry); - ttw->current_entry = entry; + /* verify the name, maybe */ + if (ntt->new_table) + { + name = gtk_entry_get_text (GTK_ENTRY (ntt->name_entry)); + if (name == NULL || *name == '\0') + { + message = _("You must provide a name for this Tax Table."); + gnc_error_dialog (ntt->dialog, "%s", message); + return FALSE; + } + if (gncTaxTableLookupByName (ttw->book, name)) + { + message = g_strdup_printf(_( + "You must provide a unique name for this Tax Table. " + "Your choice \"%s\" is already in use."), name); + gnc_error_dialog (ntt->dialog, "%s", message); + g_free (message); + return FALSE; + } } - gncTaxTableEntrySetAccount (entry, acc); - gncTaxTableEntrySetType (entry, ntt->type); - gncTaxTableEntrySetAmount (entry, amount); - } + /* verify the amount */ + amount = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (ntt->amount_entry)); + if (gnc_numeric_negative_p (amount)) + { + message = _("Negative amounts are not allowed."); + gnc_error_dialog (ntt->dialog, "%s", message); + return FALSE; + } + if (ntt->type == GNC_AMT_TYPE_PERCENT && + gnc_numeric_compare (amount, + gnc_numeric_create (100, 1)) > 0) + { + message = _("Percentage amount must be between 0 and 100."); + gnc_error_dialog (ntt->dialog, "%s", message); + return FALSE; + } - /* Mark the table as changed and commit it */ - gncTaxTableChanged (ttw->current_table); - gncTaxTableCommitEdit (ttw->current_table); + /* verify the account */ + acc = gnc_tree_view_account_get_selected_account (GNC_TREE_VIEW_ACCOUNT(ntt->acct_tree)); + if (acc == NULL) + { + message = _("You must choose a Tax Account."); + gnc_error_dialog (ntt->dialog, "%s", message); + return FALSE; + } - gnc_resume_gui_refresh(); - return TRUE; + gnc_suspend_gui_refresh (); + + /* Ok, it's all valid, now either change to add this thing */ + if (ntt->new_table) + { + GncTaxTable *table = gncTaxTableCreate (ttw->book); + gncTaxTableBeginEdit (table); + gncTaxTableSetName (table, name); + /* Reset the current table */ + ttw->current_table = table; + ntt->created_table = table; + } + else + gncTaxTableBeginEdit (ttw->current_table); + + /* Create/edit the entry */ + { + GncTaxTableEntry *entry; + + if (ntt->entry) + { + entry = ntt->entry; + } + else + { + entry = gncTaxTableEntryCreate (); + gncTaxTableAddEntry (ttw->current_table, entry); + ttw->current_entry = entry; + } + + gncTaxTableEntrySetAccount (entry, acc); + gncTaxTableEntrySetType (entry, ntt->type); + gncTaxTableEntrySetAmount (entry, amount); + } + + /* Mark the table as changed and commit it */ + gncTaxTableChanged (ttw->current_table); + gncTaxTableCommitEdit (ttw->current_table); + + gnc_resume_gui_refresh(); + return TRUE; } static void combo_changed (GtkWidget *widget, NewTaxTable *ntt) { - gint index; + gint index; - g_return_if_fail(GTK_IS_COMBO_BOX(widget)); - g_return_if_fail(ntt); + g_return_if_fail(GTK_IS_COMBO_BOX(widget)); + g_return_if_fail(ntt); - index = gtk_combo_box_get_active(GTK_COMBO_BOX(widget)); - ntt->type = index + 1; + index = gtk_combo_box_get_active(GTK_COMBO_BOX(widget)); + ntt->type = index + 1; } static GncTaxTable * new_tax_table_dialog (TaxTableWindow *ttw, gboolean new_table, - GncTaxTableEntry *entry, const char *name) + GncTaxTableEntry *entry, const char *name) { - GncTaxTable *created_table = NULL; - NewTaxTable *ntt; - GladeXML *xml; - GtkWidget *box, *widget, *combo; - gboolean done; - gint response, index; + GncTaxTable *created_table = NULL; + NewTaxTable *ntt; + GladeXML *xml; + GtkWidget *box, *widget, *combo; + gboolean done; + gint response, index; - if (!ttw) return NULL; - if (new_table && entry) return NULL; + if (!ttw) return NULL; + if (new_table && entry) return NULL; - ntt = g_new0 (NewTaxTable, 1); - ntt->ttw = ttw; - ntt->entry = entry; - ntt->new_table = new_table; + ntt = g_new0 (NewTaxTable, 1); + ntt->ttw = ttw; + ntt->entry = entry; + ntt->new_table = new_table; - if (entry) - ntt->type = gncTaxTableEntryGetType (entry); - else - ntt->type = GNC_AMT_TYPE_PERCENT; + if (entry) + ntt->type = gncTaxTableEntryGetType (entry); + else + ntt->type = GNC_AMT_TYPE_PERCENT; - /* Open and read the XML */ - xml = gnc_glade_xml_new ("tax-tables.glade", "New Tax Table Dialog"); - ntt->dialog = glade_xml_get_widget (xml, "New Tax Table Dialog"); - ntt->name_entry = glade_xml_get_widget (xml, "name_entry"); - if (name) - gtk_entry_set_text (GTK_ENTRY (ntt->name_entry), name); + /* Open and read the XML */ + xml = gnc_glade_xml_new ("tax-tables.glade", "New Tax Table Dialog"); + ntt->dialog = glade_xml_get_widget (xml, "New Tax Table Dialog"); + ntt->name_entry = glade_xml_get_widget (xml, "name_entry"); + if (name) + gtk_entry_set_text (GTK_ENTRY (ntt->name_entry), name); - /* Create the menu */ - combo = glade_xml_get_widget (xml, "type_combobox"); - index = ntt->type ? ntt->type : GNC_AMT_TYPE_VALUE; - gtk_combo_box_set_active(GTK_COMBO_BOX(combo), index - 1); - g_signal_connect (combo, "changed", G_CALLBACK (combo_changed), ntt); + /* Create the menu */ + combo = glade_xml_get_widget (xml, "type_combobox"); + index = ntt->type ? ntt->type : GNC_AMT_TYPE_VALUE; + gtk_combo_box_set_active(GTK_COMBO_BOX(combo), index - 1); + g_signal_connect (combo, "changed", G_CALLBACK (combo_changed), ntt); - /* Attach our own widgets */ - box = glade_xml_get_widget (xml, "amount_box"); - ntt->amount_entry = widget = gnc_amount_edit_new (); - gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (widget), TRUE); - gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (widget), 100000); - gtk_box_pack_start (GTK_BOX (box), widget, TRUE, TRUE, 0); + /* Attach our own widgets */ + box = glade_xml_get_widget (xml, "amount_box"); + ntt->amount_entry = widget = gnc_amount_edit_new (); + gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (widget), TRUE); + gnc_amount_edit_set_fraction (GNC_AMOUNT_EDIT (widget), 100000); + gtk_box_pack_start (GTK_BOX (box), widget, TRUE, TRUE, 0); - box = glade_xml_get_widget (xml, "acct_window"); - ntt->acct_tree = GTK_WIDGET(gnc_tree_view_account_new (FALSE)); - gtk_container_add (GTK_CONTAINER (box), ntt->acct_tree); - gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(ntt->acct_tree), FALSE); + box = glade_xml_get_widget (xml, "acct_window"); + ntt->acct_tree = GTK_WIDGET(gnc_tree_view_account_new (FALSE)); + gtk_container_add (GTK_CONTAINER (box), ntt->acct_tree); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(ntt->acct_tree), FALSE); - /* Make 'enter' do the right thing */ - gtk_entry_set_activates_default(GTK_ENTRY (gnc_amount_edit_gtk_entry - (GNC_AMOUNT_EDIT (ntt->amount_entry))), - TRUE); + /* Make 'enter' do the right thing */ + gtk_entry_set_activates_default(GTK_ENTRY (gnc_amount_edit_gtk_entry + (GNC_AMOUNT_EDIT (ntt->amount_entry))), + TRUE); - /* Fix mnemonics for generated target widgets */ - widget = glade_xml_get_widget (xml, "value_label"); - gtk_label_set_mnemonic_widget (GTK_LABEL (widget), ntt->amount_entry); - widget = glade_xml_get_widget (xml, "account_label"); - gtk_label_set_mnemonic_widget (GTK_LABEL (widget), ntt->acct_tree); + /* Fix mnemonics for generated target widgets */ + widget = glade_xml_get_widget (xml, "value_label"); + gtk_label_set_mnemonic_widget (GTK_LABEL (widget), ntt->amount_entry); + widget = glade_xml_get_widget (xml, "account_label"); + gtk_label_set_mnemonic_widget (GTK_LABEL (widget), ntt->acct_tree); - /* Fill in the widgets appropriately */ - if (entry) { - gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (ntt->amount_entry), - gncTaxTableEntryGetAmount (entry)); - gnc_tree_view_account_set_selected_account (GNC_TREE_VIEW_ACCOUNT (ntt->acct_tree), - gncTaxTableEntryGetAccount (entry)); - } - - /* Set our parent */ - gtk_window_set_transient_for (GTK_WINDOW(ntt->dialog), GTK_WINDOW(ttw->dialog)); - - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - ntt); - - /* Show what we should */ - gtk_widget_show_all (ntt->dialog); - if (new_table == FALSE) { - gtk_widget_hide (glade_xml_get_widget (xml, "table_title")); - gtk_widget_hide (glade_xml_get_widget (xml, "table_name")); - gtk_widget_hide (glade_xml_get_widget (xml, "spacer")); - gtk_widget_hide (ntt->name_entry); - /* Tables are great for layout, but a pain when you hide widgets */ - widget = glade_xml_get_widget (xml, "ttd_table"); - gtk_table_set_row_spacing (GTK_TABLE(widget), 0, 0); - gtk_table_set_row_spacing (GTK_TABLE(widget), 1, 0); - gtk_table_set_row_spacing (GTK_TABLE(widget), 2, 0); - gtk_widget_grab_focus (gnc_amount_edit_gtk_entry - (GNC_AMOUNT_EDIT (ntt->amount_entry))); - } else - gtk_widget_grab_focus (ntt->name_entry); - - /* Display the dialog now that we're done manipulating it */ - gtk_widget_show (ntt->dialog); - - done = FALSE; - while (!done) { - response = gtk_dialog_run (GTK_DIALOG (ntt->dialog)); - switch (response) { - case GTK_RESPONSE_OK: - if (new_tax_table_ok_cb (ntt)) { - created_table = ntt->created_table; - done = TRUE; - } - break; - default: - done = TRUE; - break; + /* Fill in the widgets appropriately */ + if (entry) + { + gnc_amount_edit_set_amount (GNC_AMOUNT_EDIT (ntt->amount_entry), + gncTaxTableEntryGetAmount (entry)); + gnc_tree_view_account_set_selected_account (GNC_TREE_VIEW_ACCOUNT (ntt->acct_tree), + gncTaxTableEntryGetAccount (entry)); } - } - gtk_widget_destroy(ntt->dialog); - g_free(ntt); + /* Set our parent */ + gtk_window_set_transient_for (GTK_WINDOW(ntt->dialog), GTK_WINDOW(ttw->dialog)); - return created_table; + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + ntt); + + /* Show what we should */ + gtk_widget_show_all (ntt->dialog); + if (new_table == FALSE) + { + gtk_widget_hide (glade_xml_get_widget (xml, "table_title")); + gtk_widget_hide (glade_xml_get_widget (xml, "table_name")); + gtk_widget_hide (glade_xml_get_widget (xml, "spacer")); + gtk_widget_hide (ntt->name_entry); + /* Tables are great for layout, but a pain when you hide widgets */ + widget = glade_xml_get_widget (xml, "ttd_table"); + gtk_table_set_row_spacing (GTK_TABLE(widget), 0, 0); + gtk_table_set_row_spacing (GTK_TABLE(widget), 1, 0); + gtk_table_set_row_spacing (GTK_TABLE(widget), 2, 0); + gtk_widget_grab_focus (gnc_amount_edit_gtk_entry + (GNC_AMOUNT_EDIT (ntt->amount_entry))); + } + else + gtk_widget_grab_focus (ntt->name_entry); + + /* Display the dialog now that we're done manipulating it */ + gtk_widget_show (ntt->dialog); + + done = FALSE; + while (!done) + { + response = gtk_dialog_run (GTK_DIALOG (ntt->dialog)); + switch (response) + { + case GTK_RESPONSE_OK: + if (new_tax_table_ok_cb (ntt)) + { + created_table = ntt->created_table; + done = TRUE; + } + break; + default: + done = TRUE; + break; + } + } + + gtk_widget_destroy(ntt->dialog); + g_free(ntt); + + return created_table; } /***********************************************************************/ @@ -319,444 +340,461 @@ new_tax_table_dialog (TaxTableWindow *ttw, gboolean new_table, static void tax_table_entries_refresh (TaxTableWindow *ttw) { - GList *list, *node; - GtkTreeView *view; - GtkListStore *store; - GtkTreeIter iter; - GtkTreePath *path; - GtkTreeSelection *selection; - GtkTreeRowReference *reference = NULL; - GncTaxTableEntry *selected_entry; + GList *list, *node; + GtkTreeView *view; + GtkListStore *store; + GtkTreeIter iter; + GtkTreePath *path; + GtkTreeSelection *selection; + GtkTreeRowReference *reference = NULL; + GncTaxTableEntry *selected_entry; - g_return_if_fail (ttw); + g_return_if_fail (ttw); - view = GTK_TREE_VIEW (ttw->entries_view); - store = GTK_LIST_STORE(gtk_tree_view_get_model(view)); + view = GTK_TREE_VIEW (ttw->entries_view); + store = GTK_LIST_STORE(gtk_tree_view_get_model(view)); - /* Clear the list */ - selected_entry = ttw->current_entry; - gtk_list_store_clear (store); - if (ttw->current_table == NULL) - return; + /* Clear the list */ + selected_entry = ttw->current_entry; + gtk_list_store_clear (store); + if (ttw->current_table == NULL) + return; - /* Add the items to the list */ - list = gncTaxTableGetEntries (ttw->current_table); - if (list) - list = g_list_reverse (g_list_copy (list)); + /* Add the items to the list */ + list = gncTaxTableGetEntries (ttw->current_table); + if (list) + list = g_list_reverse (g_list_copy (list)); - for (node = list ; node; node = node->next) { - char *row_text[3]; - GncTaxTableEntry *entry = node->data; - Account *acc = gncTaxTableEntryGetAccount (entry); - gnc_numeric amount = gncTaxTableEntryGetAmount (entry); + for (node = list ; node; node = node->next) + { + char *row_text[3]; + GncTaxTableEntry *entry = node->data; + Account *acc = gncTaxTableEntryGetAccount (entry); + gnc_numeric amount = gncTaxTableEntryGetAmount (entry); - row_text[0] = gnc_account_get_full_name (acc); - switch (gncTaxTableEntryGetType (entry)) { - case GNC_AMT_TYPE_PERCENT: - row_text[1] = - g_strdup_printf ("%s%%", - xaccPrintAmount (amount, - gnc_default_print_info (FALSE))); - break; - default: - row_text[1] = - g_strdup_printf ("%s", - xaccPrintAmount (amount, - gnc_default_print_info (TRUE))); - break; + row_text[0] = gnc_account_get_full_name (acc); + switch (gncTaxTableEntryGetType (entry)) + { + case GNC_AMT_TYPE_PERCENT: + row_text[1] = + g_strdup_printf ("%s%%", + xaccPrintAmount (amount, + gnc_default_print_info (FALSE))); + break; + default: + row_text[1] = + g_strdup_printf ("%s", + xaccPrintAmount (amount, + gnc_default_print_info (TRUE))); + break; + } + + gtk_list_store_prepend(store, &iter); + gtk_list_store_set(store, &iter, + TAX_ENTRY_COL_NAME, row_text[0], + TAX_ENTRY_COL_POINTER, entry, + TAX_ENTRY_COL_AMOUNT, row_text[1], + -1); + if (entry == selected_entry) + { + path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter); + reference = gtk_tree_row_reference_new(GTK_TREE_MODEL(store), path); + gtk_tree_path_free(path); + } + + g_free (row_text[0]); + g_free (row_text[1]); } - gtk_list_store_prepend(store, &iter); - gtk_list_store_set(store, &iter, - TAX_ENTRY_COL_NAME, row_text[0], - TAX_ENTRY_COL_POINTER, entry, - TAX_ENTRY_COL_AMOUNT, row_text[1], - -1); - if (entry == selected_entry) { - path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter); - reference = gtk_tree_row_reference_new(GTK_TREE_MODEL(store), path); - gtk_tree_path_free(path); + if (reference) + { + path = gtk_tree_row_reference_get_path(reference); + gtk_tree_row_reference_free(reference); + if (path) + { + selection = gtk_tree_view_get_selection(view); + gtk_tree_selection_select_path(selection, path); + gtk_tree_view_scroll_to_cell(view, path, NULL, TRUE, 0.5, 0.0); + gtk_tree_path_free(path); + } } - - g_free (row_text[0]); - g_free (row_text[1]); - } - - if (reference) { - path = gtk_tree_row_reference_get_path(reference); - gtk_tree_row_reference_free(reference); - if (path) { - selection = gtk_tree_view_get_selection(view); - gtk_tree_selection_select_path(selection, path); - gtk_tree_view_scroll_to_cell(view, path, NULL, TRUE, 0.5, 0.0); - gtk_tree_path_free(path); - } - } } static void tax_table_window_refresh (TaxTableWindow *ttw) { - GList *list, *node; - GtkTreeView *view; - GtkListStore *store; - GtkTreeIter iter; - GtkTreePath *path; - GtkTreeSelection *selection; - GtkTreeRowReference *reference = NULL; + GList *list, *node; + GtkTreeView *view; + GtkListStore *store; + GtkTreeIter iter; + GtkTreePath *path; + GtkTreeSelection *selection; + GtkTreeRowReference *reference = NULL; - g_return_if_fail (ttw); - view = GTK_TREE_VIEW (ttw->names_view); - store = GTK_LIST_STORE(gtk_tree_view_get_model(view)); + g_return_if_fail (ttw); + view = GTK_TREE_VIEW (ttw->names_view); + store = GTK_LIST_STORE(gtk_tree_view_get_model(view)); - /* Clear the list */ - gtk_list_store_clear(store); + /* Clear the list */ + gtk_list_store_clear(store); - gnc_gui_component_clear_watches (ttw->component_id); + gnc_gui_component_clear_watches (ttw->component_id); - /* Add the items to the list */ - list = gncTaxTableGetTables (ttw->book); - if (list) - list = g_list_reverse (g_list_copy (list)); + /* Add the items to the list */ + list = gncTaxTableGetTables (ttw->book); + if (list) + list = g_list_reverse (g_list_copy (list)); - for (node = list; node; node = node->next) { - GncTaxTable *table = node->data; + for (node = list; node; node = node->next) + { + GncTaxTable *table = node->data; - gnc_gui_component_watch_entity (ttw->component_id, - gncTaxTableGetGUID (table), - QOF_EVENT_MODIFY); + gnc_gui_component_watch_entity (ttw->component_id, + gncTaxTableGetGUID (table), + QOF_EVENT_MODIFY); - gtk_list_store_prepend(store, &iter); - gtk_list_store_set(store, &iter, - TAX_TABLE_COL_NAME, gncTaxTableGetName (table), - TAX_TABLE_COL_POINTER, table, - -1); - if (table == ttw->current_table) { - path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter); - reference = gtk_tree_row_reference_new(GTK_TREE_MODEL(store), path); - gtk_tree_path_free(path); + gtk_list_store_prepend(store, &iter); + gtk_list_store_set(store, &iter, + TAX_TABLE_COL_NAME, gncTaxTableGetName (table), + TAX_TABLE_COL_POINTER, table, + -1); + if (table == ttw->current_table) + { + path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter); + reference = gtk_tree_row_reference_new(GTK_TREE_MODEL(store), path); + gtk_tree_path_free(path); + } } - } - if (list) - g_list_free (list); + if (list) + g_list_free (list); - gnc_gui_component_watch_entity_type (ttw->component_id, - GNC_TAXTABLE_MODULE_NAME, - QOF_EVENT_CREATE | QOF_EVENT_DESTROY); + gnc_gui_component_watch_entity_type (ttw->component_id, + GNC_TAXTABLE_MODULE_NAME, + QOF_EVENT_CREATE | QOF_EVENT_DESTROY); - if (reference) { - path = gtk_tree_row_reference_get_path(reference); - gtk_tree_row_reference_free(reference); - if (path) { - selection = gtk_tree_view_get_selection(view); - gtk_tree_selection_select_path(selection, path); - gtk_tree_view_scroll_to_cell(view, path, NULL, TRUE, 0.5, 0.0); - gtk_tree_path_free(path); + if (reference) + { + path = gtk_tree_row_reference_get_path(reference); + gtk_tree_row_reference_free(reference); + if (path) + { + selection = gtk_tree_view_get_selection(view); + gtk_tree_selection_select_path(selection, path); + gtk_tree_view_scroll_to_cell(view, path, NULL, TRUE, 0.5, 0.0); + gtk_tree_path_free(path); + } } - } - ;; tax_table_entries_refresh (ttw); - /* select_row() above will refresh the entries window */ + ;; + tax_table_entries_refresh (ttw); + /* select_row() above will refresh the entries window */ } static void tax_table_selection_changed (GtkTreeSelection *selection, - gpointer user_data) + gpointer user_data) { - TaxTableWindow *ttw = user_data; - GncTaxTable *table; - GtkTreeModel *model; - GtkTreeIter iter; + TaxTableWindow *ttw = user_data; + GncTaxTable *table; + GtkTreeModel *model; + GtkTreeIter iter; - g_return_if_fail (ttw); + g_return_if_fail (ttw); - if (!gtk_tree_selection_get_selected(selection, &model, &iter)) - return; + if (!gtk_tree_selection_get_selected(selection, &model, &iter)) + return; - gtk_tree_model_get(model, &iter, TAX_TABLE_COL_POINTER, &table, -1); - g_return_if_fail (table); + gtk_tree_model_get(model, &iter, TAX_TABLE_COL_POINTER, &table, -1); + g_return_if_fail (table); - /* If we've changed, then reset the entry list */ - if (table != ttw->current_table) { - ttw->current_table = table; - ttw->current_entry = NULL; - } - /* And force a refresh of the entries */ - tax_table_entries_refresh (ttw); + /* If we've changed, then reset the entry list */ + if (table != ttw->current_table) + { + ttw->current_table = table; + ttw->current_entry = NULL; + } + /* And force a refresh of the entries */ + tax_table_entries_refresh (ttw); } static void tax_table_entry_selection_changed (GtkTreeSelection *selection, - gpointer user_data) + gpointer user_data) { - TaxTableWindow *ttw = user_data; - GtkTreeModel *model; - GtkTreeIter iter; + TaxTableWindow *ttw = user_data; + GtkTreeModel *model; + GtkTreeIter iter; - g_return_if_fail (ttw); + g_return_if_fail (ttw); - if (!gtk_tree_selection_get_selected(selection, &model, &iter)) { - ttw->current_entry = NULL; - return; - } + if (!gtk_tree_selection_get_selected(selection, &model, &iter)) + { + ttw->current_entry = NULL; + return; + } - gtk_tree_model_get(model, &iter, TAX_ENTRY_COL_POINTER, &ttw->current_entry, -1); + gtk_tree_model_get(model, &iter, TAX_ENTRY_COL_POINTER, &ttw->current_entry, -1); } static void tax_table_entry_row_activated (GtkTreeView *tree_view, - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data) + GtkTreePath *path, + GtkTreeViewColumn *column, + gpointer user_data) { - TaxTableWindow *ttw = user_data; + TaxTableWindow *ttw = user_data; - new_tax_table_dialog (ttw, FALSE, ttw->current_entry, NULL); + new_tax_table_dialog (ttw, FALSE, ttw->current_entry, NULL); } void tax_table_new_table_cb (GtkButton *button, TaxTableWindow *ttw) { - g_return_if_fail (ttw); - new_tax_table_dialog (ttw, TRUE, NULL, NULL); + g_return_if_fail (ttw); + new_tax_table_dialog (ttw, TRUE, NULL, NULL); } void tax_table_delete_table_cb (GtkButton *button, TaxTableWindow *ttw) { - g_return_if_fail (ttw); + g_return_if_fail (ttw); - if (!ttw->current_table) - return; + if (!ttw->current_table) + return; - if (gncTaxTableGetRefcount (ttw->current_table) > 0) { - char *message = - g_strdup_printf (_("Tax table \"%s\" is in use. You cannot delete it."), - gncTaxTableGetName (ttw->current_table)); - gnc_error_dialog (ttw->dialog, "%s", message); - g_free (message); - return; - } + if (gncTaxTableGetRefcount (ttw->current_table) > 0) + { + char *message = + g_strdup_printf (_("Tax table \"%s\" is in use. You cannot delete it."), + gncTaxTableGetName (ttw->current_table)); + gnc_error_dialog (ttw->dialog, "%s", message); + g_free (message); + return; + } - if (gnc_verify_dialog (ttw->dialog, FALSE, - _("Are you sure you want to delete \"%s\"?"), - gncTaxTableGetName (ttw->current_table))) { - /* Ok, let's remove it */ - gnc_suspend_gui_refresh (); - gncTaxTableBeginEdit (ttw->current_table); - gncTaxTableDestroy (ttw->current_table); - ttw->current_table = NULL; - ttw->current_entry = NULL; - gnc_resume_gui_refresh (); - } + if (gnc_verify_dialog (ttw->dialog, FALSE, + _("Are you sure you want to delete \"%s\"?"), + gncTaxTableGetName (ttw->current_table))) + { + /* Ok, let's remove it */ + gnc_suspend_gui_refresh (); + gncTaxTableBeginEdit (ttw->current_table); + gncTaxTableDestroy (ttw->current_table); + ttw->current_table = NULL; + ttw->current_entry = NULL; + gnc_resume_gui_refresh (); + } } void tax_table_new_entry_cb (GtkButton *button, TaxTableWindow *ttw) { - g_return_if_fail (ttw); - if (!ttw->current_table) - return; - new_tax_table_dialog (ttw, FALSE, NULL, NULL); + g_return_if_fail (ttw); + if (!ttw->current_table) + return; + new_tax_table_dialog (ttw, FALSE, NULL, NULL); } void tax_table_edit_entry_cb (GtkButton *button, TaxTableWindow *ttw) { - g_return_if_fail (ttw); - if (!ttw->current_entry) - return; - new_tax_table_dialog (ttw, FALSE, ttw->current_entry, NULL); + g_return_if_fail (ttw); + if (!ttw->current_entry) + return; + new_tax_table_dialog (ttw, FALSE, ttw->current_entry, NULL); } void tax_table_delete_entry_cb (GtkButton *button, TaxTableWindow *ttw) { - g_return_if_fail (ttw); - if (!ttw->current_table || !ttw->current_entry) - return; + g_return_if_fail (ttw); + if (!ttw->current_table || !ttw->current_entry) + return; - if (g_list_length (gncTaxTableGetEntries (ttw->current_table)) <= 1) { - char *message = _("You cannot remove the last entry from the tax table. " - "Try deleting the tax table if you want to do that."); - gnc_error_dialog (ttw->dialog, "%s", message); - return; - } + if (g_list_length (gncTaxTableGetEntries (ttw->current_table)) <= 1) + { + char *message = _("You cannot remove the last entry from the tax table. " + "Try deleting the tax table if you want to do that."); + gnc_error_dialog (ttw->dialog, "%s", message); + return; + } - if (gnc_verify_dialog (ttw->dialog, FALSE, "%s", - _("Are you sure you want to delete this entry?"))) { - /* Ok, let's remove it */ - gnc_suspend_gui_refresh (); - gncTaxTableBeginEdit (ttw->current_table); - gncTaxTableRemoveEntry (ttw->current_table, ttw->current_entry); - gncTaxTableEntryDestroy (ttw->current_entry); - gncTaxTableChanged (ttw->current_table); - gncTaxTableCommitEdit (ttw->current_table); - ttw->current_entry = NULL; - gnc_resume_gui_refresh (); - } + if (gnc_verify_dialog (ttw->dialog, FALSE, "%s", + _("Are you sure you want to delete this entry?"))) + { + /* Ok, let's remove it */ + gnc_suspend_gui_refresh (); + gncTaxTableBeginEdit (ttw->current_table); + gncTaxTableRemoveEntry (ttw->current_table, ttw->current_entry); + gncTaxTableEntryDestroy (ttw->current_entry); + gncTaxTableChanged (ttw->current_table); + gncTaxTableCommitEdit (ttw->current_table); + ttw->current_entry = NULL; + gnc_resume_gui_refresh (); + } } static void tax_table_window_refresh_handler (GHashTable *changes, gpointer data) { - TaxTableWindow *ttw = data; + TaxTableWindow *ttw = data; - g_return_if_fail (data); - tax_table_window_refresh (ttw); + g_return_if_fail (data); + tax_table_window_refresh (ttw); } static void tax_table_window_close_handler (gpointer data) { - TaxTableWindow *ttw = data; - g_return_if_fail (ttw); + TaxTableWindow *ttw = data; + g_return_if_fail (ttw); - gtk_widget_destroy (ttw->dialog); + gtk_widget_destroy (ttw->dialog); } void tax_table_window_close (GtkWidget *widget, gpointer data) { - TaxTableWindow *ttw = data; + TaxTableWindow *ttw = data; - gnc_save_window_size (GCONF_SECTION, GTK_WINDOW (ttw->dialog)); - gnc_ui_tax_table_window_destroy (ttw); + gnc_save_window_size (GCONF_SECTION, GTK_WINDOW (ttw->dialog)); + gnc_ui_tax_table_window_destroy (ttw); } void tax_table_window_destroy_cb (GtkWidget *widget, gpointer data) { - TaxTableWindow *ttw = data; + TaxTableWindow *ttw = data; - if (!ttw) return; + if (!ttw) return; - gnc_unregister_gui_component (ttw->component_id); + gnc_unregister_gui_component (ttw->component_id); - g_free (ttw); + g_free (ttw); } static gboolean find_handler (gpointer find_data, gpointer user_data) { - TaxTableWindow *ttw = user_data; - QofBook *book = find_data; + TaxTableWindow *ttw = user_data; + QofBook *book = find_data; - return (ttw != NULL && ttw->book == book); + return (ttw != NULL && ttw->book == book); } /* Create a tax-table window */ TaxTableWindow * gnc_ui_tax_table_window_new (QofBook *book) { - TaxTableWindow *ttw; - GladeXML *xml; - GtkTreeView *view; - GtkTreeViewColumn *column; - GtkCellRenderer *renderer; - GtkListStore *store; - GtkTreeSelection *selection; + TaxTableWindow *ttw; + GladeXML *xml; + GtkTreeView *view; + GtkTreeViewColumn *column; + GtkCellRenderer *renderer; + GtkListStore *store; + GtkTreeSelection *selection; - if (!book) return NULL; + if (!book) return NULL; - /* - * Find an existing tax-table window. If found, bring it to - * the front. If we have an actual owner, then set it in - * the window. - */ - ttw = gnc_find_first_gui_component (DIALOG_TAX_TABLE_CM_CLASS, find_handler, - book); - if (ttw) { - gtk_window_present (GTK_WINDOW(ttw->dialog)); + /* + * Find an existing tax-table window. If found, bring it to + * the front. If we have an actual owner, then set it in + * the window. + */ + ttw = gnc_find_first_gui_component (DIALOG_TAX_TABLE_CM_CLASS, find_handler, + book); + if (ttw) + { + gtk_window_present (GTK_WINDOW(ttw->dialog)); + return ttw; + } + + /* Didn't find one -- create a new window */ + ttw = g_new0 (TaxTableWindow, 1); + ttw->book = book; + + /* Open and read the XML */ + xml = gnc_glade_xml_new ("tax-tables.glade", "Tax Table Window"); + ttw->dialog = glade_xml_get_widget (xml, "Tax Table Window"); + ttw->names_view = glade_xml_get_widget (xml, "tax_tables_view"); + ttw->entries_view = glade_xml_get_widget (xml, "tax_table_entries"); + + /* Create the tax tables view */ + view = GTK_TREE_VIEW(ttw->names_view); + store = gtk_list_store_new (NUM_TAX_TABLE_COLS, G_TYPE_STRING, + G_TYPE_POINTER); + gtk_tree_view_set_model(view, GTK_TREE_MODEL(store)); + g_object_unref(store); + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes("", renderer, + "text", TAX_TABLE_COL_NAME, + NULL); + gtk_tree_view_append_column(view, column); + + selection = gtk_tree_view_get_selection(view); + g_signal_connect(selection, "changed", + G_CALLBACK(tax_table_selection_changed), ttw); + + + /* Create the tax table entries view */ + view = GTK_TREE_VIEW(ttw->entries_view); + store = gtk_list_store_new (NUM_TAX_ENTRY_COLS, G_TYPE_STRING, + G_TYPE_POINTER, G_TYPE_STRING); + gtk_tree_view_set_model(view, GTK_TREE_MODEL(store)); + g_object_unref(store); + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes("", renderer, + "text", TAX_ENTRY_COL_NAME, + NULL); + gtk_tree_view_append_column(view, column); + + selection = gtk_tree_view_get_selection(view); + g_signal_connect(selection, "changed", + G_CALLBACK(tax_table_entry_selection_changed), ttw); + g_signal_connect(view, "row-activated", + G_CALLBACK(tax_table_entry_row_activated), ttw); + + + /* Setup signals */ + glade_xml_signal_autoconnect_full( xml, + gnc_glade_autoconnect_full_func, + ttw); + + /* register with component manager */ + ttw->component_id = + gnc_register_gui_component (DIALOG_TAX_TABLE_CM_CLASS, + tax_table_window_refresh_handler, + tax_table_window_close_handler, + ttw); + + tax_table_window_refresh (ttw); + gnc_restore_window_size (GCONF_SECTION, GTK_WINDOW (ttw->dialog)); + gtk_widget_show_all (ttw->dialog); return ttw; - } - - /* Didn't find one -- create a new window */ - ttw = g_new0 (TaxTableWindow, 1); - ttw->book = book; - - /* Open and read the XML */ - xml = gnc_glade_xml_new ("tax-tables.glade", "Tax Table Window"); - ttw->dialog = glade_xml_get_widget (xml, "Tax Table Window"); - ttw->names_view = glade_xml_get_widget (xml, "tax_tables_view"); - ttw->entries_view = glade_xml_get_widget (xml, "tax_table_entries"); - - /* Create the tax tables view */ - view = GTK_TREE_VIEW(ttw->names_view); - store = gtk_list_store_new (NUM_TAX_TABLE_COLS, G_TYPE_STRING, - G_TYPE_POINTER); - gtk_tree_view_set_model(view, GTK_TREE_MODEL(store)); - g_object_unref(store); - - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes("", renderer, - "text", TAX_TABLE_COL_NAME, - NULL); - gtk_tree_view_append_column(view, column); - - selection = gtk_tree_view_get_selection(view); - g_signal_connect(selection, "changed", - G_CALLBACK(tax_table_selection_changed), ttw); - - - /* Create the tax table entries view */ - view = GTK_TREE_VIEW(ttw->entries_view); - store = gtk_list_store_new (NUM_TAX_ENTRY_COLS, G_TYPE_STRING, - G_TYPE_POINTER, G_TYPE_STRING); - gtk_tree_view_set_model(view, GTK_TREE_MODEL(store)); - g_object_unref(store); - - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes("", renderer, - "text", TAX_ENTRY_COL_NAME, - NULL); - gtk_tree_view_append_column(view, column); - - selection = gtk_tree_view_get_selection(view); - g_signal_connect(selection, "changed", - G_CALLBACK(tax_table_entry_selection_changed), ttw); - g_signal_connect(view, "row-activated", - G_CALLBACK(tax_table_entry_row_activated), ttw); - - - /* Setup signals */ - glade_xml_signal_autoconnect_full( xml, - gnc_glade_autoconnect_full_func, - ttw); - - /* register with component manager */ - ttw->component_id = - gnc_register_gui_component (DIALOG_TAX_TABLE_CM_CLASS, - tax_table_window_refresh_handler, - tax_table_window_close_handler, - ttw); - - tax_table_window_refresh (ttw); - gnc_restore_window_size (GCONF_SECTION, GTK_WINDOW (ttw->dialog)); - gtk_widget_show_all (ttw->dialog); - return ttw; } /* Destroy a tax-table window */ void gnc_ui_tax_table_window_destroy (TaxTableWindow *ttw) { - if (!ttw) - return; + if (!ttw) + return; - gnc_close_gui_component (ttw->component_id); + gnc_close_gui_component (ttw->component_id); } /* Create a new tax-table by name */ GncTaxTable * gnc_ui_tax_table_new_from_name (QofBook *book, const char *name) { - TaxTableWindow *ttw; + TaxTableWindow *ttw; - if (!book) return NULL; + if (!book) return NULL; - ttw = gnc_ui_tax_table_window_new (book); - if (!ttw) return NULL; + ttw = gnc_ui_tax_table_window_new (book); + if (!ttw) return NULL; - return new_tax_table_dialog (ttw, TRUE, NULL, name); + return new_tax_table_dialog (ttw, TRUE, NULL, name); }