diff --git a/src/backend/xml/gnc-owner-xml-v2.c b/src/backend/xml/gnc-owner-xml-v2.c index 7a5ae646604..19acf7de6af 100644 --- a/src/backend/xml/gnc-owner-xml-v2.c +++ b/src/backend/xml/gnc-owner-xml-v2.c @@ -56,7 +56,7 @@ const gchar *owner_version_string = "2.0.0"; #define owner_id_string "owner:id" xmlNodePtr -gnc_owner_to_dom_tree (const char *tag, GncOwner *owner) +gnc_owner_to_dom_tree (const char *tag, const GncOwner *owner) { xmlNodePtr ret; const char *type_str; diff --git a/src/backend/xml/gnc-owner-xml-v2.h b/src/backend/xml/gnc-owner-xml-v2.h index 30fd1cc271e..b1017dce4f2 100644 --- a/src/backend/xml/gnc-owner-xml-v2.h +++ b/src/backend/xml/gnc-owner-xml-v2.h @@ -28,7 +28,7 @@ gboolean gnc_dom_tree_to_owner (xmlNodePtr node, GncOwner *owner, QofBook *book); -xmlNodePtr gnc_owner_to_dom_tree (const char *tag, GncOwner *addr); +xmlNodePtr gnc_owner_to_dom_tree (const char *tag, const GncOwner *addr); void gnc_owner_xml_initialize (void); #endif /* GNC_OWNER_XML_V2_H */ diff --git a/src/business/business-gnome/business-gnome-utils.c b/src/business/business-gnome/business-gnome-utils.c index 82a3f8c2ac1..47a56b86ec8 100644 --- a/src/business/business-gnome/business-gnome-utils.c +++ b/src/business/business-gnome/business-gnome-utils.c @@ -204,19 +204,12 @@ static void gnc_invoice_select_search_set_label(GncISI* isi) { GncOwnerType owner_type; - GncOwner *tmp; char *label; g_assert(isi); if (!isi->label) return; - tmp = &isi->owner; - owner_type = gncOwnerGetType(tmp); - while (owner_type == GNC_OWNER_JOB) - { - tmp = gncOwnerGetEndOwner(tmp); - owner_type = gncOwnerGetType(tmp); - } + owner_type = gncOwnerGetType(gncOwnerGetEndOwner(&isi->owner)); /* Translators: See comments in dialog-invoice.c:gnc_invoice_search() */ switch (owner_type) diff --git a/src/business/business-gnome/dialog-invoice.c b/src/business/business-gnome/dialog-invoice.c index 3a5dc92b833..d7e79031400 100644 --- a/src/business/business-gnome/dialog-invoice.c +++ b/src/business/business-gnome/dialog-invoice.c @@ -1480,7 +1480,7 @@ 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; + const GncOwner *owner; /* If there isn't an invoice behind us, close down */ if (!invoice) @@ -1840,7 +1840,7 @@ find_handler (gpointer find_data, gpointer user_data) static InvoiceWindow * gnc_invoice_new_page (QofBook *bookp, InvoiceDialogType type, - GncInvoice *invoice, GncOwner *owner, + GncInvoice *invoice, const GncOwner *owner, GncMainWindow *window) { InvoiceWindow *iw; @@ -2198,13 +2198,14 @@ gnc_invoice_create_page (InvoiceWindow *iw, gpointer page) } static InvoiceWindow * -gnc_invoice_window_new_invoice (QofBook *bookp, GncOwner *owner, +gnc_invoice_window_new_invoice (QofBook *bookp, const GncOwner *owner, GncInvoice *invoice) { InvoiceWindow *iw; GladeXML *xml; GtkWidget *hbox; GncOwner *billto; + const GncOwner *start_owner; if (invoice) { @@ -2236,17 +2237,18 @@ gnc_invoice_window_new_invoice (QofBook *bookp, GncOwner *owner, invoice = gncInvoiceCreate (bookp); gncInvoiceSetCurrency (invoice, gnc_default_currency ()); iw->book = bookp; + start_owner = owner; } else { iw->dialog_type = MOD_INVOICE; - owner = gncInvoiceGetOwner (invoice); + start_owner = gncInvoiceGetOwner (invoice); iw->book = gncInvoiceGetBook (invoice); } /* Save this for later */ - gncOwnerCopy (gncOwnerGetEndOwner(owner), &(iw->owner)); - gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner)); + gncOwnerCopy (gncOwnerGetEndOwner(start_owner), &(iw->owner)); + gncOwnerInitJob (&(iw->job), gncOwnerGetJob (start_owner)); billto = gncInvoiceGetBillTo (invoice); gncOwnerCopy (gncOwnerGetEndOwner (billto), &(iw->proj_cust)); @@ -2677,15 +2679,8 @@ gnc_invoice_search (GncInvoice *start, GncOwner *owner, QofBook *book) */ 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); - } + owner_type = gncOwnerGetType (gncOwnerGetEndOwner (owner)); /* Then if there's an actual owner add it to the query * and limit the search to this owner @@ -2771,34 +2766,6 @@ gnc_invoice_search (GncInvoice *start, GncOwner *owner, QofBook *book) label); } -GNCSearchWindow * -gnc_invoice_search_select (gpointer start, gpointer book) -{ - GncInvoice *i = start; - GncOwner owner, *ownerp; - - if (!book) return NULL; - - if (i) - { - ownerp = gncInvoiceGetOwner (i); - gncOwnerCopy (ownerp, &owner); - } - else - gncOwnerInitCustomer (&owner, NULL); /* XXX */ - - return gnc_invoice_search (start, NULL, book); -} - -GNCSearchWindow * -gnc_invoice_search_edit (gpointer start, gpointer book) -{ - if (start) - gnc_ui_invoice_edit (start); - - return NULL; -} - DialogQueryList * gnc_invoice_show_bills_due (QofBook *book, double days_in_advance) { diff --git a/src/business/business-gnome/dialog-invoice.h b/src/business/business-gnome/dialog-invoice.h index 5bf6427bc26..86c217fb082 100644 --- a/src/business/business-gnome/dialog-invoice.h +++ b/src/business/business-gnome/dialog-invoice.h @@ -59,15 +59,6 @@ InvoiceWindow * gnc_ui_invoice_duplicate (GncInvoice *invoice); /* Search for invoices */ GNCSearchWindow * gnc_invoice_search (GncInvoice *start, GncOwner *owner, QofBook *book); -/* - * These callbacks are for use with the gnc_general_search widget - * - * select() provides a Select Dialog and returns it. - * edit() opens the existing invoice for editing and returns NULL. - */ -GNCSearchWindow * gnc_invoice_search_select (gpointer start, gpointer book); -GNCSearchWindow * gnc_invoice_search_edit (gpointer start, gpointer book); - void gnc_business_call_owner_report (GncOwner *owner, Account *acc); void gnc_invoice_window_sort (InvoiceWindow *iw, invoice_sort_type_t sort_code); diff --git a/src/business/business-gnome/dialog-payment.c b/src/business/business-gnome/dialog-payment.c index 47df9836b7b..715ed85d887 100644 --- a/src/business/business-gnome/dialog-payment.c +++ b/src/business/business-gnome/dialog-payment.c @@ -706,7 +706,7 @@ gnc_ui_payment_window_destroy (PaymentWindow *pw) } PaymentWindow * -gnc_ui_payment_new_with_invoice (GncOwner *owner, QofBook *book, +gnc_ui_payment_new_with_invoice (const GncOwner *owner, QofBook *book, GncInvoice *invoice) { GncOwner owner_def; @@ -715,15 +715,14 @@ gnc_ui_payment_new_with_invoice (GncOwner *owner, QofBook *book, if (owner) { /* Figure out the company */ - owner = gncOwnerGetEndOwner (owner); + gncOwnerCopy (gncOwnerGetEndOwner (owner), &owner_def); } else { gncOwnerInitCustomer (&owner_def, NULL); - owner = &owner_def; } - return new_payment_window (owner, book, invoice); + return new_payment_window (&owner_def, book, invoice); } PaymentWindow * diff --git a/src/business/business-gnome/dialog-payment.h b/src/business/business-gnome/dialog-payment.h index 2f8fd42e97a..d393b1657d5 100644 --- a/src/business/business-gnome/dialog-payment.h +++ b/src/business/business-gnome/dialog-payment.h @@ -31,7 +31,7 @@ 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, +PaymentWindow * gnc_ui_payment_new_with_invoice (const GncOwner *owner, QofBook *book, GncInvoice *invoice); PaymentWindow * gnc_ui_payment_new_with_txn (GncOwner *owner, Transaction *txn); diff --git a/src/business/business-ledger/gncEntryLedgerDisplay.c b/src/business/business-ledger/gncEntryLedgerDisplay.c index 48f5fbca54b..a0ad76c1581 100644 --- a/src/business/business-ledger/gncEntryLedgerDisplay.c +++ b/src/business/business-ledger/gncEntryLedgerDisplay.c @@ -141,7 +141,7 @@ gnc_entry_ledger_set_watches (GncEntryLedger *ledger, GList *entries) /* For expense vouchers, watch the employee and refresh if it's changed */ if (ledger->type == GNCENTRY_EXPVOUCHER_ENTRY) { - GncOwner *owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (ledger->invoice)); + const GncOwner *owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (ledger->invoice)); GncEmployee *employee = gncOwnerGetEmployee (owner); if (employee) diff --git a/src/business/business-ledger/gncEntryLedgerLoad.c b/src/business/business-ledger/gncEntryLedgerLoad.c index 6fc2a566fdf..48cefb74fdb 100644 --- a/src/business/business-ledger/gncEntryLedgerLoad.c +++ b/src/business/business-ledger/gncEntryLedgerLoad.c @@ -108,7 +108,7 @@ static void load_discount_how_cells (GncEntryLedger *ledger) static void load_payment_type_cells (GncEntryLedger *ledger) { ComboCell *cell; - GncOwner *owner; + const GncOwner *owner; GncEmployee *employee; cell = (ComboCell *) gnc_table_layout_get_cell (ledger->table->layout, @@ -356,7 +356,7 @@ void gnc_entry_ledger_load (GncEntryLedger *ledger, GList *entry_list) /* The rest of this does not apply to expense vouchers */ if (ledger->type != GNCENTRY_EXPVOUCHER_ENTRY) { - GncOwner *owner = gncInvoiceGetOwner (ledger->invoice); + const GncOwner *owner = gncInvoiceGetOwner (ledger->invoice); GncTaxTable *table = NULL; GncTaxIncluded taxincluded_p = GNC_TAXINCLUDED_USEGLOBAL; gboolean taxincluded = FALSE; @@ -364,8 +364,7 @@ void gnc_entry_ledger_load (GncEntryLedger *ledger, GList *entry_list) GNCOptionDB *odb; /* Determine the TaxIncluded and Discount values */ - owner = gncOwnerGetEndOwner (owner); - switch (gncOwnerGetType (owner)) + switch (gncOwnerGetType (gncOwnerGetEndOwner (owner))) { case GNC_OWNER_CUSTOMER: taxincluded_p = gncCustomerGetTaxIncluded (owner->owner.customer); diff --git a/src/engine/gncInvoice.c b/src/engine/gncInvoice.c index 37133c1dcdc..65404ef076d 100644 --- a/src/engine/gncInvoice.c +++ b/src/engine/gncInvoice.c @@ -696,7 +696,7 @@ const char * gncInvoiceGetID (const GncInvoice *invoice) return invoice->id; } -GncOwner * gncInvoiceGetOwner (GncInvoice *invoice) +const GncOwner * gncInvoiceGetOwner (const GncInvoice *invoice) { if (!invoice) return NULL; return &invoice->owner; @@ -776,7 +776,7 @@ const char * gncInvoiceGetNotes (const GncInvoice *invoice) return invoice->notes; } -GncOwnerType gncInvoiceGetOwnerType (GncInvoice *invoice) +GncOwnerType gncInvoiceGetOwnerType (const GncInvoice *invoice) { const GncOwner *owner; g_return_val_if_fail (invoice, GNC_OWNER_NONE); @@ -877,7 +877,7 @@ GList * gncInvoiceGetTypeListForOwnerType (GncOwnerType type) } -GncInvoiceType gncInvoiceGetType (GncInvoice *invoice) +GncInvoiceType gncInvoiceGetType (const GncInvoice *invoice) { if (!invoice) return GNC_INVOICE_UNDEFINED; switch (gncInvoiceGetOwnerType (invoice)) @@ -893,7 +893,7 @@ GncInvoiceType gncInvoiceGetType (GncInvoice *invoice) } } -const char * gncInvoiceGetTypeString (GncInvoice *invoice) +const char * gncInvoiceGetTypeString (const GncInvoice *invoice) { GncInvoiceType type = gncInvoiceGetType(invoice); switch (type) @@ -1154,7 +1154,7 @@ gncInvoiceGetInvoiceFromTxn (const Transaction *txn) return gncInvoiceLookup(book, guid); } -gboolean gncInvoiceAmountPositive (GncInvoice *invoice) +gboolean gncInvoiceAmountPositive (const GncInvoice *invoice) { switch (gncInvoiceGetType (invoice)) { @@ -1174,7 +1174,7 @@ gboolean gncInvoiceAmountPositive (GncInvoice *invoice) struct lotmatch { - GncOwner *owner; + const GncOwner *owner; gboolean positive_balance; }; @@ -1182,7 +1182,8 @@ static gboolean gnc_lot_match_owner_payment (GNCLot *lot, gpointer user_data) { struct lotmatch *lm = user_data; - GncOwner owner_def, *owner; + GncOwner owner_def; + const GncOwner *owner; gnc_numeric balance = gnc_lot_get_balance (lot); /* Is this a payment lot */ @@ -1217,7 +1218,7 @@ Transaction * gncInvoicePostToAccount (GncInvoice *invoice, Account *acc, const char *name, *type; char *lot_title; Account *ccard_acct = NULL; - GncOwner *owner; + const GncOwner *owner; if (!invoice || !acc) return NULL; @@ -1964,7 +1965,7 @@ gboolean gncInvoiceRegister (void) return qof_object_register (&gncInvoiceDesc); } -gchar *gncInvoiceNextID (QofBook *book, GncOwner *owner) +gchar *gncInvoiceNextID (QofBook *book, const GncOwner *owner) { gchar *nextID; switch (gncOwnerGetType(gncOwnerGetEndOwner(owner))) diff --git a/src/engine/gncInvoice.h b/src/engine/gncInvoice.h index 6862a07e568..19cb5278b68 100644 --- a/src/engine/gncInvoice.h +++ b/src/engine/gncInvoice.h @@ -129,17 +129,17 @@ void gncInvoiceSortEntries (GncInvoice *invoice); /** @name Get Functions @{ */ const char * gncInvoiceGetID (const GncInvoice *invoice); -GncOwner * gncInvoiceGetOwner (GncInvoice *invoice); +const GncOwner * gncInvoiceGetOwner (const GncInvoice *invoice); Timespec gncInvoiceGetDateOpened (const GncInvoice *invoice); Timespec gncInvoiceGetDatePosted (const GncInvoice *invoice); Timespec gncInvoiceGetDateDue (const GncInvoice *invoice); GncBillTerm * gncInvoiceGetTerms (const GncInvoice *invoice); const char * gncInvoiceGetBillingID (const GncInvoice *invoice); const char * gncInvoiceGetNotes (const GncInvoice *invoice); -GncOwnerType gncInvoiceGetOwnerType (GncInvoice *invoice); +GncOwnerType gncInvoiceGetOwnerType (const GncInvoice *invoice); GList * gncInvoiceGetTypeListForOwnerType (const GncOwnerType type); -GncInvoiceType gncInvoiceGetType (GncInvoice *invoice); -const char * gncInvoiceGetTypeString (GncInvoice *invoice); +GncInvoiceType gncInvoiceGetType (const GncInvoice *invoice); +const char * gncInvoiceGetTypeString (const GncInvoice *invoice); gnc_commodity * gncInvoiceGetCurrency (const GncInvoice *invoice); GncOwner * gncInvoiceGetBillTo (GncInvoice *invoice); gnc_numeric gncInvoiceGetToChargeAmount (const GncInvoice *invoice); @@ -170,7 +170,7 @@ GNCPrice * gncInvoiceGetPrice(GncInvoice *invoice, gnc_commodity* commodity); * Returns TRUE if the invoice will increase the balance or FALSE * otherwise. */ -gboolean gncInvoiceAmountPositive (GncInvoice *invoice); +gboolean gncInvoiceAmountPositive (const GncInvoice *invoice); /** Post this invoice to an account. Returns the new Transaction * that is tied to this invoice. The transaction is set with diff --git a/src/engine/gncInvoiceP.h b/src/engine/gncInvoiceP.h index e230620aa53..88e8bcfc7d6 100644 --- a/src/engine/gncInvoiceP.h +++ b/src/engine/gncInvoiceP.h @@ -35,7 +35,7 @@ #include "gncOwner.h" gboolean gncInvoiceRegister (void); -gchar *gncInvoiceNextID (QofBook *book, GncOwner *owner); +gchar *gncInvoiceNextID (QofBook *book, const GncOwner *owner); void gncInvoiceSetPostedAcc (GncInvoice *invoice, Account *acc); void gncInvoiceSetPostedTxn (GncInvoice *invoice, Transaction *txn); void gncInvoiceSetPostedLot (GncInvoice *invoice, GNCLot *lot); diff --git a/src/engine/gncOwner.c b/src/engine/gncOwner.c index d285a6edc8d..029a629f208 100644 --- a/src/engine/gncOwner.c +++ b/src/engine/gncOwner.c @@ -571,7 +571,7 @@ GncGUID gncOwnerRetGUID (GncOwner *owner) return *guid_null (); } -GncOwner * gncOwnerGetEndOwner (GncOwner *owner) +const GncOwner * gncOwnerGetEndOwner (const GncOwner *owner) { if (!owner) return NULL; switch (owner->type) @@ -615,11 +615,10 @@ int gncOwnerCompare (const GncOwner *a, const GncOwner *b) } } -const GncGUID * gncOwnerGetEndGUID (GncOwner *owner) +const GncGUID * gncOwnerGetEndGUID (const GncOwner *owner) { if (!owner) return NULL; - owner = gncOwnerGetEndOwner (owner); - return gncOwnerGetGUID (owner); + return gncOwnerGetGUID (gncOwnerGetEndOwner (owner)); } void gncOwnerAttachToLot (const GncOwner *owner, GNCLot *lot) diff --git a/src/engine/gncOwner.h b/src/engine/gncOwner.h index 24a0b4ef947..9b411fdb386 100644 --- a/src/engine/gncOwner.h +++ b/src/engine/gncOwner.h @@ -175,8 +175,8 @@ GncGUID gncOwnerRetGUID (GncOwner *owner); * Get the "parent" Owner or GncGUID thereof. The "parent" owner * is the Customer or Vendor, or the Owner of a Job */ -GncOwner * gncOwnerGetEndOwner (GncOwner *owner); -const GncGUID * gncOwnerGetEndGUID (GncOwner *owner); +const GncOwner * gncOwnerGetEndOwner (const GncOwner *owner); +const GncGUID * gncOwnerGetEndGUID (const GncOwner *owner); /** attach an owner to a lot */ void gncOwnerAttachToLot (const GncOwner *owner, GNCLot *lot);