پرش به محتوای اصلی
Beancount.io Logo

اعلام نقش جریان نقدی در دفتر کل خود: یک خط فراداده جایگزین حدس و گمان میشود

منتشر شده زمان مطالعه 9 دقیقهMike ThriftMike Thrift
اعلام نقش جریان نقدی در دفتر کل خود: یک خط فراداده جایگزین حدس و گمان میشود

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

تا به حال، گزارش جریان نقدی Beancount.io این تصمیم را برای شما با روشهای اکتشافی میگرفت — نوع ریشه حساب، بهعلاوه یک حدس مبتنی بر نام درباره اینکه کدام داراییها وجه نقد محسوب میشوند. برای اکثر دفترها، حدس در بیشتر موارد درست بود و در بقیه موارد بیصدا اشتباه. یک حساب کارگزاری که نامش اشتباه بود، در بخش اشتباه قرار میگرفت. یک صندوق بازار پول که در هر معنای عملی وجه نقد است، در فعالیتهای سرمایهگذاری قرار میگرفت چون نامش این را نمیگفت.

از امروز، میتوانید طبقهبندی را صریح کنید. یک خط فراداده استاندارد beancount در دستور open حساب:

2000-01-01 open Assets:US:Brokerage
  cash-flow-role: "investing"
 
2000-01-01 open Assets:US:Marcus:Savings
  cash-flow-role: "cash"

یک کلید، چهار مقدار — cash، operating، investing، financing — و این تمام پیکربندی است. هیچ صفحه تنظیماتی، هیچ فایل JSON، هیچ کادر محاورهای گزینههای مخصوص گزارش وجود ندارد. دفعه بعد که گزارش جریان نقدی بارگذاری میشود، جریانهای حساب کارگزاری در زیر فعالیتهای سرمایهگذاری ظاهر میشوند، حساب پسانداز به توده وجه نقدی میپیوندد که تغییر آن توسط صورت وضعیت توضیح داده میشود، و هر حساب دیگر دقیقاً مثل قبل کار میکند.

گزارش جریان نقدی Beancount.io برای دفتر مثال: نمودار جریان نقدی خالص ماهانه در بالا و جداول جزئی فعالیتهای عملیاتی و سرمایهگذاری در پایین.

معنای هر نقش چیست

صورت جریان نقدی هر حساب را در یکی از دو وظیفه دستهبندی میکند، و cash-flow-role به هر دو با یک کلمه پاسخ میدهد:

  • "cash" — حساب متعلق به توده وجه نقد و معادلها است. حسابهای نقدی هرگز به عنوان اقلام خطی ظاهر نمیشوند؛ صورت وضعیت تغییر موجودی ترکیبی آنها را توضیح میدهد، و انتقال بین دو حساب نقدی خنثی میشود، همانطور که انتقال پول از حساب جاری به پسانداز باید باشد.
  • "operating" / "investing" / "financing" — حساب نقدی نیست، و تغییر دوره آن به عنوان یک خط در زیر آن بخش فعالیت ظاهر میشود.

بهطور پیشفرض، گزارش حسابهای دارایی را که نامشان شامل Cash، Checking، Savings یا Bank است به عنوان معادلهای نقدی در نظر میگیرد. اعلام یک نقش این را در هر دو جهت لغو میکند. cash-flow-role: "cash" حسابی را که قانون نام از دست میدهد وارد میکند — یک صندوق بازار پول، یک کیف پول استیبلکوین. و cash-flow-role: "investing" روی Assets:US:Bank:CD دو کار را با یک خط انجام میدهد: گواهی سپرده را از وجه نقد حذف میکند و آن را زیر سرمایهگذاری ثبت میکند، حتی اگر نامش با قانون نقد مطابقت داشته باشد.

ما عمداً از یک کلید به جای دو کلید استفاده کردیم. «آیا این حساب نقدی است؟» و «به کدام بخش فعالیت تعلق دارد؟» هرگز سؤالات مستقلی نبودند — یک حساب یا بخشی از توده نقدی است یا دقیقاً به یک بخش فعالیت تعلق دارد. دو کلید امکان ایجاد حالتهای بیمعنی را میداد، مانند یک حساب نقدی با نقش فعالیت. یک کلید حالتهای غیرقانونی را غیرقابل نمایش میکند، و کل مشخصات در یک توییت جا میشود.

