BR-CL-03سمة العملة على أحد المبالغ ليست رمز عملة تقبله الهيئة

يفحص مطابق ملف XML للفاتورة الإلكترونية في المرحلة الثانية قبل إرساله: تحقق مسبق وفق متطلبات هيئة الزكاة والضريبة والجمارك المنشورة، لا اعتماداً من الهيئة. وتشرح هذه الصفحة قاعدة واحدة هي BR-CL-03.

افحص 5 فواتير مجاناً

خمس عمليات فحص شهرياً في باقة المجان. يُفحص الملف في الذاكرة ولا يُحفظ.

الرسالة كما تنشرها هيئة الزكاة والضريبة والجمارك

[BR-CL-03]-currencyID MUST be coded using ISO code list 4217 alpha-3

ما الذي يذكره مطابق

مدخل لكل حالة تُذكر فيها هذه القاعدة في التقرير.

صورة القيمة في التقرير
صورة القيمة التي وُجدت — empty وnot_15_digits وما شابههما — لا القيمة نفسها.

سمة العملة على أحد المبالغ ليست رمز عملة تقبله الهيئة

صورة القيمة في التقريرcurrency_id_not_iso4217عملة المبلغ ليست رمزاً من ISO 4217

ما الخلل

أحد عناصر المبالغ في المستند يحمل السمة currencyID بقيمة ليست ضمن قائمة المعيار ISO 4217 التي تقابل بها هيئة الزكاة والضريبة والجمارك هذه القيمة، فيُرفض المستند بموجب القاعدة BR-CL-03 التي تنص رسالتها على وجوب ترميز السمة currencyID وفق قائمة رموز المعيار ISO 4217 الثلاثية. وهذا حقل غير الحقل الذي تذكره القاعدة BR-CL-04: فتلك تقرأ العنصر cbc:DocumentCurrencyCode، أي عنصر عملة المستند، وهذه تقرأ السمة currencyID المحمولة على كل مبلغ. ويشمل الفحص ثلاثة عشر اسماً من أسماء عناصر المبالغ حيثما وردت في المستند وعلى أي عمق: cbc:Amount وcbc:BaseAmount وcbc:PriceAmount وcbc:TaxAmount وcbc:TaxableAmount وcbc:LineExtensionAmount وcbc:TaxExclusiveAmount وcbc:TaxInclusiveAmount وcbc:AllowanceTotalAmount وcbc:ChargeTotalAmount وcbc:PrepaidAmount وcbc:PayableRoundingAmount وcbc:PayableAmount؛ فسعر البند، والمبلغ الخاضع في التفصيل الضريبي، وكتلة إجماليات المستند، كلها داخلة في الفحص. أما المبلغ الذي لا يحمل السمة currencyID أصلاً أو يحملها فارغة فلا تذكره هذه القاعدة، إذ يشترط فحص الهيئة أن يكون للسمة طول قبل أن يُبحث عن قيمتها في القائمة. والقيمة التي بداخلها مسافة تخفق، لأنه ليس في القائمة رمز يحتوي على مسافة. والقائمة نسخة الهيئة من المعيار ISO 4217 لا القائمة الحالية: فهي لا تزال تحمل MRO وSTD وVEF التي سحبها المعيار، ولا تحمل بدائلها MRU وSTN وVES؛ فالرمز الذي ينشره المعيار اليوم للأوقية الموريتانية ولدوبرا ساو تومي وللبوليفار الفنزويلي مرفوض، والرمز المسحوب هو المقبول.

ما الذي تتحقق منه في وحدة الفوترة الإلكترونية

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

تاريخ الإصدار أطول من عشرة محارف

صورة القيمة في التقريرissue_date_longer_than_10تاريخ الإصدار أطول من عشرة محارف

ما الخلل

العنصر cbc:IssueDate في الفاتورة أطول من عشرة محارف. ولا ترصد هذه الملاحظة بموجب القاعدة BR-CL-03 إلا حزم القواعد السابقة للإصدار 2.0.0: فالإصدار 3.0.8 من حزمة أدوات التطوير SDK التي تنشرها هيئة الزكاة والضريبة والجمارك كان يحمل تحت هذا الرمز فحصاً لعرض تاريخ الإصدار، تنص رسالته على تجاوز حد المحارف لحقل تاريخ الإصدار وأن الحد الأقصى لهذا الحقل عشرة. وقد حذفه الإصدار 3.4.8 الذي تقرؤه حزمة القواعد 2.0.0، فصارت القاعدة BR-CL-03 لا تفحص إلا رمز العملة على المبالغ، وصار التاريخ الأطول من حدّه يُرصد بموجب القاعدة BR-KSA-F-01 بدلاً منها، في الفواتير الضريبية والمبسطة سواءً، فلا يحمل هذه الملاحظة تقرير صادر عن الحزمة 2.0.0. وكان الطول يُقاس على القيمة كما كُتبت، فالحشو حول التاريخ كان يُحسب ضمن الحد. غير أن السبب الأشيع ليس الحشو، بل حرف المنطقة الزمنية أو إزاحتها ملحقين بتاريخ سليم: فالتاريخ المكتوب بعشرة محارف يصير أحد عشر محرفاً إذا لحقه الحرف Z، ويصير ستة عشر محرفاً إذا لحقته إزاحة منطقة زمنية، وكلتا الصورتين تاريخ من نوع xs:date صحيح يجتاز فحص المخطط.

