Планирование финансов через командную стоку в ledger

Перевод статьи Program your Finances: Command-line Accounting | Автор: Pete Keen (спасибо!)

Примечание. Больше информации о бухгалтерской книге ledger доступно на сайте ledger-cli.org, включая ссылку на документацию и прочие полезные сведения

Около трех лет назад у меня были некоторые серьезные финансовые проблемы. Я только-только начал свою первую работу, выйдя из колледжа, ради которого я проехал по всей стране, я имел начальную загрузку почти на всю мою жизнь. Это означало: покупка мебели, покупка автомобиля, экипировка кухни и проч. Каждые две недели я хотел бы получать депозит зарплаты, и в течение двух недель он будет почти полностью уйдет из моего текущего счета. Я отклонил чек на аренду или даже два. После второго раза я поклялся, что больше это не повторится и начал отслеживать каждую копейку с помощью программы под названием ledger. Это было сделано задним числом – именно то, что мне нужно было, чтобы войти в нужное русло. На самом деле, увидев деньги, движущиеся по счетам, я изменил свое поведение. В то время, Mint не было, но я не думаю, что это помогло бы почти в такой же степени. Принуждение себя, на самом деле, было ключом к изменению собственного поведения.

ledger - едва ли не самая скучная, строгая программа для учета, которую только можно придумать. В ней нет графики, нет онлайн взаимодействие, нет графического интерфейса. Это, в основном, командная строка, калькулятор с большим количеством специализаций, которые делают его идеальным для отслеживания финансов. ledger идеально подходит для тех, кто ведет учет доходов и расходов в текстовом редакторе. Здесь имеется также очень легкий язык сценариев, очень богатый язык запросов, который позволяет получить на данные, которые вы хотите, с минимумом суеты.

Основная идея заключается в том, что вы записываете все ваши финансовые операции в текстовый файл с помощью простого в освоении синтаксиса, а затем запускаете команду ledger, чтобы сгенерировать отчеты. Вот упрощенная выдержка из моей бухгалтерской книги ledger:

2010/05/20 * Opening Balances
  Assets:Checking                          $500.00
  Liabilities:Amex                         $-10.00
  Equity

2010/05/21 * Salary
  Assets:Checking                        $1,000.00
  Expenses:Taxes:Federal                   $250.00
  Expenses:Taxes:State                     $100.00
  Expenses:Taxes:Social Security            $80.00
  Expenses:Insurance:Medical                $20.00
  Expenses:Insurance:Dental                  $2.00
  Income:Salary                         $-1,452.00

2010/05/21 Rent
  Expenses:Rent                            $600.00
  Assets:Checking

2010/05/21 Pacific Power
  Expenses:Utils:Electric                   $61.75
  Assets:Checking

2010/05/21 * AT&T Wireless
  Expenses:Cell Phone                       $88.46
  Assets:Checking

2010/05/22 NW Natural
  Expenses:Utils:Gas                        $20.31
  Assets:Checking

2010/05/22 Pizzicato
  Expenses:Food:Lunch                        $7.90
  Assets:Checking

2010/05/23 Comcast
  Expenses:Cable                            $60.00
  Liabilities:Amex

Это, на самом деле полный файл ledger (вы можете скачать его здесь), который иллюстрирует несколько ключевых моментов. Во-первых, ledger – система бухгалтерского учета двойной записи. Каждая запись имеет по крайней мере один «из» и по меньшей мере один «в».

  • Первая линия – куда деньги идут, и это положительная сумма
  • вторая линия – откуда деньги поступают.

Если вы опустите цифры одной из линий, ledger автоматически заполнит их и сделать баланс входа. Если у вас есть фоновый учет, вы можете думать с точки зрения дебета и кредита, но ledger не заставляет это делать. Во-вторых, учетные записи имеют иерархические имена, которые мы можем видеть так:

$ ledger -f ledger.sample.txt -s bal
     $721.58  Assets:Checking
    $-490.00  Equity
   $1,290.42  Expenses
      $60.00    Cable
      $88.46    Cell Phone
       $7.90    Food:Lunch
      $22.00    Insurance
       $2.00      Dental
      $20.00      Medical
     $600.00    Rent
     $430.00    Taxes
     $250.00      Federal
      $80.00      Social Security
     $100.00      State
      $82.06    Utils
      $61.75      Electric
      $20.31      Gas
  $-1,452.00  Income:Salary
     $-70.00  Liabilities:Amex

