BR-CL-KSA-14رمز الاستجابة السريعة أطول من 1000 محرف
يفحص مطابق ملف XML للفاتورة الإلكترونية في المرحلة الثانية قبل إرساله: تحقق مسبق وفق متطلبات هيئة الزكاة والضريبة والجمارك المنشورة، لا اعتماداً من الهيئة. وتشرح هذه الصفحة قاعدة واحدة هي BR-CL-KSA-14.
خمس عمليات فحص شهرياً في باقة المجان. يُفحص الملف في الذاكرة ولا يُحفظ.
الرسالة كما تنشرها هيئة الزكاة والضريبة والجمارك
[KSA-14]Field character limit for QR Code field has been exceeded. The maximum character limit for this field is 1000 characters.
فحوص أخرى تُذكر في التقرير نفسه
BR-KSA-27
[BR-KSA-27]-The document must contain a QR code (KSA-14), and this code must be base64Binary.
ما الذي يذكره مطابق
مدخل لكل حالة تُذكر فيها هذه القاعدة في التقرير.
صورة القيمة في التقرير
صورة القيمة التي وُجدت — empty وnot_15_digits وما شابههما — لا القيمة نفسها.
رمز الاستجابة السريعة أطول من 1000 محرف
صورة القيمة في التقريرlonger_than_1000أطول من 1000 محرف
ما الخلل
حقل رمز الاستجابة السريعة (KSA-14)، أي نص العنصر cbc:EmbeddedDocumentBinaryObject في كتلة cac:AdditionalDocumentReference التي معرّفها QR، أطول من 1000 محرف، فترفض هيئة الزكاة والضريبة والجمارك المستند بموجب القاعدة BR-CL-KSA-14. ويُحسب الطول على القيمة كما كُتبت تماماً، فالمسافات داخلها تُحتسب. وكانت الإصدارات السابقة من أداة الفحص لدى الهيئة تجعل الحد 500، أما الإصدار الحالي فيقبل حتى 1000.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
تحمل حمولة رمز الاستجابة السريعة في الفاتورة المبسطة الموقَّعة التوقيعَ والمفتاح العام وتوقيع الختم إلى جانب حقول الفاتورة الخمسة، وهي في العادة لا تتجاوز 1000 محرف. فإن تجاوزتها فانظر أولاً في اسم البائع في الحقل 1، فهو في الغالب أطول الحقول، ثم في فواصل الأسطر أو المسافات التي يكتبها التصدير داخل قيمة base64: فالحمولة يجب أن تكون سلسلة base64 واحدة متصلة.
عنصر رمز الاستجابة السريعة فارغ
صورة القيمة في التقريرemptyموجود لكنه فارغ
ما الخلل
حقل رمز الاستجابة السريعة (KSA-14) موجود لكنه لا يحمل أي محرف، فترفض هيئة الزكاة والضريبة والجمارك المستند بموجب القاعدة BR-CL-KSA-14، وهي تشترط أن يكون طول الحقل بين 1 و1000 محرف. والعنصر الذي لا يحمل إلا مسافات ليس فارغاً بهذا المقياس، لأن طوله يُحسب كما كُتب؛ وتلك حالة ترصدها القاعدة BR-KSA-27 على الفاتورة المبسطة.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
العنصر الفارغ يعني في العادة أن التصدير يكتب كتلة المرجع قبل توليد رمز الاستجابة السريعة، أو يكتبها لمستند لا يولّد له رمزاً أصلاً. فإن كان المستند يحتاج إلى الرمز فولّده قبل كتابة XML، وإن كانت إجراءاتك لا تُنتج له رمزاً فاحذف كتلة cac:AdditionalDocumentReference الخاصة بالرمز كلها بدل كتابتها فارغة.
رمز الاستجابة السريعة أطول من 500 محرف
صورة القيمة في التقريرlonger_than_500أطول من 500 محرف
ما الخلل
حقل رمز الاستجابة السريعة KSA-14، وهو المحتوى النصي للعنصر cbc:EmbeddedDocumentBinaryObject داخل العنصر cac:AdditionalDocumentReference الذي معرِّفه QR، أطول من 500 محرف. ولا ترصد هذه الملاحظة إلا حزم القواعد السابقة للإصدار 2.0.0: فالقاعدة BR-CL-KSA-14 في الإصدار 3.0.8 من حزمة أدوات التطوير SDK التي تنشرها هيئة الزكاة والضريبة والجمارك كانت تجعل الحد 500 محرف، وكانت رسالتها تنص على تجاوز حد المحارف لحقل رمز الاستجابة السريعة وأن الحد الأقصى لهذا الحقل 500. أما في الإصدار 3.4.8 الذي تقرؤه حزمة القواعد 2.0.0 فالقاعدة نفسها تقبل حتى 1000 محرف، فيجتاز الرمز الذي يتراوح طوله بين 501 و1000 محرف، ويُرصد ما زاد على ذلك بوصفه أطول من 1000 محرف، ولا يحمل هذه الملاحظة تقرير صادر عن الحزمة 2.0.0. وأمران في القاعدة كانا قائمين في الإصدار 3.0.8 وما زالا: أنها تسري على كل فاتورة، ضريبية كانت أو مبسطة، وأن الطول يُقاس على القيمة كما كُتبت تماماً، فالمسافات داخلها تُحسب. وكان الدليل الإرشادي التقني التفصيلي المنشور، الذي يجعل الحقل يسع حتى 700 محرف، يخالف أداة الفحص في الإصدار 3.0.8، وكان حدّ الأداة 500 هو الذي يقرّر.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
لم يعد رمز الاستجابة السريعة الذي يتراوح طوله بين 501 و1000 محرف مرفوضاً، فقد يجتاز المستند الذي رُصدت عليه هذه الملاحظة كما هو في حزمة القواعد 2.0.0: فأعد فحصه قبل تغيير أي شيء. وإن كانت الحمولة أطول مما تتوقع فالأسباب هي نفسها. فالحمولة تسلسل TLV مرمَّز بترميز base64، وترميز base64 أطول من البايتات التي يرمّزها بنحو الثلث. واسم البائع في الحقل 1 أطول الحقول في الغالب: فأرسل الاسم المسجَّل ولا شيء بعده، مع مراعاة أن الحرف العربي يكلّف بايتين في ترميز UTF-8 حيث يكلّف الحرف اللاتيني بايتاً واحداً. وفي المستند الموقَّع تحمل الحقول من 6 إلى 9 بصمة التجزئة والتوقيع والمفتاح العام وتوقيع الختم المميز، وهذه أحجام ثابتة لا سبيل إلى تقليصها. وأداة كتابة XML التي تلفّ نص base64 على عدة أسطر بمسافات بادئة تضيف أحرف نهاية السطر والمسافات، وهي محارف تُحسب ضمن الحد. عالج ذلك في مولّد رمز الاستجابة السريعة أو في قالب التصدير داخل وحدة الفوترة الإلكترونية، لا بقصّ محارف من القيمة المرمَّزة، فذلك يجعل الرمز غير قابل للقراءة.
الفحص الذي يُنفَّذ
منقول حرفياً من ملفات قواعد التحقق التي تنشرها الهيئة، عند الملف والسطر المذكورين أدناه. والتعبير المُنفَّذ هو ما يُقيَّم على المستند، أما التعبير المذكور في التقرير فهو ما يظهر عند الإخفاق، وهما لا يتطابقان دائماً.
التعبير المُنفَّذ
exists(cac:AdditionalDocumentReference[normalize-space(cbc:ID) = 'QR']/cac:Attachment/cbc:EmbeddedDocumentBinaryObject) and (string-length(cac:AdditionalDocumentReference[normalize-space(cbc:ID) = 'QR']/cac:Attachment/cbc:EmbeddedDocumentBinaryObject) > 1000 or string-length(cac:AdditionalDocumentReference[normalize-space(cbc:ID) = 'QR']/cac:Attachment/cbc:EmbeddedDocumentBinaryObject) < 1)
التعبير المذكور في التقرير
exists(cac:AdditionalDocumentReference[normalize-space(cbc:ID) = 'QR']/cac:Attachment/cbc:EmbeddedDocumentBinaryObject) and (string-length(cac:AdditionalDocumentReference[normalize-space(cbc:ID) = 'QR']/cac:Attachment/cbc:EmbeddedDocumentBinaryObject) > 1000 or string-length(cac:AdditionalDocumentReference[normalize-space(cbc:ID) = 'QR']/cac:Attachment/cbc:EmbeddedDocumentBinaryObject) < 1)
كما يرد في الإصدار 3.4.8 من حزمة أدوات التطوير SDK التي تنشرها الهيئة: النسخة المقتبسة هنا هي الملف الذي يتضمنه ذلك الإصدار بايتاً ببايت. والتاريخ في اسم الملف هو الاسم الذي تعطيه الهيئة للملف، أما القواعد فيه فهي قواعد الإصدار 3.4.8.
مثال عملي
مستند اصطناعي من مجموعة الاختبار المقيسة تُرصد عليه هذه القاعدة، تُعرض منه الأسطر التي يختلف فيها عن مستند اجتاز الفحص. ولا يذكر تقرير مطابق سوى صورة القيمة، لا القيمة نفسها.