mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
- 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:
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user