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

39 پست با برچسب "حسابداری"

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

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

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

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

در این راهنما، به شما نشان خواهیم داد که چگونه:

  • لینک‌های دسترسی سریع را به نوار کناری Fava اضافه کنید
  • از پرس‌وجوهای SQL برای فیلتر کردن و تحلیل پیشرفته استفاده کنید
  • گردش کار خود را برای بررسی‌های ماهانه یا تشخیص ناهنجاری سفارشی کنید

چرا Fava را سفارشی کنیم؟

Fava از قبل یک رابط کاربری زیبا برای مشاهده دفتر کل Beancount شما است، اما با رشد دفتر روزنامه شما، نیاز به میانبرهای بهتر و پرس‌وجوهای هوشمندتر نیز افزایش می‌یابد.

مشکلاتی که این راه حل می‌کند:

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

✨ لینک‌های سفارشی نوار کناری

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

این خطوط را به فایل Beancount خود اضافه کنید:

2021-01-01 custom "fava-sidebar-link" "Current Month" "/jump?time=month"
2021-01-01 custom "fava-sidebar-link" "Last Month" "/jump?time=month-1"
2021-01-01 custom "fava-sidebar-link" "Clear All" "/jump?account=&time=&filter="

آنها چه کاری انجام می‌دهند:

  • ماه جاری: نمای تراکنش‌ها را فیلتر شده بر اساس ماه جاری باز می‌کند.
  • ماه گذشته: فوراً به ماه قبل می‌پرد—عالی برای بررسی‌های پایان ماه.
  • پاک کردن همه: فیلترها را بازنشانی می‌کند و دوباره همه ورودی‌ها را نمایش می‌دهد.

این میانبرها ورودی دستی زمان را حذف کرده و تجربه Fava شما را روان‌تر و شخصی‌تر می‌کنند.

🔍 پرس‌وجوهای سفارشی SQL

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

SELECT account, units(sum(position)), sum(position)
WHERE number(units(position)) < 0
AND account ~ '.*:BCM:.*'
AND date >= DATE(2021,12,9)
AND date < DATE(2022,1,9)

توضیح:

  • account ~ '.*:BCM:.*': حساب‌هایی را که شامل :BCM: در نام خود هستند، فیلتر می‌کند.
  • number(units(position)) < 0: مانده‌های منفی (مانند بودجه‌های بیش از حد مصرف شده) را علامت‌گذاری می‌کند.
  • فیلترهای تاریخ، نتیجه را به یک بازه زمانی ۱ ماهه خاص محدود می‌کنند.

موارد استفاده:

  • شناسایی خطاهایی مانند هزینه‌های تکراری یا ثبت‌های نادرست
  • حسابرسی یک فروشنده یا دسته خاص
  • استخراج سریع بینش‌های عملی برای بودجه‌بندی

🛠 نکته حرفه‌ای: ترکیب لینک‌ها + پرس‌وجوها

در حالی که Fava امکان لینک مستقیم به پرس‌وجوهای سفارشی را نمی‌دهد، می‌توانید با انجام موارد زیر یک عادت بررسی ماهانه ایجاد کنید:

  • استفاده از لینک «ماه جاری» برای شروع بررسی خود
  • باز کردن تب پرس‌وجوهای ذخیره شده خود در یک پنجره دیگر
  • بررسی همزمان هر دو—ابتدا فیلتر کنید، سپس عمیق شوید

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

افکار نهایی

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

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

آماده‌اید کنترل را به دست بگیرید؟

کوچک شروع کنید: لینک «ماه جاری» را اضافه کنید. سپس پرس‌وجوهای خود را بسازید. خود آینده‌تان از شما تشکر خواهد کرد.

نکات بیشتری مانند این می‌خواهید؟ در خبرنامه ما مشترک شوید یا دستورالعمل‌های بیشتر Beancount را در Beancount.io کاوش کنید.

پیش‌بینی تراکنش‌های آتی در Beancount

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

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

; افزونه را وارد کنید
plugin "fava.plugins.forecast"

; اضافه کردن هزینه ماهانه HOA
2022-05-30 # "HOA fee [MONTHLY]"
Expenses:Hoa 1024.00 USD
Assets:Checking -1024.00 USD

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

2022-05-30-forecast-plugin

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

افزونه پیش‌بینی

