29 #include <glib/gi18n.h> 30 #include <gdk/gdkkeysyms.h> 38 #include "reconcile-view.h" 39 #include "search-param.h" 40 #include "gnc-component-manager.h" 42 #define GNC_PREF_CHECK_CLEARED "check-cleared" 55 static guint reconcile_view_signals[LAST_SIGNAL] = {0};
58 static void gnc_reconcile_view_finalize (GObject *
object);
59 static gpointer gnc_reconcile_view_is_reconciled (gpointer item,
61 static void gnc_reconcile_view_line_toggled (GNCQueryView *qview,
64 static void gnc_reconcile_view_double_click_entry (GNCQueryView *qview,
67 static void gnc_reconcile_view_row_selected (GNCQueryView *qview,
70 static gboolean gnc_reconcile_view_key_press_cb (GtkWidget *widget,
73 static gboolean gnc_reconcile_view_tooltip_cb (GNCQueryView *qview,
75 gboolean keyboard_mode,
82 gnc_reconcile_view_tooltip_cb (GNCQueryView *qview, gint x, gint y,
83 gboolean keyboard_mode, GtkTooltip *tooltip,
90 if (gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW(qview), &x, &y,
91 keyboard_mode, &model, NULL, &iter))
93 GtkTreeViewColumn *col;
95 gint col_pos, col_width;
96 gchar* desc_text = NULL;
99 if (keyboard_mode == FALSE)
101 if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW(qview), x, y,
102 NULL, &col, NULL, NULL) == FALSE)
106 gtk_tree_view_get_cursor (GTK_TREE_VIEW(qview), NULL, &col);
108 cols = gtk_tree_view_get_columns (GTK_TREE_VIEW(qview));
109 col_width = gtk_tree_view_column_get_width (col);
110 col_pos = g_list_index (cols, col);
114 if (col_pos != (REC_DESC - 1))
117 gtk_tree_model_get (model, &iter, REC_DESC, &desc_text, -1);
126 layout = gtk_widget_create_pango_layout (GTK_WIDGET(qview), desc_text);
127 pango_layout_get_pixel_size (layout, &text_width, NULL);
128 g_object_unref (layout);
131 if ((text_width + 10) <= col_width)
137 if (keyboard_mode == FALSE)
141 GtkWindow *tip_win = NULL;
142 GdkWindow *parent_window;
143 GList *win_list, *node;
145 parent_window = gtk_widget_get_parent_window (GTK_WIDGET(qview));
147 seat = gdk_display_get_default_seat (gdk_window_get_display (parent_window));
148 pointer = gdk_seat_get_pointer (seat);
150 gdk_window_get_device_position (parent_window, pointer, &cur_x, &cur_y, NULL);
152 gdk_window_get_origin (parent_window, &root_x, &root_y);
155 win_list = gtk_window_list_toplevels ();
159 for (node = win_list; node != NULL; node = node->next)
161 if (g_strcmp0 (gtk_widget_get_name (node->data),
"gtk-tooltip") == 0)
162 tip_win = node->data;
164 g_list_free (win_list);
166 gtk_tooltip_set_text (tooltip, desc_text);
168 if (GTK_IS_WINDOW(tip_win))
171 GdkRectangle monitor;
172 GtkRequisition requisition;
175 gtk_widget_get_preferred_size (GTK_WIDGET(tip_win), &requisition, NULL);
177 x = root_x + cur_x + 10;
178 y = root_y + cur_y + 10;
180 mon = gdk_display_get_monitor_at_point (gdk_window_get_display (parent_window), x, y);
181 gdk_monitor_get_geometry (mon, &monitor);
183 if (x + requisition.width > monitor.x + monitor.width)
184 x -= x - (monitor.x + monitor.width) + requisition.width;
185 else if (x < monitor.x)
188 if (y + requisition.height > monitor.y + monitor.height)
189 y -= y - (monitor.y + monitor.height) + requisition.height;
191 gtk_window_move (tip_win, x, y);
194 gtk_tooltip_set_text (tooltip, desc_text);
205 GNCQueryView *qview = GNC_QUERY_VIEW(view);
206 GtkTreeViewColumn *col;
209 col = gtk_tree_view_get_column (GTK_TREE_VIEW(qview), (column - 1));
210 return gtk_tree_view_column_get_width (col);
214 gnc_reconcile_view_add_padding (
GNCReconcileView *view, gint column, gint xpadding)
216 GNCQueryView *qview = GNC_QUERY_VIEW(view);
217 GtkTreeViewColumn *col;
219 GtkCellRenderer *cr0;
223 col = gtk_tree_view_get_column (GTK_TREE_VIEW(qview), (column - 1));
224 renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT(col));
225 cr0 = g_list_nth_data (renderers, 0);
226 g_list_free (renderers);
228 gtk_cell_renderer_get_padding (cr0, &xpad, &ypad);
229 gtk_cell_renderer_set_padding (cr0, xpadding, ypad);
244 GNCQueryView *qview = GNC_QUERY_VIEW(view);
245 GtkTreeViewColumn *col;
246 GtkTreeSelection *selection;
248 GtkCellRenderer *cr0;
249 gboolean inv_sort = FALSE;
251 if (view->view_type == RECLIST_CREDIT)
255 gnc_query_view_construct (qview, view->column_list, query);
256 gnc_query_view_set_numerics (qview, TRUE, inv_sort);
260 col = gtk_tree_view_get_column (GTK_TREE_VIEW(qview), (REC_DESC - 1));
261 gtk_tree_view_column_set_expand (col, TRUE);
264 renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT(col));
265 cr0 = g_list_nth_data (renderers, 0);
266 g_list_free (renderers);
267 g_object_set (cr0,
"ellipsize", PANGO_ELLIPSIZE_END, NULL );
269 gtk_widget_set_has_tooltip (GTK_WIDGET(qview), TRUE);
272 selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(qview));
273 gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE);
276 g_signal_connect (G_OBJECT (qview),
"column_toggled",
277 G_CALLBACK (gnc_reconcile_view_line_toggled), view);
278 g_signal_connect (G_OBJECT(qview),
"double_click_entry",
279 G_CALLBACK(gnc_reconcile_view_double_click_entry), view);
280 g_signal_connect (G_OBJECT(qview),
"row_selected",
281 G_CALLBACK(gnc_reconcile_view_row_selected), view);
282 g_signal_connect (G_OBJECT(qview),
"key_press_event",
283 G_CALLBACK(gnc_reconcile_view_key_press_cb), view);
284 g_signal_connect (G_OBJECT(qview),
"query-tooltip",
285 G_CALLBACK(gnc_reconcile_view_tooltip_cb), view);
295 else if (date_a > date_b)
302 sort_iter_compare_func (GtkTreeModel *model,
307 gboolean rec_a, rec_b;
308 Split *split_a, *split_b;
312 gtk_tree_model_get (model, a, REC_POINTER, &split_a, REC_RECN, &rec_a, -1);
313 gtk_tree_model_get (model, b, REC_POINTER, &split_b, REC_RECN, &rec_b, -1);
320 else if (rec_b > rec_a)
322 else ret = sort_date_helper (date_a, date_b);
328 gnc_reconcile_view_new (
Account *account, GNCReconcileViewType type,
332 GtkListStore *liststore;
333 GtkTreeSortable *sortable;
334 gboolean include_children, auto_check;
335 GList *accounts = NULL;
340 g_return_val_if_fail (account, NULL);
341 g_return_val_if_fail ((type == RECLIST_DEBIT) ||
342 (type == RECLIST_CREDIT), NULL);
344 view = g_object_new (GNC_TYPE_RECONCILE_VIEW, NULL);
348 liststore = gtk_list_store_new (6, G_TYPE_POINTER, G_TYPE_STRING,
349 G_TYPE_STRING, G_TYPE_STRING,
350 G_TYPE_STRING, G_TYPE_BOOLEAN);
352 gtk_tree_view_set_model (GTK_TREE_VIEW(view), GTK_TREE_MODEL(liststore));
353 g_object_unref (liststore);
355 view->account = account;
356 view->view_type = type;
357 view->statement_date = statement_date;
359 query = qof_query_create_for (GNC_ID_SPLIT);
363 if (include_children)
367 accounts = g_list_prepend (accounts, account);
371 g_list_free (accounts);
373 sign = (type == RECLIST_CREDIT) ? QOF_NUMERIC_MATCH_CREDIT :
374 QOF_NUMERIC_MATCH_DEBIT;
376 xaccQueryAddNumericMatch (query, gnc_numeric_zero (), sign, QOF_COMPARE_GTE,
377 QOF_QUERY_AND, SPLIT_AMOUNT, NULL);
380 xaccQueryAddClearedMatch (query, CLEARED_NO | CLEARED_CLEARED, QOF_QUERY_AND);
383 gnc_reconcile_view_construct (view, query);
391 for (splits =
qof_query_run (query); splits; splits = splits->next)
393 Split *split = splits->data;
398 g_assert (recn ==
NREC || recn ==
CREC);
400 if (recn ==
CREC && trans_date <= statement_date_day_end)
401 g_hash_table_insert (view->reconciled, split, split);
407 sortable = GTK_TREE_SORTABLE(gtk_tree_view_get_model (GTK_TREE_VIEW(view)));
408 gtk_tree_sortable_set_sort_func (sortable, REC_RECN, sort_iter_compare_func,
409 GINT_TO_POINTER (REC_RECN), NULL);
414 return GTK_WIDGET(view);
420 GNCSearchParamSimple *param;
421 GList *columns = NULL;
424 view->reconciled = g_hash_table_new (NULL, NULL);
425 view->account = NULL;
426 view->sibling = NULL;
428 param = gnc_search_param_simple_new ();
429 gnc_search_param_set_param_fcn (param, QOF_TYPE_BOOLEAN,
430 gnc_reconcile_view_is_reconciled, view);
431 gnc_search_param_set_title ((GNCSearchParam *) param, C_(
"Column header for 'Reconciled'",
"R"));
432 gnc_search_param_set_justify ((GNCSearchParam *) param, GTK_JUSTIFY_CENTER);
433 gnc_search_param_set_passive ((GNCSearchParam *) param, FALSE);
434 gnc_search_param_set_non_resizeable ((GNCSearchParam *) param, TRUE);
435 columns = g_list_prepend (columns, param);
437 columns = gnc_search_param_prepend_with_justify (columns, _(
"Amount"),
441 columns = gnc_search_param_prepend (columns, _(
"Description"), NULL,
442 GNC_ID_SPLIT, SPLIT_TRANS,
443 TRANS_DESCRIPTION, NULL);
444 columns = num_action ?
445 gnc_search_param_prepend_with_justify (columns, _(
"Num"),
448 SPLIT_ACTION, NULL) :
449 gnc_search_param_prepend_with_justify (columns, _(
"Num"),
452 SPLIT_TRANS, TRANS_NUM, NULL);
453 columns = gnc_search_param_prepend (columns, _(
"Date"),
456 TRANS_DATE_POSTED, NULL);
458 view->column_list = columns;
464 GObjectClass *object_class;
466 object_class = G_OBJECT_CLASS(klass);
468 reconcile_view_signals[TOGGLE_RECONCILED] =
469 g_signal_new (
"toggle_reconciled",
470 G_OBJECT_CLASS_TYPE(object_class),
475 g_cclosure_marshal_VOID__POINTER,
479 reconcile_view_signals[LINE_SELECTED] =
480 g_signal_new (
"line_selected",
481 G_OBJECT_CLASS_TYPE(object_class),
486 g_cclosure_marshal_VOID__POINTER,
490 reconcile_view_signals[DOUBLE_CLICK_SPLIT] =
491 g_signal_new (
"double_click_split",
492 G_OBJECT_CLASS_TYPE(object_class),
497 g_cclosure_marshal_VOID__POINTER,
501 object_class->finalize = gnc_reconcile_view_finalize;
503 klass->toggle_reconciled = NULL;
504 klass->line_selected = NULL;
505 klass->double_click_split = NULL;
513 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
514 g_return_if_fail (view->reconciled != NULL);
516 current = g_hash_table_lookup (view->reconciled, split);
519 g_hash_table_insert (view->reconciled, split, split);
521 g_hash_table_remove (view->reconciled, split);
527 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
528 g_return_if_fail (view->reconciled != NULL);
530 gnc_reconcile_view_toggle_split (view, split);
532 g_signal_emit (G_OBJECT(view),
533 reconcile_view_signals[TOGGLE_RECONCILED], 0, split);
541 GtkTreePath *tree_path = gtk_tree_row_reference_get_path (view->rowref);
542 GNCQueryView qview = view->qview;
543 GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(&qview));
545 gtk_tree_selection_unselect_all (selection);
546 gtk_tree_selection_select_path (selection, tree_path);
548 gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(&qview),
549 tree_path, NULL, FALSE, 0.0, 0.0);
551 gtk_tree_path_free (tree_path);
552 gtk_tree_row_reference_free (view->rowref);
559 gnc_reconcile_view_line_toggled (GNCQueryView *qview,
567 GtkTreePath *tree_path;
569 g_return_if_fail (user_data);
570 g_return_if_fail (GNC_IS_QUERY_VIEW(qview));
574 model = gtk_tree_view_get_model (GTK_TREE_VIEW(qview));
575 gtk_tree_model_iter_nth_child (model, &iter, NULL, qview->toggled_row);
577 tree_path = gtk_tree_model_get_path (model, &iter);
578 view->rowref = gtk_tree_row_reference_new (model, tree_path);
579 gtk_tree_path_free (tree_path);
581 gtk_list_store_set (GTK_LIST_STORE(model), &iter, qview->toggled_column,
582 GPOINTER_TO_INT(item), -1);
584 tree_path = gtk_tree_row_reference_get_path (view->rowref);
586 if (gtk_tree_model_get_iter (model, &iter, tree_path))
588 gtk_tree_model_get (model, &iter, REC_POINTER, &entry, -1);
589 gnc_reconcile_view_toggle (view, entry);
593 if (qview->sort_column == REC_RECN - 1)
594 g_idle_add ((GSourceFunc)follow_select_tree_path, view);
597 gtk_tree_row_reference_free (view->rowref);
601 gtk_tree_path_free (tree_path);
605 gnc_reconcile_view_double_click_entry (GNCQueryView *qview,
612 g_return_if_fail (user_data);
613 g_return_if_fail (GNC_IS_QUERY_VIEW(qview));
617 g_signal_emit(G_OBJECT(view),
618 reconcile_view_signals[DOUBLE_CLICK_SPLIT], 0, item);
622 gnc_reconcile_view_row_selected (GNCQueryView *qview,
629 g_return_if_fail (user_data);
630 g_return_if_fail (GNC_IS_QUERY_VIEW(qview));
634 g_signal_emit (G_OBJECT(view),
635 reconcile_view_signals[LINE_SELECTED], 0, item);
641 GNCQueryView *qview = GNC_QUERY_VIEW(view);
642 GtkTreeSelection *selection;
648 GList *rr_list = NULL;
649 GtkTreePath *last_tree_path = NULL;
651 model = gtk_tree_view_get_model (GTK_TREE_VIEW(qview));
652 selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(qview));
653 list_of_rows = gtk_tree_selection_get_selected_rows (selection, &model);
656 for (node = list_of_rows; node; node = node->next)
658 GtkTreeRowReference *rowref = gtk_tree_row_reference_new (model, node->data);
659 rr_list = g_list_prepend (rr_list, rowref);
660 gtk_tree_path_free (node->data);
663 rr_list = g_list_reverse (rr_list);
664 for (node = rr_list; node; node = node->next)
668 GtkTreeRowReference *rowref = node->data;
670 path = gtk_tree_row_reference_get_path (rowref);
672 if (gtk_tree_model_get_iter (model, &iter, path))
675 gtk_tree_model_get (model, &iter, REC_POINTER, &entry,
676 REC_RECN, &toggled, -1);
678 gtk_list_store_set (GTK_LIST_STORE(model), &iter, REC_RECN, reconcile, -1);
681 gtk_tree_path_free (last_tree_path);
682 last_tree_path = gtk_tree_row_reference_get_path (rowref);
684 if (reconcile != toggled)
685 gnc_reconcile_view_toggle (view, entry);
687 gtk_tree_path_free (path);
693 if (qview->sort_column == REC_RECN -1)
695 gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(qview),
696 last_tree_path, NULL, FALSE, 0.0, 0.0);
698 gtk_tree_path_free (last_tree_path);
699 last_tree_path = NULL;
701 g_list_foreach (rr_list, (GFunc) gtk_tree_row_reference_free, NULL);
702 g_list_free (rr_list);
706 gtk_widget_queue_draw (GTK_WIDGET(qview));
707 g_list_free (list_of_rows);
713 GNCQueryView *qview = GNC_QUERY_VIEW(view);
714 GtkTreeSelection *selection;
716 selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(qview));
717 return gtk_tree_selection_count_selected_rows (selection);
723 GNCQueryView *qview = GNC_QUERY_VIEW(view);
724 GtkTreeSelection *selection;
729 gint num_toggled = 0;
730 gint num_selected = 0;
732 model = gtk_tree_view_get_model (GTK_TREE_VIEW(qview));
733 selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(qview));
734 list_of_rows = gtk_tree_selection_get_selected_rows (selection, &model);
735 num_selected = gtk_tree_selection_count_selected_rows (selection);
738 for (node = list_of_rows; node; node = node->next)
742 if (gtk_tree_model_get_iter (model, &iter, node->data))
745 gtk_tree_model_get (model, &iter, REC_RECN, &toggled, -1);
750 gtk_tree_path_free (node->data);
752 g_list_free (list_of_rows);
754 if (num_toggled == num_selected)
761 gnc_reconcile_view_key_press_cb (GtkWidget *widget, GdkEventKey *event,
767 switch (event->keyval)
770 g_signal_stop_emission_by_name (widget,
"key_press_event");
772 toggle = gnc_reconcile_view_set_toggle (view);
773 gnc_reconcile_view_set_list (view, toggle);
783 gnc_reconcile_view_finalize (GObject *
object)
787 g_list_free (view->column_list);
788 if (view->reconciled != NULL)
790 g_hash_table_destroy (view->reconciled);
791 view->reconciled = NULL;
793 G_OBJECT_CLASS(gnc_reconcile_view_parent_class)->finalize (
object);
799 g_return_val_if_fail (view != NULL, 0);
800 g_return_val_if_fail (GNC_IS_RECONCILE_VIEW(view), 0);
802 return gnc_query_view_get_num_entries (GNC_QUERY_VIEW(view));
808 g_return_val_if_fail (view != NULL, NULL);
809 g_return_val_if_fail (GNC_IS_RECONCILE_VIEW(view), NULL);
811 return gnc_query_view_get_selected_entry (GNC_QUERY_VIEW(view));
823 gnc_reconcile_view_is_reconciled (gpointer item, gpointer user_data)
828 g_return_val_if_fail (item, NULL);
829 g_return_val_if_fail (view, NULL);
830 g_return_val_if_fail (GNC_IS_RECONCILE_VIEW(view), NULL);
832 if (!view->reconciled)
835 current = g_hash_table_lookup (view->reconciled, item);
836 return GINT_TO_POINTER(current != NULL);
847 grv_refresh_helper (gpointer key, gpointer value, gpointer user_data)
849 GNCQueryView *qview = user_data;
851 return !gnc_query_view_item_in_view (qview, key);
859 g_return_if_fail (view != NULL);
860 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
862 qview = GNC_QUERY_VIEW(view);
863 gnc_query_view_refresh (qview);
866 gnc_query_force_scroll_to_selection (qview);
869 if (view->reconciled)
870 g_hash_table_foreach_remove (view->reconciled, grv_refresh_helper, qview);
881 grv_balance_hash_helper (gpointer key, gpointer value, gpointer user_data)
884 gnc_numeric *total = user_data;
892 gnc_numeric total = gnc_numeric_zero ();
894 g_return_val_if_fail (view != NULL, total);
895 g_return_val_if_fail (GNC_IS_RECONCILE_VIEW(view), total);
897 if (view->reconciled == NULL)
900 g_hash_table_foreach (view->reconciled, grv_balance_hash_helper, &total);
916 grv_commit_hash_helper (gpointer key, gpointer value, gpointer user_data)
928 g_return_if_fail (view != NULL);
929 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
931 if (view->reconciled == NULL)
934 gnc_suspend_gui_refresh ();
935 g_hash_table_foreach (view->reconciled, grv_commit_hash_helper, &date);
936 gnc_resume_gui_refresh ();
954 gpointer entry = NULL;
956 g_return_if_fail (view != NULL);
957 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
959 if (view->reconciled == NULL)
962 model = gtk_tree_view_get_model (GTK_TREE_VIEW(GNC_QUERY_VIEW(view)));
963 gtk_tree_model_get_iter_first (model, &iter);
965 num_splits = gnc_query_view_get_num_entries (GNC_QUERY_VIEW(view));
967 gnc_suspend_gui_refresh ();
968 for (i = 0; i < num_splits; i++)
972 gtk_tree_model_get (model, &iter, REC_POINTER, &entry, -1);
977 g_hash_table_lookup (view->reconciled, entry))
979 recn = g_hash_table_lookup (view->reconciled, entry) ?
CREC :
NREC;
982 gtk_tree_model_iter_next (model, &iter);
984 gnc_resume_gui_refresh ();
997 g_return_if_fail (view != NULL);
998 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
1000 gnc_query_view_unselect_all (GNC_QUERY_VIEW(view));
1013 g_return_val_if_fail (view != NULL, FALSE);
1014 g_return_val_if_fail (GNC_IS_RECONCILE_VIEW(view), FALSE);
1016 return g_hash_table_size (view->reconciled) != 0;
time64 xaccTransGetDate(const Transaction *trans)
Retrieve the posted date of the transaction.
Date and Time handling routines.
utility functions for the GnuCash UI
gboolean qof_book_use_split_action_for_num_field(const QofBook *book)
Returns TRUE if this book uses split action field as the 'Num' field, FALSE if it uses transaction nu...
char xaccSplitGetReconcile(const Split *split)
Returns the value of the reconcile flag.
void xaccSplitSetReconcile(Split *split, char recn)
Set the reconcile flag.
Transaction * xaccSplitGetParent(const Split *split)
Returns the parent transaction of the split.
These expect a single object and expect the QofAccessFunc returns GncGUID*.
void qof_query_destroy(QofQuery *query)
Frees the resources associate with a Query object.
#define YREC
The Split has been reconciled.
void qof_query_set_book(QofQuery *query, QofBook *book)
Set the book to be searched.
gnc_numeric gnc_numeric_abs(gnc_numeric a)
Returns a newly created gnc_numeric that is the absolute value of the given gnc_numeric value...
#define CREC
The Split has been cleared.
Encapsulate all the information about a dataset.
Generic api to store and retrieve preferences.
GList * gnc_account_get_descendants(const Account *account)
This routine returns a flat list of all of the accounts that are descendants of the specified account...
void xaccSplitSetDateReconciledSecs(Split *split, time64 secs)
Set the date on which this split was reconciled by specifying the time as time64. ...
gboolean xaccAccountGetReconcileChildrenStatus(const Account *acc)
DOCUMENT ME!
GList * qof_query_run(QofQuery *query)
Perform the query, return the results.
gboolean gnc_prefs_get_bool(const gchar *group, const gchar *pref_name)
Get a boolean value from the preferences backend.
gint64 time64
Most systems that are currently maintained, including Microsoft Windows, BSD-derived Unixes and Linux...
time64 gnc_time64_get_day_end(time64 time_val)
The gnc_time64_get_day_end() routine will take the given time in seconds and adjust it to the last se...
API for Transactions and Splits (journal entries)
QofNumericMatch
Comparisons for QOF_TYPE_NUMERIC, QOF_TYPE_DEBCRED.
#define NREC
not reconciled or cleared
gnc_numeric xaccSplitGetAmount(const Split *split)
Returns the amount of the split in the account's commodity.