The "entry" command now correctly allows for a "draw account".
This commit is contained in:
parent
76b58dc413
commit
a7377e4581
1 changed files with 23 additions and 8 deletions
31
derive.cc
31
derive.cc
|
|
@ -113,6 +113,8 @@ entry_t * derive_new_entry(journal_t& journal,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
account_t * draw_acct = NULL;
|
||||||
|
|
||||||
while (i != end) {
|
while (i != end) {
|
||||||
std::string& re_pat(*i++);
|
std::string& re_pat(*i++);
|
||||||
account_t * acct = NULL;
|
account_t * acct = NULL;
|
||||||
|
|
@ -136,11 +138,6 @@ entry_t * derive_new_entry(journal_t& journal,
|
||||||
}
|
}
|
||||||
|
|
||||||
found:
|
found:
|
||||||
if (! acct)
|
|
||||||
acct = journal.find_account_re(re_pat);
|
|
||||||
if (! acct)
|
|
||||||
acct = journal.find_account(re_pat);
|
|
||||||
|
|
||||||
transaction_t * xact;
|
transaction_t * xact;
|
||||||
if (i == end) {
|
if (i == end) {
|
||||||
if (amt)
|
if (amt)
|
||||||
|
|
@ -148,7 +145,22 @@ entry_t * derive_new_entry(journal_t& journal,
|
||||||
else
|
else
|
||||||
xact = new transaction_t(acct);
|
xact = new transaction_t(acct);
|
||||||
} else {
|
} else {
|
||||||
xact = new transaction_t(acct, amount_t(*i++));
|
amount_t amount(*i++);
|
||||||
|
|
||||||
|
strings_list::iterator x = i;
|
||||||
|
if (i != end && ++x == end) {
|
||||||
|
draw_acct = journal.find_account_re(*i);
|
||||||
|
if (! draw_acct)
|
||||||
|
draw_acct = journal.find_account(*i);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! acct)
|
||||||
|
acct = journal.find_account_re(re_pat);
|
||||||
|
if (! acct)
|
||||||
|
acct = journal.find_account(re_pat);
|
||||||
|
|
||||||
|
xact = new transaction_t(acct, amount);
|
||||||
if (! xact->amount.commodity()) {
|
if (! xact->amount.commodity()) {
|
||||||
if (amt)
|
if (amt)
|
||||||
xact->amount.set_commodity(amt->commodity());
|
xact->amount.set_commodity(amt->commodity());
|
||||||
|
|
@ -159,8 +171,11 @@ entry_t * derive_new_entry(journal_t& journal,
|
||||||
added->add_transaction(xact);
|
added->add_transaction(xact);
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(matching->transactions.back()->account);
|
if (! draw_acct) {
|
||||||
if (account_t * draw_acct = matching->transactions.back()->account)
|
assert(matching->transactions.back()->account);
|
||||||
|
draw_acct = matching->transactions.back()->account;
|
||||||
|
}
|
||||||
|
if (draw_acct)
|
||||||
added->add_transaction(new transaction_t(draw_acct));
|
added->add_transaction(new transaction_t(draw_acct));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue