[Gnucash-changes] Using static functions for QOF and QOF_TYPE_COLLECT

Neil Williams codehelp at cvs.gnucash.org
Sun Jun 19 17:15:33 EDT 2005


Log Message:
-----------
Using static functions for QOF and QOF_TYPE_COLLECT

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash:
        ChangeLog
    gnucash/src/business/business-core:
        gncAddress.c
        gncAddress.h
        gncCustomer.c
        gncCustomer.h
        gncEmployee.c
        gncEmployee.h
        gncInvoice.c
        gncInvoice.h
        gncJob.c
        gncJob.h
        gncOwner.c
        gncOwner.h
        gncVendor.c
        gncVendor.h
    gnucash/src/engine:
        Account.c
        Account.h
        FreqSpec.c
        FreqSpec.h
        Transaction.c
        Transaction.h

Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1487.2.231
retrieving revision 1.1487.2.232
diff -LChangeLog -LChangeLog -u -r1.1487.2.231 -r1.1487.2.232
--- ChangeLog
+++ ChangeLog
@@ -1,4 +1,28 @@
 2005-06-19  Neil Williams <linux at codehelp.co.uk>
+	* src/business/business-core/gncAddress.c:
+	* src/business/business-core/gncAddress.h:
+	* src/business/business-core/gncCustomer.c:
+	* src/business/business-core/gncCustomer.h:
+	* src/business/business-core/gncEmployee.c:
+	* src/business/business-core/gncEmployee.h:
+	* src/business/business-core/gncInvoice.c:
+	* src/business/business-core/gncInvoice.h:
+	* src/business/business-core/gncJob.c:
+	* src/business/business-core/gncJob.h:
+	* src/business/business-core/gncOwner.c:
+	* src/business/business-core/gncOwner.h:
+	* src/business/business-core/gncVendor.c:
+	* src/business/business-core/gncVendor.h
+	* src/engine/Account.c
+	* src/engine/Account.h: Changing to static functions,
+	and using QOF_TYPE_COLLECT in QofObject parameters.
+	* src/engine/FreqSpec.c
+	* src/engine/FreqSpec.h: Removing compiler hack, using
+	static functions.
+	* src/engine/Transaction.c
+	* src/engine/Transaction.h: Changing to static functions.
+
+2005-06-19  Neil Williams <linux at codehelp.co.uk>
 	* src/backend/qsf/qsf-backend.c: API
 	* src/backend/qsf/qsf-object.xsd.xml: QOF_TYPE_COLLECT
 	* src/backend/qsf/qsf-xml.h: Make into a private header.
Index: gncEmployee.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncEmployee.c,v
retrieving revision 1.15.4.4
retrieving revision 1.15.4.5
diff -Lsrc/business/business-core/gncEmployee.c -Lsrc/business/business-core/gncEmployee.c -u -r1.15.4.4 -r1.15.4.5
--- src/business/business-core/gncEmployee.c
+++ src/business/business-core/gncEmployee.c
@@ -279,6 +279,20 @@
   gncEmployeeCommitEdit (employee);
 }
 
+void
+qofEmployeeSetAddr (GncEmployee *employee, QofEntity *addr_ent)
+{
+	GncAddress *addr;
+
+	if(!employee || !addr_ent) { return; }
+	addr = (GncAddress*)addr_ent;
+	if(addr == employee->addr) { return; }
+	if(employee->addr != NULL) { gncAddressDestroy(employee->addr); }
+	gncEmployeeBeginEdit(employee);
+	employee->addr = addr;
+	gncEmployeeCommitEdit(employee);
+}
+
 /* ============================================================== */
 /* Get Functions */
 const char * gncEmployeeGetID (GncEmployee *employee)
@@ -425,7 +439,8 @@
 	{ EMPLOYEE_WORKDAY, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEmployeeGetWorkday,
 		(QofSetterFunc)gncEmployeeSetWorkday },
 	{ EMPLOYEE_RATE, QOF_TYPE_NUMERIC, (QofAccessFunc)gncEmployeeGetRate, (QofSetterFunc)gncEmployeeSetRate },
-    { EMPLOYEE_ADDR, GNC_ADDRESS_MODULE_NAME, (QofAccessFunc)gncEmployeeGetAddr, NULL },
+    { 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 },
Index: gncOwner.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncOwner.c,v
retrieving revision 1.15.4.5
retrieving revision 1.15.4.6
diff -Lsrc/business/business-core/gncOwner.c -Lsrc/business/business-core/gncOwner.c -u -r1.15.4.5 -r1.15.4.6
--- src/business/business-core/gncOwner.c
+++ src/business/business-core/gncOwner.c
@@ -106,21 +106,10 @@
   return owner->type;
 }
 
-AS_STRING_FUNC(GncOwnerType, ENUM_OWNER_TYPE)
-FROM_STRING_FUNC(GncOwnerType, ENUM_OWNER_TYPE)
-
-void
-qofOwnerSetType(GncOwner *owner, const char* type_string)
-{
-	if (!owner) { return; }
-	owner->type = GncOwnerTypefromString(type_string);
-	qofOwnerSetOwner(owner, NULL);
-}
-
 QofIdType
 qofOwnerGetType(GncOwner *owner)
 {
-	gchar *type;
+	QofIdType type;
 
 	type = NULL;
 	switch(owner->type)
@@ -134,23 +123,23 @@
 			break;
 		}
 		case GNC_OWNER_CUSTOMER : {
-			type = g_strdup(GNC_ID_CUSTOMER);
+			type = GNC_ID_CUSTOMER;
 			break;
 		}
 		case GNC_OWNER_JOB : {
-			type = g_strdup(GNC_ID_JOB);
+			type = GNC_ID_JOB;
 			break;
 		}
 		case GNC_OWNER_VENDOR : {
-			type = g_strdup(GNC_ID_VENDOR);
+			type = GNC_ID_VENDOR;
 			break;
 		}
 		case GNC_OWNER_EMPLOYEE : {
-			type = g_strdup(GNC_ID_EMPLOYEE);
+			type = GNC_ID_EMPLOYEE;
 			break;
 		}
 	}
-	return (QofIdType)type;
+	return type;
 }
 
 QofEntity*
@@ -188,16 +177,6 @@
 	return ent;
 }
 
-char*
-qofOwnerGetTypeString(GncOwner *owner)
-{
-	char* t;
-
-	if(!owner) { return NULL; }
-	t = g_strdup(GncOwnerTypeasString(owner->type));
-	return t;
-}
-
 void
 qofOwnerSetEntity (GncOwner *owner, QofEntity *ent)
 {
@@ -224,41 +203,6 @@
 	}
 }
 
