پرش به محتوای اصلی

نحو زبان Beancount

این بخش یک مرجع مختصر و در عین حال جامع برای نحو زبان Beancount ارائه می‌دهد که ساختار عملی، قوانین و مثال‌ها را با هم ترکیب می‌کند. برای اطلاعات بیشتر، به برگ تقلب مراجعه کنید.

مرور کلی

Beancount یک سیستم حسابداری دوطرفه با متن ساده است. زبان آن حول سه بلوک اصلی ساختاری بنا شده است:

  • کالاها (ارزها، سهام، امتیازات و غیره)
  • حساب‌ها (دفاتری سلسله مراتبی و دسته‌بندی شده)
  • دستورات (ورودی‌های تاریخ‌دار که رویدادها یا پیکربندی را ثبت می‌کنند)

کالاها

کالاها همیشه با حروف بزرگ نوشته می‌شوند، مثلاً USD, EUR, AAPL, BTC, MILES, HOURS.

حساب‌ها

حساب‌ها نام‌های سلسله مراتبی هستند که با دونقطه جدا شده و با حروف بزرگ نوشته می‌شوند. آن‌ها باید با یکی از پنج نوع حساب اصلی شروع شوند:

نامنوعمحتویات معمولمثال
Assets+نقد، بانک، سرمایه‌گذاری‌هاAssets:Checking
Liabilities-کارت‌های اعتباری، وام‌هاLiabilities:CreditCard
Income-حقوق، بهرهIncome:EmployerA
Expenses+خریدها، صورتحساب‌هاExpenses:Food:Dining
Equity-مانده‌های افتتاحیه/اختتامیهEquity:Opening-Balances
  • اجزا باید با حروف بزرگ نوشته شوند و با دونقطه (:) از هم جدا شوند و هیچ فاصله‌ای نداشته باشند.
  • اعداد و خط تیره در اجزا مجاز هستند.
  • نام‌های حساب اصلی را می‌توان از طریق گزینه‌ها سفارشی کرد (به زیر مراجعه کنید).

دستورات

دستورات، هسته اصلی عبارات در یک فایل Beancount هستند. بیشتر آن‌ها با یک تاریخ شروع می‌شوند، و به دنبال آن نوع دستور و آرگومان‌ها می‌آیند. آن‌ها به ترتیب زمانی (بر اساس تاریخ) پردازش می‌شوند، نه ترتیب فایل.

فرمت کلی:

YYYY-MM-DD <دستور> <آرگومان‌ها...>

دستورات رایج و مثال‌ها

باز کردن و بستن حساب‌ها

2023-01-01 open Assets:Checking USD,EUR  ; به صورت اختیاری ارزهای مجاز را مشخص کنید
2023-12-31 close Assets:Checking

اعلام کالاها

2020-07-22 commodity AAPL
name: "Apple Inc."

اعلام قیمت‌ها

2022-04-30 price AAPL 150.00 USD

یادداشت‌ها و اسناد

2022-03-20 note Assets:Checking "در مورد بازپرداخت سؤال شد"
2022-03-20 document Assets:Checking "statements/2022-03.pdf"

تراکنش‌ها

2024-01-05 * "Coffee Shop" "قهوه صبح"
Expenses:Food 4.50 USD
Assets:Cash -4.50 USD

2024-01-06 ! "Phone Bill" "پرداخت ماهانه" #utilities ^phone
id: "INV12345" ; فراداده
Expenses:Utilities 60.00 USD
Assets:Checking

ویژگی‌های ارسال

; با مبنای هزینه
Assets:Stocks 1 AAPL {150.00 USD}
; با حاشیه‌نویسی قیمت
Assets:Cash -100 USD @ 1.25 CAD
; با قیمت کل
Assets:Cash -100 USD @@ 125.00 CAD
; مانده ضمنی
Assets:Cash -100 USD
Assets:Bank

ادعاهای مانده و پدینگ

2024-06-01 balance Assets:Checking 1000.00 USD
2024-06-01 pad Assets:Checking Equity:Opening-Balances

رویدادها

2024-06-01 event "location" "San Francisco, CA"

گزینه‌ها

پیکربندی سراسری فایل را تنظیم کنید:

option "title" "دفتر من"
option "operating_currency" "USD"
option "documents" "docs/"
option "name_assets" "Vermoegen"

برای اطلاعات بیشتر به مرجع گزینه‌ها مراجعه کنید.

پلاگین‌ها و سازماندهی فایل

plugin "beancount.plugins.module_name"
plugin "beancount.plugins.module_name" "config-string"
include "other/file.beancount"
pushtag #project
; ...
poptag #project

قوانین مهم

  • همه تراکنش‌ها باید متعادل باشند (مجموع همه ارسال‌ها صفر است؛ در صورت وجود از مبنای هزینه استفاده می‌شود).
  • حساب‌ها باید قبل از استفاده باز شوند؛ حساب‌های بسته شده نمی‌توانند ارسال‌ها را بپذیرند.
  • ادعاهای مانده فقط ارز مشخص شده را بررسی می‌کنند و می‌توانند در حساب‌های والد استفاده شوند.
  • حاشیه‌نویسی‌های قیمت (@) اطلاعاتی هستند و بر تعادل تأثیر نمی‌گذارند.

الگوهای رایج

باز کردن حساب‌ها با مانده اولیه

2024-01-01 open Assets:Checking USD
2024-01-01 pad Assets:Checking Equity:Opening-Balances
2024-01-01 balance Assets:Checking 1000.00 USD

تراکنش سرمایه‌گذاری

2024-01-01 * "خرید سهام"
Assets:Broker:Stock 10 AAPL {150.00 USD}
Assets:Broker:Cash -1500.00 USD

تراکنش چند ارزی

2024-01-01 * "تبدیل ارز"
Assets:USD -100.00 USD @ 1.25 CAD
Assets:CAD 125.00 CAD

نظرات

poptag  #trip-to-peru
; نظرات درون خطی با یک نقطه ویرگول شروع می شوند
* هر خطی که با یک دستور معتبر شروع نشود نیز بی سر و صدا نادیده گرفته می شود