Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
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

  • Curtir 2
  • Consultores
Postado
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.

  • Curtir 1
  • Obrigado 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á 1959 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...