Pular para o conteúdo
getnextpdf.com

Enterprise edição

Invoice — Referência Profunda

O módulo Invoice tem três superfícies independentes: incorporação, validação e execução de regras Schematron. ZugferdEmbedder e PeppolEmbedder anexam o XML de fatura fornecido pelo chamador a um carregador PDF/A-4f ou PDF/A-3b e retornam um resultado estruturado. InvoiceXmlValidator executa uma pré-verificação estrutural EN 16931 com severidade selecionável COMPAT ou STRICT. SchematronValidator executa pacotes de regras Schematron pré-compilados em processo e analisa achados SVRL. O NextPDF não gera o XML da fatura; o chamador fornece e é responsável pelo payload.

Esta capacidade é fornecida no NextPDF Enterprise (nextpdf/enterprise) e é ativada com um envelope de licença de nível Enterprise. Uma implantação sem esse direito não carrega as classes da capacidade. Compare edições e obtenha uma licença.

Nuance por nível: a detecção e validação de fatura eletrônica é a superfície de nível Pro (módulo Pro Compliance). A incorporação de fatura híbrida, o perfil XRechnung CIUS e o mecanismo Schematron em processo são exclusivos do Enterprise. Não há código de capacidade separado por recurso além do limite do pacote nextpdf/enterprise.

