Pular para conteúdo

O que a validação local cobre

O nfse valida a DPS antes de assinar, em duas camadas. Tudo o que ele recusa aqui é algo que a Sefin recusaria, e a recusa chega antes de o certificado ser usado.

O schema oficial, inteiro

A DPS é conferida contra os XSDs do pacote v1.01 do Sistema Nacional, os mesmos que a Sefin usa, lidos dos próprios arquivos: ordem e cardinalidade dos elementos, escolhas (CNPJ ou CPF, vDR ou pDR), enumerações, padrões, tamanhos e a assinatura XML-DSig. Cada problema sai com o caminho do campo:

a DPS nao passou no schema oficial (XSD v1.01), e a Sefin a recusaria:
  - /DPS/infDPS/verAplic: "nfse—v0.9.0" nao segue o formato de TSString (...);
    o caractere '—' esta fora do Latin-1 que o schema aceita

O validador é Go puro, sem cgo, e implementa o subconjunto de XSD que esses schemas usam. Se uma versão futura trouxer uma construção nova, ele se recusa a carregar em vez de ignorá-la. Por quê: ADR 0014.

As regras de negócio que o schema não expressa

O que fica de fora, de propósito

As parametrizações municipais. As regras que dependem do convênio do município com o Sistema Nacional — como E0635 e E0640 — só a Sefin conhece. Na lista de códigos de rejeição, são as marcadas como nível 3.

A palavra final é sempre do governo. O trabalho para consultar essas regras antes de enviar está na issue #5.