r21549 - gnucash/trunk/src/engine - Introduce credit-note kvp value to distinguish invoices from credit
Geert Janssens
gjanssens at code.gnucash.org
Thu Nov 10 10:04:51 EST 2011
Author: gjanssens
Date: 2011-11-10 10:04:50 -0500 (Thu, 10 Nov 2011)
New Revision: 21549
Trac: http://svn.gnucash.org/trac/changeset/21549
Modified:
gnucash/trunk/src/engine/gncInvoice.c
Log:
Introduce credit-note kvp value to distinguish invoices from credit
notes.
Modified: gnucash/trunk/src/engine/gncInvoice.c
===================================================================
--- gnucash/trunk/src/engine/gncInvoice.c 2011-11-09 21:45:12 UTC (rev 21548)
+++ gnucash/trunk/src/engine/gncInvoice.c 2011-11-10 15:04:50 UTC (rev 21549)
@@ -49,7 +49,6 @@
char *id;
char *notes;
gboolean active;
- gboolean credit_note;
char *billing_id;
char *printname;
@@ -78,10 +77,11 @@
static QofLogModule log_module = GNC_MOD_BUSINESS;
-#define _GNC_MOD_NAME GNC_ID_INVOICE
+#define _GNC_MOD_NAME GNC_ID_INVOICE
-#define GNC_INVOICE_ID "gncInvoice"
-#define GNC_INVOICE_GUID "invoice-guid"
+#define GNC_INVOICE_ID "gncInvoice"
+#define GNC_INVOICE_GUID "invoice-guid"
+#define GNC_INVOICE_IS_CN "credit-note"
#define SET_STR(obj, member, str) { \
char * tmp; \
@@ -307,7 +307,6 @@
invoice->billto.type = GNC_OWNER_CUSTOMER;
invoice->active = TRUE;
- invoice->credit_note = FALSE;
invoice->to_charge_amount = gnc_numeric_zero();
@@ -321,6 +320,7 @@
GncInvoice *invoice;
QofBook* book;
GList *node;
+ gint64 is_cn;
g_assert(from);
book = qof_instance_get_book(from);
@@ -335,8 +335,10 @@
invoice->notes = CACHE_INSERT (from->notes);
invoice->billing_id = CACHE_INSERT (from->billing_id);
invoice->active = from->active;
- invoice->credit_note = from->credit_note;
+ is_cn = kvp_frame_get_gint64(from->inst.kvp_data, GNC_INVOICE_IS_CN);
+ kvp_frame_set_gint64(invoice->inst.kvp_data, GNC_INVOICE_IS_CN, is_cn);
+
invoice->terms = from->terms;
gncBillTermIncRef (invoice->terms);
@@ -519,9 +521,9 @@
void gncInvoiceSetIsCreditNote (GncInvoice *invoice, gboolean credit_note)
{
if (!invoice) return;
- if (invoice->credit_note == credit_note) return;
gncInvoiceBeginEdit (invoice);
- invoice->credit_note = credit_note;
+ kvp_frame_set_gint64(invoice->inst.kvp_data, GNC_INVOICE_IS_CN,
+ credit_note ? 1 : 0);
mark_invoice (invoice);
gncInvoiceCommitEdit (invoice);
}
@@ -883,11 +885,17 @@
switch (gncInvoiceGetOwnerType (invoice))
{
case GNC_OWNER_CUSTOMER:
- return (invoice->credit_note ? GNC_INVOICE_CUST_CREDIT_NOTE : GNC_INVOICE_CUST_INVOICE);
+ return (gncInvoiceGetIsCreditNote(invoice) ?
+ GNC_INVOICE_CUST_CREDIT_NOTE :
+ GNC_INVOICE_CUST_INVOICE);
case GNC_OWNER_VENDOR:
- return (invoice->credit_note ? GNC_INVOICE_VEND_CREDIT_NOTE : GNC_INVOICE_VEND_INVOICE);
+ return (gncInvoiceGetIsCreditNote(invoice) ?
+ GNC_INVOICE_VEND_CREDIT_NOTE :
+ GNC_INVOICE_VEND_INVOICE);
case GNC_OWNER_EMPLOYEE:
- return (invoice->credit_note ? GNC_INVOICE_EMPL_CREDIT_NOTE : GNC_INVOICE_EMPL_INVOICE);
+ return (gncInvoiceGetIsCreditNote(invoice) ?
+ GNC_INVOICE_EMPL_CREDIT_NOTE :
+ GNC_INVOICE_EMPL_INVOICE);
default:
return GNC_INVOICE_UNDEFINED;
}
@@ -953,8 +961,12 @@
gboolean gncInvoiceGetIsCreditNote (const GncInvoice *invoice)
{
+ gint64 is_cn;
if (!invoice) return FALSE;
- return invoice->credit_note;
+ if (kvp_frame_get_gint64(invoice->inst.kvp_data, GNC_INVOICE_IS_CN))
+ return TRUE;
+ else
+ return FALSE;
}
More information about the gnucash-changes
mailing list