BR-CL-04رمز عملة المستند ليس من الرموز التي تقبلها الهيئة
يفحص مطابق ملف XML للفاتورة الإلكترونية في المرحلة الثانية قبل إرساله: تحقق مسبق وفق متطلبات هيئة الزكاة والضريبة والجمارك المنشورة، لا اعتماداً من الهيئة. وتشرح هذه الصفحة قاعدة واحدة هي BR-CL-04.
خمس عمليات فحص شهرياً في باقة المجان. يُفحص الملف في الذاكرة ولا يُحفظ.
الرسالة كما تنشرها هيئة الزكاة والضريبة والجمارك
[BR-CL-04]-Invoice currency code MUST be coded using ISO code list 4217 alpha-3
ما الذي يذكره مطابق
مدخل لكل حالة تُذكر فيها هذه القاعدة في التقرير.
صورة القيمة في التقرير
صورة القيمة التي وُجدت — empty وnot_15_digits وما شابههما — لا القيمة نفسها.
رمز عملة المستند ليس من الرموز التي تقبلها الهيئة
صورة القيمة في التقريرcurrency_not_iso4217ليس رمز عملة من ISO 4217
ما الخلل
رمز عملة المستند في العنصر cbc:DocumentCurrencyCode ليس ضمن قائمة المعيار ISO 4217 التي تقابل بها هيئة الزكاة والضريبة والجمارك هذا الرمز، فيُرفض المستند بموجب القاعدة BR-CL-04. ويجب أن يكون الرمز أحد رموز العملات الثلاثية في تلك القائمة، وهو SAR للريال السعودي. والقيمة التي بداخلها مسافة تخفق في هذه المقابلة نفسها لا في فحص آخر: فليس في القائمة رمز واحد يحتوي على مسافة، فالمسافة في وسط القيمة تعني أن المقابلة لن تتم أبداً. أما المسافات في أول القيمة وآخرها فليست هي المشكلة هنا، إذ تُزال قبل البحث عن الرمز؛ فالمقصود مسافة في وسط القيمة. وثمة أمر في القائمة نفسها جدير بالمعرفة: فهي نسخة من المعيار ISO 4217 لم تُحدَّث؛ فهي لا تزال تحمل الرموز MRO وSTD وVEF التي سحبها المعيار، ولا تحمل بدائلها MRU وSTN وVES. فالفاتورة بالأوقية الموريتانية أو بدوبرا ساو تومي أو بالبوليفار الفنزويلي المكتوبة بالرمز الذي ينشره المعيار اليوم مرفوضة، والرمز المسحوب هو ما تقبله الهيئة.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
في الفاتورة المحلية الجواب هو SAR: الأحرف الثلاثة وحدها دون شيء حولها. وإن كان المستند بعملة أخرى فعلاً فقارن الرمز الذي يحفظه نظامك بما تقبله الهيئة لا بقائمة المعيار الحالية، فهما يختلفان في العملات الثلاث المذكورة أعلاه، ونسخة الهيئة هي التي تقرّر. وفيما عدا ذلك فالأسباب الشائعة: اسم العملة أو علامتها في موضع الرمز الثلاثي، ورمز دولة من حرفين مكان رمز العملة الثلاثي، وحقل عملة فارغ في سجل عميل أو منشأة يمرّره التصدير كما هو، وحيث تكون المسافة هي السبب فاسم العملة مكتوباً إلى جانب رمزها أو رمزان دُمجا بربط كان يتوقع رمزاً واحداً. عالج ذلك في إعدادات العملة أو في ربط التصدير لا في الملف المصدَّر.
رمز نوع الفاتورة أطول من ثلاثة محارف
صورة القيمة في التقريرlonger_than_3أطول من ثلاثة محارف
ما الخلل
رمز نوع الفاتورة BT-3، وهو المحتوى النصي للعنصر cbc:InvoiceTypeCode، أطول من ثلاثة محارف. ولا ترصد هذه الملاحظة إلا حزم القواعد السابقة للإصدار 2.0.0: فطبقة EN 16931 في الإصدار 3.0.8 من حزمة أدوات التطوير SDK التي تنشرها هيئة الزكاة والضريبة والجمارك كانت تقيس الرمز كما هو مكتوب دون تسوية المسافات، وترفض ما زاد على ثلاثة محارف بالقاعدة BR-CL-04 ثم بالقاعدة BR-CL-400، فكان الرمز الصحيح 388 إذا سبقته مسافة وتلته مسافة يُرفض. أما في الإصدار 3.4.8 الذي تقرؤه حزمة القواعد 2.0.0 فالقاعدة BR-CL-04 لا تفحص إلا رمز عملة المستند، ولم تعد القاعدة BR-CL-400 موجودة، والقاعدة BR-KSA-05 تقارن رمز النوع بعد تسوية المسافات، فيُقبل الرمز 388 المحشوّ بالمسافات، ولا يحمل هذه الملاحظة تقرير صادر عن الحزمة 2.0.0.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
لم يعد الرمز المحشوّ مرفوضاً، ولكن الرمز المجرَّد هو ما ينبغي إرساله: 388 أو 383 أو 381، دون مسافة سابقة أو لاحقة، ودون علامة جدولة، ودون سطر جديد بين وسم الفتح ووسم الإغلاق، ودون حشو. والمصادر المعتادة لذلك: حقل يُحشى إلى عرض ثابت عند التصدير، أو مسافات مخزَّنة في جدول إعدادات أنواع المستندات ينقلها الربط كما هي، أو أداة كتابة XML مضبوطة على التنسيق المرتَّب فتكتب القيمة في سطر مستقل بمسافات بادئة فيصير محتوى العنصر أطول من الرمز بعدة محارف. والمسافة لا تُرى على الشاشة، فقِس طول القيمة المخزَّنة بدل الاكتفاء بالنظر إليها، وعالج الأمر في الربط أو قالب التصدير داخل وحدة الفوترة الإلكترونية لا في الملف المصدَّر.
الفحص الذي يُنفَّذ
منقول حرفياً من ملفات قواعد التحقق التي تنشرها الهيئة، عند الملف والسطر المذكورين أدناه. والتعبير المُنفَّذ هو ما يُقيَّم على المستند، أما التعبير المذكور في التقرير فهو ما يظهر عند الإخفاق، وهما لا يتطابقان دائماً.
التعبير المُنفَّذ
not(((not(contains(normalize-space(.), ' ')) and contains(' AED AFN ALL AMD ANG AOA ARS AUD AWG AZN BAM BBD BDT BGN BHD BIF BMD BND BOB BOV BRL BSD BTN BWP BYN BZD CAD CDF CHE CHF CHW CLF CLP CNY COP COU CRC CUC CUP CVE CZK DJF DKK DOP DZD EGP ERN ETB EUR FJD FKP GBP GEL GHS GIP GMD GNF GTQ GYD HKD HNL HRK HTG HUF IDR ILS INR IQD IRR ISK JMD JOD JPY KES KGS KHR KMF KPW KRW KWD KYD KZT LAK LBP LKR LRD LSL LYD MAD MDL MGA MKD MMK MNT MOP MRO MUR MVR MWK MXN MXV MYR MZN NAD NGN NIO NOK NPR NZD OMR PAB PEN PGK PHP PKR PLN PYG QAR RON RSD RUB RWF SAR SBD SCR SDG SEK SGD SHP SLL SOS SRD SSP STD SVC SYP SZL THB TJS TMT TND TOP TRY TTD TWD TZS UAH UGX USD USN UYI UYU UZS VEF VND VUV WST XAF XAG XAU XBA XBB XBC XBD XCD XDR XOF XPD XPF XPT XSU XTS XUA XXX YER ZAR ZMW ZWL ', concat(' ', normalize-space(.), ' ')))))
التعبير المذكور في التقرير
((not(contains(normalize-space(.), ' ')) and contains(' AED AFN ALL AMD ANG AOA ARS AUD AWG AZN BAM BBD BDT BGN BHD BIF BMD BND BOB BOV BRL BSD BTN BWP BYN BZD CAD CDF CHE CHF CHW CLF CLP CNY COP COU CRC CUC CUP CVE CZK DJF DKK DOP DZD EGP ERN ETB EUR FJD FKP GBP GEL GHS GIP GMD GNF GTQ GYD HKD HNL HRK HTG HUF IDR ILS INR IQD IRR ISK JMD JOD JPY KES KGS KHR KMF KPW KRW KWD KYD KZT LAK LBP LKR LRD LSL LYD MAD MDL MGA MKD MMK MNT MOP MRO MUR MVR MWK MXN MXV MYR MZN NAD NGN NIO NOK NPR NZD OMR PAB PEN PGK PHP PKR PLN PYG QAR RON RSD RUB RWF SAR SBD SCR SDG SEK SGD SHP SLL SOS SRD SSP STD SVC SYP SZL THB TJS TMT TND TOP TRY TTD TWD TZS UAH UGX USD USN UYI UYU UZS VEF VND VUV WST XAF XAG XAU XBA XBB XBC XBD XCD XDR XOF XPD XPF XPT XSU XTS XUA XXX YER ZAR ZMW ZWL ', concat(' ', normalize-space(.), ' '))))
العناصر التي يُقيَّم عليها
cbc:DocumentCurrencyCode
المصدر
vendor/zatca/schematron/CEN-EN16931-UBL.xsl:1882
كما يرد في الإصدار 3.4.8 من حزمة أدوات التطوير SDK التي تنشرها الهيئة: النسخة المقتبسة هنا هي الملف الذي يتضمنه ذلك الإصدار بايتاً ببايت. والتاريخ في اسم الملف هو الاسم الذي تعطيه الهيئة للملف، أما القواعد فيه فهي قواعد الإصدار 3.4.8.
مثال عملي
مستند اصطناعي من مجموعة الاختبار المقيسة تُرصد عليه هذه القاعدة، تُعرض منه الأسطر التي يختلف فيها عن مستند اجتاز الفحص. ولا يذكر تقرير مطابق سوى صورة القيمة، لا القيمة نفسها.