- Support Vendor-owned Jobs.. Fill in all the GNC_OWNER_VENDOR place

holders with appropriate code.
- Change gncJob{Get,Set}Desc to {Get,Set}Reference to better reflect
  its purpose in life


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@6636 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Derek Atkins
2002-01-22 17:16:02 +00:00
parent 7e2891f0d8
commit 4d54387978
8 changed files with 76 additions and 23 deletions

View File

@@ -75,7 +75,7 @@ void gncJobDestroy (GncJob *job)
gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job); gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job);
break; break;
case GNC_OWNER_VENDOR: case GNC_OWNER_VENDOR:
/* XXX */ gncVendorRemoveJob (gncOwnerGetVendor(&job->owner), job);
break; break;
default: default:
} }
@@ -111,7 +111,7 @@ void gncJobSetName (GncJob *job, const char *name)
job->dirty = TRUE; job->dirty = TRUE;
} }
void gncJobSetDesc (GncJob *job, const char *desc) void gncJobSetReference (GncJob *job, const char *desc)
{ {
if (!job) return; if (!job) return;
if (!desc) return; if (!desc) return;
@@ -141,7 +141,7 @@ void gncJobSetOwner (GncJob *job, GncOwner *owner)
gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job); gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job);
break; break;
case GNC_OWNER_VENDOR: case GNC_OWNER_VENDOR:
/* XXX */ gncVendorRemoveJob (gncOwnerGetVendor(&job->owner), job);
break; break;
default: default:
} }
@@ -153,7 +153,7 @@ void gncJobSetOwner (GncJob *job, GncOwner *owner)
gncCustomerAddJob (gncOwnerGetCustomer(&job->owner), job); gncCustomerAddJob (gncOwnerGetCustomer(&job->owner), job);
break; break;
case GNC_OWNER_VENDOR: case GNC_OWNER_VENDOR:
/* XXX */ gncVendorAddJob (gncOwnerGetVendor(&job->owner), job);
break; break;
default: default:
} }
@@ -195,7 +195,7 @@ const char * gncJobGetName (GncJob *job)
return job->name; return job->name;
} }
const char * gncJobGetDesc (GncJob *job) const char * gncJobGetReference (GncJob *job)
{ {
if (!job) return NULL; if (!job) return NULL;
return job->desc; return job->desc;

View File

@@ -22,8 +22,8 @@ void gncJobDestroy (GncJob *job);
/* Set Functions */ /* Set Functions */
void gncJobSetID (GncJob *job, const char *id); void gncJobSetID (GncJob *job, const char *id);
void gncJobSetName (GncJob *job, const char *username); void gncJobSetName (GncJob *job, const char *jobname);
void gncJobSetDesc (GncJob *job, const char *language); void gncJobSetReference (GncJob *job, const char *owner_reference);
void gncJobSetOwner (GncJob *job, GncOwner *owner); void gncJobSetOwner (GncJob *job, GncOwner *owner);
void gncJobSetActive (GncJob *job, gboolean active); void gncJobSetActive (GncJob *job, gboolean active);
@@ -35,7 +35,7 @@ GNCBook * gncJobGetBook (GncJob *job);
const GUID * gncJobGetGUID (GncJob *job); const GUID * gncJobGetGUID (GncJob *job);
const char * gncJobGetID (GncJob *job); const char * gncJobGetID (GncJob *job);
const char * gncJobGetName (GncJob *job); const char * gncJobGetName (GncJob *job);
const char * gncJobGetDesc (GncJob *job); const char * gncJobGetReference (GncJob *job);
GncOwner * gncJobGetOwner (GncJob *job); GncOwner * gncJobGetOwner (GncJob *job);
gboolean gncJobGetActive (GncJob *job); gboolean gncJobGetActive (GncJob *job);

View File

@@ -1,6 +1,6 @@
/* /*
* gncVendor.c -- the Core Vendor Interface * gncVendor.c -- the Core Vendor Interface
* Copyright (C) 2001 Derek Atkins * Copyright (C) 2001, 2002 Derek Atkins
* Author: Derek Atkins <warlord@MIT.EDU> * Author: Derek Atkins <warlord@MIT.EDU>
*/ */
@@ -30,6 +30,7 @@ struct _gncVendor {
gint terms; gint terms;
gboolean taxincluded; gboolean taxincluded;
gboolean active; gboolean active;
GList * jobs;
gboolean dirty; gboolean dirty;
}; };
@@ -74,6 +75,8 @@ void gncVendorDestroy (GncVendor *vendor)
CACHE_REMOVE (vendor->name); CACHE_REMOVE (vendor->name);
CACHE_REMOVE (vendor->notes); CACHE_REMOVE (vendor->notes);
gncAddressDestroy (vendor->addr); gncAddressDestroy (vendor->addr);
g_list_free (vendor->jobs);
remObj (vendor); remObj (vendor);
g_free (vendor); g_free (vendor);
@@ -204,17 +207,30 @@ gboolean gncVendorGetActive (GncVendor *vendor)
return vendor->active; return vendor->active;
} }
GncVendor * gncVendorLookup (GNCBook *book, const GUID *guid) /* Note that JobList changes do not affect the "dirtiness" of the vendor */
void gncVendorAddJob (GncVendor *vendor, GncJob *job)
{ {
if (!book || !guid) return NULL; if (!vendor) return;
return xaccLookupEntity (gnc_book_get_entity_table (book), if (!job) return;
guid, _GNC_MOD_NAME);
if (g_list_index(vendor->jobs, job) == -1)
vendor->jobs = g_list_insert_sorted (vendor->jobs, job, gncJobSortFunc);
} }
gboolean gncVendorIsDirty (GncVendor *vendor) void gncVendorRemoveJob (GncVendor *vendor, GncJob *job)
{ {
if (!vendor) return FALSE; GList *node;
return (vendor->dirty || gncAddressIsDirty (vendor->addr));
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);
}
} }
void gncVendorCommitEdit (GncVendor *vendor) void gncVendorCommitEdit (GncVendor *vendor)
@@ -232,6 +248,36 @@ static gint gncVendorSortFunc (gconstpointer a, gconstpointer b) {
return(strcmp(va->name, vb->name)); return(strcmp(va->name, vb->name));
} }
GList * gncVendorGetJoblist (GncVendor *vendor, gboolean show_all)
{
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);
}
return list;
}
}
GncVendor * gncVendorLookup (GNCBook *book, const GUID *guid)
{
if (!book || !guid) return NULL;
return xaccLookupEntity (gnc_book_get_entity_table (book),
guid, _GNC_MOD_NAME);
}
gboolean gncVendorIsDirty (GncVendor *vendor)
{
if (!vendor) return FALSE;
return (vendor->dirty || gncAddressIsDirty (vendor->addr));
}
/* Package-Private functions */ /* Package-Private functions */
static void addObj (GncVendor *vendor) static void addObj (GncVendor *vendor)

