27 #include <glib/gi18n.h>
34 #include "checkboxcell.h"
36 #include "gncEntryLedgerP.h"
37 #include "gncEntryLedgerModel.h"
44 static const char * get_iacct_label (
VirtualLocation virt_loc, gpointer data)
46 return _(
"Income Account");
49 static const char * get_bacct_label (
VirtualLocation virt_loc, gpointer data)
51 return _(
"Expense Account");
54 static const char * get_actn_label (
VirtualLocation virt_loc, gpointer data)
59 static const char * get_date_label (
VirtualLocation virt_loc, gpointer data)
64 static const char * get_desc_label (
VirtualLocation virt_loc, gpointer data)
66 return _(
"Description");
69 static const char * get_disc_label (
VirtualLocation virt_loc, gpointer data)
74 static const char * get_distype_label (
VirtualLocation virt_loc, gpointer data)
76 return _(
"Discount Type");
79 static const char * get_dishow_label (
VirtualLocation virt_loc, gpointer data)
81 return _(
"Discount How");
84 static const char * get_pric_label (
VirtualLocation virt_loc, gpointer data)
86 return _(
"Unit Price");
89 static const char * get_qty_label (
VirtualLocation virt_loc, gpointer data)
94 static const char * get_taxtable_label (
VirtualLocation virt_loc, gpointer data)
96 return _(
"Tax Table");
99 static const char * get_taxable_label (
VirtualLocation virt_loc, gpointer data)
101 return _(
"Taxable?");
104 static const char * get_taxincluded_label (
VirtualLocation virt_loc, gpointer data)
106 return _(
"Tax Included?");
109 static const char * get_inv_label (
VirtualLocation virt_loc, gpointer data)
111 return _(
"Invoiced?");
114 static const char * get_value_label (
VirtualLocation virt_loc, gpointer data)
116 return _(
"Subtotal");
119 static const char * get_taxval_label (
VirtualLocation virt_loc, gpointer data)
124 static const char * get_billable_label (
VirtualLocation virt_loc, gpointer data)
126 return _(
"Billable?");
129 static const char * get_payment_label (
VirtualLocation virt_loc, gpointer data)
138 gboolean *conditionally_changed,
141 static char *name = NULL;
146 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
155 gboolean *conditionally_changed,
158 static char *name = NULL;
163 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
172 gboolean *conditionally_changed,
178 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
179 return gncEntryGetAction (entry);
184 gboolean *conditionally_changed,
191 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
199 gboolean *conditionally_changed,
205 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
206 return gncEntryGetDescription (entry);
211 gboolean *conditionally_changed,
218 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
219 discount = gncEntryGetInvDiscount (entry);
223 return xaccPrintAmount (discount, gnc_default_print_info (FALSE));
228 gboolean *conditionally_changed,
235 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
236 type = gncEntryGetInvDiscountType (entry);
240 return gnc_entry_ledger_type_string_getter (type +
'0');
253 gboolean *conditionally_changed,
260 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
261 type = gncEntryGetInvDiscountHow (entry);
265 return gnc_entry_ledger_how_string_getter (type +
'0');
278 gboolean *conditionally_changed,
285 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
286 if (ledger->is_cust_doc)
287 price = gncEntryGetInvPrice (entry);
289 price = gncEntryGetBillPrice (entry);
294 return xaccPrintAmount (price, gnc_default_print_info (FALSE));
299 gboolean *conditionally_changed,
306 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
312 return xaccPrintAmount (qty, gnc_default_print_info (FALSE));
317 gboolean *conditionally_changed,
324 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
325 if (ledger->is_cust_doc)
326 taxable = gncEntryGetInvTaxable (entry);
328 taxable = gncEntryGetBillTaxable (entry);
330 return gnc_checkbox_cell_get_string (taxable);
336 gboolean *conditionally_changed,
342 is_current = virt_cell_loc_equal(ledger->table->current_cursor_loc.vcell_loc,
345 return gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL);
349 get_taxable_entry (virt_loc, translate, conditionally_changed,
351 if (valstr && *valstr ==
'X')
359 gboolean *conditionally_changed,
368 if (!conditionally_changed)
370 taxable = gnc_entry_ledger_get_taxable_value (virt_loc, translate,
371 conditionally_changed,
377 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
378 if (ledger->is_cust_doc)
379 table = gncEntryGetInvTaxTable (entry);
381 table = gncEntryGetBillTaxTable (entry);
383 return gncTaxTableGetName (table);
388 gboolean *conditionally_changed,
393 gboolean taxable, taxincluded;
396 if (!conditionally_changed)
398 taxable = gnc_entry_ledger_get_taxable_value (virt_loc, translate,
399 conditionally_changed,
405 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
406 if (ledger->is_cust_doc)
407 taxincluded = gncEntryGetInvTaxIncluded (entry);
409 taxincluded = gncEntryGetBillTaxIncluded (entry);
411 return gnc_checkbox_cell_get_string (taxincluded);
416 gboolean *conditionally_changed,
422 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
424 return gnc_checkbox_cell_get_string (gncEntryGetInvoice (entry) != NULL);
435 gboolean *conditionally_changed,
442 if (virt_cell_loc_equal (ledger->table->current_cursor_loc.vcell_loc,
448 gnc_entry_ledger_compute_value (ledger, &value, NULL);
452 GncEntry *entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
454 if (entry == gnc_entry_ledger_get_blank_entry (ledger))
460 value = gncEntryGetDocValue (entry, TRUE, ledger->is_cust_doc, ledger->is_credit_note);
463 return xaccPrintAmount (value, gnc_default_print_info (FALSE));
468 gboolean *conditionally_changed,
475 if (virt_cell_loc_equal (ledger->table->current_cursor_loc.vcell_loc,
481 gnc_entry_ledger_compute_value (ledger, NULL, &value);
485 GncEntry *entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
487 if (entry == gnc_entry_ledger_get_blank_entry (ledger))
493 value = gncEntryGetDocTaxValue (entry, TRUE, ledger->is_cust_doc, ledger->is_credit_note);
496 return xaccPrintAmount (value, gnc_default_print_info (FALSE));
501 gboolean *conditionally_changed,
507 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
508 return gnc_checkbox_cell_get_string (gncEntryGetBillable (entry));
513 gboolean *conditionally_changed,
518 GncEntryPaymentType type;
520 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
525 type = gncEntryGetBillPayment (entry);
529 case GNC_PAYMENT_CASH:
531 case GNC_PAYMENT_CARD:
534 g_warning (
"Invalid payment type: %d", type);
541 static char * get_acct_help (
VirtualLocation virt_loc, gpointer user_data)
546 help = gnc_table_get_entry (ledger->table, virt_loc);
547 if (!help || *help ==
'\0')
548 help = _(
"Enter the income/expense account for the Entry, "
549 "or choose one from the list");
551 return g_strdup (help);
554 static char * get_actn_help (
VirtualLocation virt_loc, gpointer user_data)
559 help = gnc_table_get_entry (ledger->table, virt_loc);
560 if (!help || *help ==
'\0')
561 help = _(
"Enter the type of Entry");
563 return g_strdup (help);
566 static char * get_date_help (
VirtualLocation virt_loc, gpointer user_data)
575 cell = gnc_table_get_cell (ledger->table, virt_loc);
579 if (!cell->value || *cell->value ==
'\0')
582 gnc_date_cell_get_date ((
DateCell *) cell, &ts);
585 qof_strftime (
string,
sizeof(
string), _(
"%A %d %B %Y"), &tm);
587 return g_strdup (
string);
590 static char * get_desc_help (
VirtualLocation virt_loc, gpointer user_data)
595 help = gnc_table_get_entry (ledger->table, virt_loc);
596 if (!help || *help ==
'\0')
597 help = _(
"Enter the Entry Description");
599 return g_strdup (help);
602 static char * get_disc_help (
VirtualLocation virt_loc, gpointer user_data)
608 type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL);
613 help = _(
"Enter the Discount Amount");
616 help = _(
"Enter the Discount Percent");
619 help = _(
"Enter the Discount ... unknown type");
623 return g_strdup (help);
626 static char * get_distype_help (
VirtualLocation virt_loc, gpointer user_data)
632 type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL);
637 help = _(
"Discount Type: Monetary Value");
640 help = _(
"Discount Type: Percent");
643 help = _(
"Select the Discount Type");
646 return g_strdup (help);
649 static char * get_dishow_help (
VirtualLocation virt_loc, gpointer user_data)
655 type = gnc_entry_ledger_get_type (ledger, ENTRY_DISHOW_CELL);
659 case GNC_DISC_PRETAX:
660 help = _(
"Tax computed after discount is applied");
662 case GNC_DISC_SAMETIME:
663 help = _(
"Discount and tax both applied on pretax value");
665 case GNC_DISC_POSTTAX:
666 help = _(
"Discount computed after tax is applied");
669 help = _(
"Select how to compute the Discount and Taxes");
672 return g_strdup (help);
675 static char * get_pric_help (
VirtualLocation virt_loc, gpointer user_data)
680 help = gnc_table_get_entry (ledger->table, virt_loc);
681 if (!help || *help ==
'\0')
682 help = _(
"Enter the unit-Price for this Entry");
684 return g_strdup (help);
687 static char * get_qty_help (
VirtualLocation virt_loc, gpointer user_data)
692 help = gnc_table_get_entry (ledger->table, virt_loc);
693 if (!help || *help ==
'\0')
694 help = _(
"Enter the Quantity of units for this Entry");
696 return g_strdup (help);
699 static char * get_taxtable_help (
VirtualLocation virt_loc, gpointer user_data)
704 help = gnc_table_get_entry (ledger->table, virt_loc);
705 if (!help || *help ==
'\0')
706 help = _(
"Enter the Tax Table to apply to this entry");
708 return g_strdup (help);
711 static char * get_taxable_help (
VirtualLocation virt_loc, gpointer user_data)
715 help = _(
"Is this entry taxable?");
717 return g_strdup (help);
720 static char * get_taxincluded_help (
VirtualLocation virt_loc, gpointer user_data)
724 help = _(
"Is the tax already included in the price of this entry?");
726 return g_strdup (help);
729 static char * get_inv_help (
VirtualLocation virt_loc, gpointer user_data)
734 switch (ledger->type)
736 case GNCENTRY_ORDER_ENTRY:
737 case GNCENTRY_ORDER_VIEWER:
738 case GNCENTRY_BILL_ENTRY:
739 case GNCENTRY_BILL_VIEWER:
740 case GNCENTRY_EXPVOUCHER_ENTRY:
741 case GNCENTRY_EXPVOUCHER_VIEWER:
742 help = _(
"Is this entry invoiced?");
744 case GNCENTRY_VEND_CREDIT_NOTE_ENTRY:
745 case GNCENTRY_VEND_CREDIT_NOTE_VIEWER:
746 case GNCENTRY_EMPL_CREDIT_NOTE_ENTRY:
747 case GNCENTRY_EMPL_CREDIT_NOTE_VIEWER:
748 help = _(
"Is this entry credited?");
750 case GNCENTRY_INVOICE_ENTRY:
751 case GNCENTRY_INVOICE_VIEWER:
752 help = _(
"Include this entry on this invoice?");
754 case GNCENTRY_CUST_CREDIT_NOTE_ENTRY:
755 case GNCENTRY_CUST_CREDIT_NOTE_VIEWER:
756 help = _(
"Include this entry on this credit note?");
759 help = _(
"Unknown EntryLedger Type");
762 return g_strdup (help);
765 static char * get_value_help (
VirtualLocation virt_loc, gpointer user_data)
770 help = gnc_table_get_entry (ledger->table, virt_loc);
771 if (!help || *help ==
'\0')
772 help = _(
"The subtotal value of this entry ");
774 return g_strdup (help);
777 static char * get_taxval_help (
VirtualLocation virt_loc, gpointer user_data)
782 help = gnc_table_get_entry (ledger->table, virt_loc);
783 if (!help || *help ==
'\0')
784 help = _(
"The total tax of this entry ");
786 return g_strdup (help);
789 static char * get_billable_help (
VirtualLocation virt_loc, gpointer user_data)
793 help = _(
"Is this entry billable to a customer or job?");
795 return g_strdup (help);
798 static char * get_payment_help (
VirtualLocation virt_loc, gpointer user_data)
802 help = _(
"How did you pay for this item?");
804 return g_strdup (help);
813 switch (ledger->type)
815 case GNCENTRY_ORDER_ENTRY:
816 case GNCENTRY_BILL_ENTRY:
817 case GNCENTRY_EXPVOUCHER_ENTRY:
820 gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
826 if (gncEntryGetInvoice (entry) != NULL)
827 return XACC_CELL_ALLOW_SHADOW;
831 return XACC_CELL_ALLOW_ALL;
838 return (get_standard_io_flags (virt_loc, user_data) |
839 XACC_CELL_ALLOW_EXACT_ONLY);
847 switch (ledger->type)
849 case GNCENTRY_INVOICE_ENTRY:
850 case GNCENTRY_CUST_CREDIT_NOTE_ENTRY:
855 GncEntry * entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
857 if ((gncEntryGetOrder (entry) != NULL) || (gncEntryGetBill (entry) != NULL))
858 return XACC_CELL_ALLOW_ALL | XACC_CELL_ALLOW_EXACT_ONLY;
863 return XACC_CELL_ALLOW_SHADOW;
870 return XACC_CELL_ALLOW_SHADOW;
879 taxable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL);
883 return get_standard_io_flags (virt_loc, user_data);
886 return XACC_CELL_ALLOW_SHADOW;
892 CellIOFlags flags = get_tax_io_flags (virt_loc, user_data);
893 if (flags == XACC_CELL_ALLOW_SHADOW)
895 return flags | XACC_CELL_ALLOW_EXACT_ONLY;
898 static CellIOFlags get_qty_io_flags (
VirtualLocation virt_loc, gpointer user_data)
902 CellIOFlags flags = get_standard_io_flags (virt_loc, user_data);
905 if (!ledger->is_cust_doc || flags == XACC_CELL_ALLOW_SHADOW)
911 entry = gnc_entry_ledger_get_entry (ledger, virt_loc.vcell_loc);
912 if (gncEntryGetBillable (entry))
913 return XACC_CELL_ALLOW_SHADOW;
923 const guint32 *color_table,
926 const char *cursor_name;
929 guint32 colorbase = 0;
932 colorbase = COLOR_UNKNOWN_FG;
935 return color_table[colorbase + COLOR_UNKNOWN_BG];
937 if (gnc_table_virtual_location_in_header (ledger->table, virt_loc))
938 return color_table[colorbase + COLOR_HEADER_BG];
940 vcell = gnc_table_get_virtual_cell (ledger->table, virt_loc.vcell_loc);
941 if (!vcell || !vcell->cellblock)
942 return color_table[colorbase + COLOR_UNKNOWN_BG];
944 if ((virt_loc.phys_col_offset < vcell->cellblock->start_col) ||
945 (virt_loc.phys_col_offset > vcell->cellblock->stop_col))
946 return color_table[colorbase + COLOR_UNKNOWN_BG];
948 is_current = virt_cell_loc_equal (ledger->table->current_cursor_loc.vcell_loc,
952 return vcell->start_primary_color ?
953 color_table[colorbase + COLOR_PRIMARY_BG_ACTIVE] :
954 color_table[colorbase + COLOR_SECONDARY_BG_ACTIVE];
956 return vcell->start_primary_color ?
957 color_table[colorbase + COLOR_PRIMARY_BG] : color_table[colorbase + COLOR_SECONDARY_BG];
966 return gnc_entry_ledger_get_color_internal (virt_loc, ledger, reg_colors_default, TRUE);
974 return gnc_entry_ledger_get_color_internal (virt_loc, ledger, reg_colors_gtkrc, TRUE);
979 gboolean *hatching, gpointer user_data)
986 return gnc_entry_ledger_get_color_internal (virt_loc, ledger, reg_colors_default, FALSE);
991 gboolean *hatching, gpointer user_data)
998 return gnc_entry_ledger_get_color_internal (virt_loc, ledger, reg_colors_gtkrc, FALSE);
1003 static void gnc_entry_ledger_save_cells (gpointer save_data,
1009 g_return_if_fail (entry != NULL);
1013 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1014 ENTRY_IACCT_CELL, TRUE))
1018 acc = gnc_entry_ledger_get_account (ledger, ENTRY_IACCT_CELL);
1021 gncEntrySetInvAccount (entry, acc);
1024 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1025 ENTRY_BACCT_CELL, TRUE))
1029 acc = gnc_entry_ledger_get_account (ledger, ENTRY_BACCT_CELL);
1032 gncEntrySetBillAccount (entry, acc);
1035 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1036 ENTRY_ACTN_CELL, TRUE))
1040 value = gnc_table_layout_get_cell_value (ledger->table->layout,
1042 gncEntrySetAction (entry, value);
1045 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1046 ENTRY_DATE_CELL, TRUE))
1051 cell = gnc_table_layout_get_cell (ledger->table->layout, ENTRY_DATE_CELL);
1054 gnc_date_cell_commit ((
DateCell *) cell);
1056 gnc_date_cell_get_date_gdate ((
DateCell *) cell, &date);
1060 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1061 ENTRY_DESC_CELL, TRUE))
1065 value = gnc_table_layout_get_cell_value (ledger->table->layout,
1067 gncEntrySetDescription (entry, value);
1070 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1071 ENTRY_DISC_CELL, TRUE))
1075 if (gnc_entry_ledger_get_numeric (ledger, ENTRY_DISC_CELL, &amount))
1076 gncEntrySetInvDiscount (entry, amount);
1079 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1080 ENTRY_DISTYPE_CELL, TRUE))
1084 type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL);
1087 gncEntrySetInvDiscountType (entry, type);
1090 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1091 ENTRY_DISHOW_CELL, TRUE))
1095 type = gnc_entry_ledger_get_type (ledger, ENTRY_DISHOW_CELL);
1098 gncEntrySetInvDiscountHow (entry, type);
1101 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1102 ENTRY_QTY_CELL, TRUE))
1106 if (gnc_entry_ledger_get_numeric (ledger, ENTRY_QTY_CELL, &amount))
1112 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1113 ENTRY_BILLABLE_CELL, TRUE))
1117 billable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_BILLABLE_CELL);
1118 gncEntrySetBillable (entry, billable);
1121 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1122 ENTRY_PAYMENT_CELL, TRUE))
1126 value = gnc_table_layout_get_cell_value (ledger->table->layout,
1127 ENTRY_PAYMENT_CELL);
1128 if (!g_strcmp0 (value, _(
"Cash")))
1129 gncEntrySetBillPayment (entry, GNC_PAYMENT_CASH);
1130 else if (!g_strcmp0 (value, _(
"Charge")))
1131 gncEntrySetBillPayment (entry, GNC_PAYMENT_CARD);
1133 g_warning (
"Invalid Payment cell: %s", value ? value :
"(null)");
1136 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1137 ENTRY_PRIC_CELL, TRUE))
1141 if (gnc_entry_ledger_get_numeric (ledger, ENTRY_PRIC_CELL, &amount))
1143 if (ledger->is_cust_doc)
1144 gncEntrySetInvPrice (entry, amount);
1146 gncEntrySetBillPrice (entry, amount);
1150 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1151 ENTRY_TAXABLE_CELL, TRUE))
1155 taxable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL);
1156 if (ledger->is_cust_doc)
1157 gncEntrySetInvTaxable (entry, taxable);
1159 gncEntrySetBillTaxable (entry, taxable);
1163 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1164 ENTRY_TAXTABLE_CELL, TRUE))
1168 table = gnc_entry_ledger_get_taxtable (ledger, ENTRY_TAXTABLE_CELL);
1171 if (ledger->is_cust_doc)
1172 gncEntrySetInvTaxTable (entry, table);
1174 gncEntrySetBillTaxTable (entry, table);
1178 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1179 ENTRY_TAXINCLUDED_CELL, TRUE))
1181 gboolean taxincluded;
1183 taxincluded = gnc_entry_ledger_get_checkmark (ledger,
1184 ENTRY_TAXINCLUDED_CELL);
1185 if (ledger->is_cust_doc)
1186 gncEntrySetInvTaxIncluded (entry, taxincluded);
1188 gncEntrySetBillTaxIncluded (entry, taxincluded);
1191 if (ledger->type == GNCENTRY_INVOICE_ENTRY ||
1192 ledger->type == GNCENTRY_CUST_CREDIT_NOTE_ENTRY)
1196 inv_value = gnc_entry_ledger_get_checkmark (ledger, ENTRY_INV_CELL);
1201 if (gncEntryGetInvoice (entry) == NULL)
1202 gncInvoiceAddEntry (ledger->invoice, entry);
1208 if ((gncEntryGetOrder (entry) != NULL) ||
1209 (gncEntryGetBill (entry) != NULL))
1210 gncInvoiceRemoveEntry (ledger->invoice, entry);
1217 static void gnc_entry_ledger_model_new_handlers (
TableModel *model,
1218 GncEntryLedgerType type)
1223 gpointer entry_handler;
1224 gpointer label_handler;
1225 gpointer help_handler;
1226 gpointer io_flags_handler;
1229 { ENTRY_IACCT_CELL, get_iacct_entry, get_iacct_label, get_acct_help, get_standard_io_flags },
1230 { ENTRY_BACCT_CELL, get_bacct_entry, get_bacct_label, get_acct_help, get_standard_io_flags },
1231 { ENTRY_ACTN_CELL, get_actn_entry, get_actn_label, get_actn_help, get_standard_io_flags },
1232 { ENTRY_DATE_CELL, get_date_entry, get_date_label, get_date_help, get_standard_io_flags },
1233 { ENTRY_DESC_CELL, get_desc_entry, get_desc_label, get_desc_help, get_standard_io_flags },
1234 { ENTRY_DISC_CELL, get_disc_entry, get_disc_label, get_disc_help, get_standard_io_flags },
1235 { ENTRY_DISTYPE_CELL, get_distype_entry, get_distype_label, get_distype_help, get_typecell_io_flags },
1236 { ENTRY_DISHOW_CELL, get_dishow_entry, get_dishow_label, get_dishow_help, get_typecell_io_flags },
1237 { ENTRY_PRIC_CELL, get_pric_entry, get_pric_label, get_pric_help, get_standard_io_flags },
1238 { ENTRY_QTY_CELL, get_qty_entry, get_qty_label, get_qty_help, get_qty_io_flags },
1239 { ENTRY_TAXABLE_CELL, get_taxable_entry, get_taxable_label, get_taxable_help, get_typecell_io_flags },
1240 { ENTRY_TAXTABLE_CELL, get_taxtable_entry, get_taxtable_label, get_taxtable_help, get_tax_io_flags },
1241 { ENTRY_TAXINCLUDED_CELL, get_taxincluded_entry, get_taxincluded_label, get_taxincluded_help, get_taxincluded_io_flags },
1242 { ENTRY_INV_CELL, get_inv_entry, get_inv_label, get_inv_help, get_inv_io_flags },
1243 { ENTRY_VALUE_CELL, get_value_entry, get_value_label, get_value_help, get_value_io_flags },
1244 { ENTRY_TAXVAL_CELL, get_taxval_entry, get_taxval_label, get_taxval_help, get_value_io_flags },
1245 { ENTRY_BILLABLE_CELL, get_billable_entry, get_billable_label, get_billable_help, get_typecell_io_flags },
1246 { ENTRY_PAYMENT_CELL, get_payment_entry, get_payment_label, get_payment_help, get_standard_io_flags },
1250 gnc_table_model_set_default_fg_color_handler
1251 (model, gnc_entry_ledger_get_fg_color);
1253 gnc_table_model_set_fg_color_handler
1254 (model, gnc_entry_ledger_get_gtkrc_fg_color,
"gtkrc");
1256 gnc_table_model_set_default_bg_color_handler
1257 (model, gnc_entry_ledger_get_bg_color);
1259 gnc_table_model_set_bg_color_handler
1260 (model, gnc_entry_ledger_get_gtkrc_bg_color,
"gtkrc");
1263 for (i = 0; i < (
sizeof(models) /
sizeof(*models)); i++)
1265 if (models[i].entry_handler)
1266 gnc_table_model_set_entry_handler (model, models[i].entry_handler,
1268 if (models[i].label_handler)
1269 gnc_table_model_set_label_handler (model, models[i].label_handler,
1271 if (models[i].help_handler)
1272 gnc_table_model_set_help_handler (model, models[i].help_handler,
1274 if (models[i].io_flags_handler)
1275 gnc_table_model_set_io_flags_handler (model, models[i].io_flags_handler,
1285 gnc_table_model_set_post_save_handler (model, gnc_entry_ledger_save_cells);
1289 case GNCENTRY_ORDER_VIEWER:
1290 case GNCENTRY_INVOICE_VIEWER:
1291 case GNCENTRY_BILL_VIEWER:
1292 case GNCENTRY_EXPVOUCHER_VIEWER:
1293 case GNCENTRY_CUST_CREDIT_NOTE_VIEWER:
1294 case GNCENTRY_VEND_CREDIT_NOTE_VIEWER:
1295 case GNCENTRY_EMPL_CREDIT_NOTE_VIEWER:
1297 gnc_table_model_set_read_only (model, TRUE);
1306 TableModel * gnc_entry_ledger_model_new (GncEntryLedgerType type)
1310 model = gnc_table_model_new ();
1311 gnc_entry_ledger_model_new_handlers (model, type);
const char * gnc_print_date(Timespec ts)
utility functions for the GnuCash UI
Use a 64-bit unsigned int timespec.
gboolean gnc_numeric_zero_p(gnc_numeric a)
Timespec gncEntryGetDate(const GncEntry *entry)
void gncEntrySetDocQuantity(GncEntry *entry, gnc_numeric quantity, gboolean is_cn)
struct tm * gnc_localtime_r(const time64 *secs, struct tm *time)
fill out a time struct from a 64-bit time value adjusted for the current time zone.
gchar * gnc_get_account_name_for_register(const Account *account)
Account handling public routines.
void gncEntrySetDateGDate(GncEntry *entry, const GDate *date)
gsize qof_strftime(gchar *buf, gsize max, const gchar *format, const struct tm *tm)
gnc_numeric gncEntryGetDocQuantity(const GncEntry *entry, gboolean is_cn)