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

10 پست با برچسب "Double-Entry"

مشاهده تمام برچسب‌ها

درک ثبت‌های روزنامه‌ای در Beancount

· زمان مطالعه 8 دقیقه
Mike Thrift
Mike Thrift
Marketing Manager

ثبت‌های روزنامه‌ای ستون فقرات حسابداری دوطرفه هستند و در Beancount، هر تراکنش * که می‌نویسید یک ثبت روزنامه‌ای است. این راهنما اصول اساسی—بدهکار و بستانکار، ثبت‌های تعدیل‌کننده و معکوس‌کننده—را توضیح می‌دهد و نشان می‌دهد چگونه به‌صورت تمیز به سینتکس متنی ساده Beancount می‌نقشند. شما یاد می‌گیرید چگونه با حداقل مراسم کتاب‌های دقیق داشته باشید.


2025-09-02-journal-entries-in-beancount

مرور سریع: ثبت روزنامه‌ای چیست؟

ثبت روزنامه‌ای رکورد رسمی و تاریخ‌دار یک معامله مالی است. این رکورد با بدهکار و بستانکار بیان می‌شود که معادله بنیادی حسابداری را متعادل نگه می‌دارند:

Assets=Liabilities+EquityAssets = Liabilities + Equity

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


بدهکار و بستانکار در یک دقیقه

مفهوم بدهکار و بستانکار در ابتدا می‌تواند گیج‌کننده باشد، اما به چند قانون ساده خلاصه می‌شود. این‌گونه فکر کنید: «ارزش از کجا آمد؟» (بستانکار) و «ارزش به کجا رفت؟» (بدهکار).

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

نوع حسابافزایش با
دارایی‌هابدهکار
هزینه‌هابدهکار
بدهی‌هابستانکار
حقوق مالکانهبستانکار
درآمدبستانکار

شکل یک ثبت روزنامه‌ای در Beancount

Beancount از دستورات متنی ساده و قابل خواندن برای انسان استفاده می‌کند تا تراکنش‌ها را ثبت کند. هر تراکنش باید برای هر کالا (مثلاً USD، EUR، سهام AAPL) به صفر متعادل شود. اگر این‌طور نباشد، Beancount خطا می‌دهد.

در اینجا یک تراکنش پایه برای خرید قهوه آورده شده است:

2025-09-10 * "Coffee Bar" "Team coffee"
Expenses:Food:Coffee 18.00 USD
Assets:Bank:Checking -18.00 USD

دقت کنید که دو پست (خط‌های حساب) به صفر می‌رسند: $18.00 + (-$18.00) = 0.

