Merge commit 'dd6185a12091045831fc3e0a0c36217e44762333' into next
This commit is contained in:
commit
17a267e101
6 changed files with 64 additions and 35 deletions
|
|
@ -194,8 +194,10 @@ outside world. This process is called reconciliation (@pxref{Basics of
|
||||||
Reconciliation}) and can be quite onerous. Ledger-mode attempts to make
|
Reconciliation}) and can be quite onerous. Ledger-mode attempts to make
|
||||||
it as painless as possible.
|
it as painless as possible.
|
||||||
|
|
||||||
In the @file{demo.ledger} buffer type @kbd{C-c C-r}. Emacs will prompt
|
In the @file{demo.ledger} buffer type @kbd{C-c C-r}. If cursor is on an
|
||||||
for an account to reconcile in the Minibuffer. Enter @samp{Checking}.
|
account, Ledger-mode will propose this account, or in the Minibuffer,
|
||||||
|
will prompt for an account to reconcile. Hit @kbd{RET} if you are happy
|
||||||
|
with proposed account, or enter @samp{Checking} as example.
|
||||||
Emacs will then prompt for a target value. The target value is the
|
Emacs will then prompt for a target value. The target value is the
|
||||||
amount you want the cleared transactions in the buffer to total.
|
amount you want the cleared transactions in the buffer to total.
|
||||||
Normally this would be the ending value from your bank statement, or the
|
Normally this would be the ending value from your bank statement, or the
|
||||||
|
|
@ -383,13 +385,15 @@ transaction.
|
||||||
|
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@kindex C-c C-e
|
|
||||||
@kindex C-c C-c
|
@kindex C-c C-c
|
||||||
|
@kindex C-c C-e
|
||||||
|
|
||||||
Clearing complete transactions is done by typing @kbd{C-c C-e} with
|
Typing @kbd{C-c C-c}, depending where is the point, will clear the
|
||||||
point in a transaction. This places an asterisk @samp{*} after the
|
complete transaction, or an individual posting. This places an asterisk
|
||||||
date. Clearing individual postings is done by typing @kbd{C-c C-c}
|
@samp{*} prior to the payee for the complete transaction, or prior to
|
||||||
while in a posting. This places an asterisk prior to the posting.
|
the account for an individual posting. When point is inside
|
||||||
|
a transaction, specifically on an individual posting, you can still
|
||||||
|
clear the complete transaction by typing @kbd{C-c C-e}.
|
||||||
|
|
||||||
@node Formatting Transactions, Deleting Transactions, Marking Transactions, The Ledger Buffer
|
@node Formatting Transactions, Deleting Transactions, Marking Transactions, The Ledger Buffer
|
||||||
@section Formatting Transactions
|
@section Formatting Transactions
|
||||||
|
|
@ -550,17 +554,25 @@ about. You can get this from a monthly statement, or from checking your
|
||||||
on-line transaction history. It also helps immensely to know the final
|
on-line transaction history. It also helps immensely to know the final
|
||||||
cleared balance you are aiming for.
|
cleared balance you are aiming for.
|
||||||
|
|
||||||
Use menu @samp{Reconcile Account} or keyboard shortcut @kbd{C-c C-r} and enter the account
|
Use menu @samp{Reconcile Account} or keyboard shortcut @kbd{C-c C-r} to
|
||||||
you wish to reconcile in the Minibuffer. Ledger-mode is not particular
|
start reconciliation.
|
||||||
about what you enter for the account. You can leave it blank and
|
|
||||||
@file{*Reconcile*} buffer will show you @emph{all} uncleared
|
If cursor is on an account, Ledger-mode will propose this account, or in
|
||||||
transactions. After you enter the account enter the target amount.
|
the Minibuffer, will prompt for an account to reconcile. Hit @kbd{RET}
|
||||||
Ledger expects you to enter an amount with a commodity. It assumes
|
if you are happy with proposed account, or enter @samp{Checking} as
|
||||||
initially that you are using @samp{$} (USD) as your default commodity.
|
example. Ledger-mode is not particular about what you enter for the
|
||||||
If you are working in a different currency you can change the default in
|
account. You can leave it blank and @file{*Reconcile*} buffer will show
|
||||||
variable @option{ledger-reconcile-default-commodity} to whatever you
|
you @emph{all} uncleared transactions.
|
||||||
need. If you work in multiple commodities simply enter the commoditized
|
|
||||||
amount (for example @samp{340 VSDX}, for 340 shares of VSDX).
|
After you enter the account enter the target amount. It is helpful to
|
||||||
|
enter an amount with a commodity. You can also leave it blank, you will
|
||||||
|
be able to clear transactions but not benefit from balance calculations.
|
||||||
|
It assumes initially that you are using @samp{$} (USD) as your default
|
||||||
|
commodity. If you are working in a different currency you can change
|
||||||
|
the default in variable @option{ledger-reconcile-default-commodity} to
|
||||||
|
whatever you need. If you work in multiple commodities simply enter the
|
||||||
|
commoditized amount (for example @samp{340 VSDX}, for 340 shares of
|
||||||
|
VSDX).
|
||||||
|
|
||||||
Ledger-mode reconcile cannot currently reconcile accounts that have
|
Ledger-mode reconcile cannot currently reconcile accounts that have
|
||||||
multiple commodities, such as brokerage accounts. You may use
|
multiple commodities, such as brokerage accounts. You may use
|
||||||
|
|
@ -596,11 +608,17 @@ mark the transaction if appropriate.
|
||||||
@node Finalize Reconciliation, Adding and Deleting Transactions during Reconciliation, Edit Transactions During Reconciliation, The Reconcile Buffer
|
@node Finalize Reconciliation, Adding and Deleting Transactions during Reconciliation, Edit Transactions During Reconciliation, The Reconcile Buffer
|
||||||
@section Finalize Reconciliation
|
@section Finalize Reconciliation
|
||||||
@cindex reconciliation, finalizing
|
@cindex reconciliation, finalizing
|
||||||
|
@kindex C-c C-c
|
||||||
|
@kindex q
|
||||||
|
|
||||||
Once you have marked all transactions as pending and the cleared balance
|
Once you have marked all transactions as pending and the cleared balance
|
||||||
is correct. Finish the reconciliation by typing @kbd{C-c C-c}. This
|
is correct. Finish the reconciliation by typing @kbd{C-c C-c}. This
|
||||||
marks all pending transactions as cleared and saves the ledger buffer.
|
marks all pending transactions as cleared and saves the ledger buffer.
|
||||||
|
|
||||||
|
Type @kbd{q} to close out the reconciliation buffer. If variable
|
||||||
|
@var{ledger-reconcile-finish-force-quit} is set, the reconciliation
|
||||||
|
buffer will be killed automatically after @kbd{C-c C-c}.
|
||||||
|
|
||||||
@node Adding and Deleting Transactions during Reconciliation, Changing Reconciliation Account, Finalize Reconciliation, The Reconcile Buffer
|
@node Adding and Deleting Transactions during Reconciliation, Changing Reconciliation Account, Finalize Reconciliation, The Reconcile Buffer
|
||||||
@section Adding and Deleting Transactions during Reconciliation
|
@section Adding and Deleting Transactions during Reconciliation
|
||||||
@kindex a
|
@kindex a
|
||||||
|
|
@ -866,7 +884,7 @@ recurrence relation to be specified. The day names are two character
|
||||||
codes that default to Mo, Tu, We, Th, Fr, Sa, Su, for Monday, Tuesday,
|
codes that default to Mo, Tu, We, Th, Fr, Sa, Su, for Monday, Tuesday,
|
||||||
Wednesday, Thursday, Friday, Saturday, Sunday respectively. You can
|
Wednesday, Thursday, Friday, Saturday, Sunday respectively. You can
|
||||||
change the codes to something more convenient for your locale by
|
change the codes to something more convenient for your locale by
|
||||||
customizing the ledger @var{ledger-schedule-week-days}. They must be two
|
customizing the ledger @option{ledger-schedule-week-days}. They must be two
|
||||||
characters long.
|
characters long.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -951,7 +969,7 @@ false toggle between uncleared and cleared @samp{*}.
|
||||||
|
|
||||||
@item ledger-reconcile-default-date-format
|
@item ledger-reconcile-default-date-format
|
||||||
Date format for the reconcile buffer. Defaults to
|
Date format for the reconcile buffer. Defaults to
|
||||||
ledger-default-date-format.
|
@option{ledger-default-date-format}.
|
||||||
|
|
||||||
@item ledger-reconcile-target-prompt-string
|
@item ledger-reconcile-target-prompt-string
|
||||||
Prompt for recon target. Defaults to "Target amount for reconciliation ".
|
Prompt for recon target. Defaults to "Target amount for reconciliation ".
|
||||||
|
|
@ -964,11 +982,11 @@ header will be displayed. Defaults to "Reconciling account %s\n\n".
|
||||||
@item ledger-reconcile-buffer-line-format
|
@item ledger-reconcile-buffer-line-format
|
||||||
Format string for the ledger reconcile posting format. Available fields
|
Format string for the ledger reconcile posting format. Available fields
|
||||||
are date, status, code, payee, account, amount. The format for each
|
are date, status, code, payee, account, amount. The format for each
|
||||||
field is %WIDTH(FIELD), WIDTH can be preced by a minus sign which mean
|
field is %WIDTH(FIELD), WIDTH can be preceded by a minus sign which mean
|
||||||
to left justify and pad the field. WIDTH is the minimum number of
|
to left justify and pad the field. WIDTH is the minimum number of
|
||||||
characters to display; if string is longer, it is not truncated unless
|
characters to display; if string is longer, it is not truncated unless
|
||||||
ledger-reconcile-buffer-payee-max-chars or
|
@option{ledger-reconcile-buffer-payee-max-chars} or
|
||||||
ledger-reconcile-buffer-account-max-chars is defined. Defaults to
|
@option{ledger-reconcile-buffer-account-max-chars} is defined. Defaults to
|
||||||
"%(date)s %-4(code)s %-50(payee)s %-30(account)s %15(amount)s\n"
|
"%(date)s %-4(code)s %-50(payee)s %-30(account)s %15(amount)s\n"
|
||||||
|
|
||||||
@item ledger-reconcile-buffer-payee-max-chars
|
@item ledger-reconcile-buffer-payee-max-chars
|
||||||
|
|
@ -986,6 +1004,9 @@ ledger file order. Defaults to '(0)'.
|
||||||
If t, prompt for effective date when clearing transactions during
|
If t, prompt for effective date when clearing transactions during
|
||||||
reconciliation.
|
reconciliation.
|
||||||
|
|
||||||
|
@item ledger-reconcile-finish-force-quit nil
|
||||||
|
If t, will force closing reconcile window after @kbd{C-c C-c}.
|
||||||
|
|
||||||
@end ftable
|
@end ftable
|
||||||
|
|
||||||
@node Ledger Report Customization Group, Ledger Faces Customization Group, Ledger Reconcile Customization Group, Customization Variables
|
@node Ledger Report Customization Group, Ledger Faces Customization Group, Ledger Reconcile Customization Group, Customization Variables
|
||||||
|
|
|
||||||
|
|
@ -32,9 +32,9 @@
|
||||||
;; `ledger-single-line-config' macro to form the regex and list of
|
;; `ledger-single-line-config' macro to form the regex and list of
|
||||||
;; elements
|
;; elements
|
||||||
(defconst ledger-indent-string "\\(^[ \t]+\\)")
|
(defconst ledger-indent-string "\\(^[ \t]+\\)")
|
||||||
(defconst ledger-status-string "\\([*! ]?\\)")
|
(defconst ledger-status-string "\\(* \\|! \\)?")
|
||||||
(defconst ledger-account-string "[\\[(]?\\(.*?\\)[])]?")
|
(defconst ledger-account-string "[\\[(]?\\(.*?\\)[])]?")
|
||||||
(defconst ledger-separator-string "\\s-\\s-")
|
(defconst ledger-separator-string "\\s-\\s-+")
|
||||||
(defconst ledger-amount-string "\\(-?[0-9]+[\\.,][0-9]*\\)")
|
(defconst ledger-amount-string "\\(-?[0-9]+[\\.,][0-9]*\\)")
|
||||||
(defconst ledger-comment-string "[ \t]*;[ \t]*\\(.*?\\)")
|
(defconst ledger-comment-string "[ \t]*;[ \t]*\\(.*?\\)")
|
||||||
(defconst ledger-nil-string "\\([ \t]\\)")
|
(defconst ledger-nil-string "\\([ \t]\\)")
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,11 @@ Possible values are '(date)', '(amount)', '(payee)' or '(0)' for no sorting, i.e
|
||||||
:type 'boolean
|
:type 'boolean
|
||||||
:group 'ledger-reconcile)
|
:group 'ledger-reconcile)
|
||||||
|
|
||||||
|
(defcustom ledger-reconcile-finish-force-quit nil
|
||||||
|
"If t, will force closing reconcile window after \\[ledger-reconcile-finish]."
|
||||||
|
:type 'boolean
|
||||||
|
:group 'ledger-reconcile)
|
||||||
|
|
||||||
;; s-functions below are copied from Magnars' s.el
|
;; s-functions below are copied from Magnars' s.el
|
||||||
;; prefix ledger-reconcile- is added to not conflict with s.el
|
;; prefix ledger-reconcile- is added to not conflict with s.el
|
||||||
(defun ledger-reconcile-s-pad-left (len padding s)
|
(defun ledger-reconcile-s-pad-left (len padding s)
|
||||||
|
|
@ -314,7 +319,7 @@ Return the number of uncleared xacts found."
|
||||||
(defun ledger-reconcile-finish ()
|
(defun ledger-reconcile-finish ()
|
||||||
"Mark all pending posting or transactions as cleared.
|
"Mark all pending posting or transactions as cleared.
|
||||||
Depends on ledger-reconcile-clear-whole-transactions, save the buffers
|
Depends on ledger-reconcile-clear-whole-transactions, save the buffers
|
||||||
and exit reconcile mode"
|
and exit reconcile mode if `ledger-reconcile-finish-force-quit'"
|
||||||
(interactive)
|
(interactive)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
|
|
@ -327,7 +332,8 @@ and exit reconcile mode"
|
||||||
(ledger-toggle-current 'cleared))))
|
(ledger-toggle-current 'cleared))))
|
||||||
(forward-line 1)))
|
(forward-line 1)))
|
||||||
(ledger-reconcile-save)
|
(ledger-reconcile-save)
|
||||||
(ledger-reconcile-quit))
|
(when ledger-reconcile-finish-force-quit
|
||||||
|
(ledger-reconcile-quit)))
|
||||||
|
|
||||||
|
|
||||||
(defun ledger-reconcile-quit ()
|
(defun ledger-reconcile-quit ()
|
||||||
|
|
|
||||||
|
|
@ -291,7 +291,7 @@ void report_accounts::flush()
|
||||||
|
|
||||||
void report_accounts::operator()(post_t& post)
|
void report_accounts::operator()(post_t& post)
|
||||||
{
|
{
|
||||||
std::map<account_t *, std::size_t>::iterator i = accounts.find(post.account);
|
accounts_report_map::iterator i = accounts.find(post.account);
|
||||||
if (i == accounts.end())
|
if (i == accounts.end())
|
||||||
accounts.insert(accounts_pair(post.account, 1));
|
accounts.insert(accounts_pair(post.account, 1));
|
||||||
else
|
else
|
||||||
|
|
@ -362,7 +362,7 @@ void report_commodities::operator()(post_t& post)
|
||||||
amount_t temp(post.amount.strip_annotations(report.what_to_keep()));
|
amount_t temp(post.amount.strip_annotations(report.what_to_keep()));
|
||||||
commodity_t& comm(temp.commodity());
|
commodity_t& comm(temp.commodity());
|
||||||
|
|
||||||
std::map<commodity_t *, std::size_t>::iterator i = commodities.find(&comm);
|
commodities_report_map::iterator i = commodities.find(&comm);
|
||||||
if (i == commodities.end())
|
if (i == commodities.end())
|
||||||
commodities.insert(commodities_pair(&comm, 1));
|
commodities.insert(commodities_pair(&comm, 1));
|
||||||
else
|
else
|
||||||
|
|
@ -371,7 +371,7 @@ void report_commodities::operator()(post_t& post)
|
||||||
if (comm.has_annotation()) {
|
if (comm.has_annotation()) {
|
||||||
annotated_commodity_t& ann_comm(as_annotated_commodity(comm));
|
annotated_commodity_t& ann_comm(as_annotated_commodity(comm));
|
||||||
if (ann_comm.details.price) {
|
if (ann_comm.details.price) {
|
||||||
std::map<commodity_t *, std::size_t>::iterator ii =
|
commodities_report_map::iterator ii =
|
||||||
commodities.find(&ann_comm.details.price->commodity());
|
commodities.find(&ann_comm.details.price->commodity());
|
||||||
if (ii == commodities.end())
|
if (ii == commodities.end())
|
||||||
commodities.insert
|
commodities.insert
|
||||||
|
|
|
||||||
10
src/output.h
10
src/output.h
|
|
@ -142,9 +142,10 @@ class report_accounts : public item_handler<post_t>
|
||||||
protected:
|
protected:
|
||||||
report_t& report;
|
report_t& report;
|
||||||
|
|
||||||
std::map<account_t *, std::size_t, account_compare> accounts;
|
|
||||||
|
|
||||||
typedef std::map<account_t *, std::size_t>::value_type accounts_pair;
|
typedef std::map<account_t *, std::size_t>::value_type accounts_pair;
|
||||||
|
typedef std::map<account_t *, std::size_t, account_compare> accounts_report_map;
|
||||||
|
|
||||||
|
accounts_report_map accounts;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
report_accounts(report_t& _report) : report(_report) {
|
report_accounts(report_t& _report) : report(_report) {
|
||||||
|
|
@ -221,9 +222,10 @@ class report_commodities : public item_handler<post_t>
|
||||||
protected:
|
protected:
|
||||||
report_t& report;
|
report_t& report;
|
||||||
|
|
||||||
std::map<commodity_t *, std::size_t, commodity_compare> commodities;
|
|
||||||
|
|
||||||
typedef std::map<commodity_t *, std::size_t>::value_type commodities_pair;
|
typedef std::map<commodity_t *, std::size_t>::value_type commodities_pair;
|
||||||
|
typedef std::map<commodity_t *, std::size_t, commodity_compare> commodities_report_map;
|
||||||
|
|
||||||
|
commodities_report_map commodities;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
report_commodities(report_t& _report) : report(_report) {
|
report_commodities(report_t& _report) : report(_report) {
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ class CheckBaselineTests (CheckOptions):
|
||||||
'help',
|
'help',
|
||||||
'import',
|
'import',
|
||||||
'no-color',
|
'no-color',
|
||||||
'no-pager'
|
'no-pager',
|
||||||
'options',
|
'options',
|
||||||
'price-exp',
|
'price-exp',
|
||||||
'revalued-total',
|
'revalued-total',
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue