From 0f7a154ff4ebe6a1d6b8dfbfcaed03e7af8f98f3 2020-06-18 14:07:10 From: Brett Smith Date: 2020-06-18 14:07:10 Subject: [PATCH] reports: Balance cells try to retain currency on zero balance. --- diff --git a/conservancy_beancount/reports/core.py b/conservancy_beancount/reports/core.py index a55d4479fa6865afc88255ac64e4d7659bf4f9f3..1154b4c9b8f33200012f2ddf8300a5f5e6175760 100644 --- a/conservancy_beancount/reports/core.py +++ b/conservancy_beancount/reports/core.py @@ -923,9 +923,11 @@ class BaseODS(BaseSpreadsheet[RT, ST], metaclass=abc.ABCMeta): return row def balance_cell(self, balance: Balance, **attrs: Any) -> odf.table.TableCell: - if balance.is_zero(): + balance = balance.clean_copy() or balance + balance_currency_count = len(balance) + if balance_currency_count == 0: return self.float_cell(0, **attrs) - elif len(balance) == 1: + elif balance_currency_count == 1: amount = next(iter(balance.values())) attrs['stylename'] = self.merge_styles( attrs.get('stylename'), self.currency_style(amount.currency), diff --git a/tests/test_reports_ledger.py b/tests/test_reports_ledger.py index db65abd5757dd9230e761eb26b43a44064744178..5b2546fb986aa120bcf70927a60e5dda94c7fd5a 100644 --- a/tests/test_reports_ledger.py +++ b/tests/test_reports_ledger.py @@ -128,7 +128,7 @@ class ExpectedPostings(core.RelatedPostings): assert next(cells).value == norm_func(expected.at_cost().number) closing_row = testutil.ODSCell.from_row(next(rows)) assert closing_row[0].value == end_date - assert closing_row[4].text == closing_bal.format(None, empty='0', sep='\0') + assert closing_row[4].text == closing_bal.format(None, empty='$0.00', sep='\0') def get_sheet_names(ods):