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

67 پست با برچسب "beancount"

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

راهنمای جامع مهاجرت از QuickBooks به Beancount

· 35 دقیقه مطالعه
Mike Thrift
Mike Thrift
Marketing Manager

مرحله ۱: استخراج داده‌ها از QuickBooks

مهاجرت داده‌های پنج ساله با خارج کردن تمام سوابق QuickBooks در یک فرمت قابل استفاده آغاز می‌شود. QuickBooks Desktop و QuickBooks Online گزینه‌های خروجی‌گیری متفاوتی دارند:

2021-12-01-from-quickbooks-to-plain-text-a-migration-playbook

۱.۱ QuickBooks Desktop – گزینه‌های خروجی‌گیری

IIF (Intuit Interchange Format): نرم‌افزار QuickBooks Desktop می‌تواند لیست‌ها (مانند سرفصل حساب‌ها، مشتریان، فروشندگان) را به فایل‌های متنی .IIF خروجی بگیرد. در QuickBooks Desktop، به مسیر File → Utilities → Export → Lists to IIF بروید، سپس لیست‌های مورد نیاز خود (مانند Chart of Accounts، Customers، Vendors) را انتخاب کنید. این کار یک فایل متنی تولید می‌کند که شامل نام حساب‌ها، انواع آن‌ها و داده‌های لیست است. IIF یک فرمت اختصاصی اما مبتنی بر متن ساده است که تجزیه (parse) آن نسبتاً آسان است. از آن برای استخراج سرفصل حساب‌ها (Chart of Accounts) و لیست مخاطبین خود برای ارجاع در Beancount استفاده کنید.

دفتر کل/دفتر روزنامه از طریق CSV: برای داده‌های تراکنش، QuickBooks Desktop یک خروجی کامل با یک کلیک ارائه نمی‌دهد، اما می‌توانید از گزارش‌ها استفاده کنید. روش پیشنهادی، خروجی گرفتن از دفتر روزنامه عمومی (General Journal) (شامل تمام تراکنش‌ها) در بازه زمانی مورد نظر است. در QuickBooks Desktop، به مسیر Reports → Accountant & Taxes → Journal بروید، تاریخ‌ها را از اولین تراکنش تا امروز تنظیم کنید و روی Export → Excel کلیک کنید. پس از حذف هرگونه سرصفحه/پاصفحه گزارش و ستون‌های خالی، نتیجه را به صورت CSV ذخیره کنید. اطمینان حاصل کنید که داده‌های عددی تمیز هستند: شامل سنت (مثلاً 3.00 نه 3)، بدون علامت نقل قول اضافی، و بدون نماد ارز یا منفی‌های دوگانه در CSV باشند. فایل CSV باید ستون‌هایی مانند Date, Trans #, Name, Account, Memo, Debit, Credit, Balance (یا یک ستون Amount واحد بسته به فرمت گزارش) داشته باشد.

نکته: QuickBooks Desktop 2015 به بعد همچنین می‌تواند تراکنش‌ها را از طریق کادر محاوره‌ای Find خروجی بگیرد. از مسیر Edit → Find → Advanced استفاده کنید، بازه زمانی را برای پنج سال تنظیم کنید، سپس نتایج را به CSV خروجی بگیرید. هشدار: برخی نسخه‌ها خروجی را به 32,768 خط محدود می‌کنند. اگر داده‌های بسیار بزرگی دارید، برای جلوگیری از بریده شدن داده‌ها، سال به سال (یا در بخش‌های کوچکتر) خروجی بگیرید و بعداً آن‌ها را ترکیب کنید. اطمینان حاصل کنید که بازه‌های زمانی برای جلوگیری از تکرار، همپوشانی نداشته باشند.

فرمت‌های دیگر (QBO/QFX/QIF): نرم‌افزار QuickBooks Desktop می‌تواند تراکنش‌های بانکی را از طریق فایل‌های .QBO (Web Connect) یا .QFX/.OFX وارد کند، اما برای خروجی گرفتن از QuickBooks، این فرمت‌ها معمول نیستند. اگر هدف شما فقط استخراج تراکنش‌های بانکی است، ممکن است قبلاً آن‌ها را در فرمت QBO/OFX از بانک خود داشته باشید. با این حال، برای خروجی کامل دفتر کل، به IIF و CSV پایبند باشید. QuickBooks Desktop نمی‌تواند مستقیماً بدون ابزارهای شخص ثالث به فرمت QIF (Quicken Interchange Format) خروجی بگیرد. اگر راهی برای دریافت QIF پیدا کردید، توجه داشته باشید که برخی از ابزارهای دفتر کل (مانند Ledger 2.x قدیمی) می‌توانستند QIF را بخوانند، اما بهتر است در این فرآیند با CSV کار کنیم.


۱.۲ QuickBooks Online – گزینه‌های خروجی‌گیری

خروجی داخلی Excel/CSV: نسخه آنلاین QuickBooks (QBO) ابزاری به نام Export Data ارائه می‌دهد. به Settings ⚙ → Tools → Export Data بروید. در کادر محاوره‌ای خروجی، از تب Reports برای انتخاب داده‌ها (مانند General Ledger یا Transaction List) و از تب Lists برای لیست‌ها (سرفصل حساب‌ها و غیره) استفاده کنید، All dates را انتخاب کرده و به Excel خروجی بگیرید. QuickBooks Online یک فایل ZIP حاوی چندین فایل Excel برای گزارش‌ها و لیست‌های انتخاب شده (به عنوان مثال، سود و زیان، ترازنامه، دفتر کل، مشتریان، فروشندگان، سرفصل حساب‌ها و غیره) دانلود می‌کند. سپس می‌توانید این فایل‌های Excel را برای پردازش به CSV تبدیل کنید.

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

  1. به Reports بروید و Transaction Detail by Account (یا General Ledger در برخی نسخه‌های QBO) را پیدا کنید.
  2. Report period را روی بازه کامل پنج ساله تنظیم کنید.
  3. زیر گزینه‌های گزارش، Group by = None را تنظیم کنید (تا تراکنش‌های فردی بدون جمع‌های فرعی لیست شوند).
  4. ستون‌ها را سفارشی کنید تا حداقل شامل این موارد باشند: Date، Transaction Type، Number، Name (Payee/Customer)، Memo/Description، Account، Debit، Credit (یا یک ستون Amount واحد) و Balance. در صورت استفاده، هرگونه class یا location را نیز شامل کنید.
  5. گزارش را اجرا کرده و سپس Export to Excel را بزنید.

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

سرفصل حساب‌ها و لیست‌های دیگر: در QuickBooks Online می‌توانید سرفصل حساب‌ها را از طریق Accounting → Chart of Accounts → Batch Actions → Export to Excel خروجی بگیرید. این کار را برای دریافت نام‌ها و انواع حساب‌ها انجام دهید. به همین ترتیب، اگر می‌خواهید نام‌ها را برای فراداده (metadata) حفظ کنید، لیست مشتریان، فروشندگان و غیره را نیز خروجی بگیرید.

API QuickBooks Online (اختیاری): برای یک رویکرد برنامه‌نویسی، Intuit یک REST API برای داده‌های QBO ارائه می‌دهد. کاربران پیشرفته می‌توانند یک اپلیکیشن QuickBooks Online ایجاد کنند (نیاز به حساب توسعه‌دهنده دارد) و از API برای دریافت داده‌ها در فرمت JSON استفاده کنند. به عنوان مثال، می‌توانید از نقطه پایانی (endpoint) Account برای سرفصل حساب‌ها و از نقاط پایانی گزارش JournalEntry یا GeneralLedger برای تراکنش‌ها کوئری بگیرید. SDKهای پایتون مانند python-quickbooks وجود دارند که API را در خود جای داده‌اند. با این حال، استفاده از API شامل احراز هویت OAuth است و برای یک مهاجرت یک‌باره، مگر اینکه اتوماسیون را ترجیح دهید، بیش از حد پیچیده است. برای اکثر موارد، خروجی دستی به CSV/Excel ساده‌تر و کمتر مستعد خطا است.


مرحله ۲: تبدیل و پاک‌سازی داده‌ها

هنگامی که داده‌های QuickBooks را در فرمت CSV (و/یا IIF) در اختیار دارید، مرحله بعدی تبدیل آن به فرمت دفتر کل متنی ساده Beancount است. این شامل تجزیه خروجی‌ها، نگاشت حساب‌های QuickBooks به سرفصل حساب‌های Beancount و فرمت‌بندی تراکنش‌ها با سینتکس Beancount است.

۲.۱ تجزیه خروجی‌های QuickBooks با پایتون

استفاده از پایتون دقت و تکرارپذیری را برای تبدیل تضمین می‌کند. ما اسکریپت‌هایی را برای دو وظیفه کلیدی تشریح می‌کنیم: وارد کردن سرفصل حساب‌ها و تبدیل تراکنش‌ها.

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

