السعودية · قطاعات متعددة (منتج)

جسر المرحلة الثانية من ZATCA لنظام SAP Business One

ملخصجسر جاهز للتثبيت يرسل فواتير SAP Business One إلى ZATCA للاعتماد والإبلاغ، مع واجهة ويب سهلة الاستخدام فوق خدمة مزامنة تعمل في الخلفية.

التحدي

كان لدى مستخدمي SAP B1 في السعودية خدمة Windows لـ ZATCA تعمل لكن تشغيلها صعب: لا حالة واضحة، ولا إعداد سهل، والأخطاء مخفية في ملفات السجلات.

السياق

تشترط المرحلة الثانية من ZATCA (مرحلة الربط والتكامل في الفوترة الإلكترونية السعودية) إنتاج كل فاتورة ضريبية بصيغة UBL 2.1 XML، وتوقيعها بختم تشفيري، وربطها بالفاتورة السابقة عبر تجزئتها (Hash)، وأن تحمل رمز QR. يجب اعتماد الفواتير الضريبية القياسية (B2B) من ZATCA قبل مشاركتها مع المشتري، والإبلاغ عن الفواتير الضريبية المبسطة (B2C) خلال 24 ساعة. وقبل أن يتمكن أي نظام من الإرسال، يجب تسجيله بشهادة امتثال (Compliance CSID)، واجتياز فحوص الامتثال، ثم الحصول على شهادة الإنتاج (Production CSID).

كان لدى مستخدمي SAP Business One في السعودية بالفعل خدمة Windows تؤدي هذا العمل، لكن تشغيلها كان صعبًا. لم تكن هناك شاشة حالة واضحة، وكان الإعداد يعني تعديل ملفات الضبط يدويًا، وعندما ترفض ZATCA فاتورة كان السبب مدفونًا في ملفات السجلات. وبالنسبة لفريق مالي يجب أن يصدر فواتير ممتثلة كل يوم، يتحول الرفض الذي لا يلاحظه أحد سريعًا إلى مشكلة امتثال ومشكلة في التدفق النقدي.

ما الذي بنيناه

  • واجهة ويب بتقنية ASP.NET Core مع معالج إعداد موجّه من 6 خطوات
  • عامل خلفية يزامن مستندات SAP B1 مع ZATCA ويكتب النتائج على المستندات
  • مستعرض للإرسالات، وسجل للتشغيلات، ورسائل أخطاء مفهومة
  • تشفير البيانات السرية عند التخزين؛ وترخيص مرتبط بالجهاز مع وضع تجريبي
  • يعمل كخدمة Windows أو تحت IIS

كيف تترابط المكونات

  • يقرأ عامل الخلفية الفواتير والإشعارات الدائنة الجديدة من شركة SAP B1 عبر DI API.
  • يتحول كل مستند إلى XML متوافق مع ZATCA، ويُوقَّع، ويُرسل إلى واجهة ZATCA Fatoora البرمجية للاعتماد (B2B) أو الإبلاغ (B2C).
  • يُكتب رد ZATCA (الحالة والتحذيرات والأخطاء والنتيجة المعتمدة) على مستند SAP B1، فيرى المستخدمون النتيجة داخل SAP.
  • تخزن قاعدة بيانات SQLite محلية، يُوصل إليها عبر EF Core، الإعدادات والإرسالات وسجل التشغيلات؛ وتُشفَّر الشهادات وغيرها من البيانات السرية عند التخزين.
  • تعمل فوقها واجهة ويب بتقنية ASP.NET Core MVC: معالج الإعداد من 6 خطوات، ومستعرض الإرسالات، ورسائل أخطاء مفهومة.
  • يعمل التطبيق نفسه كخدمة Windows أو تحت IIS، ويتحكم ترخيص مرتبط بالجهاز مع وضع تجريبي في التفعيل.

كيف نفّذناه

  1. الاستكشاف وتحديد النطاق. مراجعة خدمة Windows الحالية، وأنواع مستندات SAP B1 المستخدمة (الفواتير، والإشعارات الدائنة، والفواتير المبسطة)، وطريقة تسجيل العميل لدى ZATCA. والاتفاق على نطاق المرحلة.
  2. البناء على شركة اختبار وبيئة ZATCA التجريبية. بناء معالج الإعداد وعامل المزامنة والكتابة على المستندات على شركة SAP B1 للاختبار، والإرسال فقط إلى بيئتي المطورين والمحاكاة لدى ZATCA حتى تجتاز فحوص الامتثال.
  3. الاختبار. تمرير فواتير عادية وإشعارات دائنة ومستندات معطوبة عمدًا عبر الجسر، والتأكد من أن كل رفض يُظهر رسالة واضحة في مستعرض الإرسالات ويمكن إصلاحه وإعادة إرساله.
  4. الإطلاق. طلب شهادة الإنتاج (Production CSID)، وتحويل الجسر إلى نقطة الإنتاج، وتثبيته كخدمة Windows أو تحت IIS، وتفعيل الترخيص. ومتابعة أولى الإرسالات الحية مع الفريق المالي.
  5. الدعم. بعد الإطلاق، يغطي الدعم حالات الرفض الجديدة، وتحديثات قواعد ZATCA، وأسئلة المستخدمين.

النتيجة

  • إعداد موجّه يحل محل الضبط اليدوي
  • الفواتير المرفوضة ظاهرة ويمكن إصلاحها من شاشة واحدة

أصبح الإعداد الذي كان يحتاج ضبطًا يدويًا معالجًا موجّهًا، ويستطيع الفريق المالي رؤية الفواتير المرفوضة وإصلاحها من شاشة واحدة بدل البحث في ملفات السجلات.

دروس لمشروع مشابه

  • خطّط لتسجيل ZATCA مبكرًا: شهادة الامتثال وفحوص الامتثال وشهادة الإنتاج خطوات منفصلة، وكل منها يحتاج صلاحية الوصول إلى بوابة فاتورة.
  • احتفظ بسلسلة تجزئة الفواتير والعدّاد في مكان واحد؛ فإعادة إرسال المستندات أو تخطيها دون حذر يكسر السلسلة.
  • اجعل حالات الرفض ظاهرة للمستخدمين الماليين، لا لقسم تقنية المعلومات فقط. رسالة خطأ مفهومة بجانب المستند توفر وقتًا أكثر من أي ملف سجل.

التقنيات

.NET 10ASP.NET Core MVCSAP B1 DI APIEF CoreSQLiteWindows Service

الخدمات المستخدمة

نفّذه زين عباس، كودينوفا.

تريد شيئًا مشابهًا؟

أخبرنا بما تحتاجه. ستحصل على إجابة تقنية واضحة ونطاق عمل محدد وسعر ثابت، عادةً خلال 24 ساعة.