Terminal window
composer require nextpdf/enterprise:^3
SímboloParâmetrosComportamento padrãoRetornaLança ou falha comNotas
ZugferdEmbedder::basic()PdfAManager, FileAttachment, string $xmlDataIncorpora XML CII de perfil BASIC: verificação XmlGuard, validação estrutural, injeção de esquema XMP, anexaçãoZugferdEmbedResultInvalidArgumentException, ZugferdEmbeddingExceptionCaminho rápido; ponto de partida recomendado
ZugferdEmbedder::minimum()PdfAManager, FileAttachment, string $xmlDataMesmo pipeline no perfil MINIMUMZugferdEmbedResultInvalidArgumentException, ZugferdEmbeddingExceptionCaminho rápido
ZugferdEmbedder::create()ZugferdProfile, string $xmlDataEntrada do builder; rejeita XML vazioselfInvalidArgumentExceptionConfigure via withoutValidation(), withDescription()
ZugferdEmbedder::withAfRelationship() / PeppolEmbedder::withAfRelationship()AFRelationship|stringSubstitui o relacionamento padrão /Alternative; controlado pelo regramento de arquivos associadosselfInvalidArgumentExceptionSchema, EncryptedPayload, FormData rejeitados para faturas
ZugferdEmbedder::embed()PdfAManager, FileAttachmentChamada terminal do builder: XmlGuard, validação opcional, verificação do carregador, XMP, anexaçãoZugferdEmbedResultInvalidArgumentException, ZugferdEmbeddingExceptionA falha de validação nomeia o primeiro erro
ZugferdProfile (enum)Casos MINIMUM, BASIC_WL, BASIC, EN16931, EXTENDED, XRECHNUNGXRECHNUNG anexa xrechnung.xml; perfis CII anexam factur-x.xml
ZugferdXmpSchema::apply()XmpMetadata, ZugferdProfileRegistra a descrição RDF do Factur-X e a entrada de esquema de extensão PDF/AXmpMetadataNenhumChamado por embed(); também utilizável diretamente
PeppolEmbedder::invoice() / ::creditNote()PdfAManager, FileAttachment, string $ublXmlIncorpora XML de fatura ou nota de crédito UBL Peppol BIS 3.0PeppolEmbedResultInvalidArgumentException, PeppolEmbeddingExceptionNomes de arquivo padrão invoice.xml / creditnote.xml
PeppolEmbedder::create()string $ublXml, string $filename = 'invoice.xml'Entrada do builder; rejeita XML ou nome de arquivo vazioselfInvalidArgumentExceptionConfigure via withFilename(), withDescription(), withoutSanitization()
PeppolEmbedder::embed()PdfAManager, FileAttachmentVerificação XmlGuard, verificação do carregador, controle do regramento, anexaçãoPeppolEmbedResultInvalidArgumentException, PeppolEmbeddingExceptionNova verificação do regramento ciente do carregador no momento da incorporação
InvoiceXmlValidator::validate()string $xmlData, ZugferdProfile, ?InvoiceValidatorModePré-verificação estrutural EN 16931; severidade COMPAT por padrãoInvoiceValidationResultNão lança; as falhas aparecem como achados de erroO modo resolve o argumento, depois o ambiente, depois COMPAT
InvoiceXmlValidator::isCrossIndustryInvoice()string $xmlDataVerificação de elemento raiz e namespace para payloads CIIboolNão lança; retorna falseSonda de detecção econômica
InvoiceValidatorMode (enum)COMPAT (padrão) mantém achados de BT-24 em aviso; STRICT os promove a errofromEnvironment() recai para COMPAT em valores não definidos ou não reconhecidos
InvoiceValidationResult / InvoiceValidationFindingAgregados imutáveis: isValid, getErrors(), getWarnings(); nível, código e mensagem por achadoInvoiceValidationResult::fail() encapsula um único erro
SchematronValidator::validate()string $xsltPath, string $xmlDataExecuta um XSLT Schematron pré-compilado; analisa o SVRL em achadosSchematronResultInvalidArgumentException para um XSLT ausente ou ilegível; falhas do mecanismo retornam um resultado de erroTempo capturado em durationMs
SchematronValidator::runRules()string $xslPath, string $xmlPayloadAdaptador entre níveis; mapeia achados de erro para objetos RuleViolation do contratolist<RuleViolation>Igual a validate()Achados de nível info são ignorados
SchematronResult / SchematronFindingVeredito, achados, duração; getFailedAssertions(), getSuccessfulReports()SchematronResult::error() marca falhas do mecanismo como inválidas
SchematronCacheInterfaceContrato de cache com detecção de adulteração: getVerified(), set(), computeKey()Falha fechado em incompatibilidade de digest
AtomicRenameSchematronCachestring $cacheDir, bool $atomicRename = true, LoggerInterfaceCache de arquivo verificado por SHA-256 com escritas por renomeação atômicaInvalidArgumentException, SchematronCacheExceptionO diretório deve existir ou poder ser criado, e ser gravável
VersionPinRegistryarray $pins, ?string $sourcePathFixações de conjunto de regras travadas por SHA-256: loadFromLockFile(), get(), verifyArtefact(), regenerateLockFile()VersionPinException, InvalidArgumentException, JsonException em JSON de lock malformadoDigests em branco ou malformados falham fechado
InvoiceContractValidator?SemanticValidatorAdaptador ValidatorInterface entre níveis; pré-verificação estrutural mais regras semânticas profundas do EN 16931ContractResultFalha fechado; erros do mecanismo aparecem como achados de erroVinculado nos caminhos de framework quando nextpdf/premium está instalado
ZugferdContractEmbedderFacturXContractEmbedderAdaptador EmbedderInterface entre níveis; incorporação byte-in / byte-outstring (bytes de PDF)Propaga falhas do delegadoDelega ao mecanismo de reescrita de bytes do nível Pro
ZugferdEmbeddingException, PeppolEmbeddingException, SchematronCacheException, VersionPinExceptionTaxonomia de falhas do móduloTodas estendem RuntimeException
public static function basic(
PdfAManager $pdfAManager,
FileAttachment $fileAttachment,
string $xmlData,
): ZugferdEmbedResult
public function embed(
PdfAManager $pdfAManager,
FileAttachment $fileAttachment,
): ZugferdEmbedResult
public static function invoice(
PdfAManager $pdfAManager,
FileAttachment $fileAttachment,
string $ublXml,
): PeppolEmbedResult
public static function validate(
string $xmlData,
ZugferdProfile $profile,
?InvoiceValidatorMode $mode = null,
): InvoiceValidationResult
public function validate(string $xsltPath, string $xmlData): SchematronResult

