فهرست مطالب
در قسمت قبل یک فروش کامل را از پیشفاکتور تا پرداخت مشتری اجرا کردیم. حالا سمت دیگر ماجرا: کالایی که فروختیم باید از تأمینکننده خریده شود. چرخه خرید در Odoo تقریباً آینه چرخه فروش است؛ با همان منطق «هر سند از روی سند قبلی ساخته میشود».
در این مثال اپهای Purchase (خرید)، Inventory (انبار) و Invoicing یا Accounting نصب هستند. میخواهیم ۲۰ عدد «لپتاپ ۱۴ اینچ» از تأمینکنندهمان، «شرکت ب»، بخریم.
- چرخه خرید چهار سند دارد: درخواست قیمت، سفارش خرید، رسید انبار و فاکتور خرید.
- با تأیید سفارش خرید، رسید انبار خودکار ساخته میشود و موجودی فقط بعد از تأیید رسید اضافه میشود.
- کنترل فاکتور خرید تعیین میکند فاکتور تأمینکننده بر اساس مقدار سفارش ثبت شود یا مقدار دریافتشده؛ دومی جلوی پرداخت بیش از کالای رسیده را میگیرد.
- با تعریف تأمینکننده روی محصول و قانون حداقل موجودی، Odoo میتواند درخواست خرید را خودکار بسازد.
چرخه خرید در یک نگاه