-
-void
-qofOwnerSetOwner(GncOwner *owner, gpointer obj)
-{
-	if(!owner) { return; }
-	if(obj != NULL) { owner->qof_temp = obj; }
-	switch(owner->type)
-	{
-		case GNC_OWNER_NONE : {
-			break;
-		}
-		case GNC_OWNER_UNDEFINED : {
-			gncOwnerInitUndefined(owner, owner->qof_temp);
-			break;
-		}
-		case GNC_OWNER_CUSTOMER : {
-			gncOwnerInitCustomer(owner, (GncCustomer*)owner->qof_temp);
-			break;
-		}
-		case GNC_OWNER_JOB : {
-			gncOwnerInitJob(owner, (GncJob*)owner->qof_temp);
-			break;
-		}
-		case GNC_OWNER_VENDOR : {
-			gncOwnerInitVendor(owner, (GncVendor*)owner->qof_temp);
-			break;
-		}
-		case GNC_OWNER_EMPLOYEE : {
-			gncOwnerInitEmployee(owner, (GncEmployee*)owner->qof_temp);
-			break;
-		}
-	}
-	owner->qof_temp = NULL;
-}
-
 gpointer gncOwnerGetUndefined (const GncOwner *owner)
 {
   if (!owner) return NULL;
@@ -294,51 +238,6 @@
   return owner->owner.employee;
 }
 
-void
-qofOwnerSetUndefined (GncOwner *owner, gpointer obj)
-{
-	if ((!owner)||(!obj)) { return; }
-	qofOwnerSetOwner(owner, obj);
-}
-
-void
-qofOwnerSetCustomer (GncOwner *owner, GncCustomer *customer)
-{
-	if((!owner)||(!customer)) { return; }
-	qofOwnerSetOwner(owner, (gpointer)customer);
-}
-
-void
-qofOwnerSetJob (GncOwner *owner, GncJob *job)
-{
-	if((!owner)||(!job)) { return; }
-	qofOwnerSetOwner(owner, (gpointer)job);
-}
-
-void
-qofOwnerSetVendor( GncOwner *owner, GncVendor *vendor)
-{
-	if((!owner)||(!vendor)) { return; }
-	qofOwnerSetOwner(owner, (gpointer)vendor);
-}
-
-void
-qofOwnerSetEmployee (GncOwner *owner, GncEmployee* employee)
-{
-	if ((!owner)||(!employee)) { return; }
-	qofOwnerSetOwner(owner, (gpointer)employee);
-}
-
-void
-qofOwnerSetEndOwner (GncOwner *owner, GncOwner *parent)
-{
-	if(!owner) { return; }
-	if(owner->type == GNC_OWNER_JOB)
-	{
-		gncJobSetOwner(owner->owner.job, parent);
-	}
-}
-
 gnc_commodity * gncOwnerGetCurrency (GncOwner *owner)
 {
   if (!owner) return NULL;
@@ -598,16 +497,15 @@
 gboolean gncOwnerRegister (void)
 {
   static QofParam params[] = {
-    { OWNER_TYPE, QOF_TYPE_INT64, (QofAccessFunc)gncOwnerGetType, NULL },
-    { OWNER_TYPE_STRING, QOF_TYPE_STRING, (QofAccessFunc)qofOwnerGetTypeString, NULL },
+    { 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 },
+    { 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 },
   };
 
Index: gncCustomer.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncCustomer.h,v
retrieving revision 1.13.4.7
retrieving revision 1.13.4.8
diff -Lsrc/business/business-core/gncCustomer.h -Lsrc/business/business-core/gncCustomer.h -u -r1.13.4.7 -r1.13.4.8
--- src/business/business-core/gncCustomer.h
+++ src/business/business-core/gncCustomer.h
@@ -130,14 +130,6 @@
 GList * gncCustomerGetJoblist (GncCustomer *customer, gboolean show_all);
 /** @} */
 
-/** \name QOF additions
- @{
- */
-void qofCustomerSetAddr (GncCustomer *cust, QofEntity *addr_ent);
-
-void qofCustomerSetShipAddr (GncCustomer *cust, QofEntity *ship_addr_ent);
-/** @} */
-
 gboolean gncCustomerIsDirty (GncCustomer *customer);
 int gncCustomerCompare (GncCustomer *a, GncCustomer *b);
 
@@ -149,6 +141,11 @@
 #define CUSTOMER_DISCOUNT 	"amount of discount"
 #define CUSTOMER_CREDIT 	"amount of credit"
 #define CUSTOMER_TT_OVER 	"tax table override"
+#define CUSTOMER_TAX_INC    "customer_tax_included"
+#define CUSTOMER_TERMS      "customer_terms"
+#define CUSTOMER_ACTIVE     "customer_is_active"
+#define CUSTOMER_SLOTS      "customer_values"
+
 /** @deprecated functions, should be removed */
 #define gncCustomerGetGUID(x) qof_instance_get_guid(QOF_INSTANCE(x))
 #define gncCustomerRetGUID(x) (x ? *(qof_instance_get_guid(QOF_INSTANCE(x))) : *(guid_null()))
Index: gncJob.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncJob.h,v
retrieving revision 1.9.4.5
retrieving revision 1.9.4.6
diff -Lsrc/business/business-core/gncJob.h -Lsrc/business/business-core/gncJob.h -u -r1.9.4.5 -r1.9.4.6
--- src/business/business-core/gncJob.h
+++ src/business/business-core/gncJob.h
@@ -47,7 +47,9 @@
 GncJob *gncJobCreate (QofBook *book);
 void gncJobDestroy (GncJob *job);
 
-/* Set Functions */
+/** \name Set Functions
+@{
+*/
 
 void gncJobSetID (GncJob *job, const char *id);
 void gncJobSetName (GncJob *job, const char *jobname);
@@ -55,15 +57,20 @@
 void gncJobSetOwner (GncJob *job, GncOwner *owner);
 void gncJobSetActive (GncJob *job, gboolean active);
 
+/** @} */
 void gncJobBeginEdit (GncJob *job);
 void gncJobCommitEdit (GncJob *job);
 
-/* Get Functions */
+/** \name Get Functions
+@{
+*/
 
 const char * gncJobGetID (GncJob *job);
 const char * gncJobGetName (GncJob *job);
 const char * gncJobGetReference (GncJob *job);
 GncOwner * gncJobGetOwner (GncJob *job);
+
+/** @} */
 gboolean gncJobGetActive (GncJob *job);
 gboolean gncJobIsDirty (GncJob *job);
 
@@ -84,6 +91,7 @@
 #define JOB_NAME	"name"
 #define JOB_REFERENCE	"reference"
 #define JOB_OWNER	"owner"
+#define Q_JOB_OWNER "owner_collection"
 #define JOB_ACTIVE	"active"
 
 /** deprecated functions */
Index: gncInvoice.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncInvoice.c,v
retrieving revision 1.56.4.10
retrieving revision 1.56.4.11
diff -Lsrc/business/business-core/gncInvoice.c -Lsrc/business/business-core/gncInvoice.c -u -r1.56.4.10 -r1.56.4.11
--- src/business/business-core/gncInvoice.c
+++ src/business/business-core/gncInvoice.c
@@ -67,17 +67,17 @@
   
   char        *id;
   char        *notes;
-  gboolean 	active;
+  gboolean    active;
 
   char        *billing_id;
   char        *printname;
   GncBillTerm *terms;
   GList       *entries;
-  GncOwner	owner;
-  GncOwner	billto;
+  GncOwner    owner;
+  GncOwner    billto;
   GncJob      *job;
-  Timespec 	date_opened;
-  Timespec 	date_posted;
+  Timespec    date_opened;
+  Timespec    date_posted;
 
   gnc_numeric	to_charge_amount;
 
@@ -267,10 +267,11 @@
 	qofOwnerSetEntity(&invoice->owner, ent);
 }
 
-void
+static void
 qofInvoiceSetOwner (GncInvoice *invoice, QofCollection *coll)
 {
 	if(!invoice || !coll) { return; }
+	g_return_if_fail(qof_collection_count(coll) == 1);
 	gncInvoiceBeginEdit (invoice);
 	qof_collection_foreach(coll, qofInvoiceOwnerCB, invoice);
 	mark_invoice (invoice);
@@ -286,10 +287,11 @@
 	qofOwnerSetEntity(&invoice->billto, ent);
 }
 
-void
+static void
 qofInvoiceSetBillTo (GncInvoice *invoice, QofCollection *coll)
 {
 	if(!invoice || !coll) { return; }
+	g_return_if_fail(qof_collection_count(coll) == 1);
 	gncInvoiceBeginEdit (invoice);
 	qof_collection_foreach(coll, qofInvoiceBillToCB, invoice);
 	mark_invoice (invoice);
@@ -487,7 +489,7 @@
   return &invoice->owner;
 }
 
-QofCollection*
+static QofCollection*
 qofInvoiceGetOwner (GncInvoice *invoice)
 {
 	QofCollection *owner_coll;
@@ -498,7 +500,7 @@
 	return owner_coll;
 }
 
-QofCollection*
+static QofCollection*
 qofInvoiceGetBillTo (GncInvoice *invoice)
 {
 	QofCollection *bill_coll;
@@ -686,12 +688,12 @@
   return invoice->entries;
 }
 
-QofCollection*
+static QofCollection*
 qofInvoiceGetEntries (GncInvoice *invoice)
 {
 	QofCollection *entry_coll;
 	GList         *list;
-	QofEntity  *entry;
+	QofEntity     *entry;
 
 	entry_coll = qof_collection_new(GNC_ID_ENTRY);
 	for(list = gncInvoiceGetEntries(invoice); list != NULL; list = list->next)
@@ -721,7 +723,7 @@
 	}
 }
 
