fix: money strings always carry cents
money() printed whatever scale a Decimal happened to have, so an empty
sum came back as "0" while every other amount read "207.68". Amounts now
have at least two places ("0.00", "1000.00"), padded and never rounded:
an exact FX-converted amount with more places keeps them. Negative zero
normalizes to "0.00".
Test: money_always_has_cents_and_never_rounds; three stdio assertions
that pinned the old "0" now expect "0.00".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MtYEaR6M6Ybdhm6X98BWNu
This commit is contained in:
2 files changed
+28
-4
No files matched your search
@@ -201,7 +201,7 @@ fn mcp_end_to_end_over_stdio() {
|
||||
.iter()
|
||||
.find(|l| l["code"] == "6000")
|
||||
.unwrap();
|
||||
assert_eq!(rent_line["balance_before"], "0");
|
||||
assert_eq!(rent_line["balance_before"], "0.00");
|
||||
assert_eq!(rent_line["balance_after"], "100.00");
|
||||
|
||||
// Confirmed post without a receipt is rejected: >$25, no receipt.
|
||||
@@ -275,7 +275,7 @@ fn mcp_end_to_end_over_stdio() {
|
||||
assert_eq!(rev["status"], "posted");
|
||||
let tb2 = mcp.call("books.trial_balance", json!({}));
|
||||
assert_eq!(tb2["balanced"], true);
|
||||
assert_eq!(tb2["total_debits"], "0");
|
||||
assert_eq!(tb2["total_debits"], "0.00");
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -381,7 +381,7 @@ fn mcp_assets_end_to_end_over_stdio() {
|
||||
assert_eq!(preview["status"], "preview");
|
||||
assert_eq!(preview["book_value"], "58451.61");
|
||||
assert_eq!(preview["gain_loss"], "1548.39");
|
||||
assert_eq!(preview["final_depreciation"], "0");
|
||||
assert_eq!(preview["final_depreciation"], "0.00");
|
||||
assert_eq!(preview["receipt_required"], true);
|
||||
|
||||
// Confirmed without the bill of sale: rejected.
|
||||
|
||||
Reference in new issue
Block a user