BR-KSA-CL-04رمز سبب الإعفاء ليس من الرموز المقبولة
يفحص مطابق ملف XML للفاتورة الإلكترونية في المرحلة الثانية قبل إرساله: تحقق مسبق وفق متطلبات هيئة الزكاة والضريبة والجمارك المنشورة، لا اعتماداً من الهيئة. وتشرح هذه الصفحة قاعدة واحدة هي BR-KSA-CL-04.
خمس عمليات فحص شهرياً في باقة المجان. يُفحص الملف في الذاكرة ولا يُحفظ.
الرسالة كما تنشرها هيئة الزكاة والضريبة والجمارك
[BR-KSA-CL-04]-If VAT category Code (BT-118) is 'Z', or 'E', VAT exemption (or exception) reason code (BT-121) must exist with one of the values from paragraph 11.2.4 of XML implementation standards on Tax exemption (or exception) reason code - specific to Saudi Arabia.
ما الذي يذكره مطابق
مدخل لكل حالة تُذكر فيها هذه القاعدة في التقرير.
صورة القيمة في التقرير
صورة القيمة التي وُجدت — empty وnot_15_digits وما شابههما — لا القيمة نفسها.
رمز سبب الإعفاء ليس من الرموز المقبولة
صورة القيمة في التقريرreason_code_not_in_codelistرمز سبب لا تقبله الهيئة
ما الخلل
يحمل العنصر cbc:TaxExemptionReasonCode في تفصيل خاضع بنسبة الصفر أو معفى من الضريبة أو خارج عن نطاق الضريبة قيمة غير فارغة ليست في قائمة الهيئة الخاصة بفئته. ويرصد الإصدار 3.4.8 من حزمة أدوات التطوير SDK التي تنشرها هيئة الزكاة والضريبة والجمارك ذلك بموجب القاعدة BR-KSA-CL-04 تحذيراً لا خطأً، فالتحذير وحده لا يؤدي إلى رفض المستند. وكانت الإصدارات السابقة (3.0.8) تفحص قائمة واحدة من أربعة عشر رمزاً تشترك فيها الفئتان Z وE؛ أما الإصدار 3.4.8 فيقسم القائمة بحسب الفئة ويضيف إليها فئة الخارج عن نطاق الضريبة: فالفئة Z (الخاضع بنسبة الصفر) تقبل ستة عشر رمزاً هي VATEX-SA-32 وVATEX-SA-33 وVATEX-SA-34-1 إلى VATEX-SA-34-5 وVATEX-SA-35 وVATEX-SA-36 وVATEX-SA-EDU وVATEX-SA-HEA وVATEX-SA-MLTRY وVATEX-SA-DIPLOMAT وVATEX-SA-DUTYFREE وVATEX-SA-ROYALDECREE وVATEX-SA-32(bis)؛ والفئة E (المعفى من الضريبة) تقبل ثلاثة هي VATEX-SA-29 وVATEX-SA-29-7 وVATEX-SA-30؛ والفئة O (الخارج عن نطاق الضريبة) تقبل رمزاً واحداً هو VATEX-SA-OOS. وتُسوَّى المسافات المحيطة قبل المقارنة، وهي فيما عدا ذلك تامة وتراعي حالة الأحرف، فالقيمة vatex-sa-29 بالأحرف الصغيرة ليست القيمة VATEX-SA-29. أما الرمز الخالي أو الغائب فلا يقع هنا: فالقواعد BR-KSA-69 وBR-KSA-23 وBR-KSA-24 ترصد تلك الحالة، واحدة لكل فئة. ومجموعة العقد التي تقرؤها هذه القاعدة مقيَّدة بأعلى المستند، فالتفصيل المتداخل داخل بند فاتورة خارج عنها، ولا تحمل اختباراً بأن يكون النظام الضريبي VAT، فالفئة المرمَّزة Z أو E أو O تحت أي نظام آخر داخلة فيها.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
انظر في الربط بين جدول رموزك الضريبية ورمز سبب الإعفاء. والأسباب المتكرّرة: رمز سبب داخلي من نظامك صُدِّر كما هو؛ ونص السبب كُتب في عنصر الرمز؛ ورمز صحيح في نمط فوترة إلكترونية لدولة أخرى، فلمعيار EN 16931 رموز أسباب خاصة به وليس فيها رمز من رموز VATEX-SA. والتصدير المبني على القواعد الأوروبية كثيراً ما لا يحمل هذا الحقل أصلاً، لأنها تقبل نص السبب وحده. وأيُّ الرموز ينطبق، من الستة عشر للخاضع بنسبة الصفر أو الثلاثة للمعفى أو الواحد للخارج عن نطاق الضريبة، يتوقف على فئة التفصيل، وهو مسألة ضريبية في كل حال، فاحسمه مرة واحدة لكل رمز ضريبي ثم اربطه.
رمز سبب الإعفاء يحتوي على مسافة
صورة القيمة في التقريرreason_code_contains_spaceرمز السبب يحتوي على مسافة
ما الخلل
يحتوي العنصر cbc:TaxExemptionReasonCode في تفصيل خاضع بنسبة الصفر أو معفى من الضريبة أو خارج عن نطاقها على مسافة داخل قيمته. وتكتب هيئة الزكاة والضريبة والجمارك القاعدة BR-KSA-CL-04 شرطين منفصلين، والمخفق هنا هو الثاني: أن توجد القيمة في قائمة فئتها، وألّا تحتوي على مسافة. ويرصد الإصدار 3.4.8 من حزمة أدوات التطوير SDK ذلك تحذيراً لا خطأً، فالتحذير وحده لا يؤدي إلى رفض المستند. وليس الشرطان اختباراً واحداً، ولذلك يُرصد هذا منفصلاً عن الرمز الذي لا وجود له في القائمة. فالانتماء يُختبر بحفّ القيمة بمسافة من كل جانب ثم البحث عن الناتج داخل قائمة الفئة مكتوبةً نصاً واحداً بمسافة مفردة بين أعضائها؛ فالقيمة المؤلَّفة من رمزين منشورين بينهما مسافة، مثل VATEX-SA-29 يتلوه VATEX-SA-29-7 في تفصيل معفى، توجد فعلاً داخل ذلك النص وتفي باختبار الانتماء، ولا يرصدها إلا شرط خلوّ القيمة من المسافة. أما القيمة الفارغة فلا تُرصد هنا أصلاً: فالإصدار 3.4.8 يستثني الرمز الفارغ من القاعدة BR-KSA-CL-04، وترصده بدلاً منها القواعد BR-KSA-69 وBR-KSA-23 وBR-KSA-24.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
القيمة ناتجة عن دمج شيء بشيء. والأسباب المعتادة رمزان ضُمّا لأن الرمز الضريبي يحمل أكثر من سبب إعفاء، ورمز يتبعه وصفه من جدول بحث يعيد التسمية مع المفتاح، وحقل ثابت العرض محشو بمسافات لم تُقلَّم عند التصدير. قلّم القيمة واربط الرمز الضريبي برمز واحد من رموز VATEX-SA. والمسافات المحيطة وحدها ليست موضوع هذه الملاحظة، فهي تُسوَّى قبل الفحص، فالمسافة التي أخفقت واقعة داخل القيمة. وإن كان التوريد يقع فعلاً تحت مادتي إعفاء فالتفصيل يحمل رمزاً واحداً مع ذلك، وأيَّهما يحمل قرارٌ لمن يملك جدول الرموز الضريبية.
التفصيل الخاضع بنسبة الصفر أو المعفى لا يذكر رمز سبب الإعفاء
صورة القيمة في التقريرreason_code_missingرمز السبب غير موجود
ما الخلل
فئة ضريبية مرمَّزة Z، أي خاضعة بنسبة الصفر، أو E، أي معفاة من الضريبة، داخل cac:TaxTotal/cac:TaxSubtotal لا تحمل عنصر cbc:TaxExemptionReasonCode. ولا ترصد هذه الملاحظة بالقاعدة BR-KSA-CL-04 إلا حزم القواعد السابقة للإصدار 2.0.0: فالقاعدة BR-KSA-CL-04 في الإصدار 3.0.8 من حزمة أدوات التطوير SDK التي تنشرها هيئة الزكاة والضريبة والجمارك كانت تشترط الرمز، وتفحصه في قائمة واحدة من أربعة عشر رمزاً من رموز VATEX-SA تشترك فيها الفئتان Z وE، وترفض المستند بدونه. أما في الإصدار 3.4.8 الذي تقرؤه حزمة القواعد 2.0.0 فلا تُذكر القاعدة BR-KSA-CL-04 على رمز غائب أو فارغ، وتفحص الرمز الموجود في قائمة فئته. والرمز الغائب ترصده بدلاً منها القاعدة BR-KSA-69 في التفصيل الخاضع بنسبة الصفر، والقاعدة BR-KSA-23 في التفصيل المعفى، والقاعدة BR-KSA-24 في التفصيل الخارج عن نطاق الضريبة، وكلها بدرجة تحذير؛ فلا يحمل هذه الملاحظة تقرير صادر عن الحزمة 2.0.0.
ما الذي تتحقق منه في وحدة الفوترة الإلكترونية
موضع الرمز هو cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode، وهو خاصية من خصائص التفصيل لا من خصائص البند. وجدول رموزك الضريبية هو موضع الحسم: يحمل كل رمز ضريبي خاضع بنسبة الصفر أو معفى أو خارج عن نطاق الضريبة رمزاً واحداً من قائمة فئته، وهي ستة عشر رمزاً من رموز VATEX-SA للتوريدات الخاضعة بنسبة الصفر، وثلاثة للمعفاة، والرمز VATEX-SA-OOS للخارجة عن نطاق الضريبة. وأكثر الأسباب شيوعاً تصدير مبني على نمط EN 16931 لا يحمل هذا الحقل أصلاً، لأن القواعد الأوروبية تقبل نص السبب وحده. وأيُّ الرموز ينطبق مسألة ضريبية لا مسألة ربط، فاحسمها مرة واحدة لكل رمز ضريبي مع من يملك جدول الرموز الضريبية ثم اربطها.
الفحص الذي يُنفَّذ
منقول حرفياً من ملفات قواعد التحقق التي تنشرها الهيئة، عند الملف والسطر المذكورين أدناه. والتعبير المُنفَّذ هو ما يُقيَّم على المستند، أما التعبير المذكور في التقرير فهو ما يظهر عند الإخفاق، وهما لا يتطابقان دائماً.
التعبير المُنفَّذ
not(exists(cbc:TaxExemptionReasonCode) and ((not(contains(normalize-space(cbc:TaxExemptionReasonCode), ' ')) and normalize-space(cbc:ID) ='Z' and contains(' VATEX-SA-32 VATEX-SA-33 VATEX-SA-34-1 VATEX-SA-34-2 VATEX-SA-34-3 VATEX-SA-34-4 VATEX-SA-34-5 VATEX-SA-35 VATEX-SA-36 VATEX-SA-EDU VATEX-SA-HEA VATEX-SA-MLTRY VATEX-SA-DIPLOMAT VATEX-SA-DUTYFREE VATEX-SA-ROYALDECREE VATEX-SA-32(bis) ', concat(' ', normalize-space(cbc:TaxExemptionReasonCode), ' ')))) or ((not(contains(normalize-space(cbc:TaxExemptionReasonCode), ' ')) and normalize-space(cbc:ID) ='E' and contains(' VATEX-SA-29 VATEX-SA-29-7 VATEX-SA-30 ', concat(' ', normalize-space(cbc:TaxExemptionReasonCode), ' ')))) or ((not(contains(normalize-space(cbc:TaxExemptionReasonCode), ' ')) and normalize-space(cbc:ID) ='O' and contains(' VATEX-SA-OOS ', concat(' ', normalize-space(cbc:TaxExemptionReasonCode), ' ')))) or normalize-space(cbc:TaxExemptionReasonCode)='' )
كما يرد في الإصدار 3.4.8 من حزمة أدوات التطوير SDK التي تنشرها الهيئة: النسخة المقتبسة هنا هي الملف الذي يتضمنه ذلك الإصدار بايتاً ببايت. والتاريخ في اسم الملف هو الاسم الذي تعطيه الهيئة للملف، أما القواعد فيه فهي قواعد الإصدار 3.4.8.
مثال عملي
مستند اصطناعي من مجموعة الاختبار المقيسة تُرصد عليه هذه القاعدة، تُعرض منه الأسطر التي يختلف فيها عن مستند اجتاز الفحص. ولا يذكر تقرير مطابق سوى صورة القيمة، لا القيمة نفسها.
المستند
bad-71-zero-rated-unknown-reason-code.xml
ما حكم به مطابق
اجتاز
صورة القيمة في التقرير
reason_code_not_in_codelistرمز سبب لا تقبله الهيئة