شما می‌توانید با استفاده از برچسب‌ها (مانند #clientX) برای فیلتر کردن و لینک‌ها (مانند ^INV-2025-001) برای ارتباط بین ورودی‌های مرتبط، زمینه قدرتمندی را مستقیماً در روایت اضافه کنید.

به عنوان مثال، این‌جا نحوه لینک‌کردن یک فاکتور به پرداخت آن را می‌بینید:

; ابتدا فاکتور ارسالی به مشتری را ثبت می‌کنیم
2025-09-15 * "Acme Corp" "Invoice 2025-001 #clientX ^INV-2025-001"
Assets:AccountsReceivable 1000.00 USD
Income:Consulting -1000.00 USD

; سپس پرداخت را ثبت می‌کنیم و به فاکتور اصلی لینک می‌کنیم
2025-09-28 * "Acme Corp" "Payment on ^INV-2025-001"
Assets:Bank:Checking 1000.00 USD
Assets:AccountsReceivable -1000.00 USD

برچسب #clientX به شما امکان می‌دهد به‌راحتی تمام تراکنش‌های این مشتری را فیلتر کنید و لینک ^INV-2025-001 ارتباطی بین دو ورودی ایجاد می‌کند که می‌توانید در گزارش‌ها دنبال کنید.


ثبت‌های روزنامه‌ای رایج (آماده برای کپی)

در ادامه چند تراکنش تجاری رایج به فرمت Beancount آورده شده است.

سرمایه‌گذاری نقدی توسط مالک

یک مالک برای راه‌اندازی کسب‌وکار، وجوه شخصی خود را سرمایه‌گذاری می‌کند.

2025-01-01 * "Owner" "Initial capital contribution"
Assets:Bank:Checking 10000.00 USD
Equity:Owner-Capital -10000.00 USD

فروش نقدی با مالیات فروش

یک مشتری به‌صورت نقدی محصولی می‌خرد که شامل ۸٪ مالیات فروش است که بعداً باید به دولت پرداخت شود.

2025-01-05 * "Walk-in Customer" "Cash sale with 8% tax"
Assets:Cash 108.00 USD
Income:Sales -100.00 USD
Liabilities:Tax:Sales -8.00 USD

فروش اعتباری (فاکتور) و دریافت پرداخت

شما خدمتی ارائه می‌دهید و برای مشتری فاکتور می‌گیرید، سپس بعداً پرداخت را دریافت می‌کنید.

2025-01-10 * "Acme Corp" "Consulting invoice ^INV-2025-002"
Assets:AccountsReceivable 2500.00 USD
Income:Consulting -2500.00 USD

2025-01-30 * "Acme Corp" "Payment on ^INV-2025-002"
Assets:Bank:Checking 2500.00 USD
Assets:AccountsReceivable -2500.00 USD

هزینه با کارت اعتباری

شما لوازم اداری را با کارت اعتباری شرکت خریداری می‌کنید.

2025-01-12 * "OfficeMax" "Supplies on credit card"
Expenses:Office:Supplies 75.00 USD
Liabilities:CreditCard -75.00 USD

حقوق (مدل ساده)

شما حقوق کارکنان را پردازش می‌کنید و هزینه کل حقوق، کسورات مالیاتی کارمند و پرداخت خالص از حساب بانکی را ثبت می‌کنید.

2025-01-31 * "Payroll" "January wages and withholdings"
Expenses:Payroll:Wages 2000.00 USD
Liabilities:Taxes:Withheld -400.00 USD
Assets:Bank:Checking -1600.00 USD

استهلاک ماهانه

هزینه استهلاک ماهانه یک دارایی، مانند لپ‌تاپ، را ثبت می‌کنید.

2025-01-31 * "Depreciation" "Laptop, straight-line"
Expenses:Depreciation 100.00 USD
Assets:Equipment:AccumDepr -100.00 USD

هزینه پیش‌پرداخت و استهلاک ماهانه

شما برای یک سال بیمه به‌صورت پیش‌پرداخت هزینه می‌کنید، سپس هزینه یک ماه را به‌عنوان هزینه شناسایی می‌کنید.

; 1. پرداخت حق بیمه سالانه
2025-01-01 * "InsureCo" "Annual insurance premium"
Assets:Prepaid:Insurance 1200.00 USD
Assets:Bank:Checking -1200.00 USD

; 2. شناسایی یک ماه هزینه در پایان ژانویه
2025-01-31 * "InsureCo" "Amortize 1/12 of insurance"
Expenses:Insurance 100.00 USD
Assets:Prepaid:Insurance -100.00 USD

درآمد نامعین و شناسایی ماهانه

یک مشتری برای اشتراک ۳ ماهه پیش‌پرداخت می‌کند. شما نقدینگی را ثبت می‌کنید و سپس یک ماه درآمد را شناسایی می‌کنید.

; 1. پیش‌پرداخت مشتری برای سرویس
2025-02-01 * "Subscriber" "3-month plan prepaid"
Assets:Bank:Checking 300.00 USD
Liabilities:Unearned:Subs -300.00 USD

; 2. شناسایی یک ماه درآمد پس از ارائه سرویس
2025-02-28 * "Recognition" "Recognize month 1 of 3"
Liabilities:Unearned:Subs 100.00 USD
Income:Subscriptions -100.00 USD

ذخیره‌سازی بدهی مشکوک و حذف بدهی

شما برای فاکتورهای احتمالی غیرقابل وصول یک ذخیره ایجاد می‌کنید و سپس یک فاکتور معین را حذف می‌کنید.

; 1. ایجاد ذخیره بر پایه ۲٪ از حساب‌های دریافتنی
2025-03-31 * "Provision" "2% of A/R for doubtful accounts"
Expenses:BadDebt 200.00 USD
Assets:AllowanceForDoubtful -200.00 USD

; 2. حذف فاکتور معینی که می‌دانید پرداخت نخواهد شد
2025-04-15 * "Write-off" "Customer XYZ invoice"
Assets:AllowanceForDoubtful 150.00 USD
Assets:AccountsReceivable -150.00 USD

موجودی دوره‌ای و تنظیم هزینه کالای فروخته‌شده (COGS)

در پایان دوره، هزینه کالای فروخته‌شده را با تنظیم حساب موجودی محاسبه می‌کنید.

2025-03-31 * "COGS adjustment" "Periodic inventory method"
Expenses:COGS 4500.00 USD
Assets:Inventory -4500.00 USD

ثبت‌های تعدیل‌کننده در مقابل ثبت‌های معکوس‌کننده

ثبت‌های تعدیل‌کننده در پایان یک دوره حسابداری (مثلاً ماه یا سه‌ماهه) ثبت می‌شوند تا درآمدها و هزینه‌ها به دوره‌ای که واقعاً کسب یا صرف شده‌اند، منطبق شوند. این شامل تعهدات، تعویق‌ها و برآوردهایی مانند استهلاک می‌شود.

ثبت‌های معکوس‌کننده ورودی‌های اختیاری هستند که در اولین روز دوره جدید انجام می‌شوند و دقیقاً یک ثبت تعدیل‌کننده خاص از دوره قبلی را معکوس می‌کنند. هدف آن ساده‌سازی کتابداری است. با معکوس کردن یک تعهد، می‌توانید تراکنش نقدی بعدی را به‌صورت استاندارد ثبت کنید بدون این‌که به یاد داشته باشید آن را مقابل حساب بدهی قرار دهید.

مثال: تعهد هزینه‌های خدمات عمومی و معکوس آن

فرض کنید باید هزینه خدمات عمومی ژانویه را ثبت کنید، اما صورتحساب تا فوریه دریافت نمی‌شود.

; 1. تخمین هزینه در پایان ژانویه
2025-01-31 * "Accrual" "Estimate January utilities expense"
Expenses:Utilities 500.00 USD
Liabilities:Accrued:Utilities -500.00 USD

; 2. (اختیاری) معکوس کردن تعهد در اولین روز دوره بعدی
2025-02-01 * "Reversal" "Undo January utilities accrual"
Liabilities:Accrued:Utilities 500.00 USD
Expenses:Utilities -500.00 USD

; 3. ثبت پرداخت واقعی وقتی که در فوریه می‌رسد
; صورتحساب واقعی 520 دلار است. به‌دلیل معکوس‌سازی می‌توانید
; کل مبلغ را به حساب هزینه بزنید بدون مشکل.
; هزینه خالص فوریه برابر است با 520 - 500 = 20 دلار.
2025-02-10 * "City Utilities" "Payment for January bill"
Expenses:Utilities 520.00 USD
Assets:Bank:Checking -520.00 USD

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


چک‌لیست برای هر ثبت روزنامه‌ای در Beancount

این مراحل را دنبال کنید تا ورودی‌های شما تمیز و صحیح باشند:

  1. با تاریخ (YYYY-MM-DD) و یک پرچم تراکنش (*) شروع کنید.
  2. یک طرف حساب و یک شرح توصیفی اضافه کنید. از #برچسب‌ها و ^لینک‌ها برای جستجوپذیری استفاده کنید.
  3. حداقل دو خط پست داشته باشید که برای هر کالا به صفر متعادل شوند.
  4. از نام‌های حساب صحیح تحت پنج نوع استفاده کنید: Assets, Liabilities, Equity, Income, Expenses.
  5. به‌صورت اختیاری، متادیتا مانند document: "invoices/INV-2025-001.pdf" برای ردیابی اضافه کنید.

اشتباهات رایج (و نحوه کمک Beancount)

  • پست‌های نامتعادل: اگر بدهکارها و بستانکارها به صفر نرسند، Beancount ورود را رد می‌کند. این ویژگی اصلی است که از خطاها جلوگیری می‌کند. حتی می‌توانید یک مقدار را خالی بگذارید و Beancount به‌صورت خودکار آن را محاسبه می‌کند.
  • علامت نادرست روی حساب: به‌راحتی می‌توانید فراموش کنید که Income، Equity و Liabilities با بستانکار (که معمولاً در Beancount عدد منفی است) افزایش می‌یابند. اگر اشتباه کنید، گزارش‌هایتان عجیب به‌نظر می‌رسند، اما قانون تعادل همچنان یک شبکه امنیتی فراهم می‌کند.
  • عدم وجود لینک بین ورودی‌ها: فراموش کردن لینک فاکتور به پرداخت آن، ردیابی مانده‌ها را دشوار می‌کند. استفاده مداوم از ^لینک‌ها این مشکل را با ایجاد ردپای قابل حسابرسی حل می‌کند.

مسیرهای بعدی

  • زبان Beancount و قوانین تعادل: به مستندات رسمی عمیق‌تر بپردازید.
  • برگه تقلب سینتکس: مرجع مفیدی برای تمام دستورات Beancount.
  • مقدمه‌ای بر بدهکار/بستانکار: نقطه شروع عالی اگر با قوانین حسابداری تازه‌کار هستید.
  • ثبت‌های تعدیل‌کننده/معکوس‌کننده: مقالات دقیق‌تر درباره نظریه حسابداری.

پیوست: نقشهٔ اصطلاحات حسابداری → Beancount

این راهنمای ترجمه سریع می‌تواند به شما کمک کند تا دستورات حسابداری را به سینتکس Beancount تبدیل کنید.

دستور حسابداریعمل Beancount
بدهکار کردن یک هزینهمقدار مثبت به حساب Expenses:
بستانکار کردن یک بدهیمقدار منفی به حساب Liabilities:
تعهد درآمدAssets:AccountsReceivable +
Income:* -
تعویق درآمدAssets:Bank:* +
Liabilities:Unearned:* -
شناسایی درآمد تعویق‌خوردهLiabilities:Unearned:* +
Income:* -

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

ثبت مالیات‌ها در Beancount (روش عملی)

· زمان مطالعه 8 دقیقه
Mike Thrift
Mike Thrift
Marketing Manager

مالیات‌ها می‌توانند مانند موجودی خاص و پیچیده‌ای در دنیای مالی شخصی احساس شوند. اما اگر این‌گونه نبودند چه می‌شد؟ اگر می‌توانستید آنها را همانند هر جریان پول دیگری در دفتر حساب خود رفتار کنید چه می‌شد؟ خبر خوب این است: می‌توانید. با در نظر گرفتن مالیات‌ها به‌عنوان حرکات ساده ارزش، دفتر Beancount شما تمیز، آسان برای پرس‌وجو و—مهم‌ترین نکته—قابل درک خواهد بود.

در ادامه یک الگوی عملی، بدون حاشیه که می‌توانید در یک فایل Beancount شخصی یا کسب‌وکار کوچک بگنجانید، آورده شده است. این یک سیستم ساده برای مدیریت حقوق، پرداخت‌های مالیاتی و حتی آن بازپرداخت‌های مزاحمی است که به سال جدید می‌رسند. ما حساب‌های اساسی مورد نیاز را مرور می‌کنیم، مثال‌های واقعی را قدم‌به‑قدم می‌زنیم و دقیقاً پرس‌و‌جوهایی را که برای دریافت پاسخ‌ها نیاز دارید نشان می‌دهیم.

2025-08-25-recording-taxes-in-beancount


اصول اصلی

قبل از اینکه به کد بپردازیم، چند قانون ساده را بپذیریم. این اصول کارها را منطقی نگه می‌دارند و از سردردهای آینده جلوگیری می‌کنند.

  • «چه» را از «چه‌وقت» که پول حرکت می‌کند جدا کنید. 🗓️
    این مهم‌ترین مفهوم است. هزینه مالیاتی به سالی تعلق دارد که درآمد را کسب کرده‌اید (مثلاً ۲۰۲۴)، حتی اگر صورتحساب را در آوریل ۲۰۲۵ به IRS پرداخت کنید. اگر زمان هزینه را از زمان پرداخت نقدی جدا نکنید، گزارش‌های سال به‌سال شما به‌هم ریخته و گمراه‌کننده می‌شوند.

  • سلسله مراتب حساب‌های خود را ساده و کسل‌کننده نگه دارید. 📁
    حساب‌های خود را بر پایه نوع مالیات (مثلاً IncomeTax، SocialSecurity) به‌وضوح نام‌گذاری کنید. این کار پرس‌و‌جوهای شما را فوق‌العاده ساده می‌کند. نام حساب‌ها را با نام فروشنده یا شماره فرم‌ها مثل «W‑2» یا «1099» شلوغ نکنید؛ برای آن جزئیات از متادیتا و برچسب‌ها استفاده کنید.

  • برای تنظیمات پایان‑سال از روش تعهدی (accrual) استفاده کنید. ⚖️
    حتی برای یک دفتر شخصی، استفاده از یک ورودی تعهدی ساده در پایان سال پاک‌ترین راه برای دقیق کردن گزارش‌هاست. این به معنای شناسایی هزینه یا بازپرداخت در سال صحیح است، حتی اگر پول تا سال بعد جابه‌جا نشود. این یک گام کوچک اضافه است که بعداً شما را از انجام تمرینات ذهنی نجات می‌دهد.

  • برای خود آینده‌تان بنویسید. 🧠
    هدف شما وضوح است. فقط در صورتی جزئیات اضافی مثل سال مالیاتی را به نام حساب اضافه کنید که واقعاً پرس‌و‌جوهای شما را آسان‌تر می‌کند. از ایجاد مجموعه‌ای جدید از حساب‌ها برای هر سال (Expenses:Taxes:2024:Federal، Expenses:Taxes:2025:Federal و غیره) مگر اینکه دلیل قانع‌کننده‌ای داشته باشید، خودداری کنید. یک ساختار صاف اغلب مدیریت آسان‌تری دارد.


اسکلت حسابی حداقل

در اینجا یک مجموعه پایه‌ای از حساب‌ها برای شروع آورده شده است. این ساختار متمرکز بر ایالات متحده است، اما می‌توانید به‌راحتی نام‌ها را برای سیستم مالیاتی کشور خود تطبیق دهید. فقط این دستورات open را در فایل Beancount خود بگذارید.

; --- مالیات‌های فدرال درآمد و حقوقی ایالات متحده ---
; برای پولی که از حقوق شما کسر می‌شود
2024-01-01 open Expenses:Taxes:Federal:IncomeTax:Withheld USD
; برای پرداخت‌های تخمینی یا صورتحساب‌های روز مالیاتی که مستقیماً می‌پردازید
2024-01-01 open Expenses:Taxes:Federal:IncomeTax:Payments USD
; برای بازپرداخت‌های مالیاتی که دریافت می‌کنید
2024-01-01 open Expenses:Taxes:Federal:IncomeTax:Refunds USD

; مشارکت‌های FICA شما
2024-01-01 open Expenses:Taxes:Federal:SocialSecurity USD
2024-01-01 open Expenses:Taxes:Federal:Medicare USD

; --- سایر مالیات‌های رایج ---
; برای مالیات فروش/استفاده که در خریدها می‌پردازید
2024-01-01 open Expenses:Taxes:Sales USD

; --- حساب‌ها برای تنظیمات پایان‑سال (اختیاری اما توصیه‌شده!) ---
; حساب موقت برای مالیاتی که بدهکارید اما هنوز پرداخت نکرده‌اید
2024-01-01 open Liabilities:AccruedTaxes:Federal:Income USD
; حساب موقت برای بازپرداختی که حق دریافت آن را دارید اما هنوز دریافت نکرده‌اید
2024-01-01 open Assets:Tax:Receivable USD

این تنظیمات مالیات‌های کسر شده را از پرداخت‌های مستقیم و بازپرداخت‌ها جدا می‌کند و به‌راحتی می‌توانید ببینید پول شما دقیقاً به کجا رفته است. حساب‌های Liabilities و Assets سلاح مخفی ما برای نگه داشتن گزارش‌های پایان‑سال دقیق هستند.


مثال ۱: حقوق

بیایید یک حقوق معمولی را ثبت کنیم که مالیات‌ها به‌صورت خودکار کسر می‌شوند. کلید این است که ابتدا درآمد ناخالص را ثبت کنید، سپس نشان دهید که چگونه به‌صورت مالیات و پولی که واقعاً به حساب بانکی‌تان می‌رسد تقسیم شده است.

2025-07-15 * "Employer Inc." "Salary for first half of July"
Income:Work:Salary -6,000.00 USD
Expenses:Taxes:Federal:IncomeTax:Withheld 1,200.00 USD
Expenses:Taxes:Federal:SocialSecurity 372.00 USD
Expenses:Taxes:Federal:Medicare 87.00 USD
Assets:Cash:Checking 4,341.00 USD

این تراکنش واحد تمام داستان را می‌گوید:

  • شما ۶,۰۰۰ دلار درآمد ناخالص کسب کردید.
  • ۱,۲۰۰ دلار از آن به IRS برای مالیات فدرال درآمدی ارسال شد.
  • ۳۷۲ دلار به Social Security و ۸۷ دلار به Medicare رفت.
  • باقی‌مانده ۴,۳۴۱ دلار همان مبلغی است که به‌دست آوردید.

نکته حرفه‌ای: می‌توانید متادیتاهای استب‌استوب خود (مانند pay_period_end: "2025-07-15") را به تراکنش اضافه کنید تا ردپای حسابرسی آسان‌تری داشته باشید.


مثال ۲: پر کردن اظهارنامه (مشکل عبور سال)

سناریویی که مردم را سردرگم می‌کند این است: در آوریل ۲۰۲۵، شما در حال پر کردن مالیات ۲۰۲۴ خود هستید. پس از تمام کسرهای خود، متوجه می‌شوید که هنوز باید ۳,۰۰۰ دلار اضافه پرداخت کنید.

چگونه این را ثبت کنید؟ می‌خواهید هزینه به‌سوی ۲۰۲۴ محاسبه شود، اما پرداخت نقدی در ۲۰۲۵ انجام می‌شود. دو روش عالی برای این کار وجود دارد.

گزینه A: تعهدی دو‑مرحله‌ای دستی

این روش صرفاً با Beancount است، بدون نیاز به افزونه. یک فرآیند واضح دو‑مرحله‌ای است.

مرحله ۱: شناسایی هزینه در پایان سال مالیاتی.
در آخرین روز ۲۰۲۴، یک ورودی «true‑up» ایجاد می‌کنید. هنوز پولی جابه‌جا نمی‌شود؛ فقط هزینه را می‌شناسید و در یک حساب تعهدی موقت پارک می‌کنید.

2024-12-31 * "Federal income tax true-up for 2024"
Expenses:Taxes:Federal:IncomeTax:Payments 3,000.00 USD
Liabilities:AccruedTaxes:Federal:Income -3,000.00 USD

اکنون صورت سود و زیان ۲۰۲۴ شما این هزینه ۳,۰۰۰ دلاری را نشان می‌دهد.

مرحله ۲: ثبت پرداخت نقدی وقتی رخ می‌دهد.
در آوریل ۲۰۲۵، وقتی واقعاً پول را به IRS می‌فرستید، تعهد را پاک می‌کنید.

2025-04-15 * "IRS" "Payment for 2024 tax return"
Liabilities:AccruedTaxes:Federal:Income 3,000.00 USD
Assets:Cash:Checking -3,000.00 USD

گزارش‌های ۲۰۲۴ شما درست هستند و جریان نقدی ۲۰۲۵ نیز صحیح است. این همان الگو برای بازپرداخت هم کار می‌کند—فقط به جای حساب تعهدی از Assets:Tax:Receivable استفاده کنید.

گزینه B: خودکارسازی با افزونه

اگر ترجیح می‌دهید پرداخت را در یک تراکنش واحد بنویسید، افزونهٔ جامعه‌ای به نام beancount_reds_plugins.effective_date می‌تواند کمک کند. این افزونه به شما اجازه می‌دهد «effective date» متفاوتی برای یک خط آیتم تعیین کنید.

ابتدا افزونه را در فایل اصلی Beancount فعال کنید:
plugin "beancount_reds_plugins.effective_date"

سپس می‌توانید یک تراکنش واحد بنویسید. افزونه به‌صورت خودکار آن را پشت صحنه تقسیم می‌کند تا گزارش‌های شما دقیق باشند.

; یک ورودی؛ افزونه بقیه را مدیریت می‌کند
2025-04-15 * "IRS" "Payment for 2024 tax return"
Assets:Cash:Checking -3,000.00 USD
Expenses:Taxes:Federal:IncomeTax:Payments 3,000.00 USD
effective_date: 2024-12-31

در اینجا بخش نقدی در ۱۵ آوریل ۲۰۲۵ ثبت می‌شود، اما بخش هزینه به‌صورت بازگشتی به ۳۱ دسامبر ۲۰۲۴ اعمال می‌شود. همان نتیجهٔ گزینه A را با جریان کاری متفاوت به‌دست می‌آورید.


مالیات فروش چه می‌شود؟

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

2025-07-19 * "Local Grocery Store"
Expenses:Groceries 12.32 USD
Expenses:Taxes:Sales 1.28 USD
Assets:Cash:Checking -13.60 USD

این کار به‌راحتی به شما نشان می‌دهد در طول سال چه مقدار برای مالیات فروش هزینه می‌کنید. اگر کسب‌وکاری دارید که با VAT سروکار دارد، از یک سیستم رسمی‌تر با حساب‌های پرداختی و دریافتنی استفاده می‌کنید، اما اصل همان است.


پرس‌و‌جوهایی که واقعاً اجرا می‌کنید

کلید این ساختار این است که به‌دست آوردن پاسخ‌ها آسان باشد. در اینجا چند پرس‌و‌جوی BQL برای دیدن تصویر مالیاتی شما آورده شده است.

۱. کل مالیات فدرال درآمدی من برای ۲۰۲۴ چقدر بود؟

SELECT cost(sum(position))
WHERE account "Expenses:Taxes:Federal:IncomeTax"
AND date >= 2024-01-01 AND date < 2025-01-01;

۲. آن مجموع چگونه بین کسرهای مالیاتی، پرداخت‌ها و بازپرداخت‌ها تقسیم می‌شود؟

SELECT account, cost(sum(position))
WHERE account "Expenses:Taxes:Federal:IncomeTax"
AND date >= 2024-01-01 AND date < 2025-01-01
GROUP BY account
ORDER BY account;

۳. آیا بدهی‌های مالیاتی یا دریافتنی‌های معوقی دارم؟ (برای بررسی کارتان مفید است!)

SELECT account, units(sum(position))
WHERE account "Liabilities:AccruedTaxes" OR account "Assets:Tax"
GROUP BY account
ORDER BY account;

اگر این پرس‌و‌جو مقادیر غیرصفر برگرداند، به این معناست که تعهداتی دارید که هنوز تسویه نشده‌اند.


پرسش‌های سریع

  • آیا واقعاً به حساب‌های سالانه مثل Expenses:Taxes:2024 نیاز دارم؟
    احتمالاً نه. روش تعهدی (یا افزونه) ساختار حسابی صاف و خوانا را حفظ می‌کند. فقط در صورتی حساب‌های سالانه بسازید که برای پرس‌و‌جوهای خاص شما مفید باشد.

  • آیا Beancount می‌تواند مالیات‌های من را محاسبه کند؟
    به‌صورت مستقیم نه، اما می‌تواند داده‌ها را آماده کند. برخی کاربران پیشرفته اسکریپت‌هایی می‌نویسند تا نتایج پرس‌و‌جوی BQL را به نرم‌افزارهای محاسبه مالیات بفرستند؛ این کار برای برآورد بدهی در طول سال بسیار مفید است.

  • آیا این مشاورهٔ مالیاتی است؟
    نه. این فقط یک الگوی حسابداری برای سازماندهی داده‌هاست. حسابداری صحیح است، اما برای مشاورهٔ خاص به وضعیت خود حتماً با یک متخصص مالیاتی مشورت کنید.


چک‌لیست آماده برای استفاده

آماده‌اید تا شروع کنید؟

  1. اسکلت حسابی را به فایل Beancount خود اضافه کنید (و نام‌ها را برای کشور خود تطبیق دهید).
  2. حقوق‌ها را ثبت کنید؛ ابتدا درآمد ناخالص را بنویسید و سپس مالیات‌ها را جدا کنید.
  3. در پایان سال، هر تعهدی را با استفاده از حساب تعهدی/دارایی ثبت کنید (یا از افزونهٔ effective_date استفاده کنید).
  4. بازپرداخت‌ها را به‌عنوان دریافتنی‌ها پیگیری کنید و وقتی پول رسید، حساب را پاک کنید.
  5. پرس‌و‌جوهای BQL بالا را اجرا کنید تا مجموعها را پیش از پر کردن اظهارنامه بررسی کنید.

ساده، منسجم و ثابت بمانید؛ و فصل مالیاتی شما در نهایت فقط بخشی دیگر از داستان مالی شما خواهد بود—نه معمایی برای حل.

دوره حسابداری، به سبک Beancount

· زمان مطالعه 9 دقیقه
Mike Thrift
Mike Thrift
Marketing Manager

صورت‌های مالی به جادوی ظاهر نمی‌شوند. آن‌ها محصول نهایی یک فرآیند ساختاریافته و قابل تکرار به نام دوره حسابداری هستند. در حالی که اصول جهانی‌اند، ابزارهایی که استفاده می‌کنید می‌توانند تجربه را به‌طرز چشمگیری تغییر دهند. این راهنما شما را در طول دوره حسابداری با تمرکز بر Beancount، ابزار قدرتمند حسابداری متنی، راهنمایی می‌کند.

خواهیم دید که رویکرد متنی‑اول Beancount چگونه گام‌های خسته‌کننده را حذف می‌کند، چه مواردی را باید خودکار کنید و کدام گزارش‌ها واضح‌ترین تصویر از سلامت مالی شما را ارائه می‌دهند. 🧑‍💻

2025-08-13-the-accounting-cycle-beancount-style


TL;DR: جریان کار Beancount

  • Capture & Journal: هر تراکنش را به‌صورت یک پستینگ دوبل‑انتری تمیز در فایل متنی .beancount خود ثبت کنید.
  • Validate & Reconcile: از ادعاهای balance برای تأیید تطابق دفتر کل با صورت‌حساب‌های بانکی استفاده کنید و bean-check را برای کشف خطاها اجرا کنید.
  • Review: یک تراز آزمایشی بدون تنظیم برای بررسی سریع صحت داده‌ها تولید کنید.
  • Adjust: ورودی‌های مربوط به تعهدات، تعویق‌ها، استهلاک و سایر موارد پایان دوره را پست کنید.
  • Re-review: تراز آزمایشی تنظیم‌شده را بررسی کنید تا از صحت همه چیز اطمینان حاصل کنید.
  • Publish & Close: صورت‌های سود و زیان، ترازنامه و صورت جریان نقدی خود را تولید کنید. بسته‌بندی دفاتر در Beancount اختیاری است، زیرا گزارش‌ها به تاریخ حساس هستند.

این جریان می‌تواند به‌صورت زیر تجسم شود:


گام ۱: ثبت و ضبط تراکنش‌ها

این گام پایه‌ای است. هر رویداد مالی — فروش، خرید، هزینه بانکی — باید ثبت شود. در Beancount این کار را با ایجاد تراکنش‌ها در یک فایل متنی ساده انجام می‌دهید که معمولاً نامش main.beancount است یا به‌صورت چندین فایل بر حسب سال سازماندهی می‌شود.

هر تراکنش باید قوانین حسابداری دوبل‑انتری را رعایت کند، به این معنی که مجموع تمام پستینگ‌ها باید صفر باشد. Beancount این را برای شما اعمال می‌کند.

2025-08-10 * "Walmart" "Purchase of office supplies"
Expenses:Office:Supplies 45.67 USD
Assets:Bank:Checking -45.67 USD
  • نکته حرفه‌ای: از برچسب‌هایی مثل #project-phoenix یا #client-acme برای افزودن ابعاد به داده‌ها استفاده کنید. این کار بعداً پرس‌و‌جو و گزارش‌گیری را به‌طرز فوق‌العاده‌ای انعطاف‌پذیر می‌کند.

بهداشت تطبیق ✅

قوی‌ترین ویژگی برای اطمینان از دقت، ادعای توازن است. در پایان یک دوره (مثلاً پایان ماه) شما اعلام می‌کنید که موجودی یک حساب باید چه مقدار باشد.

2025-08-31 balance Assets:Bank:Checking  12345.67 USD

اگر مجموع تمام تراکنش‌های مؤثر بر Assets:Bank:Checking تا آن تاریخ برابر با 12345.67 USD نباشد، Beancount خطا می‌دهد. این دستور ساده دفتر کل شما را به سندی خودحسابرسی تبدیل می‌کند.

برای کسانی که داده‌های تاریخی را پس‌تکمیل می‌کنند، دستور pad می‌تواند به‌صورت خودکار یک تراکنش متعادل ایجاد کند تا موجودی‌های افتتاحیه با اولین ادعای شما مطابقت داشته باشد.


گام ۲: «پست به دفتر کل» (رایگان!)

در سیستم‌های حسابداری سنتی ابتدا ورودی‌ها را در «دفتر روزنامه» می‌نویسید و سپس یک گام جداگانه «پست» این مقادیر را به «دفتر کل عمومی» کپی می‌کند.

با Beancount، فایل .beancount شما هم دفتر روزنامه است و هم دفتر کل. وقتی تراکنشی می‌نویسید و ذخیره می‌کنید، در واقع آن را پست کرده‌اید. گام جداگانه‌ای وجود ندارد. این مستقیم‌بودن مزیت اصلی حسابداری متنی است — آنچه می‌بینید همان چیزی است که دارید.


گام ۳: تهیه تراز آزمایشی بدون تنظیم

قبل از انجام تنظیمات، نیاز به یک بررسی سریع «آیا همه چیز جمع می‌شود؟» دارید. تراز آزمایشی گزارشی ساده است که هر حساب و موجودی کل آن را فهرست می‌کند. مجموع کل بدهکارها باید برابر مجموع کل بستانکارها باشد.

می‌توانید این را با یک پرس‌و‌جوی ساده تولید کنید:

bean-query main.beancount \
"SELECT account, sum(position) GROUP BY 1 ORDER BY 1"

یا برای رویکرد بصری‌تر، دفتر خود را در Fava (رابط وب Beancount) باز کنید و به گزارش «Trial Balance» بروید. به هر چیز غیرعادی نگاه کنید — حساب دارایی با موجودی بستانکار، یا هزینه‌ای با مقدار عجیب.


گام ۴: ثبت ورودی‌های تنظیمی

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

تنظیمات رایج شامل:

  • تعهدات: ثبت درآمدی که کسب کرده‌اید اما هنوز فاکتور نشده است، یا هزینه‌ای که متحمل شده‌اید اما هنوز پرداخت نشده.
  • تعویق‌ها: مدیریت پیش‌پرداخت‌ها. اگر مشتری برای یک سال خدمات پیش‌پرداخت کند، آن را به‌عنوان بدهی (Liabilities:UnearnedRevenue) ثبت می‌کنید و هر ماه ۱/۱۲ آن را به‌عنوان درآمد شناسایی می‌کنید.
  • موارد غیرنقدی: ثبت مواردی مانند استهلاک دارایی‌ها.
  • تصحیحات: رفع خطاها یا حساب کردن موارد از دست رفته در فیدهای بانکی، مثل پرداخت سود کوچک.

مثال: تعهد درآمد

پروژه‌ای را در ۳۱ آگوست تمام کردید اما فاکتور را تا سپتامبر ارسال نمی‌کنید. برای شناسایی درآمد در دوره صحیح (آگوست) یک ورودی تنظیمی می‌نویسید:

2025-08-31 * "Accrue revenue for client project #1042"
Assets:AccountsReceivable 3000.00 USD
Income:Consulting -3000.00 USD

مثال: ثبت استهلاک

شرکت شما برنامه‌ای برای استهلاک دارایی‌ها دارد. در پایان دوره این هزینه را ثبت می‌کنید:

2025-12-31 * "Annual depreciation on computer equipment"
Expenses:Depreciation 4800.00 USD
Assets:Fixed:AccumulatedDepreciation -4800.00 USD

گام ۵: اجرای تراز آزمایشی تنظیم‌شده و اعتبارسنجی

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

همچنین زمان مناسبی است برای اجرای بررسی داخلی Beancount:

bean-check main.beancount

این فرمان تمام سینتکس، قوانین توازن و ادعاها را بررسی می‌کند. اگر خروجی نداشته باشد، دفاتر شما از نظر مکانیکی سالم هستند.


گام ۶: انتشار صورت‌های مالی 📊

این پاداش نهایی است. با استفاده از اعداد تراز آزمایشی تنظیم‌شده می‌توانید گزارش‌های کلیدی مالی را تولید کنید. ساده‌ترین راه استفاده از Fava است که گزارش‌های تعاملی و قابل کاوش را به‌صورت پیش‌فرض فراهم می‌کند.

  • صورت سود و زیان (Profit & Loss): درآمدها و هزینه‌های شما را در یک دوره نشان می‌دهد و به سود خالص یا زیان خالص می‌رسد.
  • ترازنامه: تصویر لحظه‌ای از آنچه دارید (دارایی‌ها) و آنچه بدهکارید (بدهی‌ها) به‌همراه ارزش خالص (سرمایه) در یک تاریخ خاص.
  • صورت جریان نقدی: نقدینگی آغازین را با نقدینگی پایان مقایسه می‌کند و نشان می‌دهد پول از کجا آمده و به کجا رفته است.

برای گزارش‌های سفارشی می‌توانید از زبان پرس‌و‌جوی Beancount (BQL) استفاده کنید. در اینجا یک پرس‌و‌جو برای صورت سود و زیان ماهانه آورده شده است:

-- P&L for August 2025
SELECT account, sum(position)
WHERE account '^(Income|Expenses)'
AND date >= 2025-08-01 AND date <= 2025-08-31
GROUP BY account ORDER BY account;

گام ۷: بسته‌بندی دفاتر (اختیاری)

در حسابداری سنتی، فرآیند «بسته شدن» شامل ایجاد ورودی‌های روزنامه برای صفر کردن تمام حساب‌های موقت (درآمد و هزینه) و انتقال سود خالص به حساب سرمایه‌ای به نام سود انباشته است. این کار حساب‌های موقت را برای سال بعد بازنشانی می‌کند.

در Beancount این گام معمولاً نیازی نیست. گزارش‌های Fava به تاریخ حساس هستند؛ اگر درخواست صورت سود و زیان ۲۰۲۵ را بدهید، فقط از داده‌های ۲۰۲۵ استفاده می‌کند. موجودی‌ها «ریخت» نمی‌شوند. اکثر کاربران به سادگی موجودی‌ها را همان‌جا می‌گذارند.

با این حال، اگر برای انطباق یا گزارش به سهامداران نیاز به بسته شدن رسمی داشته باشید، می‌توانید با یک تراکنش پایان سال کل درآمد و هزینه را به Equity:Retained-Earnings منتقل کنید.


چک‌لیست بسته‌بندی ماهانه عملی

در اینجا یک چک‌لیست قابل تکرار برای بسته‌بندی دفاتر هر ماه با استفاده از Beancount آورده شده است.

  • Capture: تمام تراکنش‌های بانکی و کارت‌اعتبار را وارد کنید. هر هزینه نقدی یا موارد خارج از باند را به‌صورت دستی وارد کنید.
  • Reconcile: ادعاهای balance را برای تمام حساب‌های بانکی، کارت‌های اعتباری و حساب‌های وام اضافه کنید و با صورت‌حساب‌ها مطابقت دهید.
  • Review: تراز آزمایشی بدون تنظیم را در Fava اسکن کنید. هر موجودی عجیب یا غیرمنتظره را بررسی کنید. فاکتورهای پرداخت‌نشده قدیمی (Assets:AccountsReceivable) یا صورتحساب‌های معوق (Liabilities:AccountsPayable) را بررسی کنید.
  • Adjust: ورودی‌های مربوط به درآمد/هزینه تعهدی، درآمد تعویقی و هر تصحیح لازم را ثبت کنید.
  • Validate: bean-check را اجرا کنید. تراز آزمایشی تنظیم‌شده نهایی را مرور کنید.
  • Publish: صورت سود و زیان و ترازنامه را تولید کنید. آن‌ها را برای ذینفعان ارسال کنید یا برای سوابق خود ذخیره کنید.
  • Wrap-up: در صورت نیاز به بسته شدن رسمی، ورودی بسته شدن را انجام دهید. یک نسخه از فایل‌های .beancount دوره را بایگانی کنید.

چرا Beancount برای دوره حسابداری می‌درخشد

  • شفافیت و قابلیت حسابرسی: دفتر کل شما یک فایل متنی است. می‌توانید از git برای کنترل نسخه تاریخچه مالی، مرور تغییرات با diff و همکاری با حسابدار خود در قالبی واضح و بدون ابهام استفاده کنید.
  • کنترل کامل: نمودار حساب‌های خود را تعریف می‌کنید. در ساختار نرم‌افزارهای تجاری قفل نمی‌شوید. داده‌های شما برای همیشه در قالب باز و مال شماست.
  • قدرت بی‌نظیر: ترکیب پرس‌و‌جوهای شبیه‑SQL (BQL) و رابط وب غنی (Fava) به شما قدرتی بی‌نظیر برای برش، خرد کردن و درک داده‌های مالی می‌دهد.

قطعه‌های کپی‑پست برای شروع

نمودار ساده حساب‌ها:

option "title" "My Personal Ledger"
option "operating_currency" "USD"

;; --- Accounts ---
1970-01-01 open Assets:Bank:Checking
1970-01-01 open Assets:AccountsReceivable
1970-01-01 open Liabilities:CreditCard
1970-01-01 open Liabilities:UnearnedRevenue
1970-01-01 open Equity:Owner:Capital
1970-01-01 open Equity:Retained-Earnings
1970-01-01 open Income:Consulting
1970-01-01 open Expenses:Office:Supplies
1970-01-01 open Expenses:Software
1970-01-01 open Expenses:Depreciation

پرس‌و‌جوی مفید BQL:

-- Find all customers with an outstanding balance
SELECT payee, sum(position)
WHERE account = 'Assets:AccountsReceivable'
GROUP BY payee
HAVING sum(position) > 0
ORDER BY sum(position) DESC;

با نگاشت دوره حسابداری بی‌زمان به ابزارهای مدرن متنی Beancount، سیستمی قوی، شفاف و ماندگار به دست می‌آورید. حسابداری خوشایند!

مقایسه Beancount.io با نرم‌افزارهای حسابداری سنتی: کدام یک برای شما مناسب‌تر است؟

· زمان مطالعه 8 دقیقه
Mike Thrift
Mike Thrift
Marketing Manager

برای دهه‌ها، دنیای حسابداری کسب‌وکار تحت سلطه سیستم‌های بسته و مبتنی بر رابط کاربری گرافیکی (GUI) مانند QuickBooks، Xero و FreshBooks بوده است. آن‌ها استاندارد را تعیین کرده‌اند و سهولت استفاده و گردش‌های کاری بصری را ارائه می‌دهند که برای کاربران غیرفنی مناسب است. اما برای توسعه‌دهندگان، کاربران حرفه‌ای و هر کسی که برای شفافیت و کنترل مطلق ارزش قائل است، رویکردی کاملاً متفاوت پدیدار شده است: Beancount.io.

این مقاله مقایسه مستقیمی از Beancount.io با نرم‌افزارهای حسابداری سنتی ارائه می‌دهد. ما تفاوت‌های اصلی آن‌ها در فلسفه، انعطاف‌پذیری، هزینه و قابلیت نگهداری طولانی‌مدت را تجزیه و تحلیل می‌کنیم تا به شما در تصمیم‌گیری در مورد اینکه کدام سیستم واقعاً متناسب با نیازهای شماست، کمک کنیم.

2025-08-08-beancount-io-vs-traditional-accounting-software

۱. فلسفه و گردش کار

اساسی‌ترین تفاوت بین این دو رویکرد در فلسفه اصلی آن‌ها نهفته است.

Beancount.io Beancount.io بر اساس فلسفه حسابداری متن ساده ساخته شده است. در قلب آن، هر تراکنش مالی یک ورودی در یک فایل متنی ساده است. این مدل «حسابداری به عنوان کد» به سوابق قابل خواندن توسط انسان و قابل کنترل نسخه اولویت می‌دهد. داده‌های مالی شما در قالبی باز و بی‌زمان که کاملاً متعلق به شماست، قرار دارد - هرگز نمی‌تواند توسط یک فروشنده قفل شود. این گردش کار برای کاربرانی طراحی شده است که با ویرایشگرهای کد، سیستم‌های کنترل نسخه مانند Git و ابزارهای خط فرمان راحت هستند.

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

حکم: اگر به کنترل کامل، مالکیت داده‌ها، شفافیت و اتوماسیون اولویت می‌دهید، Beancount.io برنده قطعی است. اگر به رابط کاربری «کلیک و اجرا» با حداقل منحنی یادگیری نیاز دارید، نرم‌افزار سنتی طبیعی‌تر به نظر می‌رسد.

۲. انعطاف‌پذیری و سفارشی‌سازی

نرم‌افزار چقدر می‌تواند با نیازهای خاص شما سازگار شود؟

Beancount.io ۱۰۰٪ اسکریپت‌پذیر بودن، قدرت فوق‌العاده Beancount.io است. این نرم‌افزار به طور یکپارچه با پایتون ادغام می‌شود و به شما امکان می‌دهد به هر API متصل شوید، واکشی داده‌ها را از فیدهای بانکی به صورت خودکار انجام دهید، تراکنش‌ها را بر اساس قوانین پیچیده به صورت برنامه‌ریزی شده برچسب‌گذاری کنید و گزارش‌های سفارشی متناسب با مشخصات دقیق خود ایجاد کنید. توانایی شما برای گسترش و سفارشی‌سازی عملاً نامحدود است و عاری از هرگونه محدودیت اعمال شده توسط فروشنده است.

نرم‌افزار سنتی این پلتفرم‌ها مجموعه‌ای از ادغام‌ها را با ابزارهای محبوب مانند PayPal، Stripe و سرویس‌های مختلف حقوق و دستمزد ارائه می‌دهند. اگرچه راحت است، اما شما در باغ محصور فروشنده فعالیت می‌کنید. سفارشی‌سازی محدود به چیزی است که پلتفرم اجازه می‌دهد و گزارش‌دهی پیشرفته یا اتوماسیون اغلب نیاز به ارتقاء به طرح سطح بالاتر یا خرید افزونه‌های شخص ثالث دارد. می‌توانید با APIهای آن‌ها کار کنید، اما همیشه به قوانین و محدودیت‌های نرخ اکوسیستم آن‌ها محدود خواهید شد.

حکم: Beancount.io انعطاف‌پذیری بی‌نظیری را برای توسعه‌دهندگان و کاربران فنی فراهم می‌کند. ابزارهای سنتی برای گردش‌های کاری استاندارد و plug-and-play با برنامه‌های تجاری محبوب مناسب‌تر هستند.

۳. همکاری و شفافیت

نحوه کار شما با دیگران و حسابرسی سوابق شما به طور قابل توجهی متفاوت است.

Beancount.io همکاری در Beancount.io از طریق Git مدیریت می‌شود. این امر باعث می‌شود که هر تغییری در دفتر کل مالی شما کاملاً شفاف و قابل حسابرسی باشد. می‌توانید ببینید چه کسی، چه چیزی را، چه زمانی و چرا تغییر داده است - درست مانند گردش کار بررسی کد. این برای تیم‌های توزیع‌شده که از ابزارهایی مانند GitHub یا GitLab استفاده می‌کنند، ایده‌آل است. علاوه بر این، هیچ محاسبه پنهانی وجود ندارد. هر عدد در یک گزارش را می‌توان به ورودی دقیق ردیف در فایل دفتر کل شما ردیابی کرد و از حسابرسی کامل اطمینان حاصل کرد.

نرم‌افزار سنتی همکاری از طریق نقش‌ها و مجوزهای کاربر داخلی مدیریت می‌شود. می‌توانید حسابدار، دفتردار یا شرکای تجاری خود را دعوت کنید تا مستقیماً از طریق رابط وب به دفاتر دسترسی داشته باشند. این برای مشاغلی که از مدل سنتی نظارت مالی پیروی می‌کنند بسیار مؤثر است. نکته منفی این است که برخی از عملیات داخلی، مانند محاسبات مالیات یا تنظیمات خودکار موجودی، می‌توانند «جعبه‌های سیاه» مات باشند و تأیید مستقل منطق را دشوار می‌کنند.

حکم: Beancount.io برای تیم‌هایی که برای حسابرسی دقیق و همکاری به سبک کد ارزش قائل هستند، عالی است. سیستم‌های سنتی برای دسترسی GUI مشترک و بلادرنگ، حسابدارپسندتر هستند.

۴. هزینه و مالکیت

مدل‌های مالی و مفهوم مالکیت داده‌ها دنیایی از هم جدا هستند.

Beancount.io نرم‌افزار اصلی Beancount متن‌باز و رایگان است. شما فقط برای خدمات ارزش افزوده Beancount.io، که شامل میزبانی، اتوماسیون هوشمند و ویژگی‌های پریمیوم می‌شود، هزینه می‌پردازید. هیچ هزینه مجوز برای هر صندلی وجود ندارد، بنابراین می‌توانید تیم خود را بدون متحمل شدن هزینه‌های اضافی مقیاس دهید. مهم‌تر از همه، هیچ قفل فروشنده‌ای وجود ندارد. داده‌های شما مجموعه‌ای از فایل‌های متنی است که می‌توانید آن‌ها را در هر زمان و هر مکان جابه‌جا، ویرایش یا ذخیره کنید.

نرم‌افزار سنتی این سرویس‌ها بر اساس مدل اشتراک کار می‌کنند که معمولاً ماهانه یا سالانه صورتحساب می‌شوند. قیمت‌گذاری اغلب بر اساس ویژگی‌ها طبقه‌بندی می‌شود و ممکن است با هزینه‌های هر کاربر یا هر شرکت که با سازمان شما مقیاس می‌شوند، مواجه شوید. این وابستگی ایجاد می‌کند. اگر پرداخت را متوقف کنید، خطر از دست دادن دسترسی به داده‌های خود و عملکرد نرم‌افزار را دارید. این قفل فروشنده یک خطر قابل توجه در درازمدت است.

حکم: Beancount.io در درازمدت به طور قابل توجهی مقرون به صرفه‌تر است، به ویژه برای تیم‌های فنی که برای حاکمیت داده‌ها ارزش قائل هستند. نرم‌افزار سنتی هزینه‌های اشتراک قابل پیش‌بینی را ارائه می‌دهد اما وابستگی طولانی‌مدت ایجاد می‌کند.

۵. منحنی یادگیری و پذیرش

چقدر سریع می‌توانید شروع به کار کنید؟

Beancount.io منحنی یادگیری بدون شک شیب‌دارتر است. پذیرش این سیستم مستلزم راحتی با ویرایش مبتنی بر متن، درک نحو اولیه و آشنایی با ابزارهایی مانند Git است. با این حال، سرمایه‌گذاری اولیه نتیجه می‌دهد. پس از تسلط، Beancount گردش‌های کاری فوق‌العاده سریع و تکرارپذیر را فعال می‌کند و درک عمیق‌تر و اساسی‌تری از تصویر مالی شما ارائه می‌دهد.

نرم‌افزار سنتی این پلتفرم‌ها برای صاحبان مشاغل غیرفنی طراحی شده‌اند و حداقل اصطکاک در شروع کار را ارائه می‌دهند. می‌توانید در عرض چند دقیقه شروع به کار کنید، فاکتور ارسال کنید و هزینه‌ها را دسته‌بندی کنید. با این اوصاف، یادگیری ویژگی‌های پیشرفته‌تر، مانند ساخت گزارش سفارشی یا راه‌اندازی حسابداری چند نهاد، همچنان نیازمند سرمایه‌گذاری زمانی قابل توجهی است.

حکم: اگر مایل به سرمایه‌گذاری زمان برای یادگیری یک سیستم قدرتمند هستید، Beancount.io انتخاب مناسبی است. نرم‌افزار سنتی برای کاربران غیرفنی که به نتایج فوری نیاز دارند، سریع‌تر شروع می‌شود.

مقایسه کنار هم

ویژگیBeancount.ioنرم‌افزار حسابداری سنتی
فلسفه اصلیحسابداری به عنوان کد؛ دفتر کل متن سادهمبتنی بر رابط کاربری گرافیکی؛ فرم محور
قالب دادهباز (متن ساده)اختصاصی (پایگاه داده)
مالکیت داده۱۰۰٪ متعلق به کاربر و قابل حملکنترل شده توسط فروشنده؛ قفل احتمالی
انعطاف‌پذیرینامحدود؛ کاملاً اسکریپت‌پذیر با پایتونمحدود به اکوسیستم و APIهای فروشنده
همکاریمبتنی بر Git؛ تاریخچه تغییرات شفافمجوزهای کاربر مبتنی بر نقش
شفافیتکاملاً قابل حسابرسی؛ بدون محاسبات پنهانبرخی از محاسبات می‌توانند مات باشند
مدل هزینههسته متن‌باز؛ پرداخت برای میزبانی/اتوماسیوناشتراک ماهانه/سالانه (SaaS)
منحنی یادگیریبرای کاربران غیرفنی شیب‌دارترکم؛ برای شروع سریع طراحی شده است
کاربر ایده‌آلتوسعه‌دهندگان، کاربران حرفه‌ای، تحلیلگران دادهصاحبان SMB، تیم‌های غیرفنی

چه زمانی هر کدام را انتخاب کنیم

تصمیم نهایی به مهارت‌ها، اولویت‌ها و گردش کار تیم شما بستگی دارد.

Beancount.io را انتخاب کنید اگر:

  • توسعه‌دهنده، تحلیلگر داده یا کاربر حرفه‌ای با گرایش فنی هستید.
  • برای شفافیت مطلق، کنترل و قابلیت حمل داده‌های بلندمدت بیش از هر چیز دیگری ارزش قائل هستید.
  • می‌خواهید حسابداری خود را به طور کامل خودکار کنید و آن را عمیقاً در گردش‌های کاری سفارشی خود ادغام کنید.
  • با برخورد با سوابق مالی خود با همان دقت کد منبع راحت هستید.

نرم‌افزار حسابداری سنتی را انتخاب کنید اگر:

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

افکار نهایی

Beancount.io سعی نمی‌کند QuickBooks بهتری باشد - این یک روش اساساً متفاوت برای تفکر است. این حسابداری را به عنوان کد نشان می‌دهد. برای متخصصان فنی، این تغییر همان جهش رو به جلویی را ارائه می‌دهد که کنترل نسخه با Git برای توسعه نرم‌افزار به ارمغان آورد: شفافیت کامل، تکرارپذیری کامل و کنترل نهایی.

در عین حال، نرم‌افزار حسابداری سنتی همچنان در سهولت استفاده از جعبه و ادغام‌های آماده برای تیم‌های غیرفنی برنده است. انتخاب درست در مورد اینکه کدام یک به طور کلی «بهتر» است نیست، بلکه در مورد اینکه کدام یک برای گردش کار شما، اولویت‌های شما و میزان کنترلی که بر داده‌های مالی خود می‌طلبید، مناسب است.

اکوسیستم بین‌کانت: یک تحلیل جامع

· زمان مطالعه 42 دقیقه
Mike Thrift
Mike Thrift
Marketing Manager

قابلیت‌های اصلی و فلسفه Beancount

Beancount یک سیستم حسابداری دوطرفه متن‌باز است که از فایل‌های متنی ساده برای ثبت تراکنش‌ها استفاده می‌کند. در هسته خود، Beancount دفتر کل شما را به عنوان یک مجموعه داده تعریف شده توسط یک گرامر ساده و دقیق در نظر می‌گیرد. هر رویداد مالی (تراکنش‌ها، افتتاح حساب‌ها، قیمت کالاها و غیره) یک دستورالعمل در یک فایل متنی است که Beancount آن را به یک پایگاه داده در حافظه از ورودی‌ها تجزیه می‌کند. این طراحی، اصل حسابداری دوطرفه را اعمال می‌کند: هر تراکنش باید بدهکار و بستانکار را در حساب‌ها تراز کند. نتیجه یک دفتر کل بسیار شفاف و قابل حسابرسی است که می‌توانید آن را کنترل نسخه کنید، بازرسی کنید و به راحتی پرس‌وجو نمایید.

2025-04-15-beancount-ecosystem

فلسفه – صحت و مینیمالیسم: طراحی Beancount یکپارچگی داده و سادگی را در اولویت قرار می‌دهد. خالق آن، مارتین بلایس، Beancount را "بدبینانه" توصیف می‌کند، زیرا فرض می‌کند کاربر اشتباه خواهد کرد و بنابراین بررسی‌ها و محدودیت‌های اضافی اعمال می‌کند. به عنوان مثال، Beancount به شما اجازه نمی‌دهد دارایی‌هایی را که هرگز اضافه نشده‌اند حذف کنید (از موجودی سهام منفی یا مانده‌های نقدی جلوگیری می‌کند) و می‌تواند اعمال کند که هر حسابی قبل از استفاده باز شود. این سیستم فاقد مفهوم "مجازی" یا ثبت‌های خودکار تراز شده Ledger است – انتخابی عمدی برای اجبار به ورودی‌های کاملاً تراز شده. Beancount به طور موثری "به شدت بر صحت تاکید می‌کند" با بررسی‌های متقابل بیشتر از آنچه حسابداری دوطرفه پایه فراهم می‌کند. این رویکرد محتاطانه برای کاربرانی جذاب است که "به خودشان زیاد اعتماد ندارند" و می‌خواهند نرم‌افزار خطاهایشان را بگیرد.

گزینه‌های حداقل، حداکثر سازگاری: در مقابل پرچم‌های خط فرمان و گزینه‌های تنظیم بی‌شمار Ledger، Beancount مینیمالیسم را انتخاب می‌کند. گزینه‌های سراسری بسیار کمی وجود دارد و هیچ کدام معنای تراکنش را خارج از فایل دفتر کل تغییر نمی‌دهند. تمام پیکربندی‌هایی که بر حسابداری تأثیر می‌گذارند (مانند روش‌های مبنای بهای تمام شده کالا یا فرضیات ثبت) درون فایل از طریق دستورالعمل‌ها یا پلاگین‌ها انجام می‌شود، که تضمین می‌کند بارگذاری همان فایل همیشه نتایج یکسانی را تولید می‌کند، صرف نظر از اینکه گزارش‌ها چگونه تولید می‌شوند. این طراحی از پیچیدگی دکمه‌های متعدد Ledger و تعاملات ظریف بین آن‌ها جلوگیری می‌کند. فلسفه Beancount این است که یک ابزار حسابداری باید یک خط لوله پایدار و قطعی از فایل ورودی تا گزارش‌ها باشد. این امر را با در نظر گرفتن دفتر کل به عنوان یک جریان مرتب از دستورالعمل‌ها که می‌توانند به صورت برنامه‌نویسی به ترتیب پردازش شوند، به دست می‌آورد. حتی مواردی که Ledger آن‌ها را به عنوان سینتکس خاص در نظر می‌گیرد (مانند مانده‌های افتتاحیه یا بیانیه‌های قیمت) در مدل داده Beancount دستورالعمل‌های درجه یک هستند که سیستم را بسیار توسعه‌پذیر می‌کند.

قابلیت توسعه از طریق پلاگین‌ها و زبان پرس‌وجو: Beancount در پایتون پیاده‌سازی شده است و نقاط اتصالی را برای تزریق منطق سفارشی به خط لوله پردازش فراهم می‌کند. کاربران می‌توانند پلاگین‌هایی در پایتون بنویسند که بر روی جریان تراکنش‌ها عمل می‌کنند (به عنوان مثال، برای اعمال یک قانون سفارشی یا تولید ورودی‌های خودکار). این پلاگین‌ها هنگام پردازش فایل اجرا می‌شوند و به طور موثری قابلیت‌های اصلی Beancount را بدون نیاز به تغییر کد منبع گسترش می‌دهند. Beancount همچنین شامل یک زبان پرس‌وجوی قدرتمند (الهام گرفته از SQL) برای برش و تحلیل دفتر کل است. ابزار bean-query دفتر کل تجزیه شده را به عنوان یک پایگاه داده در نظر می‌گیرد و به شما امکان می‌دهد پرس‌وجوهای تحلیلی را روی آن اجرا کنید – به عنوان مثال، جمع‌بندی هزینه‌ها بر اساس دسته‌بندی یا استخراج تمام تراکنش‌ها برای یک دریافت‌کننده مشخص. در Beancount 3.x، این قابلیت پرس‌وجو به یک بسته مستقل beanquery منتقل شد، اما از دیدگاه کاربر همچنان گزارش‌دهی انعطاف‌پذیر را از طریق پرس‌وجوهای شبیه SQL فراهم می‌کند.

متن ساده و کنترل نسخه: به عنوان یک ابزار حسابداری متن ساده، Beancount بر کنترل کاربر و ماندگاری داده‌ها تأکید دارد. دفتر کل به سادگی یک فایل متنی .beancount است که می‌توانید آن را در هر ویرایشگر متنی ویرایش کنید. این بدان معناست که کل تاریخچه مالی شما در قالبی قابل خواندن برای انسان ذخیره می‌شود و می‌توانید آن را در Git یا یک سیستم کنترل نسخه دیگر قرار دهید تا تغییرات را در طول زمان ردیابی کنید. کاربران اغلب فایل Beancount خود را تحت کنترل نسخه نگه می‌دارند تا یک رد حسابرسی از هر ویرایش (با پیام‌های کامیت که تغییرات را توصیف می‌کنند) حفظ کنند. این رویکرد با فلسفه Beancount همسو است که داده‌های حسابداری، به ویژه امور مالی شخصی یا کسب‌وکارهای کوچک، باید شفاف و "مقاوم در برابر آینده" باشند – نه اینکه در یک پایگاه داده اختصاصی قفل شوند. به گفته خود مارتین بلایس، Beancount "کاری از روی عشق" است که برای جامعه ساده، بادوام و رایگان ساخته شده است. این سیستم برای اولین بار حدود سال ۲۰۰۷ توسعه یافت و از طریق بازنویسی‌های عمده (نسخه ۱ به نسخه ۲، و اکنون نسخه ۳ در سال ۲۰۲۴) تکامل یافته است تا طراحی خود را بهبود بخشد و در عین حال فلسفه اصلی خود یعنی مینیمالیسم و صحت را حفظ کند.

ابزارها، پلاگین‌ها و افزونه‌ها در اکوسیستم بین‌کانت

اکوسیستم بین‌کانت مجموعه‌ای غنی از ابزارها، پلاگین‌ها و افزونه‌ها را در خود جای داده است که قابلیت‌های اصلی دفتر کل را ارتقا می‌دهند. این‌ها شامل وارد کردن داده‌ها، ویرایش دفترهای کل، مشاهده گزارش‌ها و افزودن ویژگی‌های تخصصی حسابداری می‌شوند. در ادامه مروری بر اجزای کلیدی و افزودنی‌ها در دنیای بین‌کانت ارائه شده است:

ابزارهای واردات داده (واردکننده‌ها)

یکی از مهم‌ترین نیازها برای استفاده عملی، وارد کردن تراکنش‌ها از بانک‌ها، کارت‌های اعتباری و سایر مؤسسات مالی است. بین‌کانت یک چارچوب واردات و اسکریپت‌های وارداتی که توسط جامعه مشارکت‌کنندگان ارائه شده‌اند را برای این منظور فراهم می‌کند. در بین‌کانت 2.x، ماژول داخلی beancount.ingest (با دستوراتی مانند bean-extract و bean-identify) برای تعریف پلاگین‌های واردکننده در پایتون و اعمال آن‌ها بر صورت‌حساب‌های دانلود شده استفاده می‌شد. در بین‌کانت 3.x، این با یک پروژه خارجی به نام بین‌گالپ جایگزین شده است. بین‌گالپ یک چارچوب اختصاصی برای واردکننده‌ها است که از beancount.ingest تکامل یافته و اکنون روش توصیه شده برای خودکارسازی واردات تراکنش‌ها برای بین‌کانت 3.0 است. این امکان نوشتن اسکریپت‌های پایتون یا ابزارهای خط فرمان را فراهم می‌کند که فایل‌های خارجی (مانند صورت‌حساب‌های CSV یا PDF) را می‌خوانند و خروجی ورودی‌های بین‌کانت را تولید می‌کنند. این رویکرد جدید، منطق واردات را از هسته بین‌کانت جدا می‌کند – برای مثال، دستور قدیمی bean-extract در نسخه 3 حذف شده است، و به جای آن، اسکریپت‌های وارداتی شما خودشان تراکنش‌ها را از طریق رابط خط فرمان (CLI) بین‌گالپ تولید می‌کنند.

ده‌ها واردکننده آماده برای بانک‌ها و فرمت‌های مختلف وجود دارد که توسط جامعه مشارکت‌کنندگان ارائه شده‌اند. اسکریپت‌های واردکننده برای مؤسسات در سراسر جهان – از علی‌پی و وی‌چت‌پی در چین، تا بانک‌های مختلف اروپایی (کومرزبانک، آی‌ان‌جی، ای‌بی‌ان آمرو و غیره)، تا بانک‌های آمریکایی مانند چیس و امکس – موجود است. بسیاری از این‌ها در مخازن عمومی (اغلب در گیت‌هاب) یا در بسته‌هایی مانند beancount-importers جمع‌آوری شده‌اند. به عنوان مثال، پروژه ابزارهای بین‌کانت تاریوخ (tariochbctools) واردکننده‌هایی برای بانک‌های سوئیس و بریتانیا فراهم می‌کند و حتی واردات تراکنش‌های رمزنگاری را نیز مدیریت می‌کند. مثال دیگر لیزی بین‌کانت است که مجموعه‌ای از واردکننده‌های رایج (برای وایز، مونزو، ریوولوت، آی‌بی‌کی‌آر و غیره) را بسته‌بندی می‌کند و یک راه‌اندازی مبتنی بر داکر برای خودکارسازی آسان فراهم می‌آورد. مهم نیست از کدام بانک یا سرویس مالی استفاده می‌کنید، به احتمال زیاد کسی یک واردکننده بین‌کانت برای آن نوشته است – یا می‌توانید با استفاده از چارچوب بین‌گالپ، واردکننده خود را بنویسید. انعطاف‌پذیری پایتون به این معنی است که واردکننده‌ها می‌توانند فایل‌های CSV/اکسل، دانلودهای OFX/QIF، یا حتی اسکرپینگ APIها را تجزیه کنند، سپس تراکنش‌ها را در فرمت استاندارد بین‌کانت منتشر کنند.

ویرایش و یکپارچه‌سازی با ویرایشگرها

از آنجایی که دفاتر حسابداری بین‌کانت (Beancount ledgers) صرفاً متن هستند، کاربران اغلب از ویرایشگرهای متنی یا IDEهای مورد علاقه خود برای نگهداری آن‌ها استفاده می‌کنند. اکوسیستم، افزونه‌های پشتیبانی ویرایشگر را برای روان‌تر کردن این تجربه ارائه می‌دهد. افزونه‌هایی برای بسیاری از ویرایشگرهای محبوب وجود دارد که قابلیت‌هایی مانند برجسته‌سازی نحو (syntax highlighting)، تکمیل خودکار نام حساب‌ها و بررسی خطای بلادرنگ را اضافه می‌کنند:

  • حالت بین‌کانت Emacs: یک حالت اصلی Emacs (beancount-mode) برای ویرایش فایل‌های .beancount در دسترس است که ویژگی‌هایی مانند رنگ‌آمیزی نحو و یکپارچه‌سازی با بررسی‌کننده بین‌کانت را ارائه می‌دهد. این حالت حتی می‌تواند bean-check را در پس‌زمینه اجرا کند تا خطاها در دفتر حسابداری (مانند یک تراکنش نامتوازن) هنگام ویرایش علامت‌گذاری شوند.
  • افزونه VS Code: یک افزونه بین‌کانت در بازارچه VSCode، امکانات مشابهی را برای کاربران ویژوال استودیو کد فراهم می‌کند. این افزونه از برجسته‌سازی نحو، تراز کردن مبالغ، تکمیل خودکار برای حساب‌ها/دریافت‌کنندگان و حتی بررسی‌های تراز لحظه‌ای هنگام ذخیره فایل پشتیبانی می‌کند. همچنین می‌تواند با فاوا (Fava) یکپارچه شود و به شما امکان می‌دهد رابط وب فاوا را از درون VSCode راه‌اندازی کنید.
  • افزونه‌ها یا حالت‌هایی نیز برای Vim، Atom و سایر ویرایشگرها وجود دارد. به عنوان مثال، یک گرامر Tree-sitter برای بین‌کانت وجود دارد که برجسته‌سازی نحو را در ویرایشگرهای مدرن تامین می‌کند و حتی در جزء ویرایشگر مبتنی بر وب فاوا نیز پذیرفته شده است. به طور خلاصه، هر محیط ویرایشی که داشته باشید، جامعه احتمالاً افزونه‌ای را برای راحت و بدون خطا کردن ویرایش فایل‌های بین‌کانت ارائه کرده است.

برای ورود سریع تراکنش‌ها در خارج از ویرایشگرهای سنتی، ابزارهایی مانند Bean-add و برنامه‌های موبایل نیز وجود دارند. Bean-add یک ابزار خط فرمان است که امکان افزودن یک تراکنش جدید را از طریق یک اعلان یا دستور تک‌خطی فراهم می‌کند و پیشنهادات تاریخ و حساب را مدیریت می‌کند. در موبایل، پروژه‌ای به نام بین‌کانت موبایل (Beancount Mobile) یک رابط کاربری ساده برای ورود تراکنش‌ها در حین حرکت (به عنوان مثال، ثبت یک خرید نقدی از طریق تلفن شما) ارائه می‌دهد. علاوه بر این، یک ربات تلگرام بین‌کانت (Beancount Telegram Bot) برای ثبت تراکنش‌ها از طریق پیام‌رسانی وجود دارد – می‌توانید پیامی حاوی جزئیات تراکنش ارسال کنید و ربات آن را در فایل دفتر حسابداری شما قالب‌بندی می‌کند.

رابط‌های کاربری وب و ابزارهای بصری‌سازی

(Fava) رابط کاربری وب Fava یک داشبورد تعاملی برای Beancount فراهم می‌کند که شامل گزارش‌هایی مانند صورت سود و زیان با بصری‌سازی‌ها (که در اینجا به صورت یک تری‌مپ از هزینه‌ها بر اساس دسته‌بندی نشان داده شده است) در کنار جداول حساب‌ها و مانده‌ها می‌باشد.

رابط کاربری اصلی Beancount، Fava است که یک رابط کاربری وب مدرن محسوب می‌شود. Fava به عنوان یک برنامه وب محلی اجرا می‌شود که فایل Beancount شما را می‌خواند و یک تجربه تعاملی غنی را در مرورگر شما ایجاد می‌کند. این ابزار مجموعه کاملی از گزارش‌ها را ارائه می‌دهد: ترازنامه، صورت سود و زیان، ارزش خالص در طول زمان، دارایی‌های سبد سرمایه‌گذاری، نمودارهای عملکرد، بودجه‌ها و موارد دیگر – همه به صورت آماده استفاده. کاربران اغلب Fava را به عنوان دلیل اصلی انتخاب Beancount نسبت به سایر ابزارهای حسابداری متنی ساده ذکر می‌کنند. با یک دستور واحد (fava ledger.beancount)، می‌توانید امور مالی خود را با نمودارها و جداول به جای متن مرور کنید. Fava از ویژگی‌هایی مانند: مشاهده جزئیات حساب‌ها، فیلتر کردن تراکنش‌ها بر اساس دریافت‌کننده یا برچسب، یک ویرایشگر کوئری (که به شما امکان می‌دهد کوئری‌های Beancount را اجرا کرده و نتایج را در مرورگر ببینید)، و حتی یک ویرایشگر وب یکپارچه برای دفتر کل شما پشتیبانی می‌کند. این ابزار بسیار کاربرپسند است و حسابداری متنی ساده را برای کسانی که رابط‌های کاربری بصری را ترجیح می‌دهند، قابل دسترس می‌سازد.

از نظر فنی، Fava با پایتون (Flask در بک‌اند) و جاوااسکریپت (Svelte در فرانت‌اند) نوشته شده است. این ابزار چرخه انتشار خاص خود را دارد و فعالانه نگهداری می‌شود. قابل ذکر است که Fava همگام با توسعه Beancount پیش رفته است – به عنوان مثال، Fava 1.30 پشتیبانی از Beancount v3 را اضافه کرد و برای استفاده داخلی به پکیج‌های جدید beanquery و beangulp تغییر یافت. (این ابزار همچنان از Beancount 2 برای دفترهای کل قدیمی‌تر پشتیبانی می‌کند.) تمرکز Fava بر قابلیت استفاده شامل جزئیات کاربردی مانند تکمیل خودکار در ویرایشگر وب، و یک رابط کاربری شیک با حالت تاریک و نمودارهای واکنش‌گرا است. همچنین یک نسخه فرعی به نام Fava-GTK وجود دارد که Fava را در قالب یک برنامه دسکتاپ برای کاربران GNOME/Linux که حس برنامه بومی را ترجیح می‌دهند، بسته‌بندی می‌کند.

فراتر از Fava، گزینه‌های بصری‌سازی و تحلیل دیگری نیز وجود دارد. از آنجا که داده‌های Beancount می‌توانند به صورت جداول صادر یا کوئری شوند، کاربران اغلب از ابزارهایی مانند نوت‌بوک‌های ژوپیتر یا پانداس برای تحلیل سفارشی استفاده می‌کنند. به عنوان مثال، یکی از کاربران توضیح می‌دهد که چگونه داده‌ها را از Beancount از طریق رابط کوئری به یک دیتافریم پانداس می‌کشد تا یک گزارش سفارشی آماده کند. همچنین اسکریپت‌های مشارکت‌یافته توسط جامعه برای گزارش‌های خاص وجود دارد – به عنوان مثال، یک ابزار تحلیل تخصیص سبد سرمایه‌گذاری یا یک نمودار کنترل فرآیند برای هزینه‌ها در مقابل ارزش خالص. با این حال، برای اکثر افراد، Fava قدرت گزارش‌دهی بیش از حد کافی را بدون نیاز به نوشتن کد فراهم می‌کند. این ابزار حتی از افزونه‌ها نیز پشتیبانی می‌کند: می‌توانید فایل‌های پایتون را قرار دهید که صفحات گزارش یا نمودارهای جدیدی را به Fava اضافه می‌کنند. یک افزونه قابل توجه، fava-envelope برای بودجه‌بندی پاکتی در Fava است. در مجموع، Fava به عنوان مرکز اصلی بصری‌سازی اکوسیستم Beancount عمل می‌کند.

ابزارهای خط فرمان و اسکریپت‌ها

Beancount با ابزارهای CLI مختلفی همراه است (به ویژه در شاخه قدیمی‌تر v2، که برخی از آن‌ها در v3 حذف شدند). این ابزارها بر روی فایل دفتر کل شما عمل می‌کنند تا آن را بررسی کنند یا گزارش‌های خاصی را به صورت متنی یا HTML تولید کنند:

  • bean-check: یک اعتبارسنج است که خطاهای نحوی یا خطاهای حسابداری را در فایل بررسی می‌کند. اجرای bean-check myfile.beancount شما را از هرگونه عدم توازن، حساب گم‌شده یا سایر مسائل آگاه می‌کند و در صورت عدم وجود خطا در فایل، هیچ خروجی ندارد.
  • bean-format: یک قالب‌بند است که دفتر کل شما را با تراز کردن اعداد در ستون‌های منظم، بسیار شبیه به اجرای یک قالب‌بند کد بر روی کد منبع، مرتب می‌کند. این کار به تمیز و خوانا نگه داشتن فایل کمک می‌کند.
  • bean-query: یک پوسته تعاملی یا ابزار دسته‌ای برای اجرای زبان پرس‌وجوی Beancount بر روی دفتر کل شما است. می‌توانید از آن برای تولید گزارش‌های جدولی سفارشی استفاده کنید (به عنوان مثال، bean-query myfile.beancount "SELECT account, sum(amount) WHERE ...").
  • bean-report: یک تولیدکننده گزارش همه‌کاره (در v2) است که می‌تواند گزارش‌های از پیش تعریف‌شده (ترازنامه، صورت سود و زیان، تراز آزمایشی و غیره) را به کنسول یا فایل‌ها خروجی دهد. به عنوان مثال، bean-report file.beancount balances مانده حساب‌ها را چاپ می‌کند. (در عمل، بسیاری از این گزارش‌های متنی با نمایش زیباتر فاوا جایگزین شده‌اند.)
  • bean-web / bean-bake: یک رابط وب قدیمی‌تر بود که گزارش‌ها را بر روی localhost ارائه می‌داد یا آن‌ها را به عنوان فایل‌های HTML ایستا "پخت" می‌کرد. این‌ها عمدتاً قبل از محبوبیت فاوا استفاده می‌شدند؛ bean-web یک نمای وب پایه از همان گزارش‌هایی که bean-report می‌توانست تولید کند، ارائه می‌داد. در Beancount 3، bean-web حذف شده است (زیرا فاوا اکنون رابط کاربری وب توصیه شده است و تجربه برتری را ارائه می‌دهد).
  • bean-example: ابزاری برای تولید یک فایل دفتر کل نمونه (مفید برای تازه‌واردان تا یک الگو از ورودی‌های Beancount را ببینند).
  • bean-doctor: یک ابزار اشکال‌زدایی است که می‌تواند مسائل را در دفتر کل یا محیط شما تشخیص دهد.

قابل ذکر است که از Beancount v3، بسیاری از این ابزارها از پروژه اصلی خارج شدند. بسته اصلی Beancount بهینه‌سازی شد و ابزارهایی مانند موتور پرس‌وجو و واردکننده‌ها برای نگهداری آسان‌تر به بسته‌های جداگانه (beanquery، beangulp و غیره) تقسیم شدند. به عنوان مثال، قابلیت bean-query اکنون توسط ابزار beanquery که به صورت جداگانه نصب می‌شود، ارائه می‌شود. از دیدگاه کاربر، قابلیت همچنان در دسترس است؛ فقط ماژولار شده است. جامعه آرچ لینوکس این تغییر را هنگام به‌روزرسانی فاوا متوجه شد: بسته فاوا وابستگی‌هایی به beanquery و beangulp اضافه کرد تا از Beancount 3.x پشتیبانی کند. این رویکرد ماژولار همچنین به دیگران در جامعه اجازه می‌دهد تا به این ابزارهای کمکی مستقل‌تر از چرخه انتشار Beancount کمک کنند.

افزونه‌ها و افزایه‌های Beancount

یکی از نقاط قوت برجسته اکوسیستم Beancount، سیستم افزونه‌ها است. با افزودن خط plugin "module.name" در فایل Beancount خود، می‌توانید منطق سفارشی پایتون را که در طول پردازش دفتر کل اجرا می‌شود، اضافه کنید. جامعه کاربری افزونه‌های زیادی را برای گسترش قابلیت‌های Beancount ایجاد کرده است:

  • کیفیت داده و قوانین: نمونه‌ها شامل beancount-balexpr است که به شما امکان می‌دهد معادلات شامل چندین حساب را تأیید کنید (مثلاً دارایی الف + دارایی ب = بدهی ایکس)، و beancount-checkclosed که به طور خودکار اظهارات تراز را هنگام بستن یک حساب وارد می‌کند تا اطمینان حاصل شود که خالص آن صفر است. حتی یک افزونه برای اطمینان از مرتب بودن تراکنش‌ها در فایل بر اساس تاریخ (autobean.sorted) وجود دارد تا ورودی‌های نامرتب را شناسایی کند.
  • اتوماسیون: افزونه beancount-asset-transfer می‌تواند ورودی‌های انتقال غیرنقدی بین حساب‌ها را تولید کند (مفید برای جابجایی سهام بین کارگزاران در حالی که مبنای هزینه حفظ می‌شود). افزونه دیگری به نام autobean.xcheck، دفتر کل Beancount شما را با صورت‌حساب‌های خارجی برای یافتن مغایرت‌ها مقایسه می‌کند.
  • تراکنش‌های تکراری و بودجه‌بندی: افزونه "repeat" یا interpolate توسط Akuukis امکان تعریف تراکنش‌های تکراری یا توزیع یک هزینه سالانه در طول ماه‌ها را فراهم می‌کند. برای بودجه‌بندی، افزایه fava-envelope (که از طریق Fava استفاده می‌شود) از متدولوژی بودجه‌بندی پاکتی در متن ساده پشتیبانی می‌کند. همچنین MiniBudget توسط فرانک دیویس وجود دارد – یک ابزار مستقل کوچک با الهام از Beancount برای کمک به بودجه‌بندی برای استفاده شخصی یا کسب‌وکارهای کوچک.
  • مالیات و گزارش‌دهی: برخی افزونه‌ها به حسابداری مالیاتی کمک می‌کنند، مانند افزونه‌ای که سود سرمایه را به طور خودکار به کوتاه‌مدت در مقابل بلندمدت طبقه‌بندی می‌کند. افزونه دیگری (fincen_114 توسط جاستوس پندلتون) گزارش FBAR را برای مالیات‌دهندگان آمریکایی دارای حساب‌های خارجی تولید می‌کند، که نشان می‌دهد چگونه داده‌های Beancount می‌توانند برای گزارش‌دهی نظارتی مورد استفاده قرار گیرند.
  • مخازن افزونه‌های جامعه کاربری: مجموعه‌های افزونه‌های منتخب مانند beancount-plugins (توسط دیو استفنز) وجود دارند که بر مواردی مانند ورودی‌های استهلاک تمرکز دارند، و beancount-plugins-zack (توسط استفانو زاکیرولی) که شامل کمک‌کننده‌های متنوعی مانند دستورالعمل‌های مرتب‌سازی هستند.

علاوه بر افزونه‌ها، سایر ابزارهای کاربردی مرتبط با Beancount نیازهای خاصی را برطرف می‌کنند. به عنوان مثال، beancount-black یک قالب‌بند خودکار مشابه قالب‌بند کد Black است، اما برای فایل‌های دفتر کل Beancount. یک ربات Beancount (تلگرام/مترموست) برای افزودن تراکنش‌ها از طریق چت وجود دارد که قبلاً ذکر شد، و یک گردش کار آلفرد برای macOS برای افزودن سریع تراکنش‌ها به فایل شما. ابزاری به نام Pinto یک CLI "فوق‌العاده" با ورود تعاملی (مانند یک bean-add پیشرفته) ارائه می‌دهد. برای کسانی که از سیستم‌های دیگر مهاجرت می‌کنند، مبدل‌هایی (YNAB2Beancount, CSV2Beancount, GnuCash2Beancount, Ledger2Beancount) وجود دارند که به وارد کردن داده‌ها از جاهای دیگر کمک می‌کنند.

به طور خلاصه، اکوسیستم Beancount بسیار گسترده است. جدول ۱ در زیر برخی از ابزارها و افزایه‌های اصلی را با نقش‌هایشان فهرست می‌کند:

| ابزار/افزایه | توضیحات Beancount is a simple, plain- text accounting system. It is a command-line tool that helps you manage your finances. It is designed for people who want to keep track of their finances in a simple, plain-text format. It is also designed for people who want to automate their accounting processes.

Beancount Features

  • Double-entry bookkeeping: Beancount uses the double-entry bookkeeping system, which is a fundamental concept in accounting. This system ensures that every transaction is recorded in at least two accounts, with equal and opposite effects. This helps to maintain the balance of the ledger and prevent errors.
  • Plain-text format: Beancount stores your financial data in plain-text files. This makes it easy to read, edit, and manage your data using any text editor. It also makes it easy to version control your data using tools like Git.
  • Command-line interface: Beancount provides a command-line interface (CLI) for interacting with your financial data. This allows you to quickly add, edit, and query your transactions using simple commands. It also makes it easy to integrate Beancount with other tools and scripts.
  • Extensible plugin system: Beancount has a powerful plugin system that allows you to extend its functionality with custom scripts. You can use plugins to automate tasks, generate reports, and integrate with other services.
  • Reporting and analysis: Beancount provides various reporting and analysis tools to help you understand your financial situation. You can generate reports such as balance sheets, income statements, and cash flow statements. You can also use Beancount to analyze your spending patterns and identify areas where you can save money.
  • Multi-currency support: Beancount supports multiple currencies, allowing you to track transactions in different currencies. It also handles currency conversions automatically, making it easy to manage your international finances.
  • Automated reconciliation: Beancount can help you reconcile your accounts with your bank statements. It can automatically match transactions and identify discrepancies, saving you time and effort.
  • Privacy and security: Beancount stores your financial data locally on your computer, giving you full control over your data. It does not send your data to any third-party servers, ensuring your privacy and security.

Why Choose Beancount?

  • Simplicity: Beancount is designed to be simple and easy to use. Its plain-text format and command-line interface make it accessible to anyone, regardless of their technical expertise.
  • Flexibility: Beancount is highly flexible and customizable. Its plugin system allows you to tailor it to your specific needs and workflows.
  • Control: With Beancount, you have full control over your financial data. You can store it locally, back it up, and manage it using your preferred tools.
  • Transparency: Beancount's plain-text format makes your financial data transparent and auditable. You can easily see how your transactions are recorded and how your balances are calculated.
  • Community: Beancount has a vibrant and supportive community of users and developers. You can find help, share tips, and contribute to the project.

Get Started with Beancount

Ready to take control of your finances with Beancount? Here's how you can get started:

  1. Install Beancount: Follow the instructions in the official documentation to install Beancount on your system.
  2. Create your first ledger: Start by creating a new plain-text file for your Beancount ledger.
  3. Add your transactions: Begin adding your financial transactions to your ledger using Beancount's simple syntax.
  4. Generate reports: Use Beancount's reporting tools to generate insights into your financial situation.
  5. Explore plugins: Discover and experiment with various plugins to extend Beancount's functionality.

Join the Beancount community today and experience the power of plain-text accounting!

مقایسه با لجر، اچ‌لجر و سیستم‌های مشابه

بین‌کانت (Beancount) به خانواده ابزارهای حسابداری دوطرفه متن ساده تعلق دارد که در میان آن‌ها لجر CLI (Ledger CLI) (لجر جان ویگلی) و اچ‌لجر (hledger) برجسته هستند. در حالی که همه این سیستم‌ها ایده اصلی فایل‌های دفتر کل متن ساده و حسابداری دوطرفه را به اشتراک می‌گذارند، اما در نحو، فلسفه و بلوغ اکوسیستم با یکدیگر تفاوت دارند. جدول زیر تفاوت‌های کلیدی بین بین‌کانت، لجر و اچ‌لجر را برجسته می‌کند:

| جنبه | بین‌کانت (پایتون)

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

بین‌کانت به اندازه کافی منعطف است تا برای ردیابی مالی شخصی و همچنین (در برخی موارد) حسابداری کسب‌وکارهای کوچک استفاده شود. رویکرد اصلی حسابداری دوطرفه آن در هر دو سناریو یکسان است، اما مقیاس و رویه‌های خاص می‌توانند متفاوت باشند.

مالیه شخصی

بسیاری از کاربران بین‌کانت از آن برای مدیریت امور مالی فردی یا خانوادگی خود استفاده می‌کنند. یک تنظیمات معمول مالیه شخصی در بین‌کانت ممکن است شامل حساب‌های جاری و پس‌انداز، کارت‌های اعتباری، سرمایه‌گذاری‌ها، وام‌ها، دسته‌بندی‌های درآمد (حقوق، سود و غیره) و دسته‌بندی‌های هزینه (اجاره، خواربار، سرگرمی و غیره) باشد. کاربران تراکنش‌های روزمره را به صورت دستی (با وارد کردن رسیدها، صورت‌حساب‌ها و غیره) یا با وارد کردن از صورت‌حساب‌های بانکی با استفاده از ابزارهای واردکننده که قبلاً بحث شد، ثبت می‌کنند. مزایایی که بین‌کانت برای مالیه شخصی به ارمغان می‌آورد عبارتند از:

  • یکپارچه‌سازی و تحلیل: تمام تراکنش‌های شما می‌توانند در یک فایل متنی (یا مجموعه‌ای از فایل‌ها) قرار گیرند که سال‌ها سابقه مالی را نشان می‌دهد. این کار تحلیل روندهای بلندمدت را آسان می‌کند. با زبان پرس‌وجوی بین‌کانت یا با فاوا، می‌توانید به سوالاتی مانند "در 5 سال گذشته چقدر برای سفر هزینه کردم؟" یا "میانگین قبض ماهانه خواربار من چقدر است؟" در عرض چند ثانیه پاسخ دهید. یکی از کاربران اشاره کرد که پس از روی آوردن به بین‌کانت، «تحلیل داده‌های مالی (هزینه‌ها، کمک‌ها، مالیات و غیره) بسیار ساده است»، چه از طریق فاوا و چه با پرس‌وجو از داده‌ها و استفاده از ابزارهایی مانند Pandas. در اصل، دفتر کل شما به یک پایگاه داده مالی شخصی تبدیل می‌شود که می‌توانید به دلخواه از آن پرس‌وجو کنید.
  • بودجه‌بندی و برنامه‌ریزی: در حالی که بین‌کانت یک سیستم بودجه‌بندی را تحمیل نمی‌کند، می‌توانید آن را پیاده‌سازی کنید. برخی از کاربران با ایجاد حساب‌های بودجه یا استفاده از افزونه fava-envelope، بودجه‌بندی پاکتی را انجام می‌دهند. برخی دیگر به سادگی از گزارش‌های دوره‌ای برای مقایسه هزینه‌ها با اهداف استفاده می‌کنند. از آنجا که متن ساده است، یکپارچه‌سازی بین‌کانت با ابزارهای بودجه‌بندی خارجی یا صفحات گسترده (اکسل) ساده است (صادر کردن داده‌ها یا استفاده از خروجی‌های CSV از پرس‌وجوها).
  • ردیابی سرمایه‌گذاری‌ها و ارزش خالص دارایی: بین‌کانت به لطف مدیریت قوی مبنای بهای تمام شده و قیمت‌های بازار، در ردیابی سرمایه‌گذاری‌ها عالی عمل می‌کند. می‌توانید خرید/فروش سهام، ارزهای دیجیتال و غیره را با جزئیات بهای تمام شده ثبت کنید و سپس از دستورات Prices برای پیگیری ارزش بازار استفاده کنید. فاوا می‌تواند نمودار ارزش خالص دارایی در طول زمان و تفکیک سبد سرمایه‌گذاری بر اساس طبقه دارایی را نشان دهد. این برای مدیریت ثروت شخصی بسیار مفید است – شما بینش‌هایی مشابه آنچه ابزارهای تجاری مانند Mint یا Personal Capital ارائه می‌دهند، به دست می‌آورید، اما کاملاً تحت کنترل خودتان. مدیریت چند ارزی نیز داخلی است، بنابراین اگر ارزهای خارجی یا ارزهای دیجیتال نگهداری می‌کنید، بین‌کانت می‌تواند آن‌ها را ردیابی کرده و برای گزارش‌دهی تبدیل کند.
  • تطبیق و دقت: مالیه شخصی اغلب شامل تطبیق با صورت‌حساب‌های بانکی است. با بین‌کانت، می‌توان به طور منظم حساب‌ها را با استفاده از اظهارات تراز (balance assertions) یا قابلیت اسناد تطبیق داد. به عنوان مثال، هر ماه ممکن است یک ورودی balance Assets:Bank:Checking <date> <balance> اضافه کنید تا تأیید کنید که دفتر کل شما با صورت‌حساب بانک در پایان ماه مطابقت دارد. ابزار bean-check (یا نمایش خطای فاوا) در صورت عدم تطابق، به شما هشدار می‌دهد. یکی از کاربران به انجام تطبیق ماهانه تمام حساب‌ها اشاره می‌کند که «به شناسایی هرگونه فعالیت غیرعادی کمک می‌کند» – یک روش خوب بهداشت مالی شخصی که بین‌کانت آن را تسهیل می‌کند.
  • اتوماسیون: افراد آشنا به فناوری، بخش‌های بزرگی از گردش کار مالیه شخصی خود را با بین‌کانت خودکار کرده‌اند. با استفاده از واردکننده‌ها، کرون جاب‌ها و شاید کمی پایتون، می‌توانید سیستم خود را طوری تنظیم کنید که، به عنوان مثال، هر روز تراکنش‌های بانکی شما واکشی شده (برخی از OFX یا APIها استفاده می‌کنند) و به فایل بین‌کانت شما اضافه شوند، که بر اساس قوانین دسته‌بندی شده‌اند. با گذشت زمان، دفتر کل شما عمدتاً به صورت خودکار به‌روزرسانی می‌شود و شما فقط در صورت نیاز آن را بررسی و تنظیم می‌کنید. یکی از اعضای جامعه در Hacker News به اشتراک گذاشت که پس از 3 سال، دفاتر بین‌کانت آن‌ها «95% خودکار» بودند. این سطح از اتوماسیون به دلیل باز بودن متن ساده بین‌کانت و قابلیت‌های اسکریپت‌نویسی آن امکان‌پذیر است.

کاربران مالیه شخصی اغلب بین‌کانت را به صفحات گسترده (اکسل) یا برنامه‌ها ترجیح می‌دهند زیرا مالکیت کامل داده‌ها را به آن‌ها می‌دهد (عدم وابستگی به یک سرویس ابری که ممکن است تعطیل شود – نگرانی که با توقف Mint، به عنوان مثال، مطرح شد) و به این دلیل که عمق بینش زمانی که تمام داده‌های شما یکپارچه شده‌اند، بیشتر است. منحنی یادگیری ناچیز نیست – باید حسابداری پایه و نحو بین‌کانت را یاد گرفت – اما منابعی مانند مستندات رسمی و آموزش‌های جامعه به تازه‌واردان کمک می‌کنند تا شروع کنند. پس از راه‌اندازی، بسیاری متوجه می‌شوند که داشتن تصویری واضح و قابل اعتماد از امور مالی خود در هر زمان، آرامش خاطر به ارمغان می‌آورد.

حسابداری کسب‌وکارهای کوچک

استفاده از بین‌کاونت (Beancount) برای یک کسب‌وکار کوچک (یا سازمان غیرانتفاعی، باشگاه و غیره) کمتر از استفاده شخصی رایج است، اما قطعاً امکان‌پذیر است و برخی با موفقیت این کار را انجام داده‌اند. چارچوب حسابداری دوطرفه بین‌کاونت در واقع همان سیستمی است که زیربنای حسابداری شرکتی را تشکیل می‌دهد، فقط بدون برخی از ویژگی‌های سطح بالاتر که نرم‌افزارهای حسابداری اختصاصی ارائه می‌دهند (مانند ماژول‌های صدور فاکتور یا یکپارچه‌سازی حقوق و دستمزد). در ادامه نحوه انطباق بین‌کاونت با زمینه یک کسب‌وکار کوچک آورده شده است:

  • دفتر کل و صورت‌های مالی: یک کسب‌وکار کوچک می‌تواند فایل بین‌کاونت را به عنوان دفتر کل خود در نظر بگیرد. شما حساب‌های دارایی برای حساب‌های بانکی، حساب‌های دریافتنی، شاید موجودی کالا؛ حساب‌های بدهی برای کارت‌های اعتباری، وام‌ها، حساب‌های پرداختنی؛ حقوق صاحبان سهام برای سرمایه مالک؛ حساب‌های درآمد برای فروش یا خدمات؛ و حساب‌های هزینه برای تمام هزینه‌های کسب‌وکار خواهید داشت. با نگهداری این دفتر کل، می‌توانید در هر زمان با استفاده از گزارش‌ها یا پرس‌وجوهای بین‌کاونت، صورت سود و زیان (سود و زیان) و ترازنامه تولید کنید. در واقع، گزارش‌های داخلی بین‌کاونت یا فاوا (Fava) می‌توانند در عرض چند ثانیه ترازنامه و صورت سود و زیان را تولید کنند که کاملاً با اصول حسابداری مطابقت دارند. این می‌تواند برای یک عملیات کوچک جهت ارزیابی سودآوری، وضعیت مالی و جریان نقدی (با کمی پرس‌وجو برای جریان نقدی، زیرا صورت‌های جریان نقدی مستقیم داخلی نیستند اما قابل استخراج هستند) کافی باشد.
  • فاکتورها و حساب‌های دریافتنی، حساب‌های پرداختنی: بین‌کاونت سیستم صدور فاکتور داخلی ندارد؛ کاربران معمولاً صدور فاکتور را در خارج از آن (مثلاً ایجاد فاکتور در ورد یا یک برنامه فاکتور) انجام می‌دهند و سپس نتایج را در بین‌کاونت ثبت می‌کنند. به عنوان مثال، هنگامی که فاکتوری صادر می‌کنید، یک ثبت حسابداری شامل بدهکار کردن حساب‌های دریافتنی و بستانکار کردن درآمد را ثبت می‌کنید. هنگامی که پرداخت انجام می‌شود، حساب نقد/بانک را بدهکار و حساب‌های دریافتنی را بستانکار می‌کنید. به این ترتیب، می‌توانید با بررسی مانده حساب‌های دریافتنی، مطالبات معوق را پیگیری کنید. همین امر در مورد صورت‌حساب‌ها (حساب‌های پرداختنی) نیز صدق می‌کند. اگرچه این روش دستی‌تر از نرم‌افزارهای حسابداری تخصصی است (که ممکن است یادآوری ارسال کنند یا با ایمیل‌ها یکپارچه شوند)، اما کاملاً قابل انجام است. برخی از کاربران الگوها یا جریان‌های کاری را به اشتراک گذاشته‌اند که چگونه فاکتورها را با بین‌کاونت مدیریت می‌کنند و اطمینان حاصل می‌کنند که فاکتورهای باز را از دست نمی‌دهند (به عنوان مثال، با استفاده از فراداده یا پرس‌وجوهای سفارشی برای لیست کردن فاکتورهای پرداخت نشده).
  • موجودی کالا یا بهای تمام شده کالای فروش رفته: برای کسب‌وکارهایی که محصولات می‌فروشند، بین‌کاونت می‌تواند خرید و فروش موجودی کالا را ردیابی کند، اما نیاز به ثبت‌های دقیق و منظم دارد. شما می‌توانید از ویژگی‌های موجودی کالا و حسابداری بهای تمام شده استفاده کنید: خرید موجودی کالا یک حساب دارایی را افزایش می‌دهد (با بهای تمام شده مرتبط با اقلام)، فروش آن بهای تمام شده را به یک هزینه (بهای تمام شده کالای فروش رفته) منتقل می‌کند و درآمد را ثبت می‌کند. از آنجایی که بین‌کاونت بر تطبیق دسته‌ها اصرار دارد، کاهش صحیح موجودی کالا با بهای تمام شده درست را اعمال می‌کند، که در صورت انجام صحیح می‌تواند دقت محاسبات سود ناخالص شما را تضمین کند. با این حال، هیچ ردیابی خودکار SKU یا موارد مشابه وجود ندارد – همه چیز در سطح مالی (مقدار و بهای تمام شده) است.
  • حقوق و دستمزد و تراکنش‌های پیچیده: بین‌کاونت می‌تواند تراکنش‌های حقوق و دستمزد (هزینه حقوق، کسورات مالیاتی و غیره) را ثبت کند، اما محاسبه این ارقام ممکن است به صورت خارجی یا از طریق ابزار دیگری انجام شود و سپس فقط در بین‌کاونت ثبت گردد. برای یک کسب‌وکار بسیار کوچک (مثلاً یک یا دو کارمند)، این کار قابل مدیریت است. به عنوان مثال، شما یک ثبت روزنامه واحد برای هر دوره پرداخت که دستمزدها، مالیات کسر شده، هزینه مالیات کارفرما، وجه نقد پرداخت شده و غیره را تفکیک می‌کند، ثبت خواهید کرد. انجام این کار به صورت دستی مشابه نحوه انجام آن در ثبت‌های روزنامه QuickBooks است – نیاز به دانش در مورد اینکه کدام حساب‌ها را تحت تأثیر قرار دهید، دارد.
  • چند کاربره و حسابرسی: یکی از چالش‌ها در محیط کسب‌وکار این است که آیا چندین نفر نیاز به دسترسی به دفاتر دارند یا یک حسابدار نیاز به بررسی آن‌ها دارد. از آنجایی که بین‌کاونت یک فایل متنی است، به صورت بلادرنگ چند کاربره نیست. با این حال، میزبانی فایل در یک مخزن گیت (Git repository) می‌تواند همکاری را امکان‌پذیر سازد: هر شخص می‌تواند ویرایش و کامیت (commit) کند، و تفاوت‌ها را می‌توان ادغام (merge) کرد.
  • انطباق با مقررات: برای اظهارنامه مالیاتی یا انطباق با مقررات، داده‌های بین‌کاونت می‌توانند برای تولید گزارش‌های لازم استفاده شوند، اما ممکن است نیاز به پرس‌وجوهای سفارشی یا افزونه‌ها داشته باشد. ما نمونه‌ای از یک افزونه جامعه برای گزارش‌دهی انطباق با دولت هند و یکی برای گزارش‌دهی FinCEN FBAR را دیدیم. این نشان می‌دهد که با تلاش، بین‌کاونت می‌تواند برای برآورده کردن الزامات گزارش‌دهی خاص تطبیق یابد. کسب‌وکارهای کوچک در حوزه‌های قضایی با الزامات ساده (حسابداری نقدی یا تعهدی پایه) قطعاً می‌توانند دفاتر را در بین‌کاونت نگهداری کرده و صورت‌های مالی را برای اظهارنامه‌های مالیاتی تولید کنند. با این حال، ویژگی‌هایی مانند جداول استهلاک یا امورتایزیشن (amortization) ممکن است نیاز به ثبت‌های دستی شما یا استفاده از یک افزونه داشته باشد (برای مثال، افزونه‌های استهلاک دیو استفنز به خودکارسازی آن کمک می‌کنند). هیچ رابط کاربری گرافیکی (GUI) برای «کلیک کردن برای استهلاک دارایی» مانند برخی نرم‌افزارهای حسابداری وجود ندارد؛ شما استهلاک را به عنوان تراکنش‌ها کدگذاری می‌کنید (که به نوعی آن را از ابهام خارج می‌کند – همه چیز یک ثبت است که می‌توانید آن را بررسی کنید).

در عمل، بسیاری از صاحبان کسب‌وکارهای کوچک با گرایش فنی، در صورتی که کنترل و شفافیت را به راحتی QuickBooks ترجیح دهند، از بین‌کاونت (یا لجر/اچ‌لجر) استفاده کرده‌اند. یک بحث در ردیت (Reddit) اشاره کرد که برای حسابداری استاندارد کسب‌وکارهای کوچک با حجم محدود تراکنش‌ها، بین‌کاونت به خوبی کار می‌کند. عامل محدودکننده معمولاً سطح راحتی است – اینکه آیا صاحب کسب‌وکار (یا حسابدار او) با یک ابزار مبتنی بر متن راحت است یا خیر. یکی از مزایا هزینه است: بین‌کاونت رایگان است، در حالی که نرم‌افزارهای حسابداری می‌توانند برای یک کسب‌وکار کوچک گران باشند. از سوی دیگر، عدم پشتیبانی رسمی و ماهیت خودساخته آن به این معنی است که برای کسانی که هم صاحب کسب‌وکار هستند و هم تا حدودی از نظر فنی تمایل دارند، مناسب‌تر است. برای فریلنسرها یا صاحبان مشاغل انفرادی با مهارت‌های برنامه‌نویسی، بین‌کاونت می‌تواند یک انتخاب جذاب برای مدیریت امور مالی بدون اتکا به خدمات حسابداری ابری باشد.

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

به طور خلاصه، بین‌کاونت می‌تواند حسابداری کسب‌وکارهای کوچک را مدیریت کند، مشروط بر اینکه کاربر مایل به مدیریت دستی مواردی باشد که نرم‌افزارهای تجاری آن‌ها را خودکار می‌کنند. این امر درجه بالایی از شفافیت را تضمین می‌کند – شما دفاتر خود را عمیقاً درک می‌کنید زیرا خودتان آن‌ها را می‌نویسید – و برای یک کاربر دقیق، می‌تواند دفاتر بی‌نقصی تولید کند. هم کاربران شخصی و هم کاربران تجاری از نقاط قوت اصلی بین‌کاونت بهره‌مند می‌شوند: یک موتور حسابداری قابل اعتماد، مسیر حسابرسی کامل، و انعطاف‌پذیری برای انطباق با سناریوهای منحصر به فرد (از طریق اسکریپت‌نویسی و افزونه‌ها). چه ردیابی بودجه خانوار باشد و چه امور مالی یک استارتاپ، بین‌کاونت ابزاری را برای انجام آن با دقت و شفافیت ارائه می‌دهد.

جامعه و فعالیت توسعه

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

  • نگهداری پروژه: نویسنده اصلی بیانکونت، مارتین بلایس (Martin Blais) است که پروژه را حدود سال ۲۰۰۷ آغاز کرد و آن را در نسخه‌های متعدد هدایت کرده است. توسعه برای مدت طولانی عمدتاً تلاشی یک‌نفره بود (به‌جز مشارکت‌های جامعه در قالب پچ‌ها). فلسفه مارتین این بود که ابزار حسابداری‌ای بسازد که "اول برای خودم مفید باشد، و همچنین برای دیگران، به ساده‌ترین و بادوام‌ترین شکل ممکن". این انگیزه شخصی پروژه را به‌عنوان یک کار عاشقانه زنده نگه داشت. تا سال ۲۰۲۵، مارتین بلایس همچنان نگه‌دارنده اصلی است (نام او در کامیت‌ها ظاهر می‌شود و او به سؤالات در لیست پستی/ردیاب مشکلات پاسخ می‌دهد)، اما اکوسیستم اطراف بیانکونت مشارکت‌کنندگان بسیاری در پروژه‌های مربوط به خود دارد.

  • گیت‌هاب و مخازن: کد منبع در گیت‌هاب تحت مخزن beancount/beancount میزبانی می‌شود. این پروژه تحت مجوز GPL-2.0 است و در طول سال‌ها تعداد متوسطی از مشارکت‌کنندگان را جذب کرده است. در اواسط سال ۲۰۲۴، بیانکونت نسخه ۳ به‌طور رسمی به‌عنوان شاخه پایدار جدید منتشر شد. این انتشار شامل جداسازی برخی اجزا بود: به‌عنوان مثال، مخزن beangulp (برای واردکننده‌ها) و مخزن beanquery (برای ابزار پرس‌وجو) اکنون بخشی از سازمان گیت‌هاب beancount هستند و تا حدی مستقل نگهداری می‌شوند. مخزن اصلی بیانکونت بر موتور اصلی حسابداری و تحلیل‌گر فایل تمرکز دارد. تا سال ۲۰۲۵، گیت‌هاب بیانکونت بحث‌های فعال در مورد مشکلات و توسعه در حال انجام را نشان می‌دهد – اگرچه حجم بالایی ندارد، اما مشکلات و درخواست‌های پول (pull requests) به‌تدریج وارد می‌شوند و به‌روزرسانی‌های گاه‌به‌گاه برای رفع اشکالات یا بهبود ویژگی‌ها انجام می‌شود.

  • توسعه فاوا: فاوا (Fava)، رابط وب، به‌عنوان یک پروژه جداگانه آغاز شد (ایجاد شده توسط دومینیک آومایر (Dominic Aumayr) که در سال ۲۰۱۶ حق کپی‌رایت آن را ثبت کرد). این پروژه جامعه مشارکت‌کنندگان خاص خود را دارد و همچنین در گیت‌هاب تحت beancount/fava قرار دارد. نگه‌دارندگان و مشارکت‌کنندگان فاوا (مانند یاکوب شنیتز (Jakob Schnetz)، استفان اوته (Stefan Otte) و دیگران در سال‌های اخیر) به‌طور فعال در حال بهبود رابط کاربری بوده‌اند و هر چند ماه یک‌بار نسخه‌های جدیدی منتشر می‌کنند. چت گیتِر (Gitter) فاوا (که در مستندات فاوا لینک شده است) و ردیاب مشکلات گیت‌هاب مکان‌هایی هستند که کاربران و توسعه‌دهندگان درباره ویژگی‌های جدید یا اشکالات بحث می‌کنند. این پروژه از مشارکت‌ها استقبال می‌کند، که با یادداشتی در CHANGELOG که از چندین عضو جامعه برای درخواست‌های پولشان (PRs) تشکر می‌کند، مشهود است. همسویی نزدیک فاوا با توسعه بیانکونت (مانند افزودن سریع پشتیبانی از Beancount v3 و نحو جدید beanquery) نشان‌دهنده همکاری خوب بین دو پروژه است.

  • لیست‌های پستی و انجمن‌ها: بیانکونت یک لیست پستی رسمی دارد (قبلاً در گروه‌های گوگل (Google Groups) با عنوان "Beancount" یا گاهی در لیست عمومی لِجر (Ledger) مورد بحث قرار می‌گرفت). این لیست پستی گنجینه‌ای از دانش است – کاربران سؤالاتی درباره نحوه مدل‌سازی سناریوهای خاص می‌پرسند، اشکالات را گزارش می‌دهند و نکات را به اشتراک می‌گذارند. مارتین بلایس به پاسخ‌های دقیق در لیست پستی معروف است. علاوه بر این، جامعه گسترده‌تر حسابداری متن ساده همپوشانی زیادی دارد. لیست پستی Ledger CLI نیز اغلب سؤالاتی درباره بیانکونت را مطرح می‌کند، و یک انجمن در plaintextaccounting.org و یک ساب‌ردیت (subreddit) به نام r/plaintextaccounting وجود دارد که موضوعات بیانکونت به‌طور مکرر در آن مطرح می‌شوند. کاربران در این پلتفرم‌ها درباره مقایسه‌ها بحث می‌کنند، تنظیمات شخصی خود را به اشتراک می‌گذارند و به تازه‌واردان کمک می‌کنند. لحن کلی جامعه بسیار تعاونی است – کاربران بیانکونت اغلب به کاربران لِجر کمک می‌کنند و بالعکس، با درک اینکه همه این ابزارها اهداف مشابهی دارند.

  • گروه‌های چت: علاوه بر لیست‌های پستی، کانال‌های چتی مانند اسلک/دیسکورد حسابداری متن ساده (که توسط جامعه سازماندهی شده‌اند) و گیتِر فاوا وجود دارند. این‌ها روش‌های کمتر رسمی و بلادرنگ‌تری برای دریافت کمک یا بحث درباره ویژگی‌ها هستند. به‌عنوان مثال، ممکن است کسی به اسلک بپیوندد تا بپرسد آیا کسی واردکننده‌ای برای یک بانک خاص دارد یا خیر. همچنین یک کانال ماتریکس/IRC (که از لحاظ تاریخی #ledger یا #beancount در IRC بوده است) وجود دارد که برخی از کاربران قدیمی در آن حضور دارند. اگرچه این کانال‌ها به اندازه جوامع نرم‌افزارهای اصلی پرجمعیت نیستند، اما افراد آگاهی در آن‌ها حضور دارند که اغلب می‌توانند به سؤالات حسابداری مبهم پاسخ دهند.

  • مشارکت‌کنندگان و اعضای کلیدی جامعه: چند نام در جامعه بیانکونت برجسته هستند:

    • "رد‌استریت" (Red S): یک مشارکت‌کننده پرکار که بسیاری از افزونه‌ها (مانند beancount-balexpr، sellgains و غیره) را نوشته و اغلب پشتیبانی ارائه می‌دهد. او همچنین مجموعه‌ای از اسکریپت‌های واردکننده و ابزاری به نام bean-download را برای واکشی صورت‌حساب‌ها نگهداری می‌کند.
    • واسیلی ام (Evernight): نویسنده برخی چارچوب‌های واردکننده و افزونه‌ها مانند beancount-valuation، و مشارکت در فاوا در زمینه سرمایه‌گذاری‌ها.
    • استفانو زاکیرولی (zack): یک توسعه‌دهنده دبیان (Debian) که beancount-mode را برای اِمکس (Emacs) و مخزن افزونه‌های خود را ایجاد کرده است. او همچنین از حسابداری متن ساده در محیط‌های آکادمیک حمایت کرده است.
    • سایمون مایکل: در حالی که او عمدتاً رهبر hledger است، وب‌سایت plaintextaccounting.org را اداره می‌کند که شامل بیانکونت نیز می‌شود. این گرده‌افشانی متقابل به جلب توجه کاربران لِجر/hledger به بیانکونت کمک کرده است.
    • فرانک هل (Tarioch): مشارکت‌کننده ابزارهای Tarioch Beancount Tools، مجموعه‌ای بزرگ از واردکننده‌ها و واکشی‌کننده‌های قیمت به‌ویژه برای مؤسسات اروپایی.
    • سیدانت گوئل: یکی از اعضای جامعه که درباره بیانکونت وبلاگ می‌نویسد (به‌عنوان مثال، راهنمای او برای مهاجرت به نسخه ۳) و برخی واردکننده‌ها را نگهداری می‌کند. پست‌های وبلاگ او به بسیاری از کاربران جدید کمک کرده است.

    این افراد و بسیاری دیگر، کد، مستندات و کمک در انجمن‌ها را ارائه می‌دهند و اکوسیستم را با وجود اندازه نسبتاً کوچک آن، پویا نگه می‌دارند.

  • آمار گیت‌هاب و فورک‌ها: مخزن گیت‌هاب بیانکونت چند صد ستاره (نشان‌دهنده علاقه) و فورک (انشعاب) جمع‌آوری کرده است. فورک‌های قابل توجه خود بیانکونت نادر هستند – هیچ فورک واگرای شناخته‌شده‌ای وجود ندارد که سعی کند "بیانکونت با ویژگی X" باشد. در عوض، هنگامی که کاربران چیز متفاوتی می‌خواستند، یا یک افزونه نوشتند یا از ابزار دیگری (مانند hledger) استفاده کردند، به‌جای اینکه بیانکونت را فورک کنند. می‌توان hledger را نوعی فورک لِجر (نه بیانکونت) و خود بیانکونت را بازتصویری مستقل از ایده‌های لِجر در نظر گرفت، اما در داخل مخزن بیانکونت پروژه‌های انشعابی بزرگی وجود ندارد. جامعه به‌طور کلی حول مخزن اصلی جمع شده و آن را از طریق رابط افزونه گسترش داده است، به‌جای اینکه پایگاه کد را تکه‌تکه کند. این احتمالاً به این دلیل است که مارتین بلایس نسبت به مشارکت‌های خارجی باز بود (مستندات او حتی بخشی برای قدردانی از مشارکت‌ها و ماژول‌های خارجی دارد) و معماری افزونه نیاز به نگهداری یک فورک برای اکثر

تحولات اخیر و ویژگی‌های آتی

تا سال ۲۰۲۵، اکوسیستم Beancount شاهد تحولات قابل توجهی در چند سال گذشته بوده است، و بحث‌های جاری در مورد بهبودهای آتی وجود دارد. در اینجا برخی از تحولات اخیر قابل توجه و نگاهی اجمالی به آنچه ممکن است در راه باشد، آورده شده است:

  • انتشار Beancount 3.0 (2024): پس از مدت‌ها که Beancount 2.x استاندارد بود، نسخه ۳ به طور رسمی در اواسط سال ۲۰۲۴ منتشر شد. این یک نقطه عطف بزرگ بود زیرا نسخه ۳ نشان‌دهنده ساده‌سازی و مدرن‌سازی پایگاه کد است. مارتین بلایس نسخه ۳ را فرصتی برای "بازآرایی و ساده‌سازی" بیشتر سیستم تصور کرده بود. در حالی که در ابتدا تصور می‌شد یک بازنویسی بزرگ باشد، در عمل به‌روزرسانی برای کاربران چندان مختل‌کننده نبود. تغییرات اصلی زیر کاپوت بودند: یک تجزیه‌کننده جدید، برخی بهبودهای عملکردی، و استخراج اجزای اختیاری از هسته. این انتشار به تدریج انجام شد (نسخه ۳ از سال ۲۰۲۲ در بتا بود، اما تا ژوئیه ۲۰۲۴ به نسخه پایدار توصیه شده تبدیل شد). کاربرانی مانند Siddhant Goel گزارش دادند که مهاجرت از ۲.x به ۳.x "عمدتاً بدون حادثه" و تنها با چند تغییر در گردش کار همراه بود.

  • ماژولار شدن – ابزارها به بسته‌های جداگانه منتقل شدند: یکی از تغییرات بزرگ با Beancount 3 این است که بسیاری از ابزارهایی که قبلاً در مخزن یکپارچه قرار داشتند، جدا شدند. به عنوان مثال، bean-query اکنون توسط بسته beanquery ارائه می‌شود، و beancount.ingest با بسته beangulp جایگزین شد. دستوراتی مانند bean-extract و bean-identify (برای واردات) از هسته Beancount حذف شدند. در عوض، فلسفه این است که از اسکریپت‌های مستقل برای وارد کردن استفاده شود. این بدان معناست که اگر به نسخه ۳ ارتقا دهید، باید beangulp را نصب کرده و اسکریپت‌های واردکننده را اجرا کنید (هر واردکننده اساساً یک برنامه کوچک است) به جای داشتن یک فایل پیکربندی مرکزی bean-extract. به طور مشابه، پرس‌وجوها از طریق beanquery اجرا می‌شوند که می‌تواند مستقل از هسته Beancount نصب و به‌روزرسانی شود. این رویکرد پیمانه‌ای برای آسان‌تر کردن نگهداری و تشویق مشارکت‌های جامعه طراحی شده است. همچنین هسته Beancount را کوچک‌تر کرد، بنابراین هسته صرفاً بر تجزیه و منطق حسابداری تمرکز می‌کند، در حالی که قابلیت‌های جانبی می‌توانند به طور جداگانه تکامل یابند. از دیدگاه کاربر، پس از ارتقا، باید دستورات را تنظیم کرد (به عنوان مثال، استفاده از bean-query از beanquery، یا استفاده از Fava که این را به هر حال انتزاعی می‌کند). تاریخچه تغییرات Fava به صراحت این تغییرات را ذکر می‌کند: Fava اکنون به beanquery و beangulp وابسته است، و جریان‌های کاری واردات را برای Beancount 3 در مقابل 2 به طور متفاوتی مدیریت می‌کند.

  • بهبودهای عملکردی: عملکرد یکی از انگیزه‌های بازنگری در طراحی Beancount بود. برنامه نسخه ۳ (همانطور که در سند "اهداف V3" مارتین تشریح شده است) شامل بهینه‌سازی تجزیه‌کننده و احتمالاً سریع‌تر و کم‌مصرف‌تر کردن فرآیند بارگذاری بود. تا سال ۲۰۲۵، برخی از این بهبودها محقق شده‌اند. به طور غیررسمی، کاربران با دفترهای کل بسیار بزرگ (ده‌ها هزار تراکنش، یا تعداد زیادی معاملات سهام) عملکرد بهتری را با آخرین نسخه گزارش کرده‌اند. به عنوان مثال، کاربری که با "تراکنش‌های خرد سرمایه‌گذاری" سروکار داشت و با مشکلات عملکردی مواجه بود، این نگرانی‌ها را در گروه Google مطرح کرد – این نوع بازخورد احتمالاً نسخه ۳ را شکل داده است. تجزیه‌کننده جدید کارآمدتر و به روشی واضح‌تر نوشته شده است که می‌تواند در آینده گسترش یابد. علاوه بر این، Fava 1.29 به یک مکانیزم نظارت بر فایل کارآمدتر (با استفاده از کتابخانه watchfiles) منتقل شد تا پاسخگویی را هنگام تغییر دفتر کل بهبود بخشد. با نگاه به آینده، جامعه ممکن است تجزیه افزایشی (فقط پردازش مجدد بخش‌های تغییر یافته فایل به جای همه چیز) را برای مدیریت سریع‌تر دفترهای کل بزرگ بررسی کند – این در مستندات به عنوان ایده "سرور Beancount / ثبت افزایشی" اشاره شده بود.

  • بهبودهای ردیابی سرمایه‌گذاری: کار مداومی برای بهبود گزارش‌دهی سرمایه‌گذاری و سبد سهام انجام شده است. به عنوان مثال، مدیریت مبنای میانگین هزینه در مقابل فایفو (FIFO) به تفصیل مورد بحث قرار گرفت. در حالی که Beancount تطبیق دسته‌ها را اعمال می‌کند، برخی کاربران مبنای میانگین هزینه را برای حوزه‌های قضایی خاص ترجیح می‌دهند. یک پیشنهاد و بحث در مورد انعطاف‌پذیرتر کردن ثبت مبنای هزینه (احتمالاً از طریق یک افزونه یا گزینه) وجود دارد. تا سال ۲۰۲۵، هیچ سوئیچ داخلی برای میانگین هزینه وجود ندارد، اما زیرساخت در نسخه ۳ (بازطراحی ثبت) پیاده‌سازی آن را برای افزونه‌ها آسان‌تر می‌کند. یک افزونه جامعه‌ای به نام "Gains Minimizer" منتشر شد که می‌تواند پیشنهاد کند کدام دسته‌ها را برای به حداقل رساندن مالیات بفروشید، که نشان‌دهنده نوع ابزارهای پیشرفته‌ای است که در اطراف سرمایه‌گذاری‌ها ساخته می‌شوند. Fava نیز ویژگی‌هایی مانند یک افزونه خلاصه سبد سهام (با محاسبات نرخ بازده) اضافه کرد. از نظر ویژگی‌های آتی، می‌توان انتظار بیشتری در این زمینه داشت: احتمالاً پیشنهادهای متعادل‌سازی خودکار سبد سهام یا تحلیل ریسک، که احتمالاً به عنوان ابزارهای خارجی که داده‌های Beancount را می‌خوانند (زیرا تمام داده‌ها در آنجا موجود است) ارائه خواهند شد.

  • افزونه‌ها و توسعه‌های جدید: اکوسیستم افزونه‌ها به طور مداوم در حال رشد است. اضافات قابل توجه اخیر عبارتند از:

    • ابزارهای گزارش‌دهی بودجه – به عنوان مثال، یک گزارشگر بودجه CLI ساده اگر کسی از رابط کاربری Fava استفاده نمی‌کند.
    • رمزگذاری و امنیت – تنظیمات fava-encrypt، که امکان میزبانی آنلاین Fava را با دفتر کل رمزگذاری شده در حالت سکون فراهم می‌کند، معرفی شد و به نگرانی میزبانی شخصی امور مالی شما پاسخ داد.
    • افزونه‌های بهبود کیفیت زندگی – مانند autobean-format (یک فرمت‌کننده جدید که می‌تواند موارد گوشه‌ای بیشتری را با تجزیه و چاپ مجدد فایل مدیریت کند)، و یکپارچه‌سازی beancheck در ویرایشگرها (flymake برای Emacs).

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

  • ویژگی‌های بالقوه آتی: بر اساس بحث‌ها در ردیاب مسائل و لیست پستی، چند ایده در افق هستند (اگرچه تضمین شده نیستند):

    • تفکیک زمانی: در حال حاضر، Beancount فقط تاریخ‌ها (بدون برچسب‌های زمانی) را برای تراکنش‌ها ردیابی می‌کند. سوالاتی در مورد افزودن زمان (برای معاملات سهام یا ترتیب تراکنش‌های هم‌روزه) مطرح شده است. مارتین بلایس به صراحت تصمیم گرفت که برچسب‌های زمانی زیر یک روز برای حفظ سادگی خارج از محدوده هستند. این بعید است به زودی تغییر کند – بنابراین نسخه‌های آتی احتمالاً تفکیک زمانی را اضافه نخواهند کرد و بر این موضع پایبند خواهند بود که اگر به زمان نیاز دارید، آن را در شرح یا یک حساب بگنجانید.
    • ویرایش GUI پیشرفته: Fava به طور مداوم قابلیت‌های ویرایش خود را بهبود می‌بخشد. یک امکان، یک ویرایشگر وب با قابلیت‌های کامل‌تر (با پیشنهاد خودکار، شاید ورود مبتنی بر فرم برای تراکنش‌های جدید) است. زیرساخت استفاده از tree-sitter در ویرایشگر Fava فراهم شده است. ممکن است شاهد تبدیل Fava نه تنها به یک نمایشگر بلکه به یک ویرایشگر قدرتمندتر باشیم، که نیاز به باز کردن یک ویرایشگر متن را برای بسیاری از وظایف کاهش می‌دهد.
    • پشتیبانی بهتر از چندین دفتر کل: برخی کاربران چندین فایل Beancount را نگهداری می‌کنند (برای نهادهای مختلف یا برای تفکیک شخصی در مقابل تجاری). در حال حاضر، شامل کردن فایل‌ها امکان‌پذیر است اما محدودیت‌هایی دارد (افزونه‌ها در فایل‌های شامل شده و غیره). یک افزونه اخیر autobean.include برای شامل کردن ایمن دفترهای کل خارجی ایجاد شد. در آینده، ممکن است شاهد پشتیبانی درجه یک برای تنظیمات چند فایلی باشیم – شاید مفهومی از یک "پروژه" Beancount با چندین فایل (این با ویژگی‌هایی مانند تنظیم beancount.mainBeanFile در افزونه VSCode اشاره شده است). این به کسانی که حسابداری چند نهادی را انجام می‌دهند یا می‌خواهند دفتر کل خود را ماژولار کنند، کمک خواهد کرد.
    • محاسبات بی‌درنگ یا افزایشی: با رشد دفترهای کل، توانایی محاسبه مجدد سریع گزارش‌ها اهمیت پیدا می‌کند. ایده‌ای از یک سرور Beancount وجود دارد که در حال اجرا باقی می‌ماند و نتایج را با تغییر تراکنش‌ها به‌روزرسانی می‌کند. این می‌تواند به عنوان یک بهینه‌سازی در Fava یا یک دیمون که افزونه‌های ویرایشگر می‌توانند از آن پرس‌وجو کنند، ظاهر شود. شاید یک نسخه آتی Fava از یک فرآیند Beancount در حال اجرا به طور مداوم برای پاسخگوتر کردن رابط کاربری برای دفترهای کل عظیم استفاده کند.
    • حسابداری وجوه / ویژگی‌های غیرانتفاعی: یک پیشنهاد بهبود در مورد حسابداری وجوه در Beancount وجود داشت. سازمان‌های غیرانتفاعی نیازهای حسابداری (وجوه محدود شده در مقابل نامحدود) دارند که می‌توانند با سلسله مراتب برچسب یا حساب Beancount مدل‌سازی شوند. بحث هنوز به ویژگی‌های داخلی منجر نشده است، اما اگر سازمان‌های غیرانتفاعی بیشتری Beancount را انتخاب کنند، این می‌تواند قابلیت‌های جدیدی را به دنبال داشته باشد (شاید فقط بهترین شیوه‌های مستند شده یا افزونه‌هایی برای ردیابی موجودی وجوه).
  • چشم‌انداز بلندمدت: مارتین بلایس اشاره کرد که آینده Beancount را در تبدیل هسته به یک موتور و انتقال قابلیت‌های بیشتر به افزونه‌ها

درک حساب‌های دریافتنی و پرداختنی در Beancount

· زمان مطالعه 3 دقیقه
Mike Thrift
Mike Thrift
Marketing Manager

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

درک این اصطلاحات برای استفاده مؤثر از Beancount (یا هر سیستم حسابداری دوطرفه) بسیار مهم است. اما اگر مبتدی هستید نگران نباشید – ما همه چیز را گام به گام توضیح خواهیم داد!

حساب‌های دریافتنی و پرداختنی: اصول اولیه

2023-05-30-receiveable-and-payable

در حسابداری، «حساب‌های دریافتنی» و «حساب‌های پرداختنی» اصطلاحاتی هستند که برای ردیابی پولی که بدهکار است استفاده می‌شوند. «حساب‌های دریافتنی» به پولی اشاره دارد که دیگران به شما بدهکارند، در حالی که «حساب‌های پرداختنی» به پولی اشاره دارد که شما به دیگران بدهکارید.

بیایید یک مثال بزنیم:

  1. حساب‌های دریافتنی (A/R): فرض کنید شما یک کتابفروشی دارید و مشتری کتابی را به صورت نسیه می‌خرد. پولی که آن‌ها بابت کتاب به شما بدهکارند، یک حساب دریافتنی است.

  2. حساب‌های پرداختنی (A/P): از طرف دیگر، تصور کنید مجموعه‌ای جدید از کتاب‌ها را از یک ناشر سفارش می‌دهید، اما هزینه آن‌ها را از قبل پرداخت نمی‌کنید. پولی که شما به ناشر بدهکارید، یک حساب پرداختنی است.

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

راه‌اندازی حساب‌های دریافتنی و پرداختنی در Beancount

ساختار فایل Beancount شما می‌تواند به همان اندازه که نیاز دارید ساده یا پیچیده باشد. برای حساب‌های دریافتنی و پرداختنی، احتمالاً می‌خواهید حساب‌های جداگانه‌ای را در بخش‌های دارایی‌ها و بدهی‌های خود ایجاد کنید.

در اینجا یک مثال ساده آورده شده است:

1970-01-01 open Assets:AccountsReceivable
1970-01-01 open Liabilities:AccountsPayable

ردیابی تراکنش‌ها

سمت دریافت‌کننده

پس از راه‌اندازی حساب‌های خود، می‌توانید تراکنش‌هایی را که شامل حساب‌های دریافتنی و پرداختنی هستند، ردیابی کنید. بیایید به یک مثال نگاه کنیم:

2023-05-29 * "Sold books to customer on credit"
Assets:AccountsReceivable 100 USD
Income:BookSales -100 USD

در اینجا، شما ۱۰۰ دلار به حساب‌های دریافتنی خود اضافه می‌کنید زیرا مشتری این مبلغ را به شما بدهکار است. همزمان، درآمد خود را به همان میزان کاهش می‌دهید تا تعادل حفظ شود (زیرا هنوز پول را دریافت نکرده‌اید).

هنگامی که مشتری در نهایت پرداخت می‌کند، آن را به این صورت ثبت خواهید کرد:

2023-06-01 * "Received payment from customer"
Assets:Bank:Savings 100 USD
Assets:AccountsReceivable -100 USD

سمت پرداخت‌کننده

همین اصل برای حساب‌های پرداختنی نیز اعمال می‌شود، اما با علائم معکوس:

2023-05-30 * "Bought books from publisher on credit"
Liabilities:AccountsPayable 200 USD
Expenses:BookPurchases -200 USD

و هنگامی که بدهی خود را پرداخت می‌کنید:

2023-06-02 * "Paid off debt to publisher"
Liabilities:AccountsPayable -200 USD
Assets:Bank:Checking 200 USD

جمع‌بندی

حساب‌های دریافتنی و پرداختنی در قلب هر سیستم حسابداری قرار دارند. با ردیابی دقیق این موارد، درک جامعی از سلامت مالی خود به دست می‌آورید.

این تنها یک نقطه شروع است و Beancount قابلیت‌های بسیار بیشتری دارد. امیدوارم این پست وبلاگ به روشن شدن این مفاهیم مهم کمک کند. مثل همیشه، حسابداری خوبی داشته باشید!

واکاوی یک دفترکل بین‌کانت: مطالعه موردی برای حسابداری کسب‌وکار

· زمان مطالعه 3 دقیقه
Mike Thrift
Mike Thrift
Marketing Manager

در پست وبلاگ امروز، ما یک دفترکل بین‌کانت را برای کسب‌وکارها تشریح خواهیم کرد که به شما کمک می‌کند پیچیدگی‌های این سیستم حسابداری دوطرفه متن ساده را درک کنید.

واکاوی یک دفترکل بین‌کانت: مطالعه موردی برای حسابداری کسب‌وکار

ابتدا با کد شروع کنیم:

2023-05-22-business-template

1970-01-01 open Assets:Bank:Mercury
1970-01-01 open Assets:Crypto

1970-01-01 open Equity:Bank:Chase

1970-01-01 open Income:Stripe
1970-01-01 open Income:Crypto:ETH

1970-01-01 open Expenses:COGS
1970-01-01 open Expenses:COGS:Contabo
1970-01-01 open Expenses:COGS:AmazonWebServices

1970-01-01 open Expenses:BusinessExpenses
1970-01-01 open Expenses:BusinessExpenses:ChatGPT

2023-05-14 * "CONTABO.COM" "Mercury Checking ••1234"
Expenses:COGS:Contabo 17.49 USD
Assets:Bank:Mercury -17.49 USD

2023-05-11 * "Amazon Web Services" "Mercury Checking ••1234"
Expenses:COGS:AmazonWebServices 14490.33 USD
Assets:Bank:Mercury -14490.33 USD

2023-03-01 * "STRIPE" "Mercury Checking ••1234"
Income:Stripe -21230.75 USD
Assets:Bank:Mercury 21230.75 USD

2023-05-18 * "customer_182734" "0x5190E84918FD67706A9DFDb337d5744dF4EE5f3f"
Assets:Crypto -19 ETH {1,856.20 USD}
Income:Crypto:ETH 19 ETH @@ 35267.8 USD

درک کد

۱. افتتاح حساب‌ها: کد با افتتاح مجموعه‌ای از حساب‌ها در تاریخ ۰۱-۰۱-۱۹۷۰ آغاز می‌شود. این حساب‌ها شامل ترکیبی از حساب‌های دارایی (Assets:Bank:Mercury و Assets:Crypto)، یک حساب حقوق صاحبان سهام (Equity:Bank:Chase)، حساب‌های درآمد (Income:Stripe و Income:Crypto:ETH) و حساب‌های هزینه (Expenses:COGS، Expenses:COGS:AmazonWebServices، Expenses:BusinessExpenses و Expenses:BusinessExpenses:ChatGPT) هستند.

۲. تراکنش‌ها: سپس به ثبت مجموعه‌ای از تراکنش‌ها بین تاریخ‌های ۰۱-۰۳-۲۰۲۳ و ۱۸-۰۵-۲۰۲۳ می‌پردازد.

  • تراکنش در تاریخ ۱۴-۰۵-۲۰۲۳ نشان‌دهنده پرداخت ۱۷.۴۹ دلار به CONTABO.COM از حساب Mercury Checking ••1234 است. این مبلغ به عنوان یک هزینه (Expenses:COGS:Contabo) و کسر متناظر از حساب Assets:Bank:Mercury ثبت شده است.

  • به همین ترتیب، تراکنش در تاریخ ۱۱-۰۵-۲۰۲۳ نشان‌دهنده پرداخت ۱۴۴۹۰.۳۳ دلار به Amazon Web Services از همان حساب بانکی است. این مبلغ تحت عنوان Expenses:COGS:AmazonWebServices ثبت شده است.

  • تراکنش در تاریخ ۰۱-۰۳-۲۰۲۳ نشان‌دهنده واریز درآمد از STRIPE به حساب Mercury Checking ••1234 به مبلغ ۲۱۲۳۰.۷۵ دلار است. این مبلغ به عنوان درآمد (Income:Stripe) و افزایشی به حساب بانکی (Assets:Bank:Mercury) ثبت شده است.

  • آخرین تراکنش در تاریخ ۱۸-۰۵-۲۰۲۳ نشان‌دهنده یک تراکنش رمزارزی شامل ۱۹ اتریوم (ETH) از یک مشتری است. این تراکنش تحت Assets:Crypto و Income:Crypto:ETH ردیابی می‌شود. {۱,۸۵۶.۲۰ USD} قیمت اتریوم در زمان تراکنش را نشان می‌دهد، در حالی که @@ ۳۵۲۶۷.۸ USD ارزش کل تراکنش ۱۹ اتریوم را مشخص می‌کند.

در تمام تراکنش‌ها، اصل حسابداری دوطرفه حفظ شده است و اطمینان حاصل می‌شود که معادله دارایی‌ها = بدهی‌ها + حقوق صاحبان سهام همیشه برقرار است.

سخن پایانی

این دفترکل بین‌کانت یک سیستم ساده و در عین حال قدرتمند برای ردیابی تراکنش‌های مالی فراهم می‌کند. همانطور که در آخرین تراکنش مشاهده شد، بین‌کانت به اندازه کافی انعطاف‌پذیر است تا دارایی‌های غیرسنتی مانند رمزارز را نیز حسابداری کند، که گواهی بر کارایی آن در چشم‌انداز مالی فزاینده دیجیتالی ما است.

امیدواریم این تشریح به شما کمک کند تا ساختار و قابلیت‌های بین‌کانت را بهتر درک کنید، چه یک حسابدار باتجربه باشید و چه مبتدی که سعی در پیگیری امور مالی شخصی خود دارید. منتظر پست وبلاگ بعدی ما باشید، جایی که عمیق‌تر به عملیات پیشرفته بین‌کانت خواهیم پرداخت.

راهنمای سریع Beancount

· زمان مطالعه 2 دقیقه
Mike Thrift
Mike Thrift
Marketing Manager

مثال نام حساب

Assets:US:BofA:Checking

cheatsheet-en

انواع حساب

Assets          +
Liabilities -
Income -
Expenses +
Equity -

کالاها

CNY, EUR, CAD, AUD
GOOG, AAPL, RBF1005
HOME_MAYST, AIRMILES
HOURS

دستورالعمل‌ها

نحو کلی

YYYY-MM-DD <Directive> <Parameters...>

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

2001-05-29 open Expenses:Restaurant
2001-05-29 open Assets:Checking USD,EUR ; محدودیت‌های ارزی

2015-04-23 close Assets:Checking

اعلام کالاها (اختیاری)

1998-07-22 commodity AAPL
name: "Apple Computer Inc."

قیمت‌ها

2015-04-30 price AAPL   125.15 CNY
2015-05-30 price AAPL 130.28 CNY

یادداشت‌ها

2013-03-20 note Assets:Checking "برای پرسیدن در مورد تخفیف تماس گرفته شد"

اسناد

2013-03-20 document Assets:Checking "path/to/statement.pdf"

تراکنش‌ها

2015-05-30 * "شرحی در مورد این تراکنش"
Liabilities:CreditCard -101.23 CNY
Expenses:Restaurant 101.23 CNY

2015-05-30 ! "Cable Co" "Phone Bill" #tag ˆlink
id: "TW378743437" ; فراداده
Expenses:Home:Phone 87.45 CNY
Assets:Checking ; می‌توانید یکی از مبالغ را خالی بگذارید

ثبت‌ها

  ...    123.45 USD                             ساده
... 10 GOOG {502.12 USD} با بهای تمام شده هر واحد
... 10 GOOG {{5021.20 USD}} با بهای تمام شده کل
... 10 GOOG {502.12 # 9.95 USD} با هر دو بهای تمام شده
... 1000.00 USD @ 1.10 CAD با قیمت هر واحد
... 10 GOOG {502.12 USD} @ 1.10 CAD با بهای تمام شده و قیمت
... 10 GOOG {502.12 USD, 2014-05-12} با تاریخ
! ... 123.45 USD ... با پرچم

تأییدیه‌های موجودی و پر کردن (Padding)

; مبلغ را فقط برای ارز مشخص شده تأیید می‌کند:
2015-06-01 balance Liabilities:CreditCard -634.30 CNY

; درج خودکار تراکنش برای برآورده کردن تأییدیه زیر:
2015-06-01pad Assets:Checking Equity:Opening-Balances

رویدادها

2015-06-01 event "location" "New York, USA"
2015-06-30 event "address" "123 May Street"

گزینه‌ها

option "title" "دفتر کل شخصی من"

سایر

pushtag #trip-to-peru
...
poptag #trip-to-peru
; نظرات با یک نقطه ویرگول شروع می‌شوند

جادوی حسابداری متن ساده با Beancount

· زمان مطالعه 7 دقیقه
Mike Thrift
Mike Thrift
Marketing Manager

جادوی حسابداری متن ساده با Beancount را کشف کنید

Beancount.io banner

مقدمه

2023-04-18-introduction-to-beancount

به دنیایی خوش آمدید که در آن حسابداری دیگر یک کار دلهره آور نیست. امروز، ما Beancount را به شما معرفی می کنیم، یک ابزار حسابداری متن ساده قدرتمند، انعطاف پذیر و بصری. Beancount به شما این امکان را می دهد که با ارائه یک رویکرد شفاف و سر راست برای مدیریت پول خود، کنترل امور مالی خود را در دست بگیرید.

در این راهنمای جامع، ما به اصول اولیه Beancount می پردازیم، مفاهیم اصلی آن را توضیح می دهیم و شما را از طریق ویژگی های ساده اما قدرتمند آن راهنمایی می کنیم. در پایان این وبلاگ، شما درک کاملی از Beancount خواهید داشت و آماده خواهید بود تا از آن برای سازماندهی و تجزیه و تحلیل زندگی مالی خود استفاده کنید.

Beancount چیست؟

Beancount یک سیستم حسابداری متن ساده و متن باز است که توسط مارتین بلیس ایجاد شده است. Beancount با الهام از سیستم Ledger جان ویگلی، هدف دارد روشی قوی و قابل اعتماد برای مدیریت امور مالی شخصی و مشاغل کوچک با استفاده از فایل های متنی ساده ارائه دهد. با Beancount، می توانید درآمد، هزینه ها، سرمایه گذاری ها و موارد دیگر را به راحتی پیگیری کنید.

چرا Beancount؟

حسابداری متن ساده چندین مزیت نسبت به سیستم های حسابداری سنتی مبتنی بر صفحه گسترده یا نرم افزاری ارائه می دهد:

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

مفاهیم اصلی Beancount

برای استفاده موثر از Beancount، درک مفاهیم اصلی آن بسیار مهم است:

  • تراکنش ها: رویدادهای مالی، مانند درآمد، هزینه ها یا نقل و انتقالات بین حساب ها، به عنوان تراکنش ثبت می شوند.
  • حساب ها: تراکنش ها شامل یک یا چند حساب، مانند دارایی ها، بدهی ها، درآمد یا هزینه ها می شوند.
  • حسابداری دوبل: Beancount حسابداری دوبل را اعمال می کند و اطمینان می دهد که هر تراکنش دارای بدهی ها و اعتبارات متوازن است.
  • دستورالعمل ها: Beancount از مجموعه ای از دستورالعمل ها برای تعریف تراکنش ها، باز کردن حساب ها و سایر رویدادهای مالی استفاده می کند.

شروع کار با Beancount

برای شروع استفاده از Beancount، این مراحل ساده را دنبال کنید:

  • نصب Beancount: Beancount را با استفاده از دستورالعمل های نصب ارائه شده برای سیستم عامل خود نصب کنید.
  • ایجاد فایل Beancount خود: یک فایل متنی ساده جدید با پسوند beancount. ایجاد کنید (به عنوان مثال، my_finances.beancount).
  • تعریف حساب های خود: از دستورالعمل "open" برای تعریف حساب هایی که در تراکنش های خود استفاده می کنید استفاده کنید.
  • ثبت تراکنش ها: از دستورالعمل "txn" برای ثبت تراکنش های مالی خود استفاده کنید.

یا به سادگی در https://beancount.io ثبت نام کنید. در اینجا چند نمونه از حسابداری متن ساده آورده شده است:

مثال 1: تراکنش اساسی

2023-04-01 open Assets:Checking
2023-04-01 open Expenses:Groceries

2023-04-10 txn "فروشگاه مواد غذایی" "خرید مواد غذایی"
Assets:Checking -50.00 USD
Expenses:Groceries 50.00 USD

در این مثال، ما دو حساب Assets:Checking و Expenses:Groceries را باز می کنیم. در 10 آوریل 2023، ما یک تراکنش برای خرید مواد غذایی به ارزش 50 دلار ثبت می کنیم. این تراکنش موجودی Assets:Checking را به میزان 50 دلار کاهش می دهد (بدهی) و موجودی Expenses:Groceries را به میزان 50 دلار افزایش می دهد (اعتبار).

مثال 2: تراکنش درآمد و هزینه

2023-04-01 open Assets:Checking
2023-04-01 open Income:Salary
2023-04-01 open Expenses:Rent

2023-04-05 txn "کارفرما" "پرداخت حقوق"
Assets:Checking 2000.00 USD
Income:Salary -2000.00 USD

2023-04-06 txn "صاحبخانه" "پرداخت اجاره ماهانه"
Assets:Checking -1000.00 USD
Expenses:Rent 1000.00 USD

در این مثال، ما سه حساب را باز می کنیم: Assets:Checking، Income:Salary و Expenses:Rent. در 5 آوریل 2023، ما یک تراکنش پرداخت حقوق به مبلغ 2000 دلار را ثبت می کنیم. این تراکنش موجودی Assets:Checking را به میزان 2000 دلار افزایش می دهد (اعتبار) و موجودی Income:Salary را به میزان 2000 دلار کاهش می دهد (بدهی). در 6 آوریل 2023، ما یک تراکنش پرداخت اجاره به مبلغ 1000 دلار را ثبت می کنیم. این تراکنش موجودی Assets:Checking را به میزان 1000 دلار کاهش می دهد (بدهی) و موجودی Expenses:Rent را به میزان 1000 دلار افزایش می دهد (اعتبار).

مثال 3: انتقال بین حساب ها

2023-04-01 open Assets:Checking
2023-04-01 open Assets:Savings

2023-04-15 txn "بانک" "انتقال از حساب جاری به پس انداز"
Assets:Checking -500.00 USD
Assets:Savings 500.00 USD

در این مثال، ما دو حساب را باز می کنیم: Assets:Checking و Assets:Savings. در 15 آوریل 2023، ما یک تراکنش برای انتقال 500 دلار از حساب جاری به حساب پس انداز ثبت می کنیم. این تراکنش موجودی Assets:Checking را به میزان 500 دلار کاهش می دهد (بدهی) و موجودی Assets:Savings را به میزان 500 دلار افزایش می دهد (اعتبار).

این مثال ها مفاهیم اساسی سیستم حسابداری دوبل Beancount را نشان می دهند. با ثبت صحیح تراکنش ها، کاربران می توانند سوابق دقیقی از فعالیت های مالی خود را نگهداری کرده و گزارش هایی را برای به دست آوردن بینش در مورد وضعیت مالی خود تولید کنند.

تولید گزارش و تجزیه و تحلیل داده ها

Beancount دارای مجموعه ای از ابزارهای قدرتمند برای تولید گزارش های مالی، از جمله ترازنامه، صورت سود و زیان و موارد دیگر است. همچنین می توانید از Fava، یک رابط کاربری مبتنی بر وب برای Beancount، برای تجسم و تعامل با داده های مالی خود استفاده کنید. https://beancount.io بر اساس Fava با مجوز MIT ساخته شده است.

نتیجه گیری

قدرت و سادگی حسابداری متن ساده با Beancount را در آغوش بگیرید. با درک مفاهیم اصلی آن و پیروی از مراحلی که در این راهنما ذکر شده است، در مسیر درستی برای مدیریت امور مالی شخصی یا مشاغل کوچک خود با سهولت و دقت قرار خواهید گرفت. با افزایش راحتی شما با Beancount، می توانید ویژگی های پیشرفته و سفارشی سازی ها را برای تطبیق سیستم با نیازهای منحصر به فرد خود بررسی کنید.

خواه به دنبال پیگیری هزینه های خود، برنامه ریزی برای آینده یا کسب بینش در مورد عادات مالی خود هستید، Beancount انعطاف پذیری و شفافیت لازم را برای دستیابی به اهداف خود ارائه می دهد. Beancount با رویکرد کاربرپسند خود، این پتانسیل را دارد که شیوه مدیریت امور مالی شما را متحول کند و به شما این امکان را می دهد که کنترل آینده مالی خود را در دست بگیرید.

اکنون که پایه محکمی در Beancount دارید، زمان آن رسیده است که سفر حسابداری متن ساده خود را آغاز کنید. با صفحات گسترده دست و پا گیر و نرم افزارهای پیچیده خداحافظی کنید و به دنیای Beancount خوش آمد بگویید. حسابداری مبارک!

مقدمه‌ای بر Beancount.io

· زمان مطالعه 6 دقیقه
Mike Thrift
Mike Thrift
Marketing Manager

چرا دفترداری مدرن اهمیت دارد؟

هنوز سرمایه‌گذاری‌های خود را با صفحات گسترده (spreadsheets) مدیریت می‌کنید؟ در حالی که صفحات گسترده ابزارهای همه‌کاره‌ای هستند، با رشد سبد سرمایه‌گذاری شما می‌توانند دست و پا گیر و مستعد خطا شوند. Beancount.io راه‌حل است – یک پلتفرم ردیابی سرمایه‌گذاری پیشرفته و در عین حال کاربرپسند که به طور خاص برای مدیریت سبدهای سهام و ارزهای دیجیتال طراحی شده است. Beancount.io با در نظر گرفتن مهندسان و مینیمالیست‌های مالی ساخته شده است و ویژگی‌های قدرتمند را با یک رابط بصری ترکیب می‌کند تا تجربه ردیابی سرمایه‌گذاری شما را ساده کند.

تصویر معرفی Beancount

هزینه‌ها

صورت سود و زیان

ترازنامه

دفترداری دوطرفه: بنیان دقت

Beancount.io بر اساس اصول حسابداری دوطرفه بنا شده است – یک روش آزمایش‌شده و مورد تایید که توسط موسسات مالی در سراسر جهان استفاده می‌شود. این سیستم از طریق یک مفهوم ساده و در عین حال قدرتمند، دقت ریاضی را تضمین می‌کند: هر تراکنش مالی باید کاملاً متعادل باشد.

در دفترداری دوطرفه، هر تراکنش حداقل به دو ورودی نیاز دارد – یک بدهکار (+) و یک بستانکار (-) – در حساب‌های مختلف. این سیستم تایید داخلی ثبت تراکنش‌های نامتعادل را عملاً غیرممکن می‌سازد و تضمین می‌کند که سوابق مالی شما دقیق و قابل اعتماد باقی بمانند.

1970-01-01 open Income:BeancountCorp
1970-01-01 open Assets:Cash
1970-01-01 open Expenses:Food
1970-01-01 open Assets:Receivables:Alice
1970-01-01 open Assets:Receivables:Bob
1970-01-01 open Assets:Receivables:Charlie
1970-01-01 open Liabilities:CreditCard

2019-05-31 * "BeancountCorp" "Salary of May 15th to May 31st"
Income:BeancountCorp -888 USD
Assets:Cash 888 USD

2019-07-12 * "Popeyes chicken sandwiches" "dinner with Alice, Bob, and Charlie"
Expenses:Food 20 USD
Assets:Receivables:Alice 20 USD
Assets:Receivables:Bob 20 USD
Assets:Receivables:Charlie 20 USD
Liabilities:CreditCard -80 USD

همانطور که در دو مثال بالا مشاهده می‌کنید، هر تراکنش باید معادله حسابداری را برآورده کند.

Assets = Liabilities + Equity(aka Net Assets)

ما از سینتکس Beancount اثر مارتین بلیز و پروژه وب Fava اثر یاکوب شنیتزر برای ساخت این وب‌سایت استفاده کرده‌ایم. و اگر هر تراکنشی دارای اقلامی باشد که مجموع آنها صفر نباشد، به شما هشدار خواهد داد.

هشدار خطا

اکنون متوجه شدید که چگونه صحت دفتر کل را تضمین می‌کنیم. اما ممکن است بپرسید این «حساب‌ها» چه هستند؟

درک حساب‌ها: قیاس سطل آب

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

Beancount.io پنج نوع حساب را معرفی می‌کند.

  1. درآمد (Income) — مقدار آن همیشه منفی یا بدهکار است. این به این دلیل است که شما در حال کسب درآمد هستید و سپس پول از حساب "درآمد" بدهکار و به "دارایی‌های" شما بستانکار می‌شود.
  2. هزینه‌ها (Expenses) — مقدار آن همیشه مثبت یا بستانکار است. این به این دلیل است که شما در حال خرج کردن پول هستید و پول از "دارایی‌ها" یا "بدهی‌ها" به "هزینه‌ها" جریان می‌یابد.
  3. بدهی‌ها (Liabilities) — مقدار آن مثبت یا صفر است. بدهی‌های کارت اعتباری شما نمونه خوبی هستند که در چرخه‌هایی افزایش و کاهش می‌یابند.
  4. دارایی‌ها (Assets) — مقدار آن مثبت یا صفر است. پول نقد یا خانه‌های شما همیشه ارزشی دارند.
  5. سرمایه (Equity) — دارایی خالص شما. سیستم به طور خودکار برای شما محاسبه می‌کند. سرمایه = دارایی‌ها - بدهی‌ها و نشان‌دهنده میزان ثروت شماست.

اکنون می‌توانید حساب‌های سفارشی خود را با کلمات کلیدی بالا باز کنید:

1970-01-01 open Assets:Cash
1970-01-01 open Assets:Stock:Robinhood
1970-01-01 open Assets:Crypto:Coinbase
1970-01-01 open Expenses:Transportation:Taxi
1970-01-01 open Equity:OpeningBalance

ردیابی پیشرفته سرمایه‌گذاری با کالاها

Beancount.io در ردیابی سرمایه‌گذاری‌های متنوع، از سهام گرفته تا ارزهای دیجیتال، عالی عمل می‌کند. بیایید بررسی کنیم که چگونه سناریوهای پیچیده سرمایه‌گذاری را مدیریت می‌کند. به عنوان مثال، در اینجا نحوه ثبت خرید ۱۰ بیت‌کوین به قیمت ۱۰۰ دلار برای هر واحد در سال ۲۰۱۴ آورده شده است:

2014-08-08 * "Buy 10 Bitcoin"
Assets:Trade:Cash -1000.00 USD
Assets:Trade:Positions 10 BTC {100.00 USD}

و سپس سه سال بعد، آنها را (که در ابتدا با هزینه‌های ۱۰۰ دلار برای هر واحد با {100.00 USD} مشخص شده بودند) به قیمت ۱۰,۰۰۰ دلار برای هر واحد که با @ 10,000.00 USD مشخص شده است، می‌فروشید.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @ 10,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

یا همان تراکنش با @@ 20,000.00 USD به این معنی است که به قیمت ۲۰,۰۰۰ دلار در مجموع.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @@ 20,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

مجموع تمام اقلام تراکنش، از جمله -2 BTC {100.00 USD}، همچنان، مانند همیشه، صفر است.

برچسب هزینه‌ها {100.00 USD} مهم است زیرا ممکن است همان کالا را با هزینه‌های مختلفی خریداری کرده باشید.

100 BTC {10.00 USD, 2012-08-08}
10 BTC {100.00 USD, 2014-08-08}

اگر می‌خواهید فرآیند را ساده کنید، می‌توانید حساب را در ابتدا با FIFO یا LIFO تنظیم کنید. FIFO مخفف First In, First Out (اولین ورودی، اولین خروجی) است، در حالی که LIFO مخفف Last In, First Out (آخرین ورودی، اولین خروجی) است. در ایالات متحده، IRS از FIFO برای محاسبه سود و زیان (PnL) و مالیات شما استفاده می‌کند.

1970-01-01 open Assets:Trade:Positions "FIFO"

و سپس وقتی آن را به صورت خلاصه مانند -2 BTC {} می‌فروشید، Beancount به طور خودکار استراتژی FIFO را اعمال کرده و قدیمی‌ترین کالا را می‌فروشد.

شروع کار با Beancount.io

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

سفر مالی خود را با Beancount.io آغاز کنید - در طول دوره تبلیغاتی ما رایگان است!