Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Boa tarde,

Gostaria de sugerir a seguinte modificação para formatação dos campos Quantidade e Valor Unitário no DANFE do FortesReport. Pois tenho clientes que na mesma nota fiscal possuem produtos com 2, 3, ou mais casas decimais de acordo com a unidade de medida do produto. Por esse motivo essa formatação de mais de 2 casas decimais só deveria existir quando necessário.

No arquivo "ACBrNFeDANFeRL.pas" onde está:

sDisplayFormat = '###,###,###,##0.%.*d'

gostaria que fosse alterado para:

sDisplayFormat = '###,###,###,##0.00########';

 

Atualmente utilizo esses valores para atender todo tipo de operação de maneira geral:

ACBrNFeDANFeRL1.CasasDecimais._qCom      := 4;
ACBrNFeDANFeRL1.CasasDecimais._vUnCom := 10;

Conforme exemplos em anexo veja que da forma atual utilizando a quantidade de casas decimais acima o DANFE esta saindo assim "DANFE_ATUAL.PDF" e já com a unit modificada o mesmo respeitou a quantidade de casas decimais necessárias "DANFE_MODIFICADO.PDF"

 

 

DANFE_ATUAL.pdf

DANFE_MODIFICADO.pdf

32150807411612000116550010000008011095463651-nfe.xml

ACBrNFeDANFeRL.pas

  • Curtir 1
  • Moderadores
Postado

Gostei do seu sDisplayFormat :) .. vai QUASE com uma ideia de refatoração  para Danfe Fast Report.  onde  teremos a correção da  formatação dos milhares e decimais;

Segue imagem de teste com erros nos campos ( valor total , Base , Valor icms );

TestedeMilhares_e_decimas_Fast_Report.th

se fosse alterado os tipo (  integer  )

 CasasDecimais._qCom     := 4 
 CasasDecimais._vUnCom := 10;

para String;

  CasasDecimais._qCom     :=  '###,###,###,##0.0000###';
  CasasDecimais._vUnCom :=  '###,###,###,##0.00000######';

Talvez seja uma solução , mas....( Façam seus comentários para ajudar na tomada de decisão ) :)

 

 

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

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Postado (editado)

Boa tarde Carlos,

Bem vinda sua sugestão. Também senti essa necessidade.
Pois tanto a quantidade como o valor unitário terão a formatação de casas decimais somente quando necessário.

Sua implementação deu este bom resultado como os anexos.

Antes

Antes.jpg

Depois

Depois.jpg

Ficou mais limpo a leitura dos valores de quantidade e valor unitário

Editado por denerbuzato
  • Curtir 1
  • Moderadores
Postado (editado)

Daniel , estou desenvolvendo um outra solução , no componente ja temos toda a solução do problema.

Existe a Propriedade : CasasDecimais ( Tag , _Mask_qcom, _Mask_vUnCom , _qcom, _vUnCom )

fIFormatacao =  Tag ( 0 ou 1 )

FCasasDecimaisqCom = _qcom

FCasasDecimaisvUnCom  =_vUnCom

fMask_qCom = _Mask_qcom

 fMask_vUnCom = _Mask_vUnCom

cdsItens.FieldByName('QTDE').AsString         := FormatQuantidade( Prod.qCom);
cdsItens.FieldByName('VALOR').AsString        := FormatValorUnitario(  Prod.vUnCom);

Function TfrlDANFeRLRetrato.FormatQuantidade( dValor : Double ) : String;
begin
  case fIFormatacao of
    0 : Result := FormatFloatBr( dValor , format(sDisplayFormat,  [FCasasDecimaisqCom, 0]));
    1 : Result := FormatFloatBr( dValor , fMask_qCom);
  end;
end;


Function TfrlDANFeRLRetrato.FormatValorUnitario( dValor : Double ) : String;
begin
  case fIFormatacao of
    0 : Result := FormatFloatBr( dValor , format(sDisplayFormat, [FCasasDecimaisvUnCom, 0]));
    1 : Result := FormatFloatBr( dValor , fMask_vUnCom);
  end;
end;

 

Testando ..a solução;

 

Em Danfe Fast Report teremos a mesma solução um pouco diferente mas aregra sera a mesma

 

Function TACBrNFeFRClass.FormatQuantidade( dValor : Double ) : String;
begin
  case FDANFEClassOwner.CasasDecimais.tag of
    0 : Result := FormatFloatBr( dValor , format(sDisplayFormat, [FDANFEClassOwner.CasasDecimais._qCom, 0]));
    1 : Result := FormatFloatBr( dValor , FDANFEClassOwner.CasasDecimais._Mask_qCom);
  end;
end;


Function TACBrNFeFRClass.FormatValorUnitario( dValor : Double ) : String;
begin
  case FDANFEClassOwner.CasasDecimais.tag of
    0 : Result := FormatFloatBr( dValor , format(sDisplayFormat, [FDANFEClassOwner.CasasDecimais._vUnCom, 0]));
    1 : Result := FormatFloatBr( dValor , FDANFEClassOwner.CasasDecimais._Mask_vUnCom);
  end;
end;

Editado por hleorj
Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

  • 2 anos depois...
Postado
Em 26/09/2015 at 15:22, hleorj disse:

Configurando a Solução para resolver o problema acima.

Usando.thumb.png.ec7850f5f674aa41fce5efa

 

 

 

 

 

 

Ola

Hoje surgiu uma situacao em que preciso setar o numero de casas decimais do _qCom em 5, mas soh permite ate 4 casas!

Existe a possibilidade de aumentar isso pra 5 ? sera que a legislacao permite isso?

Posso fazer alteracoes nos fontes e anexar eles aqui!

Abraços

Jair Carlos Müller

  • Este tópico foi criado há 2889 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...
The popup will be closed in 10 segundos...