mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Convert all Transaction KVP operations to use qof_instance_foo_kvp.
This commit is contained in:
parent
542557724c
commit
eccdfd0aa3
@ -312,7 +312,6 @@ gnc_transaction_get_property(GObject* object,
|
||||
GParamSpec* pspec)
|
||||
{
|
||||
Transaction* tx;
|
||||
KvpFrame *frame;
|
||||
gchar *key;
|
||||
GValue *temp;
|
||||
|
||||
@ -361,7 +360,6 @@ gnc_transaction_set_property(GObject* object,
|
||||
GParamSpec* pspec)
|
||||
{
|
||||
Transaction* tx;
|
||||
KvpFrame *frame;
|
||||
gchar *key;
|
||||
|
||||
g_return_if_fail(GNC_IS_TRANSACTION(object));
|
||||
@ -633,7 +631,7 @@ dupe_trans (const Transaction *from)
|
||||
to->inst.e_type = NULL;
|
||||
qof_instance_set_guid(to, guid_null());
|
||||
qof_instance_copy_book(to, from);
|
||||
to->inst.kvp_data = kvp_frame_copy (from->inst.kvp_data);
|
||||
qof_instance_copy_kvp (QOF_INSTANCE(to), QOF_INSTANCE(from));
|
||||
|
||||
return to;
|
||||
}
|
||||
@ -688,7 +686,7 @@ xaccTransClone (const Transaction *from)
|
||||
int length = g_list_length (from->splits);
|
||||
|
||||
xaccTransBeginEdit (to);
|
||||
to->inst.kvp_data = kvp_frame_copy (from->inst.kvp_data);
|
||||
qof_instance_copy_kvp (QOF_INSTANCE (to), QOF_INSTANCE (from));
|
||||
g_assert (g_list_length (to->splits) == length);
|
||||
for (i = 0; i < length; ++i)
|
||||
xaccSplitCopyKvp (g_list_nth_data (from->splits, i),
|
||||
@ -934,13 +932,14 @@ xaccTransEqual(const Transaction *ta, const Transaction *tb,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (kvp_frame_compare(ta->inst.kvp_data, tb->inst.kvp_data) != 0)
|
||||
if (qof_instance_compare_kvp (QOF_INSTANCE (ta), QOF_INSTANCE (tb)) != 0)
|
||||
{
|
||||
char *frame_a;
|
||||
char *frame_b;
|
||||
|
||||
frame_a = kvp_frame_to_string (ta->inst.kvp_data);
|
||||
frame_b = kvp_frame_to_string (tb->inst.kvp_data);
|
||||
frame_a = qof_instance_kvp_as_string (QOF_INSTANCE (ta));
|
||||
frame_b = qof_instance_kvp_as_string (QOF_INSTANCE (tb));
|
||||
|
||||
|
||||
PINFO ("kvp frames differ:\n%s\n\nvs\n\n%s", frame_a, frame_b);
|
||||
|
||||
@ -1688,7 +1687,7 @@ xaccTransRollbackEdit (Transaction *trans)
|
||||
trans->date_entered = orig->date_entered;
|
||||
trans->date_posted = orig->date_posted;
|
||||
SWAP(trans->common_currency, orig->common_currency);
|
||||
SWAP(trans->inst.kvp_data, orig->inst.kvp_data);
|
||||
qof_instance_swap_kvp (QOF_INSTANCE (trans), QOF_INSTANCE (orig));
|
||||
|
||||
/* The splits at the front of trans->splits are exactly the same
|
||||
splits as in the original, but some of them may have changed, so
|
||||
@ -1713,7 +1712,7 @@ xaccTransRollbackEdit (Transaction *trans)
|
||||
xaccSplitRollbackEdit(s);
|
||||
SWAP(s->action, so->action);
|
||||
SWAP(s->memo, so->memo);
|
||||
SWAP(s->inst.kvp_data, so->inst.kvp_data);
|
||||
qof_instance_copy_kvp (QOF_INSTANCE (s), QOF_INSTANCE (so));
|
||||
s->reconciled = so->reconciled;
|
||||
s->amount = so->amount;
|
||||
s->value = so->value;
|
||||
@ -1924,20 +1923,15 @@ xaccTransSetDatePostedSecsNormalized (Transaction *trans, time64 time)
|
||||
void
|
||||
xaccTransSetDatePostedGDate (Transaction *trans, GDate date)
|
||||
{
|
||||
KvpValue* kvp_value;
|
||||
KvpFrame* frame;
|
||||
GValue v = G_VALUE_INIT;
|
||||
if (!trans) return;
|
||||
|
||||
/* We additionally save this date into a kvp frame to ensure in
|
||||
* the future a date which was set as *date* (without time) can
|
||||
* clearly be distinguished from the Timespec. */
|
||||
kvp_value = kvp_value_new_gdate(date);
|
||||
frame = kvp_frame_set_value_nc(trans->inst.kvp_data, TRANS_DATE_POSTED, kvp_value);
|
||||
if (!frame)
|
||||
{
|
||||
kvp_value_delete(kvp_value);
|
||||
}
|
||||
|
||||
g_value_init (&v, G_TYPE_DATE);
|
||||
g_value_set_boxed (&v, &date);
|
||||
qof_instance_set_kvp (QOF_INSTANCE(trans), TRANS_DATE_POSTED, &v);
|
||||
/* mark dirty and commit handled by SetDateInternal */
|
||||
xaccTransSetDateInternal(trans, &trans->date_posted,
|
||||
gdate_to_timespec(date));
|
||||
@ -2002,9 +1996,12 @@ xaccTransSetDate (Transaction *trans, int day, int mon, int year)
|
||||
void
|
||||
xaccTransSetDateDueTS (Transaction *trans, const Timespec *ts)
|
||||
{
|
||||
GValue v = G_VALUE_INIT;
|
||||
if (!trans || !ts) return;
|
||||
g_value_init (&v, GNC_TYPE_TIMESPEC);
|
||||
g_value_set_boxed (&v, ts);
|
||||
xaccTransBeginEdit(trans);
|
||||
kvp_frame_set_timespec (trans->inst.kvp_data, TRANS_DATE_DUE_KVP, *ts);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), TRANS_DATE_DUE_KVP, &v);
|
||||
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
||||
xaccTransCommitEdit(trans);
|
||||
}
|
||||
@ -2013,9 +2010,12 @@ void
|
||||
xaccTransSetTxnType (Transaction *trans, char type)
|
||||
{
|
||||
char s[2] = {type, '\0'};
|
||||
GValue v = G_VALUE_INIT;
|
||||
g_return_if_fail(trans);
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
g_value_set_string (&v, s);
|
||||
xaccTransBeginEdit(trans);
|
||||
kvp_frame_set_string (trans->inst.kvp_data, TRANS_TXN_TYPE_KVP, s);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), TRANS_TXN_TYPE_KVP, &v);
|
||||
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
||||
xaccTransCommitEdit(trans);
|
||||
}
|
||||
@ -2025,8 +2025,8 @@ void xaccTransClearReadOnly (Transaction *trans)
|
||||
if (trans)
|
||||
{
|
||||
xaccTransBeginEdit(trans);
|
||||
kvp_frame_set_slot_path (trans->inst.kvp_data, NULL,
|
||||
TRANS_READ_ONLY_REASON, NULL);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans),
|
||||
TRANS_READ_ONLY_REASON, NULL);
|
||||
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
||||
xaccTransCommitEdit(trans);
|
||||
}
|
||||
@ -2037,9 +2037,11 @@ xaccTransSetReadOnly (Transaction *trans, const char *reason)
|
||||
{
|
||||
if (trans && reason)
|
||||
{
|
||||
GValue v = G_VALUE_INIT;
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
g_value_set_string (&v, reason);
|
||||
xaccTransBeginEdit(trans);
|
||||
kvp_frame_set_string (trans->inst.kvp_data,
|
||||
TRANS_READ_ONLY_REASON, reason);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), TRANS_READ_ONLY_REASON, &v);
|
||||
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
||||
xaccTransCommitEdit(trans);
|
||||
}
|
||||
@ -2092,10 +2094,12 @@ xaccTransSetDescription (Transaction *trans, const char *desc)
|
||||
void
|
||||
xaccTransSetAssociation (Transaction *trans, const char *assoc)
|
||||
{
|
||||
GValue v = G_VALUE_INIT;
|
||||
if (!trans || !assoc) return;
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
g_value_set_string (&v, assoc);
|
||||
xaccTransBeginEdit(trans);
|
||||
|
||||
kvp_frame_set_string (trans->inst.kvp_data, assoc_uri_str, assoc);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), assoc_uri_str, &v);
|
||||
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
||||
xaccTransCommitEdit(trans);
|
||||
}
|
||||
@ -2111,10 +2115,13 @@ qofTransSetNotes (Transaction *trans, const char *notes)
|
||||
void
|
||||
xaccTransSetNotes (Transaction *trans, const char *notes)
|
||||
{
|
||||
GValue v = G_VALUE_INIT;
|
||||
if (!trans || !notes) return;
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
g_value_set_string (&v, notes);
|
||||
xaccTransBeginEdit(trans);
|
||||
|
||||
kvp_frame_set_string (trans->inst.kvp_data, trans_notes_str, notes);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), trans_notes_str, &v);
|
||||
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
||||
xaccTransCommitEdit(trans);
|
||||
}
|
||||
@ -2126,9 +2133,14 @@ xaccTransSetIsClosingTxn (Transaction *trans, gboolean is_closing)
|
||||
xaccTransBeginEdit(trans);
|
||||
|
||||
if (is_closing)
|
||||
kvp_frame_set_gint64 (trans->inst.kvp_data, trans_is_closing_str, 1);
|
||||
{
|
||||
GValue v = G_VALUE_INIT;
|
||||
g_value_init (&v, G_TYPE_INT64);
|
||||
g_value_set_int64 (&v, 1);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), trans_is_closing_str, &v);
|
||||
}
|
||||
else
|
||||
kvp_frame_replace_value_nc (trans->inst.kvp_data, trans_is_closing_str, NULL);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), trans_is_closing_str, NULL);
|
||||
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
||||
xaccTransCommitEdit(trans);
|
||||
}
|
||||
@ -2186,23 +2198,31 @@ xaccTransGetDescription (const Transaction *trans)
|
||||
const char *
|
||||
xaccTransGetAssociation (const Transaction *trans)
|
||||
{
|
||||
return trans ?
|
||||
kvp_frame_get_string (trans->inst.kvp_data, assoc_uri_str) : NULL;
|
||||
GValue v = G_VALUE_INIT;
|
||||
if (!trans) return NULL;
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (trans), assoc_uri_str, &v);
|
||||
return g_value_get_string (&v);
|
||||
}
|
||||
|
||||
const char *
|
||||
xaccTransGetNotes (const Transaction *trans)
|
||||
{
|
||||
return trans ?
|
||||
kvp_frame_get_string (trans->inst.kvp_data, trans_notes_str) : NULL;
|
||||
GValue v = G_VALUE_INIT;
|
||||
if (!trans) return NULL;
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (trans), trans_notes_str, &v);
|
||||
return g_value_get_string (&v);
|
||||
}
|
||||
|
||||
gboolean
|
||||
xaccTransGetIsClosingTxn (const Transaction *trans)
|
||||
{
|
||||
return trans ?
|
||||
kvp_frame_get_gint64 (trans->inst.kvp_data, trans_is_closing_str)
|
||||
: FALSE;
|
||||
GValue v = G_VALUE_INIT;
|
||||
if (!trans) return FALSE;
|
||||
g_value_init (&v, G_TYPE_INT64);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (trans), trans_is_closing_str, &v);
|
||||
return g_value_get_int64 (&v);
|
||||
}
|
||||
|
||||
/********************************************************************\
|
||||
@ -2252,11 +2272,11 @@ xaccTransGetDatePostedGDate (const Transaction *trans)
|
||||
/* Can we look up this value in the kvp slot? If yes, use it
|
||||
* from there because it doesn't suffer from time zone
|
||||
* shifts. */
|
||||
const KvpValue* kvp_value =
|
||||
kvp_frame_get_slot(trans->inst.kvp_data, TRANS_DATE_POSTED);
|
||||
if (kvp_value)
|
||||
result = kvp_value_get_gdate(kvp_value);
|
||||
else
|
||||
GValue v = G_VALUE_INIT;
|
||||
g_value_init (&v, G_TYPE_DATE);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (trans), TRANS_DATE_POSTED, &v);
|
||||
result = *(GDate*)g_value_get_boxed (&v);
|
||||
if (! g_date_valid (&result))
|
||||
result = timespec_to_gdate(xaccTransRetDatePostedTS(trans));
|
||||
}
|
||||
else
|
||||
@ -2276,14 +2296,13 @@ xaccTransRetDateEnteredTS (const Transaction *trans)
|
||||
void
|
||||
xaccTransGetDateDueTS (const Transaction *trans, Timespec *ts)
|
||||
{
|
||||
KvpValue *value;
|
||||
|
||||
GValue v = G_VALUE_INIT;
|
||||
if (!trans || !ts) return;
|
||||
|
||||
value = kvp_frame_get_slot (trans->inst.kvp_data, TRANS_DATE_DUE_KVP);
|
||||
if (value)
|
||||
*ts = kvp_value_get_timespec (value);
|
||||
else
|
||||
g_value_init (&v, GNC_TYPE_TIMESPEC);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (trans), TRANS_DATE_DUE_KVP, &v);
|
||||
*ts = *(Timespec*)g_value_get_boxed (&v);
|
||||
if (ts->tv_sec == 0)
|
||||
xaccTransGetDatePostedTS (trans, ts);
|
||||
}
|
||||
|
||||
@ -2299,9 +2318,14 @@ char
|
||||
xaccTransGetTxnType (const Transaction *trans)
|
||||
{
|
||||
const char *s;
|
||||
GValue v = G_VALUE_INIT;
|
||||
|
||||
if (!trans) return TXN_TYPE_NONE;
|
||||
s = kvp_frame_get_string (trans->inst.kvp_data, TRANS_TXN_TYPE_KVP);
|
||||
if (s) return *s;
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (trans), TRANS_TXN_TYPE_KVP, &v);
|
||||
s = g_value_get_string (&v);
|
||||
if (s && strlen (s) == 0)
|
||||
return *s;
|
||||
|
||||
return TXN_TYPE_NONE;
|
||||
}
|
||||
@ -2312,8 +2336,16 @@ xaccTransGetReadOnly (const Transaction *trans)
|
||||
/* XXX This flag should be cached in the transaction structure
|
||||
* for performance reasons, since its checked every trans commit.
|
||||
*/
|
||||
return trans ? kvp_frame_get_string (
|
||||
trans->inst.kvp_data, TRANS_READ_ONLY_REASON) : NULL;
|
||||
GValue v = G_VALUE_INIT;
|
||||
const char *s;
|
||||
if (trans == NULL) return NULL;
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
qof_instance_get_kvp (QOF_INSTANCE(trans), TRANS_READ_ONLY_REASON, &v);
|
||||
s = g_value_get_string (&v);
|
||||
if (s && strlen (s))
|
||||
return s;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -2491,26 +2523,24 @@ gnc_book_count_transactions(QofBook *book)
|
||||
void
|
||||
xaccTransVoid(Transaction *trans, const char *reason)
|
||||
{
|
||||
KvpFrame *frame;
|
||||
KvpValue *val;
|
||||
Timespec now;
|
||||
GValue v = G_VALUE_INIT;
|
||||
char iso8601_str[ISO_DATELENGTH + 1] = "";
|
||||
|
||||
g_return_if_fail(trans && reason);
|
||||
|
||||
xaccTransBeginEdit(trans);
|
||||
frame = trans->inst.kvp_data;
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (trans), trans_notes_str, &v);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), void_former_notes_str, &v);
|
||||
|
||||
val = kvp_frame_get_slot(frame, trans_notes_str);
|
||||
kvp_frame_set_slot(frame, void_former_notes_str, val);
|
||||
g_value_set_string (&v, _("Voided transaction"));
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), trans_notes_str, &v);
|
||||
g_value_set_string (&v, reason);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), void_reason_str, &v);
|
||||
|
||||
kvp_frame_set_string(frame, trans_notes_str, _("Voided transaction"));
|
||||
kvp_frame_set_string(frame, void_reason_str, reason);
|
||||
|
||||
now.tv_sec = gnc_time (NULL);
|
||||
now.tv_nsec = 0;
|
||||
gnc_timespec_to_iso8601_buff(now, iso8601_str);
|
||||
kvp_frame_set_string(frame, void_time_str, iso8601_str);
|
||||
gnc_timespec_to_iso8601_buff (timespec_now (), iso8601_str);
|
||||
g_value_set_string (&v, iso8601_str);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), void_time_str, &v);
|
||||
|
||||
FOR_EACH_SPLIT(trans, xaccSplitVoid(s));
|
||||
|
||||
@ -2522,48 +2552,61 @@ xaccTransVoid(Transaction *trans, const char *reason)
|
||||
gboolean
|
||||
xaccTransGetVoidStatus(const Transaction *trans)
|
||||
{
|
||||
const char *s;
|
||||
GValue v = G_VALUE_INIT;
|
||||
g_return_val_if_fail(trans, FALSE);
|
||||
return (kvp_frame_get_slot(trans->inst.kvp_data, void_reason_str) != NULL);
|
||||
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (trans), void_reason_str, &v);
|
||||
s = g_value_get_string (&v);
|
||||
return s && strlen(s);
|
||||
}
|
||||
|
||||
const char *
|
||||
xaccTransGetVoidReason(const Transaction *trans)
|
||||
{
|
||||
g_return_val_if_fail(trans, NULL);
|
||||
return kvp_frame_get_string(trans->inst.kvp_data, void_reason_str);
|
||||
GValue v = G_VALUE_INIT;
|
||||
g_return_val_if_fail(trans, FALSE);
|
||||
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (trans), void_reason_str, &v);
|
||||
return g_value_get_string (&v);
|
||||
}
|
||||
|
||||
Timespec
|
||||
xaccTransGetVoidTime(const Transaction *tr)
|
||||
{
|
||||
const char *val;
|
||||
Timespec void_time = {0, 0};
|
||||
GValue v = G_VALUE_INIT;
|
||||
const char *s;
|
||||
Timespec void_time = {0, 0}, *ts;
|
||||
|
||||
g_return_val_if_fail(tr, void_time);
|
||||
|
||||
val = kvp_frame_get_string(tr->inst.kvp_data, void_time_str);
|
||||
return val ? gnc_iso8601_to_timespec_gmt(val) : void_time;
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (tr), void_time_str, &v);
|
||||
s = g_value_get_string (&v);
|
||||
if (s)
|
||||
return gnc_iso8601_to_timespec_gmt (s);
|
||||
return void_time;
|
||||
}
|
||||
|
||||
void
|
||||
xaccTransUnvoid (Transaction *trans)
|
||||
{
|
||||
KvpFrame *frame;
|
||||
KvpValue *val;
|
||||
|
||||
GValue v = G_VALUE_INIT;
|
||||
const char *s;
|
||||
g_return_if_fail(trans);
|
||||
|
||||
frame = trans->inst.kvp_data;
|
||||
val = kvp_frame_get_slot(frame, void_reason_str);
|
||||
if (!val) return; /* Transaction isn't voided. Bail. */
|
||||
|
||||
g_value_init (&v, G_TYPE_STRING);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (trans), void_reason_str, &v);
|
||||
s = g_value_get_string (&v);
|
||||
if (s == NULL) return; /* Transaction isn't voided. Bail. */
|
||||
xaccTransBeginEdit(trans);
|
||||
|
||||
val = kvp_frame_get_slot(frame, void_former_notes_str);
|
||||
kvp_frame_set_slot(frame, trans_notes_str, val);
|
||||
kvp_frame_set_slot_nc(frame, void_former_notes_str, NULL);
|
||||
kvp_frame_set_slot_nc(frame, void_reason_str, NULL);
|
||||
kvp_frame_set_slot_nc(frame, void_time_str, NULL);
|
||||
qof_instance_get_kvp (QOF_INSTANCE (trans), void_former_notes_str, &v);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), trans_notes_str, &v);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), void_former_notes_str, NULL);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), void_reason_str, NULL);
|
||||
qof_instance_set_kvp (QOF_INSTANCE (trans), void_time_str, NULL);
|
||||
|
||||
FOR_EACH_SPLIT(trans, xaccSplitUnvoid(s));
|
||||
|
||||
@ -2576,7 +2619,7 @@ Transaction *
|
||||
xaccTransReverse (Transaction *orig)
|
||||
{
|
||||
Transaction *trans;
|
||||
KvpValue *kvp_val;
|
||||
GValue v = G_VALUE_INIT;
|
||||
g_return_val_if_fail(orig, NULL);
|
||||
|
||||
trans = xaccTransClone(orig);
|
||||
@ -2591,8 +2634,9 @@ xaccTransReverse (Transaction *orig)
|
||||
});
|
||||
|
||||
/* Now update the original with a pointer to the new one */
|
||||
kvp_val = kvp_value_new_guid(xaccTransGetGUID(trans));
|
||||
kvp_frame_set_slot_nc(orig->inst.kvp_data, TRANS_REVERSED_BY, kvp_val);
|
||||
g_value_init (&v, GNC_TYPE_GUID);
|
||||
g_value_set_boxed (&v, xaccTransGetGUID(trans));
|
||||
qof_instance_set_kvp (QOF_INSTANCE (orig), TRANS_REVERSED_BY, &v);
|
||||
|
||||
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
||||
xaccTransCommitEdit(trans);
|
||||
@ -2602,11 +2646,12 @@ xaccTransReverse (Transaction *orig)
|
||||
Transaction *
|
||||
xaccTransGetReversedBy(const Transaction *trans)
|
||||
{
|
||||
GncGUID *guid;
|
||||
|
||||
GValue v = G_VALUE_INIT;
|
||||
g_return_val_if_fail(trans, NULL);
|
||||
guid = kvp_frame_get_guid(trans->inst.kvp_data, TRANS_REVERSED_BY);
|
||||
return xaccTransLookup(guid, qof_instance_get_book(trans));
|
||||
g_value_init (&v, GNC_TYPE_GUID);
|
||||
qof_instance_get_kvp (QOF_INSTANCE(trans), TRANS_REVERSED_BY, &v);
|
||||
return xaccTransLookup((GncGUID*)g_value_get_boxed (&v),
|
||||
qof_instance_get_book(trans));
|
||||
}
|
||||
|
||||
void
|
||||
@ -2849,10 +2894,6 @@ gboolean xaccTransRegister (void)
|
||||
TRANS_SPLITLIST, GNC_ID_SPLIT,
|
||||
(QofAccessFunc)xaccTransGetSplitList, NULL
|
||||
},
|
||||
{
|
||||
TRANS_KVP, QOF_TYPE_KVP,
|
||||
(QofAccessFunc)qof_instance_get_slots, NULL
|
||||
},
|
||||
{
|
||||
QOF_PARAM_BOOK, QOF_ID_BOOK,
|
||||
(QofAccessFunc)qof_instance_get_book, NULL
|
||||
|
Loading…
Reference in New Issue
Block a user