home · contact · privacy
To lewdger.py, add in-transaction line mirroring.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 7 Dec 2023 16:14:47 +0000 (17:14 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 7 Dec 2023 16:14:47 +0000 (17:14 +0100)
ledger.py

index cd38b820da6354866cd23d64fb196a3ec9f40952..9ff0d3eaabc723170071ffbb0e3a4726a6a747d0 100755 (executable)
--- a/ledger.py
+++ b/ledger.py
@@ -68,6 +68,7 @@ add_structured_html = """
 <input name="replace_from" />
 <input type="submit" name="replace" value="-> replace ->" />
 <input name="replace_to" />
+<input type="submit" name="add_mirror" value="add mirror" />
 <br />
 <input name="date" value="{{date|e}}" size=9 />
 <input name="description" value="{{desc|e}}" list="descriptions" />
@@ -523,6 +524,14 @@ class LedgerDB(PlomDB):
             ret += [f'  {acc_buffer}  {-final_minus} € ; assume as to earn in year: {acc_buffer} + {12 - months_passed - 1} * this = {year_needed}']
         return ret
 
+    def add_mirror(self, lines):
+        ret = []
+        bookings, _ = parse_lines(lines)
+        booking = bookings[0]
+        for line in booking.lines[1:]:
+            ret += [f'?  {-line[1]} {line[2]}']
+        return ret
+
     def ledger_as_html(self):
         booking_tmpl = jinja2.Template(booking_html)
         single_c_tmpl = jinja2.Template('<span class="comment">{{c|e}}</span><br />')  ##
@@ -725,6 +734,8 @@ class LedgerDB(PlomDB):
         elif 'replace' in postvars.keys():
             for i, line in enumerate(lines):
                 lines[i] = line.replace(postvars['replace_from'][0], postvars['replace_to'][0])
+        elif 'add_mirror' in postvars.keys():
+            lines += self.add_mirror(lines)
         return lines, add_empty_line