Incorporação. ZugferdEmbedder anexa um payload XML UN/CEFACT CII ZUGFeRD 2.4 / Factur-X 1.08 fornecido pelo chamador a um carregador PDF/A. Ele suporta dois carregadores: PDF/A-4f (ISO 19005-4:2020), o carregador moderno preferido, e PDF/A-3b (ISO 19005-3:2012) para compatibilidade retroativa. embed() sempre executa primeiro uma verificação de segurança XmlGuard, depois a validação estrutural, a menos que withoutValidation() tenha sido definido, depois verifica se o carregador suporta arquivos incorporados, injeta a declaração de esquema de extensão XMP por meio de ZugferdXmpSchema e anexa o XML como um arquivo associado. O relacionamento de anexo tem como padrão a recomendação /Alternative do regramento; as substituições passam pelo mesmo regramento, que impõe o conjunto de relacionamentos da ISO 32000-2:2020 §14.13 e o subconjunto de fatura do EN 16931. PeppolEmbedder realiza o equivalente para XML de fatura ou nota de crédito UBL 2.1 Peppol BIS Billing 3.0 fornecido pelo chamador. Nenhum dos incorporadores gera o XML da fatura.

Validação. InvoiceXmlValidator verifica o XML CII em relação às expectativas estruturais do EN 16931: elemento raiz, seções obrigatórias, cardinalidade do cabeçalho, itens de linha onde o perfil os exige e o identificador de especificação BT-24 exigido pela regra de negócio BR-1. InvoiceValidatorMode seleciona a severidade. COMPAT (padrão) informa um BT-24 ausente ou incompatível como um aviso, de modo que um portão booleano de validade não regrida. STRICT torna ambos um erro grave e também afirma a consistência do perfil em relação ao ZugferdProfile declarado, espelhando a semântica dos validadores externos KoSIT / Mustang. O modo resolve na ordem: argumento explícito, depois a substituição de ambiente INVOICE_VALIDATOR_MODE, depois COMPAT. Os resultados são objetos estruturados InvoiceValidationResult / InvoiceValidationFinding; o validador retorna achados em vez de lançar.

Schematron. SchematronValidator executa conjuntos de regras Schematron pré-compilados — as regras .sch CEN EN 16931 compiladas para XSLT em tempo de build — usando o processador XSLT do PHP em processo. Ele analisa o relatório SVRL em objetos SchematronFinding / SchematronResult: asserções com falha tornam-se achados de erro, relatórios bem-sucedidos tornam-se achados de info. Um cache opcional (SchematronCacheInterface, com a implementação de arquivo por renomeação atômica) serve bytes de folha de estilo verificados, indexados por digest de conteúdo mais versão do compilador. VersionPinRegistry fixa cada pacote de regras externo a uma versão travada por SHA-256 e falha fechado em desvio ou digests malformados.