View File

@@ -1,6 +1,6 @@
/* /*
* gncVendor.h -- the Core Vendor Interface * gncVendor.h -- the Core Vendor Interface
* Copyright (C) 2001 Derek Atkins * Copyright (C) 2001, 2002 Derek Atkins
* Author: Derek Atkins <warlord@MIT.EDU> * Author: Derek Atkins <warlord@MIT.EDU>
*/ */
@@ -11,6 +11,7 @@ typedef struct _gncVendor GncVendor;
#include "gnc-book.h" #include "gnc-book.h"
#include "gncAddress.h" #include "gncAddress.h"
#include "gncJob.h"
#define GNC_VENDOR_MODULE_NAME "gncVendor" #define GNC_VENDOR_MODULE_NAME "gncVendor"
@@ -28,6 +29,9 @@ void gncVendorSetTerms (GncVendor *vendor, gint terms);
void gncVendorSetTaxIncluded (GncVendor *vendor, gboolean taxincl); void gncVendorSetTaxIncluded (GncVendor *vendor, gboolean taxincl);
void gncVendorSetActive (GncVendor *vendor, gboolean active); void gncVendorSetActive (GncVendor *vendor, gboolean active);
void gncVendorAddJob (GncVendor *vendor, GncJob *job);
void gncVendorRemoveJob (GncVendor *vendor, GncJob *job);
void gncVendorCommitEdit (GncVendor *vendor); void gncVendorCommitEdit (GncVendor *vendor);
/* Get Functions */ /* Get Functions */
@@ -42,6 +46,8 @@ gint gncVendorGetTerms (GncVendor *vendor);
gboolean gncVendorGetTaxIncluded (GncVendor *vendor); gboolean gncVendorGetTaxIncluded (GncVendor *vendor);
gboolean gncVendorGetActive (GncVendor *vendor); gboolean gncVendorGetActive (GncVendor *vendor);
GList * gncVendorGetJoblist (GncVendor *vendor, gboolean show_all);
GncVendor * gncVendorLookup (GNCBook *book, const GUID *guid); GncVendor * gncVendorLookup (GNCBook *book, const GUID *guid);
gboolean gncVendorIsDirty (GncVendor *vendor); gboolean gncVendorIsDirty (GncVendor *vendor);

