یک ماه دفترداری را از ابتدا تا انتها با bea، ابزار خط فرمان Beancount.io، ببندید. یک دفتر باز میکنید، خریدها را ثبت میکنید، یک خروجی بانکی وارد میکنید، با مانده صورت حساب ۳۲۰۶.۸۱ دلار تطبیق میدهید و صورت سود و زیان و ترازنامه ماه را میخوانید.
ماه، آگوست ۲۰۲۶ است و دفتر با ۱,۲۵۰ دلار در حساب جاری شروع میشود. هیچ چیزی در اینجا از شما نمیخواهد که پایتون بنویسید یا کوئری بزنید.
اگر هنوز نصب نکردهاید، ابتدا bea را نصب کنید: شروع سریع خط فرمان Beancount نصب با Homebrew و uv را پوشش میدهد. دفترداری محلی نیازی به حساب Beancount.io ندارد.
در یک پوشه خالی کار کنید. دو فایل ورودی را قبل از شروع در آن دانلود کنید:
- first-month.csv — خروجی بانکی که در هفته سوم وارد میکنید.
- rules.toml — قوانین دستهبندی که آن خروجی استفاده میکند.
هر دستور دفتر را با --file august/main.bean مشخص میکند، بنابراین میتوانید از همان پوشه بدون رفتن به داخل دفتر، آنها را اجرا کنید.
هفته ۱ — راهاندازی دفتر
دفتر را ایجاد کنید، سپس تنها حسابی را که الگو برای این ماه ندارد باز کنید.
bea --no-input init august --currency USD --date 2026-08-01 \
--opening-balance "Assets:Checking 1250"
bea --file august/main.bean add open --date 2026-08-01 --account Expenses:Transport:Fuel -c USDinit فایل august/main.bean را با چهارده حساب مینویسد، از جمله Expenses:Uncategorized. ردیفهایی که واردات نمیتواند دستهبندی کند در اینجا قرار میگیرند.
هفته ۲ — ثبت خریدهای روزانه
خریدها را همانطور که اتفاق میافتند ثبت کنید. تاریخ بهطور پیشفرض به امروز تنظیم میشود، بنابراین برای تاریخهای گذشته، --date را صریحاً وارد کنید.
bea --file august/main.bean add transaction "Coffee" --date 2026-08-03 \
--posting "Expenses:Dining 4.50" --posting "Assets:Checking"
bea --file august/main.bean add transaction "Weekly groceries" --date 2026-08-05 \
--posting "Expenses:Groceries 62.30" --posting "Assets:Checking"
bea --file august/main.bean add transaction --date 2026-08-07 --payee "Employer" \
--narration "August salary" --posting "Assets:Checking 2100" --posting "Income:Salary"هر افزوده قبل از جایگزینی فایل، در برابر کل دفتر بررسی میشود. پستینگ دوم خالی میماند، بنابراین Beancount مبلغ متوازنکننده را پر میکند.
هفته ۳ — وارد کردن خروجی بانکی
خروجی بقیه آگوست شامل سه ردیف است:
Date,Payee,Amount
2026-08-10,Whole Foods,-28.40
2026-08-12,Shell,-35.00
2026-08-20,Mystery Shop,-9.99فایل قوانین یک دریافتکننده را به یک حساب مرتبط میکند. قوانین به ترتیب فایل اجرا میشوند و اولین تطابق برنده است.
[[rule]]
match = "whole foods|trader joe|corner market"
account = "Expenses:Groceries"
[[rule]]
match = "shell|chevron|exxon"
account = "Expenses:Transport:Fuel"
[[rule]]
match = "salary|payroll|employer"
account = "Income:Salary"ستونهای خروجی را با --csv نقشهبرداری کنید، پیشنمایش را ببینید، سپس با --apply تکرار کنید تا آن را بنویسید.
bea --file august/main.bean import first-month.csv \
--csv date=Date,amount=Amount,payee=Payee --account Assets:Checking --rules rules.toml
bea --file august/main.bean import first-month.csv --applyپیشنمایش هر ردیف را در یک خط با قانونی که با آن مطابقت داشت، به همراه diff دقیقی که مینویسد چاپ میکند. هیچ چیزی تا --apply نوشته نمیشود.
دستور دوم به هیچ پرچمی نیاز ندارد: نقشهبرداری ستونها، حساب و قوانین برای آن فایل به خاطر سپرده میشوند. هر ورودی نوشتهشده یک خط import-id دارد، بنابراین وارد کردن دوباره همان خروجی، موارد موجود در دفتر را رد میکند.
دو ردیف با یک قانون مطابقت دارند. سومی، Mystery Shop، با هیچ قانونی مطابقت ندارد، بنابراین با پرچم ! به Expenses:Uncategorized پست میشود — صف بررسی شما برای بعد.
برای فرم ستون بدهکار و بستانکار، ارزهای دیگر و واردکنندههای پایتون، به وارد کردن خروجیهای بانکی با خط فرمان مراجعه کنید.
هفته ۴ — تطبیق با صورت حساب
صورت حساب آگوست حساب جاری را با ۳۲۰۶.۸۱ دلار میبندد. دفتر شما ۳۲۰۹.۸۱ دلار نشان میدهد. تفاوت، کارمزد بانکی ۳.۰۰ دلاری است که خروجی از دست داده است.
کارمزد را ثبت کنید، سپس مانده صورت حساب را تأیید کنید. Beancount یک تأیید را در ابتدای روز بررسی میکند، بنابراین تأیید اول سپتامبر تمام تراکنشهای آگوست را پوشش میدهد.
bea --file august/main.bean add transaction "Bank fee" --date 2026-08-31 \
--posting "Expenses:Fees 3.00" --posting "Assets:Checking"
bea --file august/main.bean add balance --date 2026-09-01 --account Assets:Checking \
--amount "3206.81 USD"
bea --file august/main.bean list transaction --flag '!' --detailsصف شامل یک تراکنش، ردیف Mystery Shop است. --details شماره فایل و خط آن را چاپ میکند.
آن خط را در ویرایشگر خود باز کنید. پستینگ Expenses:Uncategorized آن را به حسابی که به آن تعلق دارد تغییر دهید — در اینجا Expenses:Dining — و پرچم آن را از ! به * تغییر دهید تا بهعنوان بررسیشده علامت بزنید. خط import-id را نگه دارید تا واردات مجدد همچنان آن ردیف را رد کند.
سپس تأیید کنید که دفتر بارگذاری میشود و صف خالی است:
bea --file august/main.bean check
bea --file august/main.bean list transaction --flag '!' --detailsدفتر تمیز با کد خروجی ۰ خارج میشود. یک تأیید شکسته یا حساب ناشناخته با خروجی غیرصفر فهرست میشود. صف اکنون No transactions found. را چاپ میکند.
خواندن ماه
bea --file august/main.bean report income-statement --time 2026-08
bea --file august/main.bean report balance-sheet
bea --file august/main.bean report income-statement --time monthصورت سود و زیان حقوق ۲,۱۰۰.۰۰ دلاری را در برابر ۱۴۳.۱۹ دلار هزینهها خالص میکند و سود خالص ۱,۹۵۶.۸۱ دلار به دست میآید. مانده حسابها با علائم Beancount چاپ میشوند، بنابراین خطوط درآمد منفی هستند. ترازنامه حساب جاری را ۳,۲۰۶.۸۱ دلار نشان میدهد که با صورت حسابی که به آن تطبیق دادهاید مطابقت دارد.
--time 2026-08 ماه این آموزش را ثابت میکند. --time month همیشه به معنای ماه جاری است، که پس از بهروز شدن دفترهایتان به آن دست خواهید یافت.
ادامه از اینجا
- وارد کردن خروجیهای بانکی با خط فرمان برای بررسی موارد تکراری، چیدمانهای دیگر ستونها و واردات تکراری.
- خودکارسازی دفترداری با bea برای پاکت JSON، کدهای خروجی و اجراهای بدون نظارت.
- مرجع خط فرمان Beancount برای همه دستورها و گزینهها.