Validações de DFE
A biblioteca utiliza uma abordagem de validação programática através da classe DpsValidator. Isso permite validar regras complexas do manual da NFS-e Nacional que não seriam possíveis apenas com tipos simples.
Como funciona
A classe DpsValidator analisa um objeto DpsData e verifica se ele está em conformidade com as regras de negócio e do schema.
Exemplo de Uso
use Nfse\Dto\Nfse\DpsData;
use Nfse\Validator\DpsValidator;
$dps = new DpsData([...]);
$validator = new DpsValidator();
$result = $validator->validate($dps);
if ($result->fails()) {
// Tratar erros
$errors = $result->getErrors();
foreach ($errors as $error) {
echo "Erro: $error\n";
}
}
Regras Implementadas
Atualmente, o validador verifica regras essenciais como:
- Prestador: Obrigatório em todos os documentos.
- Endereço do Prestador: Obrigatório quando o prestador não for o próprio emitente da nota (Regra E0129).
- Tomador Identificado: Se o tomador for identificado (CPF/CNPJ/NIF), o endereço torna-se obrigatório.
- Estrangeiros: Se o tomador for identificado por NIF, o endereço no exterior (
enderecoExterior) é obrigatório. - Endereço Nacional: Para tomadores nacionais, o código do município IBGE é obrigatório.
Ambiente de Testes
As validações são testadas exaustivamente em tests/Unit/Validator/DpsValidatorTest.php para garantir que os documentos gerados sejam aceitos pela API da SEFIN Nacional.