The cleared or pending flag of a transaction overrides the flag for the entire
entry only if it is "more" cleared.
This commit is contained in:
parent
dc9782e0de
commit
93f884b5f2
2 changed files with 7 additions and 2 deletions
|
|
@ -41,6 +41,9 @@ namespace {
|
||||||
value_t get_status(item_t& item) {
|
value_t get_status(item_t& item) {
|
||||||
return long(item.state());
|
return long(item.state());
|
||||||
}
|
}
|
||||||
|
value_t get_uncleared(item_t& item) {
|
||||||
|
return item.state() == item_t::CLEARED;
|
||||||
|
}
|
||||||
value_t get_cleared(item_t& item) {
|
value_t get_cleared(item_t& item) {
|
||||||
return item.state() == item_t::CLEARED;
|
return item.state() == item_t::CLEARED;
|
||||||
}
|
}
|
||||||
|
|
@ -111,7 +114,7 @@ expr_t::ptr_op_t item_t::lookup(const string& name)
|
||||||
|
|
||||||
case 'u':
|
case 'u':
|
||||||
if (name == "uncleared")
|
if (name == "uncleared")
|
||||||
return expr_t::op_t::wrap_value(1L);
|
return WRAP_FUNCTOR(get_wrapper<&get_uncleared>);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'X':
|
case 'X':
|
||||||
|
|
|
||||||
|
|
@ -552,6 +552,8 @@ entry_t * parse_entry(std::istream& in, char * line, account_t * master,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xact_t * xact = parse_xact(line, master, curr.get())) {
|
if (xact_t * xact = parse_xact(line, master, curr.get())) {
|
||||||
|
if ((state == item_t::CLEARED && xact->state() != item_t::CLEARED) ||
|
||||||
|
(state == item_t::PENDING && xact->state() == item_t::UNCLEARED))
|
||||||
xact->set_state(state);
|
xact->set_state(state);
|
||||||
|
|
||||||
xact->beg_pos = beg_pos;
|
xact->beg_pos = beg_pos;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue