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

نموذج project.project: فهم بنية مشروع Odoo

دليل شامل لفهم نموذج المشاريع في أودو للمطورين والمستشارين الوظيفيين هذا الدليل يهدف لأن يكون مرجعاً عملياً لكل من يبني ويضبط وحدات إدارة المشاريع في أودو — سواء كنت مبرمجاً تبني منطقاً مخصصاً وواجهات جديدة، أو مستشاراً وظيفياً تهيئ سير العمل وتربط المتطلبات التجارية بنظام جاهز. ستجد هنا شرحاً مبسطاً للمفاهيم الأساسية مثل نموذج المشروع، المتحكمات الأساسية، علاقات البيانات، والحالات الشائعة التي تحتاج معالجة عند تخصيص أو توسيع وظائف المشاريع. نغطي أيضاً أفضل الممارسات لهيكلة النماذج والحقول، التعامل مع المهام والمرحلة (stages)، إدارة التبعيات والوقت، ودمج المشروع مع حسابات الوقت، الفواتير والتقارير. كما نسلط الضوء على النقاط الحرجة عند الكتابة أو تعديل قواعد العمل (business logic) وواجهات المستخدم، مع نصائح للاختبار والتوثيق لضمان استقرار التخصيص عبر التحديثات. سواء كنت تشرع في بناء وحدة مشروع جديدة أو تبني تعديلات على الوحدة الافتراضية، هذا الدليل سيمنحك خريطة طريق واضحة: من تصميم النموذج وكتابة الحقول والعلاقات، إلى معالجة الوصول والصلاحيات، والربط مع وحدات أخرى داخل أودو. نهاية الدليل تحتوي على قائمة مراجع سريعة وأمثلة رمز لبدء التطوير والتخصيص بثقة.
11 مارس 2026 بواسطة
نموذج project.project: فهم بنية مشروع Odoo
Dasolo
لا توجد تعليقات بعد

مقدمة


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


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


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

ما هو نموذج project.project


نموذج project.project يعبّر عن المشروع كمكوّن متكامل داخل النظام. هو الحاوية التي تُجمّع تحتها المهام والمعالم وأعضاء الفريق والإعدادات الخاصة بالمشروع.


تُستخدم هذه البنية أساسًا من قِبل تطبيق Project في Odoo. عند إنشاء مشروع جديد، يُنشأ سجل project.project يرتبط به لاحقًا كل عمل مرتبط بالمشروع مثل المهام وخرائط الطريق وقوائم المتابعين.


تعريف النموذج موجود داخل وحدة project الأساسية، لكن وحدات أخرى تضيف إليه عبر آلية الوراثة في Odoo. على سبيل المثال: وحدة المبيعات تضيف ربطًا بالفواتير حسب المشروع، ووحدة تسجيل الوقت تضيف مسجلات الزمن، وأدوات التخطيط تضيف جداول غانت. بهذه الطريقة يُحافظ على بنية مركزية بينما تُثريها الإضافات.


فهم علاقة project.project بسجل project.task أمر محوري: المشروع يضم الإعدادات المشتركة والبنية التنظيمية، بينما تُعالج المهام عناصر العمل الفردية. توازنهما هو ما يشكّل سير عمل إدارة المشاريع في Odoo.

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


فيما يلي أهم الحقول في نموذج project.project التي ستحتاج معرفتها للعمل اليومي والإداري والتطويري.


1. name

نوع: نص قصير (Char). يخزن اسم المشروع ويُعرض في القوائم والشاشات كمعرّف أساسي للمشروع.


2. create_date

نوع: تاريخ-وقت (Datetime). تاريخ ووقت إنشاء السجل، يُدار تلقائيًا ويُستخدم للتقارير والتدقيق.


3. write_date

نوع: تاريخ-وقت (Datetime). آخر توقيت تعديل للسجل، مفيد لقياس تحديثات البيانات والتدقيق.


4. active

نوع: منطقي (Boolean). علم الأرشفة: عند جعله False يُخبأ المشروع من العروض الافتراضية دون حذفه فعليًا.


5. sequence

نوع: عدد صحيح (Integer). يحدد ترتيب العرض في القوائم والاختيارات؛ القيم الأصغر تظهر أولًا.


