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