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

1 پست با برچسب "بدهکار و بستانکار"

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

درک ثبت‌های روزنامه‌ای در 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 مدل‌سازی کنید و اطمینان حاصل کنید که گزارش‌های مالی‌تان بدون شگفتی‌ایی هم‌راستا هستند.