Página 1 de 2
NFE 2.0
Enviado: 23 Nov 2010 09:42
por JAIR RANGEL
Bom dia, amigos !
Instalei a NF-e 2.0 (Programa da Sefaz) em um Cliente. Ao gerar o arquivo de Produtos (TXT), atraves do meu ERP, e importar no Programa da Sefaz, ocorre o seguinte erro: Versão Inválida !
A versão indicada no arquivo TXT de Produtos é a 1.01.
Acontece que já mudei esta versão para vários outros números e ao importar para o programa da sefaz, a mensagem de erro é sempre a mesma: Versão Inválida.
Se alguem passou por isto, por favar me de uma dica, pois não sei mais o que fazer.
Desde já, obrigado !
Jair Rangel
Re: NFE 2.0
Enviado: 23 Nov 2010 17:40
por JAIR RANGEL
Olá !
Após contatos com a equipe de gestão da NFe da Sefaz, consegui obter a versão do layout dos arquivos de integração com o programa da Sefaz. Para quem tiver a mesma dúvida que eu, a versão é 1.02.
Fiz testes e funcionou beleza.
Até a próxima, pessoal !
Jair Rangel
Re: NFE 2.0
Enviado: 25 Nov 2010 09:46
por rapazdarelva
Olá Rangel bom dia.
... eu ainda n fiz nada para a nfe 2.0... teve muitas alterações no txt

? pode me dar umas dicas ??
abraço.
Re: NFE 2.0
Enviado: 07 Dez 2010 18:29
por softcia
Boa Tarde, Alguem poderia me enviar um prg de como gerar o TXT para NFE 2.0.
Sou de Santa Maria, RS.
Mario.
Re: NFE 2.0
Enviado: 09 Dez 2010 22:12
por JoséQuintas
Esse tipo de coisa eu resolvo assim:
Cadastra no programa da Fazenda e exporta.
Ao exportar, vai ver como ele faz, e é só fazer igual.
Obs. ref. à pergunta da versão inválida
Aliás....
Já emiti milhares de notas com o programa da Fazenda e nunca precisei importar produtos.
Algum motivo especial?
Re: NFE 2.0
Enviado: 13 Dez 2010 16:32
por Alexandre Silva
Oi,
Se voce esta usando a versao 2.00 do XML ,vc deve colocar no campo layout o valor 2.00 e na
versao do programa 2.0.4 (eu sempre deixo isso em parametros para o usuario, pois a versao do programa pode mudar)
Voces que usam a nova versao do 2.00 No validador nacional repararam o problema na impressao das parcelas no RODAPE, no modo retrato, se o valor das parcelas da NF for maior que R$ 99,99 (5 digitos) o valor quebra para outra linha, fica muito ruim..
Alquem já percebeu isso ?? ja tentaram mandar e-mail para o suporte deles..
http://www1.receita.fazenda.gov.br/fale ... efault.htm
Antes nao saia essas parcelas e eu colocava formatando com espacos vazios...
Eles deveriam colocar no corpo junto com o valor da fatura ou deixar como estava
Re: NFE 2.0
Enviado: 13 Dez 2010 17:28
por JoséQuintas
Na 1.0 eu acrescentava em informações adicionais.
A diferença é que a 2.0 acrescenta sozinha.
Não é impossível, mas acho difícil eles colocarem ajuste ortográfico na mensagem, pra alinhamento.
Re: NFE 2.0
Enviado: 13 Dez 2010 17:55
por Alexandre Silva
A solucao é muito simples
Eles estao escrevendo
Duplicata - Num 123456/XX Venc.: 12/12/2010 , Valor: 9999.99 esse texto todo ocupa mais de 59 cararteres na fontes atual
Veja como fica para 3 parcelas
Duplicata - Num.: 001505/4-A, Venc.: 10/01/2011, Valor: 594
,35
Duplicata - Num.: 001505/4-B, Venc.: 11/01/2011, Valor: 594
,35
Duplicata - Num.: 001505/4-C, Venc.: 26/01/2011, Valor: 594
,35
Eu fazia assim para cada parcela:
vmsg+='Parc:'+vduplicta+' Vencto:'+dtoc(dtvencto)+' ValorR$:'+alltrim(transf(valorparc,'@e 999,999.99'))+space(vtamadic)
vtamadic = 59 para retrato 79 para paisagem
Mas eles nao precisam fazer isso, pois cada parcela e vencimento já tem a tag no XML. é uma questao de imprimir no Danfe, no lugar certo.. O Acbrmonitor por exemplo sai certinho..lá onde tem a parte de FATURA
Eu lamento que eles fizeram o aplicativo bom mas esqueceram isso na impessao do DANFE..
Se mais pessoas mandarem sugestoes pra eles ou mesmo ligarem.. 0800-978-2338 (Nacional) 0800-170-110 (SP)
espero que corrijam isso.
PS: Em anexo txt no novo formato, pouco mudou.. ver nos itens da venda(produtos) saiu o Genero, e foi acrescentado pedido do cliente e item no final...
Na versao 2.00 o NCM será obrigatorio..
Vejam aqui o que mudou:
http://www.acomsistemas.com.br/conteudo ... layout.asp
Re: NFE 2.0
Enviado: 13 Dez 2010 18:17
por softcia
Boa Tarde, Amigos,
Estou precisando muito de um exemplo de como gerar o TXT ou o XML para a NFE 2.0 em Clipper ou outra linguagem parecida com o formato abaixo.
Me mandaram este exemplo mas é para a antiga e esta faltando informações.
Ex:
Código: Selecionar todos
#define CR chr( 13 )
M->final_linha := CHR( 13 ) + CHR( 10 )
cls
public nhandle
public cbuffer := ''
public taman := 0
public resta := 0
SN:="N"
@ 14,12 SAY "CONFIRMA CONFIRMAR ESTA NOTA " GET RE1
READ
IF SN="S"
erase "C:\Docume~1\ADMINI~1\Desktop\NFE.TXT"
M->arqui_vo := "C:\Docume~1\ADMINI~1\Desktop\NFE.TXT"
nhandle := FCREATE( M->arqui_vo , 0 )
select empresa
emit_cnpj := emp_cnpj
emit_xfant := emp_fantasia
emit_iEst := emp_inscEst
emit_imun := Emp_inscMun
emit_cnae := emp_cnae
select endEmpresa
ende_xlgr := end_LOGRA
ende_nro := END_NUM
ende_compl := END_COMPLE
ende_xba := END_BAIRRO
ende_cnun := END_CODMUN
ende_xmun := END_CIDADE
ende_uf := END_UF
ende_cep := END_CEP
ende_cpais := '1058'
ende_xpais := 'BRASIL'
cabeca := 'A|1.10|'+M->final_linha
FSEEK( nhandle , 0 , 2 )
FWRITE( nhandle , cabeca )
cabeca := 'B|'
cabeca := cabeca + alltrim( ide_cuf ) +'||'
cabeca := cabeca + alltrim(ide_natop ) +'|'
cabeca := cabeca + alltrim(ide_indpag ) +'|'
cabeca := cabeca + alltrim(ide_mod ) +'|'
cabeca := cabeca + alltrim(ide_ser) +'|'
cabeca := cabeca + alltrim(ide_nnf ) +'|'
cabeca := cabeca + alltrim(ide_demi ) +'|'
cabeca := cabeca + alltrim(ide_dsaient) +'|'
cabeca := cabeca + alltrim(ide_tpnf ) +'|'
cabeca := cabeca + alltrim(ide_cmunfg ) +'|'
cabeca := cabeca + alltrim(ide_tpimp ) +'|'
cabeca := cabeca + alltrim(ide_tpemis ) +'|'
cabeca := cabeca + alltrim(ide_cdv ) +'|'
cabeca := cabeca + alltrim(ide_tpamb ) +'|'
cabeca := cabeca + alltrim(ide_finnfe ) +'|'
cabeca := cabeca + alltrim(ide_procemi) +'|'
cabeca := cabeca + alltrim(ide_verproc) +'|'+M->final_linha
FSEEK( nhandle , 0 , 2 )
FWRITE( nhandle , cabeca )
Se pudrem me ajudar assim que eu terminar posto aqui para todos.
Poderei POSTAR os Dbfs e a rotina para emissao do TXT ou XML completo.
Mario
Santa Maria, RS
Tenho esta rotina em Delphi mas é para a Nfe 1.0
Código: Selecionar todos
funcion geraNFE: string;
var
cabeca: string;
EMITENTE: string;
destinatario: string;
RODAPE: string;
PRODUTO: string;
DETALHE: string;
id1: string;
ID2: string;
ID3: string;
vaux: string;
F_L: string;
ITEM: INTEGER;
AVULSO: string;
IMPOSTOS: string;
begin
memo1.Lines.Clear;
f_l := #13#10;
vaux := '9';
ID1 := '';
ID2 := '';
id3 := '';
ID1 := ID1 + 'NOTA FISCAL|1';
memo1.Lines.add(id1);
id2 := 'A|1.10';
memo1.Lines.add(id2);
cabeca := 'B|';
cabeca := cabeca + trim(UF_N(FUNCOES.UFEmpresa)) + '||';
cabeca := cabeca + trim('VENDA PRODUCAO DO ESTAB') + '|';
cabeca := cabeca + trim('0') + '|';
cabeca := cabeca + trim('55') + '|';
cabeca := cabeca + trim('1') + '|';
cabeca := cabeca + trim(vAux) + '|';
cabeca := cabeca + trim(FormatDateTime('yyyy-mm-dd', date)) + '|';
cabeca := cabeca + trim(FormatDateTime('yyyy-mm-dd', date)) + '|';
cabeca := cabeca + trim('0') + '|';
cabeca := cabeca + trim('4316907') + '|';
cabeca := cabeca + trim('1') + '|';
cabeca := cabeca + trim('1') + '|';
cabeca := cabeca + trim('') + '|';
cabeca := cabeca + trim('2') + '|';
cabeca := cabeca + trim('1') + '|';
cabeca := cabeca + trim('0') + '|';
cabeca := cabeca + trim('1.4.2 TESTE') + '|';
memo1.Lines.Add(cabeca);
EMITENTE := 'C|';
EMITENTE := EMITENTE + trim(FUNCOES.NomeEmpresaAtual) + '|';
EMITENTE := EMITENTE + trim(FUNCOES.fantasiaempresaatual) + '|';
EMITENTE := EMITENTE + trim(FUNCOES.InscEstEmpresa) + '||';
EMITENTE := EMITENTE + trim(funcoes.INSCMUNICIPALEMPRESA) + '|';
EMITENTE := EMITENTE + trim(FUNCOES.CNAEEmpresaAtual);
memo1.Lines.Add(EMITENTE);
EMITENTE := '';
EMITENTE := 'C02|' + trim((FUNCOES.CnpjEmpresa)) + '|';
memo1.Lines.Add(EMITENTE);
EMITENTE := '';
EMITENTE := 'C05|' + trim(FUNCOES.EnderecoEmpresa) + '|' + trim(FUNCOES.enderecoNumero);
EMITENTE := EMITENTE + '|' + trim(FUNCOES.EnderecoComplemento) + '|';
EMITENTE := EMITENTE + trim(FUNCOES.BairroEmpresa) + '|' + trim(funcoes.CodigoMunicipioIBGE) + '|';
EMITENTE := EMITENTE + trim(funcoes.CidadeEmpresa) + '|' + trim(FUNCOES.UFEmpresa) + '|';
EMITENTE := EMITENTE + trim(FUNCOES.CepEmpresa) + '|' + trim('1058') + '|';
EMITENTE := EMITENTE + trim('BRASIL') + '|' + alltrim(FUNCOES.TelefoneEmpresa) + '|';
MEMO1.Lines.Add(EMITENTE);
DESTINATARIO := '';
DESTINATARIO := 'E|' + trim(DSCLIENTES.DataSet.FIELDBYNAME('RAZAOSOCIAL').AsString) + '|';
DESTINATARIO := DESTINATARIO + trim(DSCLIENTES.DataSet.FIELDBYNAME('INSCRESTADUAL').AsString) + '|';
DESTINATARIO := DESTINATARIO + trim('') + '|';
MEMO1.Lines.Add(DESTINATARIO);
destinatario := '';
if Length(alltrim(SoNumero(DSClientes.DataSet.fieldbyname('CNPJ').AsString))) > 11 then
DESTINATARIO := 'E02|' + SONUMERO(dsclientes.DataSet.fieldbyname('CNPJ').AsString) + '|'
else
DESTINATARIO := 'E03|' + SONUMERO(dsclientes.DataSet.fieldbyname('CPF').AsString) + '|';
MEMO1.Lines.Add(DESTINATARIO);
DESTINATARIO := '';
DESTINATARIO := 'E05|' + trim(DSCLIENTES.DATASET.FIELDBYNAME('ENDERECO').ASSTRING) + '|' + trim(DSCLIENTES.DATASET.FIELDBYNAME('NUMEND').ASSTRING) + '|';
DESTINATARIO := DESTINATARIO + trim(DSCLIENTES.DATASET.FIELDBYNAME('COMPLEEND').ASSTRING) + '|';
DESTINATARIO := DESTINATARIO + trim(DSCLIENTES.DATASET.FIELDBYNAME('BAIRRO').ASSTRING) + '|' + trim(DSCLIENTES.DATASET.FIELDBYNAME('CODMUN').ASSTRING) + '|';
DESTINATARIO := DESTINATARIO + trim(DSCLIENTES.DATASET.FIELDBYNAME('CIDADE').ASSTRING) + '|' + trim(DSCLIENTES.DATASET.FIELDBYNAME('UF').ASSTRING) + '|';
DESTINATARIO := DESTINATARIO + trim(DSCLIENTES.DATASET.FIELDBYNAME('CEP').ASSTRING) + '|' + trim('1058') + '|';
DESTINATARIO := DESTINATARIO + trim('BRASIL') + '|' + ALLtrim(SONUMERO(DSCLIENTES.DATASET.FIELDBYNAME('TELEFONE').ASSTRING)) + '||';
DESTINATARIO := DESTINATARIO + trim(SONUMERO(DSCLIENTES.DATASET.FIELDBYNAME('INSCRESTADUAL').ASSTRING)) + '|';
MEMO1.Lines.Add(DESTINATARIO);
PRODUTO := '';
DSItensNF.DataSet.First;
ITEM := 0;
while not (DSItensNF.DataSet.Eof) do
begin
INC(ITEM);
PRODUTO := '';
PRODUTO := 'H|' + StrZero(ITEM, 3, 0) + '|';
PRODUTO := PRODUTO + ' ' + trim(DSItensNF.DataSet.FIELDBYNAME('INFORMACOESADICIONAIS').AsString);
PRODUTO := PRODUTO + '|';
MEMO1.Lines.Add(PRODUTO);
DETALHE := '';
detalhe := 'I|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('CODIGO').AsString) + '|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('CODIGOBARRA').AsString) + '|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('NOMEPRODUTO').AsString) + '|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('NCM').AsString) + '|';
detalhe := detalhe + TRIM('') + '|';
detalhe := detalhe + TRIM('') + '|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('CFOP').AsString) + '|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('UNIDADE').AsString) + '|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('QTDE').AsString) + '|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('VALORUNITARIO').AsString) + '|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('SUBTOTAL').AsString) + '|';
detalhe := detalhe + TRIM('') + '|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('UNIDADE').AsString) + '|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('VALORUNITARIO').AsString) + '|';
detalhe := detalhe + TRIM(DSItensNF.DataSet.FIELDBYNAME('SUBTOTAL').AsString) + '|';
detalhe := detalhe + TRIM('0') + '|'; //prod_Vfrete
detalhe := detalhe + TRIM('0') + '|'; //prod_Vseg
detalhe := detalhe + TRIM('0') + '|'; // prod_Vdesc
MEMO1.Lines.Add(DETALHE);
avulso := '';
avulso := 'M' + '|';
MEMO1.Lines.ADD(AVULSO);
avulso := '';
avulso := 'N' + '|';
MEMO1.Lines.ADD(AVULSO);
IMPOSTOS := '';
if DSITENSNF.DATASET.FIELDBYNAME('CST').ASSTRING = '000' then
begin
impostos := '';
impostos := 'N02|0|00|3|' + trim(DSItensNF.DataSet.FIELDBYNAME('SUBTOTAL').AsString) + '|17.00 |' + FloatToStr(DSItensNF.DataSet.FIELDBYNAME('SUBTOTAL').ASFLOAT * 17.00 / 100);
IMPOSTOS := IMPOSTOS + '|';
MEMO1.Lines.ADD(IMPOSTOS);
end;
avulso := '';
avulso := 'O|99999||||999' + '|';
MEMO1.Lines.ADD(AVULSO);
avulso := '';
avulso := 'O08|52';
AVULSO := AVULSO + '|';
MEMO1.Lines.ADD(AVULSO);
avulso := '';
avulso := 'Q' + '|';
MEMO1.Lines.ADD(AVULSO);
avulso := '';
avulso := 'Q02|01|' + trim(DSItensNF.DataSet.FIELDBYNAME('SUBTOTAL').AsString) + '|0.65 |' + FloatToStr(DSItensNF.DataSet.FIELDBYNAME('SUBTOTAL').ASFLOAT * 0.65 / 100);
AVULSO := AVULSO + '|';
MEMO1.Lines.ADD(AVULSO);
avulso := '';
avulso := 'S' + '|';
MEMO1.Lines.ADD(AVULSO);
avulso := '';
avulso := 'S02|01|' + trim(DSItensNF.DataSet.FIELDBYNAME('SUBTOTAL').AsString) + '|3.00|' + FloatToStr(DSItensNF.DataSet.FIELDBYNAME('SUBTOTAL').ASFLOAT * 3.00 / 100);
AVULSO := AVULSO + '|';
MEMO1.Lines.ADD(AVULSO);
RODAPE := '';
rodape := 'W|';
MEMO1.Lines.ADD(RODAPE);
DSItensNF.DataSet.Next;
end;
Re: NFE 2.0
Enviado: 13 Dez 2010 19:00
por JoséQuintas
Pera lá...
Está pedindo um exemplo, e diz que já tem mas é pra versão antiga.
Então não quer um exemplo, quer a rotina pronta.
Aqui eu fiz um troço esquisito, mas que tá dando certo.
Peguei minha rotina antiga de txt 1.0 e incrementei.
Agora ela gera txt e xml ao mesmo tempo, podendo escolher entre 1.0 ou 2.0.
Ficou legal assim, porque quando tenho dúvida, uso o txt pra importar no programa da Fazenda.
E posso testar o XML no programa da Fazenda.
Pode até ser usado o mesmo esquema pra qualquer linguagem de programação.
Uma rotina só de protótipo:
Código: Selecionar todos
mTxt := ""
mXml := ""
GeraId()
GeraEmitente()
GeraDestinatario()
GravaArquivo("nota.txt",mTxt)
GravaArquivo("nota.xml",mXml)
Function GeraId()
mTxt += "NotaFiscal" + mTraco + mCrLf
If mLayout="1"
mTxt += "chaveantiga"
Else
mTxt += "chavenova"
Endif
mXml += XmlTag("nota",NumNota)
If mLayout = "1"
mXml += XmlTag("chave",ChaveAntiga)
Else
mXml += XmlTag("chave",ChaveNova)
Endif
Return NIL
Re: NFE 2.0
Enviado: 14 Dez 2010 08:14
por softcia
Ola.
Como é a sua funcao que gera o XML?
mXml += XmlTag("nota",NumNota)
Mario
Re: NFE 2.0
Enviado: 14 Dez 2010 11:39
por JoséQuintas
A função de gerar o XML é desse jeito que viu.
XmlTag() não gera o XML, gera apenas uma "tag" do xml.
? XmlTag("nota","12345")
Isso retorna:
<nota>12345</nota>
Re: NFE 2.0
Enviado: 14 Dez 2010 11:54
por Marcos Francisco
Amigo
Se não for pedir muito, poste aqui o exemplo de como gerar o TXT ou XLM para a versão da NFE 2.0, estamos com muitas dificuldades.
Obrigado
Marcos
Re: NFE 2.0
Enviado: 14 Dez 2010 13:05
por JoséQuintas
Afinal está com dificuldades no que?
E tem o que pronto?
Quer um jeito prático de gerar XML ou TXT?
Obs. Não usei a formatação do fonte, porque o fonte em si não é importante.
Você tem lá o XML da nota assim:
<emitente>Antonio da silva</emitente><destinatario>Juca da Silva</destinatario>
Coloque no fonte Clipper o XML inteiro.
?? [<emitente>Antonio da silva</emitente><destinatario>Juca da Silva</destinatario>]
Pronto, seu fonte já gera XML da nota, sempre igual, mas gera.
Separe o fonte em blocos, pra facilitar.
?? [<emitente>]
?? [Antonio da Silva]
?? [</emitente>]
?? [<destinatario>]
?? [Juca da Silva]
?? [</destinatario>]
Seu fonte continua fazendo a mesma coisa, só dividiu em linhas o fonte.
Agora é só mudar a parte variável, de acordo com sua base de dados
?? [<emitente>]
?? Trim(empresa->Nome) //[Antonio da Silva]
?? [</emitente>]
?? [<destinatario>]
?? Trim(cliente->Nome) // [Juca da Silva]
?? [</destinatario>]
A partir de um XML existente, chegou-se a um fonte.
A partir daí, só ir ajustando para as variações e melhorando/reduzindo o código.
Mais fácil que isso, só negociando preço.
Re: NFE 2.0
Enviado: 16 Dez 2010 17:28
por Marcos Francisco
JoseQuintas
Eu já utilizo a rotina em Clipper para gerar Nfe em TXT na versão 1.0, utilizando o Emissor da Sefaz , minha duvida e o que alterar na rotina da geração da versão 1.0 para gerar o TXT ou XML da versão 2.0, do Emissor da Sefaz, segundo informações apartir do proximo ano não será mais pemitido a utilização em TXT e sim em XML,
Obrigado pela ajuda.
Marcos