КатегорияСхемна грешка (XSD) — изброим тип
Кога се хващаПри XSD валидация, на всяка стойност извън допустимия списък
Типичен сигналcvc-enumeration-valid: Value '…' is not facet-valid with respect to enumeration
Какво значи
Много полета в SAF-T не приемат свободен текст, а изброим списък от кодове (XSD enumeration): кодове на данъци, типове документи, мерни единици, сметки от националния сметкоплан за целите на SAF-T (Приложение № 2 на НАП). Стойност извън списъка е невалидна, колкото и логична да ви се струва:
Сравнението е буквално: главни/малки букви имат значение, Active ≠ active, а кирилска буква, която изглежда като латинска, е различен знак. Част от списъците са вградени в самата схема — например тип на сметката (Active/Passive/Bifunctional), дебит/кредит индикаторът (D/C) или базата на отчитане (A, P, BANK, INSURANCE). Пълните таблици с данъчни кодове, типове документи и мерни единици са в Приложение № 2.
Защо се случва
- Мапингът към номенклатурите не е завършен. Вашите вътрешни кодове (данъчни групи, типове документи, мерни единици) трябва да се преведат към кодовете на НАП. Това е най-трудоемката част от настройката на SAF-T — и всяка непокрита стойност излиза като тази грешка.
- Складовият и счетоводният софтуер ползват различни кодове. Типичното място на разминаване: складовата програма праща своя мерна единица или тип документ, който никой не е мапнал.
- Кирилица вместо латиница.
С(кирилско) иC(латинско) изглеждат еднакво, но са различни знаци. Индикатор „Д“ вместоDе класически пример. - Сметка извън сметкоплана за SAF-T. Вътрешният ви сметкоплан има сметки, които не съществуват в националния сметкоплан за целите на SAF-T — те трябва да се мапнат, а не да се подават директно. Отделно
AccountIDима и шаблон ([1-9][0-9]{2,4}), който отхвърля например сметки, започващи с нула.
Как се поправя
- От съобщението вземете невалидната стойност и елемента. Проверете в справочника на номенклатурите или в Приложение № 2 какви са допустимите кодове за това поле.
- Намерете къде в мапинга вашата вътрешна стойност трябва да се превежда — и я добавете или поправете там, а не в XML файла.
- Съберете всички уникални невалидни стойности от протокола наведнъж и ги мапнете на един път — иначе следващата валидация ще извади следващата липсваща.
- Внимавайте за скрити разлики: регистър на буквите, кирилица/латиница, водещи или крайни интервали.
Пример
Тип на сметка — стойност извън вградения в схемата списък:
<AccountType>активна</AccountType>
<!-- cvc-enumeration-valid: Value
'активна' is not facet-valid
with respect to enumeration
'[Active, Passive, Bifunctional]' -->
<AccountType>Active</AccountType>
<!-- допустими: Active, Passive,
Bifunctional — буквално,
с точния регистър -->
AccountID и DefaultCurrencyCode.Пуснете файла през безплатната проверка: всяка грешка идва с ред, обяснение и съвет. Проверете файла — безплатно, в браузъра.