Several fixes to get the state flags to appear right in "print".
This commit is contained in:
parent
6f37d88391
commit
ffba456113
4 changed files with 24 additions and 14 deletions
10
src/entry.cc
10
src/entry.cc
|
|
@ -61,14 +61,14 @@ entry_base_t::~entry_base_t()
|
||||||
item_t::state_t entry_base_t::state() const
|
item_t::state_t entry_base_t::state() const
|
||||||
{
|
{
|
||||||
bool first = true;
|
bool first = true;
|
||||||
state_t result = UNCLEARED;
|
state_t result = CLEARED;
|
||||||
|
|
||||||
foreach (xact_t * xact, xacts) {
|
foreach (xact_t * xact, xacts) {
|
||||||
if ((result == UNCLEARED && xact->_state != UNCLEARED) ||
|
if (xact->_state == UNCLEARED)
|
||||||
(result == PENDING && xact->_state == CLEARED))
|
return UNCLEARED;
|
||||||
result = xact->_state;
|
else if (xact->_state == PENDING)
|
||||||
|
result = PENDING;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,11 +58,13 @@ report_t::report_t(session_t& _session) : session(_session)
|
||||||
"%48|%-.38A %22.108t %!22.132T\n");
|
"%48|%-.38A %22.108t %!22.132T\n");
|
||||||
|
|
||||||
HANDLER(print_format_).on(
|
HANDLER(print_format_).on(
|
||||||
"%(entry.date)%(entry.cleared ? \" *\" : (entry.uncleared ? \"\" : \" !\"))"
|
"%(entry.date)%(entry.cleared ? \" *\" : (entry.pending ? \" !\" : \"\"))"
|
||||||
"%(code ? \" (\" + code + \")\" : \"\") %(payee)%(entry.comment | \"\")\n"
|
"%(code ? \" (\" + code + \")\" : \"\") %(payee)%(entry.comment | \"\")\n"
|
||||||
" %(cleared ? \"* \" : (uncleared ? \"\" : \"! \"))%-34(account)"
|
" %(entry.uncleared ? (cleared ? \"* \" : (pending ? \"! \" : \"\")) : \"\")"
|
||||||
|
"%-34(account)"
|
||||||
" %12(amount)%(comment | \"\")\n%/"
|
" %12(amount)%(comment | \"\")\n%/"
|
||||||
" %(cleared ? \"* \" : (uncleared ? \"\" : \"! \"))%-34(account)"
|
" %(entry.uncleared ? (cleared ? \"* \" : (pending ? \"! \" : \"\")) : \"\")"
|
||||||
|
"%-34(account)"
|
||||||
" %12(amount)%(comment | \"\")\n%/\n");
|
" %12(amount)%(comment | \"\")\n%/\n");
|
||||||
|
|
||||||
HANDLER(balance_format_).on(
|
HANDLER(balance_format_).on(
|
||||||
|
|
@ -84,7 +86,7 @@ report_t::report_t(session_t& _session) : session(_session)
|
||||||
"%(quoted(payee)),"
|
"%(quoted(payee)),"
|
||||||
"%(quoted(account)),"
|
"%(quoted(account)),"
|
||||||
"%(quoted(display_amount)),"
|
"%(quoted(display_amount)),"
|
||||||
"%(quoted(cleared ? \"*\" : (uncleared ? \"\" : \"!\"))),"
|
"%(quoted((cleared or entry.cleared) ? \"*\" : ((pending or entry.pending) ? \"!\" : \"\"))),"
|
||||||
"%(quoted(code)),"
|
"%(quoted(code)),"
|
||||||
"%(quoted(join(note)))\n");
|
"%(quoted(join(note)))\n");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -752,8 +752,8 @@ xact_t * instance_t::parse_xact(char * line,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry &&
|
if (entry &&
|
||||||
((entry->_state == item_t::CLEARED && xact->state() != item_t::CLEARED) ||
|
((entry->_state == item_t::CLEARED && xact->_state != item_t::CLEARED) ||
|
||||||
(entry->_state == item_t::PENDING && xact->state() == item_t::UNCLEARED)))
|
(entry->_state == item_t::PENDING && xact->_state == item_t::UNCLEARED)))
|
||||||
xact->set_state(entry->_state);
|
xact->set_state(entry->_state);
|
||||||
|
|
||||||
// Parse the account name
|
// Parse the account name
|
||||||
|
|
@ -1050,15 +1050,14 @@ entry_t * instance_t::parse_entry(char * line,
|
||||||
|
|
||||||
// Parse the optional cleared flag: *
|
// Parse the optional cleared flag: *
|
||||||
|
|
||||||
item_t::state_t state = item_t::UNCLEARED;
|
|
||||||
if (next) {
|
if (next) {
|
||||||
switch (*next) {
|
switch (*next) {
|
||||||
case '*':
|
case '*':
|
||||||
state = item_t::CLEARED;
|
curr->_state = item_t::CLEARED;
|
||||||
next = skip_ws(++next);
|
next = skip_ws(++next);
|
||||||
break;
|
break;
|
||||||
case '!':
|
case '!':
|
||||||
state = item_t::PENDING;
|
curr->_state = item_t::PENDING;
|
||||||
next = skip_ws(++next);
|
next = skip_ws(++next);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,10 @@ item_t::state_t xact_t::state() const
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
value_t get_this(xact_t& xact) {
|
||||||
|
return value_t(static_cast<scope_t *>(&xact));
|
||||||
|
}
|
||||||
|
|
||||||
value_t get_entry(xact_t& xact) {
|
value_t get_entry(xact_t& xact) {
|
||||||
return value_t(static_cast<scope_t *>(xact.entry));
|
return value_t(static_cast<scope_t *>(xact.entry));
|
||||||
}
|
}
|
||||||
|
|
@ -198,6 +202,11 @@ expr_t::ptr_op_t xact_t::lookup(const string& name)
|
||||||
else if (name == "total_cost")
|
else if (name == "total_cost")
|
||||||
return WRAP_FUNCTOR(get_wrapper<&get_total_cost>);
|
return WRAP_FUNCTOR(get_wrapper<&get_total_cost>);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'x':
|
||||||
|
if (name == "xact")
|
||||||
|
return WRAP_FUNCTOR(get_wrapper<&get_this>);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return item_t::lookup(name);
|
return item_t::lookup(name);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue