ماذا يحل الموديول؟
بدل أن يفرض أمر البيع مخزنًا واحدًا على كل المنتجات، يسمح الموديول بتحديد مصدر التنفيذ على مستوى السطر — مع إبقاء العملية كلها داخل دورة Odoo القياسية للمبيعات والمخزون.
مخزن لكل سطر
يمكن أن يخرج المنتج A من المخزن الرئيسي والمنتج B من فرع آخر داخل نفس أمر البيع، بشرط تفعيل الاختيار على الأمر.
تسليمات منفصلة تلقائيًا
عند التأكيد تتبع قواعد الـprocurement المخزن المحدد للسطر، فتتكون حركات وتسليمات كل مخزن بدون إنشاء أمر بيع مستقل لكل موقع.
توفر وتوقع حسب المخزن
مؤشر الكمية ونافذة Forecast يستخدمان المخزن الفعلي للسطر عند تفعيل الوضع متعدد المخازن، وليس مخزن أمر البيع فقط.
1 · تفعيل عام
ابدأ من إعدادات المبيعات
يضيف الموديول إعدادًا عامًا باسم Allow Multi Warehouse in Sale Order Line داخل إعدادات المبيعات. عند تعطيله يعود الـprocurement والتوفر إلى مخزن أمر البيع القياسي، وبالتالي لا تؤثر اختيارات مخازن قديمة على التنفيذ.


2 · تفعيل على مستوى الطلب
لكل أمر بيع قرار مستقل
بعد تشغيل الخاصية عالميًا يظهر اختيار Choose Warehouse per Line بجوار مخزن أمر البيع. هذا الاختيار محفوظ على أمر البيع نفسه، لذلك يمكن استخدام تعدد المخازن في الطلبات التي تحتاجه فقط، بينما تستمر بقية الطلبات بالسلوك القياسي.
3 · التحكم من سطر البيع
المخزن يصبح جزءًا من قرار تنفيذ كل منتج
عند تفعيل الوضع على أمر البيع يظهر حقل Warehouse في قائمة السطور. يحفظ الموديول المخزن على sale.order.line ويحسب Availability Warehouse الذي ستُقرأ منه الكميات والتوقعات. السطر غير المنفذ يظل قابلًا لتغيير المخزن وفق ضوابط الأمان.


4 · نتيجة التنفيذ
كل مخزن يأخذ التسليم الخاص به
عندما تختلف مخازن السطور، يوجّه الموديول قواعد المخزون لكل سطر إلى مخزنه. السطور الموجهة لنفس المخزن يمكن أن تتجمع في نفس التسليم، بينما المخازن المختلفة تنتج تسليمات منفصلة مرتبطة بأمر البيع.
دورة العمل من البداية للنهاية
01
فعّل الخاصية
من Sales Settings فعّل السماح بمخزن على سطر البيع.
02
أنشئ عرض السعر
حدد العميل والمنتجات بالطريقة المعتادة في Odoo.
03
فعّل الاختيار على الطلب
اختر Choose Warehouse per Line إذا كان هذا الطلب يحتاج تنفيذًا من أكثر من مخزن.
04
حدد مخزن السطور
اختر المخزن المناسب لكل منتج؛ إن لم يكن الوضع مفعّلًا يُستخدم مخزن أمر البيع.
05
أكد أمر البيع
تُطلق قواعد المخزون القياسية مع مخزن السطر وتُنشأ التحويلات/التسليمات المطلوبة.
06
تابع وعدّل المعلق
يمكن تغيير مخزن السطر المعلق؛ الموديول يلغي الحركة المفتوحة القديمة ويعيد الـprocurement من المخزن الجديد دون مضاعفة الكمية.
ضوابط تمنع تغييرًا قد يفسد التنفيذ
المرونة في تغيير المخزن ليست مفتوحة بلا حدود. الكود يراجع حالة السطر والحركات المرتبطة قبل قبول التغيير.
بعد التنفيذ يُقفل السطر
بمجرد وصول أي حركة تخص السطر إلى Done يصبح Warehouse Locked ويصير حقل المخزن Readonly لهذا السطر فقط.
الأمر المقفول لا يُعاد توجيهه
إذا كان أمر البيع Locked يرفض الموديول تغيير المخزن حتى يتم فك قفل الأمر أولًا، حتى لا تُلغى حركة بدون إعادة إنشائها.
Purchase / Manufacturing حماية إضافية
إذا كانت الحركة المعلقة تغذيها عملية شراء أو أمر تصنيع، يمنع الموديول إعادة التوجيه التلقائي ويطلب معالجة المستند المصدر أولًا.
لا مضاعفة للكميات
عند إعادة توجيه سطر مسموح بتغييره تُلغى الحركات المفتوحة، ثم يعاد إطلاق قاعدة المخزون للكمية المستحقة فقط.
الـAvailability والـForecast يفهمان مخزن السطر
الموديول لا يكتفي بتغيير وجهة التسليم. في عروض الأسعار والطلبات يحتسب qty_available_today وfree_qty_today وvirtual_available_at_date على أساس Availability Warehouse. كما يمدد نافذة Forecast القياسية في Odoo لتمرر warehouse_id الصحيح عند فتح التوقع.
- قبل تفعيل اختيار المخزن لكل سطر: التوفر يعتمد على مخزن أمر البيع.
- بعد التفعيل: كل سطر يستخدم مخزنه المختار في قراءة التوفر والتوقع.
- في الطلب المؤكد: المتابعة تعتمد على حركات السطر المفتوحة وتواريخها المتوقعة.
ما الذي يغيّره الموديول تقنيًا؟
sale.order
يضيف Choose Warehouse per Line وحالة محسوبة للتفعيل العام.
sale.order.line
يضيف Warehouse قابلًا للتحرير، Availability Warehouse، وWarehouse Locked المحسوب من حركات المخزون.
Procurement
يمرر warehouse_id الصحيح ويمنع تجميع سطر مخزن مختلف داخل مجموعة تنفيذ غير مناسبة.
Forecast UI
Patch صغير لواجهة QtyAtDatePopover لفتح توقع المنتج على المخزن الفعلي للسطر.
الواجهة
وراثة آمنة لنموذج أمر البيع وإعدادات المبيعات؛ لا تعديل مباشر على ملفات Odoo الأساسية.
الصلاحيات
لا يضيف مجموعات أو Record Rules جديدة؛ يعمل داخل صلاحيات المبيعات والمخزون القائمة في Odoo.
أين يكون الحل مفيدًا؟
- شركة توزيع لديها مخزن مركزي وفروع وتريد خدمة طلب عميل واحد من أكثر من موقع.
- تجارة قطع غيار يكون المنتج متوفرًا في فرع مختلف عن مخزن أمر البيع الافتراضي.
- تشغيل لوجستي يحتاج فصل أوامر التسليم حسب مصدر المخزون مع بقاء الفاتورة والطلب موحدين.
- بيئة مبيعات تريد رؤية Forecast واقعية لكل مخزن قبل تثبيت مصدر التنفيذ.
حدود مهمة يجب فهمها
الموديول يختار مخزن التنفيذ على مستوى سطر البيع ويعيد توجيه الحركات المعلقة الآمنة. هو لا يستبدل قواعد Routes أو Reordering أو Purchase/MRP، ولا يتجاوز حماية Odoo على الطلبات المقفولة. إذا دخلت عملية شراء أو تصنيع كسلسلة توريد للسطر، يجب معالجة هذه الوثيقة قبل تغيير المصدر.
أسئلة شائعة
هل تحتاج نفس الفكرة على دورة عملك؟
نراجع توزيع مخازنك ومسارات التوريد وصلاحيات المستخدمين أولًا، ثم نضبط الحل بما يحافظ على دورة Odoo القياسية.
ناقش هذا الحل