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....

terça-feira, 28 de dezembro de 2010

NFe uma mão na roda o uma dor de cabeça?

O que você acha da NFe ( o Nota Fiscal Eletrônica ) ?

Existem críticos e apoiadores.

Para contestar a pergunta "NFe uma mão na roda o uma dor de cabeça?",
temos que entender que isto esta diretamente ligado ao uso que você
queira dar para ela.


É evidente que a NFe e uma dor de cabeça para os desenvolvedores de software em
alguns casos, dada a complexidade da tributação Brasileira.
Alguém terá a seguinte pensamento "E só perguntar ao contador que ele responde",
engano gravíssimo!!!
Muitos contadores ( não coloco todos por mesura ) não estão apar dos n requisitos
legais, nos emaranhados das leis Federais, Estaduais e Municipais, alem dos
inúmeros protocolos tributários, acordos e demais dispositivos legais na área
tributaria.
Muitas vezes nem o próprio fiscal do ICMS sabe exatamente sobre a matéria
questionada, e o que é pior, quando existe a divergência entre fiscais, tendo uns
um entendimento e outros outros diferente.
No medio disso empresas ( contribuintes ), desenvolvedores de software
( coitadinho deles!!!! ), e contadores, quebrando a cabeça para ajustar-se
as normas.
Como digo sempre na tributação Brasileira 2 + 2 nem sempre e 4, por que depende da
substituição tributaria, dos acordos interestaduais, de se meu cliente e industria
ou pessoa física, das alíquotas internas, das % de margem de valor adicional, etc.
Ou seja, 2 + 2 pode ser 5, 8, 30 ou talvez 56 depende do produto, do estado origem
e do estado destino. Se temos acordos de ST o se vai saber outro instrumento legal
aparece por ai.

Mais voltando na pergunta, dor de cabeça, é para as empresas que
"Estavam acostumadas a fazer as coisas sem cuidado, empurrado com a barriga",
e para os mal intencionados.
Que gostavam do "jeitinho" para fazer algumas coisas.
Por que, quem não tem uma estrutura organizada, que cuida os detalhes formais
na hora da emissão e no calculo dos impostos, pode tomar um velo de un susto
com a NFe. Sem falar os muitos problemas que terá que resolver por não prestar
atenção aos detalhes formais.

Coloquemos isso de forma que possa ser entendida. Imaginemos que estamos
acostumados a emitir a nota sem verificar que o CNPJ esteja ligado a IE
( colocamos ISENTO, mais não é ), ou também que a UF colocada seja a
UF do CNPJ, o a IE ligada ao município.
O permitimos que o CNPJ o CPF tenham dígitos errados.

Estes erros podem acarretar muita dor de cabeça ao enviar a SEFAZ a nota gerada
com esses problemas.
Que antes podiam passar desapercebido por até os fiscais.

Hoje com a Nfe estes problemas fazem a sefaz rejeitar a NFe.
Isto se traduz em demoras na hora da emissão, com possíveis perdas
na hora de vender.

Ademais entendamos que o fato de a SEFAZ ter a NFe implica algumas vantagens,
para a própria SEFAZ e claro:

1) Ela não tem que estocar pilhas de formulários,
que podem ter informação que não possa ser cruzada.
( Ca entre nos, inúteis a hora de cruzar a informação )

2) A Informação da nota já esta devidamente validada nos padrões formais,
isto faz a informação mais confiável

3) Toda a informação das NFe esta em banco de dados, eu que sou desenvolvedor
sei do poder que da isso.
E tudo que eu quereria, ter todas a notas fiscais em banco de dados,
para depois gerar todos os tipos de relatórios, e fazer todos os tipos de
cruzamento de informação.

4) Estocar em banco de dados e muito mais fácil de manter, de cuidar e os custos
são bem menores, que ter um monte de papel que pela quantidades dele fica
quase inútil para pesquisar.

5) Permite juntar a NFe ao Sintegra ( Sistema Integrado de Informações sobre
Operações Interestaduais com Mercadorias ) e permitir un cruzamento mais
eficiente das informações
6) Deixa a informação tributaria quase em tempo real, eles tem a informação de que
produtos estas vendendo e para quem antes dos produtos sairem da empresa.

Conclusão :
Bom eu sou desenvolvedor, mais mesmo assim, com todas as dificuldades
que eu enfrentei, que não foram poucas ( que legislação complicada a Brasileira )
eu sou um apoiador firme da NFe. E um projeto que veio para somar muito,
e que vai dificultar a vida dos trambiqueiros de sempre que só fazem as
coisas com jeitinho, e para colocar ordem donde era terra de neguem,
embora tivesse legislação.
Muitos vão sentir o peço da corda se fechando.
Mais com certeza é um avanço grande.