View File

@@ -63,7 +63,7 @@ test_job (void)
test_string_fcn (book, "Id", gncJobSetID, gncJobGetID); test_string_fcn (book, "Id", gncJobSetID, gncJobGetID);
test_string_fcn (book, "Name", gncJobSetName, gncJobGetName); test_string_fcn (book, "Name", gncJobSetName, gncJobGetName);
test_string_fcn (book, "Desc", gncJobSetDesc, gncJobGetDesc); test_string_fcn (book, "Reference", gncJobSetReference, gncJobGetReference);
test_bool_fcn (book, "Active", gncJobSetActive, gncJobGetActive); test_bool_fcn (book, "Active", gncJobSetActive, gncJobGetActive);

View File

@@ -60,7 +60,8 @@ update_job_select_picker (struct select_job_window *w)
show_all); show_all);
break; break;
case GNC_OWNER_VENDOR: case GNC_OWNER_VENDOR:
/* XXX */ objs = gncVendorGetJoblist (gncOwnerGetVendor (&(w->owner)),
show_all);
break; break;
default: default:
} }

View File

@@ -67,8 +67,8 @@ static void gnc_ui_to_job (JobWindow *jw, GncJob *job)
0, -1)); 0, -1));
gncJobSetName (job, gtk_editable_get_chars (GTK_EDITABLE (jw->name_entry), gncJobSetName (job, gtk_editable_get_chars (GTK_EDITABLE (jw->name_entry),
0, -1)); 0, -1));
gncJobSetDesc (job, gtk_editable_get_chars (GTK_EDITABLE (jw->desc_entry), gncJobSetReference (job, gtk_editable_get_chars
0, -1)); (GTK_EDITABLE (jw->desc_entry), 0, -1));
gncJobSetActive (job, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON gncJobSetActive (job, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
(jw->active_check))); (jw->active_check)));
{ {
@@ -314,7 +314,7 @@ gnc_job_new_window (GtkWidget *parent, GNCBook *bookp, GncOwner *owner,
gtk_entry_set_text (GTK_ENTRY (jw->id_entry), gncJobGetID (job)); gtk_entry_set_text (GTK_ENTRY (jw->id_entry), gncJobGetID (job));
gtk_entry_set_editable (GTK_ENTRY (jw->id_entry), FALSE); gtk_entry_set_editable (GTK_ENTRY (jw->id_entry), FALSE);
gtk_entry_set_text (GTK_ENTRY (jw->name_entry), gncJobGetName (job)); gtk_entry_set_text (GTK_ENTRY (jw->name_entry), gncJobGetName (job));
gtk_entry_set_text (GTK_ENTRY (jw->desc_entry), gncJobGetDesc (job)); gtk_entry_set_text (GTK_ENTRY (jw->desc_entry), gncJobGetReference (job));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (jw->active_check), gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (jw->active_check),
gncJobGetActive (job)); gncJobGetActive (job));

View File

@@ -270,7 +270,7 @@ gnc_order_owner_changed_cb (GtkWidget *widget, gpointer data)
switch (gncOwnerGetType (&(ow->owner))) { switch (gncOwnerGetType (&(ow->owner))) {
case GNC_OWNER_JOB: case GNC_OWNER_JOB:
{ {
char const *msg = gncJobGetDesc (gncOwnerGetJob (&(ow->owner))); char const *msg = gncJobGetReference (gncOwnerGetJob (&(ow->owner)));
gtk_entry_set_text (GTK_ENTRY (ow->ref_entry), msg ? msg : ""); gtk_entry_set_text (GTK_ENTRY (ow->ref_entry), msg ? msg : "");
break; break;
} }