مسار معالجة الطلب
الخطوات التي تُنفَّذ بترتيب ثابت على كل تغيّر في حالة الطلب.
1حدث واحد، خطوات كثيرة
عند كل تغيّر في حالة الطلب يمرّ الربط على خطواته بترتيب ثابت، ويسأل عند كل خطوة سؤالاً واحداً: هل حالة هذا الطلب موجودة في قائمة هذه الخطوة؟ إن كانت موجودة نُفِّذت، وإلا تُخطَّت بصمت.
الترتيب ثابت مهما رتّبت أنت القوائم.
2أولاً: المخزون
١. خصم المخزون — إذا كانت الحالة في قائمة خصم المخزون. ٢. إرجاع المخزون — إذا كانت في قائمة الإرجاع.
3ثم: البيع
٣. إنشاء أمر البيع. ٤. اعتماد أمر البيع. ٥. إنشاء عملية المخزون. ٦. اعتماد عملية المخزون.
4ثم: الفوترة
٧. إنشاء الفاتورة. ٨. ترحيل الفاتورة. ٩. إرسال الفاتورة إلى ZATCA — تلقائياً بعد الترحيل، على أودو 19.3 فأحدث ومع تفعيل الخيار. ١٠. دفع الفاتورة.
5ثم: الإلغاء
١١. إلغاء الفاتورة أو إنشاء إشعار دائن. ١٢. إرسال الإشعار الدائن إلى ZATCA. ١٣. دفع الإشعار الدائن. ١٤. إلغاء أمر البيع. ١٥. إلغاء عملية المخزون.
6ترتيب القوائم يهم
لأن الخطوات تُنفَّذ بهذا الترتيب في نفس الحدث، يمكن لطلب أن ينتقل من لا شيء إلى فاتورة مدفوعة في لحظة واحدة إذا كانت حالته موجودة في كل القوائم. وبالمثل، وضع حالة في «الدفع» دون وضعها في «الترحيل» يجعل الدفع يفشل دائماً.
7فشل خطوة لا يوقف ما بعدها
كل خطوة محمية على حدة. إذا فشل إنشاء الفاتورة فسيستمر الربط في محاولة ترحيلها ودفعها — وستفشل الخطوتان أيضاً وتظهر في ثلاث شاشات أخطاء مختلفة. عالج أول خطأ في السلسلة أولاً؛ غالباً تختفي البقية معه.
8طلب واحد في كل مرة
يمنع الربط معالجة نفس الطلب مرتين في وقت واحد. إذا وصل حدثان متلاحقان لنفس الطلب فسيُعالَج الأول ويردّ على الثاني بأن العملية جارية. هذا مقصود، ويحميك من ازدواج الفواتير.