# نگاشت نوع حساب کوییک‌بوکس به دسته‌بندی ریشه در بین‌کانت
AccountTypeMap = {
'BANK': 'Assets',
'CCARD': 'Liabilities',
'AR': 'Assets', # حساب‌های دریافتنی به عنوان دارایی
'AP': 'Liabilities', # حساب‌های پرداختنی به عنوان بدهی
'FIXASSET': 'Assets',
'OASSET': 'Assets', # سایر دارایی‌ها
'OCASSET': 'Assets', # سایر دارایی‌های جاری
'LTLIAB': 'Liabilities', # بدهی‌های بلندمدت
'OCLIAB': 'Liabilities', # سایر بدهی‌های جاری
'EQUITY': 'Equity',
'INC': 'Income',
'EXP': 'Expenses',
'EXINC': 'Income', # سایر درآمدها
'EXEXP': 'Expenses', # سایر هزینه‌ها
}

با استفاده از خروجی IIF کوییک‌بوکس دسکتاپ یا CSV لیست حساب‌های QBO، نام و نوع هر حساب را بازیابی می‌کنیم. سپس:

  • ایجاد نام حساب‌های Beancount: کوییک‌بوکس گاهی از علامت دو نقطه (:) در نام حساب‌ها برای نشان دادن حساب‌های فرعی استفاده می‌کند (مثلاً “Current Assets:Checking). Beancount از همین علامت دو نقطه برای سلسله مراتب استفاده می‌کند. اغلب می‌توانید نام را مستقیماً استفاده کنید. اگر نام حساب‌های کوییک‌بوکس با یک دسته‌بندی شروع نمی‌شود، دسته‌بندی نگاشت شده را به ابتدای آن اضافه کنید. برای مثال، یک حساب کوییک‌بوکس از نوع BANK به نام "Checking" در Beancount به Assets:Checking تبدیل می‌شود. یک حساب EXP (هزینه) به نام "Meals" به Expenses:Meals تبدیل می‌شود و غیره.

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

  • خروجی گرفتن افتتاح حساب‌ها: در Beancount، هر حسابی که استفاده می‌شود باید با دستور open افتتاح شود. می‌توانید تاریخی قبل از اولین تراکنش خود انتخاب کنید (مثلاً اگر داده‌های ۲۰۱۹-۲۰۲۳ را منتقل می‌کنید، از 2018-12-31 یا تاریخی حتی زودتر برای همه افتتاح‌ها استفاده کنید). اسکریپت خطوطی مانند این را خواهد نوشت: 2018-12-31 open Assets:Checking USD 2018-12-31 open Expenses:Meals USD برای هر حساب (با فرض اینکه USD ارز اصلی است). از ارز مناسب برای هر حساب استفاده کنید (به یادداشت‌های چند ارزی در ادامه مراجعه کنید).

تبدیل تراکنش: چالش اصلی تبدیل خروجی تراکنش‌های QuickBooks (CSV) به ورودی‌های Beancount است. هر تراکنش QuickBooks (فاکتور، قبض، چک، سند روزنامه و غیره) می‌تواند چندین آرتیکل (خط) داشته باشد که باید در یک تراکنش Beancount جمع‌آوری شوند.

ما از خواننده CSV پایتون برای پیمایش خطوط خروجی گرفته شده و جمع‌آوری آرتیکل‌ها استفاده خواهیم کرد:

import csv
from collections import defaultdict

