Add kvp properties sx-credit-numeric, sx-debit-numeric, ax-shares, and online-id to Split.

This commit is contained in:
John Ralls 2013-10-21 13:10:14 -07:00
parent c9493cfcf5
commit e5e386d6b1
2 changed files with 110 additions and 5 deletions

View File

@ -66,6 +66,9 @@ static QofLogModule log_module = GNC_MOD_ENGINE;
#define GNC_SX_ACCOUNT "account"
#define GNC_SX_CREDIT_FORMULA "credit-formula"
#define GNC_SX_DEBIT_FORMULA "debit-formula"
#define GNC_SX_CREDIT_NUMERIC "credit-numeric"
#define GNC_SX_DEBIT_NUMERIC "debit-numeric"
#define GNC_SX_SHARES "shares"
enum
{
@ -77,10 +80,14 @@ enum
PROP_RECONCILE_DATE,
PROP_TX,
PROP_ACCOUNT,
PROP_SX_CREDIT_FORMULA,
PROP_SX_DEBIT_FORMULA,
PROP_SX_ACCOUNT,
PROP_SX_CREDIT_FORMULA,
PROP_SX_CREDIT_NUMERIC,
PROP_SX_DEBIT_FORMULA,
PROP_SX_DEBIT_NUMERIC,
PROP_SX_SHARES,
PROP_LOT,
PROP_ONLINE_ACCOUNT,
};
/* GObject Initialization */
@ -171,14 +178,30 @@ gnc_split_get_property(GObject *object,
key = GNC_SX_ID "/" GNC_SX_CREDIT_FORMULA;
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_SX_CREDIT_NUMERIC:
key = GNC_SX_ID "/" GNC_SX_CREDIT_NUMERIC;
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_SX_DEBIT_FORMULA:
key = GNC_SX_ID "/" GNC_SX_DEBIT_FORMULA;
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_SX_DEBIT_NUMERIC:
key = GNC_SX_ID "/" GNC_SX_DEBIT_NUMERIC;
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_SX_ACCOUNT:
key = GNC_SX_ID "/" GNC_SX_ACCOUNT;
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_SX_SHARES:
key = GNC_SX_ID "/" GNC_SX_SHARES;
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_ONLINE_ACCOUNT:
key = "online_id";
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@ -230,14 +253,30 @@ gnc_split_set_property(GObject *object,
key = GNC_SX_ID "/" GNC_SX_CREDIT_FORMULA;
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_SX_CREDIT_NUMERIC:
key = GNC_SX_ID "/" GNC_SX_CREDIT_NUMERIC;
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_SX_DEBIT_FORMULA:
key = GNC_SX_ID "/" GNC_SX_DEBIT_FORMULA;
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_SX_DEBIT_NUMERIC:
key = GNC_SX_ID "/" GNC_SX_DEBIT_NUMERIC;
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_SX_ACCOUNT:
key = GNC_SX_ID "/" GNC_SX_ACCOUNT;
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_SX_SHARES:
key = GNC_SX_ID "/" GNC_SX_SHARES;
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
break;
case PROP_ONLINE_ACCOUNT:
key = "online_id";
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@ -338,7 +377,7 @@ gnc_split_class_init(SplitClass* klass)
g_object_class_install_property
(gobject_class,
PROP_MEMO,
PROP_SX_DEBIT_FORMULA,
g_param_spec_string("sx-debit-formula",
"Schedule Transaction Debit Formula",
"The formula used to calculate the actual debit "
@ -349,7 +388,17 @@ gnc_split_class_init(SplitClass* klass)
g_object_class_install_property
(gobject_class,
PROP_MEMO,
PROP_SX_DEBIT_NUMERIC,
g_param_spec_boxed("sx-debit-numeric",
"Scheduled Transaction Debit Numeric",
"Numeric value to plug into the Debit Formula when a "
"real split is generated from this SX split.",
GNC_TYPE_NUMERIC,
G_PARAM_READWRITE));
g_object_class_install_property
(gobject_class,
PROP_SX_CREDIT_FORMULA,
g_param_spec_string("sx-credit-formula",
"Schedule Transaction Credit Formula",
"The formula used to calculate the actual credit "
@ -359,6 +408,30 @@ gnc_split_class_init(SplitClass* klass)
G_PARAM_READWRITE));
g_object_class_install_property
(gobject_class,
PROP_SX_CREDIT_NUMERIC,
g_param_spec_boxed("sx-credit-numeric",
"Scheduled Transaction Credit Numeric",
"Numeric value to plug into the Credit Formula when a "
"real split is generated from this SX split.",
GNC_TYPE_NUMERIC,
G_PARAM_READWRITE));
/* FIXME: PROP_SX_SHARES should be stored as a gnc_numeric, but the function
* which uses it, gnc_template_register_save_shares_cell, stores a
* phony string. This is maintained until backwards compatibility can
* be established.
*/
g_object_class_install_property
(gobject_class,
PROP_SX_SHARES,
g_param_spec_string("sx-shares",
"Scheduled Transaction Shares",
"Numeric value of shares to insert in a new split when "
"it's generated from this SX split.",
NULL,
G_PARAM_READWRITE));
g_object_class_install_property
(gobject_class,
PROP_SX_ACCOUNT,
g_param_spec_boxed("sx-account",
@ -366,6 +439,16 @@ gnc_split_class_init(SplitClass* klass)
"The target account for a scheduled transaction split.",
GNC_TYPE_GUID,
G_PARAM_READWRITE));
g_object_class_install_property
(gobject_class,
PROP_ONLINE_ACCOUNT,
g_param_spec_string ("online-id",
"Online Account ID",
"The online account which corresponds to this "
"account for OFX/HCBI import",
NULL,
G_PARAM_READWRITE));
}
/********************************************************************\

View File

@ -151,14 +151,24 @@ test_split_kvp_properties (Fixture *fixture, gconstpointer pData)
{
gchar *debit_formula = "e^xdydx";
gchar *credit_formula = "seccostansin";
gchar *debit_formula_r, *credit_formula_r;
gchar *sx_shares = "43";
gchar *online_id = "my_online_id";
gchar *debit_formula_r, *credit_formula_r, *sx_shares_r;
gchar *online_id_r;
GncGUID *sx_account = guid_malloc ();
GncGUID *sx_account_r;
gnc_numeric debit_numeric = gnc_numeric_create (123, 456);
gnc_numeric credit_numeric = gnc_numeric_create (789, 456);
gnc_numeric *debit_numeric_r, *credit_numeric_r;
qof_instance_set (QOF_INSTANCE (fixture->split),
"sx-debit-formula", debit_formula,
"sx-debit-numeric", &debit_numeric,
"sx-credit-formula", credit_formula,
"sx-credit-numeric", &credit_numeric,
"sx-account", sx_account,
"sx-shares", sx_shares,
"online-id", online_id,
NULL);
g_assert (qof_instance_is_dirty (QOF_INSTANCE (fixture->split)));
@ -166,15 +176,27 @@ test_split_kvp_properties (Fixture *fixture, gconstpointer pData)
qof_instance_get (QOF_INSTANCE (fixture->split),
"sx-debit-formula", &debit_formula_r,
"sx-debit-numeric", &debit_numeric_r,
"sx-credit-formula", &credit_formula_r,
"sx-credit-numeric", &credit_numeric_r,
"sx-account", &sx_account_r,
"sx-shares", &sx_shares_r,
"online-id", &online_id_r,
NULL);
g_assert_cmpstr (debit_formula, ==, debit_formula_r);
g_assert (gnc_numeric_equal (debit_numeric, *debit_numeric_r));
g_assert_cmpstr (credit_formula, ==, credit_formula_r);
g_assert (gnc_numeric_equal (credit_numeric, *credit_numeric_r));
g_assert (guid_equal (sx_account, sx_account_r));
g_assert_cmpstr (sx_shares, ==, sx_shares_r);
g_assert_cmpstr (online_id, ==, online_id_r);
g_assert (!qof_instance_is_dirty (QOF_INSTANCE (fixture->split)));
g_free (debit_formula_r);
g_free (debit_numeric_r);
g_free (credit_formula_r);
g_free (credit_numeric_r);
g_free (sx_shares_r);
g_free (online_id_r);
guid_free (sx_account);
guid_free (sx_account_r);
}