Created new valexpr variable display_account

Where display_account might be '(Expenses:Food)', account will always be
'Expenses:Food'.  account is now used by all matching and query
operations, while display_account is used in the various report outputs
(besides balance, which never distinguished virtual accounts).

Fixes F2832452-4521-49A3-B854-F4E12CC4D82E
This commit is contained in:
John Wiegley 2010-05-22 21:05:30 -04:00
parent 9557a9d955
commit b5c9be4d29
2 changed files with 30 additions and 14 deletions

View file

@ -236,7 +236,7 @@ namespace {
return 1L;
}
value_t get_account(call_scope_t& scope)
value_t account_name(call_scope_t& scope)
{
in_context_t<post_t> env(scope, "&v");
@ -279,16 +279,30 @@ namespace {
} else {
name = env->reported_account()->fullname();
}
if (env->has_flags(POST_VIRTUAL)) {
if (env->must_balance())
name = string("[") + name + "]";
else
name = string("(") + name + ")";
}
return string_value(name);
}
value_t get_display_account(call_scope_t& scope)
{
in_context_t<post_t> env(scope, "&v");
value_t acct = account_name(scope);
if (acct.is_string()) {
if (env->has_flags(POST_VIRTUAL)) {
if (env->must_balance())
acct = string_value(string("[") + acct.as_string() + "]");
else
acct = string_value(string("(") + acct.as_string() + ")");
}
}
return acct;
}
value_t get_account(call_scope_t& scope)
{
return account_name(scope);
}
value_t get_account_id(post_t& post) {
return static_cast<long>(post.account_id());
}
@ -398,7 +412,9 @@ expr_t::ptr_op_t post_t::lookup(const symbol_t::kind_t kind,
break;
case 'd':
if (name == "depth")
if (name == "display_account")
return WRAP_FUNCTOR(get_display_account);
else if (name == "depth")
return WRAP_FUNCTOR(get_wrapper<&get_account_depth>);
else if (name == "datetime")
return WRAP_FUNCTOR(get_wrapper<&get_datetime>);

View file

@ -463,7 +463,7 @@ public:
"%(quoted(date)),"
"%(quoted(code)),"
"%(quoted(payee)),"
"%(quoted(account)),"
"%(quoted(display_account)),"
"%(quoted(commodity)),"
"%(quoted(quantity(scrub(display_amount)))),"
"%(quoted(cleared ? \"*\" : (pending ? \"!\" : \"\"))),"
@ -752,13 +752,13 @@ public:
OPTION__(report_t, prices_format_, CTOR(report_t, prices_format_) {
on(none,
"%(date) %-8(account) %(justify(scrub(display_amount), 12, "
"%(date) %-8(display_account) %(justify(scrub(display_amount), 12, "
" 2 + 9 + 8 + 12, true, color))\n");
});
OPTION__(report_t, pricedb_format_, CTOR(report_t, pricedb_format_) {
on(none,
"P %(datetime) %(account) %(scrub(display_amount))\n");
"P %(datetime) %(display_account) %(scrub(display_amount))\n");
});
OPTION(report_t, print_virtual);
@ -785,8 +785,8 @@ public:
" if color & date > today))"
" %(ansify_if(justify(truncated(payee, payee_width), payee_width), "
" bold if color & !cleared & actual))"
" %(ansify_if(justify(truncated(account, account_width, abbrev_len), "
" account_width), blue if color))"
" %(ansify_if(justify(truncated(display_account, account_width, "
" abbrev_len), account_width), blue if color))"
" %(justify(scrub(display_amount), amount_width, "
" 3 + meta_width + date_width + payee_width + account_width"
" + amount_width + prepend_width, true, color))"