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

فهم نموذج المنتج: معمارية متغيرات المنتجات في أودو

دليل كامل لنموذج متغيرات المنتج في أودو للمطورين والمستشارين الوظيفيين
10 مارس 2026 بواسطة
فهم نموذج المنتج: معمارية متغيرات المنتجات في أودو
Dasolo
لا توجد تعليقات بعد

مقدمة


في Odoo، تحدد النماذج كيفية هيكلة البيانات وتخزينها في قاعدة البيانات. كل قطعة من بيانات الأعمال التي تعمل معها، من طلبات المبيعات إلى المخزون إلى المنتجات، تعيش في نموذج.


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


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

ما هو نموذج المنتج.product


يمثل نموذج product.product المتغيرات الفعلية للمنتجات في Odoo. هذه هي العناصر الملموسة القابلة للبيع والشراء التي تظهر في أوامر المبيعات وأوامر الشراء وحركات المخزون.


هذا النموذج في Odoo يختلف عن product.template. يحتفظ القالب بالسمات المشتركة لعائلة المنتجات. سجلات product.product هي المتغيرات المحددة. بالنسبة للمنتج البسيط الذي لا يحتوي على متغيرات، يوجد منتج.product واحد لكل product.template. بالنسبة للمنتجات القابلة للتكوين (مثل تي شيرت بحجم ولون)، كل مجموعة هي منتج.product منفصل.


يتم تعريف النموذج في وحدة المنتج (product). تشير المبيعات والشراء والمخزون والتجارة الإلكترونية جميعها إلى product.product. عندما تضيف سطرًا إلى عرض الأسعار أو تستلم المخزون، تعمل مع سجلات product.product.


يستخدم product.product وراثة التفويض من product.template. يتم تعريف العديد من حقول Odoo على القالب ويتم وراثتها بواسطة المتغير. هذا يحافظ على البيانات المشتركة في مكان واحد مع السماح بتجاوزات محددة للمتغير.

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


إليك أهم حقول Odoo في نموذج product.product. سيساعدك فهم هذه الحقول على العمل بفعالية مع متغيرات المنتجات.


1. الاسم

النوع: Char. يخزن هذا الحقل اسم متغير المنتج. يتم عرضه عادةً في القوائم والنماذج والمستندات. بالنسبة للمنتجات البسيطة، يتطابق مع اسم القالب. بالنسبة للمتغيرات، قد يتضمن قيم السمات (مثل "تي شيرت - أزرق / م").


2. product_tmpl_id

النوع: Many2one (product.template). يربط المتغير بالقالب الأب. هذه هي العلاقة الأساسية. ينتمي كل product.product بالضبط إلى product.template واحد. استخدم هذا عندما تحتاج إلى وراثة النموذج في Odoo أو توسيع منطق المنتج.


3. default_code

النوع: Char. مرجع داخلي أو SKU. يستخدم للتعريف، بحث الباركود، والتكامل مع الأنظمة الخارجية. يمكن أن يكون لكل متغير رمز خاص به.


4. الباركود

النوع: حرف. رمز الشريط (EAN، UPC، إلخ). يُستخدم للمسح في نقاط البيع، والمخازن، والجرد. يجب أن يكون فريدًا عبر المنتجات عند تعيينه.


5. تاريخ الإنشاء

النوع: تاريخ ووقت. يخزن التاريخ والوقت عندما تم إنشاء السجل. يتم إدارته تلقائيًا بواسطة Odoo. مفيد للتقارير والتدقيق.


6. تاريخ التعديل

النوع: تاريخ ووقت. يخزن التاريخ والوقت لآخر تعديل. يتم إدارته أيضًا تلقائيًا. يساعد في تتبع متى تم تحديث البيانات آخر مرة.


7. نشط

النوع: منطقي. علامة الحذف الناعم. عندما تكون القيمة خاطئة، يتم أرشفة السجل وإخفاؤه عن العروض الافتراضية. لا يتم حذف المنتجات فعليًا للحفاظ على التاريخ.


8. النوع

النوع: اختيار. نوع المنتج: استهلاكي، خدمة، أو منتج قابل للتخزين. لا يتم تتبع المستهلكات في المخزون. الخدمات ليس لديها مخزون. يتم تتبع المنتجات القابلة للتخزين في المخزون. هذا يحدد أي الوحدات وسير العمل تنطبق.


9. معرف الفئة

النوع: Many2one (product.category). فئة المنتج. تُستخدم للتقارير، وقواعد التسعير، وتنظيم الكتالوج. يمكن أن تحتوي الفئات على تسلسل هرمي من الأب إلى الابن.


10. سعر القائمة

النوع: عدد عشري. سعر البيع. يتم عرضه في الاقتباسات ويستخدم كافتراضي عند إضافة سطر. يمكن تغييره لكل عميل أو بواسطة قوائم الأسعار.


11. standard_price

