quinta-feira, 30 de dezembro de 2010

Alguns problemas que você enfrentara com PHP e a NFe.

1) Validação do XML com os Schemas fornecidos pelo site da
NFe http://www.nfe.fazenda.gov.br/PORTAL/schemas.aspx.

a) O tipo TIeDest ( IE ) esta originalmente definido como :
value="ISENTO|[0-9]{0,14}", isto não valida
no caso de vazio, mesmo que esteja previsto, {0,14},
significa de 0 até 14 dígitos.
Eu troquei para funcionar por :
value="[0-Z]{0,0}|ISENTO|[0-9]{0,14}"

b) O tipo TString ( string genérico ) esta originalmente
definido como :
value="[!-++]{1}[ -++]{0,}[!-++]{1}|[!-++]{1}"
para poder ser utilizado tem que ser alterado para :
value="[!-++]{1}[ -++]*[!-++]{1}|[!-++]{1}"
a extenção DOM de PHP não valida se utilizamos {0,}, se
o faz com *, o efeito e o mesmo dos dois.

2) Validações de dados da nota
a) Verificar a validez do CNPJ, CPF ( evita rejeição da NFe )
b) Verificar os caracteres especiais em nomes é outros campos
de texto.
c) Email validar previamente que esteja formalmente valido.
EX: díego@terra.com.br, isto não valida na hora de gerar
o XML, e cria transtornos. ( Se alguém achar que é
brincadeira minha, não é não.
Perolas: díego@terra.com.br, nãotem@hotmail.com.

Eu peguei uma função simples, mais efetiva na internet.
[CODE]
function ValidarCorreio( $sCorreio )
{
$regexp="/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i";

if ( !preg_match($regexp, $sCorreio) )
return false;

return true;
}

[/CODE]
d) Validar a IE com as regras definidas pelo estado.
Cada IE tem um o dois dígitos verificadores.
As regras de validação estão no site do
SINTEGRA, www.sintegra.gov.br.

Por hoje e só, mais temos mais por ai....

Nenhum comentário:

Postar um comentário