6. color

نوع: عدد صحيح (Integer). مؤشر لون يُستخدم في اللوحات والكانبان لتمييز المشاريع بصريًا.


7. user_id

نوع: Many2one (res.users). مدير المشروع؛ المستخدم المسؤول والذي يظهر غالبًا كمكلّف افتراضي.


8. company_id

نوع: Many2one (res.company). في بيئات الشركات المتعددة يحدّد الشركة التابعة لها المشروع.


9. partner_id

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


10. description

نوع: Html. وصف تفصيلي للمشروع يمكن أن يحتوي تنسيق HTML لشرح موجز المشروع أو ملاحظاته.


11. date_start

نوع: تاريخ (Date). تاريخ بدء المشروع ويُستخدم للتخطيط وإعداد الجداول.


12. date

نوع: تاريخ (Date). تاريخ انتهاء أو مهلة المشروع؛ معيار لمتابعة الالتزام بالمواعيد.


13. task_ids

نوع: One2many (project.task). قائمة المهام المرتبطة بالمشروع؛ العلاقة الأساسية بين المشروع والمهام.


14. task_count

نوع: عدد صحيح (Integer). عدد المهام محسوب من task_ids ومفيد لعرض ملخص سريع وتصفيتها.


15. type_ids

نوع: Many2many (project.task.type). مراحل أو أنواع المهام الخاصة بالمشروع، تُعرّف مسار العمل (مثل: جديد، قيد التنفيذ، مكتمل).


16. tag_ids

نوع: Many2many (project.tags). وسوم لتنظيم المشاريع وتصفيتها حسب التصنيفات.


17. privacy_visibility

نوع: اختيار (Selection). يتحكم بمن يستطيع الوصول للمشروع: خاص بالمستخدمين المدعوين، أو جميع المستخدمين الداخليين، أو شامل للبوابة والموظفين.


18. collaborator_ids

نوع: One2many (project.collaborator). أعضاء الفريق المشاركين في المشروع وصلاحياتهم.


19. favorite_user_ids

نوع: Many2many (res.users). المستخدمون الذين علّموا المشروع كمفضل لسهولة الوصول.


20. allow_task_dependencies

نوع: منطقي (Boolean). تمكين اعتماديات المهام (سابقة/لاحقة) للمخططات الزمنية والتخطيط.


21. allow_milestones

نوع: منطقي (Boolean). تفعيل المعالم (Milestones) لتمييز نتائج أو تسليمات رئيسية.


22. milestone_ids

نوع: One2many (project.milestone). قائمة المعالم داخل المشروع لتتبع التسليمات المهمة.


23. rating_active

نوع: منطقي (Boolean). تمكين تقييم العملاء للمشروع كجزء من ردود الفعل.


24. task_properties_definition

نوع: نص (JSON). تعريف خصائص مخصصة للمهام داخل المشروع، يُستخدم لإضافة حقول مرنة على مستوى المشروع.


25. access_url

نوع: نص (Char). رابط دخول العميل عبر بوابة المشروع للتعاون ومراجعة المهام.


26. access_token

نوع: نص (Char). رمز أمني للموافقة على الوصول عبر الرابط لضمان الخصوصية.


27. alias_id

نوع: Many2one (mail.alias). عنوان بريد مرتبط بالمشروع؛ الرسائل الواردة منه قد تُنشئ مهام تلقائيًا.


28. activity_ids

نوع: One2many (mail.activity). الأنشطة المجدولة على مستوى المشروع للمتابعة والتذكير.


29. activity_state

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


30. activity_date_deadline

نوع: تاريخ (Date). تاريخ أقرب نشاط مجدول لتخطيط المتابعات.


31. message_ids

نوع: One2many (mail.message). رسائل الشات والشاترب الداخلية للمشروع للتواصل بين الفريق.


32. message_follower_ids

نوع: One2many (mail.followers). المتابعون للمشروع الذين يستقبلون الإشعارات.


33. create_uid

نوع: Many2one (res.users). المستخدم الذي أنشأ السجل تلقائيًا.


34. write_uid

نوع: Many2one (res.users). آخر مستخدم عدّل السجل، يتم ضبطه تلقائيًا.

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