# خواندن تمام خطوط از فایل CSV دفتر روزنامه کوییک‌بوکس
rows = []
with open('quickbooks_exported_journal.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for line in reader:
rows.append(line)

# گروه‌بندی خطوط بر اساس تراکنش (با فرض اینکه 'Trans #' تراکنش‌ها را مشخص می‌کند)
transactions = defaultdict(list)
for line in rows:
trans_id = line.get('Trans #') or line.get('Transaction ID') or line.get('Num')
transactions[trans_id].append(line)

اکنون transactions یک دیکشنری است که هر کلید آن یک شناسه/شماره تراکنش است و مقدار آن لیستی از آرتیکل‌های آن تراکنش است. در ادامه، هر گروه را به فرمت Beancount تبدیل می‌کنیم:

def format_date(qb_date):
# تاریخ‌های کوییک‌بوکس ممکن است مانند "12/31/2019" باشند
m, d, y = qb_date.split('/')
return f"{y}-{int(m):02d}-{int(d):02d}"

output_lines = []
for trans_id, splits in transactions.items():
# مرتب‌سازی آرتیکل‌ها بر اساس ترتیب خط در صورت نیاز (معمولاً به ترتیب می‌آیند)
splits = sorted(splits, key=lambda x: x.get('Line') or 0)
first = splits[0]
date = format_date(first['Date'])
payee = first.get('Name', "").strip()
memo = first.get('Memo', "").strip()
# سربرگ تراکنش
output_lines.append(f"{date} * \"{payee}\" \"{memo}\"")
if first.get('Num'): # اضافه کردن شماره مرجع در صورت وجود
output_lines.append(f" number: \"{first['Num']}\"")
# حلقه روی هر آرتیکل/پستینگ
for split in splits:
acct_name = split['Account'].strip()
# نگاشت نام حساب کوییک‌بوکس به حساب بین‌کانت (با استفاده از نگاشت قبلی)
beancount_acct = account_map.get(acct_name, acct_name)
# تعیین مبلغ با علامت:
amount = split.get('Amount') or ""
debit = split.get('Debit') or ""
credit = split.get('Credit') or ""
if amount:
# برخی خروجی‌ها یک ستون Amount واحد دارند (منفی برای بستانکار)
amt_str = amount
else:
# اگر ستون‌های بدهکار/بستانکار جدا باشند
amt_str = debit if debit else f"-{credit}"
# برای اطمینان، هرگونه کاما را در اعداد حذف کنید
amt_str = amt_str.replace(",", "")
# اضافه کردن ارز
currency = split.get('Currency') or "USD"
amt_str = f"{amt_str} {currency}"
# شرح/یادداشت برای آرتیکل
line_memo = split.get('Memo', "").strip()
comment = f" ; {line_memo}" if line_memo else ""
output_lines.append(f" {beancount_acct:<40} {amt_str}{comment}")
# پایان تراکنش – خط خالی
output_lines.append("")

منطق این اسکریپت کارهای زیر را انجام می‌دهد:

  • تاریخ را برای Beancount به فرمت YYYY-MM-DD تبدیل می‌کند.
  • از طرف حساب (Name) و شرح (Memo) برای روایت تراکنش استفاده می‌کند. به عنوان مثال: 2020-05-01 * "ACME Corp" "Invoice payment" (اگر طرف حسابی وجود نداشته باشد، می‌توانید از نوع تراکنش کوییک‌بوکس استفاده کنید یا طرف حساب را خالی بگذارید).
  • اگر شماره مرجعی وجود داشته باشد (شماره چک، شماره فاکتور و غیره)، یک فراداده number اضافه می‌کند.
  • روی هر خط آرتیکل تکرار می‌کند:
    • نام حساب QuickBooks را با استفاده از یک دیکشنری account_map (که از مرحله سرفصل حساب‌ها پر شده) به حساب Beancount نگاشت می‌کند.
    • مبلغ را تعیین می‌کند. بسته به خروجی شما، ممکن است یک ستون Amount واحد (با مقادیر مثبت/منفی) یا ستون‌های Debit و Credit جداگانه داشته باشید. کد بالا هر دو حالت را مدیریت می‌کند. این کد تضمین می‌کند که مبالغ بستانکار به عنوان مقادیر منفی نمایش داده شوند (زیرا در Beancount، برای هر پستینگ از یک عدد با علامت استفاده می‌شود).
    • ارز را ضمیمه می‌کند (با فرض USD مگر اینکه ستون ارز دیگری وجود داشته باشد).
    • خط پستینگ Beancount را با حساب، مبلغ و یک کامنت با شرح خط می‌نویسد. به عنوان مثال: Assets:Checking 500.00 USD ; Deposit Income:Sales -500.00 USD ; Deposit این نشان‌دهنده یک واریز ۵۰۰ دلاری است (از درآمد به حساب جاری).
  • پس از لیست کردن تمام آرتیکل‌ها، یک خط خالی تراکنش را جدا می‌کند.

مدیریت چند ارزی: اگر داده‌های QuickBooks شما شامل چندین ارز باشد، کد ارز را در هر پستینگ (همانطور که در بالا نشان داده شد) درج کنید. اطمینان حاصل کنید که حساب‌هایی که به ارزهای خارجی هستند با همان ارز افتتاح شوند. به عنوان مثال، اگر یک حساب بانکی به یورو (EUR) دارید، باید open Assets:Bank:Checking EUR را خروجی بگیرید و تراکنش‌های آن حساب از EUR استفاده خواهند کرد. Beancount از دفترهای کل چند ارزی پشتیبانی می‌کند و تبدیل‌های ضمنی را ردیابی خواهد کرد، اما اگر می‌خواهید در گزارش‌ها تبدیل به یک ارز پایه داشته باشید، ممکن است نیاز به اضافه کردن ورودی‌های قیمت برای نرخ‌های ارز داشته باشید. همچنین توصیه می‌شود که ارز عملیاتی اصلی خود را در بالای فایل Beancount اعلام کنید (مثلاً option "operating_currency" "USD").

اجرای تبدیل: اسکریپت پایتون را (به عنوان مثال، با نام qb_to_beancount.py) ذخیره کرده و آن را بر روی فایل‌های خروجی گرفته شده خود اجرا کنید. این باید یک فایل .beancount حاوی تمام حساب‌ها و تراکنش‌ها تولید کند.


۲.۲ مدیریت موارد خاص و پاک‌سازی داده‌ها

در طول تبدیل، به این مشکلات رایج و نحوه رسیدگی به آنها توجه داشته باشید:

  • عدم تطابق نام حساب‌ها: ممکن است نام حساب‌های QuickBooks با نام‌های سلسله‌مراتبی Beancount تداخل داشته باشد. به عنوان مثال، QuickBooks می‌تواند دو حساب والد مختلف داشته باشد که هر کدام یک حساب فرعی به نام "Insurance" دارند. در Beancount، Expenses:Insurance باید منحصر به فرد باشد. این مشکل را با تغییر نام یکی از آنها (مثلاً "Insurance-Vehicle" در مقابل "Insurance-Health") قبل از خروجی‌گیری یا نگاشت آنها به حساب‌های منحصر به فرد Beancount در اسکریپت خود حل کنید. قراردادهای نام‌گذاری سازگار (بدون کاراکترهای خاص و استفاده از سلسله مراتب) از سردردهای بعدی جلوگیری می‌کند. در صورت لزوم از رویکرد فایل نگاشت مجدد استفاده کنید: یک CSV یا دیکشنری از نام قدیمی → نام جدید Beancount نگهداری کنید و آن را در طول تبدیل اعمال کنید (کد نمونه ما از account_map استفاده می‌کند و می‌تواند موارد جایگزین را از یک فایل بارگیری کند).

  • تاریخ‌ها و فرمت‌ها: اطمینان حاصل کنید که تمام تاریخ‌ها به طور یکنواخت فرمت‌بندی شده‌اند. اسکریپت بالا فرمت M/D/Y را به فرمت ISO نرمال می‌کند. همچنین، مراقب مسائل مربوط به سال مالی در مقابل سال تقویمی باشید اگر بازه پنج ساله شما از پایان سال عبور می‌کند. Beancount به مرزهای سال مالی اهمیتی نمی‌دهد، اما ممکن است بعداً بخواهید برای راحتی کار، فایل‌ها را بر اساس سال تقسیم کنید.

  • دقت عددی: QuickBooks ارز را با سنت مدیریت می‌کند، بنابراین کار با سنت معمولاً مشکلی ایجاد نمی‌کند. همه مبالغ باید در CSV ایده‌آل دو رقم اعشار داشته باشند. اگر هر مبلغی به عدد صحیح (بدون اعشار) تبدیل شده یا دارای کاما/پرانتز (برای مقادیر منفی) است، آنها را در اسکریپت پاک کنید (کاماها را حذف کنید، (100.00) را به -100.00 تبدیل کنید و غیره). خروجی CSV اگر به درستی انجام شود (طبق دستورالعمل) باید از این مشکلات فرمت‌بندی جلوگیری کند.

  • مبالغ منفی و علائم: گزارش‌های QuickBooks گاهی مقادیر منفی را به صورت -100.00 یا (100.00) یا حتی --100.00 در برخی خروجی‌های Excel نشان می‌دهند. مرحله پاک‌سازی باید این موارد را مدیریت کند. اطمینان حاصل کنید که بدهکار و بستانکار هر تراکنش به صفر می‌رسد. Beancount این را اعمال خواهد کرد (اگر تراز نباشد، در هنگام وارد کردن خطا می‌دهد).

  • تراکنش‌های تکراری: اگر مجبور شدید تراکنش‌ها را به صورت دسته‌ای خروجی بگیرید (مثلاً سال به سال یا حساب به حساب)، مراقب باشید که آنها را بدون همپوشانی ادغام کنید. بررسی کنید که اولین تراکنش یک سال، آخرین تراکنش دسته قبلی نباشد. به راحتی ممکن است چند تراکنش در مرزها به طور تصادفی تکرار شوند. اگر به تکراری بودن شک دارید، می‌توانید ورودی‌های نهایی Beancount را بر اساس تاریخ مرتب کرده و به دنبال ورودی‌های یکسان بگردید، یا از تگ‌های تراکنش منحصر به فرد Beancount برای شناسایی آنها استفاده کنید. یک استراتژی این است که شماره تراکنش QuickBooks را به عنوان فراداده (metadata) اضافه کنید (مثلاً از Trans # یا شماره فاکتور به عنوان تگ txn یا فراداده quickbooks_id استفاده کنید) و سپس اطمینان حاصل کنید که هیچ شناسه تکراری وجود ندارد.

  • آرتیکل‌های نامتوازن / حساب‌های معلق: ممکن است QuickBooks موارد عجیبی مانند یک تراکنش با عدم توازن داشته باشد که QuickBooks به طور خودکار آن را به "Opening Balance Equity" یا "Retained Earnings" منتقل کرده است. به عنوان مثال، هنگام تنظیم مانده‌های اولیه حساب، QuickBooks اغلب تفاوت‌ها را به یک حساب حقوق صاحبان سهام پست می‌کند. این موارد در تراکنش‌های خروجی گرفته شده ظاهر می‌شوند. Beancount نیاز به تراز کردن صریح دارد. ممکن است لازم باشد یک حساب حقوق صاحبان سهام برای مانده‌های افتتاحیه (معمولاً Equity:Opening-Balances) معرفی کنید تا رفتار QuickBooks را تقلید کند. این یک رویه خوب است که یک ورودی مانده افتتاحیه در روز اول دفتر کل خود داشته باشید که مانده‌های اولیه همه حساب‌ها را ایجاد می‌کند (به مرحله ۵ مراجعه کنید).

  • موارد خاص چند ارزی: اگر از چند ارز استفاده می‌کنید، خروجی QuickBooks ممکن است تمام مبالغ را به ارز اصلی یا به ارز بومی خودشان لیست کند. ایده‌آل این است که داده‌ها را به ارز بومی برای هر حساب دریافت کنید (گزارش‌های QuickBooks Online معمولاً این کار را انجام می‌دهند). در Beancount، هر پستینگ یک ارز دارد. اگر QuickBooks نرخ‌های ارز یا تبدیل به ارز اصلی را ارائه داده باشد، ممکن است آنها را نادیده بگیرید و به ورودی‌های قیمت Beancount تکیه کنید. اگر QuickBooks نرخ‌های ارز را خروجی نگرفته باشد، ممکن است بخواهید به صورت دستی سوابق قیمت را (مثلاً با استفاده از دستور price در Beancount) برای تاریخ‌های کلیدی اضافه کنید تا ارزیابی مطابقت داشته باشد. با این حال، برای یکپارچگی اولیه دفتر کل، کافی است که تراکنش‌ها در ارزهای اصلی خود تراز شوند – سود/زیان‌های تحقق نیافته نیازی به ثبت صریح ندارند مگر اینکه بخواهید گزارش‌های یکسانی داشته باشید.

  • حساب‌های دریافتنی / حساب‌های پرداختنی: کوییک‌بوکس جزئیات فاکتورها و قبوض (تاریخ سررسید، وضعیت پرداخت و غیره) را ردیابی می‌کند که در یک دفتر کل ساده به طور کامل منتقل نمی‌شوند. شما تراکنش‌های A/R (حساب‌های دریافتنی) و A/P (حساب‌های پرداختنی) را دریافت خواهید کرد (فاکتورها A/R را افزایش می‌دهند، پرداخت‌ها A/R را کاهش می‌دهند و غیره)، اما نه اسناد فاکتور یا مانده مشتریان به ازای هر فاکتور. در نتیجه، پس از مهاجرت، باید تأیید کنید که مانده حساب‌های A/R و A/P شما در Beancount با مانده‌های باز مشتریان/فروشندگان در QuickBooks برابر است. اگر نیاز به ردیابی فاکتورها دارید، می‌توانید از فراداده Beancount استفاده کنید (مثلاً یک تگ invoice یا لینک اضافه کنید). شماره فاکتورهای QuickBooks باید در فیلدهای Num یا Memo آمده باشد – اسکریپت ما Num را به عنوان number: "..." در فراداده تراکنش حفظ می‌کند.

  • حساب‌های غیرفعال یا بسته شده: خروجی IIF ممکن است شامل حساب‌های غیرفعال باشد (اگر انتخاب کرده باشید که آنها را شامل شود). وارد کردن آنها مشکلی ندارد (آنها فقط هیچ تراکنشی نخواهند داشت و اگر واقعاً غیرفعال باشند مانده صفر خواهند داشت). می‌توانید پس از تاریخ آخرین تراکنش، آنها را با دستور close در Beancount به عنوان بسته شده علامت‌گذاری کنید. این کار دفتر کل شما را مرتب نگه می‌دارد. به عنوان مثال: 2023-12-31 close Expenses:OldAccount ; closed after migration این کار اختیاری است و بیشتر برای تمیزی است.

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


مرحله ۳: اعتبارسنجی و مغایرت‌گیری داده‌ها

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

۳.۱ مغایرت‌گیری تراز آزمایشی

گزارش تراز آزمایشی (trial balance) مانده پایانی همه حساب‌ها را (با بدهکار و بستانکار یا مثبت/منفی مشخص شده) لیست می‌کند و جمع آن باید صفر باشد. اجرای یک تراز آزمایشی در هر دو سیستم برای یک تاریخ مشخص، سریع‌ترین راه برای تأیید صحت کلی است.

  • در QuickBooks: یک گزارش Trial Balance برای آخرین روز سال نهایی (مثلاً ۳۱ دسامبر ۲۰۲۳) اجرا کنید. این گزارش مانده هر حساب را نشان می‌دهد. آن را خروجی بگیرید یا ارقام کلیدی را یادداشت کنید.

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

    bean-report migrated.beancount balances

    گزارش balances یک تراز آزمایشی است که تمام حساب‌ها و مانده‌های آنها را لیست می‌کند. همچنین می‌توانید فایل را در Fava (رابط کاربری وب Beancount) باز کرده و به بخش Balances یا Balance Sheet نگاه کنید. مانده هر حساب در Beancount باید با تراز آزمایشی QuickBooks مطابقت داشته باشد. به عنوان مثال، اگر QuickBooks نشان دهد Accounts Receivable = 5,000،حسابAssets:AccountsReceivableدرBeancountبایددرمجموع۵,۰۰۰دلار(بدهکار)باشد.اگرSalesIncome=5,000*، حساب Assets:Accounts Receivable در Beancount باید در مجموع ۵,۰۰۰ دلار (بدهکار) باشد. اگر *Sales Income = 200,000، حساب Income:Sales در Beancount باید ۲۰۰,۰۰۰ دلار (بستانکار، که ممکن است به صورت -200,000 نمایش داده شود اگر از تراز آزمایشی استفاده می‌کنید که بستانکار را به عنوان منفی نشان می‌دهد) باشد.

اگر مغایرتی وجود داشت، آنها را مشخص کنید:

  • بررسی کنید که آیا یک حساب به طور کامل حذف شده یا اضافی است (آیا یک حساب را فراموش کرده‌ایم یا حسابی را که قبل از دوره مهاجرت بسته شده بود، وارد کرده‌ایم؟).
  • اگر مانده‌ای اشتباه است، جزئیات را بررسی کنید: QuickBooks می‌تواند یک Account QuickReport یا جزئیات دفتر کل برای آن حساب اجرا کند، و شما می‌توانید آن را با رجیستر Beancount برای آن حساب (bean-report migrated.beancount register -a AccountName) مقایسه کنید. گاهی اوقات تفاوت‌ها از یک تراکنش گمشده یا تکراری ناشی می‌شوند.

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


۳.۲ مقایسه مانده حساب‌ها

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

  • ترازنامه (Balance Sheet): یک ترازنامه QuickBooks برای تاریخ نهایی و یک ترازنامه Beancount (bean-report migrated.beancount balsheet) اجرا کنید. این مشابه تراز آزمایشی است اما بر اساس دارایی‌ها، بدهی‌ها و حقوق صاحبان سهام سازماندهی شده است. اعداد باید از نظر دسته‌بندی مطابقت داشته باشند. برای بررسی دقیق‌تر، مجموع حساب‌های اصلی را مقایسه کنید: وجه نقد، حساب‌های دریافتنی، دارایی‌های ثابت، حساب‌های پرداختنی، حقوق صاحبان سهام و غیره.

  • سود و زیان (صورت درآمد): یک گزارش سود و زیان برای دوره پنج ساله (یا سال به سال) در QuickBooks و در Beancount (bean-report migrated.beancount income برای صورت درآمد دوره کامل) اجرا کنید. سود خالص از Beancount باید با QuickBooks برای هر دوره برابر باشد. اگر تمام پنج سال را منتقل کرده‌اید، سود خالص تجمعی باید مطابقت داشته باشد. همچنین می‌توانید مجموع درآمدهای فردی و هزینه‌ها را مقایسه کنید تا اطمینان حاصل کنید که هیچ دسته‌ای جا نیفتاده یا دو بار حساب نشده است.

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

۳.۳ بررسی‌های یکپارچگی خودکار

از ابزارهای اعتبارسنجی خود Beancount استفاده کنید:

  • bean-check: دستور bean-check migrated.beancount را اجرا کنید. این دستور فایل را تجزیه کرده و هرگونه خطای سینتکسی یا عدم تراز را گزارش می‌دهد. اگر اسکریپت چیزی مانند یک حساب افتتاح نشده یا یک تراکنش نامتوازن را از قلم انداخته باشد، bean-check آن را علامت‌گذاری می‌کند. یک اجرای تمیز (بدون خروجی) به این معنی است که فایل حداقل از نظر داخلی سازگار است.

  • تأیید مانده (Balance Assertions): می‌توانید به عنوان یک بررسی اضافی، تأییدهای مانده صریح را در دفتر کل برای حساب‌های کلیدی اضافه کنید. به عنوان مثال، اگر مانده حساب بانکی را در یک تاریخ خاص می‌دانید، یک خط اضافه کنید: 2023-12-31 balance Assets:Bank:Checking 10000.00 USD سپس bean-check اطمینان حاصل می‌کند که در دفتر کل، تا آن تاریخ، مانده واقعاً ۱۰,۰۰۰ دلار است. این کار اختیاری است اما می‌تواند برای حساب‌های با اهمیت بالا مفید باشد. می‌توانید مانده‌های پایانی را از QuickBooks (مثلاً پایان هر سال) بگیرید و آنها را در فایل Beancount تأیید کنید. اگر هر تأییدی شکست بخورد، Beancount تفاوت را گزارش می‌دهد.

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

  • تعداد تراکنش‌ها و تکرارها: تعداد تراکنش‌ها را در QuickBooks در مقابل Beancount بشمارید. QuickBooks به راحتی تعداد مستقیم را نشان نمی‌دهد، اما می‌توانید با شمردن خطوط در CSV (هر سربرگ تراکنش در مقابل آرتیکل‌ها) تخمین بزنید. در Beancount، یک راه سریع شمارش رخدادهای txn یا * " در فایل است. آنها باید برابر یا کمی بیشتر از QuickBooks باشند (اگر تراکنش‌های مانده افتتاحیه یا تعدیلات اضافه کرده‌اید). یک عدم تطابق قابل توجه به این معنی است که ممکن است چیزی حذف یا تکرار شده باشد. استفاده ما از شناسه‌های منحصر به فرد در فراداده می‌تواند کمک کند: اگر به تکرار شک دارید، فایل Beancount را برای شماره چک یا شماره فاکتور یکسانی که دو بار ظاهر می‌شود در حالی که نباید، جستجو کنید.

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


مرحله ۴: نهایی کردن دفتر کل Beancount

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

۴.۱ سازماندهی فایل‌های دفتر کل و پیکربندی

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

  • فایل اصلی دفتر کل: به عنوان مثال، ledger.beancount – این نقطه ورود است که می‌تواند فایل‌های دیگر را include کند. ممکن است حاوی گزینه‌های سراسری باشد و سپس فایل‌های سالانه را شامل شود.
  • فایل حساب‌ها: سرفصل حساب‌ها و مانده‌های افتتاحیه را تعریف کنید. به عنوان مثال، accounts.beancount با تمام دستورات open (همانطور که توسط اسکریپت تولید شده است). همچنین ممکن است کالاها (ارزها) را در اینجا لیست کنید.
  • فایل‌های تراکنش: یکی برای هر سال، به عنوان مثال، 2019.beancount، 2020.beancount، و غیره، که حاوی تراکنش‌های آن سال است. این کار باعث می‌شود هر فایل اندازه قابل مدیریتی داشته باشد و به شما امکان می‌دهد در صورت لزوم روی یک سال تمرکز کنید. به طور متناوب، می‌توانید بر اساس نهاد یا حساب تقسیم کنید، اما تقسیم بر اساس زمان برای داده‌های مالی ساده است.

مثال فایل اصلی:

option "title" "دفتر کل کسب و کار من"
option "operating_currency" "USD"

include "accounts.beancount"
include "2019.beancount"
include "2020.beancount"
...
include "2023.beancount"

به این ترتیب، تمام داده‌ها هنگام اجرای گزارش‌ها agregated می‌شوند، اما شما نظم را حفظ می‌کنید.

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

۴.۲ تنظیم مانده‌های افتتاحیه و حقوق صاحبان سهام

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

  • دفاتر از ابتدا شروع می‌شوند: اگر دوره پنج ساله در زمان تأسیس کسب و کار شروع شود (مثلاً شما از ژانویه ۲۰۱۹ با تمام حساب‌های صفر شده به جز حقوق صاحبان سهام اولیه شروع به استفاده از QuickBooks کرده‌اید)، ممکن است به یک تراکنش مانده افتتاحیه جداگانه نیازی نداشته باشید. اولین تراکنش‌ها در سال ۲۰۱۹ (مانند تأمین مالی اولیه به یک حساب بانکی) به طور طبیعی مانده‌های اولیه را ایجاد می‌کنند. فقط اطمینان حاصل کنید که هرگونه سرمایه اولیه یا سود انباشته قبلی از طریق تراکنش‌های حقوق صاحبان سهام حساب شده است.

  • دفاتر در میانه راه (تاریخچه جزئی): اگر شما QuickBooks را زودتر شروع کرده‌اید و ۲۰۱۹ یک نقطه میانی است، پس از ۱ ژانویه ۲۰۱۹ هر حساب یک مانده انتقالی داشته است. QuickBooks آنها را به عنوان مانده افتتاحیه یا سود انباشته داشته است. در Beancount، معمول است که یک ورودی مانده افتتاحیه در روز قبل از تاریخ شروع خود ایجاد کنید:

    • از یک حساب حقوق صاحبان سهام به نام Equity:Opening-Balances (یا مشابه) برای جبران جمع تمام مبالغ افتتاحیه استفاده کنید.
    • مثال: اگر در 2018-12-31، وجه نقد ۱۰,۰۰۰ دلار و حساب‌های دریافتنی ۵,۰۰۰ دلار و حساب‌های پرداختنی ۳,۰۰۰ دلار (بستانکار) بود، یک تراکنش می‌نوشتید: 2018-12-31 * "Opening Balances" Assets:Cash 10000.00 USD Assets:Accounts Receivable 5000.00 USD Liabilities:Accounts Payable -3000.00 USD Equity:Opening-Balances -12000.00 USD این کار باعث می‌شود مانده Opening-Balances با جمع منفی (۱۲,۰۰۰- دلار) باقی بماند که ورودی را تراز می‌کند. اکنون تمام حساب‌های دارایی/بدهی سال ۲۰۱۹ را با مانده‌های صحیح شروع می‌کنند. این باید هرگونه "سود انباشته" یا مانده‌های انتقالی QuickBooks را منعکس کند.
    • به طور متناوب، از دستورات pad و balance در Beancount استفاده کنید: برای هر حساب، می‌توانید آن را از Opening-Balances پد (pad) کنید و مانده را تأیید کنید. این یک روش خودکارتر است. به عنوان مثال: 2018-12-31 pad Assets:Cash Equity:Opening-Balances 2018-12-31 balance Assets:Cash 10000.00 USD این به Beancount می‌گوید که هر ورودی لازم را (به Opening-Balances) درج کند تا وجه نقد در آن تاریخ برابر با ۱۰۰۰۰ دلار شود. این کار را برای هر حساب انجام دهید. نتیجه مشابه است، اما نوشتن یک تراکنش صریح مانند روش اول نیز ساده است.
  • سود انباشته (Retained Earnings): کوییک‌بوکس به صراحت یک تراکنش "سود انباشته" را خروجی نمی‌گیرد - فقط آن را محاسبه می‌کند. پس از مهاجرت، ممکن است متوجه شوید که اگر آن را ایجاد نکرده باشید، Equity:Retained Earnings صفر است. در Beancount، سود انباشته فقط سود سال‌های قبل است. می‌توانید یک حساب سود انباشته ایجاد کنید و سودهای قبلی را در روز اول هر سال جدید به آن منتقل کنید، یا به سادگی اجازه دهید حقوق صاحبان سهام جمع تمام درآمدها/هزینه‌ها باشد (که در بخش حقوق صاحبان سهام در گزارش‌ها ظاهر می‌شود). برای شفافیت، برخی از کاربران سالانه ورودی‌های بستن حساب را ثبت می‌کنند. این اختیاری است و عمدتاً برای نمایش است. از آنجا که ما تمام تراکنش‌ها را منتقل کرده‌ایم، سود هر سال به طور طبیعی در صورت اجرای گزارش برای هر سال، جمع می‌شود.

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

۴.۳ نهایی‌سازی و کنترل نسخه

اکنون که داده‌ها در فرمت Beancount و ساختار یافته هستند، عاقلانه است که فایل‌ها را به یک مخزن کنترل نسخه (مانند git) کامیت کنید. هر تغییر در دفتر کل قابل ردیابی است و شما یک سابقه حسابرسی از تمام تغییرات دارید. این یک مزیت عمده حسابداری متنی ساده است. به عنوان مثال، در QuickBooks تغییرات ممکن است به راحتی قابل مقایسه (diff) نباشند، اما در Beancount، می‌توانید تفاوت‌ها را خط به خط ببینید. همانطور که برخی کاربران اشاره می‌کنند، با Beancount شما شفافیت و توانایی بازگرداندن تغییرات در صورت لزوم را به دست می‌آورید - هر ورودی می‌تواند به یک تاریخچه تغییرات مرتبط باشد.

در نظر بگیرید که کامیت این مهاجرت اولیه را به عنوان v1.0 یا مشابه تگ‌گذاری کنید، تا بدانید که وضعیت دفاتر را همانطور که از QuickBooks وارد شده، نشان می‌دهد. از این به بعد، تراکنش‌های جدید را مستقیماً در Beancount وارد خواهید کرد (یا از فیدهای بانکی و غیره وارد می‌کنید) و می‌توانید از شیوه‌های توسعه نرم‌افزار معمولی استفاده کنید (کامیت روزانه یا ماهانه، استفاده از شاخه‌ها برای آزمایش‌ها و غیره).

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

قراردادهای نام‌گذاری و ثبات: اکنون کنترل کامل دارید، بنابراین از ثبات اطمینان حاصل کنید:

  • همه حساب‌ها باید نام‌های واضحی داشته باشند که با نام‌های دسته‌بندی با حروف بزرگ شروع شوند (Assets, Liabilities و غیره). اگر هر کدام عجیب به نظر می‌رسد (مثلاً Assets:assets:SomeAccount به دلیل عدم تطابق حروف از QuickBooks)، آنها را در فایل حساب‌ها تغییر نام دهید و تراکنش‌ها را به‌روز کنید (یک جستجو/جایگزینی سریع در فایل می‌تواند این کار را انجام دهد، یا از bean-format Beancount یا چند مکان‌نما ویرایشگر استفاده کنید).
  • نمادهای کالا (کدهای ارز) باید سازگار باشند. برای دلار آمریکا، از USD در همه جا استفاده کنید (نه $ یا US$). برای دیگران، از کدهای استاندارد (EUR، GBP و غیره) استفاده کنید. این ثبات برای جستجوی قیمت و گزارش‌های Beancount مهم است.
  • هرگونه حساب موقت یا ساختگی که ممکن است ایجاد شده باشد را حذف کنید (به عنوان مثال، اگر از Expenses:Miscellaneous برای حساب‌های ناشناخته در اسکریپت به عنوان یک راه حل کلی استفاده کرده‌اید، سعی کنید با نگاشت صحیح همه حساب‌ها آنها را حذف کنید).

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

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

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


مرحله ۵: حسابرسی پس از مهاجرت و مثال‌ها

برای نشان دادن موفقیت مهاجرت، یک مقایسه قبل و بعد از صورت‌های مالی و احتمالاً یک مقایسه (diff) از تراکنش‌ها تهیه کنید. این شواهدی را ارائه می‌دهد که دفاتر سازگار هستند.

۵.۱ تأیید صورت‌های مالی

گزارش‌های مالی کلیدی را از هر دو QuickBooks و Beancount برای تاریخ‌های یکسان تولید کرده و مقایسه کنید:

  • ترازنامه در تاریخ ۳۱ دسامبر ۲۰۲۳: مجموع دارایی‌ها، بدهی‌ها و حقوق صاحبان سهام را خط به خط مقایسه کنید. آنها باید مطابقت داشته باشند. به عنوان مثال، اگر QuickBooks نشان می‌داد کل دارایی‌ها = ۱۵۰,۰۰۰ دلار و کل بدهی‌ها + حقوق صاحبان سهام = ۱۵۰,۰۰۰ دلار، ترازنامه Beancount باید همان مجموع‌ها را نشان دهد. اگر حساب‌ها را کمی متفاوت ساختار داده‌اید (مثلاً برخی از حساب‌های فرعی را ادغام کرده‌اید)، در مقایسه آن را تنظیم کنید یا برای اطمینان از برابر بودن مجموع‌ها، به سطح بعدی جزئیات بروید.

  • سود و زیان ۲۰۱۹-۲۰۲۳: اطمینان حاصل کنید که کل درآمد، کل هزینه‌ها و سود خالص برای هر سال (یا کل دوره) یکسان است. تفاوت‌های جزئی ممکن است به دلیل گرد کردن QuickBooks در گزارش‌ها ایجاد شود، اما تراکنش‌ها معمولاً سنت را دقیقاً حمل می‌کنند بنابراین سود خالص باید دقیق باشد. اگر سود هر سالی متفاوت باشد، به داده‌های آن سال بپردازید - این اغلب نشان‌دهنده یک ورودی گمشده یا تکراری در آن دوره است.

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

۵.۲ مثال مقایسه (قبل در مقابل بعد)

در زیر یک قطعه مثال برای نشان دادن ثبات داده‌ها آورده شده است. فرض کنید تراز آزمایشی QuickBooks ما برای ۳۱ دسامبر ۲۰۲۳ به این صورت بود:

حسابمانده QuickBooks (۳۱ دسامبر ۲۰۲۳)
دارایی‌ها
Assets:Bank:Checking۱۲,۵۰۰.۰۰ دلار (بدهکار)
Assets:Accounts Receivable۳,۲۰۰.۰۰ دلار (بدهکار)
بدهی‌ها
Liabilities:Credit Card۱,۲۰۰.۰۰- دلار (بستانکار)
Liabilities:Loans Payable۵,۰۰۰.۰۰- دلار (بستانکار)
حقوق صاحبان سهام
Equity:Opening-Balances۷,۵۰۰.۰۰- دلار (بستانکار)
Equity:Retained Earnings۲,۰۰۰.۰۰- دلار (بستانکار)
Equity:Current Year Profit۰.۰۰ دلار

در Beancount، پس از وارد کردن و ثبت تمام تراکنش‌ها تا سال ۲۰۲۳، یک bean-report balances (تراز آزمایشی) خروجی می‌دهد:

حسابمانده Beancount (۳۱ دسامبر ۲۰۲۳)
دارایی‌ها
Assets:Bank:Checking12,500.00 USD (بدهکار)
Assets:Accounts Receivable3,200.00 USD (بدهکار)
بدهی‌ها
Liabilities:Credit Card-1,200.00 USD (بستانکار)
Liabilities:Loans Payable-5,000.00 USD (بستانکار)
حقوق صاحبان سهام
Equity:Opening-Balances-7,500.00 USD (بستانکار)
Equity:Retained Earnings-2,000.00 USD (بستانکار)
Equity:Profit (2019-2023)0.00 USD

(توجه: بخش‌های حقوق صاحبان سهام ممکن است به طور متفاوتی ساختار یافته باشند؛ نکته کلیدی این است که مجموع‌ها مطابقت دارند. در اینجا، "سود (۲۰۱۹-۲۰۲۳)" در Beancount نقش سود سال جاری/سود انباشته ترکیبی را ایفا می‌کند، که صفر نشان می‌دهد زیرا سود به سود انباشته بسته شده است.)

همانطور که نشان داده شده است، هر حساب تا آخرین سنت مطابقت دارد. جمع بدهکارها برابر با جمع بستانکارها در هر دو طرف است.

علاوه بر این، اگر یک صورت سود و زیان برای سال ۲۰۲۳ اجرا کنیم:

  • QuickBooks: درآمد ۵۰,۰۰۰ دلار، هزینه‌ها ۴۸,۰۰۰ دلار، سود خالص ۲,۰۰۰ دلار.
  • Beancount: درآمد ۵۰,۰۰۰ دلار، هزینه‌ها ۴۸,۰۰۰ دلار، سود خالص ۲,۰۰۰ دلار (که سپس به سود انباشته بسته شده یا در ترازنامه پایان سال زیر حقوق صاحبان سهام ظاهر می‌شود).

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

۵.۳ نکات حسابرسی

  • اگر یک حسابرس یا ذینفع نیاز به اطمینان دارد، صورت‌های مالی قبل و بعد را در کنار هم ارائه دهید. شفافیت Beancount در واقع می‌تواند حسابرسی را ساده کند زیرا می‌توانید هر عددی را از یک صورت مالی به سرعت به ورودی منبع ردیابی کنید (به ویژه با استفاده از قابلیت drill-down در Fava).
  • پشتیبان QuickBooks و CSVهای خروجی گرفته شده را به عنوان بخشی از سابقه حسابرسی خود نگه دارید. هرگونه تعدیلی که در طول مهاجرت انجام شده است را مستند کنید (به عنوان مثال، "تغییر نام حساب X به Y برای ثبات" یا "تقسیم تراکنش Z به دو ورودی برای وضوح" اگر چنین تغییراتی را انجام داده‌اید).
  • از این به بعد، بررسی‌های منظم را در Beancount پیاده‌سازی کنید. به عنوان مثال، مغایرت‌گیری ماهانه حساب‌های بانکی و تأیید مانده پایانی آنها به شناسایی هرگونه مشکل داده یا اشتباه در ورود کمک می‌کند. مهاجرت یک مبنای خوب ایجاد می‌کند؛ حفظ نظم در سیستم جدید، دقت مداوم را تضمین خواهد کرد.

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

بهبودهای Beancount.io: ارتقاء عملکرد و امنیت

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

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

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

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

2021-01-07-upgrade-fava-to-1-17

  1. ما سرور را ارتقاء دادیم و سرعت سرویس را تا 30% افزایش دادیم. دسترسی‌پذیری سرویس نیز به طور قابل توجهی بهبود یافت.
  2. ما نرم‌افزار متن‌باز Fava با مجوز MIT را به نسخه 1.17 ارتقاء دادیم. این نسخه اشکالات مختلفی را برطرف کرده و ویژگی‌های جدید بسیاری را اضافه کرده است.

هیجان‌زده‌اید؟ اکنون آن را در https://beancount.io/ledger/ امتحان کنید.

سوالی دارید؟ ما در https://t.me/beancount در کنار شما خواهیم بود :)

معرفی برنامه پاداش توسعه‌دهندگان Beancount

· 4 دقیقه مطالعه
Mike Thrift
Mike Thrift
Marketing Manager

Beancount.io با هیجان، برنامه پاداش جدید برای توسعه‌دهندگان در جامعه خود را اعلام می‌کند! برنامه جایزه کشف باگ امنیتی، پیشنهادی باز به افراد خارجی است تا در ازای گزارش باگ‌های beancount.io و Beancount mobile متن‌باز که مربوط به امنیت عملکرد اصلی هستند، غرامت دریافت کنند.

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

دوره کمپین

2020-10-13-security-bug-bounty

از ۱۵ اکتبر ۲۰۲۰ ساعت ۱۷:۰۰ به وقت PST تا ۳۰ نوامبر ۲۰۲۰ ساعت ۱۷:۰۰ به وقت PST

دامنه

اجزای زیر از Beancount در مرحله ۱ کمپین جایزه کشف باگ گنجانده شده‌اند:

۱. beancount.io/ledger : مدیر مالی شخصی شما. ۲. Beancount mobile متن‌باز

مراحل شرکت و گزارش باگ‌ها

  • اگر با اطلاعات قابل شناسایی شخصی (PII) و داده‌های دقیق دفتر کل مرتبط نیست. اطلاعات مربوط به باگ‌ها را از طریق درخواست GitHub ISSUE در https://github.com/puncsky/beancount-mobile/issues/ ارائه دهید:
    • Asset (دارایی). مخزنی که باگ به آن مربوط است را انتخاب کرده و یک «New Issue» (مسئله جدید) در آن ایجاد کنید.
    • Severity (شدت). سطح آسیب‌پذیری را مطابق با «آسیب‌پذیری‌های واجد شرایط» انتخاب کنید.
    • Summary (خلاصه) — خلاصه‌ای از باگ را اضافه کنید.
    • Description (توضیحات) — هر گونه جزئیات اضافی در مورد این باگ.
    • Steps (مراحل) — مراحل بازتولید.
    • Supporting Material/References (مواد پشتیبانی/منابع) — کد منبع برای بازتولید، هر گونه مواد اضافی (مانند اسکرین‌شات‌ها، لاگ‌ها و غیره) را لیست کنید.
    • Impact (تأثیر) — باگ یافت شده چه تأثیری دارد، یک مهاجم چه چیزی می‌تواند به دست آورد؟
    • نام، کشور و شناسه تلگرام شما برای تماس.
  • اگر با PII و داده‌های دقیق دفتر کل مرتبط است، با puncsky در تلگرام تماس بگیرید و اطلاعات فوق را ارسال کنید.
  • تیم Beancount.io تمام باگ‌ها را بررسی کرده و در اسرع وقت از طریق نظرات در صفحه مربوط به باگ خاص یا به صورت حضوری از طریق تلگرام در صورت ارتباط با PII و داده‌های دقیق دفتر کل، بازخورد لازم را به شما ارائه خواهد داد.
  • توزیع پاداش‌ها به صورت هدیه فیزیکی، کارت هدیه یا معادل USDT پس از اتمام کمپین در حدود تاریخ ۰۱ دسامبر ۲۰۲۰ به وقت PST انجام خواهد شد.

آسیب‌پذیری‌های واجد شرایط

برای واجد شرایط بودن دریافت جایزه، باگ امنیتی باید اصیل و قبلاً گزارش نشده باشد.

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

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

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

آسیب‌پذیری‌های خارج از دامنه

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

  • حملات محروم‌سازی از سرویس (Denial of Service attacks)
  • حملات فیشینگ (Phishing attacks)
  • حملات مهندسی اجتماعی (Social Engineering attacks)
  • دانلود فایل بازتابی (Reflected file download)
  • افشای نسخه نرم‌افزار
  • مسائلی که نیاز به دسترسی فیزیکی مستقیم دارند.
  • مسائلی که نیاز به تعامل کاربر بسیار بعید دارند.
  • نقص‌هایی که مرورگرها و افزونه‌های قدیمی را تحت تأثیر قرار می‌دهند.
  • پنل‌های ورود به سیستم قابل دسترسی عمومی.
  • تزریق CSV (CSV injection)
  • شمارش ایمیل / اوراکل‌های حساب کاربری (Email enumeration / account oracles)
  • ضعف‌های CSP (CSP Weaknesses)
  • جعل ایمیل (Email Spoofing)
  • تکنیک‌هایی که به شما امکان مشاهده عکس‌های پروفایل کاربر را می‌دهند (این‌ها عمومی تلقی می‌شوند).

پاداش‌ها

جایزه برای حیاتی‌ترین باگی که PII و داده‌های دفتر کل را افشا می‌کند، یک AirPods Pro (در ایالات متحده) یا معادل USDT است.

جایزه برای یک باگ امنیتی، یک کارت هدیه ۲۰ دلاری آمازون یا معادل USDT است.

ما یک تیم کوچک با بودجه محدود هستیم و تنها می‌توانیم توزیع کنیم:

  • ۱ عدد AirPods Pro برای همه.
  • ۱۰ پاداش ۲۰ دلاری در هر ماه، تا ۳ ماه. اگر تعداد موارد واقعی در آن ماه از این مقدار فراتر رود، پاداش باقیمانده را در ماه بعد ارسال خواهیم کرد. (۶۰۰ دلار در مجموع برای این کمپین)

سوالی دارید؟

از ما در https://t.me/beancount بپرسید.

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

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

با هیجان نسخه 0.4.0 اپلیکیشن Beancount را معرفی می‌کنیم که قابلیت‌ها و بهبودهای جدیدی را برای ارتقاء تجربه مدیریت مالی شما به ارمغان می‌آورد.

چه چیزی جدید است

📧 اشتراک گزارش ایمیلی

با گزارش‌های ایمیلی قابل تنظیم، از وضعیت مالی خود باخبر بمانید. انتخاب کنید چه اطلاعات مالی و با چه تناوبی می‌خواهید دریافت کنید. ایده‌آل برای:

  • بررسی‌های بودجه ماهانه
  • خلاصه‌های هفتگی هزینه‌ها
  • به‌روزرسانی موجودی حساب

📢 بخش اطلاعیه‌ها

هرگز به‌روزرسانی‌های مهم را از دست ندهید! بخش اطلاعیه‌های جدید ما شما را در جریان موارد زیر قرار می‌دهد:

  • جدیدترین قابلیت‌ها و بهبودها
  • نکاتی برای ردیابی مالی بهتر
  • اخبار و رویدادهای جامعه

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

Beancount screenshot 0.4.0

بهبودهای عملکرد

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

نظرات خود را به اشتراک بگذارید

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

دانلود از اپ استوردانلود از پلی استور

نیاز به کمک دارید؟

برای پشتیبانی، نکات و بحث‌ها در مورد مدیریت مالی شخصی با Beancount، به جامعه ما در تلگرام بپیوندید.

سود خالص ۱٠۱ — و نحوه پیگیری آن در Beancount

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

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

بیایید آن را تجزیه کنیم.

2020-03-12-net-income-101-how-to-track-it-in-beancount

معنای واقعی سود خالص

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

این واضح‌ترین شاخص واحد سلامت مالی یک شرکت است. این یک رقم حیاتی برای همه است:

  • وام دهندگان به آن نگاه می‌کنند تا توانایی شما در بازپرداخت وام را بسنجند.
  • سرمایه گذاران آن را به عنوان منبع سود سهام بالقوه یا سرمایه موجود برای رشد می‌بینند.
  • موسسان برای درک مسیر مالی خود و برنامه ریزی برای سرمایه گذاری مجدد استراتژیک به آن متکی هستند.

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

فرمول اصلی (سطح جزئیات مورد نیاز خود را انتخاب کنید)

می‌توانید سود خالص را با درجات مختلفی از جزئیات محاسبه کنید. انتخاب بستگی به این دارد که به چه میزان تجزیه و تحلیل دقیق نیاز دارید.

  • فرمول کامل: درآمد – بهای تمام شده کالای فروش رفته – هزینه‌های عملیاتی – بهره – مالیات = سود خالص
  • فرمول استاندارد: درآمد – بهای تمام شده کالای فروش رفته – هزینه‌ها = سود خالص
  • فرمول سریع و تقریبی: کل درآمدها – کل هزینه‌ها = سود خالص

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

یک مثال کوچک

بیایید این را ملموس کنیم. تصور کنید یک کسب و کار کوچک برشته کردن قهوه نتایج زیر را در ماه گذشته داشته است.

موردمبلغمثال حساب دفتر کل
درآمد فروش۶٠,٠٠٠ دلارIncome:Sales
بهای تمام شده کالای فروش رفته (دانه‌های قهوه سبز)٢٠,٠٠٠ دلارExpenses:COGS
هزینه‌های عملیاتی١٨,٠٠٠ دلارExpenses:Ops:*
بهره (وام تجهیزات)١,٠٠٠ دلارExpenses:Interest
مالیات١,٠٠٠ دلارExpenses:Taxes

با استفاده از فرمول کامل، محاسبه ساده است:

سود;خالص=۶٠,٠٠٠دلار٢٠,٠٠٠دلار١٨,٠٠٠دلار١,٠٠٠دلار١,٠٠٠دلار=٢٠,٠٠٠دلارسود;خالص = ۶٠,٠٠٠ دلار - ٢٠,٠٠٠ دلار - ١٨,٠٠٠ دلار - ١,٠٠٠ دلار - ١,٠٠٠ دلار = ٢٠,٠٠٠ دلار

این کسب و کار ٢٠,٠٠٠ دلار سود واقعی برای ماه ایجاد کرده است.

نحوه ثبت آن در Beancount

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

  • تمام درآمدها را تحت یک حساب والد Income، مانند Income:Sales یا Income:Services برچسب گذاری کنید.
  • هزینه‌های خود را تقسیم کنید تا بین هزینه‌های مستقیم و غیرمستقیم تمایز قائل شوید. از Expenses:COGS برای هزینه‌های مستقیم و از حساب‌های فرعی مانند Expenses:Ops:Salaries یا Expenses:Ops:Software برای سایر موارد استفاده کنید.
  • بهره و مالیات را در حساب‌های خود ثبت کنید (Expenses:Interest، Expenses:Taxes). این کار تجزیه و تحلیل‌های آینده، به ویژه برای آماده سازی مالیات، را بسیار ساده‌تر می‌کند.
  • به طور منظم ترازنامه خود را تنظیم کنید. معادله حسابداری اساسی، دارایی‌ها = بدهی‌ها + حقوق صاحبان سهام، باید همیشه صادق باشد.

در پایان یک دوره (به عنوان مثال، یک ماه)، می‌توانید از ادعاهای balance برای تأیید وضعیت حساب‌های خود استفاده کنید. این ورودی‌ها پول را جابجا نمی‌کنند. آنها اعلام می‌کنند که موجودی باید چه باشد، و bean-check در صورت عدم وجود آن خطا را گزارش می‌دهد.

; 2025-07-31 Coffee Roaster Enterprises — July close
2025-07-31 balance Assets:Bank:Operating 42000.00 USD
2025-07-31 balance Expenses:COGS 20000.00 USD
2025-07-31 balance Expenses:Ops 18000.00 USD
2025-07-31 balance Expenses:Interest 1000.00 USD
2025-07-31 balance Expenses:Taxes 1000.00 USD
2025-07-31 balance Income:Sales -60000.00 USD

پرس و جوی سود خالص یک خطی

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

bean-query books.beancount \
"SELECT period, sum(number) WHERE account =~ '^(Income|Expenses)' \
AND year = 2025 GROUP BY month"

این پرس و جو تمام مقادیر موجود در حساب‌های Income و Expenses شما را برای سال ٢٠٢۵ جمع می‌کند و آنها را بر اساس ماه گروه بندی می‌کند. در Beancount، درآمد با اعداد منفی و هزینه‌ها با اعداد مثبت نشان داده می‌شوند، بنابراین نتیجه منفی سود خالص شما خواهد بود.

حتی بهتر از آن، شما حتی نیازی به اجرای دستی این پرس و جو ندارید. Fava، رابط وب برای Beancount، این را به طور خودکار برای شما در نمای Reports → Income Statement ترسیم می‌کند.

بینش‌های سریعی که می‌توانید خودکار کنید

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

  • خلاصه ایمیل ماهانه: یک کار cron برای اجرای bean-report books.beancount income_statement > net-income.txt و سپس ارسال ایمیل فایل متنی حاصل به خودتان در اولین روز هر ماه تنظیم کنید.
  • هشدار سودآوری: از یک قلاب pre-commit گیت استفاده کنید که یک پرس و جو را برای بررسی سودآوری ماه تا به امروز اجرا می‌کند. می‌توانید آن را طوری برنامه ریزی کنید که در صورت منفی بودن سود خالص، commit را رد کند و شما را مجبور به تصدیق یک ماه ضررده کند.
  • مدل سازی سناریو: آیا می‌خواهید کسب و کار خود را تحت فشار قرار دهید؟ فقط books.beancount را در scenarios/recession.bean کپی کنید، ورودی‌های Income خود را ٢٠٪ کاهش دهید و پرس و جوی سود خالص خود را دوباره اجرا کنید تا تأثیر آن را فوراً ببینید.

نکات کلیدی

  • سود خالص خط پایین واقعی شماست. هدف این است که آن را مثبت نگه دارید و روند آن را در طول زمان درک کنید.
  • 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 آغاز کنید - در طول دوره تبلیغاتی ما رایگان است!

مبانی حسابداری با Beancount: مسیری ساده با متن خام برای حساب‌های دقیق

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

اگر نمی‌دانید پول کجا می‌رود، نمی‌توانید کسب‌وکار را هدایت کنید. حساب‌های دقیق، حدس و گمان را به بینش تبدیل می‌کنند. (Investopedia)

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

2019-03-24-bookkeeping-basics

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

حسابداری چیست؟

در هسته خود، حسابداری ثبت سیستماتیک و مداوم هر تراکنش مالی است که یک کسب‌وکار انجام می‌دهد. این نظم روزانه پیگیری درآمد، هزینه‌ها، دارایی‌ها (آنچه که دارید) و بدهی‌ها (آنچه که بدهکار هستید) است.

در دنیای Beancount، این سوابق در نرم‌افزار اختصاصی قفل نمی‌شوند. آن‌ها در فایل‌های متنی ساده و قابل خواندن توسط انسان زندگی می‌کنند. این رویکرد به شما امکان می‌دهد تاریخچه مالی خود را با ابزارهایی مانند Git، درست مانند یک پروژه نرم‌افزاری، کنترل نسخه کنید. هر ورودی توسط قانون توازن دوطرفه اداره می‌شود، یک سیستم زیبا که به طور خودکار کار شما را بررسی می‌کند و تضمین می‌کند که حساب‌های شما همیشه صحیح هستند. (beancount)

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

حسابداری دقیق فقط مربوط به مرتب بودن اداری نیست. این یک مزیت استراتژیک است.

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

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

آماده شروع هستید؟ در اینجا نحوه ساخت سیستم حسابداری Beancount خود از پایه آورده شده است.

۱. حساب‌های تجاری و شخصی را جدا کنید

این اولین قدم غیرقابل مذاکره است. یک حساب جاری تجاری اختصاصی و در صورت لزوم، یک کارت اعتباری تجاری باز کنید. ترکیب وجوه، کابوسی برای حسابداری ایجاد می‌کند و می‌تواند مرزهای مسئولیت بین شما و کسب‌وکارتان را محو کند. جداسازی دقیق برای کسورات دقیق و حمایت قانونی ضروری است. (Small Business Administration)

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

; موجودی اولیه برای حساب‌های شما
2025-07-22 open Assets:Bank:Business USD
2025-07-22 open Assets:Bank:Personal USD

۲. یک سیستم حسابداری انتخاب کنید

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

۳. در مورد روش حسابداری تصمیم بگیرید

شما در اینجا دو انتخاب اصلی دارید:

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

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

; مثال تعهدی: فاکتور صادر شده، پرداخت بعداً
2025-07-22 * "فاکتور طراحی #101"
Assets:AccountsReceivable 3000.00 USD
Income:Design

2025-08-15 * "مشتری فاکتور #101 را پرداخت می‌کند"
Assets:Bank:Business 3000.00 USD
Assets:AccountsReceivable

۴. ابزارهای خود را جمع‌آوری کنید

زیبایی Beancount در ماهیت مینیمالیستی و ماژولار آن است. ابزارهای اصلی شما عبارتند از:

  • ویرایشگر + Git: ویرایشگر متن مورد علاقه شما برای ثبت تراکنش‌ها و Git برای کنترل نسخه، به شما یک تاریخچه کامل و قابل حسابرسی از هر تغییر می‌دهد.
  • bean-report / bean-balance / Fava: ابزارهای خط فرمان مانند bean-report و رابط وب خیره‌کننده Fava به شما صورت‌های مالی فوری، داشبوردها و قابلیت‌های فیلتر قدرتمند می‌دهند.
  • واردکنندگان: یک اکوسیستم غنی از واردکنندگان ساخته شده توسط جامعه می‌تواند از طریق CSV، Plaid یا API برای سرویس‌هایی مانند Stripe و PayPal به فیدهای بانکی شما متصل شود و بسیاری از ورودی داده‌ها را خودکار کند.

۵. هر تراکنش را دسته‌بندی کنید

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

2025-07-30 * "صورت‌حساب ماهانه AWS"
Expenses:Hosting:AWS 124.50 USD
Assets:Bank:Business
tag: "ops"

در این مثال، هزینه به وضوح در زیر Expenses:Hosting:AWS ثبت شده است. استفاده از tag: "ops" همچنین امکان گزارش‌های متقاطع، مانند مشاهده همه هزینه‌های عملیاتی صرف نظر از دسته اصلی آن‌ها را فراهم می‌کند. (IRS)

۶. اسناد منبع را با خیال راحت ذخیره کنید

اداره مالیات با کمال میل کپی‌های دیجیتالی رسیدها و فاکتورها را می‌پذیرد. رسیدهای کاغذی را اسکن کنید یا فاکتورهای ایمیل را به یک پوشه اختصاصی در فضای ذخیره‌سازی ابری (مانند Google Drive یا Dropbox) ارسال کنید. سپس، با استفاده از ابرداده، مستقیماً به فایل در ورودی Beancount خود پیوند دهید. این یک رکورد خودکفا و بدون نقص ایجاد می‌کند.

; تصویر رسید به عنوان ابرداده پیوند داده شده است
2025-07-18 * "ناهار تیمی"
Expenses:Meals 85.10 USD
Assets:Bank:Business
receipt: "receipts/2025-07-18-team-lunch.jpg"

۷. حسابداری را به یک عادت تبدیل کنید

ثبات کلید است. تعلل، حسابداری را به یک کار استرس‌زا و وقت‌گیر تبدیل می‌کند. یک بلوک زمانی تکراری - یک "روز-Bean" هفتگی یا ماهانه - برای وارد کردن تراکنش‌ها، تطبیق حساب‌ها و بررسی گزارش‌های مالی خود کنار بگذارید. این روال ساده، حسابداری را از یک تلاش فصلی به یک بررسی سلامت سریع و توانمندکننده کسب‌وکار تبدیل می‌کند. (IRS)

خودتان انجام دهید در مقابل کمک حرفه‌ای

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

چک لیست شروع سریع

  • حساب‌های بانکی تجاری جداگانه باز کنید.
  • مخزن شروع Beancount را کلون کنید و حساب‌های خود را در accounts.bean تعریف کنید.
  • نقدی یا تعهدی را انتخاب کنید و به آن پایبند باشید.
  • واردکنندگان را برای خودکارسازی ورود داده از بانک (CSV)، Stripe، PayPal و غیره تنظیم کنید.
  • برای هر تراکنش برچسب بزنید و توضیحات واضح بنویسید.
  • دفتر کل خود را هفتگی یا ماهانه با صورت‌حساب‌های بانکی تطبیق دهید.
  • با استفاده از Fava یا bean-report گزارش‌های ماهانه درآمد، ترازنامه و جریان نقدی ایجاد کنید.
  • به طور منظم از فایل‌های .bean خود نسخه پشتیبان تهیه کنید (Git + ذخیره‌سازی خارج از سایت).

مطالعه بیشتر

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