Jump to content

Transforme seu banco de dados
em um app mobile!

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Túlio de Pádua

Alterações no layout DANFCe Fast Report Bobina

Recommended Posts

Olá, realizei algumas alterações no layout do DANFCe bobina desenvolvido em Fast. Renomeei o arquivo para "DANFeNFCe5_00.fr3", o adaptando conforme o Manual de Padrões versão 5.0, o último liberado pelo Encat.

Foram necessárias algumas alterações na unit ACBrNFeDANFEFRDM.pas também. No seguintes locais:

1) Na geração do valor a pagar, conforme:

Antes:

FieldByName('ValorApagar').AsFloat  := VProd - VDesc - vICMSDeson + VOutro;

Agora:

FieldByName('ValorApagar').AsFloat  := VProd + FNFe.Total.ISSQNtot.vServ;

Deixei como já está no modelo EscPos, que imagino ser o mais usado e consequentemente o mais apurado. Não concordo com fazer cálculos na impressão do Danfe, os cálculos já devem ser feitos ao gerar o XML.

2) No preenchimento do nome do cliente:

Antes:

if EstaVazio(FieldByName('CNPJCPF').AsString) then
  FieldByName('Consumidor').AsString := ACBrStr('CONSUMIDOR NÃO IDENTIFICADO')
else
  FieldByName('Consumidor').AsString := IfThen(Length(CNPJCPF) = 11, 'CPF: ', 'CNPJ: ') + Trim(FieldByName('CNPJCPF').AsString) + ' ' + trim(FieldByName('XNome').AsString);

Agora:

if EstaVazio(FieldByName('CNPJCPF').AsString) then
  FieldByName('Consumidor').AsString := ACBrStr('CONSUMIDOR NÃO IDENTIFICADO')
else
  FieldByName('Consumidor').AsString := IfThen(Length(CNPJCPF) = 11, 'CONSUMIDOR CPF: ', 'CONSUMIDOR CNPJ: ') + Trim(FieldByName('CNPJCPF').AsString) + ' ' + trim(FieldByName('XNome').AsString);

Apenas inseri o prefixo "CONSUMIDOR" antes do CPF ou do CNPJ do cliente.

3) Na geração do texto da área de mensagem fiscal:

Antes:

if (FNFe.Ide.Modelo = 65) then
begin
  FieldByName('DEmi').AsString := FormatDateTimeBr(FNFe.Ide.DEmi);
  if FNFe.Ide.TpAmb = taHomologacao then
    FieldByName('MensagemFiscal').AsString := ACBrStr('EMITIDA EM AMBIENTE DE HOMOLOGAÇÃO - SEM VALOR FISCAL')
  else
  begin
    if (FNFe.Ide.tpEmis <> teNormal) and EstaVazio(FNFe.procNFe.nProt) then
      FieldByName('MensagemFiscal').AsString := ACBrStr('EMITIDA EM CONTINGÊNCIA'+LineBreak+'Pendente de autorização')
    else
      FieldByName('MensagemFiscal').AsString := ACBrStr('ÁREA DE MENSAGEM FISCAL');
  end;

 . . . .

Agora:

if (FNFe.Ide.Modelo = 65) then
begin
  FieldByName('DEmi').AsString := FormatDateTimeBr(FNFe.Ide.DEmi);

  if (FNFe.Ide.tpEmis <> teNormal) and EstaVazio(FNFe.procNFe.nProt) then
    FieldByName('MensagemFiscal').AsString := ACBrStr('EMITIDA EM CONTINGÊNCIA'+LineBreak+'Pendente de autorização');

  if FNFe.Ide.TpAmb = taHomologacao then
    FieldByName('MensagemFiscal').AsString := FieldByName('MensagemFiscal').AsString+LineBreak+LineBreak+ACBrStr('EMITIDA EM AMBIENTE DE HOMOLOGAÇÃO - SEM VALOR FISCAL');

  if EstaVazio(FieldByName('MensagemFiscal').AsString) then
    FieldByName('MensagemFiscal').AsString := ACBrStr('ÁREA DE MENSAGEM FISCAL');

. . . . 

Alterei para que a frase "EMITIDA EM CONTINGÊNCIA Pendente de autorização" seja gerada sempre que a NFCe estiver pendente, independente do ambiente utilizado (produção ou homologação)

 

Se alguém puder validar e encaminhar ao repositório.

ACBrNFeDANFEFRDM.pas DANFeNFCe5_00.fr3


tulio.jpg.f769746aeef14150d78e571e3a541eb3.jpg

Share this post


Link to post
Share on other sites
58 minutos atrás, Túlio de Pádua disse:

Olá, realizei algumas alterações no layout do DANFCe bobina desenvolvido em Fast.

Obrigado pelo interesse em contribuir.

Não me pareceu correto ignorar descontos e acréscimo no valor a pagar.

O mais correto seria usar a tag vNF como valor a pagar, da mesma forma como é feito no DANFE em EscPos. A soma de vProd + vServ seria o valor total.

  • Like 1

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Share this post


Link to post
Share on other sites
7 minutos atrás, BigWings disse:

Obrigado pelo interesse em contribuir.

Não me pareceu correto ignorar descontos e acréscimo no valor a pagar.

O mais correto seria usar a tag vNF como valor a pagar, da mesma forma como é feito no DANFE em EscPos. A soma de vProd + vServ seria o valor total.

@BigWings, erro meu, você está certo. Eu citei que havia feito conforme o DANFCe em EscPos mas está diferente. O EscPos gera o valor a pagar com o vNF. Alterei para ficar igual.

A ideia é justamente essa, deixar igual ao EscPos, que busca o valor da tag, em vez de fazer conta e correr risco de deixar a soma diferente do XML.

Anexei com essa alteração.

Obrigado.

ACBrNFeDANFEFRDM.pas

  • Like 2

tulio.jpg.f769746aeef14150d78e571e3a541eb3.jpg

Share this post


Link to post
Share on other sites
Em 17/07/2019 at 10:01, Túlio de Pádua disse:

@BigWings, erro meu, você está certo. Eu citei que havia feito conforme o DANFCe em EscPos mas está diferente. O EscPos gera o valor a pagar com o vNF. Alterei para ficar igual.

A ideia é justamente essa, deixar igual ao EscPos, que busca o valor da tag, em vez de fazer conta e correr risco de deixar a soma diferente do XML.

Anexei com essa alteração.

Obrigado.

ACBrNFeDANFEFRDM.pas 93 kB · 1 download

Muito obrigado pela contribuição.
Fiz a implementação baseada nela.
Subi as alterações para o SVN na Revisão  17347.
Pelo que vi está tudo certo.
Queira por favor atualizar, testar e reportar qualquer problema.

Mais uma vez obrigado.

  • Like 1
  • Thanks 1

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...