قطع غيار الطائرات والصيانة والإصلاح — منصّة تشغيل مخصّصة
لشركة تتاجر بقطع غيار الطائرات وتصلحها، صمّمت منصّة التشغيل نفسها وبنيتها، من المخزون والمشتريات وأوامر الإصلاح إلى الدفاتر المحاسبية، على شيفرة كتبتها بدءاً من قاعدة البيانات، لا على Odoo.
هذا ليس تطبيقاً لـ Odoo. إنه بناء مخصّص بالكامل يشمل الطبقات كلها: واجهة برمجة تطبيقات (API) مبنية بـ Node.js وExpress على قاعدة بيانات PostgreSQL، وواجهة أمامية بـ React. وسبب ذلك أن جمع هذه الشركة بين تجارة القطع والإصلاح تطلّب نموذج بيانات لا تستوعبه أي حزمة جاهزة، ومنها Odoo، ما لم تُحوَّر بنيتها قسراً. وأدرجته هنا ضمن الحلول لأنه أوضح مثال على ما أفعله حين لا يكون الجواب الصحيح نظام تخطيط موارد المؤسسات (ERP) أصلاً.
التحدّي
يدير هذا العميل نشاطين تحت سقف واحد: تجارة قطع غيار الطائرات، أي شراء قطع بحالات متفاوتة وإعادة بيعها، وإصلاح القطع وإجراء العمرة (overhaul) لها لحساب مشغّلين آخرين. ويتجاذب النشاطان المخزون المادي نفسه في اتجاهين مختلفين؛ فالقطعة الموجودة على الرف قد تُعرض للبيع كما هي، وقد تكون قطعة مستعملة (core) تنتظر إرسالها للعمرة ثم تعود صالحة للبيع بحالة مختلفة وبسعر مختلف. وتحمل كل قطعة كذلك بيانات خاصة بالطيران لم يُصمَّم سجل «المنتج» العام أصلاً لاستيعابها، وهي رمز الحالة، وفصل ATA، ورقم الدفعة أو الرقم التسلسلي الذي يلازم القطعة طوال عمرها، ومؤشر يبيّن ما إذا كانت المستندات التي تثبت مصدرها محفوظة في الملف فعلاً.
لا شيء من ذلك غريب في حد ذاته؛ فأنظمة كثيرة تدير المخزون، وأخرى كثيرة تدير المشتريات، وغيرها تتولى المحاسبة. الصعوبة في الجمع بينها: تجارة وإصلاح يتشاركان مخزوناً واحداً، وقرارات شراء تُتخذ بمقارنة عروض الموردين قبل أن يوجد أمر الشراء أصلاً، وأمر إصلاح لا بد أن يعرف أي القطع يشملها ولدى أي مورّد هي وكم مضى على خروجها، ودفاتر محاسبية تتطابق مع ذلك كله دون تصدير ليلي إلى برنامج محاسبة منفصل. وبدلاً من تطويع نموذج بيانات نظام قائم ليلائم ذلك، ومنه Odoo الذي أستخدمه في الغالبية العظمى من عمليات التطبيق التي أنفّذها، صمّمت مخطط قاعدة البيانات وسير العمل من الصفر، وبنيت المنصّة على الطريقة التي تعمل بها هذه الشركة فعلاً، لا على الطريقة التي تفترض الحزم العامة أن الشركات تعمل بها.
ما بنيته
سبعة مكوّنات، كلها في مخطط PostgreSQL واحد وتطبيق React واحد، لا أداة للمستودعات موصولة بأداة للمحاسبة موصولة بجدول بيانات:
مخزون متعدّد المستودعات مع تتبّع الدفعات والأرقام التسلسلية
يجري تتبّع المخزون بحسب المستودع والموقع وصولاً إلى كل دفعة أو رقم تسلسلي على حدة، فيمكن تعقّب القطعة عبر كل حركة مرّت بها، من الاستلام والنقل إلى الإصلاح والبيع، بدل الاكتفاء بمعرفة الكمية المتوفرة. وسلسلة التتبّع هذه هي العمود الفقري الذي يرتكز عليه كل ما سواها في المنصّة.
ترميز حالة القطع وتصنيف ATA
تحمل كل قطعة رموز الحالة التي يجري التداول بها فعلاً في القطاع، وهي جديدة (New)، وبعد العمرة (Overhauled)، وصالحة للخدمة (Serviceable)، وكما أُزيلت (As-Removed)، إضافة إلى تصنيف فصول ATA، وهو النظام المعياري لتصنيف قطع الطائرات بحسب المنظومة التي تنتمي إليها، وإلى مؤشر للشهادة والتتبّع يبيّن ما إذا كانت المستندات الداعمة محفوظة في الملف. وهذه كلها حقول أصلية في سجل القطعة، لا حقول مخصّصة أُضيفت إلى نموذج منتج عام.
من مقارنة عروض الموردين إلى أمر الشراء ثم استلام البضاعة
يسجّل موظفو المشتريات عروض أسعار من عدة موردين للقطعة نفسها، ويقارنونها جنباً إلى جنب، ثم يحوّلون العرض الذي يختارونه مباشرة إلى أمر شراء. وعند استلام البضاعة تُطابق الكمية والحالة الفعليتان لما وصل مع ما طُلب، قبل إدخال أي شيء إلى المخزون.
تتبّع أوامر الإصلاح (MRO)
يربط أمر الإصلاح بين القطعة، والمورّد أو الورشة التي تنفّذ العمل، ومدة الإنجاز، فيرى الفريق بنظرة واحدة ما خرج للإصلاح وأين يوجد وكم مضى عليه، بدل متابعته بالاتصالات الهاتفية وبجدول بيانات يعمل بمحاذاة النظام «الرسمي».
فوترة المبيعات والشحن
تتحوّل أوامر البيع إلى فواتير وإلى عمليات شحن من السجل نفسه، فتبقى القطعة التي تغادر المستودع والفاتورة المحرَّرة لها والحالة التي بيعت بها مترابطة بعضها ببعض، بدل أن تتوزّع على ثلاثة مواضع منفصلة يضطر أحدهم إلى مطابقتها يدوياً.
دفتر أستاذ مساعد حقيقي بالقيد المزدوج، لا إضافة ملحقة
تعمل مكوّنات المحاسبة، من دليل الحسابات ودفاتر اليومية إلى فواتير الموردين والمدفوعات، داخل المنصّة نفسها بنظام القيد المزدوج الكامل، لا عبر مزامنة ليلية إلى برنامج محاسبة منفصل. وكل حركة مخزون وكل عملية شراء أو بيع تُرحَّل مباشرة إلى الدفتر الذي تنتمي إليه، فلا يعرض المستودع والدفاتر المحاسبية صورتين مختلفتين لحقيقة واحدة.
استيراد جماعي من Excel ولوحة إدارة قائمة على الأدوار مع سجل تدقيق
تتيح أداة الاستيراد الجماعي من Excel تحميل بيانات القطع والمخزون والموردين بالجملة بدل إدخالها يدوياً، وقد بُنيت للتحميل الأولي للبيانات ولأي تحديث كبير للكتالوج بعد ذلك. وتحدّد لوحة الإدارة بحسب الدور ما يحق لكل مستخدم الاطلاع عليه وما يحق له فعله، وتسجّل كل تغيير يُجرى، فيبقى دائماً جواب عن سؤال «من عدّل هذا السجل ومتى؟».
الحزمة التقنية
تعمل المنصّة على حزمة تقنية بسيطة وتقليدية عن قصد، اخترتها للسبب نفسه الذي أختار به Odoo في معظم الأحيان: لأنها تناسب المشكلة، لا لأنها رائجة. وتقف واجهة برمجة التطبيقات (API) المبنية بـ Node.js وExpress أمام قاعدة بيانات PostgreSQL، وقد اخترت PostgreSQL تحديداً لأن دفتر الأستاذ المساعد احتاج إلى سلامة حقيقية في المعاملات وإلى قيود تُفرض على مستوى قاعدة البيانات، لا في شيفرة التطبيق وحدها. وتتولى React الواجهة الأمامية بمجموعتين منفصلتين من الشاشات، إحداهما لموظفي المستودعات والمشتريات والأخرى للمالية، وكلتاهما مبنية على الواجهة البرمجية نفسها، لا كأداتين منفصلتين. وفي المحصلة هي قاعدة شيفرة مخصّصة واحدة تغطي المخزون والمشتريات وتتبّع الإصلاح والمبيعات والمحاسبة، دون نظام منفصل لتخطيط موارد المؤسسات (ERP)، ولا برنامج محاسبة، ولا جدول بيانات يعمل بجوارها.
لماذا العمل معي
أنا محمد سلمان علي خان، استشاري Odoo تقني ووظيفي في دبي ورئيس المشاريع في Techbot Information Technology LLC. يقوم أغلب ما أبنيه على Odoo، بخبرة تتجاوز 10 سنوات وأكثر من 100 عملية تطبيق، وأنا معتمد على Odoo v13 وv14 وv15 وv16 وv18 وv19. وهذا المشروع هو الوجه الآخر لعملي: فحين لا يتواءم سير عمل شركة ما بسلاسة مع أي نظام جاهز، بما في ذلك Odoo، أصمّم المنصّة المخصّصة وأبنيها بدلاً من ذلك، من قاعدة البيانات إلى الواجهة البرمجية إلى الواجهة الأمامية، وبالمنهج نفسه الذي أتبعه في تطبيق أنظمة تخطيط موارد المؤسسات (ERP): أفهم أولاً كيف تعمل الشركة فعلاً، ثم أبني ما يطابق ذلك.
روابط ذات صلة
في موضعين آخرين يمكنك أن ترى ما يعنيه «الحل المبني على مقاس العمل» في جانبَي ما أقوم به:
هل تتردد في الاختيار بين Odoo وحل مخصّص بالكامل لعملياتك؟
أخبرني كيف يسير العمل لديك اليوم في المخزون والمشتريات والإصلاحات والمحاسبة، وسأقدّم لك رأياً صادقاً ومحدّد النطاق في المسار الأنسب، سواء أكان Odoo أم برمجيات مخصّصة أم مزيجاً منهما، دون أي مقابل.
احصل على تقييم مجاني لأعمالك