Re: [IRPF-Livre] Possível erro em src/serpro/ppgd/negocio/Valor.java impacta todas as operações

Adonay Felipe Nogueira adfeno.7046 en gmail.com
Dom Abr 14 12:53:33 UTC 2024


Boas notícias, a revisão r19528 parece resolver o problema da perda de 
precisão. Além disso, agora os valores são arredondados ou truncados 
apenas quando se usa getConteudoFormatado () ou asTxt (), que até onde 
entendo, devem ser usados apenas para gravação, resumo e preparação. Já 
o método converte () opera agora somente com valores em formato que não 
seja porcentagem e nem taxa de câmbio.

Supostamente eu teria que investigar por qual motivo *não precisei* usar 
a outra parte da nova função converteNotacaoPorcentagem (), para 
converter de uma fração para porcentagem (paraFracao = false) em 
getConteudoFormatado () e asTxt (), mas como os cálculos do desconto 
simplificado de 20% (0,2) e da alíquota de 7,5% (0,075) parecem ter sido 
feitos corretamente, e a alíquota efetiva foi exibida corretamente no 
resumo sem precisar do método converteNotacaoPorcentagem (), então 
resolvi deixar assim por ora.

Em 06/04/2024 19:30, Adonay Felipe Nogueira escreveu:
> Favor desconsiderar o anexo que começa com 07 no email anterior, pois 
> ele está incorreto e se refere a outro teste. Sei que não se pode 
> remover um arquivo já publicado, mas segue a cópia de segurança correta 
> gerada pelo IRPF privativo de liberdade do exercício de 2024, ano base 
> 2023.
> 
> Em 06/04/2024 18:52, Adonay Felipe Nogueira escreveu:
>> Em adendo ao relato inicial, segue mais alguns testes e, inclusive, 
>> segue em anexo as declarações geradas pelo próprio IRPF privativo de 
>> liberdade.
>>
>> = Etapas para teste
>>
>> 1. Faça uma declaração nova conforme parâmetros dos subitens abaixo, 
>> ou restaure as cópias de segurança das declarações em anexo, todas as 
>> quais foram geradas pelo próprio IRPF privativo de liberdade, 
>> selecionando a opção pela declaração simplificada.
>>
>> 1.a) Faça uma nova declaração: irpf nova 01234567890
>>
>> 1.b) Em aplicacao/dados/iddeclaracao.xml, insira:
>>       nome="CONTRIBUINTE"
>>       tipoDeclaracao="1"
>>
>> 1.c) Em aplicacao/dados/0123456780/0123456780.xml, adicione um item 
>> vazio em colecaoRendPJTitular.
>>
>> 2.d) irpf recalcula 0123456780
>>
>> 3.e) No novo item em colecaoRendPJTitular, adicione:
>>       NIFontePagadora="01.234.567/0001-20"
>>       nomeFontePagadora="PAGADOR"
>>       rendRecebidoPJ="40.000,00"
>>
>> 2. irpf recalcula 01234567890
>> 3. irpf resumo 01234567890
>>
>> Nas declarações em anexo, o registro 18 (REG_RESUMOSIMPLES) pode ser 
>> usado também para confrontar os valores gerados pelo IRPF-Livre.
>>
>> = Resultados dos testes
>>
>> == 2021, ano base 2020
>>
>> IRPF-Livre 2021 r18092 = 526,42 a pagar
>> IRPF privativo 2021 1.9 = 686,42 a pagar
>> 40.000,00 * (1 - 0,2) * 0,075 - 1.713,58 = 686,42 a pagar
>>
>> == 2022, ano base 2021
>>
>> IRPF-Livre 2022 r19250 = 526,42 a pagar
>> IRPF privativo 2022 1.9 = 686,42 a pagar
>> 40.000,00 * (1 - 0,2) * 0,075 - 1.713,58 = 686,42 a pagar
>>
>> == 2023, ano base 2022
>>
>> IRPF-Livre 2023 r19509 = 526,42 a pagar
>> IRPF privativo 2023 1.5 = 686,42 a pagar
>> 40.000,00 * (1 - 0,2) * 0,075 - 1.713,58 = 686,42 a pagar
>>
>> == 2024, ano base 2023
>>
>> IRPF-Livre 2024 r19523 = 401,61 a pagar
>> IRPF privativo 2024 1.1 = 561,61 a pagar
>> 40.000,00 * (1 - 0,2) * 0,075 - 1.838,39 = 561,61 a pagar
>>
>>
>>
>>
>> Em 31/03/2024 00:18, Adonay Felipe Nogueira escreveu:
>>> Conforme consta na revisão r19523 do irpf-livre-2024, encontrei 
>>> possíveis erros de arredondamento em src/serpro/ppgd/negocio/Valor.java.
>>>
>>> Trata-se da perda de números pois valor retornado é incorreto caso 
>>> pVal tenha mais que duas casas decimais. O problema é mais visível e 
>>> foi encontrado na multiplicação (*), que é usada em alguns locais com 
>>> porcentagens. Falta investigar se também ocorre com outras operações 
>>> matemáticas.
>>>
>>> = Como reproduzir
>>>
>>> 1. Preencha uma declaração com rendimentos tributáveis maiores que o 
>>> limite cujo multiplicador tenha mais que duas casas decimais e mande 
>>> o IRPF-Livre recalcular. Use algo como 
>>> serpro.ppgd.irpf.ModeloDeclaracao.LIMITE_ANUAL_7_MEIO_PORCENT + R$ 1,00.
>>>
>>> 2. Siga a seção "Dicas para encontrar/depurar erros" do LEIAME até o 
>>> passo 5, vá ao final do ~/.jdbrc e insira algo similar ao seguinte, 
>>> trocando o número ao final pelo da linha que usa 
>>> _baseCalculo.operacao ('*', "0,075") no arquivo 
>>> src/serpro/ppgd/irpf/ModeloDeclaracao.java:
>>>
>>>      stop at serpro.ppgd.irpf.ModeloDeclaracao:65
>>>
>>> 3. Continue com os passos da seção e, após as configurações, faça 
>>> 'irpf resumo'.
>>>
>>> 4. Já dentro do jdb (vide LEIAME), use o comando 'run'.
>>>
>>> 5. Se tudo deu certo, o IRPF-Livre estará parado na linha que 
>>> pedimos. Agora exiba a base de cálculo e o resultado da multiplicação 
>>> para comparações futuras:
>>>
>>>      eval _baseCalculo
>>>      eval _baseCalculo.operacao ('*', "0,075")
>>>
>>> 7. Assumindo que _baseCalculo esteja correta, faça a mesma 
>>> multiplicação em outra calculadora. Experimente também multiplicar 
>>> por 0,07.
>>>
>>> = Ambiente de testes
>>>
>>> * Distribuição: GNU+Linux Trisquel 11 Aramo
>>>
>>> * Compilador Eclipse: 3.16.0 (pacote: ecj=3.16.0-1)
>>>
>>> * Versões do OpenJDK Runtime Environment:
>>> ** 11.0.22+7-post-Ubuntu-0ubuntu222.04.1 (pacote: 
>>> openjdk-11-jre-headless:amd64=11.0.22+7-0ubuntu2~22.04.1)
>>> ** 21.0.2+13-Ubuntu-122.04.1 (pacote: 
>>> openjdk-21-jre-headless:amd64=21.0.2+13-1~22.04.1)
>>>
>>> * Versões do depurador jdb:
>>> ** 11.0 (pacote: 
>>> openjdk-11-jdk-headless:amd64=11.0.22+7-0ubuntu2~22.04.1)
>>> ** 21.0 (pacote: openjdk-21-jdk-headless:amd64=21.0.2+13-1~22.04.1)
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 236 bytes
Desc: OpenPGP digital signature
URL: <http://www.fsfla.org/pipermail/softwares-impostos/attachments/20240414/8d316659/attachment.sig>


Más información sobre la lista de distribución Softwares-impostos