-void 
+static void 
 qofInvoiceSetEntries(GncInvoice *invoice, QofCollection *entry_coll)
 {
 	if(!entry_coll) { return; }
@@ -731,14 +733,14 @@
 	}
 }
 
-GncJob*
+static GncJob*
 qofInvoiceGetJob (GncInvoice *invoice)
 {
 	if(!invoice) { return NULL; }
 	return invoice->job;
 }
 
-void 
+static void 
 qofInvoiceSetJob (GncInvoice *invoice, GncJob *job)
 {
 	if(!invoice) { return; }
@@ -1545,20 +1547,20 @@
 gboolean gncInvoiceRegister (void)
 {
   static QofParam params[] = {
-    { INVOICE_ID, QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetID, (QofSetterFunc)gncInvoiceSetID },
-    { INVOICE_OWNER,   QOF_TYPE_COLLECT, (QofAccessFunc)gncInvoiceGetOwner, (QofSetterFunc)qofInvoiceSetOwner  },
-    { 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_ID,      QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetID,     (QofSetterFunc)gncInvoiceSetID },
+    { INVOICE_OWNER,   QOF_TYPE_COLLECT, (QofAccessFunc)qofInvoiceGetOwner, (QofSetterFunc)qofInvoiceSetOwner  },
+    { 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_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_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_TYPE,    QOF_TYPE_STRING, (QofAccessFunc)gncInvoiceGetType,    NULL },
+    { INVOICE_TERMS,   GNC_ID_BILLTERM, (QofAccessFunc)gncInvoiceGetTerms,   (QofSetterFunc)gncInvoiceSetTerms },
     { INVOICE_BILLTO,  QOF_TYPE_COLLECT, (QofAccessFunc)qofInvoiceGetBillTo, (QofSetterFunc)qofInvoiceSetBillTo  },
     { INVOICE_ENTRIES, QOF_TYPE_COLLECT, (QofAccessFunc)qofInvoiceGetEntries, (QofSetterFunc)qofInvoiceSetEntries },
     { INVOICE_JOB,     GNC_ID_JOB,      (QofAccessFunc)qofInvoiceGetJob,     (QofSetterFunc)qofInvoiceSetJob }, 
Index: gncCustomer.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncCustomer.c,v
retrieving revision 1.20.4.6
retrieving revision 1.20.4.7
diff -Lsrc/business/business-core/gncCustomer.c -Lsrc/business/business-core/gncCustomer.c -u -r1.20.4.6 -r1.20.4.7
--- src/business/business-core/gncCustomer.c
+++ src/business/business-core/gncCustomer.c
@@ -426,24 +426,32 @@
   return cust->addr;
 }
 
-void
+static void
 qofCustomerSetAddr (GncCustomer *cust, QofEntity *addr_ent)
 {
 	GncAddress *addr;
 
-	if(!cust) { return; }
+	if(!cust || !addr_ent) { return; }
 	addr = (GncAddress*)addr_ent;
+	if(addr == cust->addr) { return; }
+	if(cust->addr != NULL) { gncAddressDestroy(cust->addr); }
+	gncCustomerBeginEdit(cust);
 	cust->addr = addr;
+	gncCustomerCommitEdit(cust);
 }
 
-void
+static void
 qofCustomerSetShipAddr (GncCustomer *cust, QofEntity *ship_addr_ent)
 {
 	GncAddress *ship_addr;
 
-	if(!cust) { return; }
+	if(!cust || !ship_addr_ent) { return; }
 	ship_addr = (GncAddress*)ship_addr_ent;
+	if(ship_addr == cust->shipaddr) { return; }
+	if(cust->shipaddr != NULL) { gncAddressDestroy(cust->shipaddr); }
+	gncCustomerBeginEdit(cust);
 	cust->shipaddr = ship_addr;
+	gncCustomerCommitEdit(cust);
 }
 
 GncAddress * gncCustomerGetShipAddr (GncCustomer *cust)
@@ -580,6 +588,8 @@
     { 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 },
Index: gncEmployee.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncEmployee.h,v
retrieving revision 1.8.4.6
retrieving revision 1.8.4.7
diff -Lsrc/business/business-core/gncEmployee.h -Lsrc/business/business-core/gncEmployee.h -u -r1.8.4.6 -r1.8.4.7
--- src/business/business-core/gncEmployee.h
+++ src/business/business-core/gncEmployee.h
@@ -63,6 +63,8 @@
 void gncEmployeeSetCurrency (GncEmployee *employee, gnc_commodity * currency);
 void gncEmployeeSetActive (GncEmployee *employee, gboolean active);
 void gncEmployeeSetCCard (GncEmployee *employee, Account* ccard_acc);
+void qofEmployeeSetAddr (GncEmployee *employee, QofEntity *addr_ent);
+
 /** @} */
 
 /** @name Get Functions 
@@ -99,6 +101,7 @@
 #define EMPLOYEE_ACL		"acl"
 #define EMPLOYEE_WORKDAY	"workday"
 #define EMPLOYEE_RATE		"rate"
+#define EMPLOYEE_CC    "credit_card_account"
 
 /** deprecated routines */
 #define gncEmployeeGetGUID(E) qof_entity_get_guid(QOF_ENTITY(E))
Index: gncVendor.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncVendor.h,v
retrieving revision 1.14.4.4
retrieving revision 1.14.4.5
diff -Lsrc/business/business-core/gncVendor.h -Lsrc/business/business-core/gncVendor.h -u -r1.14.4.4 -r1.14.4.5
--- src/business/business-core/gncVendor.h
+++ src/business/business-core/gncVendor.h
@@ -50,7 +50,9 @@
 GncVendor *gncVendorCreate (QofBook *book);
 void gncVendorDestroy (GncVendor *vendor);
 
-/* Set Functions */
+/** @name Set Functions
+ @{
+*/
 
 void gncVendorSetID (GncVendor *vendor, const char *id);
 void gncVendorSetName (GncVendor *vendor, const char *name);
@@ -59,17 +61,20 @@
 void gncVendorSetTaxIncluded (GncVendor *vendor, GncTaxIncluded taxincl);
 void gncVendorSetCurrency (GncVendor *vendor, gnc_commodity *currency);
 void gncVendorSetActive (GncVendor *vendor, gboolean active);
-
 void gncVendorSetTaxTableOverride (GncVendor *vendor, gboolean override);
 void gncVendorSetTaxTable (GncVendor *vendor, GncTaxTable *table);
 
+/** @} */
+
 void gncVendorAddJob (GncVendor *vendor, GncJob *job);
 void gncVendorRemoveJob (GncVendor *vendor, GncJob *job);
 
 void gncVendorBeginEdit (GncVendor *vendor);
 void gncVendorCommitEdit (GncVendor *vendor);
 
-/* Get Functions */
+/** @name Get Functions
+@{
+*/
 
 const char * gncVendorGetID (GncVendor *vendor);
 const char * gncVendorGetName (GncVendor *vendor);
@@ -83,6 +88,7 @@
 gboolean gncVendorGetTaxTableOverride (GncVendor *vendor);
 GncTaxTable* gncVendorGetTaxTable (GncVendor *vendor);
 
+/** @} */
 /** XXX should be renamed to RetJobList to be consistent with
  * other usage, since caller must free the copied list 
  */
@@ -102,6 +108,12 @@
 #define VENDOR_ID	"id"
 #define VENDOR_NAME	"name"
 #define VENDOR_ADDR	"addr"
+#define VENDOR_NOTES "vendor_notes"
+#define VENDOR_TERMS "vendor_terms"
+#define VENDOR_TAX_INC "vendor_tax_included"
+#define VENDOR_ACTIVE "vendor_is_active"
+#define VENDOR_TAX_OVERRIDE "override_tax_table"
+#define VENDOR_TAX_TABLE "vendor_tax_table"
 
 /** deprecated functions */
 #define gncVendorGetBook(X) qof_instance_get_book (QOF_INSTANCE(X))
Index: gncVendor.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncVendor.c,v
retrieving revision 1.21.4.4
retrieving revision 1.21.4.5
diff -Lsrc/business/business-core/gncVendor.c -Lsrc/business/business-core/gncVendor.c -u -r1.21.4.4 -r1.21.4.5
--- src/business/business-core/gncVendor.c
+++ src/business/business-core/gncVendor.c
@@ -313,6 +313,31 @@
   gncVendorCommitEdit (vendor);
 }
 
+static void
+qofVendorSetAddr (GncVendor *vendor, QofEntity *addr_ent)
+{
+	GncAddress *addr;
+
+	if(!vendor || !addr_ent) { return; }
+	addr = (GncAddress*)addr_ent;
+	if(addr == vendor->addr) { return; }
+	if(vendor->addr != NULL) { gncAddressDestroy(vendor->addr); }
+	gncVendorBeginEdit(vendor);
+	vendor->addr = addr;
+	gncVendorCommitEdit(vendor);
+}
+
+static void
+qofVendorSetTaxIncluded(GncVendor *vendor, const char* type_string)
+{
+	GncTaxIncluded inc;
+
+	if(!gncTaxIncludedStringToType(type_string, &inc)) { return; }
+	gncVendorBeginEdit(vendor);
+	vendor->taxincluded = inc;
+	gncVendorCommitEdit(vendor);
+}
+
 /* ============================================================== */
 /* Get Functions */
 
@@ -376,6 +401,12 @@
   return vendor->taxtable;
 }
 
