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