مدیریت موجودی در Beancount
سیستم موجودی Beancount یک ویژگی قدرتمند برای ردیابی داراییهایی است که در طول زمان خرید و فروش میشوند، مانند سهام، صندوقهای سرمایهگذاری مشترک یا ارزهای خارجی. این سیستم امکان ردیابی دقیق مبنای بهای تمام شده را فراهم میکند که برای محاسبه سود سرمایه و درک عملکرد سبد سهام ضروری است. این آموزش، مکانیسمهای اصلی مدیریت موجودیها در دفتر کل شما را پوشش میدهد.
مفاهیم اصلی
در هسته خود، مدیریت موجودی حول ردیابی موقعیتها میچرخد. یک "موقعیت" به سادگی مقدار کالایی است که در یک حساب نگهداری میشود. Beancount بین دو نوع اساسی از موقعیتها تمایز قائل میشود.
انواع موقعیت
-
موقعیت ساده (بدون هزینه): این یک ثبت تراز استاندارد است. این نشان دهنده مقدار یک کالا بدون هیچ گونه هزینه اکتساب مرتبط است. این نوع موقعیت برای وجه نقد یا ادعاهای تراز ساده مناسب است.
Assets:Bank:Checking 100.00 USD -
موقعیت با مبنای بهای تمام شده: این نوع موقعیت نه تنها شامل تعداد واحدها و کالا است، بلکه شامل هزینهای است که در آن به دست آمده است. این اساس ردیابی موجودی است. هزینه در داخل آکولاد
{}مشخص شده است.Assets:Invest:VTSAX 10 VTSAX {100.00 USD, "lot-1"}در این مثال، ما 10 واحد از
VTSAXرا در اختیار داریم. هر واحد با هزینه 100.00 دلار آمریکا به دست آمده است. این دسته خاص از سهام به عنوان یک "لات" شناسایی میشود.
عملیات موجودی
دو عملیات اصلی وجود دارد که میتوانید روی یک موجودی انجام دهید:
-
افزایش (اضافه کردن به موجودی): هنگامی که یک کالا را میخرید، موجودی خود را افزایش میدهید. شما یک لات جدید با تعداد معینی از واحدها و مبنای بهای تمام شده ایجاد میکنید.
2024-01-15 * "خرید سهام"
Assets:Invest:STOCK 50 STOCK {25.00 USD, "lot-1"}
Assets:Bank:Checking -1250.00 USDدر اینجا، ما 50 واحد از
STOCKرا با هزینه 25.00 دلار آمریکا به ازای هر واحد خریداری میکنیم. این کار یک لات در حسابAssets:Invest:STOCKایجاد میکند. -
کاهش (حذف از موجودی): هنگامی که یک کالا را میفروشید، موجودی خود را کاهش میدهید. شما باید مشخص کنید که از کدام لات میفروشید. این کار با ارائه اطلاعات منطبق در آکولاد انجام میشود.
2024-01-20 * "فروش سهام"
Assets:Invest:STOCK -25 STOCK {25.00 USD}
Assets:Bank:Checking 625.00 USDدر این تراکنش، ما 25 واحد از
STOCKرا از لاتی که با قیمت 25.00 دلار آمریکا به ازای هر واحد خریداری شده بود، میفروشیم.
روشهای ثبت
هنگامی که موجودی را کاهش میدهید، Beancount به یک قانون نیاز دارد تا تصمیم بگیرد که اگر لاتهای متعددی مطابقت داشته باشند یا اگر مطابقت مبهم باشد، از کدام لات خاص برداشت کند. این قانون "روش ثبت" نامیده میشود. میتوانید یک روش پیشفرض برای کل فایل خود تنظیم کنید یا بر ای هر حساب یک روش را مشخص کنید.
1. STRICT (پیشفرض)
روش STRICT روش پیشفرض و ایمنترین روش ثبت است. این روش تطبیق صریح و غیرمبهم را اعمال میکند.
2024-01-01 open Assets:Invest:STOCK "STRICT"
- نیاز به تطبیق دقیق لات: شما باید اطلاعات کافی در پست کاهش (
{...}) ارائه دهید تا لاتی که فروخته میشود را به طور منحصر به فرد شناسایی کنید. - خطا در تطابقهای مبهم: اگر اطلاعات ارائه شده با چندین لات مطابقت داشته باشد، Beancount یک خطا ایجاد میکند و شما را مجبور میکند مشخصتر باشید.
- استثنا: اگر یک پست کاهش دقیقا تعداد کل واحدهای نگهداری شده در یک حساب را حذف کند، یک مشخص کننده هزینه خالی (
{}) مجاز است.
2. FIFO (اولین ورودی، اولین خروجی)
روش FIFO به طور خودکار کاهشها را در برابر قدیمیترین لاتهای موجود ثبت میکند.
2024-01-01 open Assets:Invest:STOCK "FIFO"
- حل خودکار: ابهام را با انتخاب قدیمیترین لاتهای منطبق حل میکند.
- تطبیق زمانی: این یک روش حسابداری رایج است که در آن فرض میکنید داراییهایی را میفروشید که طولانیترین مدت در اختیار داشتهاید. این روش مورد نیاز برای اهداف مالیاتی در بسیاری از کشورها است.
3. LIFO (آخرین ورودی، اولین خروجی)
روش LIFO مخالف FIFO است. این روش کاهشها را در برابر جدیدترین لاتهای موجود ثبت میکند.
2024-01-01 open Assets:Invest:STOCK "LIFO"
- ترتیب زمانی معکوس: جدیدترین لاتهای به دست آمده را که با معیارهای کاهش مطابقت دارند، انتخاب میکند.
- بهینهسازی مالیاتی: در برخی حوزههای قضایی، این روش میتواند برای بهینهسازی مالیاتی استفاده شود، به عنوان مثال، با فروش سهام با بالاترین مبنای بهای تمام شده برای به حداقل رساندن سود سرمایه.
4. NONE
روش NONE تطبیق لات را به طور کامل غیرفعال میکند.
2024-01-01 open Assets:Invest:STOCK "NONE"
- بدون تطبیق لات: Beancount تلاش نمیکند کاهشها را با افزایشها مطابقت دهد.
- اجازه علائم مختلط: این به یک حساب اجازه میدهد تا به طور همزمان دارای ترازهای مثبت و منفی از یک کالا باشد. این رفتار شبیه به نحوه برخورد ابزار Ledger CLI با کالاها است.