mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Add kvp properties sx-credit-numeric, sx-debit-numeric, ax-shares, and online-id to Split.
This commit is contained in:
parent
c9493cfcf5
commit
e5e386d6b1
@ -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));
|
||||
}
|
||||
|
||||
/********************************************************************\
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user