مقدمة
في Odoo تُعرّف النماذج شكل البيانات وكيف تُخزّن داخل قاعدة البيانات. كل كيان تجاري تتعامل معه — مثل طلبات البيع أو الفواتير أو حركات المخزون — يتم تمثيله كسجل ضمن نموذج معين.
فهم النماذج في Odoo ضروري سواء للمطورين أو الاستشاريين الوظيفيين. النماذج تشكّل العمود الفقري لهندسة البيانات: تحدد الحقول، العلاقات، والقواعد التي تحكم سلوك السجلات.
سنركز هنا على نموذج محوري في إدارة المخزون: stock.move. سواء كنت تبني إضافات لمستودعاتك، تربط أنظمة خارجية، أو تضبط مسارات المخزون، ستجد نفسك تتعامل مع هذا النموذج باستمرار.
ما هو نموذج stock.move
تمثل سجلات stock.move نقل وحدة مخزون واحدة من موقع إلى آخر داخل Odoo. كل مرة تُنقل فيها سلعة من رف إلى رف، بين مستودعات، أو تُسلّم لعميل، يتم إنشاء سجل يصف هذه الحركة.
نموذج stock.move يعمل ضمن تطبيق المخزون. عمليات المبيعات والمشتريات والتصنيع والمتجر الإلكتروني تترجم غالباً إلى حركات مخزون تُخزّن هنا. عند تأكيد أمر تسليم أو استلام بضاعة أو إنهاء أمر تصنيع، يتم إنشاء أو تحديث سجلات stock.move.
هذا النموذج مُعرّف في وحدة stock الأساسية، وباقي الوحدات تُكمله عبر وراثة النماذج في Odoo. مثلاً موديول المبيعات يرتبط بحقل sale_line_id، والمشتريات تضيف purchase_line_id، والتصنيع يربط production_id — كل إضافة تضيف سياق دون تكرار البنية الأساسية.
الحقول الأساسية في النموذج
فيما يلي الحقول الأكثر أهمية في stock.move. تعرف عليها لتتمكن من إدارة الحركات والتقارير والربط بين العمليات بشكل صحيح.
1. الاسم
حقل نصي يعرض وصف الحركة أو مسماها. عادة يُبنى من اسم المنتج والكمية، ويُستخدم كمرجع سريع في القوائم وشاشات العرض.
2. المنتج
حقل ارتباط إلى سجل المنتج. كل حركة يجب أن تشير إلى منتج محدد لأن منه تعتمد حسابات الكمية، قواعد التسعير، والقياسات.
3. وحدة القياس
حقل يشير إلى وحدة القياس المستخدمة للكميات في هذه الحركة. مهم لضمان صحة التحويلات والحسابات بين وحدات مختلفة.
4. كمية الوحدة
قيمة رقمية توضح الكمية المطلوبة بالوحدة المختارة. تمثل الطلب المطلوب تنفيذه، بينما يتم تسجيل الكمية الفعلية المنجزة في حقل آخر.
5. الكمّيّة للعرض
حقل عرض أو محسوب يظهر الكمية بطريقة مناسبة للمستخدم — قد يطابق الكمية المطلوبة أو يمثلها بعد تحويل الوحدات.
6. الموقع المصدر
الموقع الذي تُنتقل منه البضاعة. حقل ارتباط إلى سجلات المواقع داخل المستودع أو المورد أو أي موقع منطقية أخرى.
7. الموقع الوجهة
الموقع الذي تذهب إليه البضاعة. يمكن أن يكون موقع مخزون داخلي، عنوان عميل، أو موقع للخردة حسب نوع العملية.
8. وثيقة التحويل
ارتباط إلى مستند التجهيز (picking) الذي يجمع عدة حركات معاً — مثل أمر تسليم أو استلام — لتسهيل عمليات المستخدم وإدارة الحزمة.
9. نوع التحويل
يحدد نوع العملية (استلام، تسليم، تحويل داخلي). هذا الحقل يوجه قواعد العمل، المواقع الافتراضية وسريان سير العمل الخاص بالحركة.
10. الحالة
تعبر عن مرحلة الحركة ضمن دورة الحياة: مسودة، مؤكد، محجوز، منجز، مُلغى، إلخ. مفيدة للمراقبة والأتمتة.
11. التاريخ المجدول
وقت وتاريخ التنفيذ المخطط للحركة. يستخدم للتخطيط اليومي وترتيب أولويات التنفيذ.
12. تاريخ الاستحقاق
الحدّ النهائي المتوقع لإنجاز الحركة — مفيد لعمليات التسليم الموعودة وحسابات الأسبقية.
13. الأصل المرجعي
حقل نصي يربط الحركة بالمستند المنشأ مثل رقم طلب بيع أو شراء أو تصنيع، ليسهل تتبُّع المصدر.
14. الحركة التابعة
ارتباط بحركة أخرى تُعدّ الوجهة في سلسلة من الحركات؛ يستخدم لربط المخرجات بمدخلات العمليات اللاحقة.
15. الحركات الأصلية
قائمة بالحركات التي أدت إلى هذه الحركة. تساعد في تتبع سلسلة التوريد داخل النظام.
16. سطور الحركة
تفاصيل تفصيلية لكل جزء من الحركة تشمل أرقام الدُفعات، السيريالات، مواقع فرعية داخل المستودع، وما إلى ذلك — تظهر أثناء الحجز والمعالجة.
17. الشريك المرتبط
العميل أو المورد المتعلق بهذه الحركة؛ يستخدم لعناوين التسليم، الفوترة، والتقارير.
18. الشركة
في بيئات الشركات المتعددة هذا الحقل يحدد أي شركة تملك السجل ويؤثر على صلاحيات العرض وقواعد الإدخال بين الشركات.
19. الكمية المنجزة
كمية التنفيذ الفعلية التي تم تسجيلها عند الالتقاط أو الاستلام. عندما تساوي هذه القيمة الكمية المطلوبة تُعتبر الحركة مكتملة.
20. الكمية المحجوزة
كمية البضاعة المخصصة لهذه الحركة بعد الحجز. تظهر مقدار التوفر المحجوز مقابل الطلب.
21. تاريخ الإنشاء
تاريخ ووقت إنشاء السجل في النظام؛ يستخدم لأغراض التدقيق والتقارير الزمنية.
22. تاريخ التعديل
آخر تاريخ ووقت تم فيه تعديل السجل؛ مهم لتتبّع التغييرات ومصادقة البيانات.
23. ترتيب العرض
قيمة رقمية تُستخدم لفرز الحركات داخل نفس الحزمة بحيث تُعرض الحركات ذات الأسبقية أولاً.
24. أولوية
مستوى الاستعجال للحركة؛ يُستخدم في جدولة التنفيذ بحيث تُعالَج الحركات العاجلة قبل غيرها.
25. ملاحظات على التحويل
حقل نصي لكتابة تعليمات خاصة أو ملاحظات تظهر في مستندات التجهيز والتسليم.
26. مرجع داخلي
رمز أو مرجع داخلي يُستخدم للتتبع أو الربط مع أنظمة خارجية.
27. مجموعة الشراء/التحصيل
حقل يجمّع الحركات الناتجة عن نفس طلب الشراء أو البيع لغرض التخطيط والتتبع المركزي.
28. طريقة التوفير
تحدد ما إذا كانت الحركة تُلبَّى من المخزون المتوفر أو تُحرِّك لتوليد أمر شراء/تصنيع (صنع على الطلب مقابل من المخزون).
29. سطر أمر البيع
حقل تُضيفه وحدة المبيعات لربط الحركة بسطر طلب البيع الذي أشعلها، مفيد للتقارير والتتبُّع.
30. سطر أمر الشراء
حقل تضيفه وحدة المشتريات لربط الاستلام بسطر طلب الشراء ذي الصلة.
31. أمر التصنيع
حقل تضيفه وحدة التصنيع لربط حركات المواد الخام والمنتج النهائي بأمر التصنيع المعني.
32. مُفعّل/معطّل
علم أرشفة؛ عند تعطيل السجل يُخبأ من العرض الافتراضي دون حذفه من القاعدة.
كيف يُستخدم هذا النموذج في سير العمل التجاري
1. تسليم للعملاء
عند تأكيد بيع، يُولّد النظام حركات لكل سطر منتج: مصدرها المخزون، وجهتها عنوان العميل. تُجمع الحركات ضمن مستند تجهيز واحد، وعند الالتقاط والتسليم تُحدّث الكميات المنجزة وتنتقل الحالة إلى مكتملة.
2. استلام من الموردين
عند تأكيد أمر شراء يُنشأ استلام وارد للحركات ذات اتجاه دخول المخزون. يكون مصدر الحركة موقع المورد ووجهتها موقع المخزون، ويُثبّت الاستلام عند وصول البضاعة.
3. تحويل داخلي
نقل بين مواقع أو مستودعات داخلياً يُترجم إلى حركات stock.move لتوازن المخزون أو لإعادة الترصيد بين المواقع.
4. التصنيع
أوامر التصنيع تنتج حركات لسحب المواد الخام وإدخال المنتج النهائي إلى المخزون؛ الربط بين الحركات وأمر التصنيع يضمن تتبع الاستهلاك والإنتاج وربط المخرجات بالتسليمات اللاحقة.
5. مرتجعات وخردة
عمليات إرجاع العملاء أو قيد الخردة تُنفّذ عبر حركات عكسية أو حركات إلى مواقع خردة، ونوع العملية يحدده نوع التحويل.
كيف يطوّر المطوّرون هذا النموذج
المطوّرون يوسّعون stock.move بعدة طرق، وأداة الوراثة في Odoo هي الأساس لذلك.
وراثة النموذج
باستخدام _inherit = 'stock.move' يمكنك إضافة حقول، تعديل وظائف، أو فرض قيود جديدة ضمن مودول مستقل يسهل صيانته وترقيته.
إضافة حقول
أضف الحقول المناسبة من أنواع متعددة: نص، رابط، عدد صحيح، منطقي، اختيار... وفكّر في دعم عَبر الشركات للحقل عند الحاجة. إضافات شائعة تشمل أرقام تتبع مخصصة أو سمات دفعات.
توسيع بالبايثون
تستطيع تجاوز دوال أساسية مثل _action_done أو _action_assign أو _action_cancel لإدخال منطق مخصص، لكن احرص على استدعاء super() عندما تحتاج حفاظاً على سلامة الحركات والتكامل مع باقي الوحدات.
Odoo Studio
تسمح لك أداة Studio بإضافة حقول بسرعة دون برمجة، مناسبة للتخصيصات البسيطة، بينما تفضّل الإضافات البرمجية للحالات المعقّدة أو تغييرات السلوك الدائم.
ممارسات مفضلة
- تأكد دائماً من تحديد الموقع المصدر والموقع الوجهة بشكل صحيح لأن الخطأ هنا يؤثر مباشرة على أرصدة المخزون.
- استعمل الحقل الذي يجمع الحركات ضمن نفس التجهيز (picking_id) لربط الحركات ذات الصلة؛ لا تخلق حركات مفصولة إذا كانت جزءاً من نفس عملية.
- عند ربط أنظمة خارجية استعمل واجهات XML-RPC أو JSON-RPC. نموذج stock.move متاح بالكامل عبر الواجهة؛ احرص على مطابقة المعرفات الخارجية بعناية.
- لحقولك المخصصة استخدم بادئة خاصة بالموديول x_ أو بادئة المؤسسة لتفادي تضارب الأسماء مع تحديثات Odoo مستقبلية.
- لتحقيق تتبّع واضح استعمل الحقول الخاصة بالربط بين الحركات مثل move_dest_id و move_orig_ids عند إنشاء حركات متسلسلة برمجياً.
- انتبه للفارق بين product_uom_qty (المطلوب) و quantity_done (المنجز). تسليمات جزئية شائعة ويجب معالجتها بشكل صحيح.
أخطاء شائعة
- إنشاء حركات بمواقع غير متوافقة: على سبيل المثال تحديد موقعين من نوع عميل كونهما مصدر ووجهة يخلق مشاكل منطقية ومحاسبية.
- تعديل product_uom_qty بعد أن تم إنشاء سطور الحركة قد يسبب عدم توازن في المخزون — الأحسن إلغاء الحركة وإعادة إنشائها إن لزم.
- نسيان تعيين حقل الأصل (origin) يجعل تتبُّع الحركة إلى مستند منشئها أمراً صعباً لاحقاً.
- تجاوز _action_done دون استدعاء super() قد يكسر تحديثات المخزون وتكامل الوحدات الأخرى.
- إنشاء حركات مباشرة متجاوزاً workflow الصحيح (تخطي stock.picking) قد يؤدي إلى فقدان الحجز وسلوك غير متوقع.
- إهمال الربط عبر move_dest_id عند تقسيم أو دمج الحركات قد يترك سلسلات حركات مفصولة أو بدون مرجع.
الخلاصة
نموذج stock.move هو حجر الأساس في إدارة المخزون داخل Odoo. يخزن كل تحرّك للبضائع بين المواقع، وفهم حقلاته وطرق تمديده يسهل ضبط العمليات وتخصيص النظام وربطه مع أنظمة الطرف الثالث.
سواء كنت مستشاراً ينسق العمليات اللوجستية أو مطوراً يبني حلولاً مخصصة، إتقان stock.move يوفر عليك وقت التصحيح ويقلل الأخطاء التشغيلية.
هل تحتاج مساعدة في تنفيذ Odoo؟
شركة Dasolo تقدم خدمات تنفيذ وتخصيص وتحسين Odoo، مع خبرة عميقة في التكامل عبر API وتطوير النماذج مثل stock.move.
إذا أردت مساعدة في تنفيذ Odoo أو تطوير موديلات مخصصة أو تكاملات، فريقنا جاهز لدعم مشروعك. احجز عرضاً توضيحياً لمناقشة مشروعك.