Skip to content

Commit a268b2b

Browse files
authored
Merge pull request #384 from bcc32/fix-383
Refresh ledger-occur overlays after adding a new transaction while reconciling
2 parents c0143ef + 6c46352 commit a268b2b

File tree

4 files changed

+125
-75
lines changed

4 files changed

+125
-75
lines changed

ledger-reconcile.el

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -302,13 +302,15 @@ Return the number of uncleared xacts found."
302302
(recenter)
303303
(ledger-highlight-xact-under-point)))))
304304

305-
(defun ledger-reconcile-add ()
306-
"Use ledger xact to add a new transaction."
307-
(interactive)
305+
(defun ledger-reconcile-add (date xact)
306+
"Use ledger xact to add a new transaction.
307+
308+
When called interactively, prompt for DATE, then XACT."
309+
(interactive
310+
(list (ledger-read-date "Date: ")
311+
(read-string "Transaction: " nil 'ledger-minibuffer-history)))
308312
(with-current-buffer ledger-buf
309-
(let ((date (ledger-read-date "Date: "))
310-
(text (read-string "Transaction: " nil 'ledger-minibuffer-history)))
311-
(ledger-add-transaction (concat date " " text))))
313+
(ledger-add-transaction (concat date " " xact)))
312314
(ledger-reconcile-refresh))
313315

314316
(defun ledger-reconcile-delete ()
@@ -506,7 +508,6 @@ Return a count of the uncleared transactions."
506508
This is achieved by placing that transaction at the bottom of the main window.
507509
The key to this is to ensure the window is selected when the buffer point is
508510
moved and recentered. If they aren't strange things happen."
509-
510511
(let ((reconcile-window (get-buffer-window (get-buffer ledger-reconcile-buffer-name))))
511512
(when reconcile-window
512513
(fit-window-to-buffer reconcile-window)
@@ -517,6 +518,9 @@ moved and recentered. If they aren't strange things happen."
517518
(recenter))
518519
(select-window reconcile-window)
519520
(ledger-reconcile-visit t))
521+
(with-current-buffer ledger-buf
522+
(when ledger-occur-mode
523+
(ledger-occur-refresh)))
520524
(add-hook 'post-command-hook 'ledger-reconcile-track-xact nil t)))
521525

522526
(defun ledger-reconcile-track-xact ()

test/input/demo.ledger

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
2010/12/01 * Checking balance
2+
Assets:Checking $1,000.00
3+
Equity:Opening Balances
4+
5+
2010/12/20 * Organic Co-op
6+
Expenses:Food:Groceries $ 37.50 ; [=2011/01/01]
7+
Expenses:Food:Groceries $ 37.50 ; [=2011/02/01]
8+
Expenses:Food:Groceries $ 37.50 ; [=2011/03/01]
9+
Expenses:Food:Groceries $ 37.50 ; [=2011/04/01]
10+
Expenses:Food:Groceries $ 37.50 ; [=2011/05/01]
11+
Expenses:Food:Groceries $ 37.50 ; [=2011/06/01]
12+
Assets:Checking $ -225.00
13+
14+
2010/12/28 Acme Mortgage
15+
Liabilities:Mortgage:Principal $ 200.00
16+
Expenses:Interest:Mortgage $ 500.00
17+
Expenses:Escrow $ 300.00
18+
* Assets:Checking $ -1000.00
19+
20+
2011/01/02 Grocery Store
21+
Expenses:Food:Groceries $ 65.00
22+
* Assets:Checking
23+
24+
2011/01/05 Employer
25+
* Assets:Checking $ 2000.00
26+
Income:Salary
27+
28+
2011/01/14 Bank
29+
; Regular monthly savings transfer
30+
Assets:Savings $ 300.00
31+
Assets:Checking
32+
33+
2011/01/19 Grocery Store
34+
Expenses:Food:Groceries $ 44.00 ; hastag: not block
35+
Assets:Checking
36+
37+
2011/01/25 Bank
38+
; Transfer to cover car purchase
39+
Assets:Checking $ 5,500.00
40+
Assets:Savings
41+
; :nobudget:
42+
43+
2011/01/25 Tom's Used Cars
44+
Expenses:Auto $ 5,500.00
45+
; :nobudget:
46+
Assets:Checking
47+
48+
2011/01/27 Book Store
49+
Expenses:Books $20.00
50+
Liabilities:MasterCard
51+
52+
2011/04/25 Tom's Used Cars
53+
Expenses:Auto $ 5,500.00
54+
; :nobudget:
55+
Assets:Checking
56+
57+
2011/04/27 Bookstore
58+
Expenses:Books $20.00
59+
Assets:Checking
60+
61+
2011/12/01 Sale
62+
Assets:Checking $ 30.00
63+
Income:Sales

test/reconcile-test.el

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,50 @@ http://bugs.ledger-cli.org/show_bug.cgi?id=262"
746746
(should (equal '(-0.53 "USD") (ledger-split-commodity-string "-0.53 USD"))))
747747

748748

749+
(ert-deftest ledger-reconcile/test-030 ()
750+
"`ledger-narrow-on-reconcile' basic functionality
751+
752+
Regression test for #383.
753+
https://github.com/ledger/ledger-mode/issues/383"
754+
:tags '(reconcile regress)
755+
756+
(let ((ledger-narrow-on-reconcile t))
757+
(ledger-tests-with-temp-file
758+
demo-ledger
759+
(ledger-reconcile "Expenses:Books" '(0 "$"))
760+
(switch-to-buffer ledger-reconcile-buffer-name)
761+
(with-current-buffer ledger-buf
762+
(should (equal (ledger-test-visible-buffer-string) "
763+
2011/01/27 Book Store
764+
Expenses:Books $20.00
765+
Liabilities:MasterCard
766+
767+
2011/04/27 Bookstore
768+
Expenses:Books $20.00
769+
Assets:Checking
770+
")))
771+
772+
(setq ledger-post-account-alignment-column 2)
773+
(setq ledger-post-amount-alignment-column 45)
774+
(setq ledger-default-date-format "%Y/%m/%d")
775+
;; buffer overlays should be refreshed after adding xact
776+
(ledger-reconcile-add "2011/06/15" "Bookstore")
777+
(with-current-buffer ledger-buf
778+
(should (equal (ledger-test-visible-buffer-string) "
779+
2011/01/27 Book Store
780+
Expenses:Books $20.00
781+
Liabilities:MasterCard
782+
783+
2011/04/27 Bookstore
784+
Expenses:Books $20.00
785+
Assets:Checking
786+
787+
2011/06/15 Bookstore
788+
Expenses:Books $ 20.00
789+
Assets:Checking
790+
"))))))
791+
792+
749793
(provide 'reconcile-test)
750794

751795
;;; reconcile-test.el ends here

test/test-helper.el

Lines changed: 7 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -31,74 +31,13 @@
3131
(require 'cl-lib)
3232
(require 'cus-edit)
3333

34-
(defvar demo-ledger)
35-
36-
;; FIXME instead of setting the string, load the content from file
37-
;; ../test/input/demo.ledger
38-
(setq demo-ledger "2010/12/01 * Checking balance
39-
Assets:Checking $1,000.00
40-
Equity:Opening Balances
41-
42-
2010/12/20 * Organic Co-op
43-
Expenses:Food:Groceries $ 37.50 ; [=2011/01/01]
44-
Expenses:Food:Groceries $ 37.50 ; [=2011/02/01]
45-
Expenses:Food:Groceries $ 37.50 ; [=2011/03/01]
46-
Expenses:Food:Groceries $ 37.50 ; [=2011/04/01]
47-
Expenses:Food:Groceries $ 37.50 ; [=2011/05/01]
48-
Expenses:Food:Groceries $ 37.50 ; [=2011/06/01]
49-
Assets:Checking $ -225.00
50-
51-
2010/12/28 Acme Mortgage
52-
Liabilities:Mortgage:Principal $ 200.00
53-
Expenses:Interest:Mortgage $ 500.00
54-
Expenses:Escrow $ 300.00
55-
* Assets:Checking $ -1000.00
56-
57-
2011/01/02 Grocery Store
58-
Expenses:Food:Groceries $ 65.00
59-
* Assets:Checking
60-
61-
2011/01/05 Employer
62-
* Assets:Checking $ 2000.00
63-
Income:Salary
64-
65-
2011/01/14 Bank
66-
; Regular monthly savings transfer
67-
Assets:Savings $ 300.00
68-
Assets:Checking
69-
70-
2011/01/19 Grocery Store
71-
Expenses:Food:Groceries $ 44.00 ; hastag: not block
72-
Assets:Checking
73-
74-
2011/01/25 Bank
75-
; Transfer to cover car purchase
76-
Assets:Checking $ 5,500.00
77-
Assets:Savings
78-
; :nobudget:
79-
80-
2011/01/25 Tom's Used Cars
81-
Expenses:Auto $ 5,500.00
82-
; :nobudget:
83-
Assets:Checking
84-
85-
2011/01/27 Book Store
86-
Expenses:Books $20.00
87-
Liabilities:MasterCard
88-
89-
2011/04/25 Tom's Used Cars
90-
Expenses:Auto $ 5,500.00
91-
; :nobudget:
92-
Assets:Checking
93-
94-
2011/04/27 Bookstore
95-
Expenses:Books $20.00
96-
Assets:Checking
97-
98-
2011/12/01 Sale
99-
Assets:Checking $ 30.00
100-
Income:Sales
101-
")
34+
(defvar demo-ledger
35+
(with-temp-buffer
36+
(insert-file-contents
37+
(expand-file-name
38+
"input/demo.ledger"
39+
(file-name-directory load-file-name)))
40+
(buffer-string)))
10241

10342

10443
(defun ledger-tests-reset-custom-values (group)

0 commit comments

Comments
 (0)