1. إنشاء وإدارة المشاريع

عند إنشاء المشروع يحدد المدير أو مندوب المبيعات الاسم، مدير المشروع، التواريخ وإعدادات الخصوصية؛ هذه المعلومات تُحفظ في سجل project.project ثم تُربط المهام والموارد بهذا السجل.


2. سير عمل المهام

تنتقل المهام عبر المراحل المحددة في type_ids، ويُكلف المدير المهام للمتعاونين داخل المشروع؛ إعدادات المشروع توحد قواعد الانتقال والتفويض.


3. بوابة العملاء

إذا أُتيح الوصول عبر الخصوصية، يمكن للعميل متابعة المهام والمعالم عبر الرابط الخاص access_url مع رمز الأمان access_token الذي يحمي الوصول.


4. الساعات والفوترة

عند تفعيل وحدة تسجيل الوقت ترتبط سجلات الوقت بالمشروع، ومع وحدة المبيعات يمكن ربط المشروع بعروض وفواتير لاحتساب العمل القائم حسب العميل (partner_id).


5. تكامل البريد الإلكتروني

إعداد alias للمشروع يسمح بإنشاء مهام أو رسائل تلقائيًا من الرسائل الواردة، مما يسرّع تحويل المراسلات إلى عناصر عمل.

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


يمتدّ المطورون على project.project بعدة طرق، والوراثة النموذجية في Odoo هي الآلية الأساسية لذلك.


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

عبر ضبط _inherit = 'project.project' تُضيف لحقول وسلوكيات النموذج. بهذه الطريقة تضيف حقولًا جديدة أو تعدّل دوال بدون تغيير الشيفرة الأصلية، ما يسهل التحديثات والصيانة.


إضافة حقول

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


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

يمكنك تجاوز دوال مثل create، write، unlink لإدخال منطق مخصّص مع استدعاء super() للحفاظ على السلوك الأساسي؛ انتبه لحقول محسوبة واعتمادياتها لتفادي أخطاء في الحساب.


Odoo Studio

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

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


  • عيّن user_id بوضوح لتحديد مالك المشروع؛ الوضوح يعزّز المساءلة وتتبع المسؤوليات.
  • ضبط type_ids لكل مشروع بحيث تعكس مراحل العمل الحقيقية في شركتك لتسلسل المهام بوضوح.
  • استخدم privacy_visibility بشكل صحيح: المشاريع الخاصة ينبغي تقييدها بالمستخدمين المدعوين فقط.
  • عند بناء تكاملات عبر API استخدم XML-RPC أو JSON-RPC المتاحين في Odoo؛ نموذج project.project مكشوف عبر واجهة الـ API فاحرص على مطابقة المعرفات الخارجية بدقة.
  • لحقول مخصصة استخدم بادئة x_ أو بادئة خاصة بالموديل/الشركة لتجنّب تعارضات مع إصدارات Odoo القادمة.

أخطاء شائعة


  • إنشاء مهام دون ربطها بمشروع. كل مهمة يجب أن تحتوي على project_id صحيح.
  • نسيان تحديد type_ids عند إنشاء مشاريع جديدة قد يترك المشروع بلا مراحل، فيعطّل انتقال المهام داخل سير العمل.
  • جعل privacy_visibility عامًّا بدلاً من خاص قد يكشف بيانات حسّاسة لجهات غير مصرح لها.
  • كتابة تجاوزات على دوال أساسية دون استدعاء super() قد يكسر وظائف وحدات أخرى أو يصعّب الترقية.
  • إضافة حقول مخصصة مطلوبة بدون تقديم قيم افتراضية سيؤدي إلى فشل التحقق للسجلات القديمة عند الترقية.

خلاصة


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


سواءً كنت استشاريًا وظيفيًا ينفّذ مشاريع أو مطوّرًا يبني إضافات، سيختصر إتقان هذا النموذج وقتك ويقلّل فرص الوقوع في أخطاء تكوينية أو تطويرية.

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


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


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

نموذج project.project: فهم بنية مشروع Odoo
Dasolo 11 مارس 2026
شارك هذا المنشور
تسجيل الدخول حتى تترك تعليقاً