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_ACCOUNT "account"
|
||||||
#define GNC_SX_CREDIT_FORMULA "credit-formula"
|
#define GNC_SX_CREDIT_FORMULA "credit-formula"
|
||||||
#define GNC_SX_DEBIT_FORMULA "debit-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
|
enum
|
||||||
{
|
{
|
||||||
@ -77,10 +80,14 @@ enum
|
|||||||
PROP_RECONCILE_DATE,
|
PROP_RECONCILE_DATE,
|
||||||
PROP_TX,
|
PROP_TX,
|
||||||
PROP_ACCOUNT,
|
PROP_ACCOUNT,
|
||||||
PROP_SX_CREDIT_FORMULA,
|
|
||||||
PROP_SX_DEBIT_FORMULA,
|
|
||||||
PROP_SX_ACCOUNT,
|
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_LOT,
|
||||||
|
PROP_ONLINE_ACCOUNT,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* GObject Initialization */
|
/* GObject Initialization */
|
||||||
@ -171,14 +178,30 @@ gnc_split_get_property(GObject *object,
|
|||||||
key = GNC_SX_ID "/" GNC_SX_CREDIT_FORMULA;
|
key = GNC_SX_ID "/" GNC_SX_CREDIT_FORMULA;
|
||||||
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
|
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
|
||||||
break;
|
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:
|
case PROP_SX_DEBIT_FORMULA:
|
||||||
key = GNC_SX_ID "/" GNC_SX_DEBIT_FORMULA;
|
key = GNC_SX_ID "/" GNC_SX_DEBIT_FORMULA;
|
||||||
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
|
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
|
||||||
break;
|
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:
|
case PROP_SX_ACCOUNT:
|
||||||
key = GNC_SX_ID "/" GNC_SX_ACCOUNT;
|
key = GNC_SX_ID "/" GNC_SX_ACCOUNT;
|
||||||
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
|
qof_instance_get_kvp (QOF_INSTANCE (split), key, value);
|
||||||
break;
|
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:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -230,14 +253,30 @@ gnc_split_set_property(GObject *object,
|
|||||||
key = GNC_SX_ID "/" GNC_SX_CREDIT_FORMULA;
|
key = GNC_SX_ID "/" GNC_SX_CREDIT_FORMULA;
|
||||||
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
|
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
|
||||||
break;
|
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:
|
case PROP_SX_DEBIT_FORMULA:
|
||||||
key = GNC_SX_ID "/" GNC_SX_DEBIT_FORMULA;
|
key = GNC_SX_ID "/" GNC_SX_DEBIT_FORMULA;
|
||||||
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
|
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
|
||||||
break;
|
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:
|
case PROP_SX_ACCOUNT:
|
||||||
key = GNC_SX_ID "/" GNC_SX_ACCOUNT;
|
key = GNC_SX_ID "/" GNC_SX_ACCOUNT;
|
||||||
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
|
qof_instance_set_kvp (QOF_INSTANCE (split), key, value);
|
||||||
break;
|
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:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -338,7 +377,7 @@ gnc_split_class_init(SplitClass* klass)
|
|||||||
|
|
||||||
g_object_class_install_property
|
g_object_class_install_property
|
||||||
(gobject_class,
|
(gobject_class,
|
||||||
PROP_MEMO,
|
PROP_SX_DEBIT_FORMULA,
|
||||||
g_param_spec_string("sx-debit-formula",
|
g_param_spec_string("sx-debit-formula",
|
||||||
"Schedule Transaction Debit Formula",
|
"Schedule Transaction Debit Formula",
|
||||||
"The formula used to calculate the actual debit "
|
"The formula used to calculate the actual debit "
|
||||||
@ -349,7 +388,17 @@ gnc_split_class_init(SplitClass* klass)
|
|||||||
|
|
||||||
g_object_class_install_property
|
g_object_class_install_property
|
||||||
(gobject_class,
|
(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",
|
g_param_spec_string("sx-credit-formula",
|
||||||
"Schedule Transaction Credit Formula",
|
"Schedule Transaction Credit Formula",
|
||||||
"The formula used to calculate the actual credit "
|
"The formula used to calculate the actual credit "
|
||||||
@ -359,6 +408,30 @@ gnc_split_class_init(SplitClass* klass)
|
|||||||
G_PARAM_READWRITE));
|
G_PARAM_READWRITE));
|
||||||
|
|
||||||
g_object_class_install_property
|
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,
|
(gobject_class,
|
||||||
PROP_SX_ACCOUNT,
|
PROP_SX_ACCOUNT,
|
||||||
g_param_spec_boxed("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.",
|
"The target account for a scheduled transaction split.",
|
||||||
GNC_TYPE_GUID,
|
GNC_TYPE_GUID,
|
||||||
G_PARAM_READWRITE));
|
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 *debit_formula = "e^xdydx";
|
||||||
gchar *credit_formula = "seccostansin";
|
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 = guid_malloc ();
|
||||||
GncGUID *sx_account_r;
|
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),
|
qof_instance_set (QOF_INSTANCE (fixture->split),
|
||||||
"sx-debit-formula", debit_formula,
|
"sx-debit-formula", debit_formula,
|
||||||
|
"sx-debit-numeric", &debit_numeric,
|
||||||
"sx-credit-formula", credit_formula,
|
"sx-credit-formula", credit_formula,
|
||||||
|
"sx-credit-numeric", &credit_numeric,
|
||||||
"sx-account", sx_account,
|
"sx-account", sx_account,
|
||||||
|
"sx-shares", sx_shares,
|
||||||
|
"online-id", online_id,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
g_assert (qof_instance_is_dirty (QOF_INSTANCE (fixture->split)));
|
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),
|
qof_instance_get (QOF_INSTANCE (fixture->split),
|
||||||
"sx-debit-formula", &debit_formula_r,
|
"sx-debit-formula", &debit_formula_r,
|
||||||
|
"sx-debit-numeric", &debit_numeric_r,
|
||||||
"sx-credit-formula", &credit_formula_r,
|
"sx-credit-formula", &credit_formula_r,
|
||||||
|
"sx-credit-numeric", &credit_numeric_r,
|
||||||
"sx-account", &sx_account_r,
|
"sx-account", &sx_account_r,
|
||||||
|
"sx-shares", &sx_shares_r,
|
||||||
|
"online-id", &online_id_r,
|
||||||
NULL);
|
NULL);
|
||||||
g_assert_cmpstr (debit_formula, ==, debit_formula_r);
|
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_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 (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_assert (!qof_instance_is_dirty (QOF_INSTANCE (fixture->split)));
|
||||||
g_free (debit_formula_r);
|
g_free (debit_formula_r);
|
||||||
|
g_free (debit_numeric_r);
|
||||||
g_free (credit_formula_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);
|
||||||
guid_free (sx_account_r);
|
guid_free (sx_account_r);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user