Перейти к содержимому
getnextpdf.com

Enterprise редакция

Счёт-фактура

NextPDF Enterprise формирует структурированные гибридные счета ZUGFeRD / Factur-X / Peppol-UBL и проверяет XML счёта по модели данных EN 16931 и наборам правил Schematron. Он формирует структурированные счета, соответствующие модели данных, определённой в EN 16931; он не является валидатором налогового органа и не сертифицирует ни один документ.

Эта возможность поставляется в NextPDF Enterprise (nextpdf/enterprise) и активируется лицензионным конвертом уровня Enterprise. Развёртывание без этого права не загружает классы возможности. Сравните редакции и получите лицензию.

Окно терминала
composer require nextpdf/enterprise:^3

Движок Schematron использует расширение PHP ext-xsl. Установите и включите его перед запуском проверки Schematron.

Модуль Invoice имеет три независимые поверхности: встраивание структурированного счёта, проверку XML по EN 16931 и выполнение правил Schematron.

Встраивание. ZugferdEmbedder прикрепляет переданный вызывающим кодом XML-пейлоад ZUGFeRD 2.4 / Factur-X 1.08 UN/CEFACT CII к носителю PDF/A, формируя гибридный счёт. Поддерживаются два формата носителя: PDF/A-4f (ISO 19005-4:2020) — предпочтительный современный носитель, и PDF/A-3b (ISO 19005-3:2012) для обратной совместимости. ZugferdXmpSchema внедряет объявление расширения-схемы XMP для Factur-X, которое требуется носителю. PeppolEmbedder выполняет ту же роль для переданного вызывающим кодом XML счёта или кредит-ноты Peppol BIS Billing 3.0 UBL 2.1, прикрепляя его с правильным отношением связанного файла и MIME-типом. NextPDF не синтезирует XML счёта; вызывающий код предоставляет действительный XML и остаётся эмитентом счёта.

Проверка. InvoiceXmlValidator проверяет XML счёта по семантической модели данных EN 16931 и ожиданиям контейнера ZUGFeRD / Factur-X, включая идентификатор спецификации BT-24, который предписывает бизнес-правило BR-1 стандарта EN 16931. Он работает в одном из двух режимов: COMPAT (по умолчанию; пограничные замечания о кратности EN 16931 сообщаются как предупреждения для сохранения обратной совместимости с существующими фикстурами) и STRICT (кратность BT-24 является жёсткой ошибкой, что отражает семантику внешних валидаторов). Режим выбирается для каждого вызова, переопределением через окружение или политикой соответствия.

Schematron. SchematronValidator запускает предварительно скомпилированные наборы правил Schematron (правила CEN EN 16931 .sch, скомпилированные в XSLT на этапе сборки) над XML счёта с помощью внутрипроцессного XSLT-процессора PHP и разбирает отчёт SVRL в структурированные замечания. Перечисление ZugferdProfile моделирует профили соответствия — MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED и немецкий XRechnung B2G CIUS поверх EN 16931.

Что этот модуль заявляет и чего не заявляет

Заголовок раздела «Что этот модуль заявляет и чего не заявляет»

Этот модуль формирует и проверяет структурированные данные счёта. Он не утверждает, что какой-либо документ является юридически соответствующим счётом, что он одобрен налоговым органом или что он гарантированно будет принят каким-либо органом.

  • Валидатор проверяет только семантическую модель EN 16931 и контейнер ZUGFeRD / Factur-X / UBL. Он не является валидатором налогового органа. Национальные расширения и клиринговые платформы — например итальянская SDI, французская Chorus Pro, немецкий транспорт XRechnung — находятся вне области охвата на транспортном уровне.
  • Как указано в самом EN 16931-1, основная семантическая модель несёт существенную информацию, необходимую электронному счёту для поддержки юридического и фискального соответствия; эмитент счёта отвечает за соблюдение норм соответствующего законодательства. Это не валидатор налогового органа.
  • Поддержка стандарта не равнозначна соответствию ему. Обращайтесь к своим налоговым консультантам и консультантам по соответствию, чтобы оценить нормативную достаточность в вашей юрисдикции.

