این مرجع مختصر و در عین حال جامعی برای نحو زبان 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 <directive> <arguments...>دستورهای رایج و مثالها
افتتاح و بستن حسابها
2023-01-01 open Assets:Checking USD,EUR ; Optionally specify allowed currencies
2023-12-31 close Assets:Checkingاعلام کالاها
2020-07-22 commodity AAPL
name: "Apple Inc."اعلام قیمت
2022-04-30 price AAPL 150.00 USDبرای نقلقولهای ارزشگذاری خودکار در یک دفتر کل میزبانیشده، قیمتهای زنده را تنظیم کنید. فیدهای مدیریتشده دستورالعملهای عادی price تاریخدار را فراهم میکنند. آنها جایگزین قیمتهای تراکنش (@، @@) یا هزینههای دسته ({}) نمیشوند.
یادداشتها و اسناد
2022-03-20 note Assets:Checking "Asked about refund"
2022-03-20 document Assets:Checking "statements/2022-03.pdf"تراکنشها
2024-01-05 * "Coffee Shop" "Morning coffee"
Expenses:Food 4.50 USD
Assets:Cash -4.50 USD
2024-01-06 ! "Phone Bill" "Monthly payment" #utilities ^phone
id: "INV12345" ; Metadata
Expenses:Utilities 60.00 USD
Assets:Checkingویژگیهای ثبت
; With cost basis
Assets:Stocks 1 AAPL {150.00 USD}
; With price annotation
Assets:Cash -100 USD @ 1.25 CAD
; With total price
Assets:Cash -100 USD @@ 125.00 CAD
; Implicit balance
Assets:Cash -100 USD
Assets:Bankتأیید موجودی و پر کردن
pad باید تاریخش قبل از balanceای باشد که تغذیه میکند، زیرا تأیید در ابتدای روز آن بررسی میشود:
2024-06-01 pad Assets:Checking Equity:Opening-Balances
2024-06-02 balance Assets:Checking 1000.00 USDرویدادها
2024-06-01 event "location" "San Francisco, CA"گزینهها
تنظیمات سراسری فایل را تعیین کنید:
option "title" "My Ledger"
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 #projectBeancount.io میزبانیشده همچنین شامل URLهای قیمت مدیریتشده پشتیبانیشده را حل میکند. این یک افزونه به Beancount اصلی است: برای سازگاری میزبانیشده و محلی از راهنمای تنظیم قیمتهای زنده استفاده کنید.
قوانین مهم
- همه تراکنشها باید متوازن باشند: وزن همه ثبتها به صفر میرسد. وزن یک ثبت، مبلغ آن است، یا هزینه (
{}) یا قیمت (@) آن که در صورت وجود، به ارز دیگر تبدیل شده است. - حسابها باید قبل از استفاده باز شوند؛ حسابهای بسته نمیتوانند ثبت بپذیرند.
- تأییدهای مانده فقط ارز مشخصشده را بررسی میکنند، میتوانند روی حسابهای والد استفاده شوند، و در ابتدای تاریخ خود ارزیابی میشوند (بنابراین تراکنشهای همان روز را حذف میکنند).
- حاشیهنویسیهای قیمت (
@به ازای هر واحد،@@کل) بر توازن تأثیر میگذارند: آنها وزن ثبت را در ارز دیگر تعیین میکنند.-100 USD @ 1.25 CADوزن125 CADدارد و یک ثبت125 CADرا جبران میکند؛ قیمت را حذف کنید و تراکنش دیگر متوازن نیست.
الگوهای رایج
افتتاح حسابها با موجودی اولیه
هر دو حساب را باز کنید، pad را در تاریخ شروع قرار دهید، و مانده را روز بعد تأیید کنید (تأیید در ابتدای تاریخ خود بررسی میشود):
2024-01-01 open Assets:Checking USD
2024-01-01 open Equity:Opening-Balances
2024-01-01 pad Assets:Checking Equity:Opening-Balances
2024-01-02 balance Assets:Checking 1000.00 USDتراکنش سرمایهگذاری
2024-01-01 * "Buy stock"
Assets:Broker:Stock 10 AAPL {150.00 USD}
Assets:Broker:Cash -1500.00 USDتراکنش چندارزی
2024-01-01 * "Currency exchange"
Assets:USD -100.00 USD @ 1.25 CAD
Assets:CAD 125.00 CADنظرات
poptag #trip-to-peru
; inline comments begin with a semi-colon
* any line not starting with a valid directive is also ignored silently