يفحص مطابق ملف XML للفاتورة الإلكترونية في المرحلة الثانية قبل إرساله: تحقق مسبق وفق متطلبات هيئة الزكاة والضريبة والجمارك المنشورة، لا اعتماداً من الهيئة. وتشرح هذه الصفحة قاعدة واحدة هي BR-KSA-60.
خمس عمليات فحص شهرياً في باقة المجان. يُفحص الملف في الذاكرة ولا يُحفظ.
الرسالة كما تنشرها هيئة الزكاة والضريبة والجمارك
[BR-KSA-60]-Cryptographic stamp (KSA-15) must exist in simplified tax invoices and associated credit notes and debit notes (KSA-2, position 1 and 2 = 02).
فحوص أخرى تُذكر في التقرير نفسه
BR-KSA-28
[BR-KSA-28]-If the cryptographic stamp (KSA-15) exists in the invoice, this cryptographic stamp (KSA-15) must contain the exact "urn:oasis:names:specification:ubl:signature:1" value for signature information ID.
ما الذي يذكره مطابق
مدخل لكل حالة تُذكر فيها هذه القاعدة في التقرير.
صورة القيمة في التقرير
صورة القيمة التي وُجدت — empty وnot_15_digits وما شابههما — لا القيمة نفسها.
الفاتورة المبسطة لا تحمل كتلة التوقيع
صورة القيمة في التقريرsignature_missingكتلة التوقيع غير موجودة
ما الخلل
المستند فاتورة مبسطة، ولا يحمل في أي موضع منه عنصر cac:Signature، وترصد هيئة الزكاة والضريبة والجمارك ذلك بموجب القاعدة BR-KSA-60، وتصنّف الهيئة هذه القاعدة تحذيراً لا خطأً في أداة الفحص الحالية لديها، فالتحذير وحده لا يؤدي إلى رفض المستند. واقرأ ما تُثبته هذه القاعدة وما لا تُثبته. تسمّي رسالة الهيئة المطلوب الختم المميز KSA-15، والفحص خلفها لا يفحص ختماً: فالعنصر cac:Signature في UBL كتلة مرجع، فيها معرِّف وطريقة توقيع، والفحص لا يطلب إلا وجود واحدة منها في موضع ما من المستند وألّا تكون خالية. والفحص هو ما يقرّر، وأثر ذلك أن فاتورة غير موقَّعة تحمل كتلة المرجع هذه تجتاز القاعدة BR-KSA-60. فسكوت الفحص هنا ليس دليلاً على أن هذا المستند مختوم. أما الختم نفسه فتفحصه القاعدة BR-KSA-28 داخل ext:UBLExtensions، ولا يفحصه مطابق ولا يتعامل مع الشهادات ولا المفاتيح الخاصة إطلاقاً. وتسري هذه القاعدة على الفاتورة المبسطة وإشعاراتها الدائنة والمدينة، أي ما يبدأ رمز نوع معاملة الفاتورة KSA-2 فيه بـ 02، ويُبحث عن الكتلة في أي موضع من المستند، بما في ذلك كتلة معلَّقة على شهادة صنف في أحد البنود.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
الكتلة قيمة ثابتة لا محسوبة: ففواتير الهيئة المبسطة النموذجية تحمل العنصر cac:Signature وفيه cbc:ID بالقيمة urn:oasis:names:specification:ubl:signature:Invoice وcbc:SignatureMethod بالقيمة urn:oasis:names:specification:ubl:dsig:enveloped:xades. والتصدير الخالي منها بالكلية يكون في الغالب قالباً مبنياً على نموذج UBL سابق للمرحلة الثانية، أو قالباً صُمّم للفواتير الضريبية، ولا تسري عليها هذه القاعدة، ثم أُعيد استعماله للفواتير المبسطة. أضف الكتلة إلى القالب في موضعها من ترتيب UBL؛ ولا تحتاج إلى تنفيذ خطوة التوقيع.
كتلة التوقيع في الفاتورة المبسطة فارغة
صورة القيمة في التقريرsignature_emptyكتلة التوقيع فارغة
ما الخلل
المستند فاتورة مبسطة ويحمل عنصر cac:Signature واحداً على الأقل، لكن كل نسخة منه خالية: لا نص فيها ولا في أي موضع تحتها، وهو ما يجيزه معيار UBL لأن كل عناصر هذه الكتلة اختيارية. وترصد هيئة الزكاة والضريبة والجمارك ذلك بموجب القاعدة BR-KSA-60 كما ترصد غياب الكتلة تماماً، وتصنّف هذه القاعدة تحذيراً لا خطأً، فالتحذير وحده لا يؤدي إلى رفض المستند. واقرأ ما تُثبته هذه القاعدة وما لا تُثبته. تسمّي رسالة الهيئة المطلوب الختم المميز KSA-15، والفحص خلفها لا يفحص ختماً: فالعنصر cac:Signature في UBL كتلة مرجع، فيها معرِّف وطريقة توقيع، والفحص لا يطلب إلا وجود واحدة منها في موضع ما من المستند وألّا تكون خالية. والفحص هو ما يقرّر، وأثر ذلك أن فاتورة غير موقَّعة تحمل كتلة المرجع هذه تجتاز القاعدة BR-KSA-60. فسكوت الفحص هنا ليس دليلاً على أن هذا المستند مختوم. أما الختم نفسه فتفحصه القاعدة BR-KSA-28 داخل ext:UBLExtensions، ولا يفحصه مطابق ولا يتعامل مع الشهادات ولا المفاتيح الخاصة إطلاقاً. وتسري هذه القاعدة على الفاتورة المبسطة وإشعاراتها الدائنة والمدينة، أي ما يبدأ رمز نوع معاملة الفاتورة KSA-2 فيه بـ 02، ويُبحث عن الكتلة في أي موضع من المستند، بما في ذلك كتلة معلَّقة على شهادة صنف في أحد البنود.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
العنصر يُخرَج وعناصره الداخلية لا تُخرَج، وهذا يعني عادةً أن القالب يكتب الوعاء ويملؤه من مخرجات خطوة التوقيع، وأن خطوة التوقيع لم تُنفَّذ أو لم تُعد شيئاً. والعنصران اللذان تحملهما نماذج الهيئة قيمتان ثابتتان يمكن كتابتهما دون شرط: cbc:ID بالقيمة urn:oasis:names:specification:ubl:signature:Invoice، وcbc:SignatureMethod بالقيمة urn:oasis:names:specification:ubl:dsig:enveloped:xades. وكتابتهما تُجيز هذه القاعدة؛ ولا تختم الفاتورة، فالختم خطوة أخرى في وحدة الفوترة الإلكترونية عندك.
الفحص الذي يُنفَّذ
منقول حرفياً من ملفات قواعد التحقق التي تنشرها الهيئة، عند الملف والسطر المذكورين أدناه. والتعبير المُنفَّذ هو ما يُقيَّم على المستند، أما التعبير المذكور في التقرير فهو ما يظهر عند الإخفاق، وهما لا يتطابقان دائماً.
التعبير المُنفَّذ
not(exists(//cac:Signature) and (//cac:Signature) != '')
التعبير المذكور في التقرير
exists(//cac:Signature) and (//cac:Signature) != ''
كما يرد في الإصدار 3.4.8 من حزمة أدوات التطوير SDK التي تنشرها الهيئة: النسخة المقتبسة هنا هي الملف الذي يتضمنه ذلك الإصدار بايتاً ببايت. والتاريخ في اسم الملف هو الاسم الذي تعطيه الهيئة للملف، أما القواعد فيه فهي قواعد الإصدار 3.4.8.
مثال عملي
مستند اصطناعي من مجموعة الاختبار المقيسة تُرصد عليه هذه القاعدة، تُعرض منه الأسطر التي يختلف فيها عن مستند اجتاز الفحص. ولا يذكر تقرير مطابق سوى صورة القيمة، لا القيمة نفسها.