يفحص مطابق ملف XML للفاتورة الإلكترونية في المرحلة الثانية قبل إرساله: تحقق مسبق وفق متطلبات هيئة الزكاة والضريبة والجمارك المنشورة، لا اعتماداً من الهيئة. وتشرح هذه الصفحة قاعدة واحدة هي BR-CO-12.
خمس عمليات فحص شهرياً في باقة المجان. يُفحص الملف في الذاكرة ولا يُحفظ.
الرسالة كما تنشرها هيئة الزكاة والضريبة والجمارك
[BR-CO-12]-Sum of charges on document level (BT-108) = Σ Document level charge amount (BT-99).
فحوص أخرى تُذكر في التقرير نفسه
BR-CO-12
[BR-CO-12]-Sum of charges on document level (BT-108) = Σ Document level charge amount (BT-99).
ما الذي يذكره مطابق
مدخل لكل حالة تُذكر فيها هذه القاعدة في التقرير.
صورة القيمة في التقرير
صورة القيمة التي وُجدت — empty وnot_15_digits وما شابههما — لا القيمة نفسها.
مجموع الرسوم على مستوى المستند غير موجود
صورة القيمة في التقريرtotal_missingالإجمالي غير موجود
ما الخلل
يحمل المستند رسماً واحداً على الأقل على مستوى المستند، أي كتلة cac:AllowanceCharge مباشرة تحت الفاتورة قيمة cbc:ChargeIndicator فيها true، لكن كتلة cac:LegalMonetaryTotal لا تحمل العنصر cbc:ChargeTotalAmount. فترفض هيئة الزكاة والضريبة والجمارك المستند بموجب القاعدة BR-CO-12، وهي تشترط أن يساوي مجموع الرسوم (BT-108) مجموع مبالغ الرسوم على مستوى المستند مقرَّباً إلى منزلتين عشريتين؛ وحين يغيب العنصر لا يبقى ما يساويه المجموع.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
اكتب العنصر cbc:ChargeTotalAmount في كتلة الإجماليات كلما حمل المستند رسماً على مستوى المستند. ولا يُحتسب هنا إلا كتل cac:AllowanceCharge الواقعة مباشرة تحت الفاتورة وقيمة cbc:ChargeIndicator فيها true؛ أما الرسوم داخل بنود الفاتورة فلا تدخل فيه.
مجموع الرسوم على مستوى المستند لا يطابق الرسوم
صورة القيمة في التقريرnot_sum_of_chargesلا يساوي مجموع الرسوم
ما الخلل
العنصر cbc:ChargeTotalAmount في كتلة cac:LegalMonetaryTotal ليس مجموع قيم cbc:Amount للرسوم على مستوى المستند (كتل cac:AllowanceCharge الواقعة مباشرة تحت الفاتورة وقيمة cbc:ChargeIndicator فيها true) مقرَّباً إلى منزلتين عشريتين، فترفض هيئة الزكاة والضريبة والجمارك المستند بموجب القاعدة BR-CO-12. ولا هامش تسامح هنا، فالمقارنة صارمة. ومجموع الرسوم غير الصفري في مستند لا رسم فيه على مستوى المستند يخفق كذلك، لأن المجموع الذي يجب أن يساويه صفر.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
راجع مصدر مجموع الرسوم. فهو يجمع الرسوم على مستوى المستند وحدها قبل الضريبة، ولا تدخل فيه رسوم البنود ولا الخصومات. وإن كان نظامك يقرّب كل رسم قبل جمعه فقارن الناتج بالمجموع المقرَّب مرة واحدة في النهاية.
عنصر مجموع الرسوم على مستوى المستند موجود لكنه فارغ
صورة القيمة في التقريرtotal_blankالإجمالي موجود لكنه فارغ
ما الخلل
تحمل كتلة cac:LegalMonetaryTotal العنصر cbc:ChargeTotalAmount بلا قيمة، أو بمسافات فقط، فترفض هيئة الزكاة والضريبة والجمارك المستند بموجب القاعدة BR-CO-12، وهي تفحص هذه الحالة قبل أي حساب. وترصد القاعدة BR-CO-13 العنصر الفارغ نفسه تحذيراً.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
إما أن تكتب مجموع الرسوم، وهو 0.00 حين لا يحمل المستند رسماً على مستوى المستند، وإما أن تحذف العنصر. والعنصر الفارغ يأتي في العادة من قالب يكتب الوسم دائماً ولا يملؤه إلا حين يوجد رسم.
الفحص الذي يُنفَّذ
منقول حرفياً من ملفات قواعد التحقق التي تنشرها الهيئة، عند الملف والسطر المذكورين أدناه. والتعبير المُنفَّذ هو ما يُقيَّم على المستند، أما التعبير المذكور في التقرير فهو ما يظهر عند الإخفاق، وهما لا يتطابقان دائماً.
التعبير المُنفَّذ
exists (cbc:ChargeTotalAmount) and normalize-space(cbc:ChargeTotalAmount)=''
التعبير المذكور في التقرير
xs:decimal(cbc:AllowanceTotalAmount) = (round(sum(../cac:AllowanceCharge[cbc:ChargeIndicator=false()]/xs:decimal(cbc:Amount)) * 10 * 10) div 100) or (not(cbc:AllowanceTotalAmount) and not(../cac:AllowanceCharge[cbc:ChargeIndicator=false()]))
العناصر التي يُقيَّم عليها
cac:LegalMonetaryTotal
المصدر
vendor/zatca/schematron/CEN-EN16931-UBL.xsl:449
كما يرد في الإصدار 3.4.8 من حزمة أدوات التطوير SDK التي تنشرها الهيئة: النسخة المقتبسة هنا هي الملف الذي يتضمنه ذلك الإصدار بايتاً ببايت. والتاريخ في اسم الملف هو الاسم الذي تعطيه الهيئة للملف، أما القواعد فيه فهي قواعد الإصدار 3.4.8.
مثال عملي
مستند اصطناعي من مجموعة الاختبار المقيسة تُرصد عليه هذه القاعدة، تُعرض منه الأسطر التي يختلف فيها عن مستند اجتاز الفحص. ولا يذكر تقرير مطابق سوى صورة القيمة، لا القيمة نفسها.