mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
* business-prefs: add the bill_reg_width preference to save the value
* implement "Default Project" in the Bill register to enter a default Bill-to customer/job. It's only visible on Bills, not Invoices. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@7116 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
0ebf4e00d1
commit
1f559cc1ae
@ -38,6 +38,11 @@
|
|||||||
* modify the Entry Ledger query to pull in Billable Entries from
|
* modify the Entry Ledger query to pull in Billable Entries from
|
||||||
Posted Bills that belong to an Invoice's Owner.
|
Posted Bills that belong to an Invoice's Owner.
|
||||||
|
|
||||||
|
* business-prefs: add the bill_reg_width preference to save the value
|
||||||
|
* implement "Default Project" in the Bill register to enter a
|
||||||
|
default Bill-to customer/job. It's only visible on Bills, not
|
||||||
|
Invoices.
|
||||||
|
|
||||||
2002-07-09 Derek Atkins <derek@ihftp.com>
|
2002-07-09 Derek Atkins <derek@ihftp.com>
|
||||||
|
|
||||||
* "global-replace for-each-in-order for-each" because the former
|
* "global-replace for-each-in-order for-each" because the former
|
||||||
|
@ -164,7 +164,7 @@ entry_dom_tree_create (GncEntry *entry)
|
|||||||
xmlAddChild(ret, int_to_dom_tree(entry_billable_string,
|
xmlAddChild(ret, int_to_dom_tree(entry_billable_string,
|
||||||
gncEntryGetBillable (entry)));
|
gncEntryGetBillable (entry)));
|
||||||
owner = gncEntryGetBillTo (entry);
|
owner = gncEntryGetBillTo (entry);
|
||||||
if (owner && owner->type != GNC_OWNER_NONE)
|
if (owner && owner->owner.undefined != NULL)
|
||||||
xmlAddChild (ret, gnc_owner_to_dom_tree (entry_billto_string, owner));
|
xmlAddChild (ret, gnc_owner_to_dom_tree (entry_billto_string, owner));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ invoice_dom_tree_create (GncInvoice *invoice)
|
|||||||
gncInvoiceGetCommonCommodity (invoice)));
|
gncInvoiceGetCommonCommodity (invoice)));
|
||||||
|
|
||||||
billto = gncInvoiceGetBillTo (invoice);
|
billto = gncInvoiceGetBillTo (invoice);
|
||||||
if (billto && billto->type != GNC_OWNER_NONE)
|
if (billto && billto->owner.undefined != NULL)
|
||||||
xmlAddChild (ret, gnc_owner_to_dom_tree (invoice_billto_string, billto));
|
xmlAddChild (ret, gnc_owner_to_dom_tree (invoice_billto_string, billto));
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -147,7 +147,7 @@ GncEntry *gncEntryCreate (GNCBook *book)
|
|||||||
entry->taxable = TRUE;
|
entry->taxable = TRUE;
|
||||||
entry->dirty = FALSE;
|
entry->dirty = FALSE;
|
||||||
entry->values_dirty = TRUE;
|
entry->values_dirty = TRUE;
|
||||||
entry->billto.type = GNC_OWNER_NONE;
|
entry->billto.type = GNC_OWNER_CUSTOMER;
|
||||||
|
|
||||||
xaccGUIDNew (&entry->guid, book);
|
xaccGUIDNew (&entry->guid, book);
|
||||||
addObj (entry);
|
addObj (entry);
|
||||||
|
@ -98,7 +98,7 @@ GncInvoice *gncInvoiceCreate (GNCBook *book)
|
|||||||
invoice->notes = CACHE_INSERT ("");
|
invoice->notes = CACHE_INSERT ("");
|
||||||
invoice->billing_id = CACHE_INSERT ("");
|
invoice->billing_id = CACHE_INSERT ("");
|
||||||
|
|
||||||
invoice->billto.type = GNC_OWNER_NONE;
|
invoice->billto.type = GNC_OWNER_CUSTOMER;
|
||||||
invoice->active = TRUE;
|
invoice->active = TRUE;
|
||||||
|
|
||||||
xaccGUIDNew (&invoice->guid, book);
|
xaccGUIDNew (&invoice->guid, book);
|
||||||
|
@ -23,6 +23,10 @@
|
|||||||
(gnc:make-internal-option
|
(gnc:make-internal-option
|
||||||
"__gui" "invoice_reg_width" 0))
|
"__gui" "invoice_reg_width" 0))
|
||||||
|
|
||||||
|
(gnc:register-configuration-option
|
||||||
|
(gnc:make-internal-option
|
||||||
|
"__gui" "bill_reg_width" 0))
|
||||||
|
|
||||||
(gnc:register-configuration-option
|
(gnc:register-configuration-option
|
||||||
(gnc:make-number-range-option
|
(gnc:make-number-range-option
|
||||||
gnc:*business-label* (N_ "Number of Rows")
|
gnc:*business-label* (N_ "Number of Rows")
|
||||||
|
@ -112,6 +112,13 @@ struct _invoice_window {
|
|||||||
GtkWidget * billing_id_entry;
|
GtkWidget * billing_id_entry;
|
||||||
GtkWidget * terms_menu;
|
GtkWidget * terms_menu;
|
||||||
|
|
||||||
|
/* Project Widgets (used for Bills only) */
|
||||||
|
GtkWidget * proj_frame;
|
||||||
|
GtkWidget * proj_cust_box;
|
||||||
|
GtkWidget * proj_cust_choice;
|
||||||
|
GtkWidget * proj_job_box;
|
||||||
|
GtkWidget * proj_job_choice;
|
||||||
|
|
||||||
gint width;
|
gint width;
|
||||||
|
|
||||||
GncBillTerm * terms;
|
GncBillTerm * terms;
|
||||||
@ -128,6 +135,8 @@ struct _invoice_window {
|
|||||||
GncOwner owner;
|
GncOwner owner;
|
||||||
GncOwner job;
|
GncOwner job;
|
||||||
|
|
||||||
|
GncOwner proj_cust;
|
||||||
|
GncOwner proj_job;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Forward definitions for CB functions */
|
/* Forward definitions for CB functions */
|
||||||
@ -164,7 +173,8 @@ void gnc_invoice_window_statusbar_cb (GtkWidget *widget, gpointer data);
|
|||||||
|
|
||||||
#define INV_WIDTH_PREFIX "invoice_reg"
|
#define INV_WIDTH_PREFIX "invoice_reg"
|
||||||
#define BILL_WIDTH_PREFIX "bill_reg"
|
#define BILL_WIDTH_PREFIX "bill_reg"
|
||||||
static int last_width = 0;
|
static int inv_last_width = 0;
|
||||||
|
static int bill_last_width = 0;
|
||||||
|
|
||||||
static void gnc_invoice_update_window (InvoiceWindow *iw);
|
static void gnc_invoice_update_window (InvoiceWindow *iw);
|
||||||
static InvoiceWindow * gnc_ui_invoice_modify (GncInvoice *invoice);
|
static InvoiceWindow * gnc_ui_invoice_modify (GncInvoice *invoice);
|
||||||
@ -214,6 +224,12 @@ static void gnc_ui_to_invoice (InvoiceWindow *iw, GncInvoice *invoice)
|
|||||||
gncInvoiceSetOwner (invoice, &(iw->job));
|
gncInvoiceSetOwner (invoice, &(iw->job));
|
||||||
else
|
else
|
||||||
gncInvoiceSetOwner (invoice, &(iw->owner));
|
gncInvoiceSetOwner (invoice, &(iw->owner));
|
||||||
|
|
||||||
|
/* Only set the BillTo if we've actually got one */
|
||||||
|
if (gncOwnerGetJob (&iw->proj_job))
|
||||||
|
gncInvoiceSetBillTo (invoice, &iw->proj_job);
|
||||||
|
else
|
||||||
|
gncInvoiceSetBillTo (invoice, &iw->proj_cust);
|
||||||
}
|
}
|
||||||
|
|
||||||
gncInvoiceCommitEdit (invoice);
|
gncInvoiceCommitEdit (invoice);
|
||||||
@ -806,13 +822,29 @@ gnc_invoice_get_width_prefix (InvoiceWindow *iw)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int *
|
||||||
|
gnc_invoice_get_width_integer (InvoiceWindow *iw)
|
||||||
|
{
|
||||||
|
switch (gncOwnerGetType (&iw->owner)) {
|
||||||
|
case GNC_OWNER_CUSTOMER:
|
||||||
|
return &inv_last_width;
|
||||||
|
case GNC_OWNER_VENDOR:
|
||||||
|
return &bill_last_width;
|
||||||
|
default:
|
||||||
|
g_warning ("invalid owner");
|
||||||
|
return &inv_last_width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gnc_invoice_save_size (InvoiceWindow *iw)
|
gnc_invoice_save_size (InvoiceWindow *iw)
|
||||||
{
|
{
|
||||||
gdk_window_get_geometry (iw->dialog->window, NULL, NULL, &last_width,
|
int *last_width = gnc_invoice_get_width_integer (iw);
|
||||||
NULL, NULL);
|
|
||||||
|
|
||||||
gnc_save_window_size (gnc_invoice_get_width_prefix (iw), last_width, 0);
|
gdk_window_get_geometry (iw->dialog->window, NULL, NULL,
|
||||||
|
last_width, NULL, NULL);
|
||||||
|
|
||||||
|
gnc_save_window_size (gnc_invoice_get_width_prefix (iw), *last_width, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -891,9 +923,8 @@ gnc_invoice_select_job_cb (gpointer jobp, gpointer user_data)
|
|||||||
static void
|
static void
|
||||||
gnc_invoice_update_job_choice (InvoiceWindow *iw)
|
gnc_invoice_update_job_choice (InvoiceWindow *iw)
|
||||||
{
|
{
|
||||||
if (iw->job_choice) {
|
if (iw->job_choice)
|
||||||
gtk_container_remove (GTK_CONTAINER (iw->job_box), iw->job_choice);
|
gtk_container_remove (GTK_CONTAINER (iw->job_box), iw->job_choice);
|
||||||
}
|
|
||||||
|
|
||||||
/* If we don't have a real owner, then we obviously can't have a job */
|
/* If we don't have a real owner, then we obviously can't have a job */
|
||||||
if (iw->owner.owner.undefined == NULL) {
|
if (iw->owner.owner.undefined == NULL) {
|
||||||
@ -929,6 +960,79 @@ gnc_invoice_update_job_choice (InvoiceWindow *iw)
|
|||||||
gtk_widget_show_all (iw->job_choice);
|
gtk_widget_show_all (iw->job_choice);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GNCSearchWindow *
|
||||||
|
gnc_invoice_select_proj_job_cb (gpointer jobp, gpointer user_data)
|
||||||
|
{
|
||||||
|
GncJob *j = jobp;
|
||||||
|
InvoiceWindow *iw = user_data;
|
||||||
|
GncOwner owner, *ownerp;
|
||||||
|
|
||||||
|
if (!iw) return NULL;
|
||||||
|
|
||||||
|
if (j) {
|
||||||
|
ownerp = gncJobGetOwner (j);
|
||||||
|
gncOwnerCopy (ownerp, &owner);
|
||||||
|
} else
|
||||||
|
gncOwnerCopy (&(iw->proj_cust), &owner);
|
||||||
|
|
||||||
|
return gnc_job_search (j, &owner, iw->book);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
gnc_invoice_proj_job_changed_cb (GtkWidget *widget, gpointer data)
|
||||||
|
{
|
||||||
|
InvoiceWindow *iw = data;
|
||||||
|
|
||||||
|
if (!iw)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (iw->dialog_type == VIEW_INVOICE)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
gnc_owner_get_owner (iw->proj_job_choice, &(iw->proj_job));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gnc_invoice_update_proj_job (InvoiceWindow *iw)
|
||||||
|
{
|
||||||
|
if (iw->proj_job_choice)
|
||||||
|
gtk_container_remove (GTK_CONTAINER (iw->proj_job_box),
|
||||||
|
iw->proj_job_choice);
|
||||||
|
|
||||||
|
switch (iw->dialog_type) {
|
||||||
|
case VIEW_INVOICE:
|
||||||
|
case EDIT_INVOICE:
|
||||||
|
iw->proj_job_choice =
|
||||||
|
gnc_owner_edit_create (NULL, iw->proj_job_box, iw->book, &(iw->job));
|
||||||
|
break;
|
||||||
|
case NEW_INVOICE:
|
||||||
|
case MOD_INVOICE:
|
||||||
|
if (iw->proj_cust.owner.undefined == NULL) {
|
||||||
|
iw->proj_job_choice = NULL;
|
||||||
|
} else {
|
||||||
|
iw->proj_job_choice =
|
||||||
|
gnc_general_search_new (GNC_JOB_MODULE_NAME, _("Select..."),
|
||||||
|
gnc_invoice_select_proj_job_cb, iw);
|
||||||
|
|
||||||
|
gnc_general_search_set_selected (GNC_GENERAL_SEARCH(iw->proj_job_choice),
|
||||||
|
gncOwnerGetJob (&iw->proj_job));
|
||||||
|
gnc_general_search_allow_clear (GNC_GENERAL_SEARCH (iw->proj_job_choice),
|
||||||
|
TRUE);
|
||||||
|
gtk_box_pack_start (GTK_BOX (iw->proj_job_box), iw->proj_job_choice,
|
||||||
|
TRUE, TRUE, 0);
|
||||||
|
|
||||||
|
gtk_signal_connect (GTK_OBJECT (iw->proj_job_choice), "changed",
|
||||||
|
GTK_SIGNAL_FUNC (gnc_invoice_proj_job_changed_cb),
|
||||||
|
iw);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (iw->proj_job_choice)
|
||||||
|
gtk_widget_show_all (iw->proj_job_choice);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
gnc_invoice_owner_changed_cb (GtkWidget *widget, gpointer data)
|
gnc_invoice_owner_changed_cb (GtkWidget *widget, gpointer data)
|
||||||
{
|
{
|
||||||
@ -979,6 +1083,35 @@ gnc_invoice_owner_changed_cb (GtkWidget *widget, gpointer data)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
gnc_invoice_proj_cust_changed_cb (GtkWidget *widget, gpointer data)
|
||||||
|
{
|
||||||
|
InvoiceWindow *iw = data;
|
||||||
|
GncOwner owner;
|
||||||
|
|
||||||
|
if (!iw)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (iw->dialog_type == VIEW_INVOICE)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
gncOwnerCopy (&(iw->proj_cust), &owner);
|
||||||
|
gnc_owner_get_owner (iw->proj_cust_choice, &owner);
|
||||||
|
|
||||||
|
/* If this owner really changed, then reset ourselves */
|
||||||
|
if (!gncOwnerEqual (&owner, &(iw->proj_cust))) {
|
||||||
|
gncOwnerCopy (&owner, &(iw->proj_cust));
|
||||||
|
gncOwnerInitJob (&(iw->proj_job), NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (iw->dialog_type == EDIT_INVOICE)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
gnc_invoice_update_proj_job (iw);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gnc_invoice_dialog_close_handler (gpointer user_data)
|
gnc_invoice_dialog_close_handler (gpointer user_data)
|
||||||
{
|
{
|
||||||
@ -1061,6 +1194,11 @@ gnc_invoice_window_refresh_handler (GHashTable *changes, gpointer user_data)
|
|||||||
gncOwnerCopy (gncOwnerGetEndOwner (owner), &(iw->owner));
|
gncOwnerCopy (gncOwnerGetEndOwner (owner), &(iw->owner));
|
||||||
gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner));
|
gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner));
|
||||||
|
|
||||||
|
/* Copy the billto information into our window */
|
||||||
|
owner = gncInvoiceGetBillTo (invoice);
|
||||||
|
gncOwnerCopy (gncOwnerGetEndOwner (owner), &iw->proj_cust);
|
||||||
|
gncOwnerInitJob (&iw->proj_job, gncOwnerGetJob (owner));
|
||||||
|
|
||||||
/* Ok, NOW let's refresh ourselves */
|
/* Ok, NOW let's refresh ourselves */
|
||||||
gnc_invoice_update_window (iw);
|
gnc_invoice_update_window (iw);
|
||||||
}
|
}
|
||||||
@ -1107,9 +1245,12 @@ gnc_invoice_update_window (InvoiceWindow *iw)
|
|||||||
|
|
||||||
invoice = iw_get_invoice (iw);
|
invoice = iw_get_invoice (iw);
|
||||||
|
|
||||||
if (iw->owner_choice) {
|
if (iw->owner_choice)
|
||||||
gtk_container_remove (GTK_CONTAINER (iw->owner_box), iw->owner_choice);
|
gtk_container_remove (GTK_CONTAINER (iw->owner_box), iw->owner_choice);
|
||||||
}
|
|
||||||
|
if (iw->proj_cust_choice)
|
||||||
|
gtk_container_remove (GTK_CONTAINER (iw->proj_cust_box),
|
||||||
|
iw->proj_cust_choice);
|
||||||
|
|
||||||
switch (iw->dialog_type) {
|
switch (iw->dialog_type) {
|
||||||
case VIEW_INVOICE:
|
case VIEW_INVOICE:
|
||||||
@ -1117,38 +1258,56 @@ gnc_invoice_update_window (InvoiceWindow *iw)
|
|||||||
iw->owner_choice =
|
iw->owner_choice =
|
||||||
gnc_owner_edit_create (iw->owner_label, iw->owner_box, iw->book,
|
gnc_owner_edit_create (iw->owner_label, iw->owner_box, iw->book,
|
||||||
&(iw->owner));
|
&(iw->owner));
|
||||||
|
iw->proj_cust_choice =
|
||||||
|
gnc_owner_edit_create (NULL, iw->proj_cust_box, iw->book,
|
||||||
|
&(iw->proj_cust));
|
||||||
break;
|
break;
|
||||||
case NEW_INVOICE:
|
case NEW_INVOICE:
|
||||||
case MOD_INVOICE:
|
case MOD_INVOICE:
|
||||||
iw->owner_choice =
|
iw->owner_choice =
|
||||||
gnc_owner_select_create (iw->owner_label, iw->owner_box, iw->book,
|
gnc_owner_select_create (iw->owner_label, iw->owner_box, iw->book,
|
||||||
&(iw->owner));
|
&(iw->owner));
|
||||||
|
iw->proj_cust_choice =
|
||||||
|
gnc_owner_select_create (NULL, iw->proj_cust_box, iw->book,
|
||||||
|
&(iw->proj_cust));
|
||||||
|
|
||||||
gtk_signal_connect (GTK_OBJECT (iw->owner_choice), "changed",
|
gtk_signal_connect (GTK_OBJECT (iw->owner_choice), "changed",
|
||||||
GTK_SIGNAL_FUNC (gnc_invoice_owner_changed_cb),
|
GTK_SIGNAL_FUNC (gnc_invoice_owner_changed_cb),
|
||||||
iw);
|
iw);
|
||||||
|
|
||||||
|
gtk_signal_connect (GTK_OBJECT (iw->proj_cust_choice), "changed",
|
||||||
|
GTK_SIGNAL_FUNC (gnc_invoice_proj_cust_changed_cb),
|
||||||
|
iw);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gnc_invoice_update_job_choice (iw);
|
gnc_invoice_update_job_choice (iw);
|
||||||
|
gnc_invoice_update_proj_job (iw);
|
||||||
|
|
||||||
|
{
|
||||||
|
int * last_width = gnc_invoice_get_width_integer (iw);
|
||||||
|
|
||||||
switch (iw->dialog_type) {
|
switch (iw->dialog_type) {
|
||||||
case VIEW_INVOICE:
|
case VIEW_INVOICE:
|
||||||
case EDIT_INVOICE:
|
case EDIT_INVOICE:
|
||||||
if (last_width == 0)
|
if (*last_width == 0)
|
||||||
gnc_get_window_size (gnc_invoice_get_width_prefix (iw), &last_width,
|
gnc_get_window_size (gnc_invoice_get_width_prefix (iw), last_width,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
gtk_window_set_default_size (GTK_WINDOW (iw->dialog), last_width, 0);
|
gtk_window_set_default_size (GTK_WINDOW (iw->dialog), *last_width, 0);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gtk_widget_show_all (iw->dialog);
|
gtk_widget_show_all (iw->dialog);
|
||||||
|
|
||||||
|
/* Hide the project frame for customer invoices */
|
||||||
|
if (iw->owner.type == GNC_OWNER_CUSTOMER)
|
||||||
|
gtk_widget_hide_all (iw->proj_frame);
|
||||||
|
|
||||||
acct_entry = glade_xml_get_widget (iw->xml, "acct_entry");
|
acct_entry = glade_xml_get_widget (iw->xml, "acct_entry");
|
||||||
|
|
||||||
/* We know that "invoice" (and "owner") exist now */
|
/* We know that "invoice" (and "owner") exist now */
|
||||||
@ -1323,6 +1482,7 @@ gnc_invoice_new_window (GNCBook *bookp, InvoiceDialogType type,
|
|||||||
GncEntryLedger *entry_ledger = NULL;
|
GncEntryLedger *entry_ledger = NULL;
|
||||||
GncOwnerType owner_type;
|
GncOwnerType owner_type;
|
||||||
GncEntryLedgerType ledger_type;
|
GncEntryLedgerType ledger_type;
|
||||||
|
GncOwner *billto;
|
||||||
|
|
||||||
g_assert (type != NEW_INVOICE && type != MOD_INVOICE);
|
g_assert (type != NEW_INVOICE && type != MOD_INVOICE);
|
||||||
|
|
||||||
@ -1357,6 +1517,10 @@ gnc_invoice_new_window (GNCBook *bookp, InvoiceDialogType type,
|
|||||||
gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner));
|
gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner));
|
||||||
owner_type = gncOwnerGetType (&iw->owner);
|
owner_type = gncOwnerGetType (&iw->owner);
|
||||||
|
|
||||||
|
billto = gncInvoiceGetBillTo (invoice);
|
||||||
|
gncOwnerCopy (gncOwnerGetEndOwner (billto), &(iw->proj_cust));
|
||||||
|
gncOwnerInitJob (&iw->proj_job, gncOwnerGetJob (billto));
|
||||||
|
|
||||||
/* Find the dialog */
|
/* Find the dialog */
|
||||||
iw->xml = xml = gnc_glade_xml_new ("invoice.glade", "Invoice Entry Window");
|
iw->xml = xml = gnc_glade_xml_new ("invoice.glade", "Invoice Entry Window");
|
||||||
iw->dialog = glade_xml_get_widget (xml, "Invoice Entry Window");
|
iw->dialog = glade_xml_get_widget (xml, "Invoice Entry Window");
|
||||||
@ -1376,6 +1540,11 @@ gnc_invoice_new_window (GNCBook *bookp, InvoiceDialogType type,
|
|||||||
iw->owner_label = glade_xml_get_widget (xml, "owner_label");
|
iw->owner_label = glade_xml_get_widget (xml, "owner_label");
|
||||||
iw->job_box = glade_xml_get_widget (xml, "job_hbox");
|
iw->job_box = glade_xml_get_widget (xml, "job_hbox");
|
||||||
|
|
||||||
|
/* grab the project widgets */
|
||||||
|
iw->proj_frame = glade_xml_get_widget (xml, "proj_frame");
|
||||||
|
iw->proj_cust_box = glade_xml_get_widget (xml, "proj_cust_hbox");
|
||||||
|
iw->proj_job_box = glade_xml_get_widget (xml, "proj_job_hbox");
|
||||||
|
|
||||||
/* grab the toolbar widgets */
|
/* grab the toolbar widgets */
|
||||||
iw->toolbar_dock = glade_xml_get_widget (xml, "toolbar_dock");
|
iw->toolbar_dock = glade_xml_get_widget (xml, "toolbar_dock");
|
||||||
iw->edit_button = glade_xml_get_widget (xml, "edit_button");
|
iw->edit_button = glade_xml_get_widget (xml, "edit_button");
|
||||||
@ -1521,6 +1690,7 @@ gnc_invoice_window_new_invoice (GNCBook *bookp, GncOwner *owner,
|
|||||||
GladeXML *xml;
|
GladeXML *xml;
|
||||||
GnomeDialog *iwd;
|
GnomeDialog *iwd;
|
||||||
GtkWidget *hbox;
|
GtkWidget *hbox;
|
||||||
|
GncOwner *billto;
|
||||||
|
|
||||||
if (invoice) {
|
if (invoice) {
|
||||||
/*
|
/*
|
||||||
@ -1559,6 +1729,10 @@ gnc_invoice_window_new_invoice (GNCBook *bookp, GncOwner *owner,
|
|||||||
gncOwnerCopy (gncOwnerGetEndOwner(owner), &(iw->owner));
|
gncOwnerCopy (gncOwnerGetEndOwner(owner), &(iw->owner));
|
||||||
gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner));
|
gncOwnerInitJob (&(iw->job), gncOwnerGetJob (owner));
|
||||||
|
|
||||||
|
billto = gncInvoiceGetBillTo (invoice);
|
||||||
|
gncOwnerCopy (gncOwnerGetEndOwner (billto), &(iw->proj_cust));
|
||||||
|
gncOwnerInitJob (&iw->proj_job, gncOwnerGetJob (billto));
|
||||||
|
|
||||||
/* Find the dialog */
|
/* Find the dialog */
|
||||||
iw->xml = xml = gnc_glade_xml_new ("invoice.glade", "New Invoice Dialog");
|
iw->xml = xml = gnc_glade_xml_new ("invoice.glade", "New Invoice Dialog");
|
||||||
iw->dialog = glade_xml_get_widget (xml, "New Invoice Dialog");
|
iw->dialog = glade_xml_get_widget (xml, "New Invoice Dialog");
|
||||||
@ -1575,6 +1749,10 @@ gnc_invoice_window_new_invoice (GNCBook *bookp, GncOwner *owner,
|
|||||||
iw->owner_label = glade_xml_get_widget (xml, "owner_label");
|
iw->owner_label = glade_xml_get_widget (xml, "owner_label");
|
||||||
iw->job_box = glade_xml_get_widget (xml, "job_hbox");
|
iw->job_box = glade_xml_get_widget (xml, "job_hbox");
|
||||||
|
|
||||||
|
/* grab the project widgets */
|
||||||
|
iw->proj_frame = glade_xml_get_widget (xml, "proj_frame");
|
||||||
|
iw->proj_cust_box = glade_xml_get_widget (xml, "proj_cust_hbox");
|
||||||
|
iw->proj_job_box = glade_xml_get_widget (xml, "proj_job_hbox");
|
||||||
|
|
||||||
hbox = glade_xml_get_widget (xml, "date_opened_hbox");
|
hbox = glade_xml_get_widget (xml, "date_opened_hbox");
|
||||||
iw->opened_date = gnc_date_edit_new (time(NULL), FALSE, FALSE);
|
iw->opened_date = gnc_date_edit_new (time(NULL), FALSE, FALSE);
|
||||||
|
@ -382,6 +382,119 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkFrame</class>
|
||||||
|
<name>proj_frame</name>
|
||||||
|
<label>Default Project</label>
|
||||||
|
<label_xalign>0</label_xalign>
|
||||||
|
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>True</expand>
|
||||||
|
<fill>True</fill>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkHBox</class>
|
||||||
|
<name>hbox5</name>
|
||||||
|
<border_width>3</border_width>
|
||||||
|
<homogeneous>False</homogeneous>
|
||||||
|
<spacing>0</spacing>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkVBox</class>
|
||||||
|
<name>vbox15</name>
|
||||||
|
<border_width>3</border_width>
|
||||||
|
<homogeneous>True</homogeneous>
|
||||||
|
<spacing>0</spacing>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>False</expand>
|
||||||
|
<fill>True</fill>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<name>label22</name>
|
||||||
|
<label>Customer</label>
|
||||||
|
<justify>GTK_JUSTIFY_RIGHT</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>1</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>False</expand>
|
||||||
|
<fill>False</fill>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<name>label23</name>
|
||||||
|
<label>Job</label>
|
||||||
|
<justify>GTK_JUSTIFY_RIGHT</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>1</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>False</expand>
|
||||||
|
<fill>False</fill>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkVBox</class>
|
||||||
|
<name>vbox16</name>
|
||||||
|
<border_width>3</border_width>
|
||||||
|
<homogeneous>True</homogeneous>
|
||||||
|
<spacing>0</spacing>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>True</expand>
|
||||||
|
<fill>True</fill>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkHBox</class>
|
||||||
|
<name>proj_cust_hbox</name>
|
||||||
|
<homogeneous>False</homogeneous>
|
||||||
|
<spacing>0</spacing>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>True</expand>
|
||||||
|
<fill>True</fill>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>Placeholder</class>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkHBox</class>
|
||||||
|
<name>proj_job_hbox</name>
|
||||||
|
<homogeneous>False</homogeneous>
|
||||||
|
<spacing>0</spacing>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>True</expand>
|
||||||
|
<fill>True</fill>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>Placeholder</class>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
|
||||||
<widget>
|
<widget>
|
||||||
<class>GtkFrame</class>
|
<class>GtkFrame</class>
|
||||||
<name>frame6</name>
|
<name>frame6</name>
|
||||||
@ -1743,6 +1856,93 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkFrame</class>
|
||||||
|
<name>proj_frame</name>
|
||||||
|
<label>Default Project</label>
|
||||||
|
<label_xalign>0</label_xalign>
|
||||||
|
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||||
|
<child>
|
||||||
|
<padding>3</padding>
|
||||||
|
<expand>True</expand>
|
||||||
|
<fill>True</fill>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkHBox</class>
|
||||||
|
<name>hbox8</name>
|
||||||
|
<border_width>3</border_width>
|
||||||
|
<homogeneous>False</homogeneous>
|
||||||
|
<spacing>0</spacing>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<name>label24</name>
|
||||||
|
<label>Customer: </label>
|
||||||
|
<justify>GTK_JUSTIFY_RIGHT</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>1</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>False</expand>
|
||||||
|
<fill>True</fill>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkHBox</class>
|
||||||
|
<name>proj_cust_hbox</name>
|
||||||
|
<homogeneous>False</homogeneous>
|
||||||
|
<spacing>0</spacing>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>True</expand>
|
||||||
|
<fill>True</fill>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>Placeholder</class>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<name>label25</name>
|
||||||
|
<label>Job: </label>
|
||||||
|
<justify>GTK_JUSTIFY_RIGHT</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>1</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>False</expand>
|
||||||
|
<fill>True</fill>
|
||||||
|
</child>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkHBox</class>
|
||||||
|
<name>proj_job_hbox</name>
|
||||||
|
<homogeneous>False</homogeneous>
|
||||||
|
<spacing>0</spacing>
|
||||||
|
<child>
|
||||||
|
<padding>0</padding>
|
||||||
|
<expand>True</expand>
|
||||||
|
<fill>True</fill>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>Placeholder</class>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
|
||||||
<widget>
|
<widget>
|
||||||
<class>GtkFrame</class>
|
<class>GtkFrame</class>
|
||||||
<name>ledger_frame</name>
|
<name>ledger_frame</name>
|
||||||
|
Loading…
Reference in New Issue
Block a user