درخواست قیمت (RFQ)
از تأمینکننده قیمت و زمان تحویل میخواهید. هنوز سفارشی قطعی نشده است.
سفارش خرید
قیمت را پذیرفتهاید و سفارش را قطعی میکنید.
رسید انبار
همزمان با تأیید سفارش، انبار منتظر رسیدن کالا میماند؛ با رسیدن کالا، رسید تأیید و موجودی اضافه میشود.
فاکتور خرید
فاکتور تأمینکننده از روی سفارش ثبت و با مقدار سفارش یا دریافتشده مقایسه میشود.
پرداخت
پرداخت به تأمینکننده روی همان فاکتور ثبت میشود.
قبل از شروع: تأمینکننده را روی محصول تعریف کنید
اگر کالایی را معمولاً از تأمینکننده مشخصی میخرید، در فرم محصول، تب Purchase (خرید)، او را در فهرست Vendors (تأمینکنندگان) اضافه کنید:
اگر کالایی را از تأمینکنندهای بخرید که هنوز در تب Purchase آن محصول نیست، با تأیید اولین سفارش خرید، Odoo او را با همان قیمت به فهرست تأمینکنندگان محصول اضافه میکند. قیمتهای بعدی را هر وقت تغییر کرد، در همین فهرست بهروز کنید.
۱. ساخت درخواست قیمت
مسیر: Purchase › Orders › Requests for Quotation ← New
- در فیلد Vendor (تأمینکننده) شرکت ب را انتخاب کنید.
- اگر تأمینکننده پیشفاکتور یا شماره سفارش خودش را داده، آن را در Vendor Reference (شماره مرجع تأمینکننده) وارد کنید؛ بعداً تطبیق فاکتور خرید سادهتر میشود.
- در تب Products روی Add a product بزنید، لپتاپ را انتخاب و تعداد را ۲۰ وارد کنید. قیمت از اطلاعات تأمینکننده روی محصول میآید.
- Expected Arrival (تاریخ موردانتظار دریافت) را بررسی کنید.
- ذخیره کنید. سند با شمارهای مثل
P00008در وضعیت RFQ ثبت میشود.
با Send by Email درخواست قیمت برای تأمینکننده ایمیل میشود و وضعیت به RFQ Sent تغییر میکند. اگر تأمینکننده قیمت دیگری داد، همین سند را اصلاح کنید؛ لازم نیست سند جدید بسازید.
۲. تأیید و تبدیل به سفارش خرید
وقتی با قیمت و زمان تحویل موافقت شد، روی Confirm Order (تأیید سفارش) بزنید:
- وضعیت سند به Purchase Order تغییر میکند و شماره همان میماند.
- در انبار یک رسید (Receipt) ساخته میشود و دکمه Receipt بالای سفارش ظاهر میشود.
- کالا هنوز به موجودی اضافه نشده است؛ فقط در گزارشها بهعنوان «در راه» دیده میشود.
اگر میخواهید سفارشهای بالای یک مبلغ مشخص را مدیر تأیید کند، در تنظیمات Purchase گزینه Purchase Order Approval را فعال کنید و حداقل مبلغ را بنویسید. سفارشهای بزرگتر بعد از Confirm Order در وضعیت To Approve میمانند تا مدیر خرید تأییدشان کند.
۳. دریافت کالا در انبار
وقتی کالا رسید، روی دکمه Receipt بالای سفارش بزنید، یا از Inventory › Operations › Receipts رسید را باز کنید.
- تعداد واقعی رسیده را با تعداد سفارش مقایسه کنید.
- اگر کالا شماره بچ یا سریال دارد، شمارهها را همینجا وارد کنید.
- روی Validate (تأیید) بزنید. وضعیت رسید Done میشود و موجودی انبار اضافه میشود.
دریافت ناقص
اگر تأمینکننده مثلاً ۱۵ عدد از ۲۰ عدد را فرستاده، تعداد را ۱۵ وارد کنید و Validate بزنید. Odoo میپرسد:
- Create Backorder: برای ۵ عدد باقیمانده یک رسید جدید ساخته میشود تا بعداً دریافت شود.
- No Backorder: باقیمانده لغو میشود و دیگر منتظر آن نمیمانید.
۴. ثبت فاکتور خرید
وقتی فاکتور تأمینکننده رسید، به سفارش خرید برگردید و روی Create Bill (ایجاد فاکتور خرید) بزنید.
- یک فاکتور خرید پیشنویس با همان تأمینکننده، محصولات و قیمتها ساخته میشود.
- Bill Date (تاریخ فاکتور) را از روی فاکتور کاغذی یا PDF تأمینکننده وارد کنید؛ بدون این تاریخ فاکتور تأیید نمیشود.
- شماره فاکتور تأمینکننده را در فیلد Bill Reference بنویسید.
- مبالغ را با فاکتور تأمینکننده مقایسه کنید و روی Confirm بزنید.
فاکتور بر اساس سفارش یا دریافت؟
این رفتار با فیلد Control Policy (سیاست کنترل) در تب Purchase فرم محصول تعیین میشود:
| مقدار سفارشدادهشده | مقدار دریافتشده | |
|---|---|---|
| فاکتور خرید کی ثبت میشود | بلافاصله بعد از تأیید سفارش | فقط برای مقداری که رسید آن تأیید شده |
| در دریافت ناقص | کل مبلغ سفارش در فاکتور میآید | فقط مبلغ کالای رسیده میآید |
| مناسب برای | خدمات، خرید با پیشپرداخت کامل | کالاهایی که ممکن است مرحلهای برسند |
برای کالاهای انباری، «مقدار دریافتشده» امنتر است. اگر تأمینکننده کل مبلغ را فاکتور کرده اما بخشی از کالا نرسیده، Odoo اختلاف را نشان میدهد و فاکتور فقط برای مقدار رسیده ساخته میشود.
۵. پرداخت به تأمینکننده
- در فاکتور خرید تأییدشده، روی Register Payment (ثبت پرداخت) بزنید.
- Journal را انتخاب کنید؛ حساب بانکی یا صندوقی که از آن پرداخت کردهاید.
- مبلغ و تاریخ را بررسی و Create Payment را بزنید.
مثل فاکتور فروش، بعد از ثبت پرداخت و بسته به تنظیمات حسابداری، فاکتور خرید In Payment و بعد از تطبیق با صورتحساب بانک Paid میشود. برای دیدن فاکتورهایی که سررسیدشان نزدیک است، از Invoicing › Vendors › Bills فیلتر سررسید را بزنید.
خرید خودکار با حداقل موجودی
لازم نیست همیشه دستی بفهمید چه کالایی کم شده است. برای هر کالا میشود قانون حداقل موجودی تعریف کرد:
- در فرم محصول، دکمه بالای فرم با عنوان Min / Max (قانون موجودی) را بزنید، یا از Inventory › Operations › Replenishment استفاده کنید.
- حداقل موجودی (مثلاً ۵ عدد) و حداکثر (مثلاً ۲۰ عدد) را وارد کنید.
- مطمئن شوید روی محصول، تأمینکننده تعریف شده و مسیر Buy (خرید) فعال است.
وقتی موجودی پیشبینیشده کالا به کمتر از حداقل برسد، Odoo یک درخواست قیمت برای تأمینکننده اصلی میسازد تا موجودی به حداکثر برسد. این درخواست را بررسی و تأیید میکنید؛ چیزی بدون تأیید شما سفارش داده نمیشود.
Odoo موجودی پیشبینیشده را حساب میکند: موجودی فعلی، بهعلاوه خریدهای در راه، منهای سفارشهای فروشی که هنوز تحویل نشدهاند. پس سفارش فروش بزرگی که امروز تأیید میشود، همین امروز میتواند درخواست خرید بسازد.
وقتی چیزی برمیگردد
| موقعیت | راه درست در Odoo |
|---|---|
| کالای معیوب باید به تأمینکننده برگردد | روی رسید تأییدشده Return بزنید تا حواله برگشت ساخته و موجودی کم شود |
| تأمینکننده مبلغی را برمیگرداند یا تخفیف داده | روی فاکتور خرید Credit Note بسازید |
| سفارش خرید دیگر لازم نیست | تا وقتی کالایی دریافت نشده، سفارش را Cancel کنید |
نکتههای کاربردی
- قفل کردن سفارشهای تأییدشده: با گزینه Lock Confirmed Orders در تنظیمات Purchase، سفارشهای تأییدشده قفل میشوند و تغییر اتفاقی در آنها ممکن نیست.
- سفارشهای دیررسیده: در فهرست سفارشهای خرید، فیلتر سفارشهایی را بزنید که تاریخ موردانتظار دریافتشان گذشته است تا با تأمینکننده پیگیری کنید.
- ارتباط فروش و خرید: اگر کالایی را فقط بعد از سفارش مشتری میخرید، مسیر Buy همراه با Replenish on Order (MTO) را روی محصول فعال کنید؛ با تأیید سفارش فروش، درخواست خرید همان کالا خودکار ساخته میشود. مسیر MTO ممکن است در تنظیمات انبار بهصورت پیشفرض بایگانی شده باشد و باید فعالش کنید.
جمعبندی
چرخه خرید در Odoo با همان منطق چرخه فروش کار میکند: درخواست قیمت به سفارش خرید تبدیل میشود، سفارش رسید انبار را میسازد و فاکتور خرید با مقدار دریافتشده کنترل میشود. با تعریف تأمینکننده روی محصول و قانون حداقل موجودی، بخش زیادی از کار تیم خرید خودکار میشود؛ اما تصمیم نهایی همیشه با شماست.
در قسمت بعدی مسیر «از صفر تا Odoo»، سراغ انبار میرویم: موجودی اولیه، جابهجایی بین انبارها و انبارگردانی.
پرسشهای متداول
میشود بدون درخواست قیمت، مستقیم سفارش خرید ثبت کرد؟
بله. همان درخواست قیمت را بسازید و بلافاصله Confirm Order را بزنید؛ لازم نیست برای تأمینکننده ایمیل شود.
از چند تأمینکننده قیمت گرفتهام؛ چطور مقایسه کنم؟
برای هر تأمینکننده یک درخواست قیمت با همان کالاها بسازید و بعد از گرفتن قیمتها، بهترین را تأیید و بقیه را لغو کنید. در بخش Purchase Analysis (تحلیل خرید) هم میشود قیمتهای گذشته هر تأمینکننده را مقایسه کرد.
فاکتور تأمینکننده زودتر از کالا رسیده؛ چه کنم؟
اگر سیاست کنترل «مقدار دریافتشده» است، صبر کنید تا رسید انبار تأیید شود، بعد Create Bill بزنید. فاکتور کاغذی را میتوانید تا آن موقع به سفارش خرید پیوست کنید.
هزینه حمل را چطور ثبت کنم؟
سادهترین راه این است که حمل را بهعنوان یک محصول خدماتی تعریف کنید و یک ردیف به سفارش خرید یا فاکتور خرید اضافه کنید. اگر میخواهید هزینه حمل در بهای تمامشده کالا حساب شود، با حسابدار یا مشاور Odoo درباره روش درستش هماهنگ کنید.
چرا درخواست خرید خودکار ساخته نمیشود؟
سه چیز را بررسی کنید: قانون حداقل موجودی روی محصول تعریف شده باشد، روی محصول تأمینکننده باشد و مسیر Buy فعال باشد. قانونها بهطور پیشفرض با یک کار زمانبندیشده بررسی میشوند؛ در صفحه Replenishment میتوانید دستی هم اجرایشان کنید.