ایجاد و پیگیری فاکتورها با Beancount
یک الگوی متن ساده، یک گردش کار تکرارپذیر، و یک پرس و جوی واحد برای «چه کسی هنوز به من بدهکار است؟»
صدور فاکتور میتواند مانند یک کار طاقتفرسا باشد، گیر کرده بین کاری که تمام کردهاید و پرداختی که منتظرش هستید. اما یک فرآیند صدور فاکتور خوب، ستون فقرات جریان نقدی سالم است. این کار دو وظیفه را انجام میدهد: به وضوح به مشتریان شما میگوید که چه چیزی و چه زمانی بدهکار هستند، و به سیستم حسابداری شما حقایق غیرقابل انکاری را که نیاز دارد، میدهد.
در حالی که برنامههای SaaS اختصاصی میتوانند فایلهای PDF شیک و خودکار ارسال کنند، اغلب با هزینههای ماهانه همراه هستند و دادههای شما را در یک silo اختصاصی قفل میکنند. یک رویکرد سبک و متن ساده با استفاده از Beancount جایگزین قدرتمندی ارائه میدهد. میتوانید هر فاکتور را به مجموعهای واضح از ورودیهای حسابداری تبدیل کنید و از مزایای کنترل نسخه، ابردادههای قدرتمند و پرس و جوی فوری بهرهمند شوید - بدون نیاز به اشتراک.
حداقل فاکتور قابل قبول (فیلدهایی که هرگز نباید از آنها صرف نظر کنید)
قبل از اینکه به دفتر کل خود دست بزنید، به یک فاکتور حرفهای نیاز دارید. قالب میتواند ساده باشد، اما محتوا باید دقیق باشد. این فیلدها، که از رویههای آزمایششده کسب و کارهای کوچک گرفته شدهاند، غیرقابل مذاکره هستند.
- جزئیات فروشنده: نام و آدرس فیزیکی کسب و کار شما.
- جزئیات مشتری: نام مشتری شما و (در صورت امکان) آدرس آنها.
- شماره فاکتور: یک شناسه منحصر به فرد و متوالی که هرگز دوباره استفاده نمیشود.
INV-045
بعد ازINV-044
میآید. - تاریخ صدور و سررسید: به وضوح بیان کنید که فاکتور چه زمانی صادر شده و چه زمانی انتظار پرداخت میرود.
- اقلام فاکتور: شرح واضحی از خدمات یا محصولات، همراه با کمیت، نرخ و جمع کل هر ردیف.
- جمع جزئی، مالیات و جمع کل: محاسبات را نشان دهید تا مشتری بتواند به راحتی آن را دنبال کند.
- یادداشتهای اختیاری: مکانی برای تشکر، دستورالعملهای واریز یا شماره سفارش خرید ارائه شده توسط مشتری.
برای شروع، مجموعهای از الگوهای آماده برای ویرایش ایجاد کردهایم که شامل همه این فیلدها هستند. نسخههای صفحه گسترده حتی جمع کل را برای شما از قبل محاسبه میک نند.
الگوهای ما را از اینجا دریافت کنید: beancount.io/invoice‑templates (موجود در قالبهای Google Docs، Word، Sheets، Excel و PDF)
ثبت فاکتور در دفتر کل شما
پس از ارسال فایل PDF فاکتور به مشتری، باید آن را در Beancount ثبت کنید. این یک گام حیاتی است که درآمد را در زمان کسب آن تشخیص میدهد، نه فقط در زمان پرداخت. این فرآیند شامل دو تراکنش مجزا است.
1. هنگام صدور فاکتور:
شما تراکنشی ایجاد میکنید که کل مبلغ را از حساب Income
شما به Assets:AccountsReceivable
منتقل میکند. این یک IOU دیجیتال در دفاتر شما ایجاد میکند.
; 1404-05-01 فاکتور #045 طراحی وب برای شرکت Acme
2025-07-21 * "شرکت Acme" "INV-045 طراحی وب"
Assets:AccountsReceivable 3500.00 USD ; due:2025-08-04
Income:Design:Web
invoice_id: "INV-045"
contact_email: "ap@acme.example"
link: "docs/invoices/2025-07-21_Acme_INV-045.pdf"
در اینجا، شما AccountsReceivable
را بدهکار و حساب Income
خود را بستانکار میکنید. به ابردادههای غنی توجه کنید: تاریخ سررسید، invoice_id
منحصر به فرد و حتی یک link:
مستقیم به PDF که ارسال کردهاید.
2. هنگام پرداخت مشتری:
وقتی پول به حساب بانکی شما واریز میشود، تراکنش دومی را برای "بستن" IOU ثبت میکنید. این موجودی را از AccountsReceivable
به حساب جاری شما منتقل میکند.
2025-08-01 * "شرکت Acme" "پرداخت INV-045"
Assets:Bank:Checking 3500.00 USD
Assets:AccountsReceivable
invoice_id: "INV-045"
موجودی INV-045
در Assets:AccountsReceivable
اکنون صفر است و دفاتر شما کاملاً متعادل هستند.
پیوست کردن PDF: کلید ابرداده
link:
به ویژه هنگام استفاده با Fava، رابط وب Beancount، قدرتمند است. Fava یک لینک قابل کلیک را مستقیماً در نمای تراکنش ارائه میدهد، بنابراین سند منبع هرگز بیش از یک کلیک فاصله ندارد. این گردش کار در اوایل سال 2016 در یک درخواست ویژگی (GitHub) پیشبینی شده بود.
یک پرس و جو برای فهرست کردن همه فاکتورهای باز
بنابراین، چه کسی هنوز به شما پول بدهکار است؟ با این سیستم، نیازی به جستجو در ایمیلها یا صفحات گسترده ندارید. شما فقط به یک پرس و جوی ساده نیاز دارید.
موارد زیر را به عنوان فایلی با نام open-invoices.sql
ذخیره کنید:
SELECT
meta('invoice_id') AS id,
payee,
narration,
date,
number(balance) AS outstanding
WHERE
account = "Assets:AccountsReceivable"
AND balance != 0
ORDER BY
date;
حالا، آن را از خط فرمان خود اجرا کنید:
bean-query books.beancount open-invoices.sql
در چند ثانیه، یک گزارش دقیق و بهروز از همه فاکتورهای معوق، شامل شناسه فاکتور، مشتری، تاریخ صدور و مبلغ بدهی دریافت خواهید کرد. بدون نیاز به نرمافزار اضافی.
خودکارسازی کارهای تکراری
زیبایی متن ساده، قابلیت اسکریپت نویسی آن است. میتوانید بخشهای خستهکننده این گردش کار را خودکار کنید.
- قالب + Pandoc = PDF: الگوی فاکتور خود را در Markdown نگه دارید. یک اسکریپت کوچک پایتون میتواند متغیرها (نام مشتری، اقلام فاکتور، شماره فاکتور) را پر کند و ابزار خط فرمان Pandoc میتواند فوراً آن را به یک PDF حرفهای تبدیل کند.
- قلاب Git Pre-commit: اگر دفتر کل خود را در Git ذخیره میکنید، یک قلاب pre-commit ساده میتواند قبل از ذخیره کار شما، بررسیهایی را انجام دهد. میتواند تأیید کند که هر
invoice_id
جدید منحصر به فرد است، که ارسالهای تراکنش به صفر میرسد و فایلی که در ابردادهlink:
به آن ارجاع داده شده است واقعاً وجود دارد. - Cron Job: یک کار زمانبندی شده (cron job) تنظیم کنید تا پرس و جوی
open-invoices.sql
شما هر شب اجرا شود و خلاصه را برای شما ایمیل کند. شما هر روز را با دانستن دقیق اینکه چه کسی به یک یادآوری دوستانه نیاز دارد، شروع خواهید کرد.
یک هشدار واقعبینانه
Beancount یک ابزار حسابداری است، نه یک سرویس صدور فاکتور. به طور خودکار یادآوریهای پرداخت را برای مشتریان شما ارسال نمیکند یا پرداختهای کارت اعتباری آنها را پردازش نمیکند. گردش کار به این صورت است: شما فاکتور را با استفاده از روش انتخابی خود (مانند الگوهای بالا) ایجاد و ارسال میکنید و سپس ورودیهای حسابداری را در دفتر کل خود ثبت میکنید.
برای اکثر فریلنسرها و فروشگاههای کوچک، این مرحله دستی قیمت کمی برای یک سیستم حسابداری ضدگلوله، قابل حسابرسی و رایگان است که شما کاملاً مالک و کنترل آن هستید (beancount.io).
مراحل بعدی
آمادهاید تا کنترل صدور فاکتور خود را به دست بگیرید؟ در اینجا نحوه شروع آمده است.
- یک الگو دانلود کنید و از آن برای ایجاد فاکتور واقعی بعدی خود استفاده کنید و مطمئن شوید که از یک شماره فاکتور متوالی استفاده میکنید.
- فایلهای PDF ارسال شده خود را در یک پوشه اختصاصی مانند
docs/invoices/
ذخیره کنید و از کلید ابردادهlink:
در تراکنش Beancount خود برای ارجاع به آنها استفاده کنید. - پرس و جوی
open-invoices.sql
را ذخیره کنید و اجرای آن را بخشی از بررسی مالی هفتگی خود قرار دهید.
حسابداری متن ساده به معنای کنار گذاشتن دقت یا کنترل نیست - فقط به این معنی است که پایگاه داده قابل grep
است. با یک الگوی ساده و قطعه کدهای بالا، سریعتر پول دریافت میکنید و دفاتر خود را بیعیب و نقص نگه میدارید.