[Gnucash-changes] r12959 - gnucash/trunk/src/engine - Let QOF backends work with splits without checking for the parent Trans

Neil Williams codehelp at cvs.gnucash.org
Mon Jan 23 13:59:03 EST 2006


Author: codehelp
Date: 2006-01-23 13:59:02 -0500 (Mon, 23 Jan 2006)
New Revision: 12959
Trac: http://svn.gnucash.org/trac/changeset/12959

Modified:
   gnucash/trunk/src/engine/Transaction.c
Log:
Let QOF backends work with splits without checking for the parent Trans

Modified: gnucash/trunk/src/engine/Transaction.c
===================================================================
--- gnucash/trunk/src/engine/Transaction.c	2006-01-23 18:22:13 UTC (rev 12958)
+++ gnucash/trunk/src/engine/Transaction.c	2006-01-23 18:59:02 UTC (rev 12959)
@@ -686,10 +686,9 @@
 qofSplitSetSharePrice (Split *split, gnc_numeric price)
 {
 	g_return_if_fail(split);
-	g_return_if_fail(split->parent);
-	g_return_if_fail(qof_begin_edit(&split->parent->inst));
-	xaccSplitSetSharePrice (split, price);
-	qof_commit_edit(&split->parent->inst);
+	split->value = gnc_numeric_mul(xaccSplitGetAmount(split),
+		price, get_currency_denom(split),
+		GNC_HOW_RND_ROUND);
 }
 
 void 
@@ -742,10 +741,12 @@
 qofSplitSetAmount (Split *split, gnc_numeric amt)
 {
 	g_return_if_fail(split);
-	g_return_if_fail(split->parent);
-	g_return_if_fail(qof_begin_edit(&split->parent->inst));
-	xaccSplitSetAmount (split, amt);
-	qof_commit_edit(&split->parent->inst);
+	if (split->acc)
+	{
+		split->amount = gnc_numeric_convert(amt, 
+				get_commodity_denom(split), GNC_HOW_RND_ROUND);
+	}
+	else { split->amount = amt;	}
 }
 
 void 
@@ -771,10 +772,8 @@
 qofSplitSetValue (Split *split, gnc_numeric amt)
 {
 	g_return_if_fail(split);
-	g_return_if_fail(split->parent);
-	g_return_if_fail(qof_begin_edit(&split->parent->inst));
-	xaccSplitSetValue (split, amt);
-	qof_commit_edit(&split->parent->inst);
+	split->value = gnc_numeric_convert(amt, 
+			get_currency_denom(split), GNC_HOW_RND_ROUND);
 }
 
 void 
@@ -2675,11 +2674,12 @@
 static void
 qofSplitSetMemo (Split *split, const char* memo)
 {
+	gchar *tmp;
+
 	g_return_if_fail(split);
-	g_return_if_fail(split->parent);
-	if (!qof_begin_edit(&split->parent->inst)) return;
-	xaccSplitSetMemo(split, memo);
-	qof_commit_edit(&split->parent->inst);
+	tmp = gnc_string_cache_insert((gpointer) memo);
+	gnc_string_cache_remove(split->memo);
+	split->memo = tmp;
 }
 
 void
@@ -2698,10 +2698,7 @@
 qofSplitSetAction (Split *split, const char *actn)
 {
 	g_return_if_fail(split);
-	g_return_if_fail(split->parent);
-	if (!qof_begin_edit(&split->parent->inst)) return;
-	xaccSplitSetAction (split, actn);
-	qof_commit_edit(&split->parent->inst);
+	split->action = g_strdup(actn);
 }
 
 void
@@ -2720,10 +2717,20 @@
 qofSplitSetReconcile (Split *split, char recn)
 {
 	g_return_if_fail(split);
-	g_return_if_fail(split->parent);
-	if (!qof_begin_edit(&split->parent->inst)) return;
-	xaccSplitSetReconcile(split, recn);
-	qof_commit_edit(&split->parent->inst);
+	switch (recn)
+	{
+		case NREC:
+		case CREC:
+		case YREC:
+		case FREC:
+		case VREC:
+			split->reconciled = recn;
+			mark_split (split);
+			xaccAccountRecomputeBalance (split->acc);
+			break;
+		default:
+			PERR("Bad reconciled flag");
+	}
 }
 
 void



More information about the gnucash-changes mailing list