Модуль намеренно никогда не синтезирует XML счёта. Встраивание, проверка по EN 16931 и выполнение Schematron — это три независимые поверхности над XML, который предоставляет и которым владеет вызывающий код. Благодаря этому NextPDF остаётся производителем и контролёром, но никогда не эмитентом, поскольку правовую ответственность нельзя делегировать библиотеке. По умолчанию проверка использует COMPAT, поэтому пограничное замечание о кратности является предупреждением, а не регрессией. STRICT включается по запросу, когда вам нужна семантика внешнего валидатора. Результат — чёткое разделение: NextPDF сообщает о том, что наблюдает, а эмитент решает, соответствует ли документ закону. Проектный контекст: Счета и электронное выставление счетов.

КлассНазначение
ZugferdEmbedderПрикрепляет ZUGFeRD / Factur-X CII XML к носителю PDF/A-4f или PDF/A-3b.
ZugferdXmpSchemaВнедряет объявление расширения-схемы XMP для Factur-X.
ZugferdProfileПеречисление профилей соответствия (MINIMUM … EXTENDED, XRECHNUNG).
PeppolEmbedderПрикрепляет XML счёта / кредит-ноты Peppol BIS 3.0 UBL к носителю PDF/A.
InvoiceXmlValidatorПроверяет XML по модели данных EN 16931; режим COMPAT или STRICT.
InvoiceValidatorModeПеречисление режима проверки: COMPAT (по умолчанию) или STRICT.
SchematronValidatorЗапускает предварительно скомпилированные наборы правил Schematron; разбирает замечания SVRL.
InvoiceValidationResult / SchematronResultСтруктурированные результаты: профиль, замечания, серьёзности.
use NextPDF\Enterprise\Invoice\ZugferdEmbedder;
use NextPDF\Enterprise\Invoice\ZugferdProfile;
$pdf = ZugferdEmbedder::basic($pdfAManager, $fileAttachment, $ciiXml)
->embed(ZugferdProfile::EN16931);
use NextPDF\Enterprise\Invoice\InvoiceXmlValidator;
use NextPDF\Enterprise\Invoice\InvoiceValidatorMode;
$result = $validator->validate($ciiXml, InvoiceValidatorMode::STRICT);
foreach ($result->findings as $finding) {
$logger->warning('invoice.finding', [
'rule' => $finding->ruleId,
'severity' => $finding->severity->value,
]);
}
// A clean result is one input to your decision, not a compliance verdict.
// The invoice issuer remains responsible for relevant legislation.
  • Корректно сформированный PDF, не несущий распознаваемого пейлоада счёта, даёт результат «не счёт», а не выбрасывает исключение.
  • COMPAT — режим проверки по умолчанию: отсутствие идентификатора спецификации BT-24 сообщается как предупреждение, поэтому места вызова, которые опираются на булев флаг действительности, не регрессируют. Используйте STRICT, чтобы сделать BT-24 жёсткой ошибкой, соответствующей семантике внешних KoSIT / Mustang.
  • Вызывающий код предоставляет XML счёта. NextPDF не генерирует и не исправляет его; пустой список замечаний не делает несоответствующий пейлоад соответствующим.
  • Движку Schematron требуется ext-xsl. Наборы правил компилируются на этапе сборки; во время выполнения исполняется только предварительно скомпилированный XSLT.

Стоимость проверки растёт с размером встроенного XML и числом правил Schematron. Стоимость встраивания растёт с размером носителя и определяется в основном сериализацией PDF/A. Бюджет производительности страницы отражает отрисовку документации, а не пропускную способность по счетам.

Весь разбор XML проходит через усиленный XML-щит: разрешение внешних сущностей отключено (защита от XXE), DOCTYPE отклоняется, а распаковка ограничена. XSLT-процессор работает с отключённой загрузкой ресурсов из сети и файловой системы и никогда не регистрирует функции PHP, поэтому document(), xsl:include, xsl:import и result-document не могут обратиться к сети или диску. Относитесь к XML счёта из недоверенных источников как к враждебному.

XML счёта может содержать персональные, коммерческие и финансовые данные. Обработка выполняется внутри процесса и локально; модуль не делает исходящих сетевых вызовов во время встраивания или проверки. Применяйте собственные меры контроля хранения и минимизации к извлечённому XML и замечаниям.

Безопасная телеметрия и очистка журналов

Заголовок раздела «Безопасная телеметрия и очистка журналов»

Замечания и журналы проверки могут включать идентификаторы правил и значения тегов. Они не включают полные пейлоады счетов. Очищайте или редактируйте значения полей перед пересылкой журналов в общие приёмники, если эти значения конфиденциальны.

