Jump to content

dev botao
  • Este tópico foi criado há 2041 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Posted

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

  • Moderadores
Posted
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

 

 

Posted
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
  • Consultores
Posted
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
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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.
  • Este tópico foi criado há 2041 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...