مقدمه ای بر Beancount.io
این راهنما، بهترین شیوهها را برای حسابداری متن ساده با استفاده از ابزار قدرتمند، متنباز و حسابداری متن ساده Beancount، خلاصه میکند. این راهنما، فلسفه اساسی، دستور زبان (syntax) اولیه تا پیشرفته، مطالعات موردی عملی برای داراییهای پیچیده و استراتژیهای مدیریت دفتر کل بلندمدت را پوشش میدهد.
بخش 1: "چرایی" - مبانی دفترداری هوشمند
قبل از پرداختن به "چگونگی"، درک "چرایی" بسیار مهم است. دفترداری مؤثر، سنگ بنای مدیریت مالی شخصی و یک گام ضروری به سوی وضوح و آزادی مالی است.
فراتر از ردیابی هزینه: مسیری به سوی وضوح مالی
برنامههای ساده ردیابی هزینه به شما میگویند که پول شما کجا رفته است. یک سیستم حسابداری قوی این را و خیلی بیشتر به شما میگوید: این سیستم، یک تصویر کامل از سلامت مالی شما، از جمله ارزش خالص، جریان نقدی و عملکرد سرمایهگذاریهای شما را ارائه میدهد. هدف اصلی مشاهدهپذیری (observability) است—به دست آوردن یک درک روشن و مبتنی بر داده از زندگی مالی خود، که شما را قادر میسازد تا تصمیمات آگاهانه بگیرید، ریسک را ارزیابی کنید و برای اهداف بلندمدت مانند بازنشستگی تلاش کنید.
چرا حسابداری دوطرفه؟ قدرت یک سیستم متوازن
برخلاف دفترداری یکطرفه (یک لیست ساده از هزینهها)، روش حسابداری دوطرفه هر تراکنش را به عنوان جریان ارزش بین حداقل دو حساب ثبت م یکند. اصل اساسی آن، معادله اساسی حسابداری است:
این سیستم تضمین میکند که دفاتر شما همیشه متوازن هستند و به طور چشمگیری خطاها را کاهش میدهد. این سیستم، با تولید گزارشهای ضروری مانند ترازنامه (آنچه دارید و بدهکارید) و صورت سود و زیان (آنچه به دست آوردهاید و خرج کردهاید)، یک تصویر مالی کامل ارائه میدهد.
بخش 2: شروع به کار با Beancount
Beancount یک ابزار قدرتمند مبتنی بر پایتون برای حسابداری متن ساده است.
اولین نگاه شما با Fava در Beancount.io
Beancount.io یک محیط قدرتمند فراهم می کند که موتور Beancount را با یک اپلیکیشن موبایل (iOS, Android) و اپلیکیشن وب - Fava، یک رابط مبتنی بر وب فوق العاده برای تجسم دفتر کل شما، ترکیب می کند. نیازی به نصب نیست. وقتی از این پلتفرم استفاده میکنید، مستقیماً با یک ویرایشگر متن برای فایل دفتر کل خود (به عنوان مثال، main.bean) تعامل دارید و میبینید که گزارشهای تولید شده توسط Fava در زمان واقعی بهروزرسانی میشوند.
Fava متن ساده ای را که می نویسید می گیرد و آن را به نمودارهای تعاملی، صورت های مالی و لیست های تراکنش قابل فیلتر تبدیل می کند و نمای واضحی از گزارش های مالی خود به شما می دهد.
پنج نوع حساب اصلی
Beancount از پنج نوع حساب سطح بالا استفاده میکند که ساختار دفتر کل شما را تشکیل میدهند:
| نوع حساب | شرح | مانده معمول |
|---|---|---|
داراییها (Assets) | آنچه که شما دارید (وجه نقد، حسابهای بانکی، سرمایهگذاریها، ملک). | مثبت |
بدهیها (Liabilities) | آنچه که شما بدهکارید (بدهی کارت اعتباری، وامها، رهن). | منفی |
درآمد (Income) | منبع ورود پول (حقوق، پاداش، بهره). | منفی |
هزینهها (Expenses) | محل خروج پول (غذا، اجاره، سفر، مالیات). | مثبت |
حقوق صاحبان سهام (Equity) | ارزش خالص شما؛ برای ماندههای اولیه استفاده میشود. | منفی |
معادله Beancount
Beancount نسخه خود از معادله حسابداری را اعمال میکند که در آن مجموع تمام ثبتها در کل دفتر کل شما برابر با صفر است:
به همین دلیل است که طبق قرارداد، حسابهای درآمد (Income)، بدهیها (Liabilities) و حقوق صاحبان سهام (Equity) مقادیر منفی دارند—آنها منابع وجوهی هستند که داراییها (Assets) و هزینههای (Expenses) شما را افزایش میدهند.
بخش 3: زبان Beancount - دستور زبان اصلی
همه ورودیها در Beancount دستورالعملهایی هستند که با یک تاریخ شروع میشوند.
تعریف حسابها (open) و کالاها
قبل از اینکه بتوانید از یک حساب استفاده کنید، باید آن را با دستورالعمل open اعلام کنید. همچنین میتوانید به صورت اختیاری ارزها یا "کالاها"یی را که در آن نگهداری میشوند، مشخص کنید.
; YYYY-MM-DD open Account:Name [Commodity1, Commodity2, ...]
2020-01-01 open Assets:Bank:US:Chase:Checking USD
2020-01-01 open Liabilities:CreditCard:US:Discover USD
2020-01-01 open Expenses:Food:Groceries
2020-01-01 open Income:Salary:Google
کالاها میتوانند ارزهای دنیای واقعی باشند (به عنوان مثال، USD، JPY) یا هر واحد سفارشی که تعریف میکنید، مانند مایلهای پرواز (MILES_UA) یا نمادهای سهام (HOOL).
ثبت اولین تراکنش خود (*)
تراکنشها رایجترین ورودی هستند. آنها با یک تاریخ، یک علامت (* برای یک تراکنش کامل یا ! برای یک تراکنش ناقص)، یک پرداختکننده اختیاری و یک شرح شروع میشوند. هر خطی که در ادامه میآید (با دو فاصله تورفتگی دارد) یک "ثبت" در یک حساب است.
; YYYY-MM-DD * "Payee" "Description"
; Account1 Amount Commodity
; Account2 -Amount Commodity
2024-07-28 * "Trader Joe's" "خواربار هفتگی"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover -125.50 USD
برای راحتی، اگر یک تراکنش فقط دو ثبت دارد، میتوانید مقدار را در خط دوم حذف کنید و Beancount آن را به طور خودکار محاسبه میکند.
2024-07-28 * "Trader Joe's" "خواربار هفتگی"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover
تراز کردن در سطح تراکنش: مهمتر از آن برای استفاده روزمره، هر تراکنش جداگانه نیز باید متوازن باشد—مجموع تمام ثبتها در یک تراکنش واحد باید برابر با صفر باشد. اگر یک تراکنش متوازن نباشد، Beancount یک خطا مانند این نشان میدهد:

