انبارها، رزرو موجودی و جابهجایی کالا
منبع موجودی را بشناسید و تغییرات را با سابقه قابل پیگیری ثبت کنید.
انبار در آناما محل نگهداری یک تنوع محصول را مشخص میکند. یک SKU میتواند در چند انبار مقدار مستقل داشته باشد؛ از طرفی هر سفارش بخشی از موجودی آزاد را رزرو میکند تا فروش همزمان از همان کالا از عدد قابل تخصیص بیشتر نشود. بنابراین «موجودی محصول» یک عدد ساده برای کل والد نیست: آن را با ترکیب تنوع، انبار، رزرو، موقعیت و در صورت استفاده lot دنبال کنید.
در پنل محصولات، از میانبر «موجودی» برای دیدن منبع stock و از نماد انبار کنار هر تنوع برای اصلاح همان SKU استفاده کنید. برای کار عملیاتی در مقیاس انبار، از «عملیات ← ERP ← WMS» وارد گردشهای دریافت، چیدمان، picking، بستهبندی و مرجوعی شوید. صفحه WMS به نقش و فعالبودن ماژول وابسته است؛ اگر ماژول inventory یا WMS در workspace شما در دسترس نیست، کار را از مسیر عمومی و بدون ثبت گردش انجام ندهید.
مفهومها و رابطه آنها
- Warehouse / انبار: مکان منطقی نگهداری کالا با نام و code. code در هر فضای کاری یکتا است. انبار میتواند فعال یا غیرفعال باشد و کانالهای فروش مجاز داشته باشد؛ فهرست خالی کانال یعنی همه کانالها مجازند.
- Stock / موجودی SKU در انبار: یک ردیف بهازای ترکیب تنوع و انبار. مدل برای این ترکیب فقط یک stock نگه میدارد. فیلد quantity مقدار on hand، reserved مقدار کنارگذاشتهشده، و Available تفاضل
max(quantity - reserved, 0)است. - Stock movement / گردش موجودی: دفتر append-only از تغییرهای ورود، خروج، اصلاح و مرجوعی با مقدار علامتدار، مرجع و یادداشت. این دفتر فقطخواندنی است؛ عدد موجودی را مستقیم از ردیف گردش ویرایش نمیکنید.
- Location / موقعیت WMS: ناحیه، راهرو، قفسه، طبقه، bin، dock، staging یا quarantine داخل یک انبار. موقعیت در یک درخت به والد همان انبار وابسته است؛ چرخه و والد انبار دیگر پذیرفته نمیشود.
- Lot / Serial: بچ یا شماره سریال تنوع که تاریخ ساخت، انقضا و وضعیتهایی مانند بازرسی یا قرنطینه میتواند داشته باشد. lot را برای ردیابی واقعی انتخاب کنید، نه برای تزئین دفتر.
این لایهها را جایگزین هم نکنید. Warehouse میگوید کالا کجاست؛ Location محل دقیق داخل انبار را میدهد؛ lot مشخص میکند از کدام بچ/سریال است؛ Stock مقدار ثبتشده است؛ Movement دلیل و سابقه تغییر را ثبت میکند.
فهرست انبارها و ساخت رکورد
از ابزار انبار در ERP یا منبع «warehouses» در مدیریت منابع وارد شوید. فهرست منبع ستونهای نام، کد، استان، شهر، وضعیت فعال و زمان بهروزرسانی را دارد و با نام/کد/شهر جستوجو میشود. فیلتر فعال، استان و شهر به یافتن انبار کمک میکند. انبار موجود را باز کنید و وضعیتش را بررسی کنید پیش از افزودن دیگری؛ code تکراری در همان tenant رد میشود.
هنگام ایجاد Warehouse:
- نام برای افراد انبار است؛ نام عملیاتی مثل «مرکزی» یا «شعبه شیراز» انتخاب کنید تا در فرم ورود/انتقال اشتباه نشود.
- کد شناسه کوتاه داخلی است و باید در فضای کاری یکتا بماند؛ بعداً اگر code را در فایلهای ERP استفاده کردید آن را بیدلیل تغییر ندهید.
- استان و شهر محل انبار را برای فهرست و گزارش قابل تشخیص میکند. آدرس در مدل هم وجود دارد؛ اگر فرم فعالش میکند، آدرس دقیق را فقط در workspace داخلی نگه دارید.
- کانالهای فروش میتواند تعیین کند کدام کانال از موجودی انبار استفاده کند. مقدار خالی در مدل یعنی همه کانالها مجازند؛ اگر فروش چند کاناله دارید، این تنظیم را با مالک fulfillment بررسی کنید.
- فعال/غیرفعال انتخاب انبارهای قابل استفاده را کنترل میکند. پیش از غیرفعالسازی، رزرو و عملیات باز را بررسی کنید؛ غیرفعالکردن انبار کالا را به انبار دیگری منتقل نمیکند.
راهاندازی موقعیتها در WMS
اگر انبارداری شما فقط ثبت تعداد در سطح انبار است، Warehouse و stock ممکن است کفایت کنند. اگر میخواهید کالا را تا قفسه/بچ پیدا کنید، ساختار WarehouseLocation را بسازید: مثلاً A ناحیه، A/02 راهرو، A/02/R4 قفسه و A/02/R4/B07 bin. code هر موقعیت در همان انبار یکتا است و مسیر از والد ساخته میشود. برای محل دریافت یا بستهبندی میتوان از dock یا staging استفاده کرد؛ برای کالای برگشتیِ هنوز تأییدنشده، quarantine را از موقعیت قابل برداشت جدا کنید.
پیش از اسکن بارکد، یک نامگذاری قابل فهم بسازید و مسیر را در محل هم با برچسب فیزیکی تطبیق دهید. غیرفعالکردن location یا تغییر hierarchy را هنگام موج picking فعال انجام ندهید تا taskهای باز به مقصد ناموجود ارجاع ندهند. ظرفیت و pickable را بر اساس عملیات واقعی تنظیم کنید؛ bin غیرقابل برداشت نباید برای wave عادی بهعنوان منبع انتخاب شود.
ورود موجودی و اصلاح شمارش
از صفحه محصول، تنوع مشخص را انتخاب و روی نماد مدیریت موجودی بزنید. کارتها per-warehouse، مقدار On hand، Reserved و Available را نشان میدهند. در فرم همان پنجره، انبار، نوع اصلاح (تنظیم مقدار نهایی، افزایش یا کاهش)، مقدار، موقعیت، lot/serial در صورت پشتیبانی، بهای واحد و یادداشت را انتخاب میکنید. اگر workspace چند شخصیت حقوقی داشته باشد، پنل میتواند فیلد شخصیت حقوقی را هم نشان دهد.
سه نوع اصلاح اثر متفاوت دارند:
- تنظیم مقدار نهایی (
set) برای وقتی است که شمارش فیزیکی را انجام دادهاید و عدد صحیح on hand را میدانید. - افزایش (
increase) برای دریافت ورودی جدید است؛ اگر costing فعال باشد، مقدار unit cost میتواند ارزش موجودی را بهروز کند. - کاهش (
decrease) برای ضایعات، کسری تأییدشده یا خروج ثبتشده است.
قبل از ثبت، SKU و انبار را دو بار تطبیق دهید. در یادداشت علت بنویسید چرا موجودی تغییر کرد؛ یادداشت را با داده محرمانه مشتری پر نکنید. پس از ثبت، کارت Stock را تازه کنید و دفتر گردش را باز کنید تا kind، مقدار علامتدار، مرجع و زمان را ببینید. اگر Reserved وجود دارد، set نباید بهگونهای باشد که reserved از quantity بیشتر شود؛ backend چنین ناسازگاری را رد میکند.
دریافت، جابهجایی و خروج در WMS
WMS برای گردشهای بزرگتر صف دریافت و putaway، waves، pick taskها، بستهبندی و QC مرجوعی را فراهم میکند. صفحه WMS خلاصه صف باز، تخصیصنشده، خطای بستهبندی و قدیمیترین زمان انتظار را نشان میدهد؛ کارت هر کار یا صف به رکورد عملیاتی مرتبط پیوند دارد. وضعیت queue را با stock کل یکی نگیرید: یک کالای دریافتی تا وقتی putaway آن انجام نشده در محل staging است و ممکن است برای برداشت عادی هنوز آماده نباشد.
برای دریافت کالا، SKU، تعداد، منبع و مقصد را با رسید خرید تطبیق کنید. putaway، stock را در location مناسب قرار میدهد. در picking، wave سفارشها را برای انبار مشخص جمع میکند و task مقدار برداشت هر SKU را میگوید. هنگام بستهبندی، سفارش، وزن بسته، تعداد بسته و رهگیری را با اقلام تطبیق دهید. انتقال بین انبارها باید دو سمت مبدأ/مقصد قابل ردیابی داشته باشد؛ ثبت کاهش در یک انبار و فراموشکردن افزایش در مقصد، موجودی را از کسبوکار خارج میکند.
در صفحه محصول، اصلاح مستقیم on-hand مسیر ledger-backed adjustment است؛ در WMS، دریافت/انتقال/picking/packing بخشی از task operational و assignment است. برای کار روزمره تیم انبار، گردش تخصصی WMS را دنبال کنید. از صفحه product adjustment برای کاملکردن task باز یا دورزدن assignment استفاده نکنید.
سفارش، رزرو و فروش کانالی
هنگام checkout، آناما میتواند مقدار لازم تنوع را از انبارهای فعال و مجاز برای کانال رزرو کند. ترتیب انتخاب stock در backend بر اساس شناسه stock انجام میشود؛ در workspace پیچیده، آن را با قاعده کانال و warehouseهای فعال هماهنگ کنید. Reserved در هر Stock جمع رزروهای باز است، و در زمان پرداخت موفق میتواند commit شود: on hand و reserved هر دو به اندازه همان مقدار کم میشوند و یک movement خروج ثبت میشود. در لغو قبل از commit، reservation باید آزاد شود؛ پس از commit، برگشت کالا مسیر RETURN دارد.
مثال: یک محصول در انبار مرکزی ۲۰ عدد on hand و ۴ عدد رزرو دارد. Available برابر ۱۶ است. سفارش وب دو عدد ثبت میکند و رزرو میشود، بنابراین Available به ۱۴ میرسد ولی On hand همچنان ۲۰ است. وقتی پرداخت موفق commit شد، On hand به ۱۸ و Reserved از ۶ به ۴ میرسد؛ Available همچنان ۱۴ باقی میماند. این مثال نشان میدهد چرا جمعکردن Reserved بهعنوان فروش از دسترفته اشتباه است.
اگر فروش از چند کانال است، sales_channels را بررسی کنید. کانالهای فهرستشده باید با سفارش واقعی هماهنگ باشند؛ فهرست خالی همه کانالها را مجاز میگذارد. وجود stock در یک warehouse اگر آن warehouse برای کانال سفارش مجاز نباشد، به معنی Available برای آن فروش نیست.
حالات و اشتباههای رایج
- انبار فعال / غیرفعال: انبار فعال در فهرست انتخاب Warehouse است. غیرفعال را برای محل غیرقابل استفاده بهکار ببرید؛ ابتدا task و reservation را بررسی کنید.
- Available کمتر از On hand: احتمالاً بخشی از کالا رزرو شده است. سفارشهای باز را بررسی کنید؛ این الزاماً stock loss نیست.
- stock صفر: رکورد Stock میتواند quantity صفر داشته باشد؛ دریافت واقعی با افزایش مقدار میسازد. صفر بودن مقدار را با حذف Warehouse اشتباه نگیرید.
- location بدون stock: وجود bin به تنهایی کالا در آن قرار نمیدهد. LocationStock برای ردیابی ریزدانه، مقدار خودش را دارد؛ مسیر Warehouse Stock و WMS location را جدا ببینید.
- lot در قرنطینه یا منقضی: این وضعیتها با
availableساده Stock یکی نیستند. قواعد lot و picking را در WMS کنترل کنید؛ تا دریافت QC را تکمیل نکردهاید، کالا را قابل برداشت فرض نکنید. - گردش اشتباه: دفتر StockMovement قابل ویرایش یا حذف نیست. اصلاح جبرانی جدید و قابل توضیح ثبت کنید تا تاریخچه دستکاری نشود.
عیبیابی
موجودی محصول در انبار موردنظر دیده نمیشود
ابتدا تنوع SKU را در محصول باز کنید، بعد warehouse را تطبیق دهید. Stock per variant/warehouse است و وجود همان نام محصول در تنوع دیگر کافی نیست. وضعیت فعال warehouse را بررسی کنید. سپس On hand و Reserved را جدا ببینید. اگر عدد در location وجود دارد ولی جمع warehouse فرق دارد، WMS task و LocationStock همان SKU را بررسی کنید.
سفارش میگوید موجودی کافی نیست
SKU و مقدار سفارش را از item snapshot بگیرید. Available را نه فقط On hand، در warehouseهای فعال و مجاز برای کانال موردنظر جمع کنید. رزروهای باز، کانال فروش warehouse و مدیریت موجودی/backorder/preorder تنوع را بررسی کنید. مقدار فروش واحد را با quantity scale مطابقت دهید؛ یک واحد «کیلوگرم» را با یک عدد بطری یکی نگیرید.
اصلاح موجودی ذخیره نمیشود
warehouse باید فعال باشد؛ variant باید متعلق به همان فضای کاری باشد؛ mode یکی از set/increase/decrease باشد و مقدار با مقیاس تنوع سازگار باشد. کاهش نمیتواند موجودی لازم برای رزروهای معتبر را از بین ببرد. اگر مقدار Reserved بالاست، ابتدا سفارش یا task مرتبط را بررسی کنید. یادداشت علت و بهای تمامشده را طبق سیاست مالی پر کنید؛ مقدار را چند بار با عملیات تکراری نفرستید.
تیم انبار صفحه را نمیبیند
ماژول WMS را از permission جدا بررسی کنید. assignment نقش باید ماژول، resource، action و scope انبار درست را پوشش دهد. اگر انباردار به انبار دیگری محدود است، نبود داده خارج از scope رفتار مورد انتظار است. راهنمای دسترسی نقشها را برای شبیهسازی action بخوانید.
قدم بعدی
برای کد SKU و واحد فروش ابتدا تنوع محصول را تنظیم کنید. بعد صفهای دریافت و ارسال را در گردش سفارش بررسی کنید و اگر دسترسی صفحه WMS مشکل دارد نقشها و دسترسی را بازبینی کنید.