تخطي للذهاب إلى المحتوى

فهم stock.picking في Odoo: عمليات التحويل وإدارة المخازن

دليل شامل لفهم نموذج التحويل المركزي في أودو لإدارة المخزون والمستودعات
10 مارس 2026 بواسطة
فهم stock.picking في Odoo: عمليات التحويل وإدارة المخازن
Dasolo
لا توجد تعليقات بعد

مقدمة


في نظام Odoo، تُنظّم النماذج كيفية حفظ البيانات وبنيتها داخل قاعدة البيانات. كل سجل عمل—من أوامر البيع إلى تحويلات المخزون وحتى مهام المستودع اليومية—موجود داخل نموذج معين يتحكم في حقوله وسلوكياته.


فهم النماذج في Odoo ضروري للمستشارين التقنيين والوظيفيين على حد سواء. النماذج تشكّل العمود الفقري لهندسة البيانات: تحدد الحقول، وترسم العلاقات بين السجلات، وتضم قواعد الأعمال التي تحكم سريان العمليات.


هذا المقال يركّز على أحد أهم نماذج تطبيق المخزون: stock.picking. سواء كنت تصمّم إضافات لمستودعات خاصة، أو توصل نظامك بأنظمة خارجية، أو تضبط سير العمل، ستتعامل مباشرة مع هذا النموذج.

ما هو نموذج stock.picking


نموذج stock.picking يمثّل حركة نقل البضائع داخل Odoo. هو سجّل العملية الذي يتتبّع ما ينتقل من موقع إلى آخر—كل سجل يعبّر عن تحويل واحد مع تفاصيله وحالته.


يُستخدم هذا النموذج في كامل وحدة المخزون: واردات، صادرات، ونقل داخلي كلها تولّد سجلات stock.picking. عند تأكيد تسليم من أمر بيع، أو استلام مشتريات من مورد، أو نقل بين مستودعات، تكون قد أنشأت أو حدّثت سجل نقل.


النموذج مُعرّف داخل وحدة stock، بينما وحدات أخرى توسّعه عبر وراثة نماذج Odoo. وحدة المبيعات تضيف حقول متعلقة بالتسليم، والمشتريات تضيف سبل استلام، والتصنيع يملك امتدادات لحركات الإنتاج—كل وحدة تضيف ما تحتاجه دون تكرار البنية الأساسية.


stock.picking يرث أيضاً من mail.thread و mail.activity.mixin، ما يعني أنه يدعم متابعة التغييرات، وجود الشات الداخلي (chatter)، وجدولة الأنشطة المرتبطة بكل تحويل مباشرة داخل السجل.

الحقول الأساسية في النموذج


فيما يلي أهم الحقول التي يجب أن تعرفها في نموذج stock.picking. إتقانها يساعدك على التعامل مع التحويلات وجدولة المخزون بكفاءة.


1. name

نوع: حرفي (Char). هذا الحقل هو مرجع التحويل الظاهر في رأس النموذج، وغالباً ما يُملأ تلقائياً من تسلسل رقمي (مثلاً WH/OUT/00001). يُستخدم كمعرف رئيسي للـ picking.


2. origin

نوع: حرفي (Char). مرجع المستند المصدر. يربط التحويل بمصدره—مثل اسم أمر البيع أو أمر الشراء—مفيد لتتبّع أصل الحركة عند التدقيق.


3. state

نوع: اختيار (Selection). حالة التحويل—مسودة، انتظار عملية أخرى، جاهز، منجز، ملغي، إلخ. الحالة تتحكم بالإجراءات المتاحة وتُحسب بناءً على حركات المخزون المرتبطة.


4. picking_type_id

نوع: Many2one (stock.picking.type). يحدد نوع العملية: وارد، صادر، أو نقل داخلي. حقل إلزامي يحدد المواقع الافتراضية وسلوك التحويل.


5. move_ids

نوع: One2many (stock.move). خطوط الحركات الأساسية؛ كل خط يمثل منتجاً وكمية للانتقال. عملياً، كل منطق الحجز والتوافر يتعامل مع هذه الحركات.


6. move_line_ids

نوع: One2many (stock.move.line). العمليات التفصيلية: عند تتبع باللوت أو السيريال، تُسجّل هنا الأرقام، والمواقع الدقيقة، وعمليات التعبئة والتحقق.


7. location_id

نوع: Many2one (stock.location). الموقع المصدر—من أين تُؤخذ المنتجات. حقل مطلوب؛ في حالة التسليم يكون عادةً موقع المخزون.


8. location_dest_id

نوع: Many2one (stock.location). الموقع الوجهة—إلى أين تُنقل المنتجات. حقل مطلوب؛ عند الاستلام يكون عادةً موقع المخزن.


9. partner_id