ПоведениеСсылкаСтатус
Основная семантическая модель счётаEN 16931-1:2026 §4Реализовано в соответствии; эмитент отвечает за соответствующее законодательство
Идентификатор спецификации (BT-24)EN 16931-1:2026 BR-1Проверяется (предупреждение в COMPAT, ошибка в STRICT)
Синтаксическая привязка UN/CEFACT CIICEN/TS 16931-3-3:2020Встраивание поддерживается
Синтаксическая привязка UBL 2.1CEN/TS 16931-3-2:2020Встраивание поддерживается
Связанный файл PDF/A-3ISO 19005-3:2012 §6.7.8Носитель поддерживается
Встроенный файл PDF/A-4fISO 19005-4:2020 Annex AНоситель поддерживается

Эта таблица фиксирует спецификации, в соответствии с которыми реализован NextPDF Enterprise, и то, что он проверяет. Она не является заявлением о сертификации, одобрении налоговым органом или нормативной достаточности. Эмитент счёта отвечает за соблюдение норм соответствующего законодательства; это не валидатор налогового органа.

Этот модуль не выполняет криптографического подписания. Подписание гибридного счёта и хранение ключей в режиме FIPS находятся вне области охвата здесь; см. модуль Signature.

Основной вход — недоверенный XML счёта. Меры противодействия: разбор с защитой от XXE, отклонение DOCTYPE, ограниченная распаковка, XSLT-процессор с отключённой загрузкой сетевых и файловых ресурсов и отсутствие синтеза утверждений — вызывающий код предоставляет содержимое счёта и владеет им.

  • ZugferdEmbedder / PeppolEmbedder прикрепляют переданный вызывающим кодом XML счёта к носителю PDF/A-4f или PDF/A-3b; NextPDF никогда не синтезирует XML счёта.
  • InvoiceXmlValidator работает в режиме COMPAT (по умолчанию; пограничная кратность EN 16931 — это предупреждение) или STRICT (кратность BT-24 — жёсткая ошибка).
  • SchematronValidator исполняет предварительно скомпилированные наборы правил через внутрипроцессный XSLT-процессор и разбирает замечания SVRL; пустой список замечаний не делает несоответствующий пейлоад соответствующим.
  • Весь разбор XML защищён от XXE: разрешение внешних сущностей отключено, DOCTYPE отклоняется, распаковка ограничена.

Эта страница документирует только внешне наблюдаемое поведение и поддерживаемую публичную поверхность API. Внутренние пути пространств имён, вспомогательные классы, таблицы механизмов, имена файлов runbook и префиксы заявок находятся вне области охвата.

NextPDF Core не генерирует и не проверяет структурированные счета. Развёртывание только с Core может сформировать PDF, но не имеет встраивания ZUGFeRD / Factur-X / Peppol, валидатора EN 16931 и движка Schematron.

В развёртывании только с Pro поддерживаемая поверхность — это обнаружение и проверка электронных счетов уровня Pro для пейлоадов Factur-X / ZUGFeRD. Pro не формирует гибридные носители ZUGFeRD / Factur-X или Peppol-UBL, не добавляет профиль XRechnung CIUS и не запускает внутрипроцессный движок Schematron; конфигурация, запрашивающая формирование, профиль XRechnung CIUS или Schematron в развёртывании только с Pro, не имеет компонента Enterprise, который бы её удовлетворил. См. Pro Compliance для поверхности обнаружения и проверки в Pro.

Внутренние детали механизма остаются во внутренней документации исходного репозитория и находятся вне области охвата этого руководства.

Движку Schematron требуется расширение PHP ext-xsl; его подготовка и включение — обязанность оператора. Обработка выполняется внутри процесса и локально; модуль не делает исходящих сетевых вызовов во время встраивания или проверки. Национальный транспорт электронного выставления счетов, клиринговые платформы и системы архивирования являются внешними по отношению к этому модулю и находятся в зоне ответственности оператора.

NextPDF формирует структурированные счета, соответствующие модели данных, определённой в EN 16931, и сообщает о замечаниях по правилам. Он не формирует «юридически соответствующих счетов», не предоставляет «одобренного налоговым органом» вывода и не гарантирует, что какой-либо счёт будет принят налоговым органом, судом или реестром. Эмитент счёта отвечает за соблюдение норм соответствующего законодательства; это не валидатор налогового органа. Национальные платформы электронного выставления счетов, модели клиринга, мандаты на архивирование и требования к цифровой подписи различаются по юрисдикциям и находятся в зоне ответственности эмитента. Обращайтесь к своим налоговым и юридическим консультантам.