أكواد الأخطاء والرفض
خطأ BR-KSA-F-06-C19 في زاتكا — معناه وكيف تصلحه
كود الرفض BR-KSA-F-06-C19 يعني أن اسم البائع تجاوز حد الأحرف المسموح. اعرف السبب الحقيقي وعلاقته بترميز الحروف العربية، وكيف تصلحه.
هذا المقال مسودة عملية لم تُراجَع بعد من محاسب ناطق بالعربية. تحقق من المعلومات التنظيمية من المصدر الرسمي قبل الاعتماد عليها في قرار.
إن ظهر لك هذا الكود فالمشكلة ليست في أرقام الفاتورة ولا في حساب الضريبة، بل في طول نص أحد الحقول. وغالباً يكون الحقل هو اسم البائع، والسبب الحقيقي أدق مما يبدو للوهلة الأولى.
ماذا يعني الكود حرفياً؟
الأكواد التي تبدأ بـ BR-KSA-F تخص تنسيق الحقول، أي الشكل لا المضمون. والجزء C19 يشير إلى الحقل رقم ١٩ في قائمة الحقول، وهو اسم البائع (BT-27). فالرسالة كاملةً تعني: قيمة اسم البائع لا تحقق حدود الأحرف المسموح بها.
يوجد كود شقيق قريب منه هو BR-KSA-F-06-C12 ويخص اسم المشتري (BT-44). إن رأيت C12 بدل C19 فالمشكلة نفسها لكن في الطرف الآخر من الفاتورة، والحل واحد.
لماذا يظهر رغم أن الاسم يبدو قصيراً؟
هنا يكمن السبب الذي يربك أغلب المطورين والمحاسبين معاً: الحد يُحسب في كثير من المواضع بالبايتات لا بالحروف.
في ترميز UTF-8 يستهلك الحرف العربي بايتين، بينما يستهلك الحرف اللاتيني بايتاً واحداً. فاسم مثل «مؤسسة النخبة للتجارة والمقاولات» يبدو خمسة وثلاثين حرفاً، لكنه يقارب سبعين بايت.
النتيجة أن أداة تحسب الحروف تظن الاسم ضمن الحد المسموح، بينما يرفضه الفحص لأنه تجاوزه بالبايتات. وهذه المشكلة نفسها هي أكثر أسباب فشل التحقق من رمز الاستجابة السريعة، لأن خانة الطول في ترميز TLV تخصص بايتاً واحداً فقط لطول كل حقل.
الأسباب الأربعة الشائعة
- اسم بائع أو مشتري أطول فعلياً من الحد المسموح
- مسافات أو أسطر جديدة غير مرئية في بداية القيمة أو نهايتها، وهي تُحتسب ضمن الطول
- نص ملصوق من نظام آخر يحمل رموز تنسيق مخفية
- حقل تُرك فارغاً بينما القاعدة تشترط حرفاً واحداً على الأقل
ما الذي يجب ألا تفعله
لا تحذف الفاتورة المرفوضة إن كانت قد صدرت للعميل فعلاً. حذف أو تعديل فاتورة صادرة مخالفة قائمة بذاتها، والتصحيح النظامي يكون بإشعار دائن أو مدين يشير إلى رقم الفاتورة الأصلية.
ولا تكتفِ بتعديل الفاتورة الواحدة. إن كان اسم منشأتك هو الطويل فستتكرر المشكلة في كل فاتورة تصدرها، والإصلاح الصحيح يكون في إعدادات نظام الفوترة لا في المستند الواحد.
الحل خطوة بخطوة
- حدّد الحقل من رمز الخطأ. الرمز
C19يعني اسم البائع، وC12يعني اسم المشتري. رسالة الرفض تذكر اسم الحقل ولا تكتفي برقم السطر، فاقرأها كاملة قبل أن تبحث في الفاتورة. - نظّف القيمة من المسافات المخفية. احذف أي مسافة أو سطر جديد في بداية النص ونهايته. انسخ القيمة إلى محرر نصوص بسيط لترى ما إذا كانت تحمل رموزاً غير مرئية.
- اقصر الاسم إلى الاسم النظامي المختصر. استخدم الاسم كما هو في شهادة التسجيل الضريبي دون إضافات وصفية، وانقل التفاصيل الطويلة مثل النشاط أو اسم الفرع إلى حقل الملاحظات.
- صحّح الإعدادات لا الفاتورة. عدّل اسم البائع في إعدادات نظامك حتى لا تتكرر المشكلة، ثم أعد إصدار الفاتورة أو أصدر إشعاراً مناسباً إن كانت الأصلية قد سُلّمت.
الأسئلة الشائعة
ما الحد الأقصى بالضبط لاسم البائع؟
يختلف الحد بحسب إصدار مواصفة الفوترة الإلكترونية المعمول به، ولذلك لا نذكر رقماً هنا قد يصبح قديماً خلال أشهر. ارجع إلى مواصفة XML المنشورة من الهيئة للإصدار الذي يستخدمه مزوّدك، فهي المرجع الوحيد الملزم.
هل يظهر هذا الخطأ في المرحلة الأولى؟
الكود نفسه يأتي من فحص المرحلة الثانية عند إرسال ملف XML. لكن السبب الجذري — طول الحقول واحتساب الحرف العربي ببايتين — يؤثر أيضاً على رمز QR في المرحلة الأولى.
كيف أتأكد أن الاسم لن يتجاوز الحد قبل الإرسال؟
احسب طول الاسم بالبايتات لا بالحروف. في أداة فاتورلي يُحسب الطول بالبايت عند بناء رمز QR، ويظهر خطأ صريح إذا تجاوزت القيمة الحد بدل إنتاج رمز تالف يبدو سليماً.
المصادر الرسمية
أكواد الرفض التي يشرحها هذا المقال
هذا المحتوى للإرشاد الفني ولا يُغني عن الاستشارة المحاسبية أو القانونية.