نمای «بر اساس فعالیت» گزارش جریان نقدی، که جریانهای نقدی عملیاتی، سرمایهگذاری و تأمین مالی را به صورت ماهانه روی هم میگذارد.

طبقهبندی که اعلام میکنید همان طبقهبندی است که هر نما استفاده میکند. نمودار «بر اساس فعالیت» جریانهای عملیاتی، سرمایهگذاری و تأمین مالی هر ماه را روی هم میگذارد؛ نقش یک حساب را تغییر دهید و جریانهای آن به لایه درست نمودار، بخش درست صورت وضعیت و خط درست خروجی، همه به یکباره منتقل میشوند.

اعلامشده بر استنتاجشده برتری دارد — و گزارش کار خود را نشان میدهد

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

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

گزارش همچنین طبقهبندیهای اعلامشده را از طبقهبندیهای استنتاجشده متمایز میکند، و این تمایز به خروجیهای CSV و Markdown نیز منتقل میشود: صورت وضعیتی که کاملاً از نقشهای اعلامشده ساخته شده است دیگر خط افشای «طبقهبندی استنتاج شده است» را حمل نمیکند، زیرا در آن نقطه طبقهبندی یک استنتاج نیست — بخشی از دفتر شماست.

اشتباهات تایپی به روشی که یک ابزار متن ساده باید مدیریت کند، مدیریت میشوند. cash-flow-role: "invsting" نه بیصدا پذیرفته میشود و نه بیصدا نادیده گرفته میشود: حساب به روش اکتشافی پیشفرض برمیگردد، و پنل وضعیت آن را علامتگذاری میکند — «مقدار نقش جریان نقدی ناشناخته، استفاده از پیشفرض» — بنابراین اشتباه در جایی که نگاه میکنید قابل مشاهده است، نه در یک لاگ دفن شده.

اگر چیزی را تغییر ندهید، هیچ چیز تغییر نمیکند

حسابهای بدون حاشیهنویسی از همان پیشفرضهای منتشر شده قبلی استفاده میکنند: درآمد و هزینه به عملیاتی، داراییهای غیرنقدی به سرمایهگذاری، بدهیها و حقوق صاحبان سهام به تأمین مالی نگاشت میشوند، و معادلهای نقدی مطابق نام، توده نقدی را تشکیل میدهند. یک دفتر موجود قبل و بعد از این انتشار یکسان رندر میشود. اکثر کاربران چند حساب را حاشیهنویسی میکنند — آنهایی که پیشفرض در آنها اشتباه است — و به بقیه فکر نمیکنند.

قابلیت حمل نیز دستنخورده است. فراداده روی دستورهای open نحو اصلی beancount است، توسط هر ابزار v2/v3 تجزیه میشود و توسط هر چیزی که به دنبال این کلید خاص نمیگردد نادیده گرفته میشود. bean-check قبول میکند، Fava شانه بالا میاندازد، و دفتر شما در خارج از Beancount.io کاملاً قابل استفاده باقی میماند.

هر نمای وجه نقد شما با هر نمای دیگر موافق است

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

  • گزارش جریان نقدی بخشهای فعالیت و خط پایانی خود را — تغییر خالص وجه نقد و معادلها — از نقشهای حلشده میسازد.
  • خروجیهای CSV، Markdown و چاپ همان اعداد را حمل میکنند، با افشای طبقهبندی استنتاجشده فقط در جایی که واقعاً از روش اکتشافی استفاده شده است.
  • نمودار سانکی نمای کلی همان اعلامها را میخواند، بنابراین حسابی که به عنوان نقدی علامتگذاری کردهاید دیگر به عنوان گره جریان ظاهر نمیشود، و نقشهای فعالیت اعلامشده شما برای حسابهای غیردرآمدی رعایت میشوند.
  • پنل وضعیت حساب دیگر یک حساب اعلامشده را به عنوان «دارایی طبقهبندینشده» فهرست نمیکند.

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

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

