
يصل كل مشروع Odoo في نهاية المطاف إلى السؤال نفسه: التدفق القياسي قريب مما تريده الشركة، لكنه ليس مطابقًا تمامًا. فهل تغيّر إعدادًا، أم تفتح Odoo Studio، أم تطلب من مطور كتابة وحدة مخصصة؟ للإجابة عواقب طويلة الأمد على التكلفة والاستقرار، وقبل كل شيء على الترقيات.
في 1CBMS نتبع قاعدة بسيطة في كل مشروع تطبيق: الإعدادات أولًا، ثم Studio، ثم الوحدات المخصصة. فكل درجة تنزلها على هذا السلّم تضيف مرونة، لكنها تضيف أيضًا شيئًا يجب على الشركة امتلاكه وصيانته طوال عمر النظام.
ملاحظة حول المصادر: يستند هذا المقال إلى وثائق Odoo الرسمية للإصدار 19.0. وقد تختلف القوائم والخيارات بين الإصدارات والطبعات وأنواع الاستضافة، لذا تحقق دائمًا من السلوك في قاعدة بيانات تجريبية قبل تغيير بيئة الإنتاج.
الطبقة الأولى: الإعدادات قبل أي شيء آخر
يأتي Odoo بعدد كبير من الإعدادات والخيارات والسجلات القابلة للتهيئة في كل تطبيق. وكثير من الطلبات التي تبدو تخصيصات هي في الواقع ميزات قياسية لم تُفعَّل بعد، مثل خطوات إضافية في سير العمل، أو تخطيطات المستندات، أو حقول اختيارية تظهر بمجرد تفعيل ميزة ما.
قبل كتابة أي مواصفات لـ Studio أو للكود، راجع مع المستخدمين الرئيسيين للعملية الفحوص التالية:
- راجع صفحة الإعدادات لكل تطبيق معني واقرأ ما يفعّله كل خيار.
- تحقق مما إذا كان المتطلب تغطيه سجلات قابلة للتهيئة مثل المراحل أو الوسوم أو الفرق أو أنواع العمليات أو قوالب البريد الإلكتروني.
- استخدم إعدادات تخطيط مستندات الشركة للشعارات والألوان والخطوط والتذييلات بدلًا من تعديل قوالب التقارير.
- اسأل عما إذا كانت الشركة تستطيع تكييف عمليتها مع التدفق القياسي، لأن التدفقات القياسية تختبرها Odoo وتتولى ترقيتها.
الإعدادات هي أقل الطبقات تكلفة في الامتلاك. فهي جزء من المنتج القياسي، وتنتقل مع عملية الترقية، ولا تُنشئ قاعدة أكواد منفصلة يتعين على أحد صيانتها.
الطبقة الثانية: ما يستطيع Odoo Studio فعله
تصف وثائق Odoo تطبيق Studio بأنه مجموعة أدوات تُستخدم لتخصيص Odoo دون الحاجة إلى معرفة برمجية. ويُفتح بأيقونة تبديل Studio أثناء وجودك في التطبيق والنموذج اللذين تريد تغييرهما، ويُغلق بزر الإغلاق.
وفقًا للوثائق الرسمية، يغطي Studio المجالات التالية:
- الحقول: الحقول البسيطة مثل النص والعدد الصحيح والعدد العشري والمبلغ النقدي والتاريخ ومربع الاختيار وقائمة الاختيار والملف والصورة، والحقول العلائقية مثل Many2One وOne2Many والبنود وMany2Many والوسوم والحقول المرتبطة.
- طرق العرض: عرض النموذج والأنشطة والبحث وكانبان والقائمة والخريطة والتقويم والمجموعات (cohort) وجانت والجدول المحوري والرسم البياني.
- النماذج والتطبيقات: نماذج جديدة تُبنى من الصفر، مع ميزات مقترحة مثل سجل الرسائل ومراحل المسار والوسوم والأرشفة والبنود لتسريع الإنشاء.
- قواعد الأتمتة: مشغّلات تعتمد على تحديث القيم، وأحداث البريد الإلكتروني، والشروط الزمنية، وإنشاء السجلات أو حذفها، وتغييرات واجهة المستخدم، وخطافات الويب (webhooks) الخارجية.
- قواعد الاعتماد: خطوات موافقة مرتبطة بالأزرار، مع تحديد المعتمِدين كمستخدمين أو مجموعات أو كليهما. ويغطي Studio أيضًا خطافات الويب وقواعد الأمان.
- تقارير PDF: تعديل النصوص الثابتة، وإدراج الحقول الديناميكية والجداول والأعمدة والصور في قوالب التقارير؛ مع ملاحظة أن تعديل ترويسة التقرير أو تذييله يؤثر على جميع التقارير.
عندما تغيّر طريقة عرض بالسحب والإفلات، يُنشئ Studio طريقة العرض الموروثة المناسبة وتعبير XPath تلقائيًا بدلًا من الكتابة فوق طريقة العرض القياسية. وتُجمَّع كل أعمال Studio في وحدة باسم studio_customization داخل قاعدة بياناتك، ويمكن تصديرها كملف ZIP واستيرادها إلى قاعدة بيانات أخرى.
Studio تطبيق من تطبيقات Odoo Enterprise. وتشير الصفحة الرسمية أيضًا إلى أن تثبيت Studio على قاعدة بيانات مشتركة في الخطة القياسية يؤدي إلى الترقية إلى الخطة المخصصة، لذا تحقق من الأثر التجاري مع مدير حسابك لدى Odoo قبل تفعيله. ولا تتضمن قواعد بيانات Community تطبيق Studio؛ وفيها يُنفَّذ أي شيء يتجاوز الإعدادات من خلال الإعدادات التقنية في وضع المطور أو من خلال الوحدات.
تتمة الطبقة الثانية: حدود Studio
Studio أداة قوية، لكن الوثائق نفسها تشير إلى عدة حدود ومخاطر ينبغي لكل مشروع مراعاتها:
- لا يمكن تغيير الاسم التقني للحقل في Studio بعد إنشائه، ويجب أن تحتفظ الحقول المخصصة على الأقل بالبادئة x_، بينما تستخدم حقول Studio البادئة x_studio_.
- لا يمكن تغيير عرض الأنشطة والكتل الشرطية في التقارير إلا بتعديل XML، وهو ما يتطلب وضع المطور.
- لا يُنصح بتعديل طرق العرض القياسية أو الموروثة مباشرة، لأن تلك التغييرات ستُعاد إلى وضعها الأصلي وتُفقد أثناء التحديثات أو ترقيات الوحدات.
- توصي Odoo بشدة بنسخ التقرير القياسي وتعديل النسخة، وتحذر من أن تعديل XML الخاص بالتقرير مباشرة قد يسبب مشكلات أثناء الترقيات.
- إجراء تنفيذ الكود في قواعد الأتمتة يشغّل كود Python، وتنص الوثائق على أن صيانة الكود المخصص غير مشمولة في الخطتين القياسية والمخصصة وتترتب عليها رسوم إضافية.
- ينبغي تصميم خطافات الويب بالتعاون مع مطور أو شخص في دور تقني، لأن خطافات الويب المهيأة بشكل غير سليم قد تعطّل قاعدة البيانات.
- لا يمكن استيراد تخصيصات Studio المصدَّرة إلا إلى قاعدة بيانات على إصدار Odoo نفسه وبالتطبيقات والوحدات نفسها مثبتة.
عمليًا، Studio مثالي لإدخال البيانات والتخطيط والأتمتة البسيطة والاعتمادات. ويصبح محفوفًا بالمخاطر عندما يُستخدم لإخفاء برمجة حقيقية داخل تعديلات XML أو إجراءات تنفيذ الكود التي لا يوثقها أحد.
الطبقة الثالثة: متى تكون وحدة Python المخصصة مبررة
الوحدة المخصصة قاعدة أكواد منفصلة توسّع Odoo من خلال النماذج وطرق العرض والأمان وملفات البيانات ومنطق Python، وتُبنى بإطار العمل نفسه الذي يستخدمه Odoo لتطبيقاته. وهي الأداة الصحيحة عندما يتجاوز المتطلب ما تستطيع الإعدادات وStudio التعبير عنه بشكل سليم.
من الحالات النموذجية التي نوصي فيها بوحدة مخصصة:
- قواعد العمل أو الحسابات أو القيود المعقدة التي تحتاج إلى اختبارات آلية وإدارة للإصدارات.
- التكاملات مع الأنظمة الخارجية التي تتطلب معالجة قوية للأخطاء وإعادة المحاولة والتسجيل.
- التغييرات على منطق العمل القياسي، مثل طريقة المصادقة على المستندات أو طريقة حساب القيم، وليس مجرد طريقة عرضها.
الاستضافة مهمة هنا. إذ تنص الوثائق الرسمية على أن Odoo Online لا يتوافق مع الوحدات المخصصة أو الوحدات المتاحة في متجر تطبيقات Odoo. فالوحدات المخصصة تتطلب Odoo.sh أو تثبيتًا محليًا، لذا يجب اتخاذ قرار الاستضافة واستراتيجية التخصيص معًا.
أثر كل خيار على الترقية
- الإعدادات: جزء من المنتج القياسي وتُنقل بعملية الترقية القياسية.
- Studio: تشمل خدمات الترقية الموضحة في وثائق Odoo ترقية جميع التخصيصات المنشأة بتطبيق Studio، ما دام Studio مثبتًا واشتراكه ساريًا.
- الوحدات المخصصة: لا يمكن ترقية قاعدة بيانات تحتوي على وحدات مخصصة حتى يتوفر إصدار من تلك الوحدات لإصدار Odoo المستهدف، وجعلها متوافقة مسؤولية الجهة التي تتولى صيانة الوحدة.
يوصي دليل Odoo لترقية قاعدة بيانات مخصصة بتجميد التطوير، والتحقق من الميزات المخصصة التي أصبحت متوفرة أصلًا في النظام، والتأكد من أن كل وحدة تُثبَّت دون أخطاء على قاعدة بيانات فارغة من الإصدار المستهدف، وكتابة نصوص الترقية للنماذج والحقول والمعرّفات الخارجية التي أُعيدت تسميتها، وإجراء تجربة للترقية قبل المساس ببيئة الإنتاج.
أيًّا كانت الطبقة، اختبر قاعدة البيانات المُرقّاة بدقة. إذ تنصح الوثائق باختبار تدفقات العمل من البداية إلى النهاية، بما في ذلك التكاملات والإجراءات الآلية وإجراءات الخادم والتقارير، وتذكّرك بأن قواعد البيانات التجريبية مُحيَّدة، مع تعطيل الإجراءات المجدولة والبريد الإلكتروني الصادر.
الحوكمة: إبقاء التخصيصات تحت السيطرة
نادرًا ما تفشل التخصيصات في يومها الأول. بل تفشل بعد سنوات، حين لا يتذكر أحد سبب وجود حقل ما أو من كتب قاعدة أتمتة معينة. ونموذج حوكمة خفيف يمنع ذلك.
- احتفظ بسجل للتخصيصات يسرد كل حقل في Studio وكل تغيير في طرق العرض وكل قاعدة أتمتة وكل قاعدة اعتماد وكل تقرير وكل وحدة مخصصة، مع المسؤول عنها والسبب العملي لوجودها.
- نفّذ كل التغييرات في قاعدة بيانات تجريبية أو مرحلية أولًا، ثم انقلها إلى بيئة الإنتاج عبر عملية مضبوطة.
- اقصر استخدام Studio ووضع المطور على مسؤولين مدرَّبين؛ فالوثائق نفسها تحذر من أن بعض أدوات المطور متقدمة وتنطوي على مخاطر.
- راجع السجل قبل كل ترقية، واستغنِ عن التخصيصات التي يغطيها الإصدار الجديد أصلًا.
- احفظ كود الوحدات المخصصة في نظام لإدارة الإصدارات مع الاختبارات، وتأكد من وجود ترتيب لصيانته.