Este módulo produz e verifica dados estruturados de fatura. Ele não afirma que qualquer documento seja uma fatura legalmente conforme, que esteja aprovado pela autoridade tributária ou que sua aceitação por qualquer autoridade seja garantida. O validador verifica apenas o modelo semântico EN 16931 e o contêiner ZUGFeRD / Factur-X / UBL; ele exclui extensões nacionais (por exemplo, o SDI italiano, o Chorus Pro francês, o transporte XRechnung alemão). Como afirma a EN 16931-1, o emissor da fatura é responsável por cumprir as regras da legislação aplicável; este não é um validador de autoridade tributária. Dar suporte a um padrão não é estar em conformidade com ele.

  • XML vazio falha rapidamente: os builders lançam InvalidArgumentException; InvoiceXmlValidator::validate() retorna um resultado com falha.
  • XmlGuard rejeita declarações DOCTYPE, expansão de entidades, payloads superdimensionados e caracteres de controle. Os incorporadores expõem isso como ZugferdEmbeddingException ou PeppolEmbeddingException com a causa preservada.
  • withoutValidation() e withoutSanitization() nunca ignoram a verificação de segurança XmlGuard. Apenas as verificações estruturais de termos de negócio podem ser puladas.
  • Um carregador sem suporte a arquivos incorporados (qualquer coisa além de PDF/A-4f ou PDF/A-3b) lança InvalidArgumentException nomeando as versões aceitas.
  • Um valor AFRelationship não permitido é rejeitado no limite do builder; uma nova verificação do regramento ciente do carregador é executada novamente dentro de embed().
  • COMPAT mantém um BT-24 ausente em severidade de aviso; STRICT torna valores BT-24 ausentes e com perfil incompatível erros graves.
  • SchematronValidator lança apenas para um caminho XSLT ausente ou ilegível. Falhas de transformação ou de análise de SVRL retornam SchematronResult::error() com isValid false.
  • Uma entrada de cache cujos bytes armazenados falham na verificação de digest é removida e a folha de estilo é relida do disco; bytes envenenados nunca são retornados.
  • O processador XSLT é executado com o carregamento de recursos de arquivo e de rede bloqueado e nunca registra funções PHP; document(), xsl:include, xsl:import e result-document não podem carregar recursos.
  • VersionPinRegistry rejeita digests SHA-256 em branco ou malformados na ingestão e na regeneração; verifyArtefact() retorna false em vez de aprovar uma fixação não verificável.
  • Este módulo não realiza nenhuma assinatura criptográfica; o comportamento em modo FIPS está fora do escopo aqui (consulte o módulo Signature).
ComportamentoReferênciaStatus
Modelo semântico central da faturaEN 16931-1:2026 §4Construído em relação a; o emissor permanece responsável
Identificador de especificação (BT-24)EN 16931-1:2026 BR-1Aviso em COMPAT, erro em STRICT
Vinculação de sintaxe UN/CEFACT CIICEN/TS 16931-3-3:2020Incorporação suportada
Vinculação de sintaxe UBL 2.1CEN/TS 16931-3-2:2020Incorporação suportada
Arquivo associado PDF/A-3ISO 19005-3:2012 §6.7.8Carregador suportado
Arquivo incorporado PDF/A-4fISO 19005-4:2020 Annex ACarregador suportado
Valores de relacionamento de arquivo associadoISO 32000-2:2020 §14.13Controlado por regramento
Análise de relatório Schematron / SVRLISO/IEC 19757-3Construído em relação a (fundamentado no produto; padrão não está no corpus de citações)

Construído em relação a, não certificação nem aprovação de autoridade tributária. O NextPDF não possui certificação para nenhum desses padrões. O NextPDF produz faturas estruturadas em conformidade com o modelo de dados EN 16931 e informa achados de regras; ele não produz faturas legalmente conformes, não fornece saída aprovada por autoridade tributária e não garante aceitação. Consulte seus assessores tributários e jurídicos.

  • O mecanismo Schematron requer a extensão PHP ext-xsl; provisioná-la e habilitá-la é responsabilidade do operador.
  • O processamento é em processo e local. Nenhuma chamada de rede de saída ocorre durante a incorporação ou a validação. O transporte nacional de fatura eletrônica, as plataformas de clearance e os sistemas de arquivamento são externos a este módulo.
  • Os pacotes de regras são compilados de .sch para XSLT em tempo de build; o runtime executa apenas folhas de estilo pré-compiladas.
  • As chaves de cache incorporam o salt da versão do compilador (atualmente nextpdf-schxslt-1.0); incrementá-lo invalida os caches implantados sem uma etapa de expurgo.
  • As fixações de pacotes de regras ficam no arquivo de lock em enterprise/config/invoice-versions.lock (VersionPinRegistry::DEFAULT_LOCK_PATH); a CI verifica os artefatos implantados em relação aos digests fixados.
  • Os chamadores entre níveis usam InvoiceContractValidator e ZugferdContractEmbedder; os chamadores nativos do nível Enterprise usam ZugferdEmbedder e InvoiceXmlValidator diretamente.

Esta página documenta apenas o comportamento observável externamente e a superfície de API pública suportada. Caminhos de namespace internos, classes auxiliares, tabelas de mecanismos, nomes de arquivo de runbook e prefixos de tíquete estão fora do escopo.