28 #include <glib/gi18n.h> 45 static const char * get_iacct_label (VirtualLocation virt_loc, gpointer data)
47 return _(
"Income Account");
50 static const char * get_bacct_label (VirtualLocation virt_loc, gpointer data)
52 return _(
"Expense Account");
55 static const char * get_actn_label (VirtualLocation virt_loc, gpointer data)
60 static const char * get_date_label (VirtualLocation virt_loc, gpointer data)
65 static const char * get_desc_label (VirtualLocation virt_loc, gpointer data)
67 return _(
"Description");
70 static const char * get_disc_label (VirtualLocation virt_loc, gpointer data)
75 static const char * get_distype_label (VirtualLocation virt_loc, gpointer data)
77 return _(
"Discount Type");
80 static const char * get_dishow_label (VirtualLocation virt_loc, gpointer data)
82 return _(
"Discount How");
85 static const char * get_pric_label (VirtualLocation virt_loc, gpointer data)
87 return _(
"Unit Price");
90 static const char * get_qty_label (VirtualLocation virt_loc, gpointer data)
95 static const char * get_taxtable_label (VirtualLocation virt_loc, gpointer data)
97 return _(
"Tax Table");
100 static const char * get_taxable_label (VirtualLocation virt_loc, gpointer data)
102 return _(
"Taxable?");
105 static const char * get_taxincluded_label (VirtualLocation virt_loc, gpointer data)
107 return _(
"Tax Included?");
110 static const char * get_inv_label (VirtualLocation virt_loc, gpointer data)
112 return _(
"Invoiced?");
115 static const char * get_value_label (VirtualLocation virt_loc, gpointer data)
117 return _(
"Subtotal");
120 static const char * get_taxval_label (VirtualLocation virt_loc, gpointer data)
125 static const char * get_billable_label (VirtualLocation virt_loc, gpointer data)
127 return _(
"Billable?");
130 static const char * get_payment_label (VirtualLocation virt_loc, gpointer data)
137 static const char * get_iacct_entry (VirtualLocation virt_loc,
139 gboolean *conditionally_changed,
142 static char *name = NULL;
144 GncEntryLedger *ledger = user_data;
154 static const char * get_bacct_entry (VirtualLocation virt_loc,
156 gboolean *conditionally_changed,
159 static char *name = NULL;
161 GncEntryLedger *ledger = user_data;
171 static const char * get_actn_entry (VirtualLocation virt_loc,
173 gboolean *conditionally_changed,
176 GncEntryLedger *ledger = user_data;
180 return gncEntryGetAction (entry);
183 static const char * get_date_entry (VirtualLocation virt_loc,
185 gboolean *conditionally_changed,
188 GncEntryLedger *ledger = user_data;
192 memset (dateBuff, 0,
sizeof (dateBuff));
197 static const char * get_desc_entry (VirtualLocation virt_loc,
199 gboolean *conditionally_changed,
202 GncEntryLedger *ledger = user_data;
206 return gncEntryGetDescription (entry);
209 static const char * get_disc_entry (VirtualLocation virt_loc,
211 gboolean *conditionally_changed,
214 GncEntryLedger *ledger = user_data;
216 gnc_numeric discount;
219 discount = gncEntryGetInvDiscount (entry);
226 static const char * get_distype_entry (VirtualLocation virt_loc,
228 gboolean *conditionally_changed,
231 GncEntryLedger *ledger = user_data;
236 type = gncEntryGetInvDiscountType (entry);
240 return gnc_entry_ledger_type_string_getter (type +
'0');
251 static const char * get_dishow_entry (VirtualLocation virt_loc,
253 gboolean *conditionally_changed,
256 GncEntryLedger *ledger = user_data;
261 type = gncEntryGetInvDiscountHow (entry);
265 return gnc_entry_ledger_how_string_getter (type +
'0');
276 static const char * get_pric_entry (VirtualLocation virt_loc,
278 gboolean *conditionally_changed,
281 GncEntryLedger *ledger = user_data;
288 if (ledger->is_cust_doc)
289 price = gncEntryGetInvPrice (entry);
291 price = gncEntryGetBillPrice (entry);
296 curr = gncInvoiceGetCurrency (ledger->invoice);
297 print_info = gnc_default_price_print_info (curr);
302 static const char * get_qty_entry (VirtualLocation virt_loc,
304 gboolean *conditionally_changed,
307 GncEntryLedger *ledger = user_data;
320 static const char * get_taxable_entry (VirtualLocation virt_loc,
322 gboolean *conditionally_changed,
325 GncEntryLedger *ledger = user_data;
330 if (ledger->is_cust_doc)
331 taxable = gncEntryGetInvTaxable (entry);
333 taxable = gncEntryGetBillTaxable (entry);
335 return gnc_checkbox_cell_get_string (taxable);
339 gnc_entry_ledger_get_taxable_value (VirtualLocation virt_loc,
341 gboolean *conditionally_changed,
344 GncEntryLedger *ledger = user_data;
347 is_current = virt_cell_loc_equal(ledger->table->current_cursor_loc.vcell_loc,
350 return gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL);
354 get_taxable_entry (virt_loc, translate, conditionally_changed,
356 if (valstr && *valstr !=
' ')
362 static const char * get_taxtable_entry (VirtualLocation virt_loc,
364 gboolean *conditionally_changed,
367 GncEntryLedger *ledger = user_data;
373 if (!conditionally_changed)
375 taxable = gnc_entry_ledger_get_taxable_value (virt_loc, translate,
376 conditionally_changed,
383 if (ledger->is_cust_doc)
384 table = gncEntryGetInvTaxTable (entry);
386 table = gncEntryGetBillTaxTable (entry);
388 return gncTaxTableGetName (
table);
391 static const char * get_taxincluded_entry (VirtualLocation virt_loc,
393 gboolean *conditionally_changed,
396 GncEntryLedger *ledger = user_data;
398 gboolean taxable, taxincluded;
401 if (!conditionally_changed)
403 taxable = gnc_entry_ledger_get_taxable_value (virt_loc, translate,
404 conditionally_changed,
411 if (ledger->is_cust_doc)
412 taxincluded = gncEntryGetInvTaxIncluded (entry);
414 taxincluded = gncEntryGetBillTaxIncluded (entry);
416 return gnc_checkbox_cell_get_string (taxincluded);
419 static const char * get_inv_entry (VirtualLocation virt_loc,
421 gboolean *conditionally_changed,
424 GncEntryLedger *ledger = user_data;
429 return gnc_checkbox_cell_get_string (gncEntryGetInvoice (entry) != NULL);
438 static const char * get_value_entry (VirtualLocation virt_loc,
440 gboolean *conditionally_changed,
443 GncEntryLedger *ledger = user_data;
447 if (virt_cell_loc_equal (ledger->table->current_cursor_loc.vcell_loc,
453 gnc_entry_ledger_compute_value (ledger, &value, NULL);
465 value = gncEntryGetDocValue (entry, TRUE, ledger->is_cust_doc, ledger->is_credit_note);
471 static const char * get_taxval_entry (VirtualLocation virt_loc,
473 gboolean *conditionally_changed,
476 GncEntryLedger *ledger = user_data;
480 if (virt_cell_loc_equal (ledger->table->current_cursor_loc.vcell_loc,
486 gnc_entry_ledger_compute_value (ledger, NULL, &value);
498 value = gncEntryGetDocTaxValue (entry, TRUE, ledger->is_cust_doc, ledger->is_credit_note);
504 static const char * get_billable_entry (VirtualLocation virt_loc,
506 gboolean *conditionally_changed,
509 GncEntryLedger *ledger = user_data;
513 return gnc_checkbox_cell_get_string (gncEntryGetBillable (entry));
516 static const char * get_payment_entry (VirtualLocation virt_loc,
518 gboolean *conditionally_changed,
521 GncEntryLedger *ledger = user_data;
523 GncEntryPaymentType type;
530 type = gncEntryGetBillPayment (entry);
534 case GNC_PAYMENT_CASH:
536 case GNC_PAYMENT_CARD:
539 g_warning (
"Invalid payment type: %d", type);
546 static char * get_acct_help (VirtualLocation virt_loc, gpointer user_data)
549 GncEntryLedger *ledger = user_data;
551 help = gnc_table_get_entry (ledger->table, virt_loc);
552 if (!help || *help ==
'\0')
553 help = _(
"Enter the income/expense account for the Entry, " 554 "or choose one from the list");
556 return g_strdup (help);
559 static char * get_actn_help (VirtualLocation virt_loc, gpointer user_data)
561 GncEntryLedger *ledger = user_data;
564 help = gnc_table_get_entry (ledger->table, virt_loc);
565 if (!help || *help ==
'\0')
566 help = _(
"Enter the type of Entry");
568 return g_strdup (help);
571 static char * get_date_help (VirtualLocation virt_loc, gpointer user_data)
573 GncEntryLedger *ledger = user_data;
577 cell = gnc_table_get_cell (ledger->table, virt_loc);
578 if (!cell || !cell->value || *cell->value ==
'\0')
585 static char * get_desc_help (VirtualLocation virt_loc, gpointer user_data)
587 GncEntryLedger *ledger = user_data;
590 help = gnc_table_get_entry (ledger->table, virt_loc);
591 if (!help || *help ==
'\0')
592 help = _(
"Enter the Entry Description");
594 return g_strdup (help);
597 static char * get_disc_help (VirtualLocation virt_loc, gpointer user_data)
599 GncEntryLedger *ledger = user_data;
603 type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL);
608 help = _(
"Enter the Discount Amount");
611 help = _(
"Enter the Discount Percent");
614 help = _(
"Enter the Discount … unknown type");
618 return g_strdup (help);
621 static char * get_distype_help (VirtualLocation virt_loc, gpointer user_data)
623 GncEntryLedger *ledger = user_data;
627 type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL);
632 help = _(
"Discount Type: Monetary Value");
635 help = _(
"Discount Type: Percent");
638 help = _(
"Select the Discount Type");
641 return g_strdup (help);
644 static char * get_dishow_help (VirtualLocation virt_loc, gpointer user_data)
646 GncEntryLedger *ledger = user_data;
650 type = gnc_entry_ledger_get_type (ledger, ENTRY_DISHOW_CELL);
654 case GNC_DISC_PRETAX:
655 help = _(
"Tax computed after discount is applied");
657 case GNC_DISC_SAMETIME:
658 help = _(
"Discount and tax both applied on pretax value");
660 case GNC_DISC_POSTTAX:
661 help = _(
"Discount computed after tax is applied");
664 help = _(
"Select how to compute the Discount and Taxes");
667 return g_strdup (help);
670 static char * get_pric_help (VirtualLocation virt_loc, gpointer user_data)
672 GncEntryLedger *ledger = user_data;
675 help = gnc_table_get_entry (ledger->table, virt_loc);
676 if (!help || *help ==
'\0')
677 help = _(
"Enter the unit-Price for this Entry");
679 return g_strdup (help);
682 static char * get_qty_help (VirtualLocation virt_loc, gpointer user_data)
684 GncEntryLedger *ledger = user_data;
687 help = gnc_table_get_entry (ledger->table, virt_loc);
688 if (!help || *help ==
'\0')
689 help = _(
"Enter the Quantity of units for this Entry");
691 return g_strdup (help);
694 static char * get_taxtable_help (VirtualLocation virt_loc, gpointer user_data)
696 GncEntryLedger *ledger = user_data;
699 help = gnc_table_get_entry (ledger->table, virt_loc);
700 if (!help || *help ==
'\0')
701 help = _(
"Enter the Tax Table to apply to this entry");
703 return g_strdup (help);
706 static char * get_taxable_help (VirtualLocation virt_loc, gpointer user_data)
710 help = _(
"Is this entry taxable?");
712 return g_strdup (help);
715 static char * get_taxincluded_help (VirtualLocation virt_loc, gpointer user_data)
719 help = _(
"Is the tax already included in the price of this entry?");
721 return g_strdup (help);
724 static char * get_inv_help (VirtualLocation virt_loc, gpointer user_data)
726 GncEntryLedger *ledger = user_data;
729 switch (ledger->type)
731 case GNCENTRY_ORDER_ENTRY:
732 case GNCENTRY_ORDER_VIEWER:
733 case GNCENTRY_BILL_ENTRY:
734 case GNCENTRY_BILL_VIEWER:
735 case GNCENTRY_EXPVOUCHER_ENTRY:
736 case GNCENTRY_EXPVOUCHER_VIEWER:
737 help = _(
"Is this entry invoiced?");
739 case GNCENTRY_VEND_CREDIT_NOTE_ENTRY:
740 case GNCENTRY_VEND_CREDIT_NOTE_VIEWER:
741 case GNCENTRY_EMPL_CREDIT_NOTE_ENTRY:
742 case GNCENTRY_EMPL_CREDIT_NOTE_VIEWER:
743 help = _(
"Is this entry credited?");
745 case GNCENTRY_INVOICE_ENTRY:
746 case GNCENTRY_INVOICE_VIEWER:
747 help = _(
"Include this entry on this invoice?");
749 case GNCENTRY_CUST_CREDIT_NOTE_ENTRY:
750 case GNCENTRY_CUST_CREDIT_NOTE_VIEWER:
751 help = _(
"Include this entry on this credit note?");
754 help = _(
"Unknown EntryLedger Type");
757 return g_strdup (help);
760 static char * get_value_help (VirtualLocation virt_loc, gpointer user_data)
762 GncEntryLedger *ledger = user_data;
765 help = gnc_table_get_entry (ledger->table, virt_loc);
766 if (!help || *help ==
'\0')
767 help = _(
"The subtotal value of this entry");
769 return g_strdup (help);
772 static char * get_taxval_help (VirtualLocation virt_loc, gpointer user_data)
774 GncEntryLedger *ledger = user_data;
777 help = gnc_table_get_entry (ledger->table, virt_loc);
778 if (!help || *help ==
'\0')
779 help = _(
"The total tax of this entry ");
781 return g_strdup (help);
784 static char * get_billable_help (VirtualLocation virt_loc, gpointer user_data)
788 help = _(
"Is this entry billable to a customer or job?");
790 return g_strdup (help);
793 static char * get_payment_help (VirtualLocation virt_loc, gpointer user_data)
797 help = _(
"How did you pay for this item?");
799 return g_strdup (help);
804 static CellIOFlags get_standard_io_flags (VirtualLocation virt_loc,
807 GncEntryLedger *ledger = user_data;
808 switch (ledger->type)
810 case GNCENTRY_ORDER_ENTRY:
811 case GNCENTRY_BILL_ENTRY:
812 case GNCENTRY_EXPVOUCHER_ENTRY:
821 if (gncEntryGetInvoice (entry) != NULL)
822 return XACC_CELL_ALLOW_SHADOW;
826 return XACC_CELL_ALLOW_ALL;
830 static CellIOFlags get_typecell_io_flags (VirtualLocation virt_loc,
833 return (get_standard_io_flags (virt_loc, user_data) |
834 XACC_CELL_ALLOW_EXACT_ONLY);
837 static CellIOFlags get_inv_io_flags (VirtualLocation virt_loc,
840 GncEntryLedger *ledger = user_data;
842 switch (ledger->type)
844 case GNCENTRY_INVOICE_ENTRY:
845 case GNCENTRY_CUST_CREDIT_NOTE_ENTRY:
852 if ((gncEntryGetOrder (entry) != NULL) || (gncEntryGetBill (entry) != NULL))
853 return XACC_CELL_ALLOW_ALL | XACC_CELL_ALLOW_EXACT_ONLY;
858 return XACC_CELL_ALLOW_SHADOW;
862 static CellIOFlags get_value_io_flags (VirtualLocation virt_loc,
865 return XACC_CELL_ALLOW_SHADOW;
868 static CellIOFlags get_tax_io_flags (VirtualLocation virt_loc,
871 GncEntryLedger *ledger = user_data;
874 taxable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL);
878 return get_standard_io_flags (virt_loc, user_data);
881 return XACC_CELL_ALLOW_SHADOW;
884 static CellIOFlags get_taxincluded_io_flags (VirtualLocation virt_loc,
887 CellIOFlags flags = get_tax_io_flags (virt_loc, user_data);
888 if (flags == XACC_CELL_ALLOW_SHADOW)
890 return flags | XACC_CELL_ALLOW_EXACT_ONLY;
893 static CellIOFlags get_qty_io_flags (VirtualLocation virt_loc, gpointer user_data)
895 GncEntryLedger *ledger = user_data;
897 CellIOFlags flags = get_standard_io_flags (virt_loc, user_data);
900 if (!ledger->is_cust_doc || flags == XACC_CELL_ALLOW_SHADOW)
907 if (gncEntryGetBillable (entry))
908 return XACC_CELL_ALLOW_SHADOW;
916 gnc_entry_ledger_get_cell_color_internal (VirtualLocation virt_loc,
917 GncEntryLedger *ledger)
921 guint32 colorbase = 0;
928 return (colorbase + COLOR_UNDEFINED);
930 if (gnc_table_virtual_location_in_header (ledger->table, virt_loc))
931 return (colorbase + COLOR_HEADER);
934 if (!vcell || !vcell->cellblock)
935 return (colorbase + COLOR_UNDEFINED);
937 if ((virt_loc.phys_col_offset < vcell->cellblock->start_col) ||
938 (virt_loc.phys_col_offset > vcell->cellblock->stop_col))
939 return (colorbase + COLOR_UNDEFINED);
941 is_current = virt_cell_loc_equal (ledger->table->current_cursor_loc.vcell_loc,
946 (colorbase + COLOR_PRIMARY_ACTIVE) :
947 (colorbase + COLOR_SECONDARY_ACTIVE);
950 (colorbase + COLOR_PRIMARY) : (colorbase + COLOR_SECONDARY);
955 gnc_entry_ledger_get_cell_color (VirtualLocation virt_loc,
956 gboolean *hatching, gpointer user_data)
958 GncEntryLedger *ledger = user_data;
963 return gnc_entry_ledger_get_cell_color_internal (virt_loc, ledger);
968 static void gnc_entry_ledger_save_cells (gpointer save_data,
971 GncEntryLedger *ledger = user_data;
972 GncEntry *entry = save_data;
974 g_return_if_fail (entry != NULL);
978 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
979 ENTRY_IACCT_CELL, TRUE))
983 acc = gnc_entry_ledger_get_account (ledger, ENTRY_IACCT_CELL);
986 gncEntrySetInvAccount (entry, acc);
989 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
990 ENTRY_BACCT_CELL, TRUE))
994 acc = gnc_entry_ledger_get_account (ledger, ENTRY_BACCT_CELL);
997 gncEntrySetBillAccount (entry, acc);
1000 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1001 ENTRY_ACTN_CELL, TRUE))
1005 value = gnc_table_layout_get_cell_value (ledger->table->layout,
1007 gncEntrySetAction (entry, value);
1010 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1011 ENTRY_DATE_CELL, TRUE))
1016 cell = gnc_table_layout_get_cell (ledger->table->layout, ENTRY_DATE_CELL);
1027 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1028 ENTRY_DESC_CELL, TRUE))
1032 value = gnc_table_layout_get_cell_value (ledger->table->layout,
1034 gncEntrySetDescription (entry, value);
1037 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1038 ENTRY_DISC_CELL, TRUE))
1042 if (gnc_entry_ledger_get_numeric (ledger, ENTRY_DISC_CELL, &amount))
1043 gncEntrySetInvDiscount (entry, amount);
1046 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1047 ENTRY_DISTYPE_CELL, TRUE))
1051 type = gnc_entry_ledger_get_type (ledger, ENTRY_DISTYPE_CELL);
1054 gncEntrySetInvDiscountType (entry, type);
1057 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1058 ENTRY_DISHOW_CELL, TRUE))
1062 type = gnc_entry_ledger_get_type (ledger, ENTRY_DISHOW_CELL);
1065 gncEntrySetInvDiscountHow (entry, type);
1068 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1069 ENTRY_QTY_CELL, TRUE))
1073 if (gnc_entry_ledger_get_numeric (ledger, ENTRY_QTY_CELL, &amount))
1079 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1080 ENTRY_BILLABLE_CELL, TRUE))
1084 billable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_BILLABLE_CELL);
1085 gncEntrySetBillable (entry, billable);
1088 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1089 ENTRY_PAYMENT_CELL, TRUE))
1093 value = gnc_table_layout_get_cell_value (ledger->table->layout,
1094 ENTRY_PAYMENT_CELL);
1095 if (!g_strcmp0 (value, _(
"Cash")))
1096 gncEntrySetBillPayment (entry, GNC_PAYMENT_CASH);
1097 else if (!g_strcmp0 (value, _(
"Charge")))
1098 gncEntrySetBillPayment (entry, GNC_PAYMENT_CARD);
1100 g_warning (
"Invalid Payment cell: %s", value ? value :
"(null)");
1103 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1104 ENTRY_PRIC_CELL, TRUE))
1108 if (gnc_entry_ledger_get_numeric (ledger, ENTRY_PRIC_CELL, &amount))
1110 if (ledger->is_cust_doc)
1111 gncEntrySetInvPrice (entry, amount);
1113 gncEntrySetBillPrice (entry, amount);
1117 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1118 ENTRY_TAXABLE_CELL, TRUE))
1122 taxable = gnc_entry_ledger_get_checkmark (ledger, ENTRY_TAXABLE_CELL);
1123 if (ledger->is_cust_doc)
1124 gncEntrySetInvTaxable (entry, taxable);
1126 gncEntrySetBillTaxable (entry, taxable);
1130 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1131 ENTRY_TAXTABLE_CELL, TRUE))
1135 table = gnc_entry_ledger_get_taxtable (ledger, ENTRY_TAXTABLE_CELL);
1138 if (ledger->is_cust_doc)
1139 gncEntrySetInvTaxTable (entry,
table);
1141 gncEntrySetBillTaxTable (entry,
table);
1145 if (gnc_table_layout_get_cell_changed (ledger->table->layout,
1146 ENTRY_TAXINCLUDED_CELL, TRUE))
1148 gboolean taxincluded;
1150 taxincluded = gnc_entry_ledger_get_checkmark (ledger,
1151 ENTRY_TAXINCLUDED_CELL);
1152 if (ledger->is_cust_doc)
1153 gncEntrySetInvTaxIncluded (entry, taxincluded);
1155 gncEntrySetBillTaxIncluded (entry, taxincluded);
1158 if (ledger->type == GNCENTRY_INVOICE_ENTRY ||
1159 ledger->type == GNCENTRY_CUST_CREDIT_NOTE_ENTRY)
1163 inv_value = gnc_entry_ledger_get_checkmark (ledger, ENTRY_INV_CELL);
1168 if (gncEntryGetInvoice (entry) == NULL)
1169 gncInvoiceAddEntry (ledger->invoice, entry);
1175 if ((gncEntryGetOrder (entry) != NULL) ||
1176 (gncEntryGetBill (entry) != NULL))
1177 gncInvoiceRemoveEntry (ledger->invoice, entry);
1184 static void gnc_entry_ledger_model_new_handlers (
TableModel *model,
1185 GncEntryLedgerType type)
1190 gpointer entry_handler;
1191 gpointer label_handler;
1192 gpointer help_handler;
1193 gpointer io_flags_handler;
1196 { ENTRY_IACCT_CELL, get_iacct_entry, get_iacct_label, get_acct_help, get_standard_io_flags },
1197 { ENTRY_BACCT_CELL, get_bacct_entry, get_bacct_label, get_acct_help, get_standard_io_flags },
1198 { ENTRY_ACTN_CELL, get_actn_entry, get_actn_label, get_actn_help, get_standard_io_flags },
1199 { ENTRY_DATE_CELL, get_date_entry, get_date_label, get_date_help, get_standard_io_flags },
1200 { ENTRY_DESC_CELL, get_desc_entry, get_desc_label, get_desc_help, get_standard_io_flags },
1201 { ENTRY_DISC_CELL, get_disc_entry, get_disc_label, get_disc_help, get_standard_io_flags },
1202 { ENTRY_DISTYPE_CELL, get_distype_entry, get_distype_label, get_distype_help, get_typecell_io_flags },
1203 { ENTRY_DISHOW_CELL, get_dishow_entry, get_dishow_label, get_dishow_help, get_typecell_io_flags },
1204 { ENTRY_PRIC_CELL, get_pric_entry, get_pric_label, get_pric_help, get_standard_io_flags },
1205 { ENTRY_QTY_CELL, get_qty_entry, get_qty_label, get_qty_help, get_qty_io_flags },
1206 { ENTRY_TAXABLE_CELL, get_taxable_entry, get_taxable_label, get_taxable_help, get_typecell_io_flags },
1207 { ENTRY_TAXTABLE_CELL, get_taxtable_entry, get_taxtable_label, get_taxtable_help, get_tax_io_flags },
1208 { ENTRY_TAXINCLUDED_CELL, get_taxincluded_entry, get_taxincluded_label, get_taxincluded_help, get_taxincluded_io_flags },
1209 { ENTRY_INV_CELL, get_inv_entry, get_inv_label, get_inv_help, get_inv_io_flags },
1210 { ENTRY_VALUE_CELL, get_value_entry, get_value_label, get_value_help, get_value_io_flags },
1211 { ENTRY_TAXVAL_CELL, get_taxval_entry, get_taxval_label, get_taxval_help, get_value_io_flags },
1212 { ENTRY_BILLABLE_CELL, get_billable_entry, get_billable_label, get_billable_help, get_typecell_io_flags },
1213 { ENTRY_PAYMENT_CELL, get_payment_entry, get_payment_label, get_payment_help, get_standard_io_flags },
1218 gnc_table_model_set_default_cell_color_handler (model, gnc_entry_ledger_get_cell_color);
1220 for (i = 0; i < (
sizeof(models) /
sizeof(*models)); i++)
1222 if (models[i].entry_handler)
1223 gnc_table_model_set_entry_handler (model, models[i].entry_handler,
1225 if (models[i].label_handler)
1226 gnc_table_model_set_label_handler (model, models[i].label_handler,
1228 if (models[i].help_handler)
1229 gnc_table_model_set_help_handler (model, models[i].help_handler,
1231 if (models[i].io_flags_handler)
1232 gnc_table_model_set_io_flags_handler (model, models[i].io_flags_handler,
1242 gnc_table_model_set_post_save_handler (model, gnc_entry_ledger_save_cells);
1246 case GNCENTRY_ORDER_VIEWER:
1247 case GNCENTRY_INVOICE_VIEWER:
1248 case GNCENTRY_BILL_VIEWER:
1249 case GNCENTRY_EXPVOUCHER_VIEWER:
1250 case GNCENTRY_CUST_CREDIT_NOTE_VIEWER:
1251 case GNCENTRY_VEND_CREDIT_NOTE_VIEWER:
1252 case GNCENTRY_EMPL_CREDIT_NOTE_VIEWER:
1254 gnc_table_model_set_read_only (model, TRUE);
1267 model = gnc_table_model_new ();
1268 gnc_entry_ledger_model_new_handlers (model, type);
utility functions for the GnuCash UI
holds information about each virtual cell.
TableModel * gnc_entry_ledger_model_new(GncEntryLedgerType type)
Public Interface.
const char * xaccPrintAmount(gnc_numeric val, GNCPrintAmountInfo info)
Make a string representation of a gnc_numeric.
GncEntry * gnc_entry_ledger_get_entry(GncEntryLedger *ledger, VirtualCellLocation vcell_loc)
Returns the GncEntry at the given location, or NULL if the location is not valid. ...
gboolean gnc_numeric_zero_p(gnc_numeric a)
Returns 1 if the given gnc_numeric is 0 (zero), else returns 0.
void gncEntrySetDocQuantity(GncEntry *entry, gnc_numeric quantity, gboolean is_cn)
Set the internal quantity converting from the quantity as visible on the physical document...
time64 gncEntryGetDate(const GncEntry *entry)
DEPRECATED - use gncEntryGetDateGDate() instead! (Because the time-of-day is a misleading extra infor...
char * gnc_get_account_name_for_register(const Account *account)
Get either the full name of the account or the simple name, depending on the configuration parameter ...
Account handling public routines.
VirtualCell * gnc_table_get_virtual_cell(Table *table, VirtualCellLocation vcell_loc)
returns the virtual cell associated with a particular virtual location.
void gnc_date_cell_get_date(DateCell *cell, time64 *time, gboolean warn)
Set a time64 to the value in the DateCell.
void gnc_date_cell_commit(DateCell *cell)
Commits any pending changes to the value of the cell.
char * gnc_print_time64(time64 time, const char *format)
print a time64 as a date string per format
unsigned int start_primary_color
visible in the GUI
#define MAX_DATE_LENGTH
The maximum length of a string created by the date printers.
gint64 time64
Most systems that are currently maintained, including Microsoft Windows, BSD-derived Unixes and Linux...
void gncEntrySetDate(GncEntry *entry, time64 date)
DEPRECATED - use gncEntrySetDateGDate() instead! (Because the time-of-day is a misleading extra infor...
The DateCell object implements a date handling cell.
time64 time64CanonicalDayTime(time64 t)
convert a time64 on a certain day (localtime) to the time64 representing midday on that day...
GncEntry * gnc_entry_ledger_get_blank_entry(GncEntryLedger *ledger)
Exported Functions.
size_t qof_print_date_buff(char *buff, size_t buflen, time64 secs)
Convenience: calls through to qof_print_date_dmy_buff().
gnc_numeric gncEntryGetDocQuantity(const GncEntry *entry, gboolean is_cn)
Get the quantity as on the physical document.
modtime is the internal date of the last modtime See libgnucash/engine/TaxTableBillTermImmutability.txt for an explanation of the following Code that handles refcount, parent, child, invisible and children is identical to that in ::GncBillTerm