mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Bug 735769: Enable price and shares cells in a split if it is not in the trans currency.
The label for the cells are changed to "Exch. Rate" and "Oth. Curr." in this case.
This commit is contained in:
parent
668aab4a2b
commit
8d9b3c7c5d
@ -145,6 +145,44 @@ gnc_split_register_get_rbaln (VirtualLocation virt_loc, gpointer user_data, gboo
|
|||||||
return balance;
|
return balance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gnc_commodity *
|
||||||
|
gnc_split_register_get_split_commodity (SplitRegister *reg,
|
||||||
|
VirtualLocation virt_loc)
|
||||||
|
{
|
||||||
|
CursorClass cursor_class;
|
||||||
|
Account *account;
|
||||||
|
Split *split;
|
||||||
|
|
||||||
|
split = gnc_split_register_get_split (reg, virt_loc.vcell_loc);
|
||||||
|
if (!split)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
cursor_class = gnc_split_register_get_cursor_class (reg,
|
||||||
|
virt_loc.vcell_loc);
|
||||||
|
if (cursor_class != CURSOR_CLASS_SPLIT)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
account = NULL;
|
||||||
|
|
||||||
|
if (virt_cell_loc_equal (virt_loc.vcell_loc,
|
||||||
|
reg->table->current_cursor_loc.vcell_loc) &&
|
||||||
|
gnc_table_layout_get_cell_changed (reg->table->layout, XFRM_CELL, FALSE))
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
name = gnc_table_layout_get_cell_value (reg->table->layout, XFRM_CELL);
|
||||||
|
account = gnc_account_lookup_for_register (gnc_get_current_root_account (), name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!account)
|
||||||
|
account = xaccSplitGetAccount (split);
|
||||||
|
|
||||||
|
if (!account)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return xaccAccountGetCommodity(account);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gnc_split_register_use_security_cells (SplitRegister *reg,
|
gnc_split_register_use_security_cells (SplitRegister *reg,
|
||||||
VirtualLocation virt_loc)
|
VirtualLocation virt_loc)
|
||||||
@ -182,7 +220,9 @@ gnc_split_register_use_security_cells (SplitRegister *reg,
|
|||||||
|
|
||||||
if (xaccTransUseTradingAccounts (xaccSplitGetParent (split)))
|
if (xaccTransUseTradingAccounts (xaccSplitGetParent (split)))
|
||||||
{
|
{
|
||||||
if (!gnc_commodity_is_iso(xaccAccountGetCommodity(account)))
|
gnc_commodity *commod = xaccAccountGetCommodity(account);
|
||||||
|
if (!gnc_commodity_is_iso(commod) ||
|
||||||
|
!gnc_commodity_equal(commod, xaccTransGetCurrency(xaccSplitGetParent(split))))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -341,11 +381,16 @@ gnc_split_register_get_price_label (VirtualLocation virt_loc,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
SplitRegister *reg = user_data;
|
SplitRegister *reg = user_data;
|
||||||
|
gnc_commodity *commod;
|
||||||
|
|
||||||
if (!gnc_split_register_use_security_cells (reg, virt_loc))
|
if (!gnc_split_register_use_security_cells (reg, virt_loc))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return _("Price");
|
commod = gnc_split_register_get_split_commodity (reg, virt_loc);
|
||||||
|
if (!commod || !gnc_commodity_is_iso(commod))
|
||||||
|
return _("Price");
|
||||||
|
else
|
||||||
|
return _("Exch. Rate");
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
@ -353,11 +398,16 @@ gnc_split_register_get_shares_label (VirtualLocation virt_loc,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
SplitRegister *reg = user_data;
|
SplitRegister *reg = user_data;
|
||||||
|
gnc_commodity *commod;
|
||||||
|
|
||||||
if (!gnc_split_register_use_security_cells (reg, virt_loc))
|
if (!gnc_split_register_use_security_cells (reg, virt_loc))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return _("Shares");
|
commod = gnc_split_register_get_split_commodity (reg, virt_loc);
|
||||||
|
if (!commod || !gnc_commodity_is_iso(commod))
|
||||||
|
return _("Shares");
|
||||||
|
else
|
||||||
|
return _("Oth. Curr.");
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
|
Loading…
Reference in New Issue
Block a user