مصفوفة قرار يمكنك تطبيقها في ورش العمل
عندما يظهر متطلب جديد، نمر على هذه الأسئلة بالترتيب ونتوقف عند أول طبقة تلبيه.
- هل يمكن لإعداد قياسي أو سجل قابل للتهيئة أو تغيير في العملية تلبية الحاجة؟ استخدم الإعدادات.
- هل هو حقل جديد، أو تغيير في تخطيط طريقة عرض، أو أتمتة بسيطة، أو خطوة اعتماد، أو تغيير في صياغة تقرير؟ استخدم Studio.
- هل يحتاج إلى منطق Python، أو اختبارات آلية، أو تكامل معقد، أو إعادة استخدام عبر عدة قواعد بيانات؟ استخدم وحدة مخصصة.
- هل قاعدة البيانات على Odoo Online؟ التزم بالإعدادات وStudio، أو خطط أولًا للانتقال إلى Odoo.sh أو الاستضافة المحلية.
كيف يمكن أن تساعدك 1CBMS
تساعد 1CBMS الشركات في مصر والعراق على تصميم حلول Odoo 19 Enterprise تبقى قريبة من النظام القياسي. فنحن نعقد ورش عمل لتحليل الملاءمة والفجوات لفصل ما تكفيه الإعدادات عن الفجوات الحقيقية، ونبني تخصيصات Studio منضبطة، ونطوّر الوحدات المخصصة ونتولى صيانتها عند الحاجة الفعلية إليها، ونُعد سجلات التخصيصات وخطط اختبار الترقية حتى يبقى نظامك قابلًا للصيانة. تواصل معنا عبر www.1cbms.com لمراجعة تخصيصاتك الحالية أو التخطيط لمشروع تطبيق جديد.