Em algumas situações em que temos dificuldades na autorização de CFe SAT, a validação de schema nos XMLs de arquivos CFe pode não acusar corretamente o que está causando o problema, isto é comum quando o erro ocorre pelo preenchimento errado de algum campo, e não pela falta dele.

 

Pensando neste cenário, este post irá mostrar como fazer a validação do XML do CFe utilizando o componente CFe SAT da Tecnospeed e o " Emulador Sat Off-line " da Sefaz de São Paulo. A vantagem deste método de validação em relação à validação simples de schema é que desta forma, na validação do XML são aplicadas algumas validações de regras de negócio que a SEFAZ SP também aplica em ambiente de produção.

Então para começarmos, o primeiro passo é instalar e configurar o Emulador Offline da Sefaz SP e fazer a configuração do mesmo (no link disponibilizado acima você será redirecionado à página para fazer o download do instalador e do manual dele).

Em seguida, é preciso fazer a instalação do componente CFe da Tecnospeed , e utilizando uma demonstração (ou até seu próprio sistema), configurar o componente para utilizar o emulador da Sefaz.

Em nosso componente isto é feito facilmente, bastando configurar no ini (ou nas propriedades direto no fonte) o componente para utilizar a Dll do emulador, que fica na pasta C:\SAT\

No ini de configuração, as propriedades ficam desta forma:

Note que os CNPJs da Software House e do Contribuinte, código de Ativação e caminho da Dll do SAT devem ser preenchidos conforme foi definido na instalação do emulador.

 

Após configurarmos o componente para utilizar o emulador, precisamos ativá-lo. Isto é feito abrindo 2 aplicações que o emulador cria: o "Emulador SAT-CFe" e "Ativação SAT-CFe"

Por padrão estas 2 aplicações ficam nas pastas  C:\Program Files (x86)\SAT-CFe\Ativacao\ C:\Program Files (x86)\SAT-CFe\Emulador\ , respectivamente

Feito isto, já podemos colocar na demonstração do componente SAT o XML que queremos validar.

Para fazer isto, abra a demonstração do componente CFe SAT (ou o seu sistema já configurado para usar o emulador), e  passe para o componente o XML que deseja validar.

Em seguida, utilize o botão "Enviar Dados Venda", para que o XML seja enviado ao validador.

Abaixo, segue um exemplo de como fazer isto, com um XML válido :

Em seguida, verifique no "Emulador SAT-CFe" que está aberto qual a mensagem de retorno foi gerada:

No exemplo acima, como utilizamos um XML válido a emissão ocorreu normalmente.

Agora, iremos repetir o processo com um XML que contém um erro . Para simular, alteramos o XML da nota mudando o conteúdo da tag <CST> do ICMS (foi alterado de 00 para 01), sendo o CST 01 um valor não permitido para esta tag.

Após alterar o XML, basta passá-lo novamente para o componete e reenviar.

Com isso, o XML irá cair nas regras de validação, conforme imagem abaixo:

Então, para entendermos o retorno, veja que nas primeiras linhas do último envio, o log acusa um erro no CST do ICMS, acusando o campo como inválido, e abaixo, uma segunda validação indica que o erro estáem um campo do grupo "imposto".

 

Desta forma, conseguimos fazer uma validação eficiente no XML que estamos trabalhando, fazendo o envio do XML pelo componente CFe-Sat e utilizando as regras de validação do emulador SAT da SEFAZ de São Paulo.

 

E caso reste qualquer dúvida no processo, nós da Tecnospeed estamos sempre à disposição para atendê-lo!