النوع: عدد عشري. سعر التكلفة. يستخدم لتقييم المخزون وحساب الهوامش. يتم تحديثه عادةً بواسطة أوامر الشراء أو الإدخال اليدوي.


12. uom_id

النوع: Many2one (uom.uom). وحدة القياس للمبيعات والمخزون. تحدد كيفية التعبير عن الكميات (وحدات، كجم، لترات، إلخ).


13. uom_po_id

النوع: Many2one (uom.uom). وحدة القياس للمشتريات. قد تختلف عن uom_id (على سبيل المثال، الشراء بالصناديق، والبيع بالوحدات). يتم التعامل مع التحويل تلقائيًا.


14. description_sale

النوع: Html. وصف المبيعات. يظهر في الاقتباسات، الطلبات، والفواتير. يمكن أن يتضمن تنسيق وتفاصيل المنتج.


15. description_purchase

النوع: Html. وصف الشراء. يظهر في أوامر الشراء وفواتير الموردين. يستخدم للتواصل الداخلي ومع الموردين.


16. sale_ok

النوع: بولياني. يمكن بيعه. عندما يكون خطأ، يتم إخفاء المنتج عن المبيعات والتجارة الإلكترونية. مفيد للعناصر الداخلية أو العناصر التي يمكن شراؤها فقط.


17. purchase_ok

النوع: بولياني. يمكن شراؤه. عندما يكون خطأ، يتم إخفاء المنتج عن الشراء. مفيد للعناصر المصنعة أو العناصر التي يمكن بيعها فقط.


18. image_1920

النوع: ثنائي. صورة المنتج بدقة كاملة. يقوم أودو بتخزين أحجام متعددة (image_512، image_256، إلخ) للعرض. تُستخدم في النماذج، التجارة الإلكترونية، والتقارير.


19. الوزن

النوع: عائم. وزن المنتج. يُستخدم لحسابات الشحن واللوجستيات. الوحدة تعتمد على تكوين الشركة.


20. الحجم

النوع: عائم. حجم المنتج. يُستخدم للشحن وسعة المستودع. مهم للشركات التي لديها قيود حجم.


21. company_id

النوع: Many2one (res.company). في إعدادات الشركات المتعددة، يشير هذا إلى الشركة التي تمتلك المنتج. يؤثر على رؤية السجلات والمخزون.


22. currency_id

النوع: Many2one (res.currency). العملة لسعر القائمة والسعر القياسي. عادة ما تكون عملة الشركة. يمكن لقوائم الأسعار التحويل إلى عملات أخرى.


23. qty_available

النوع: Float. الكمية المتاحة. يتم حسابها من الكميات المخزنة. للقراءة فقط. تُستخدم لفحوصات التوفر والتقارير. فقط للمنتجات القابلة للتخزين.


24. virtual_available

النوع: Float. الكمية المتوقعة (المتاحة بالإضافة إلى الواردات ناقص الصادرات). تُستخدم للتوفر وإعادة التوريد. حقل محسوب للقراءة فقط.


25. product_template_attribute_value_ids

النوع: Many2many. روابط لقيم السمات التي تحدد هذه النسخة (مثل: اللون=أزرق، الحجم=M). تُستخدم لتكوين النسخ والتصفية.


26. sequence

النوع: Integer. ترتيب العرض. تُستخدم لفرز المنتجات في القوائم والمكونين. القيم الأقل تظهر أولاً.


27. display_name

النوع: Char. اسم العرض المحسوب. يجمع بين الاسم مع سمات النسخة. يُستخدم في قوائم الاختيار many2one ونتائج البحث. للقراءة فقط.


28. responsible_id

النوع: Many2one (res.users). الشخص المسؤول عن المنتج. يُستخدم لقواعد إعادة الطلب والتعيين الداخلي. اختياري.

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


1. المبيعات والعروض

عندما يقوم مندوب المبيعات بإنشاء عرض، يختار منتجًا من كتالوج product.product. تنتقل قائمة الأسعار، ووصف البيع، ومعرف وحدة القياس إلى خط الطلب. يمكن أن تتجاوز قوائم الأسعار السعر. تظهر فقط المنتجات التي تحتوي على sale_ok=True.


2. الشراء والبائعون

تشير أوامر الشراء وفواتير البائعين إلى product.product. يتم تحديث السعر القياسي من تكاليف الشراء. المنتجات التي تحتوي على purchase_ok=True متاحة. يحدد uom_po_id كيفية طلب الكميات (مثلًا، حسب الصندوق).


3. المخزون والمخازن

تستخدم حركات المخزون، والاختيارات، والكميات جميعها product.product. تحدد حقول qty_available وvirtual_available التوفر. يتم تتبع المنتجات القابلة للتخزين فقط. يستخدم مسح الباركود حقل الباركود للبحث السريع.


4. التجارة الإلكترونية والموقع الإلكتروني

