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"
55static guint reconcile_view_signals[LAST_SIGNAL] = {0};
58static void gnc_reconcile_view_finalize (GObject *
object);
59static gpointer gnc_reconcile_view_is_reconciled (gpointer item,
61static void gnc_reconcile_view_line_toggled (GNCQueryView *qview,
64static void gnc_reconcile_view_double_click_entry (GNCQueryView *qview,
67static void gnc_reconcile_view_row_selected (GNCQueryView *qview,
70static gboolean gnc_reconcile_view_key_press_cb (GtkWidget *widget,
73static gboolean gnc_reconcile_view_tooltip_cb (GNCQueryView *qview,
75 gboolean keyboard_mode,
82gnc_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);
214gnc_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)
302sort_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);
328gnc_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);
369 xaccQueryAddAccountMatch (query, accounts, QOF_GUID_MATCH_ANY, QOF_QUERY_AND);
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);
539 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
540 g_hash_table_remove_all (view->reconciled);
546 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
547 g_hash_table_add (view->reconciled, split);
555 GtkTreePath *tree_path = gtk_tree_row_reference_get_path (view->rowref);
556 GNCQueryView qview = view->qview;
557 GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(&qview));
559 gtk_tree_selection_unselect_all (selection);
560 gtk_tree_selection_select_path (selection, tree_path);
562 gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(&qview),
563 tree_path, NULL, FALSE, 0.0, 0.0);
565 gtk_tree_path_free (tree_path);
566 gtk_tree_row_reference_free (view->rowref);
573gnc_reconcile_view_line_toggled (GNCQueryView *qview,
581 GtkTreePath *tree_path;
583 g_return_if_fail (user_data);
584 g_return_if_fail (GNC_IS_QUERY_VIEW(qview));
588 model = gtk_tree_view_get_model (GTK_TREE_VIEW(qview));
589 gtk_tree_model_iter_nth_child (model, &iter, NULL, qview->toggled_row);
591 tree_path = gtk_tree_model_get_path (model, &iter);
592 view->rowref = gtk_tree_row_reference_new (model, tree_path);
593 gtk_tree_path_free (tree_path);
595 gtk_list_store_set (GTK_LIST_STORE(model), &iter, qview->toggled_column,
596 GPOINTER_TO_INT(item), -1);
598 tree_path = gtk_tree_row_reference_get_path (view->rowref);
600 if (gtk_tree_model_get_iter (model, &iter, tree_path))
602 gtk_tree_model_get (model, &iter, REC_POINTER, &entry, -1);
603 gnc_reconcile_view_toggle (view, entry);
607 if (qview->sort_column == REC_RECN - 1)
608 g_idle_add ((GSourceFunc)follow_select_tree_path, view);
611 gtk_tree_row_reference_free (view->rowref);
615 gtk_tree_path_free (tree_path);
619gnc_reconcile_view_double_click_entry (GNCQueryView *qview,
626 g_return_if_fail (user_data);
627 g_return_if_fail (GNC_IS_QUERY_VIEW(qview));
631 g_signal_emit(G_OBJECT(view),
632 reconcile_view_signals[DOUBLE_CLICK_SPLIT], 0, item);
636gnc_reconcile_view_row_selected (GNCQueryView *qview,
643 g_return_if_fail (user_data);
644 g_return_if_fail (GNC_IS_QUERY_VIEW(qview));
648 g_signal_emit (G_OBJECT(view),
649 reconcile_view_signals[LINE_SELECTED], 0, item);
655 GNCQueryView *qview = GNC_QUERY_VIEW(view);
656 GtkTreeSelection *selection;
662 GList *rr_list = NULL;
663 GtkTreePath *last_tree_path = NULL;
665 model = gtk_tree_view_get_model (GTK_TREE_VIEW(qview));
666 selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(qview));
667 list_of_rows = gtk_tree_selection_get_selected_rows (selection, &model);
670 for (node = list_of_rows; node; node = node->next)
672 GtkTreeRowReference *rowref = gtk_tree_row_reference_new (model, node->data);
673 rr_list = g_list_prepend (rr_list, rowref);
674 gtk_tree_path_free (node->data);
677 rr_list = g_list_reverse (rr_list);
678 for (node = rr_list; node; node = node->next)
682 GtkTreeRowReference *rowref = node->data;
684 path = gtk_tree_row_reference_get_path (rowref);
686 if (gtk_tree_model_get_iter (model, &iter, path))
689 gtk_tree_model_get (model, &iter, REC_POINTER, &entry,
690 REC_RECN, &toggled, -1);
692 gtk_list_store_set (GTK_LIST_STORE(model), &iter, REC_RECN, reconcile, -1);
695 gtk_tree_path_free (last_tree_path);
696 last_tree_path = gtk_tree_row_reference_get_path (rowref);
698 if (reconcile != toggled)
699 gnc_reconcile_view_toggle (view, entry);
701 gtk_tree_path_free (path);
707 if (qview->sort_column == REC_RECN -1)
709 gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(qview),
710 last_tree_path, NULL, FALSE, 0.0, 0.0);
712 gtk_tree_path_free (last_tree_path);
713 last_tree_path = NULL;
715 g_list_foreach (rr_list, (GFunc) gtk_tree_row_reference_free, NULL);
716 g_list_free (rr_list);
720 gtk_widget_queue_draw (GTK_WIDGET(qview));
721 g_list_free (list_of_rows);
727 GNCQueryView *qview = GNC_QUERY_VIEW(view);
728 GtkTreeSelection *selection;
730 selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(qview));
731 return gtk_tree_selection_count_selected_rows (selection);
737 GNCQueryView *qview = GNC_QUERY_VIEW(view);
738 GtkTreeSelection *selection;
743 gint num_toggled = 0;
744 gint num_selected = 0;
746 model = gtk_tree_view_get_model (GTK_TREE_VIEW(qview));
747 selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(qview));
748 list_of_rows = gtk_tree_selection_get_selected_rows (selection, &model);
749 num_selected = gtk_tree_selection_count_selected_rows (selection);
752 for (node = list_of_rows; node; node = node->next)
756 if (gtk_tree_model_get_iter (model, &iter, node->data))
759 gtk_tree_model_get (model, &iter, REC_RECN, &toggled, -1);
764 gtk_tree_path_free (node->data);
766 g_list_free (list_of_rows);
768 if (num_toggled == num_selected)
775gnc_reconcile_view_key_press_cb (GtkWidget *widget, GdkEventKey *event,
781 switch (event->keyval)
784 g_signal_stop_emission_by_name (widget,
"key_press_event");
786 toggle = gnc_reconcile_view_set_toggle (view);
787 gnc_reconcile_view_set_list (view, toggle);
797gnc_reconcile_view_finalize (GObject *
object)
801 g_list_free_full (view->column_list, g_object_unref);
802 if (view->reconciled != NULL)
804 g_hash_table_destroy (view->reconciled);
805 view->reconciled = NULL;
807 G_OBJECT_CLASS(gnc_reconcile_view_parent_class)->finalize (
object);
813 g_return_val_if_fail (view != NULL, 0);
814 g_return_val_if_fail (GNC_IS_RECONCILE_VIEW(view), 0);
816 return gnc_query_view_get_num_entries (GNC_QUERY_VIEW(view));
822 g_return_val_if_fail (view != NULL, NULL);
823 g_return_val_if_fail (GNC_IS_RECONCILE_VIEW(view), NULL);
825 return gnc_query_view_get_selected_entry (GNC_QUERY_VIEW(view));
837gnc_reconcile_view_is_reconciled (gpointer item, gpointer user_data)
842 g_return_val_if_fail (item, NULL);
843 g_return_val_if_fail (view, NULL);
844 g_return_val_if_fail (GNC_IS_RECONCILE_VIEW(view), NULL);
846 if (!view->reconciled)
849 current = g_hash_table_lookup (view->reconciled, item);
850 return GINT_TO_POINTER(current != NULL);
861grv_refresh_helper (gpointer key, gpointer value, gpointer user_data)
863 GNCQueryView *qview = user_data;
865 return !gnc_query_view_item_in_view (qview, key);
873 g_return_if_fail (view != NULL);
874 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
876 qview = GNC_QUERY_VIEW(view);
877 gnc_query_view_refresh (qview);
880 gnc_query_force_scroll_to_selection (qview);
883 if (view->reconciled)
884 g_hash_table_foreach_remove (view->reconciled, grv_refresh_helper, qview);
895grv_balance_hash_helper (gpointer key, gpointer value, gpointer user_data)
898 gnc_numeric *total = user_data;
906 gnc_numeric total = gnc_numeric_zero ();
908 g_return_val_if_fail (view != NULL, total);
909 g_return_val_if_fail (GNC_IS_RECONCILE_VIEW(view), total);
911 if (view->reconciled == NULL)
914 g_hash_table_foreach (view->reconciled, grv_balance_hash_helper, &total);
930grv_commit_hash_helper (gpointer key, gpointer value, gpointer user_data)
942 g_return_if_fail (view != NULL);
943 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
945 if (view->reconciled == NULL)
948 gnc_suspend_gui_refresh ();
949 g_hash_table_foreach (view->reconciled, grv_commit_hash_helper, &date);
950 gnc_resume_gui_refresh ();
968 gpointer entry = NULL;
970 g_return_if_fail (view != NULL);
971 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
973 if (view->reconciled == NULL)
976 model = gtk_tree_view_get_model (GTK_TREE_VIEW(GNC_QUERY_VIEW(view)));
977 gtk_tree_model_get_iter_first (model, &iter);
979 num_splits = gnc_query_view_get_num_entries (GNC_QUERY_VIEW(view));
981 gnc_suspend_gui_refresh ();
982 for (i = 0; i < num_splits; i++)
986 gtk_tree_model_get (model, &iter, REC_POINTER, &entry, -1);
991 g_hash_table_lookup (view->reconciled, entry))
993 recn = g_hash_table_lookup (view->reconciled, entry) ?
CREC :
NREC;
996 gtk_tree_model_iter_next (model, &iter);
998 gnc_resume_gui_refresh ();
1011 g_return_if_fail (view != NULL);
1012 g_return_if_fail (GNC_IS_RECONCILE_VIEW(view));
1014 gnc_query_view_unselect_all (GNC_QUERY_VIEW(view));
1027 g_return_val_if_fail (view != NULL, FALSE);
1028 g_return_val_if_fail (GNC_IS_RECONCILE_VIEW(view), FALSE);
1030 return g_hash_table_size (view->reconciled) != 0;
API for Transactions and Splits (journal entries)
Date and Time handling routines.
Generic api to store and retrieve preferences.
utility functions for the GnuCash UI
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...
gboolean xaccAccountGetReconcileChildrenStatus(const Account *acc)
DOCUMENT ME!
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...
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...
time64 xaccTransGetDate(const Transaction *trans)
Retrieve the posted date of the transaction.
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.
gboolean gnc_prefs_get_bool(const gchar *group, const gchar *pref_name)
Get a boolean value from the preferences backend.
QofNumericMatch
Comparisons for QOF_TYPE_NUMERIC, QOF_TYPE_DEBCRED.
void qof_query_set_book(QofQuery *query, QofBook *book)
Set the book to be searched.
void qof_query_destroy(QofQuery *query)
Frees the resources associate with a Query object.
GList * qof_query_run(QofQuery *query)
Perform the query, return the results.
Transaction * xaccSplitGetParent(const Split *split)
Returns the parent transaction of the split.
void xaccSplitSetReconcile(Split *split, char recn)
Set the reconcile flag.
char xaccSplitGetReconcile(const Split *split)
Returns the value of the reconcile flag.
void xaccSplitSetDateReconciledSecs(Split *split, time64 secs)
Set the date on which this split was reconciled by specifying the time as time64.
#define NREC
not reconciled or cleared
#define CREC
The Split has been cleared
#define YREC
The Split has been reconciled.
gnc_numeric xaccSplitGetAmount(const Split *split)
Returns the amount of the split in the account's commodity.
Encapsulate all the information about a dataset.