Ir para conteúdo
  • Cadastre-se

Pesquisar na Comunidade

Showing results for tags 'roundabnt'.

  • Search By Tags

    Digite tags separadas por vírgulas
  • Search By Author

Tipo de Conteúdo


Fóruns

  • Fórum Aberto - ACBr
    • Notícias do ACBr
    • Equipamentos testados
    • Base de Conhecimento
    • Dúvidas Gerais sobre o ACBr
    • ACBrSerial
    • ACBrSAT
    • ACBrNFe
    • ACBrDFe
    • Dúvidas sobre TEF
    • Dúvidas sobre PIX
    • ACBrMonitor PLUS
    • ACBrTXT
    • ACBrBoleto
    • ACBrDiversos
    • ACBrTCP
    • ACBrFramework
    • ACBrLIB
  • ACBr Pro
    • Dúvidas gerais
    • Duvidas Privadas
    • ACBrMonitorPLUS
    • NFe/NFCe - Nota Fiscal Eletrônica
    • DFe - Documentos Fiscais Eletrônicos
    • SAT / MFE
    • TEF
    • Boleto
    • ACBrSPED
    • ACBrTXT
    • Paf-ECF
    • Requisitos Fiscais por UF
    • ACBrLIB
  • Outros Assuntos
    • Boteco do ACBr
    • Legislação Fiscal e Tributária
    • Object Pascal - Delphi & Lazarus
    • Banco de Dados
    • Classificados
    • Dúvidas não relacionadas ao ACBr

Categorias

  • ACBr Pro
    • ACBrLib - PRO
    • ACBrMonitorPLUS - PRO
    • Utilitários - PRO
    • Dia do ACBr 1a edição
    • Dia do ACBr 2a edição
    • ACBrLib Android - Pro
  • Download Livre
    • ACBrLib - DEMO
    • ACBrMonitorPLUS - DEMO
    • Demos / Testes / Utilitários
    • Apresentações - Palestras
    • ACBrLib Android - Demo

Calendários

  • Eventos - Palestras - Webinars
  • Prazos SEFAZ
  • Calendário da Comunidade
  • ACBr Papo Pro
  • Feriados Nacionais

Find results in...

Find results that contain...


Data de Criação

  • Início

    End


Data de Atualização

  • Início

    End


Filter by number of...

Data de Registro

  • Início

    End


Grupo


Website URL

Encontrado 3 registros

  1. A exception é gerada ao tentar arredondar o nr 9.41212959024529 em 10 casas. RoundABNT(9.41212959024529,-10) Debugando percebi que na verdade a exception e gerada em uma função do Delphi a SimpleRoundTo. Na unit ACBrUtil na linha 580. PowValue := SimpleRoundTo( FracValue * 10 * Pow, -9) ; // SimpleRoundTo elimina dizimas ; A versão do Delphi que eu uso e a XE. Não sei se em outras versões ou se no Lazarus também ocorre essa exception.
  2. Nunca mandei nada para correção, então não sei como fazer isso, gostaria que se tiver uma forma melhor de fazer que me notifiquem. Na função do RoundABNT, na verificação das regras 2.3 e 2.4 ( regra do par ou ímpar), era observado o valor errado para verificar se o mesmo era par ou ímpar. Regras: function RoundABNT(const AValue: Double; const Digits: SmallInt): Double; var Pow, PowValue, RestPart, FracValue : Extended; IntCalc, FracCalc, LastNumber, IntValue : Int64; Begin Pow := intpower(10, abs(Digits) ); PowValue := AValue / 10 ; IntValue := trunc(PowValue); FracValue := frac(PowValue); PowValue := SimpleRoundTo( FracValue * 10 * Pow, -9) ; // SimpleRoundTo elimina dizimas ; IntCalc := trunc( PowValue ); FracCalc := trunc( frac( PowValue ) * 100); if (FracCalc > 50) then Inc( IntCalc ) else if (FracCalc = 50) then begin LastNumber := trunc( frac( IntCalc / 100) * 10); if odd(LastNumber) then Inc( IntCalc ) else begin RestPart := frac( PowValue * 10 ) ; if RestPart > 0 then Inc( IntCalc ); end ; end ; Result := ((IntValue*10) + (IntCalc / Pow)); end; Alterada a linha: Na variável LastNumber era salvo o ultimo número a ser considerado e na verdade era pra ser salvo o ultimo número anterior a ele. A regra realmente é confusa, mas (infelizmente) existe e temos que segui-la.
  3. Uso o ecfvirtual para gerar NFC-e e SAT com o delphi 7. Ao aplicar um desconto de por exemplo R$ 2,00 na venda de um item é enviado pela procedure TACBrECFVirtualClassCupom.DescAresItem(NumItem: Integer; ADescAcres: Double O desconto de 2 reais é passado como -2 para a função RoundABNT que retorna o valor de -1,99 e não -2 que é esperado. Passar número negativo para para função RoundABNT pode retornar erro enquanto números positivos funcionam normal. Abaixo alteração que resolveu o problema pontualmente. --- ACBrECFVirtual.pas (revision 11135) +++ ACBrECFVirtual.pas (working copy) @@ -1016,8 +1016,14 @@ if ItemCupom.DescAcres <> 0 then raise EACBrECFERRO.create(ACBrStr('Item ('+IntToStrZero(NumItem,3)+') já recebeu Desconto ou Acrescimo.')) ; + if ADescAcres < 0 then + ADescAcres := ADescAcres * -1; + ItemCupom.DescAcres := RoundABNT( ADescAcres, -2); + if ADescAcres > 0 then + ADescAcres := ADescAcres * -1; + fpSubTotal := fpSubTotal + ItemCupom.DescAcres; // Atualiza SubTotal Cupom end;
×
×
  • 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.