كل تخصيص توافق عليه في Odoo هو التزام تحمله معك. ليس بناءً واستخداماً فحسب، بل اختباراً وإصلاحاً ونقلاً إلى الأمام في كل مرة تنتقل فيها إلى إصدار أحدث. وهذا هو الجزء الذي تُخطئ معظم الفرق في تسعيره: البناء يُسعَّر مرة واحدة، أما تكلفة الحمل فتظهر بعد سنوات، في نافذة ترقية تستغرق ثلاثة أسابيع بدل ثلاثة أيام.
هذا ليس اعتراضاً على تخصيص Odoo، بل دعوة إلى معرفة ما يكلفك كل تغيير لاحقاً، حتى تقرر أي التغييرات يستحق فعلاً.
لماذا تزداد الترقيات صعوبة كلما تراكمت التخصيصات
عند صدور إصدار جديد من Odoo، تتكفل Odoo بنقل الوحدات القياسية: المبيعات والمخزون والمحاسبة ووحدات التوطين الرسمية تتحرك مع المنتج نفسه. أما الكود المخصص فلا. كل ما كُتب خصيصاً لعملك يحتاج إلى مراجعة مقابل الإصدار الجديد، وتعديل في كل موضع تغيّر فيه النموذج أو الواجهة الأساسية، ثم إعادة اختبار.
لذلك فإن حجم الترقية يتحدد أساساً بمقدار ما غيّرته وبعمق ذلك التغيير. نسخة نظيفة تعمل بـ Odoo القياسي مع الإعدادات فقط تعني مشروعاً قصيراً. والشركة نفسها ومعها أربعون سلوكاً مخصصاً موزعة على ست وحدات تعني مشروعاً مختلفاً تماماً، رغم أن كليهما يوصف بأنه «انتقال من إصدار إلى آخر».
ليست كل التخصيصات بالوزن نفسه
- الإعدادات: قوائم الأسعار، وقواعد الاعتماد، ومجموعات المستخدمين، وتنسيقات التقارير، وقوالب البريد. هذه تنتقل معك بتكلفة ترقية شبه معدومة، ويجب دائماً التأكد من أن الإعداد القياسي لا يحل المشكلة قبل أن يكتب أحد سطراً واحداً من الكود.
- الإضافات: حقل جديد، أو تقرير جديد، أو قائمة جديدة، أو نموذج يقف بجانب النماذج القياسية. مخاطرها منخفضة عادة لأنها تضيف إلى Odoo بدل أن تتدخل في داخله.
- تعديل السلوك: تغيير ما يحدث عند تأكيد أمر بيع، أو طريقة تقييم حركة مخزون. هذه تمسّ منطقاً تغيّره Odoo نفسها بين الإصدارات، فتحتاج إلى اختبار جدي في كل مرة.
- استبدال الدورات: عملية مخصصة بالكامل تحل محل عملية قياسية. أعلاها قيمة أحياناً، وأعلاها تكلفة حمل دائماً. تستحق حين تكون العملية ميزتك التنافسية الحقيقية، ويصعب تبريرها حين تكون موجودة فقط لأن أحداً لم يشرح الدورة القياسية للفريق.
الانضباط المفيد هو أن تعرف إلى أي فئة ينتمي الطلب قبل تنفيذه، لا بعده.
ما الذي تحسمه قبل البناء
ثلاثة أسئلة تُلغي من الكود المخصص غير الضروري أكثر مما تُلغيه أي مراجعة تقنية.
- هل يفعل Odoo القياسي هذا أصلاً بطريقة أخرى؟ الإجابة غالباً نعم، ويكون الطلب الحقيقي تدريباً لا تطويراً.
- من المستفيد، وكم مرة؟ تغيير يوفّر على شخص واحد عشر دقائق شهرياً لا يستحق أن تحمله عبر ثلاث ترقيات.
- هل يمكن تضييقه أكثر؟ الطلبات الفضفاضة تنتج كوداً فضفاضاً. «أتمتة المشتريات» عبء على الترقية القادمة، أما «إنشاء طلب شراء تلقائياً عند نزول مخزون هذه الأصناف الاثني عشر تحت حد إعادة الطلب» فتغيير قابل للصيانة.
ولهذا تحديداً يضع مسار العمل في Plemo المواصفة المكتوبة قبل التطوير لا بعده. تطرح المحادثة أسئلة توضيحية وتردّ الطلبات الأوسع من أن تُبنى بأمان، وتعتمد أنت المواصفة قبل كتابة أي كود. الفائدة المباشرة أن تحصل على ما قصدته فعلاً. أما الفائدة بعيدة المدى فأهدأ صوتاً: بعد سنة تصبح تلك المواصفة هي السجل الذي يشرح سبب وجود التغيير، وهو بالضبط ما تحتاجه حين يسأل أحدهم إن كان يستحق النقل إلى الإصدار التالي.
ما الذي تفعله وقت الترقية
- ابدأ بالجرد: اكتب كل تخصيص ومعه صاحبه والغرض منه. وكل ما لا يستطيع أحد تبريره مرشح للحذف، والحذف أرخص كثيراً من الترحيل.
- رقِّ في بيئة تجريبية واختبر المسارات المخصصة تحديداً: الدورات القياسية ستعمل غالباً كما هي، والمفاجآت تسكن في تعديلاتك أنت، فخصص وقت الاختبار هناك.
- لا تجمع الترقية وإعادة التصميم في نافذة واحدة: إذا كانت عملية ما تحتاج إعادة تفكير، فليكن ذلك قبلها أو بعدها وباختبار مستقل. الخلط بينهما يجعل كل عطل غامضاً، فلا أحد يعرف هل كسره الإصدار الجديد أم التصميم الجديد.
- اجعل من يستخدم التخصيص هو من يختبره، لا من بناه فقط. تغيير ينجح تقنياً ويفشل في الاستخدام اليومي يبقى ترقية فاشلة.
- راجع وحدات التوطين على حدة: سلوك ZATCA وETA وFTA وWPS يأتي من وحدات التوطين الرسمية في Odoo، وهي تتحرك بجدولها الخاص. تأكد أن الإصدار الذي تنتقل إليه ما زال يغطي ما تقدّمه فعلياً.
المقايضة بصراحة
التخصيص ليس ديناً تقنياً بالضرورة. تغيير يلغي تسوية يومية تستهلك ساعتين يستحق أن تحمله عبر كل ترقية طوال عمر النظام. المشكلة في النوع الآخر: كود بُني لشخص غادر الشركة، أو لعميل لم تعد تتعامل معه، أو لعملية استُبدلت قبل سنتين ولم يحذفها أحد بعد.
راجع هذه القائمة مرة كل سنة، لا أثناء الترقية حين يكون الضغط للإبقاء على كل شيء في أعلاه ولا وقت لدى أحد للنقاش. أفضل تحضير للترقية هو الحذف في العادة.
وإذا كنت تخطط للانتقال إلى إصدار أحدث من Odoo وتريد تقديراً صادقاً لتكلفة حمل تخصيصاتك، فإن خدمة ترقية الإصدارات لدينا تبدأ بهذا الجرد بالذات.
