static GncCustomer* dom_tree_to_customer (xmlNodePtr node, QofBook* book) { struct customer_pdata cust_pdata; gboolean successful; cust_pdata.customer = gncCustomerCreate (book); cust_pdata.book = book; gncCustomerBeginEdit (cust_pdata.customer); successful = dom_tree_generic_parse (node, customer_handlers_v2, &cust_pdata); if (successful) gncCustomerCommitEdit (cust_pdata.customer); else { PERR ("failed to parse customer tree"); gncCustomerDestroy (cust_pdata.customer); cust_pdata.customer = NULL; } return cust_pdata.customer; }
static void gnc_ui_to_customer (CustomerWindow *cw, GncCustomer *cust) { GtkTextBuffer* text_buffer; GtkTextIter start, end; gchar *text; GncAddress *addr, *shipaddr; addr = gncCustomerGetAddr (cust); shipaddr = gncCustomerGetShipAddr (cust); gnc_suspend_gui_refresh (); gncCustomerBeginEdit (cust); if (cw->dialog_type == NEW_CUSTOMER) qof_event_gen(QOF_INSTANCE(cust), QOF_EVENT_ADD, NULL); gncCustomerSetID (cust, gtk_editable_get_chars (GTK_EDITABLE (cw->id_entry), 0, -1)); gncCustomerSetName (cust, gtk_editable_get_chars (GTK_EDITABLE (cw->company_entry), 0, -1)); gncAddressSetName (addr, gtk_editable_get_chars (GTK_EDITABLE (cw->name_entry), 0, -1)); gncAddressSetAddr1 (addr, gtk_editable_get_chars (GTK_EDITABLE (cw->addr1_entry), 0, -1)); gncAddressSetAddr2 (addr, gtk_editable_get_chars (GTK_EDITABLE (cw->addr2_entry), 0, -1)); gncAddressSetAddr3 (addr, gtk_editable_get_chars (GTK_EDITABLE (cw->addr3_entry), 0, -1)); gncAddressSetAddr4 (addr, gtk_editable_get_chars (GTK_EDITABLE (cw->addr4_entry), 0, -1)); gncAddressSetPhone (addr, gtk_editable_get_chars (GTK_EDITABLE (cw->phone_entry), 0, -1)); gncAddressSetFax (addr, gtk_editable_get_chars (GTK_EDITABLE (cw->fax_entry), 0, -1)); gncAddressSetEmail (addr, gtk_editable_get_chars (GTK_EDITABLE (cw->email_entry), 0, -1)); gncAddressSetName (shipaddr, gtk_editable_get_chars (GTK_EDITABLE (cw->shipname_entry), 0, -1)); gncAddressSetAddr1 (shipaddr, gtk_editable_get_chars (GTK_EDITABLE (cw->shipaddr1_entry), 0, -1)); gncAddressSetAddr2 (shipaddr, gtk_editable_get_chars (GTK_EDITABLE (cw->shipaddr2_entry), 0, -1)); gncAddressSetAddr3 (shipaddr, gtk_editable_get_chars (GTK_EDITABLE (cw->shipaddr3_entry), 0, -1)); gncAddressSetAddr4 (shipaddr, gtk_editable_get_chars (GTK_EDITABLE (cw->shipaddr4_entry), 0, -1)); gncAddressSetPhone (shipaddr, gtk_editable_get_chars (GTK_EDITABLE (cw->shipphone_entry), 0, -1)); gncAddressSetFax (shipaddr, gtk_editable_get_chars (GTK_EDITABLE (cw->shipfax_entry), 0, -1)); gncAddressSetEmail (shipaddr, gtk_editable_get_chars (GTK_EDITABLE (cw->shipemail_entry), 0, -1)); gncCustomerSetActive (cust, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cw->active_check))); gncCustomerSetTaxIncluded (cust, cw->taxincluded); text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(cw->notes_text)); gtk_text_buffer_get_bounds (text_buffer, &start, &end); text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE); gncCustomerSetNotes (cust, text); /* Parse and set the currency, terms, discount, and credit amounts */ gncCustomerSetCurrency (cust, gnc_currency_edit_get_currency (GNC_CURRENCY_EDIT (cw->currency_edit))); gncCustomerSetTerms (cust, cw->terms); gncCustomerSetDiscount (cust, gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (cw->discount_amount))); gncCustomerSetCredit (cust, gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT (cw->credit_amount))); gncCustomerSetTaxTableOverride (cust, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (cw->taxtable_check))); gncCustomerSetTaxTable (cust, cw->taxtable); gncCustomerCommitEdit (cust); gnc_resume_gui_refresh (); }
static void test_customer (void) { QofBook *book; GncCustomer *customer; book = qof_book_new (); /* Test creation/destruction */ { do_test (gncCustomerCreate (NULL) == NULL, "customer create NULL"); customer = gncCustomerCreate (book); do_test (customer != NULL, "customer create"); do_test (gncCustomerGetBook (customer) == book, "getbook"); gncCustomerBeginEdit (customer); gncCustomerDestroy (customer); success ("create/destroy"); } /* Test setting/getting routines; does the active flag get set right? */ { GncGUID guid; test_string_fcn (book, "Id", gncCustomerSetID, gncCustomerGetID); test_string_fcn (book, "Name", gncCustomerSetName, gncCustomerGetName); test_string_fcn (book, "Notes", gncCustomerSetNotes, gncCustomerGetNotes); //test_string_fcn (book, "Terms", gncCustomerSetTerms, gncCustomerGetTerms); test_numeric_fcn (book, "Discount", gncCustomerSetDiscount, gncCustomerGetDiscount); test_numeric_fcn (book, "Credit", gncCustomerSetCredit, gncCustomerGetCredit); test_bool_fcn (book, "Active", gncCustomerSetActive, gncCustomerGetActive); do_test (gncCustomerGetAddr (customer) != NULL, "Addr"); do_test (gncCustomerGetShipAddr (customer) != NULL, "ShipAddr"); guid_replace (&guid); customer = gncCustomerCreate (book); count++; gncCustomerSetGUID (customer, &guid); do_test (guid_equal (&guid, gncCustomerGetGUID (customer)), "guid compare"); } { GList *list; list = gncBusinessGetList (book, GNC_ID_CUSTOMER, TRUE); do_test (list != NULL, "getList all"); do_test (g_list_length (list) == count, "correct length: all"); g_list_free (list); list = gncBusinessGetList (book, GNC_ID_CUSTOMER, FALSE); do_test (list != NULL, "getList active"); do_test (g_list_length (list) == 1, "correct length: active"); g_list_free (list); } { const char *str = get_random_string(); const char *res; res = NULL; gncCustomerBeginEdit(customer); gncCustomerSetName (customer, str); gncCustomerCommitEdit(customer); res = qof_object_printable (GNC_ID_CUSTOMER, customer); do_test (res != NULL, "Printable NULL?"); do_test (g_strcmp0 (str, res) == 0, "Printable equals"); } do_test (gncCustomerGetJoblist (customer, TRUE) == NULL, "joblist empty"); /* Test the Entity Table */ { const GncGUID *guid; guid = gncCustomerGetGUID (customer); do_test (gncCustomerLookup (book, guid) == customer, "Entity Table"); } /* Note: JobList is tested from the Job tests */ qof_book_destroy (book); }