Merge branch 'next'
This commit is contained in:
commit
e3c8b91b5f
3 changed files with 18 additions and 6 deletions
|
|
@ -458,6 +458,9 @@ xact_t * draft_t::insert(journal_t& journal)
|
||||||
*post.cost *= new_post->amount;
|
*post.cost *= new_post->amount;
|
||||||
post.cost->set_commodity(cost_commodity);
|
post.cost->set_commodity(cost_commodity);
|
||||||
}
|
}
|
||||||
|
else if (new_post->amount.sign() < 0) {
|
||||||
|
new_post->cost->in_place_negate();
|
||||||
|
}
|
||||||
|
|
||||||
new_post->cost = *post.cost;
|
new_post->cost = *post.cost;
|
||||||
DEBUG("derive.xact", "Copied over posting cost");
|
DEBUG("derive.xact", "Copied over posting cost");
|
||||||
|
|
|
||||||
|
|
@ -247,7 +247,7 @@ commodity_pool_t::exchange(const amount_t& amount,
|
||||||
current_annotation = &as_annotated_commodity(commodity).details;
|
current_annotation = &as_annotated_commodity(commodity).details;
|
||||||
|
|
||||||
amount_t per_unit_cost =
|
amount_t per_unit_cost =
|
||||||
(is_per_unit || amount.is_realzero() ? cost : cost / amount).abs();
|
(is_per_unit || amount.is_realzero()) ? cost.abs() : (cost / amount).abs();
|
||||||
|
|
||||||
DEBUG("commodity.prices.add", "exchange: per-unit-cost = " << per_unit_cost);
|
DEBUG("commodity.prices.add", "exchange: per-unit-cost = " << per_unit_cost);
|
||||||
|
|
||||||
|
|
@ -255,7 +255,7 @@ commodity_pool_t::exchange(const amount_t& amount,
|
||||||
exchange(commodity, per_unit_cost, moment ? *moment : CURRENT_TIME());
|
exchange(commodity, per_unit_cost, moment ? *moment : CURRENT_TIME());
|
||||||
|
|
||||||
cost_breakdown_t breakdown;
|
cost_breakdown_t breakdown;
|
||||||
breakdown.final_cost = ! is_per_unit ? cost : cost * amount;
|
breakdown.final_cost = ! is_per_unit ? cost : cost * amount.abs();
|
||||||
|
|
||||||
DEBUG("commodity.prices.add",
|
DEBUG("commodity.prices.add",
|
||||||
"exchange: final-cost = " << breakdown.final_cost);
|
"exchange: final-cost = " << breakdown.final_cost);
|
||||||
|
|
|
||||||
|
|
@ -663,20 +663,26 @@ void instance_t::include_directive(char * line)
|
||||||
{
|
{
|
||||||
path filename;
|
path filename;
|
||||||
|
|
||||||
|
DEBUG("textual.include", "include: " << line);
|
||||||
|
|
||||||
if (line[0] != '/' && line[0] != '\\' && line[0] != '~') {
|
if (line[0] != '/' && line[0] != '\\' && line[0] != '~') {
|
||||||
|
DEBUG("textual.include", "received a relative path");
|
||||||
|
DEBUG("textual.include", "parent file path: " << pathname.string());
|
||||||
string::size_type pos = pathname.string().rfind('/');
|
string::size_type pos = pathname.string().rfind('/');
|
||||||
if (pos == string::npos)
|
if (pos == string::npos)
|
||||||
pos = pathname.string().rfind('\\');
|
pos = pathname.string().rfind('\\');
|
||||||
if (pos != string::npos)
|
if (pos != string::npos) {
|
||||||
filename = path(string(pathname.string(), 0, pos + 1)) / line;
|
filename = path(string(pathname.string(), 0, pos + 1)) / line;
|
||||||
|
DEBUG("textual.include", "normalized path: " << filename.string());
|
||||||
|
} else {
|
||||||
|
filename = path(string(".")) / line;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
filename = line;
|
filename = line;
|
||||||
}
|
}
|
||||||
|
|
||||||
filename = resolve_path(filename);
|
filename = resolve_path(filename);
|
||||||
|
DEBUG("textual.include", "resolved path: " << filename.string());
|
||||||
DEBUG("textual.include", "Line " << linenum << ": " <<
|
|
||||||
"Including path '" << filename << "'");
|
|
||||||
|
|
||||||
if (! exists(filename))
|
if (! exists(filename))
|
||||||
throw_(std::runtime_error,
|
throw_(std::runtime_error,
|
||||||
|
|
@ -1044,6 +1050,9 @@ post_t * instance_t::parse_post(char * line,
|
||||||
*post->cost *= post->amount;
|
*post->cost *= post->amount;
|
||||||
post->cost->set_commodity(cost_commodity);
|
post->cost->set_commodity(cost_commodity);
|
||||||
}
|
}
|
||||||
|
else if (post->amount.sign() < 0) {
|
||||||
|
post->cost->in_place_negate();
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG("textual.parse", "line " << linenum << ": "
|
DEBUG("textual.parse", "line " << linenum << ": "
|
||||||
<< "Total cost is " << *post->cost);
|
<< "Total cost is " << *post->cost);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue