From: Christian Heller Date: Sat, 24 Jan 2026 11:32:24 +0000 (+0100) Subject: Improve "sink missing" error display. X-Git-Url: https://plomlompom.com/repos/booking/static/%7B%7Bprefix%7D%7D/%7B%7Bdb.prefix%7D%7D/foo.html?a=commitdiff_plain;h=beb9d81f6e871eb723108df635be3b7d5527fa73;p=ledgplom Improve "sink missing" error display. --- diff --git a/src/ledgplom/ledger.py b/src/ledgplom/ledger.py index 3217582..75e58f9 100644 --- a/src/ledgplom/ledger.py +++ b/src/ledgplom/ledger.py @@ -53,11 +53,6 @@ class _Wealth(): def __sub__(self, other: Self) -> Self: return self._add(other, add=False) - @property - def sink_empty(self) -> bool: - 'Return if all evens out to zero.' - return not bool(self.as_sink.moneys) - @property def as_sink(self) -> '_Wealth': 'Drop zero amounts, invert non-zero ones.' @@ -392,8 +387,10 @@ class _Booking(_LinesBlock[_BookingLine]): diffs += diff if sink_account: self.diffs_targeted[sink_account] += diffs.as_sink - elif not diffs.sink_empty: - self.sink_error = 'needed sink missing' + elif diffs.as_sink.moneys: + self.sink_error = 'needed sink missing for: '\ + + ', '.join(f'{amt} {cur}' + for cur, amt in diffs.as_sink.moneys.items()) @property def diffs_inheriting(self) -> dict[str, _Wealth]: diff --git a/src/tests/full.balance b/src/tests/full.balance index 2ae2b44..4c70e1e 100644 --- a/src/tests/full.balance +++ b/src/tests/full.balance @@ -78,10 +78,10 @@ span.indent {

- prev + prev next | - balance after booking 4 (2001-01-01: test) + balance after booking 5 (2001-01-03: test)

@@ -92,7 +92,7 @@ span.indent {
- + @@ -101,7 +101,7 @@ span.indent {
-9-18 €
- + @@ -118,7 +118,7 @@ span.indent {
-1-2 USD
- + @@ -134,7 +134,7 @@ span.indent {
-10-19 €
- + @@ -150,7 +150,7 @@ span.indent {
-10-19 €
- + @@ -184,7 +184,7 @@ span.indent {
-1-2 USD
- + @@ -193,7 +193,7 @@ span.indent {
2030 €
- + @@ -212,7 +212,7 @@ span.indent {
14 USD
- + @@ -221,7 +221,7 @@ span.indent {
1020 €
- + diff --git a/src/tests/full.balance.4 b/src/tests/full.balance.4 new file mode 100644 index 0000000..c48034a --- /dev/null +++ b/src/tests/full.balance.4 @@ -0,0 +1,239 @@ + + + + + + +

+ prev + next + | + balance after booking 4 (2001-01-03: test) +

+
14 USD
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
-9€
+
+ + + + + + + +
-1USD
+
+
+ bar: +
+ + + + + + + +
-10€
+
+  :x: + bla bla bla
+ + + + + + + +
-10€
+
+   :y +
+ + + + + + + +
-1USD
+
+  :z +
+ + + + + + + +
-10€
+
+ baz +
+
+ + + + + + + + +
20€
+
+ + + + + + + +
1USD
+
+
+ foo: +
+
+ + + + + + + + +
10€
+
+ + + + + + + +
1USD
+
+
+  :x +
+ + diff --git a/src/tests/full.dat b/src/tests/full.dat index 28b6b04..2bb5747 100644 --- a/src/tests/full.dat +++ b/src/tests/full.dat @@ -15,8 +15,14 @@ bar 1 € baz -20 € ; baz -2001-01-01 test +2001-01-03 test foo:x 10 € foo:x 1 USD bar:x:y -10 € bar:z -1 USD + +2001-01-03 test + foo:x 10 € + foo:x 3 USD + bar:x:y -9 € + bar:z -1 USD diff --git a/src/tests/full.edit_raw.4 b/src/tests/full.edit_raw.4 index aaca7c0..c49bb94 100644 --- a/src/tests/full.edit_raw.4 +++ b/src/tests/full.edit_raw.4 @@ -69,7 +69,7 @@ td.direct_target {
prev -next +next @@ -81,14 +81,8 @@ td.direct_target { in ledger
-
- block-wide errors: - date < previous date - – and: -
-
- +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accountbeforediffafter
bar: + + + + + + + + + + + +
-9€
-1USD
+
+ + + + + + + + + + + +
-9€
-1USD
+
+ + + + + + + + + + + +
-18€
-2USD
+
bar:x: + + + + + + + +
-10€
+
+ + + + + + + +
-9€
+
+ + + + + + + +
-19€
+
bar:x:y + + + + + + + +
-10€
+
+ + + + + + + +
-9€
+
+ + + + + + + +
-19€
+
bar:z + + + + + + + +
-1USD
+
+ + + + + + + +
-1USD
+
+ + + + + + + +
-2USD
+
foo: + + + + + + + + + + + +
20€
1USD
+
+ + + + + + + + + + + +
10€
3USD
+
+ + + + + + + + + + + +
30€
4USD
+
foo:x + + + + + + + + + + + +
10€
1USD
+
+ + + + + + + + + + + +
10€
3USD
+
+ + + + + + + + + + + +
20€
4USD
+
+ + diff --git a/src/tests/full.ledger_raw b/src/tests/full.ledger_raw index a679990..9d2d63a 100644 --- a/src/tests/full.ledger_raw +++ b/src/tests/full.ledger_raw @@ -134,10 +134,10 @@ Detected redundant empty lines in gaps, - +
- +
@@ -147,12 +147,33 @@ Detected redundant empty lines in gaps, e] - 2001-01-01 test  + 2001-01-03 test  foo:x 10 €  foo:x 1 USD  bar:x:y -10 €  bar:z -1 USD    + + + + +
+ +
+ + + + [#]
+ [b]
+ [e] + + + 2001-01-03 test  + foo:x 10 €  + foo:x 3 USD  + bar:x:y -9 €  + bar:z -1 USD  +   diff --git a/src/tests/full.ledger_structured b/src/tests/full.ledger_structured index a5ef5c1..457dbbe 100644 --- a/src/tests/full.ledger_structured +++ b/src/tests/full.ledger_structured @@ -200,10 +200,10 @@ Detected redundant empty lines in gaps, - +
- +
@@ -214,7 +214,7 @@ Detected redundant empty lines in gaps, 2001-01-01 test + 2001-01-03 test @@ -244,6 +244,52 @@ Detected redundant empty lines in gaps,   + + + + +
+ +
+ + + + [#]
+ [b]
+ [e] + + + + 2001-01-03 test + + + + 10.00 + € + foo:x + + + + 3.00 + USD + foo:x + + + + -9.00 + € + bar:x:y + + + + -1.00 + USD + bar:z + + + +   +