ما الذي تتحقق منه في وحدة الفوترة الإلكترونية

اكتب تاريخ الإصدار تاريخاً مجرداً بعشرة محارف: 2026-09-01، بلا وقت ولا حرف Z بعده ولا إزاحة منطقة زمنية ولا مسافات حوله. ويأتي هذا عادةً من ربط يكتب طابعاً زمنياً كاملاً في حقل التاريخ، أو من أداة تسلسل مضبوطة على إخراج معلومات المنطقة الزمنية مع كل تاريخ تكتبه لأن القيمة مخزَّنة بمنطقة زمنية في نظامك. ووقت الإصدار موضعه العنصر cbc:IssueTime وهو عنصر مستقل؛ فنقل الوقت والإزاحة إليه هو العلاج لا قصّ النص، لأنهما يحملان معلومة حقيقية في الغالب. وتحقّق كذلك من أن أداة كتابة XML لا تضع القيمة في سطر مستقل بمسافات بادئة، فتلك المسافات وأحرف نهاية السطر محارف ضمن نص العنصر وتُحسب ضمن العشرة.

الفحص الذي يُنفَّذ

منقول حرفياً من ملفات قواعد التحقق التي تنشرها الهيئة، عند الملف والسطر المذكورين أدناه. والتعبير المُنفَّذ هو ما يُقيَّم على المستند، أما التعبير المذكور في التقرير فهو ما يظهر عند الإخفاق، وهما لا يتطابقان دائماً.

التعبير المُنفَّذ

string-length(@currencyID) > 0 and not(((not(contains(normalize-space(@currencyID), ' ')) 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(@currencyID), ' ')))))

التعبير المذكور في التقرير

((not(contains(normalize-space(@currencyID), ' ')) 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(@currencyID), ' '))))
العناصر التي يُقيَّم عليها
cbc:Amount | cbc:BaseAmount | cbc:PriceAmount | cbc:TaxAmount | cbc:TaxableAmount | cbc:LineExtensionAmount | cbc:TaxExclusiveAmount | cbc:TaxInclusiveAmount | cbc:AllowanceTotalAmount | cbc:ChargeTotalAmount | cbc:PrepaidAmount | cbc:PayableRoundingAmount | cbc:PayableAmount
المصدر
vendor/zatca/schematron/CEN-EN16931-UBL.xsl:1848

كما يرد في الإصدار 3.4.8 من حزمة أدوات التطوير SDK التي تنشرها الهيئة: النسخة المقتبسة هنا هي الملف الذي يتضمنه ذلك الإصدار بايتاً ببايت. والتاريخ في اسم الملف هو الاسم الذي تعطيه الهيئة للملف، أما القواعد فيه فهي قواعد الإصدار 3.4.8.

مثال عملي

مستند اصطناعي من مجموعة الاختبار المقيسة تُرصد عليه هذه القاعدة، تُعرض منه الأسطر التي يختلف فيها عن مستند اجتاز الفحص. ولا يذكر تقرير مطابق سوى صورة القيمة، لا القيمة نفسها.

الأسطر التي يختلف فيها عن مستند اجتاز الفحص

  • هذا المثال
  • مستند اجتاز الفحص
<cbc:ID>1</cbc:ID><cbc:InvoicedQuantity unitCode="PCE">1.000000</cbc:InvoicedQuantity>هذا المثال: <cbc:LineExtensionAmount currencyID="ABC">100.00</cbc:LineExtensionAmount>مستند اجتاز الفحص: <cbc:LineExtensionAmount currencyID="SAR">90.00</cbc:LineExtensionAmount><cac:TaxTotal>  <cbc:TaxAmount currencyID="SAR">15.00</cbc:TaxAmount>
المستند
bad-109-currency-id-not-iso4217.xml
ما حكم به مطابق
لم يجتز
صورة القيمة في التقرير
currency_id_not_iso4217عملة المبلغ ليست رمزاً من ISO 4217

نزّل هذا المثال (.xml)افحصه في مطابق

مثال هذه الصفحة، يُفحص بالقواعد نفسها التي يمر بها ملفك عند الرفع. بلا رفع وبلا تسجيل دخول.

قواعد تُقيَّم على الموضع نفسه من المستند، وكثيراً ما تُرصد عدة قواعد منها معاً بسبب قيمة واحدة خاطئة.

افحص فاتورة

افحص فاتورتك

© 2026 Hayatiq AI Solutions F.Z.E. جميع الحقوق محفوظة.