يعرض متجر الموقع سجلات product.product. تُظهر المتغيرات ذات الخصائص المختلفة (الحجم، اللون) كخيارات. تأتي صور المنتجات، والأوصاف، والأسعار من النموذج. يتحكم علم sale_ok في الرؤية.


5. التصنيع وإدارة موارد التصنيع

تشير فواتير المواد إلى product.product لكل من المكونات والسلع النهائية. يحدد حقل النوع ما إذا كان المنتج مُصنعًا (قابل للتخزين) أو مُستهلكًا. تدفع مستويات المخزون تخطيط الإنتاج.

كيف يقوم المطورون بتمديد هذا النموذج


يقوم المطورون بتوسيع product.product باستخدام عدة أنماط. يعتبر وراثة نموذج Odoo الآلية الرئيسية.


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

استخدم _inherit = 'product.product' لتوسيع النموذج. أضف حقول Odoo جديدة، أو تجاوز الطرق، أو أضف قيود. يحتفظ نموذج الوراثة في Odoo بتغييراتك في وحدة منفصلة لتسهيل التحديثات. اختر product.product عندما يكون الحقل محددًا للمتغير؛ استخدم product.template عندما ينطبق على عائلة المنتجات بأكملها.


إضافة الحقول

حدد حقول Odoo جديدة في نموذجك الموروث. استخدم نوع الحقل الصحيح: Char، Many2one، Boolean، Integer، Text، Selection. ضع في اعتبارك ما إذا كان الحقل ينتمي إلى القالب (مشترك) أو المتغير (محدد). بالنسبة للبيانات المحددة للمتغير مثل SKU أو تجاوزات الباركود، استخدم product.product.


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

تجاوز create، write، أو unlink لإضافة منطق. استخدم super() لاستدعاء الأصل. كن حذرًا مع الحقول المحسوبة واعتمادياتها. يحتوي نموذج product.product على العديد من الحقول المحسوبة من وحدات المخزون والمبيعات.


استوديو Odoo

يتيح لك استوديو Odoo إضافة الحقول بدون كود. جيد للتخصيصات السريعة. بالنسبة للمنطق المعقد أو التحديثات، فإن الوحدات المخصصة أكثر قابلية للصيانة. يتم عرض نموذج API في Odoo (product.product) بالكامل عبر XML-RPC و JSON-RPC للتكاملات.

أفضل الممارسات


  • استخدم default_code أو barcode لتخطيط النظام الخارجي. احتفظ بها فريدة ومتسقة.
  • حدد النوع بشكل صحيح لكل منتج. يؤثر الاستهلاكي مقابل القابل للتخزين مقابل الخدمة على الوحدات وعمليات العمل التي تنطبق.
  • عند بناء تكاملات API، استخدم product.product لخطوط الطلبات والمعاملات. استخدم product.template لعمليات مستوى الكتالوج.
  • بالنسبة للحقول المخصصة، استخدم بادئة x_ أو بادئة وحدة لتجنب التعارضات مع إصدارات Odoo المستقبلية.
  • اعتبر product.template عند إضافة الحقول التي تنطبق على جميع المتغيرات (مثل العلامة التجارية، الفئة). استخدم product.product لبيانات محددة لكل متغير (مثل الرمز الشريطي المحدد للمتغير).

الأخطاء الشائعة


  • الوراثة من product.template عندما تحتاج إلى منطق محدد للمتغير. استخدم product.product للسلوك المحدد لكل متغير.
  • إنشاء سجلات product.product يدويًا بدلاً من خلال القالب. بالنسبة للمنتجات المتغيرة، قم بإنشائها عبر مُهيئ المنتج.
  • نسيان تعيين sale_ok أو purchase_ok. يتم إخفاء المنتجات عن المبيعات/الشراء بشكل افتراضي في بعض التكوينات.
  • تجاوز الطرق الأساسية دون استدعاء super(). يمكن أن يؤدي ذلك إلى كسر وحدات أخرى أو ترقيات مستقبلية.
  • استخدام product.product في المجالات عندما يكون من الأنسب استخدام product.template (مثل التصفية حسب الفئة على القالب).

الخاتمة


نموذج product.product هو المركز الأساسي لهيكل المنتج في Odoo. إنه يمثل العناصر القابلة للبيع والشراء الفعلية. سيساعدك فهم حقوله وكيفية ارتباطه بـ product.template في تكوين Odoo وتخصيصه ودمجه بشكل فعال.


سواء كنت مستشارًا وظيفيًا يقوم برسم خرائط كتالوجات المنتجات أو مطورًا يقوم ببناء وحدات مخصصة، فإن فهمًا قويًا لـ product.product سيوفر الوقت ويمنع الأخطاء.

هل تحتاج مساعدة في تنفيذ Odoo؟


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


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

فهم نموذج المنتج: معمارية متغيرات المنتجات في أودو
Dasolo 10 مارس 2026
شارك هذا المنشور
تسجيل الدخول حتى تترك تعليقاً