تگ [MONTHLY] در بالا به این معنی است که تراکنش برای همیشه تکرار خواهد شد. اگر شرایط بیشتری برای اعمال دارید، می‌توانید از [MONTHLY UNTIL 2022-06-01]، [MONTHLY REPEAT 5 TIMES]، [YEARLY REPEAT 5 TIMES]، یا [WEEKLY SKIP 1 TIME REPEAT 5 TIMES] استفاده کنید.

تحول در مدیریت امور مالی شخصی با Beancount.io

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

حسابداران Beancount (Beancounters) به طور سنتی از ابزارهای خط فرمان یا سرورهای خودمیزبان با شبکه‌های خصوصی استفاده می‌کنند، جایی که باید از طریق رایانه یا یک ویرایشگر متن عمومی در موبایل کار کنند. Beancount.io با ارائه اپلیکیشن‌های موبایل متن‌باز اندروید و iOS و یک ابر امن، مشکلات را کاهش می‌دهد تا دفتر کل شما اکنون تنها چند ضربه با اثر انگشت شما فاصله داشته باشد.

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

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

2022-01-08-instant-access-to-your-beancount-cloud-ledger-anytime-anywhere

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

برای کارهای سنگین، حسابداران Beancount همچنان می‌توانند از رایانه‌های خود برای ویرایش یا مشاهده دفتر کل با مرورگرهای خود با مراجعه به https://beancount.io یا همگام‌سازی با Dropbox استفاده کنند. این کار انعطاف‌پذیری ابزارهای خط فرمان را حفظ می‌کند، در حالی که دسترسی بین دستگاهی راه‌حل مبتنی بر ابر را از دست نمی‌دهد.

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

مایک تریفت، مهندس بک‌اند که روی این محصول کار می‌کند، می‌گوید:

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

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

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

اکنون می‌توانید در https://beancount.io/sign-up/ ثبت‌نام کنید یا اپلیکیشن iOS یا اپلیکیشن اندروید را دانلود کنید. ما ثبت‌نام را ساده‌سازی کرده‌ایم تا حداقل اطلاعات ممکن را از شما برای راه‌اندازی سرویس جمع‌آوری کنیم. سپس یک دفتر کل خالی از پیش تعیین شده دریافت خواهید کرد که آماده است تا بلافاصله یک ورودی به آن اضافه کنید.

سوالات متداول

آیا Beancount.io داده‌های دفتر کل من را به شخص ثالثی می‌فروشد؟

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

آیا داده‌های من امن است؟

  • بله. ما ایمیل و دفتر کل شما را با AES256، رمز عبور شما را با BCrypt، و درخواست‌های شبکه شما را با SSL محافظت می‌کنیم.

آیا داده‌های دفتر کل من به صورت سرتاسری رمزگذاری شده است؟

  • خیر. به دلیل محدودیت‌های فنی، ما همچنان باید داده‌های شما را هنگام فهرست‌بندی فایل دفتر کل در سرورهای تولیدی، در حافظه رمزگشایی کنیم. بنابراین، دسترسی مستقیم هر یک از اعضای تیم خود را محدود می‌کنیم. متأسفانه، به دلیل هزینه‌های بالا نمی‌توانیم این کار را در Intel SGX یا هر گاوصندوق امنیتی دیگری انجام دهیم.

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

  • بله. ما Beancount.io را در تاریخ ۴ جولای ۲۰۱۹ راه‌اندازی کردیم، و بیش از دو سال است که این سرویس را به صورت امن و قابل اعتماد اداره کرده‌ایم. بنابراین، دلیلی برای عدم ادامه سرویس در آینده نداریم.

آیا می‌توانم ویژگی‌های جدید درخواست کنم و از پروژه حمایت مالی کنم؟

راهنمای جامع مهاجرت از 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 شما در طول دوره پنج ساله است و شما را برای حسابداری کارآمد در آینده آماده می‌کند.

معرفی پشتیبانی از چند فایل در بین‌کانت

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

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

نحوه استفاده از آن به شرح زیر است:

فایل > ایجاد فایل جدید

2021-09-24-multi-file-one-ledger

به تب ویرایشگر فایل در نوار کناری ناوبری سمت چپ بروید. سپس، منوی کشویی "فایل" را دنبال کرده و روی "ایجاد فایل جدید" کلیک کنید.

فایل > ایجاد فایل جدید

نام‌گذاری فایل جدید

