Скриптови Работни Процеси с Beancount и Fava
Beancount (инструмент за счетоводство в обикновен текст със двойно записване) и Fava (неговият уеб интерфейс) са изключително разширяеми и могат да бъдат управлявани чрез скриптове. Техният дизайн позволява да автоматизирате финансови задачи, да генерирате персонализирани отчети и да настройвате сигнали чрез писане на Python скриптове. По думите на един потребител: “Много ми харесва, че данните ми са в толкова удобен формат и че мога да автоматизирам нещата до насита. Няма API като файл на вашия диск; лесно е да се интегрира с него.” Това ръководство ще ви преведе през създаването на скриптови работни процеси – от лесна за начинаещи автоматизация до разширени Fava плъгини.
Първи стъпки: Изпълнение на Beancount като Python скрип т
Преди да се задълбочите в конкретни задачи, уверете се, че имате инсталиран Beancount (например чрез pip install beancount). Тъй като Beancount е написан на Python, можете да го използвате като библиотека във вашите собствени скриптове. Общият подход е:
-
Заредете вашата Beancount счетоводна книга: Използвайте зареждащото устройство на Beancount, за да анализирате
.beancountфайла в Python обекти. Например:from beancount import loader
entries, errors, options_map = loader.load_file("myledger.beancount")
if errors:
print("Errors:", errors)Това ви дава списък с
entries(транзакции, салда и т.н.) иoptions_mapс метаданни. Всички ваши сметки, транзакции и салда вече са достъпни в кода. -
Използвайте Beancount Query Language (BQL): Вместо ръчно итериране, можете да изпълнявате SQL-подобни заявки върху данните. Например, за да получите общите разходи по месеци, можете да използвате API за заявки:
from beancount.query import query
q = query.Query(entries, options_map)
result = q.query("SELECT month, sum(position) WHERE account ~ 'Expenses' GROUP BY month")
print(result)Това използва Query системата на Beancount за агрегиране на данни. (Всъщност, това е подобно на това, което прави командата
bean-query, но тук я използвате в скрипт.) Всъщност, авторът на Beancount отбелязва, че можете да заредите файла и да извикатеrun_query()директно чрез Python API, избягвайки необходимостта да извиквате външни команди в цикъл. -
Настройте структура на проекта: Организирайте вашите скриптове заедно с вашата счетоводна книга. Общо оформление е да имате директории за импортери (за извличане/анализиране на външни данни), отчети или заявки (за скриптове за анализ) и документи (за съхранение на изтеглени извлечения). Например, един потребител поддържа:
importers/– персонализирани Python скриптове за импортиране (с тестове),queries/– скриптове за генериране на отчети (изпълними чрезpython3 queries/...),documents/– и зтеглени банкови CSV/PDF файлове, организирани по сметка.
С тази настройка можете да изпълнявате скриптове ръчно (например python3 queries/cash_flow.py) или да ги планирате (чрез cron или task runner), за да автоматизирате вашия работен процес.
Автоматизиране на Задачи за Съгласуване
Съгласуване означава да се уверите, че вашата счетоводна книга съвпада с външни записи (банкови извлечения, отчети за кредитни карти и т.н.). Обикновеният текстов формат на Beancount и Python API правят възможно автоматизирането на голяма част от този процес.