مدیریت تراکنشهای چند ارزی (@ و @@)
Beancount در حسابداری چند ارزی عالی است.
- از
@برای مشخص کردن قیمت تبدیل به ازای هر واحد استفاده کنید. - از
@@برای مشخص کردن کل هزینه تبدیل استفاده کنید.
; خرید بلیط هواپیما به EUR با کارت USD
2024-08-01 * "Lufthansa" "پرواز به برلین"
Expenses:Travel:Flights 500.00 EUR @@ 545.00 USD ; 500 EUR برای من در مجموع 545 USD هزینه داشت
Liabilities:CreditCard:US:Discover -545.00 USD
بخش 4: اطمینان از صحت - هنر تطبیق
یک عمل کلیدی برای حفظ یک دفتر کل دقیق، تطبیق منظم است. این شامل مقایسه ماندهها در دفتر کل Beancount شما با صورتحسابهای رسمی از مؤسسات مالی شما است.
خودکارسازی بررسیها با ادعاهای مانده (balance)
دستورالعمل balance ابزار اصلی شما برای بررسیهای خودکار است. شما ادعا میکنید که در یک تاریخ معین، یک حساب دارای یک مانده خاص بوده است. اگر مانده محاسبه شده آن با ادعای شما مطابقت نداشته باشد، Beancount یک خطا ایجاد میکند. این برای یافتن سریع خطاها بسیار ارزشمند است.
توجه: ادعای مانده، وضعیت حساب را در ابتدای روز مشخص شده (قبل از هر تراکنش در آن روز) بررسی میکند.
; از صورت حساب ماهانه کارت اعتباری شما
2024-08-01 balance Liabilities:CreditCard:US:Discover -1432.78 USD
پیوند دادن اسناد پشتیبان (document)
میتوانید به فایلهای خارجی مانند صورتحسابهای بانکی یا رسیدها پیوند دهید و یک مسیر قابل ممیزی ایجاد کنید. Fava این پیوندها را قابل کلیک میکند.
2024-08-01 document Liabilities:CreditCard:US:Discover "statements/discover-2024-07.pdf"
اصلاح خطاها و مقداردهی اولیه ماندهها
هنگامی که دفتر کل خود را شروع میکنید یا یک مغایرت پیدا میکنید که نمیتوانید آن را ردیابی کنید، باید یک تعدیل انجام دهید. روش استاندارد استفاده از یک حساب حقوق صاحبان سهام (Equity) ویژه است.
; مقداردهی اولیه یک حساب نقدی هنگام شروع دفتر کل شما
2020-01-01 * "مانده اولیه" "تنظیم حساب نقدی"
Assets:Cash:Wallet 200.00 USD
Equity:Opening-Balances -200.00 USD
حساب Equity:Opening-Balances مبالغی را نگه میدارد که از منابع ناشناخته یا خارجی وارد دفتر کل شما میشوند.
برای رفع سریع جایی که مغایرت دقیق مهم نیست، دستورالعمل pad میتواند به طور خودکار مانده یک حساب را تنظیم کند تا با یک ادعای balance بعدی مطابقت داشته باشد و تفاوت را به یک حساب حقوق صاحبان سهام ثبت کند. این را با احتیاط استفاده کنید، زیرا میتواند مشکلات بزرگتری را پنهان کند. تعدیلات صریح به طور کلی ایمنتر هستند.
بخش 5: الگوهای تراکنش پیشرفته و واقع بینانه
ردیابی بدهیها: مدیریت حسابهای دریافتنی و پرداختنی
حسابداری دوطرفه برای ردیابی پولی که به شما بدهکارند (Assets:Receivables) یا شما بدهکار هستید (Liabilities:Payable) عالی است.
مثال: شما هزینه یک شام گروهی 90 دلاری را پرداخت میکنید و دوستتان باب بابت سهم 45 دلاریاش به شما بدهکار است.
-
هزینه اولیه و حساب دریافتنی را ثبت کنید:
2024-08-05 * "Dinner Place" "شام با باب"
Expenses:Food:Restaurant 45.00 USD ; سهم شما
Assets:Receivables:Bob 45.00 USD ; باب به شما بدهکار است
Assets:Bank:US:Chase:Checking -90.00 USD -
وقتی باب پول شما را پس میدهد:
2024-08-06 * "Bob" "پول شام را پس داد"
Assets:Bank:US:Chase:Checking 45.00 USD
Assets:Receivables:Bob -45.00 USD
حساب Assets:Receivables:Bob اکنون صفر است و دفاتر شما کاملاً متوازن هستند.
داراییها در مقابل هزینهها: خرید خودرو و استهلاک
یک خرید بزرگ مانند یک خودرو یک هزینه ساده نیست. این خرید یک دارایی است که با گذشت زمان ارزش خود را از دست میدهد (استهلاک).
-
خرید را به عنوان یک دارایی ثبت کنید:
2023-01-15 * "Toyota Dealer" "خرید یک خودروی جدید"
Assets:Car:ToyotaCamry 30000.00 USD
Assets:Bank:US:Chase:Checking -30000.00 USD -
استهلاک سالانه را ثبت کنید: فرض کنید تخمین میزنید که خودرو هر سال 3000 دلار از ارزش خود را از دست میدهد. در پایان سال، این را به عنوان یک هزینه ثبت میکنید.
2023-12-31 * "استهلاک" "استهلاک سالانه ارزش خودرو"
Expenses:Depreciation:Car 3000.00 USD
Assets:Car:ToyotaCamry -3000.00 USD
پس از این ورودی، حساب Assets:Car:ToyotaCamry شما به درستی ارزش جدید خودرو (27000 دلار) را منعکس میکند و شما به درستی هزینه استفاده را به عنوان یک هزینه برای آن سال محاسبه کردهاید.