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
Lun Abr 22 16:00:22 UTC 2024


Fiz uma reversão parcial de algumas das alterações.

Estranhamente, as alíquotas das faixas do imposto são melhor reconhecidas e operadas se foram calculadas tal como eu fiz nesta última revisão, e não em sua representação decimal.


Antes desta contribuição/revisão, alguma das tentativas de obter alíquotas efetivas de notação decimal resultavam em um comportamento estranho da parte da divisão responsável por repetir a elevação da potência onde uma base de cálculo de uma declaração completa no valor de R$ 999.000,00, deveria resultar em uma alíquota efetiva de aproximados 26,44%, mas chegava apenas em 7,95% ou similar.

Em 6 de abril de 2024 19:30:17 BRT, Adonay Felipe Nogueira <adfeno.7046 en gmail.com> 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)


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