نوع: Many2one (res.partner). الجهة المقابلة: زبون للتسليم أو مورد للاستلام. تُستخدم بياناته في عناوين المستندات وتكامل الناقلين.


10. scheduled_date

نوع: تاريخ ووقت (Datetime). الموعد المجدول لمعالجة التحويل. يُستخدم للتخطيط وترتيب الأولويات، وتحديد موعد متوقع لكل الحركات المرتبطة.


11. date_deadline

نوع: تاريخ ووقت (Datetime). الموعد النهائي—غالباً ما يأتي من أمر البيع أو الشراء. يساعد على تمييز التحويلات المتأخرة والتعهدات للزبائن.


12. date_done

نوع: تاريخ ووقت (Datetime). وقت إتمام أو إلغاء التحويل. حقل للقراءة فقط ويُملأ تلقائياً عند انتهاء السجل.


13. priority

نوع: اختيار (Selection). مستوى الأولوية—تُعطى المنتجات للحجوزات في التحويلات الأعلى أولوية أولاً، مفيد للطلبات العاجلة.


14. move_type

نوع: اختيار (Selection). سياسة الشحن: التسليم فوراً (يسمح بالتسليم الجزئي) أو حين تتوفر كل الكميات (الكل أو لا شيء). يؤثر على متى يمكن معالجة الـ picking.


15. user_id

نوع: Many2one (res.users). المستخدم المسؤول عن التحويل—يُستخدم للتكليف ومتابعة عبء العمل، ويُملأ افتراضياً بالمستخدم الذي أنشأ السجل.


16. company_id

نوع: Many2one (res.company). الشركة المالكة للسجل—يُورّث من نوع الـ picking وفي بيئات تعدد الشركات يحدّد ملكية التحويل.


17. group_id

نوع: Many2one (procurement.group). مجموعة المشتريات أو التجهيزات التي تربط الحركات معاً—مفيد عند خروج عدة تحويلات من نفس الطلب.


18. backorder_id

نوع: Many2one (stock.picking). عند التحقق الجزئي يُنشأ أمر لاحق (backorder) للباقي؛ هذا الحقل يربط بالتحويل الأصلي.


19. backorder_ids

نوع: One2many (stock.picking). الأوامر المتبقية الناتجة من هذا التحويل—مفيدة لمعالجة الباقي لاحقاً بعد تحقق جزئي.


20. return_id

نوع: Many2one (stock.picking). إذا كان هذا التحويل ناتجاً عن إرجاع، يربط بالسجل الأصلي لمتابعة سير الإرجاع.


21. note

نوع: HTML. ملاحظات داخلية مرئية لموظفي المستودع—تعليمات خاصة أو شروط تعامل مع الشحنة.


22. signature

نوع: صورة (Image). التوقيع الملتقط عند إتمام التسليم—يستخدم كدليل تسليم ويُخزّن كمرفق.


23. is_signed

نوع: منطقي (Boolean). قيمة محسوبة من وجود التوقيع تُشير ما إذا تمت المصادقة على التسليم.


24. owner_id

نوع: Many2one (res.partner). مالك السلع عند التحقق—يُستخدم لحالات الإيداع أو السلع الخاصة بطرف ثالث.


25. package_level_ids

نوع: One2many (stock.package_level). مستويات التغليف عند استخدام تجميع الحزم—تجميع خطوط الحركة داخل عبوات للشحن.


26. create_date

نوع: تاريخ ووقت (Datetime). وقت إنشاء السجل—يدار تلقائياً بواسطة Odoo وموروث من النموذج الأساسي.


27. write_date

نوع: تاريخ ووقت (Datetime). وقت آخر تعديل على السجل—مدار تلقائياً ويُستخدم لتتبع التغييرات.


28. active

نوع: منطقي (Boolean). علم الحذف اللطيف—عند جعله False يُؤرشف السجل بدلاً من حذفه نهائياً.

كيف يُستخدم هذا النموذج في سير العمل التجاري


1. مبيعات وتسليم

عند تأكيد أمر بيع، يولّد النظام تلقائياً أمر تسليم (stock.picking). يرتبط هذا السجل بأمر البيع عبر حقل origin، ويقوم فريق المستودع بعملية الانتقاء والتغليف ثم التحقق حتى ينتقل من حالة مسودة إلى جاهز ثم منجز.


2. مشتريات واستلام

عند تأكيد أمر شراء يُنشأ سجل وارد داخلي يستلم البضاعة من موقع المورد إلى مخزون الشركة. يكون partner_id هو المورد، وتحديث التحقق ينعكس فوراً على كميات المخزون.


3. نقل داخلي

نقل مخزون بين مواقع أو مستودعات يولّد تحويلات داخلية (picking_type_id من نوع 'internal')، حيث يكون المصدر والوجهة مواقع داخلية ضمن نفس البيئة.


4. مرتجعات وأوامر متبقية (Backorders)