Такое расположение счетов помогает поддерживать некоторые здравомыслие, когда имеем дело с большим количеством счетов, и это cходится с основным уравнением учета: активы = обязательства + долевые + (доходы - расходы). Вы заметите, что счета просто появляются, когда вы используете их, вроде переменных в Perl, без использования strict;. Это и благословение, и проклятие, потому что иногда это не очевидно, пока вы не запустите отчеты, и они выглядят смешно. Риск испортить смягчается, если вы используете Emacs в комплекте основного режима ledger.el, который устанавливает автодополнения для вас.

Снова используя пример файла, мы можем запустить более подробные отчеты. Например, вот регистр чековой книжки:

$ ledger -f ~/Documents/blog/static/ledger.sample.txt -r reg checking
2010/05/20 Opening Balances     Liabilities:Amex             $10.00       $10.00
                                Equity                      $490.00      $500.00
2010/05/21 Salary               Expenses:Taxes:Federal     $-250.00      $250.00
                                Expenses:Taxes:State       $-100.00      $150.00
                                Ex:Ta:Social Security       $-80.00       $70.00
                                Ex:Insurance:Medical        $-20.00       $50.00
                                Ex:Insurance:Dental          $-2.00       $48.00
                                Income:Salary             $1,452.00    $1,500.00
2010/05/21 Rent                 Expenses:Rent              $-600.00      $900.00
2010/05/21 Pacific Power        Ex:Utils:Electric           $-61.75      $838.25
2010/05/21 AT&T Wireless        Expenses:Cell Phone         $-88.46      $749.79
2010/05/22 NW Natural           Expenses:Utils:Gas          $-20.31      $729.48
2010/05/22 Pizzicato            Expenses:Food:Lunch          $-7.90      $721.58

Леджер будет сокращать имена учетных записей по мере необходимости при печати, чтобы все уместилось в 80 колонок. Если у вас есть более широкий терминал, можно передать опцию -w, чтобы подогнать его к 132 столбцам.

Сила книги действительно находится в фокусе, когда у вас имеется больше данных. Один из самых интересных докладов дает мне представление о том, как я делаю месяц к месяцу, показав, насколько мои активы изменились (отрицательные числа лучше, в данном случае): ledger -MAn reg расходы обязательств , The-M – опция группы сделок по месяцам, -А покажет текущее среднее во втором столбце. По умолчанию будет показываться текущая сумма. -n cгруппирует все сделки вместе, вместо того, чтобы показывать один итог для каждой учетной записи.

$ ledger -f ~/Documents/blog/static/ledger.sample.txt -MAn reg income expenses
2010/05/01 - 2010/05/23        <Total>;                    $-161.58     $-161.58

В любом из этих примеров вы можете изменить формат вывода, чтобы удовлетворить ваши потребности. Есть много вариантов, которые подробно описаны в мануале, но вот один пример. У меня есть маленькая программа в каталоге bin под названием transpose, которая принимает разделенные данных по трем столбцам. В первой колонке строки, второй столбец – собственно столбец, третье – значение, которое нужно вставить в эту ячейку. Мы можем попросить ledger вывести, например, основной отчет о расходах, отформатированный для transpose, например:

$ ledger -f ~/Documents/blog/static/ledger.sample.txt -F '%A|%D|%t\n' -M reg income expenses
Expenses:Cable|2010/05/01|$60.00
Expenses:Cell Phone|2010/05/01|$88.46
Expenses:Food:Lunch|2010/05/01|$7.90
Expenses:Insurance:Dental|2010/05/01|$2.00
Expenses:Insurance:Medical|2010/05/01|$20.00
Expenses:Rent|2010/05/01|$600.00
Expenses:Taxes:Federal|2010/05/01|$250.00
Expenses:Taxes:Social Security|2010/05/01|$80.00
Expenses:Taxes:State|2010/05/01|$100.00
Expenses:Utils:Electric|2010/05/01|$61.75
Expenses:Utils:Gas|2010/05/01|$20.31
Income:Salary|2010/05/01|$-1,452.00

С большим количеством данных, это позволяет легко сравнить месяц к другим месяцем, когда вы тратите деньги.

Если вы хотите вытащить свою финансовую жизнь вместе, но не хотите тратить деньги на что-то вроде Quicken или доверяете Mint с учетными данными, я настоятельно рекомендую вам попробовать ledger в дополнение к другим решениям с открытым исходным кодом, таким как GnuCash.