Business process (BT-23) must be "reporting:1.0".
ماذا يعني هذا؟
العنصر هو cbc:ProfileID، ويُكتب في رأس المستند قبل رقم الفاتورة. واسم الحقل في المواصفة الأوروبية EN 16931 هو BT-23 «نوع عملية الأعمال»، وتُختار له هناك قيمة من قائمة ملفات تعريفية. والمواصفة السعودية اختصرت ذلك الاختيار كله إلى نصّ واحد: reporting:1.0.
وهنا يقع الخطأ الذي يولّد هذا الكود: أن تقرأ اسم الحقل فتجيبه بصدق. النظام الذي يكتب clearance على فاتورة تمرّ بإجازة مسبقة، أو يكتب اسم عمليته، أو ينسخ قيمة Peppol من مثال أوروبي، يصف نفسه وصفًا صحيحًا ويُرفض. الحقل لا يسأل سؤالًا، بل يشترط ثابتًا.
والحرفية تشمل الشكل كله: حروف صغيرة، ونقطتان رأسيتان واحدة، و1.0 بالنقطة. فـReporting:1.0 وreporting:1 وreporting-1.0 نصوص أخرى، ومسافة زائدة أو سطر جديد داخل العنصر نصّ آخر كذلك.
ولا يتغيّر بنوع المستند: القيمة نفسها على الفاتورة الضريبية والمبسطة وإشعاراتهما الدائنة والمدينة، وتبقى reporting:1.0 حتى على مستند يمرّ بإجازة مسبقة لا بتبليغ. وليس في القواعد التي استخرجناها قاعدةٌ أخرى واحدة تتكلم عن BT-23 — فلا شرط ولا استثناء ولا تقييد بعائلة.
وموضعه في الرأس ليس تفصيلًا شكليًّا عند من يكتب موقِّعه بنفسه: في المكتبة التي يستعملها ZATCA Tools تُدرَج كتلة ext:UBLExtensions — وهي التي تحمل الختم والتوقيع — باستبدال نصّي يبحث عن وسم cbc:ProfileID ويضع الكتلة قبله مباشرة. فالعنصر حمّالُ معنى في التحقق وفي التوقيع معًا.
لماذا يحدث؟
مرتّبة من الأشيع إلى الأقل شيوعًا — الأرجح أن سببك في الأول أو الثاني.
- XML مكتوب على مثال أوروبي، فيحمل قيمة ملف Peppol التعريفي للفوترة بدل النص السعودي.
-
الحقل أُجيب بوصف:
clearance، أوreportingبلا إصدار، أوB2C. -
رقم إصدار رُفع باجتهاد مطوّر ظنّه يتتبع إصدار المواصفة:
reporting:2.0. - قيمة مشتقة من متغيّر بيئة أو مفتاح إعداد يميّز بيئة التجربة من الإنتاج.
- مسافة أو سطر جديد داخل العنصر، من تنسيق الملف بعد بنائه.
- حذف العنصر كليًّا. ولا نستطيع أن نجزم لك أيعود غيابه بهذا الكود أم بخطأ مخطط — فنحن نقرأ نصوص القواعد ودرجاتها لا شروط تنفيذها — والعمل الصحيح واحد في الحالين: اكتبه.
كيف تصلحه
3 خطوات، ثم أعد إرسال الفاتورة.
-
1
اكتب الثابت كما هو
العنصر
cbc:ProfileIDبالقيمةreporting:1.0، نصًّا حرفيًّا بلا مسافات محيطة ولا سطر جديد داخله، على كل مستند: فاتورة ضريبية ومبسطة وإشعارًا دائنًا ومدينًا. -
2
ولا تشتقّه من شيء
لا من اسم البيئة، ولا من مفتاح إعداد، ولا من مسار الإجازة أو التبليغ، ولا من جدول في قاعدة البيانات. كل حقل يُشتقّ حقلٌ يستطيع أن يخطئ، وهذا ليس منها: اجعله ثابتًا في الكود.
- 3
بعد التصحيح أعد إرسال الفاتورة. الفاتورة المرفوضة لم تُسجَّل عند الهيئة، فلا تحتاج إشعارًا دائنًا — أرسل الفاتورة الصحيحة نفسها.
هل يمنعه ZATCA Tools؟
نعم، ولا سبيل إلى خلافه أصلًا. القيمة reporting:1.0 حقل خاص في صنف الفاتورة داخل المكتبة، مُهيّأ بها ابتداءً، وله قارئ وليس له ضابط — فلا ZATCA Tools ولا أي مستعمل آخر للمكتبة يستطيع تغييره ولو أراد. ونحن لا نمرّر في حمولتنا قيمة ملف تعريفي أصلًا. تحققنا من ذلك في ملف المكتبة نفسه: العنصر يُكتب من ذلك الحقل الثابت في كل مستند، قبل رقم الفاتورة.
أكواد لها علاقة
أسئلة شائعة
فاتورتي تمرّ بإجازة مسبقة لا بتبليغ — أليست لها قيمة أخرى؟ +
هل هو رقم إصدار ألاحقه؟ +
أين موضعه بالضبط؟ +
ZATCA Tools يبني التوقيع والبصمة والعدّاد والترميز عنك، ويتحقق من البيانات قبل الإرسال. ابدأ مجانًا، وبدون بطاقة ائتمانية.
ابدأ مجانًا