عمليات الإرجاع تُنشئ تحويلات رجوع تربط بالسجل الأصلي عبر return_id. أما عند تحقق جزئي تُنشأ backorders تُدرج في backorder_ids لمعالجتها لاحقاً.


5. تصنيع وإنتاج

أوامر التصنيع تنتج تحويلات لاستهلاك المواد الخام وإدخال المنتجات النهائية؛ وحدة التصنيع (mrp) تضيف امتدادات إلى stock.picking لتغطية هذه التدفقات.

كيف يطوّر المطورون هذا النموذج


يُطوّر المطورون stock.picking بعدة طرق، وأداة الوراثة في Odoo هي الأساس لإضافة حقول أو تعديل سلوكيات.


وراثة النموذج

باستخدام _inherit = 'stock.picking' يمكنك توسيع النموذج: إضافة حقول جديدة، تجاوز دوال، أو فرض قيود. تُبقي الوراثة تغييراتك في وحدة منفصلة مما يسهل الترحيل والتحديث.


إضافة حقول

عرّف حقولاً جديدة في النموذج الموروث باستخدام أنواع الحقول المناسبة: Char، Many2one، Boolean، Integer، Text، Selection. فكّر أيضاً في جعْل الحقول معتمدة على الشركة في بيئات متعددة الشركات.


امتدادات بايثون

يمكنك تجاوز دوال مثل button_validate، action_assign أو _create_backorder لإضافة منطق مخصّص. استخدم super() لاستدعاء المنطق الأصلي واحذر من تعقيدات انتقال الحالات وإنشاء الحركات.


Odoo Studio

Odoo Studio مناسب لإضافة حقول بسرعة بدون كود—مفيد للتخصيصات البسيطة كعناوين مخصصة أو ملاحظات إضافية. لكن للمنطق المعقّد أو تكامل الناقلين يظل بناء وحدات مخصصة أكثر استدامة.

ممارسات مثلى


  • دائماً عيّن picking_type_id عند إنشاء التحويلات يدوياً لأنّه يحدد المواقع الافتراضية والسلوك المتوقع.
  • استخدم حقل origin لربط التحويل بالمستند المصدر؛ هذا يسهل التقارير واستكشاف الأخطاء.
  • عند بناء تكاملات عبر API، فإن نموذج stock.picking متاح بالكامل: أنشئ الحركات عبر علاقة move_ids ولا تنشئ سجل تحويل بدون حركات مرافقة.
  • استفد من scheduled_date في التخطيط لأنّه يؤثر على الحجز وترتيب الأولويات.
  • لحقول مخصصة استخدم بادئة x_ أو بادئة اسم الوحدة لتجنب تعارضات مع تحديثات Odoo المستقبلية.

أخطاء شائعة


  • إنشاء تحويلات دون تعيين picking_type_id قد يؤدي إلى تعيين مواقع افتراضية خاطئة وسلوك غير متوقع.
  • تعديل move_ids بعد التأكيد دون فهم آلة الحالات قد يسبب تعارضات؛ انتبه لكيفية انتقال الحالات وقيود التحقق.
  • نسيان تعيين partner_id للتسليمات يعيق طباعة المستندات وتكامل شركات النقل.
  • تجاوز دالة button_validate دون استدعاء super() قد يكسر إنشاء backorders أو يكسر تكامل وحدات أخرى.
  • الافتراض أن move_ids و move_line_ids دائماً متزامنان غير صحيح؛ خطوط الحركة التفصيلية تُنشأ عند الحجز أو عند استخدام عمليات مفصلة.

خاتمة


نموذج stock.picking مركزي في إدارة المخزون داخل Odoo: يخزن تحويلات، وتسليمات، واستلامات. فهم الحقول وكيف توسّعه الوحدات الأخرى يساعدك على ضبط النظام ودمجه وتعديله بكفاءة.


سواء كنت مستشاراً وظيفياً يرسم عمليات المستودع أو مطوراً يبني تخصيصات، فهم عميق لـ stock.picking يوفر وقتاً ويقلّل الأخطاء.

هل تريد تحسين مستودع Odoo الخاص بك؟


تعمل Dasolo مع الشركات لتنفيذ وتخصيص وتحسين Odoo، مع خبرة مركزية في تكاملات API وتطوير الوحدات وفهم معمق لهندسة بيانات Odoo ونماذج مثل stock.picking.


إذا كنت تحتاج مساعدة في تنفيذ Odoo، أو تطوير وحدات مخازن مخصصة، أو التكاملات، ففريقنا جاهز لدعمك. احجز عرضاً توضيحياً لمناقشة مشروعك.

فهم stock.picking في Odoo: عمليات التحويل وإدارة المخازن
Dasolo 10 مارس 2026
شارك هذا المنشور
تسجيل الدخول حتى تترك تعليقاً