r19945 - gnucash/trunk/src - Add APIs to get/set a flag signifying that a transaction is a book-closing txn.
Derek Atkins
warlord at code.gnucash.org
Wed Dec 15 21:11:53 EST 2010
Author: warlord
Date: 2010-12-15 21:11:53 -0500 (Wed, 15 Dec 2010)
New Revision: 19945
Trac: http://svn.gnucash.org/trac/changeset/19945
Modified:
gnucash/trunk/src/engine/Transaction.c
gnucash/trunk/src/engine/Transaction.h
gnucash/trunk/src/gnome-utils/dialog-book-close.c
Log:
Add APIs to get/set a flag signifying that a transaction is a book-closing txn.
This is necessary for Bug #570042 but doesn't completely solve it until
the reports are updated to use the new API. This is backwards-compatible
with the slot data inserted by the book closing since 2010-03-02.
Modified: gnucash/trunk/src/engine/Transaction.c
===================================================================
--- gnucash/trunk/src/engine/Transaction.c 2010-12-15 15:17:59 UTC (rev 19944)
+++ gnucash/trunk/src/engine/Transaction.c 2010-12-16 02:11:53 UTC (rev 19945)
@@ -175,6 +175,7 @@
const char *void_reason_str = "void-reason";
const char *void_time_str = "void-time";
const char *void_former_notes_str = "void-former-notes";
+const char *trans_is_closing_str = "book_closing";
/* KVP entry for date-due value */
#define TRANS_DATE_DUE_KVP "trans-date-due"
@@ -1785,6 +1786,21 @@
xaccTransCommitEdit(trans);
}
+void
+xaccTransSetIsClosingTxn (Transaction *trans, gboolean is_closing)
+{
+ if (!trans) return;
+ xaccTransBeginEdit(trans);
+
+ if (is_closing)
+ kvp_frame_set_gint64 (trans->inst.kvp_data, trans_is_closing_str, 1);
+ else
+ kvp_frame_replace_value_nc (trans->inst.kvp_data, trans_is_closing_str, NULL);
+ qof_instance_set_dirty(QOF_INSTANCE(trans));
+ xaccTransCommitEdit(trans);
+}
+
+
/********************************************************************\
\********************************************************************/
@@ -1841,6 +1857,14 @@
kvp_frame_get_string (trans->inst.kvp_data, trans_notes_str) : NULL;
}
+gboolean
+xaccTransGetIsClosingTxn (const Transaction *trans)
+{
+ return trans ?
+ kvp_frame_get_gint64 (trans->inst.kvp_data, trans_is_closing_str)
+ : FALSE;
+}
+
/********************************************************************\
\********************************************************************/
@@ -2341,6 +2365,10 @@
(QofSetterFunc)qofTransSetNotes
},
{
+ TRANS_IS_CLOSING, QOF_TYPE_BOOLEAN,
+ (QofAccessFunc)xaccTransGetIsClosingTxn, NULL
+ },
+ {
TRANS_IS_BALANCED, QOF_TYPE_BOOLEAN,
(QofAccessFunc)trans_is_balanced_p, NULL
},
Modified: gnucash/trunk/src/engine/Transaction.h
===================================================================
--- gnucash/trunk/src/engine/Transaction.h 2010-12-15 15:17:59 UTC (rev 19944)
+++ gnucash/trunk/src/engine/Transaction.h 2010-12-16 02:11:53 UTC (rev 19945)
@@ -283,6 +283,13 @@
const char * xaccTransGetNotes (const Transaction *trans);
+/** Sets whether or not this transaction is a "closing transaction" */
+void xaccTransSetIsClosingTxn (Transaction *trans, gboolean is_closing);
+
+/** Returns whether this transaction is a "closing transaction" */
+gboolean xaccTransGetIsClosingTxn (const Transaction *trans);
+
+
/** Add a split to the transaction
*
The xaccTransAppendSplit() method will append the indicated
@@ -597,6 +604,7 @@
#define TRANS_DATE_DUE "date-due"
#define TRANS_IMBALANCE "trans-imbalance"
#define TRANS_IS_BALANCED "trans-balanced?"
+#define TRANS_IS_CLOSING "trans-is-closing?"
#define TRANS_NOTES "notes"
#define TRANS_TYPE "type"
#define TRANS_VOID_STATUS "void-p"
Modified: gnucash/trunk/src/gnome-utils/dialog-book-close.c
===================================================================
--- gnucash/trunk/src/gnome-utils/dialog-book-close.c 2010-12-15 15:17:59 UTC (rev 19944)
+++ gnucash/trunk/src/gnome-utils/dialog-book-close.c 2010-12-16 02:11:53 UTC (rev 19945)
@@ -104,12 +104,7 @@
xaccTransSetDatePostedSecs(txn->txn, cacb->cbw->close_date);
xaccTransSetDescription(txn->txn, cacb->cbw->desc);
xaccTransSetCurrency(txn->txn, cmdty);
- frame = xaccTransGetSlots(txn->txn);
- /* Add a bool flag to indicate this txn was created automatically
- by the book closing feature. See
- https://lists.gnucash.org/pipermail/gnucash-devel/2008-August/023757.html */
- kvp_frame_set_gint64(frame, "book_closing", 1);
-
+ xaccTransSetIsClosingTxn(txn->txn, TRUE);
g_hash_table_insert(cacb->txns, cmdty, txn);
}
More information about the gnucash-changes
mailing list