balance-mode
Исправленный и немного “допиленный” пакет balance-mode (версия Jay Belanger) для Emacs.
Изменения:
- Добавлена функция
remove-overlays, присутствующая только в самых новых версиях Emacs - Изменен список типов транзакций
- Выделение красным цветом отрицательного баланса
- Автоматическое вычисление баланса после каждого изменения поля Amount и при добавлении новой транзакции
- Последняя строка (footer) не удаляется.

Установка
Скачайте файл balance.el и положите его в каталог, где Emacs сможет его найти — у меня, например, это ~/lisp, потому что в ~/.emacs я прописал строку (add-to-list 'load-path "~/lisp").
Чтобы все файлы с расширением .bal открывались в Emacs’е сразу в balance-mode, я в ~/.emacs добавил следующий текст:
(setq auto-mode-alist
(append '(("\\.bal$" . balance-mode)) auto-mode-alist))
Использование
Клавиатурные команды для ввода и редактирования транзакций:
SPC— Добавить транзакцию в конец файла.n— Добавить следующую по порядку запись типа check в конец файла.c— Пересчитать баланс для всех записей.C-c C-k— Пересчитать баланс для всех записей в выделенном фрагменте.=— Изменить значение текущего поля.M-x balance-summarize-checks-buffer— Посчитать сумму всех записей типа check.r— Посчитать сумму для всех записей типа check в выделенном фрагменте.+— Изменить тип текущей записи на дебетовый (по умолчанию), кредитовый (помечается “+“) или установленный баланс (помечается “=“).M-x balance-order-latest— Отсортировать последние неподтвержденные транзакции по дате.M-x balance-order-buffer— Отсортировать все транзакции по дате.C-k— Удалить текущую транзакцию.C-y— Вставить последнюю удаленную транзакцию.C-c C-f— Перейти на следующее поле (то же самое, чтоTAB.C-c C-b— Перейти на предыдущее поле (то же самое, чтоS-TAB.
Когда проводка (транзакция) подтверждена банком, она должна быть помечена:
x — Переключить статус подтверждения транзакции.
Когда файл только что открыт, все последовательности подтвержденных чековых транзакций отображаются многоточиями. Нажатие RET на многоточии раскрывает последовательность, любые чековые транзакции могут быть скрыты нажатием RET.
Каждая транзакция занимает одну строку и состоит из следующих полей:
- date — Дата транзакции в формате
DD MMM YYYY. - type — Тип транзакции. Это поле может быть пустым или совпадать с одним из выражений, определенных в
balance-transaction-types. - clear — Статус транзакции (
xдля подтвержденных). - description — Описание транзакции (может быть пустым).
- sign — Знак. Поле может содержать “
+“, “-” или “=“."+"означает кредит (поступление на счет),"-"— дебет (списание со счета), а “="— установку значения баланса (например, начального баланса счета). - amount — Сумма транзакции. Обязательное поле.
- balance — Баланс. Это поле считается автоматически (Клавиша
c).
Изменение суммы любой транзакции и возвращение ей исходного значения приведет к пересчету баланса для всех видимых транзакций.
Транзакции могут быть закомментированы и раскомментированы клавишой ;.
Balance Mode также позволяет посчитать сумму отдельно по чекам. Для выполнения этой операции наберите: M-x balance-summarize-checks-buffer. Эта команда выведет сумму по всем чекам в буфере. Транзакции будут отсортированы по номерам чеков, а разрывы в чековых последовательностях — помечены звездочкой возле них. Дополнительно чеки будут “сбалансированы”. Введите M-x balance-summarize-checks-buffer чтобы посмотреть сводку для буфера.
Можно настроить список типов транзакций, шрифты для отображения различных полей и автоматический пересчет баланса после каждой операции: M-x customize-group RET balance RET.
При входе в balance-mode выполняется последовательность хуков balance-mode-hooks, если они заданы. Для особых извращенцев имеется также balance-mode-abbrev-table.
RSS