+static const char*
+qofVendorGetTaxIncluded(GncVendor *vendor)
+{
+	return gncTaxIncludedTypeToString(vendor->taxincluded);
+}
+
 /* Note that JobList changes do not affect the "dirtiness" of the vendor */
 void gncVendorAddJob (GncVendor *vendor, GncJob *job)
 {
@@ -501,7 +532,15 @@
   static QofParam params[] = {
     { VENDOR_ID, QOF_TYPE_STRING, (QofAccessFunc)gncVendorGetID, (QofSetterFunc)gncVendorSetID },
     { VENDOR_NAME, QOF_TYPE_STRING, (QofAccessFunc)gncVendorGetName, (QofSetterFunc)gncVendorSetName },
-    { VENDOR_ADDR, GNC_ADDRESS_MODULE_NAME, (QofAccessFunc)gncVendorGetAddr, NULL },
+    { 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 },
Index: gncJob.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncJob.c,v
retrieving revision 1.18.4.5
retrieving revision 1.18.4.6
diff -Lsrc/business/business-core/gncJob.c -Lsrc/business/business-core/gncJob.c -u -r1.18.4.5 -r1.18.4.6
--- src/business/business-core/gncJob.c
+++ src/business/business-core/gncJob.c
@@ -268,6 +268,25 @@
   mark_job (job);
   gncJobCommitEdit (job);
 }
+static void
+qofJobOwnerCB (QofEntity *ent, gpointer user_data)
+{
+	GncJob *job;
+
+	job = (GncJob*)user_data;
+	qofOwnerSetEntity(&job->owner, ent);
+}
+
+static void
+qofJobSetOwner (GncJob *job, QofCollection *coll)
+{
+	if(!job || !coll) { return; }
+	g_return_if_fail(qof_collection_count(coll) == 1);
+	gncJobBeginEdit (job);
+	qof_collection_foreach(coll, qofJobOwnerCB, job);
+	mark_job (job);
+	gncJobCommitEdit (job);
+}
 
 void gncJobBeginEdit (GncJob *job)
 {
@@ -327,6 +346,17 @@
   return job->active;
 }
 
+static QofCollection*
+qofJobGetOwner (GncJob *job)
+{
+	QofCollection *job_coll;
+
+	if(!job) { return NULL; }
+	job_coll = qof_collection_new(GNC_ID_JOB);
+	qof_collection_add_entity(job_coll, qofOwnerGetOwner(&job->owner));
+	return job_coll;
+}
+
 /* Other functions */
 
 int gncJobCompare (const GncJob * a, const GncJob *b) {
@@ -370,7 +400,8 @@
     { 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 },
-    { JOB_OWNER, GNC_ID_OWNER, (QofAccessFunc)gncJobGetOwner, (QofSetterFunc)gncJobSetOwner },
+    { JOB_OWNER, GNC_ID_OWNER, (QofAccessFunc)gncJobGetOwner, NULL },
+    { Q_JOB_OWNER, QOF_TYPE_COLLECT, (QofAccessFunc)qofJobGetOwner, (QofSetterFunc)qofJobSetOwner },
     { 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 },
Index: gncAddress.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncAddress.c,v
retrieving revision 1.4.4.5
retrieving revision 1.4.4.6
diff -Lsrc/business/business-core/gncAddress.c -Lsrc/business/business-core/gncAddress.c -u -r1.4.4.5 -r1.4.4.6
--- src/business/business-core/gncAddress.c
+++ src/business/business-core/gncAddress.c
@@ -97,7 +97,7 @@
   return addr;
 }
 
-GncAddress * 
+static GncAddress * 
 qofAddressCreate (QofBook *book)
 {
   GncAddress *addr;
@@ -122,18 +122,35 @@
   return addr;
 }
 
-void
-qofAddressSetOwner(GncAddress *addr, QofEntity *owner)
+static void
+qofAddressOwnerCB (QofEntity *ent, gpointer user_data)
+{
+	GncAddress *addr;
+
+	addr = (GncAddress*)user_data;
+	if(!ent || !addr) { return; }
+	if(addr->parent == NULL) { addr->parent = ent; }
+}
+
+static void
+qofAddressSetOwner(GncAddress *addr, QofCollection *col)
 {
-	if(!addr) { return; }
-	addr->parent = owner;
+	if(!addr || !col) { return; }
+	if(qof_collection_count(col) != 1) { return; }
+	qof_collection_foreach(col, qofAddressOwnerCB, addr);
 }
 
-QofEntity*
+static QofCollection*
 qofAddressGetOwner(GncAddress *addr)
 {
+	QofCollection *col;
+	QofEntity *parent;
+
 	if(!addr) { return NULL; }
-	return addr->parent;
+	parent = addr->parent;
+	col = qof_collection_new(parent->e_type);
+	qof_collection_add_entity(col, addr->parent);
+	return col;
 }
 
 GncAddress * 
@@ -343,15 +360,15 @@
 {
   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, GNC_ID_OWNER,    (QofAccessFunc)qofAddressGetOwner, (QofSetterFunc)qofAddressSetOwner },
+    { 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_COLLECT,(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 },
Index: gncAddress.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncAddress.h,v
retrieving revision 1.4.4.5
retrieving revision 1.4.4.6
diff -Lsrc/business/business-core/gncAddress.h -Lsrc/business/business-core/gncAddress.h -u -r1.4.4.5 -r1.4.4.6
--- src/business/business-core/gncAddress.h
+++ src/business/business-core/gncAddress.h
@@ -82,14 +82,6 @@
  @{ */
 /** create a new address */
 GncAddress * gncAddressCreate (QofBook *book, QofEntity *parent);
-/** \brief QOF address creation 
-
-An address cannot exist without a parent, yet to merge and 
-export the parent, a QOF address object must exist and it 
-must be created using standard QOF calls. QOF will always 
-set the parent.
-*/
-GncAddress* qofAddressCreate (QofBook *book);
 
 /** destroy an address */
 void gncAddressDestroy (GncAddress *addr);
@@ -108,15 +100,6 @@
 void gncAddressSetFax (GncAddress *addr, const char *fax);
 void gncAddressSetEmail (GncAddress *addr, const char *email);
 void gncAddressClearDirty (GncAddress *address);
-/** \brief Set the address owner.
-
-\note Every address must have a genuine ::GncOwner as this 
-provides the name or identifier to use the address.
-
-In order to export a Customer, QOF must be able to find the
-address as an entity.
-*/
-void qofAddressSetOwner (GncAddress *address, QofEntity *owner);
 /** @} */
 
 /** @name Get Functions 
@@ -130,7 +113,6 @@
 const char * gncAddressGetPhone (const GncAddress *addr);
 const char * gncAddressGetFax (const GncAddress *addr);
 const char * gncAddressGetEmail (const GncAddress *addr);
-QofEntity*   qofAddressGetOwner (GncAddress *addr);
 /** @} */
 
 gboolean gncAddressIsDirty (const GncAddress *addr);
Index: gncInvoice.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncInvoice.h,v
retrieving revision 1.29.4.7
retrieving revision 1.29.4.8
diff -Lsrc/business/business-core/gncInvoice.h -Lsrc/business/business-core/gncInvoice.h -u -r1.29.4.7 -r1.29.4.8
--- src/business/business-core/gncInvoice.h
+++ src/business/business-core/gncInvoice.h
@@ -70,17 +70,6 @@
 void gncInvoiceSetActive (GncInvoice *invoice, gboolean active);
 void gncInvoiceSetBillTo (GncInvoice *invoice, GncOwner *billto);
 void gncInvoiceSetToChargeAmount (GncInvoice *invoice, gnc_numeric amount);
-void qofInvoiceSetOwner (GncInvoice *invoice, QofCollection *coll);
-void qofInvoiceSetBillTo (GncInvoice *invoice, QofCollection *coll);
-/** \brief create the entry list from a temporary frame.
-
-An invoice can hold an open ended list of entries that are summed to
-make the total payable. To represent these entries within the invoice,
-QOF_TYPE_COLLECT is used to list the references to the GncEntry's for
-the invoice. The collection contains a number of GncEntry objects.
-*/
-void qofInvoiceSetEntries(GncInvoice *invoice, QofCollection *entry_coll);
-void qofInvoiceSetJob (GncInvoice *invoice, GncJob *job);
 /** @} */
 
 void gncInvoiceAddEntry (GncInvoice *invoice, GncEntry *entry);
@@ -105,14 +94,6 @@
 GncOwner * gncInvoiceGetBillTo (GncInvoice *invoice);
 gnc_numeric gncInvoiceGetToChargeAmount (GncInvoice *invoice);
 gboolean gncInvoiceGetActive (GncInvoice *invoice);
-/** \brief Create a temporary frame for the entry list.
-
-Converts the GList of GncEntry inside GncInvoice to a KVP_TYPE_GLIST.
-*/
-QofCollection* qofInvoiceGetEntries (GncInvoice *invoice);
-GncJob* qofInvoiceGetJob (GncInvoice *invoice);
-QofCollection* qofInvoiceGetOwner (GncInvoice *invoice);
-QofCollection* qofInvoiceGetBillTo (GncInvoice *invoice);
 
 GNCLot * gncInvoiceGetPostedLot (GncInvoice *invoice);
 Transaction * gncInvoiceGetPostedTxn (GncInvoice *invoice);
Index: gncOwner.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/gncOwner.h,v
retrieving revision 1.12.4.5
retrieving revision 1.12.4.6
diff -Lsrc/business/business-core/gncOwner.h -Lsrc/business/business-core/gncOwner.h -u -r1.12.4.5 -r1.12.4.6
--- src/business/business-core/gncOwner.h
+++ src/business/business-core/gncOwner.h
@@ -44,15 +44,14 @@
 #include "gnc-lot.h" 
 #include "gnc-engine-util.h"
 
-#define ENUM_OWNER_TYPE(_) \
-  _(GNC_OWNER_NONE,)       \
-  _(GNC_OWNER_UNDEFINED,)  \
-  _(GNC_OWNER_CUSTOMER,)   \
-  _(GNC_OWNER_JOB,)        \
-  _(GNC_OWNER_VENDOR,)     \
-  _(GNC_OWNER_EMPLOYEE,)
-
-DEFINE_ENUM(GncOwnerType, ENUM_OWNER_TYPE)
+typedef enum { 
+	GNC_OWNER_NONE , 
+	GNC_OWNER_UNDEFINED , 
+	GNC_OWNER_CUSTOMER , 
+	GNC_OWNER_JOB , 
+	GNC_OWNER_VENDOR , 
+	GNC_OWNER_EMPLOYEE , 
+}GncOwnerType;
 
 /** \name QOF handling
 
@@ -61,10 +60,6 @@
 to QOF as they can be used by objects like GncInvoice.
 @{
 */
-/** \brief Allow the type to be set separate from the union. */
-void qofOwnerSetType(GncOwner *owner, const char* type_string);
-/** \brief Allow the union to be set independently of the type. */
-char* qofOwnerGetTypeString(GncOwner *owner);
 /** return the type for the collection. */
 QofIdType qofOwnerGetType(GncOwner *owner);
 /** return the owner itself as an entity. */
@@ -72,29 +67,10 @@
 /** set the owner from the entity. */
 void qofOwnerSetEntity (GncOwner *owner, QofEntity *ent);
 
-/** \brief QOF union set routine.
-
- If ::qofOwnerSetType has already been called, initialise the owner.\n
- If no type has been set, store the object in a temporary pointer.
- When qofOwnerSetType is then called, qofOwnerSetOwner is called again
- and uses the value in the pointer to initialise the owner.
-
-QOF makes sure both owner and type set functions are called once.
-*/
-void qofOwnerSetOwner(GncOwner *owner, gpointer obj);
-
-void qofOwnerSetUndefined (GncOwner *owner, gpointer obj);
-void qofOwnerSetCustomer (GncOwner *owner, GncCustomer* customer);
-void qofOwnerSetJob (GncOwner *owner, GncJob* job);
-void qofOwnerSetVendor (GncOwner *owner, GncVendor* vendor);
-void qofOwnerSetEmployee (GncOwner *owner, GncEmployee* employee);
 /** \brief Set the parent owner. */
 void qofOwnerSetEndOwner (GncOwner *owner, GncOwner *parent);
 GncOwner* qofOwnerCreate (QofBook *book);
 
-AS_STRING_DEC(GncOwnerType, ENUM_OWNER_TYPE)
-FROM_STRING_DEC(GncOwnerType, ENUM_OWNER_TYPE)
-
 gboolean
 gncOwnerRegister(void);
 
Index: Transaction.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Transaction.h,v
retrieving revision 1.141.4.10
retrieving revision 1.141.4.11
diff -Lsrc/engine/Transaction.h -Lsrc/engine/Transaction.h -u -r1.141.4.10 -r1.141.4.11
--- src/engine/Transaction.h
+++ src/engine/Transaction.h
@@ -427,18 +427,6 @@
 Timespec      xaccTransRetDateDueTS (const Transaction *trans);
 /** Dates and txn-type for A/R and A/P "invoice" postings */
 void	      xaccTransGetDateDueTS (const Transaction *trans, Timespec *ts);
-/** \brief QOF date posted setter.
-
-Required because xaccTransSetDatePostedTS has a Timespec pointer argument
-when QOF passes a Timespec.
-*/
-void qofTransSetDatePosted (Transaction *trans, Timespec ts);
-/** \brief QOF date entered setter.
-
-Required because xaccTransSetDateEnteredTS has a Timespec pointer argument
-when QOF passes a Timespec.
-*/
-void qofTransSetDateEntered (Transaction *trans, Timespec ts);
 /** @} */
 
 
@@ -943,16 +931,17 @@
 
 #define RECONCILED_MATCH_TYPE	"reconciled-match"
 
-/* QOF only */
-void qofSplitSetParentTrans(Split *s, QofEntity *ent);
-void qofSplitSetAccount(Split *s, QofEntity *ent);
-
-/** deprecated rouitines */
+/** \deprecated */
 #define xaccSplitGetGUID(X)      qof_entity_get_guid(QOF_ENTITY(X))
+/** \deprecated */
 #define xaccSplitReturnGUID(X) (X ? *(qof_entity_get_guid(QOF_ENTITY(X))) : *(guid_null()))
+/** \deprecated */
 #define xaccTransGetBook(X)      qof_instance_get_book (QOF_INSTANCE(X))
+/** \deprecated */
 #define xaccTransGetGUID(X)      qof_entity_get_guid(QOF_ENTITY(X))
+/** \deprecated */
 #define xaccTransReturnGUID(X) (X ? *(qof_entity_get_guid(QOF_ENTITY(X))) : *(guid_null()))
+/** \deprecated */
 #define xaccTransGetSlots(X)     qof_instance_get_slots (QOF_INSTANCE(X))
 
 #endif /* XACC_TRANSACTION_H */
Index: Transaction.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Transaction.c,v
retrieving revision 1.261.4.10
retrieving revision 1.261.4.11
diff -Lsrc/engine/Transaction.c -Lsrc/engine/Transaction.c -u -r1.261.4.10 -r1.261.4.11
--- src/engine/Transaction.c
+++ src/engine/Transaction.c
@@ -2384,7 +2384,7 @@
    xaccTransSetDateInternal(trans, &trans->date_entered, ts);
 }
 
-void
+static void
 qofTransSetDatePosted (Transaction *trans, Timespec ts)
 {
 	if (!trans) { return; }
@@ -2401,7 +2401,7 @@
    set_gains_date_dirty (trans);
 }
 
-void
+static void
 qofTransSetDateEntered (Transaction *trans, Timespec ts)
 {
 	if (!trans) { return; }
@@ -3266,7 +3266,7 @@
   return obj;
 }
 
-void
+static void
 qofSplitSetParentTrans(Split *s, QofEntity *ent)
 {
 	Transaction *trans;
@@ -3276,7 +3276,7 @@
 	xaccTransAppendSplit(trans, s);
 }
 
-void
+static void
 qofSplitSetAccount(Split *s, QofEntity *ent)
 {
 	Account *acc;
Index: Account.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Account.c,v
retrieving revision 1.222.4.12
retrieving revision 1.222.4.13
diff -Lsrc/engine/Account.c -Lsrc/engine/Account.c -u -r1.222.4.12 -r1.222.4.13
--- src/engine/Account.c
+++ src/engine/Account.c
@@ -1471,14 +1471,14 @@
    return (acc->type);
 }
 
-const char*
+static const char*
 qofAccountGetTypeString (Account *acc)
 {
 	if(!acc) { return NULL; }
 	return (xaccAccountTypeEnumAsString(acc->type));
 }
 
-void
+static void
 qofAccountSetType (Account *acc, const char *type_string)
 {
 	GNCAccountType type;
Index: FreqSpec.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/FreqSpec.c,v
retrieving revision 1.28.4.7
retrieving revision 1.28.4.8
diff -Lsrc/engine/FreqSpec.c -Lsrc/engine/FreqSpec.c -u -r1.28.4.7 -r1.28.4.8
--- src/engine/FreqSpec.c
+++ src/engine/FreqSpec.c
@@ -94,18 +94,6 @@
 #include "qofbook-p.h"
 #include "qofid-p.h"
 
-/* I have done this to prevent compiler warnings...
- * This is used to convert a const GDate* to a GDate* for passing
- * to the glib g_date_xxx functions which don't use const...
- * Strangely, most of the rest of glib does use const, so
- * perhaps this will change? When it does, just define this macro to
- * nothing and the compiler will check the constness of each pointer....
- 
- Done. NW 24/4/5.
- */
-#define CONST_HACK 
-//(GDate*)
-
 static short module = MOD_SX;
 /* 
  *  FIXME: should be in a header file
@@ -292,8 +280,8 @@
       break;
 
    case ONCE:
-      if ( g_date_compare( &(fs->s.once.date),
-                 CONST_HACK in_date ) > 0 ) {
+      if ( g_date_compare( &(fs->s.once.date), in_date ) > 0 ) 
+      {
          *out_date = fs->s.once.date;
       } else {
          /* Date is past due. Return an invalid date. */
@@ -304,7 +292,7 @@
    case DAILY: {
       guint32 julian_in_date, julian_next_repeat, complete_intervals;
 
-      julian_in_date = g_date_julian( CONST_HACK in_date );
+      julian_in_date = g_date_julian( in_date );
       complete_intervals =
          (julian_in_date - fs->s.daily.offset_from_epoch) /
          fs->s.daily.interval_days;
@@ -320,7 +308,7 @@
        * It is very similar to the daily repeat representation. */
       guint32 julian_in_date, julian_next_repeat, complete_intervals;
 
-      julian_in_date = g_date_julian( CONST_HACK in_date );
+      julian_in_date = g_date_julian( in_date );
       complete_intervals =
          (julian_in_date - fs->s.weekly.offset_from_epoch) /
          (fs->s.weekly.interval_weeks * 7);
@@ -334,18 +322,18 @@
       guint32 in_months_from_epoch, after_repeat_in_month_interval,
          complete_intervals, next_repeat_months_from_epoch, month, year;
 
-      in_months_from_epoch = (g_date_year( CONST_HACK in_date )-1) * 12 +
-         g_date_month( CONST_HACK in_date ) - 1;
+      in_months_from_epoch = (g_date_year( in_date )-1) * 12 +
+         g_date_month( in_date ) - 1;
       complete_intervals =
          (in_months_from_epoch - fs->s.monthly.offset_from_epoch) /
          fs->s.monthly.interval_months;
       after_repeat_in_month_interval =
-         (g_date_day( CONST_HACK in_date ) >= fs->s.monthly.day_of_month ||
+         (g_date_day( in_date ) >= fs->s.monthly.day_of_month ||
           (in_months_from_epoch - fs->s.monthly.offset_from_epoch) %
           fs->s.monthly.interval_months > 0 ||
-          g_date_day( CONST_HACK in_date ) >=
-          g_date_days_in_month( g_date_month( CONST_HACK in_date ),
-                      g_date_year( CONST_HACK in_date ) ) )  ? 1 : 0;
+          g_date_day( in_date ) >=
+          g_date_days_in_month( g_date_month( in_date ),
+                      g_date_year( in_date ) ) )  ? 1 : 0;
       next_repeat_months_from_epoch =
          fs->s.monthly.offset_from_epoch +
          (complete_intervals + after_repeat_in_month_interval) *
@@ -372,19 +360,19 @@
          wday_of_1st, day_of_repeat;
 
       GDate date1;
-      in_months_from_epoch = (g_date_year( CONST_HACK in_date )-1) * 12 +
-         g_date_month( CONST_HACK in_date ) - 1;
+      in_months_from_epoch = (g_date_year( in_date )-1) * 12 +
+         g_date_month( in_date ) - 1;
       complete_intervals =
          (in_months_from_epoch - fs->s.month_relative.offset_from_epoch) /
          fs->s.month_relative.interval_months;
-      month = g_date_month( CONST_HACK in_date );
-      year = g_date_year( CONST_HACK in_date );
+      month = g_date_month( in_date );
+      year = g_date_year( in_date );
       g_date_set_dmy( &date1, 1, month, year );
       wday_of_1st = g_date_get_weekday( &date1 );
       day_of_repeat = (fs->s.month_relative.occurrence-1)*7 +
          ((fs->s.month_relative.weekday + 7 - wday_of_1st)%7 + 1);
       after_repeat_in_month_interval =
-         (g_date_day( CONST_HACK in_date ) >= day_of_repeat ||
+         (g_date_day( in_date ) >= day_of_repeat ||
           day_of_repeat > g_date_days_in_month( month, year ) ||
           (in_months_from_epoch - fs->s.month_relative.offset_from_epoch) %
           fs->s.month_relative.interval_months > 0 )  ? 1 : 0;
@@ -493,7 +481,7 @@
    fs->type = DAILY;
    fs->s.daily.interval_days = interval_days;
 
-   julian_days_since_epoch = g_date_julian( CONST_HACK initial_date );
+   julian_days_since_epoch = g_date_julian( initial_date );
    fs->s.daily.offset_from_epoch = julian_days_since_epoch % interval_days;
 }
 
@@ -522,7 +510,7 @@
    fs->type = DAILY;
    fs->s.daily.interval_days = 7 * interval_weeks;
 
-   julian_days_since_epoch = g_date_julian( CONST_HACK initial_date );
+   julian_days_since_epoch = g_date_julian( initial_date );
    fs->s.daily.offset_from_epoch = julian_days_since_epoch % (7*interval_weeks);
 #endif
 #if 1
@@ -536,7 +524,7 @@
    fs->type = WEEKLY;
    fs->s.weekly.interval_weeks = interval_weeks;
 
-   julian_days_since_epoch = g_date_julian( CONST_HACK initial_date );
+   julian_days_since_epoch = g_date_julian( initial_date );
    fs->s.weekly.offset_from_epoch = julian_days_since_epoch % (7*interval_weeks);
 #endif
 #if 0
@@ -554,7 +542,7 @@
    fs->type = WEEKLY;
    fs->s.weekly.interval_weeks = interval_weeks;
 
-   julian_day_initial = g_date_julian( CONST_HACK initial_date );
+   julian_day_initial = g_date_julian( initial_date );
    weeks_since_epoch = (julian_day_initial-1) / 7;
    fs->s.weekly.day_of_week = (julian_day_initial-1) % 7;
    fs->s.weekly.offset_from_epoch = weeks_since_epoch % interval_weeks;
@@ -578,10 +566,10 @@
    fs->type = MONTHLY;
    fs->s.monthly.interval_months = interval_months;
 
-   months_since_epoch = (g_date_year( CONST_HACK initial_date )-1) * 12 +
-      g_date_month( CONST_HACK initial_date ) - 1;
+   months_since_epoch = (g_date_year( initial_date )-1) * 12 +
+      g_date_month( initial_date ) - 1;
    fs->s.monthly.offset_from_epoch = months_since_epoch % interval_months;
-   fs->s.monthly.day_of_month = g_date_day( CONST_HACK initial_date );
+   fs->s.monthly.day_of_month = g_date_day( initial_date );
 
    g_return_if_fail( fs->s.monthly.offset_from_epoch <
       fs->s.monthly.interval_months );
@@ -599,12 +587,12 @@
    fs->type = MONTH_RELATIVE;
    fs->s.month_relative.interval_months = interval_months;
 
-   months_since_epoch = (g_date_year( CONST_HACK initial_date )-1) * 12 +
-      g_date_month( CONST_HACK initial_date ) - 1;
+   months_since_epoch = (g_date_year( initial_date )-1) * 12 +
+      g_date_month( initial_date ) - 1;
    fs->s.month_relative.offset_from_epoch = months_since_epoch % interval_months;
    
-   fs->s.month_relative.weekday = g_date_get_weekday( CONST_HACK initial_date );
-   fs->s.month_relative.occurrence = (g_date_day( CONST_HACK initial_date )-1) / 7 + 1;
+   fs->s.month_relative.weekday = g_date_get_weekday( initial_date );
+   fs->s.month_relative.occurrence = (g_date_day( initial_date )-1) / 7 + 1;
    
    g_return_if_fail( fs->s.month_relative.weekday > 0 );
    g_return_if_fail( fs->s.month_relative.weekday <= 7 );
@@ -723,7 +711,7 @@
 	xaccFreqSpecGetFreqStr(fs, str);
 	return str->str;
 }
-    
+
 void
 xaccFreqSpecGetFreqStr( FreqSpec *fs, GString *str )
 {
@@ -1133,7 +1121,7 @@
 
 /*  QOF routines. */
 
-int
+static int
 qofFreqSpecGetMonthDay(FreqSpec *fs)
 {
 	int outDayOfMonth;
@@ -1143,8 +1131,8 @@
 	outDayOfMonth = fs->s.monthly.day_of_month;
 	return outDayOfMonth;
 }
-
-int
+/*
+static int
 qofFreqSpecGetMonthOffset(FreqSpec *fs)
 {
 	int outMonthOffset;
@@ -1154,8 +1142,8 @@
 	outMonthOffset = fs->s.monthly.offset_from_epoch;
 	return outMonthOffset;
 }
-
-Timespec
+*/
+static Timespec
 qofFreqSpecGetBaseDate(FreqSpec *fs)
 {
 	GDate       *when;
@@ -1172,7 +1160,7 @@
 	return ts;
 }
 
-char*
+static char*
 qofFreqSpecGetUIType(FreqSpec *fs)
 {
 	char *type_string;
@@ -1182,7 +1170,7 @@
 	return type_string;
 }
 
-int
+static int
 qofFreqSpecGetRepeat(FreqSpec *fs)
 {
 	int repeat, dump, dump2;
@@ -1296,8 +1284,7 @@
 	}
 }
 
-
-void
+static void
 qofFreqSpecSetUIType (FreqSpec *fs, const char *type_string)
 {
 	g_return_if_fail(fs != NULL);
@@ -1305,7 +1292,7 @@
 	qofFreqSpecCalculate(fs, fs->value);
 }
 
-void
+static void
 qofFreqSpecSetBaseDate(FreqSpec *fs, Timespec start_date)
 {
 	time_t      start_t;
@@ -1326,7 +1313,7 @@
 	qofFreqSpecCalculate(fs, fs->value);
 }
 
-void
+static void
 qofFreqSpecSetRepeat(FreqSpec *fs, gint value)
 {
 	fs->value = value;
Index: FreqSpec.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/FreqSpec.h,v
retrieving revision 1.10.4.5
retrieving revision 1.10.4.6
diff -Lsrc/engine/FreqSpec.h -Lsrc/engine/FreqSpec.h -u -r1.10.4.5 -r1.10.4.6
--- src/engine/FreqSpec.h
+++ src/engine/FreqSpec.h
@@ -52,7 +52,7 @@
 /** @file FreqSpec.h
     @brief Period / Date Frequency Specification
     @author Copyright (C) 2001 Joshua Sled <jsled at asynchronous.org>
-    @author Copyright (C) 2001 Ben Stanley <bds02 at uow.edu.au>  
+    @author Copyright (C) 2001 Ben Stanley <bds02 at uow.edu.au>
     @author Copyright (c) 2005 Neil Williams <linux at codehelp.co.uk>
 */
 
@@ -286,60 +286,6 @@
 #define FS_MONTH_DAY          "fs-day-of-month"
 #define FS_MONTH_OFFSET       "fs-month-offset"
 
-/** \brief Use a string for enum values.
-
-Uses a macro defined in gnc-engine-util.h to swap the enum value for
-the string equivalent. The string is a direct copy of the enum value
-in the source, so UIFREQ_SEMI_MONTHLY returns "UIFREQ_SEMI_MONTHLY"
-*/
-char* qofFreqSpecGetUIType(FreqSpec *fs);
-/** \brief Use a string for enum values. */
-void qofFreqSpecSetUIType (FreqSpec *fs, const char *type_string);
-/** \brief Single get routine for all types.
-
-This routine dumps the other calculated values from certain types
-and returns only the repeat interval.
-
-\return -1 on error or if the type in INVALID,
-otherwise the repeat interval for the current type.
-*/
-int qofFreqSpecGetRepeat(FreqSpec *fs);
-/** \brief Single set routine for all types.
-
-Store the value temporarily. When the repeat interval,
-base date and UIType are all set, QOF calculates the
-other FreqSpec parameters.
-*/
-void qofFreqSpecSetRepeat(FreqSpec *fs, gint value);
-/** \brief Get the base date.
-
-Uses Timespec for QOF.
-*/
-Timespec qofFreqSpecGetBaseDate(FreqSpec *fs);
-/** \brief Set the base date.
-
-Uses Timespec for QOF.
-*/
-void qofFreqSpecSetBaseDate(FreqSpec *fs, Timespec ts);
-/** \brief Get just the day of month for a monthly repeat.
-
-This isolates the one parameter value from the current object.
-
-\note QOF requires the value to be returned, not set via a pointer.
-
- at return 0 if this is not a monthly FreqSpec.
-*/
-int qofFreqSpecGetMonthDay(FreqSpec *fs);
-/** \brief Get just the month offset for a monthly repeat.
-
-This isolates the one parameter value from the current object.
-
-\note QOF requires the value to be returned, not set via a pointer.
-
- at return 0 if this is not a monthly FreqSpec.
-*/
-int qofFreqSpecGetMonthOffset(FreqSpec *fs);
-
 /** \todo Need support for monthly and weekly extra values and composite. */
 gboolean FreqSpecRegister(void);
 
Index: Account.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Account.h,v
retrieving revision 1.110.4.12
retrieving revision 1.110.4.13
diff -Lsrc/engine/Account.h -Lsrc/engine/Account.h -u -r1.110.4.12 -r1.110.4.13
--- src/engine/Account.h
+++ src/engine/Account.h
@@ -213,8 +213,6 @@
 void xaccAccountSetLastNum (Account *account, const char *num);
 /** Set the account's type */
 GNCAccountType xaccAccountGetType (Account *account);
-const char* qofAccountGetTypeString (Account *acc);
-void qofAccountSetType (Account *acc, const char *type_string);
 
 /** Get the account's name */
 const char *   xaccAccountGetName (Account *account);


More information about the gnucash-changes mailing list