static void gnc_ui_to_job (JobWindow *jw, GncJob *job) { gnc_suspend_gui_refresh (); gncJobBeginEdit (job); qof_event_gen(QOF_INSTANCE(job), QOF_EVENT_ADD, NULL); gncJobSetID (job, gtk_editable_get_chars (GTK_EDITABLE (jw->id_entry), 0, -1)); gncJobSetName (job, gtk_editable_get_chars (GTK_EDITABLE (jw->name_entry), 0, -1)); gncJobSetReference (job, gtk_editable_get_chars (GTK_EDITABLE (jw->desc_entry), 0, -1)); gncJobSetActive (job, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (jw->active_check))); { GncOwner * old = gncJobGetOwner (job); gnc_owner_get_owner (jw->cust_edit, &(jw->owner)); if (! gncOwnerEqual (old, &(jw->owner))) gncJobSetOwner (job, &(jw->owner)); } gncJobCommitEdit (job); gnc_resume_gui_refresh (); }
int gncOwnerGCompareFunc (const GncOwner *a, const GncOwner *b) { if (gncOwnerEqual (a, b)) return 0; else return 1; }
void gncEntrySetBillTo (GncEntry *entry, GncOwner *billto) { if (!entry || !billto) return; if (gncOwnerEqual (&entry->billto, billto)) return; gncEntryBeginEdit (entry); gncOwnerCopy (billto, &entry->billto); mark_entry (entry); gncEntryCommitEdit (entry); }
void gncJobSetOwner (GncJob *job, GncOwner *owner) { if (!job) return; if (!owner) return; if (gncOwnerEqual (owner, &(job->owner))) return; switch (gncOwnerGetType (owner)) { case GNC_OWNER_CUSTOMER: case GNC_OWNER_VENDOR: break; default: PERR("Unsupported Owner type: %d", gncOwnerGetType(owner)); return; } gncJobBeginEdit (job); switch (gncOwnerGetType (&(job->owner))) { case GNC_OWNER_CUSTOMER: gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job); break; case GNC_OWNER_VENDOR: gncVendorRemoveJob (gncOwnerGetVendor(&job->owner), job); break; default: break; } gncOwnerCopy (owner, &(job->owner)); switch (gncOwnerGetType (&(job->owner))) { case GNC_OWNER_CUSTOMER: gncCustomerAddJob (gncOwnerGetCustomer(&job->owner), job); break; case GNC_OWNER_VENDOR: gncVendorAddJob (gncOwnerGetVendor(&job->owner), job); break; default: break; } mark_job (job); gncJobCommitEdit (job); }
gboolean gncOwnerLotMatchOwnerFunc (GNCLot *lot, gpointer user_data) { const GncOwner *req_owner = user_data; GncOwner lot_owner; const GncOwner *end_owner; GncInvoice *invoice = gncInvoiceGetInvoiceFromLot (lot); /* Determine the owner associated to the lot */ if (invoice) /* Invoice lots */ end_owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (invoice)); else if (gncOwnerGetOwnerFromLot (lot, &lot_owner)) /* Pre-payment lots */ end_owner = gncOwnerGetEndOwner (&lot_owner); else return FALSE; /* Is this a lot for the requested owner ? */ return gncOwnerEqual (end_owner, req_owner); }
static int gnc_payment_dialog_owner_changed_cb (GtkWidget *widget, gpointer data) { PaymentWindow *pw = data; GncOwner owner; if (!pw) return FALSE; gncOwnerCopy (&(pw->owner), &owner); gnc_owner_get_owner (pw->owner_choice, &owner); /* If this owner really changed, then reset ourselves */ if (!gncOwnerEqual (&owner, &(pw->owner))) { gncOwnerCopy (&owner, &(pw->owner)); gnc_payment_dialog_owner_changed(pw); } /* Reflect if the payment could complete now */ gnc_payment_window_check_payment (pw); return FALSE; }