مقدمة
في 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، أو تطوير وحدات مخصّصة، أو ربط أنظمة خارجية، يسعدنا تقديم المساعدة. احجز عرضًا توضيحيًا لمناقشة مشروعك.