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 (); }
/* Function to get the UI Value for a particular option */ static SCM vendor_get_value (GNCOption *option, GtkWidget *widget) { GncOwner owner; gnc_owner_get_owner (widget, &owner); return SWIG_NewPointerObj(owner.owner.undefined, SWIG_TypeQuery("_p__gncVendor"), 0); }
/* Function to get the UI Value for a particular option */ static SCM owner_get_value (GNCOption *option, GtkWidget *widget) { static GncOwner owner; /* XXX: might cause trouble? */ GncOwnerType type; type = get_owner_type_from_option (option); owner.type = type; gnc_owner_get_owner (widget, &owner); return SWIG_NewPointerObj(&owner, SWIG_TypeQuery("_p__gncOwner"), 0); }
static gboolean gnc_job_verify_ok (JobWindow *jw) { const char *res; gchar *string; /* Check for valid name */ res = gtk_entry_get_text (GTK_ENTRY (jw->name_entry)); if (g_strcmp0 (res, "") == 0) { const char *message = _("The Job must be given a name."); gnc_error_dialog(jw->dialog, "%s", message); return FALSE; } /* Check for owner */ gnc_owner_get_owner (jw->cust_edit, &(jw->owner)); res = gncOwnerGetName (&(jw->owner)); if (res == NULL || g_strcmp0 (res, "") == 0) { const char *message = _("You must choose an owner for this job."); gnc_error_dialog(jw->dialog, "%s", message); return FALSE; } /* Set a valid id if one was not created */ res = gtk_entry_get_text (GTK_ENTRY (jw->id_entry)); if (g_strcmp0 (res, "") == 0) { string = gncJobNextID(jw->book); gtk_entry_set_text (GTK_ENTRY (jw->id_entry), string); g_free(string); } /* Now save it off */ { GncJob *job = jw_get_job (jw); if (job) { gnc_ui_to_job (jw, job); } } /* Ok, it's been saved... Change to an editor.. */ jw->dialog_type = EDIT_JOB; return TRUE; }
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; }
static gboolean gnc_payment_window_check_payment (PaymentWindow *pw) { const char *conflict_msg = NULL; Account *post, *acc; gnc_numeric amount_deb, amount_cred; gboolean enable_xfer_acct = TRUE; GtkTreeSelection *selection; if (!pw) return FALSE; /* Verify the "post" account */ if (!pw->post_acct) { conflict_msg = _("You must enter a valid account name for posting."); goto update_cleanup; } /* Verify the user has selected an owner */ gnc_owner_get_owner (pw->owner_choice, &(pw->owner)); if (!gncOwnerIsValid(&pw->owner)) { conflict_msg = _("You must select a company for payment processing."); goto update_cleanup; } /* Test the total amount */ amount_deb = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (pw->amount_debit_edit)); amount_cred = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (pw->amount_credit_edit)); pw->amount_tot = gnc_numeric_sub (amount_cred, amount_deb, gnc_commodity_get_fraction (xaccAccountGetCommodity (pw->post_acct)), GNC_HOW_RND_ROUND_HALF_UP); if (gnc_numeric_check (pw->amount_tot) || gnc_numeric_zero_p (pw->amount_tot)) { enable_xfer_acct = FALSE; } else { /* Verify the user has selected a transfer account */ pw->xfer_acct = gnc_tree_view_account_get_selected_account (GNC_TREE_VIEW_ACCOUNT(pw->acct_tree)); if (!pw->xfer_acct) { conflict_msg = _("You must select a transfer account from the account tree."); } } update_cleanup: gtk_widget_set_sensitive (pw->acct_tree, enable_xfer_acct); /* Check if there are issues preventing a successful payment */ gtk_widget_set_tooltip_text (pw->payment_warning, conflict_msg); if (conflict_msg) { gtk_widget_show (pw->payment_warning); gtk_widget_set_sensitive (pw->ok_button, FALSE); return FALSE; } else { gtk_widget_hide (pw->payment_warning); gtk_widget_set_sensitive (pw->ok_button, TRUE); } return TRUE; }