یک نام فایل معتبر برای فایل خود انتخاب کرده و آن را ذخیره کنید. تمام نام فایل‌ها باید به ".bean" ختم شوند.

نام‌گذاری فایل جدید

گنجاندن فایل

این یک گام حیاتی است، شما باید فایل تازه ایجاد شده را در main.bean بگنجانید.

به عنوان مثال، اگر stock.bean را اضافه کردید، سپس include "stock.bean" را در main.bean مشخص کنید.

گنجاندن فایل

بازخوانی و پیمایش به فایل

صفحه را بازخوانی کنید، و خواهید دید که فایل در منوی کشویی "فایل" ظاهر می‌شود.

بازخوانی و رفتن به فایل

تغییر نام یا حذف فایل

هنگامی که به فایل پیمایش کردید، می‌توانید آن را در منوی کشویی "ویرایش" تغییر نام دهید یا حذف کنید.

تغییر نام یا حذف فایل

مشکلی دارید؟

سوالات خود را در https://t.me/beancount بپرسید.

ارتقاء Fava به نسخه 1.19: تغییرات و بهبودهای کلیدی

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

ما نرم‌افزار متن‌باز Fava با مجوز MIT را به نسخه 1.19 ارتقا دادیم. در ادامه تغییرات از آخرین به‌روزرسانی ما آورده شده است:

  • v1.19 (2021-05-18)
    • مهاجرت از گزینه‌های conversion و interval به گزینه default-page
    • افزودن گزینه invert-income-liabilities-equity
    • ارتقاء به CodeMirror 6
    • افزودن ترجمه بلغاری
    • سایر بهبودهای کوچک و رفع اشکالات
  • v1.18 (2021-01-16)
    • چند بهبود کوچک و رفع اشکالات مختلف.

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

2021-07-16-upgrade-fava-to-1-19

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

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

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

استهلاک، پرداخت‌ها را به اقساط متعدد در طول زمان توزیع می‌کند. در beancount.io، می‌توانید از افزونه fava.plugins.amortize_over برای دستیابی به این هدف استفاده کنید.

2021-01-09-amortize

بدون استهلاک، اگر بخواهید خودروی خود را برای ۶ ماه با هزینه ۶۰۰ دلار بیمه کنید، باید این را به عنوان یک هزینه یک‌باره برای یک تاریخ خاص ثبت کنید.

2017-06-01 open Assets:Bank:Checking
2017-06-01 open Assets:Prepaid-Expenses
2017-06-01 open Expenses:Insurance:Auto


2017-06-01 * "Pay car insurance"
Assets:Bank:Checking -600.00 USD
Assets:Prepaid-Expenses

با این حال، با استهلاک، می‌توانید هزینه را طی شش ماه تخصیص دهید؛ با قرار دادن plugin "fava.plugins.amortize_over" در بالای فایل و استفاده از amortize_months: 6 برای تراکنش.

plugin "fava.plugins.amortize_over"

2020-06-01 open Assets:Bank:Checking
2020-06-01 open Assets:Prepaid-Expenses
2020-06-01 open Expenses:Insurance:Auto

2020-06-01 * "Amortize car insurance over six months"
amortize_months: 6
Assets:Prepaid-Expenses -600.00 USD
Expenses:Insurance:Auto

و سپس در دفتر روزنامه (Journal)، خواهید دید که تراکنش به ۶ ثبت (posting) تقسیم شده است.

2020-11-01 * Amortize car insurance over six months (6/6) am
2020-10-01 * Amortize car insurance over six months (5/6) am
2020-09-01 * Amortize car insurance over six months (4/6) am
2020-08-01 * Amortize car insurance over six months (3/6) am
2020-07-01 * Amortize car insurance over six months (2/6) am
2020-06-01 * Amortize car insurance over six months (1/6) am

تصویر صفحه نمایش تراکنش استهلاک

معرفی اپلیکیشن‌های موبایل بین‌کاونت برای iOS و اندروید

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

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

اپلیکیشن iOS بین‌کاونت

ویژگی‌های کلیدی

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

اپلیکیشن موبایل بین‌کاونت

توسعه مبتنی بر جامعه

این انتشار تنها آغاز سفر موبایل ماست. ما متعهد به تکامل این اپلیکیشن‌ها بر اساس نیازها و بازخوردهای شما هستیم. به جامعه پرشور ما در تلگرام به آدرس https://t.me/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 آغاز کنید - در طول دوره تبلیغاتی ما رایگان است!