چرا دفتر کل، و نه یک صفحه تنظیمات

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

  1. دفتر کل منبع حقیقت است. طبقهبندی که در جای دیگری زندگی میکند میتواند با کتابهایی که توصیف میکند اختلاف داشته باشد. طبقهبندی که روی دستور open زندگی میکند با حساب سفر میکند — از طریق تغییر نامها، از طریق جابهجایی مخازن، از طریق هر کلایتی که فایل را میخواند.
  2. متن ساده قابل diff، قابل grep و قابل بررسی است. اگر دفتر خود را در git نگه میدارید — و اگر از Beancount.io استفاده میکنید، این کار را میکنید — قانون طبقهبندی اکنون چیزی است که میتوانید grep، diff و blame کنید، و چیزی که یک بازبین میتواند در درخواست pull ببیند. یک صفحه تنظیمات هیچکدام از اینها نیست.
  3. آفلاین و در همه جا کار میکند. هر ویرایشگری میتواند یک نقش را اعلام کند. هر کلاینت آیندهای که دفتر را میخواند طبقهبندی را به صورت رایگان دریافت میکند، بدون هیچ تنظیمات کلاینت جداگانهای برای همگامسازی.

به همین دلیل، طبقهبندیها عمداً تاریخاثر نیستند. فراداده ماهیت حساب را توصیف میکند که به ندرت تغییر میکند؛ وقتی تغییر کرد، دستور open را ویرایش میکنید و تاریخچه git شما ثبت میکند چه چیزی و چه زمانی تغییر کرده است. آن تاریخچه همان مسیر حسابرسی است.

آن را روی دفتر خود امتحان کنید

این ویژگی اکنون به همه دفترها عرضه میشود. اعلام یک نقش فقط به یک ویرایشگر متن نیاز دارد:

  1. فایلی را باز کنید که دستور open حساب در آن قرار دارد.
  2. cash-flow-role: "cash" (یا "operating"، "investing"، "financing") را به عنوان یک خط فراداده تورفته در زیر آن اضافه کنید.
  3. گزارش جریان نقدی را دوباره بارگذاری کنید. اعلام شما بلافاصله بر روش اکتشافی پیروز میشود.

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

گزارش جریان نقدی بخشی از هر دفتر Beancount.io است، در کنار صورت سود و زیان و ترازنامه. اگر میخواهید از سایر موارد عرضهشده این تابستان مطلع شوید — واردات هوشمندتر، دستیار هوش مصنوعی با قابلیت اقدام، و برنامه موبایل بازسازیشده — یادداشتهای انتشار 3.6 بقیه را پوشش میدهد.

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

این مقاله را به‌اشتراک بگذارید

زمان مطالعه 14 دقیقه

NVIDIA Q2 FY2027: درآمد ۹۶.۲ میلیارد دلاری، سود خالص ۵۹.۷ میلیارد دلاری — و نصف شدن جریان نقدی عملیاتی

درآمد سه‌ماهه دوم سال مالی ۲۰۲۷ انویدیا به ۹۶.۲ میلیارد دلار (+۱۰۶٪ سال‌به‌سال)…

financial-reporting
financial-analysis
زمان مطالعه 6 دقیقه

درآمد فصل دوم ۲۰۲۶ شاپی‌فای: حجم کل کالاهای ۱۱۵٫۶ میلیارد دلاری رشد ۳۴ درصدی درآمد و حاشیه سود نقدی آزاد ۱۸ درصدی

شاپی‌فای در فصل دوم ۲۰۲۶ (سه ماهه منتهی به ۳۰ ژوئن ۲۰۲۶) حجم کل کالاهای ۱۱۵٫۶…

financial-reporting
financial-analysis
زمان مطالعه 11 دقیقه

گزارش پیری حساب‌های دریافتنی: راهنمای کامل برای محافظت از جریان نقدینگی

یک گزارش پیری حساب‌های دریافتنی (AR aging report) تمام فاکتورهای پرداخت‌نشده را…

accounts-receivable
cash-flow
زمان مطالعه 14 دقیقه

سود فصل دوم ۲۰۲۶ رابینهود: یک فصل بی‌سابقه، اولین بدهی در تاریخ شرکت، و سود یک‌باره‌ای که در دیدرس است

درآمد رابینهود در فصل دوم ۲۰۲۶ با ۳۲٪ افزایش به رکورد ۱.۳۱ میلیارد دلار رسید و…

financial-reporting
financial-management
زمان مطالعه 8 دقیقه

هزینه‌های معوق در Beancount: راهنمای عملی (با مثال‌های دفترچه کپی-پیست)

درک هزینه‌های معوق و اهمیت آن‌ها در حسابداری بر پایه تعهد با این راهنمای عملی…

accounting
beancount