Melhorias e Novidades do IRPF-Livre

Alexandre Oliva lxoliva en fsfla.org
Mie Mar 3 09:07:09 UTC 2010


Oi,

Só pra repetir aqui com muitos detalhes o que já anunciei bem
resumidamente no identi.ca:

A Receita Federal fez o favor de mudar o formato de arquivo na versão
final do IRPF-Livre 2010.  Também fez a mesma coisa no IRPF2008v3.0,
mexeu um pouquinho na lista de bancos no IRPF2009v2.0, e passou a exigir
declarações com esses (não tão) novos números de versões para quem
precisar fazer retificações.

No próprio dia primeiro, já arrumei o IRPF-Livre 2010 pra gerar arquivos
iguais aos da versão final.  Uma das alterações mais interessantes foi
que o campo ENDERECO_MAC, que era deixado em branco na versão de testes,
agora era preenchido.  Sei lá por que a Receita Federal quer saber o
endereço físico da máquina usada pra preencher uma declaração, nem por
que ela acha que tem o direito de colocar essa informação particular na
declaração assim, na surdina, mas vi aí uma oportunidade bacana pra
“assinar” declarações com o IRPF-Livre.

A oportunidade se consolidou quando descobri que o GCJ / GNU Classpath
ainda não oferece os métodos necessários pra pegar o ENDERECO_MAC da
interface de rede conectada à Internet.  Isso é funcionalidade de Java
1.6.  Ponto negativo pra Receita Federal: pra que que precisava exigir
versão mais nova do Java, se um montão de gente já tem versões mais
antigas perfeitamente funcionais instaladas?  Certamente não é só porque
o OpenJDK 1.6 é Livre, né?  Até porque, de fato, não é: só o IcedTea,
que substitui os pedaços privativos do OpenJDK, é realmente Livre.

Enfim, a solução foi deixar o usuário preencher o campo ENDERECO_MAC
como lhe conviesse: 12 caracteres hexadecimais pra se divertir à
vontade.  Dá pra colocar o valor igual ao determinado pelo IRPF2010, pra
verificar que a declaração fica idêntica bit a bit, aí depois troca pra
outra coisa pra “assinar” a declaração.  Eu, por exemplo, usei
“001F8EEDO300", uma tentativa porca de escrever FREEDOM com hexadecimal.
Mais porca ainda porque consegui colocar uma letra O onde tinha que ser
um zero.  E, sabe o quê?  A declaração foi enviada sem problema algum.
Então, ao que tudo indica, podem deitar e rolar nesse campo:
"RECEITASUCKS", "FORAIRPF2010", "IRPFLIV4EVER".  Claro que, pra fazer
isso, precisa usar o IRPF-Livre pelo menos pra preparar a declaração pro
envio ;-)


Usando essa versão, a r6674, já entreguei declarações minha e da minha
esposa ontem.  O meu amigo lá na agência do Banco do Brasil, quando me
viu chegando com os disquetes na mão, falou “Nossa, já?!?” :-) Levei em
pen-drive também, mas não conseguimos descobrir como usar as interfaces
USB da máquina nova que botaram na mesa dele :-( O sistema é GNU/Linux,
mas há várias razões pra não habilitar USB num banco que não permite aos
funcionários sequer trocar e-mails com clientes.


Descobri, enquanto preparava essas declarações, que o IRPF-Livre (assim
como o IRPF privativo) não fazia alguns cálculos quando lia os dados do
arquivo XML.  Foi uma surpresa: ele faz bastantes contas, mas em
particular o resultado da ficha cônjuge e os totais das fichas de
rendimentos isentos e rendimentos com tributação exclusiva na fonte não
eram recalculados.  Não consegui descobrir o porquê :-(

O resultado: se não fizesse essas contas na mão, a declaração seria
gerada sem uma das linhas, onde deveriam ser sumarizados os rendimentos
isentos (e, se não me engano, também os com tributação exclusiva na
fonte).  Resumos também sairiam tortos, podendo até levar a suspeitas de
tentativa de fraude, apesar de isso não fazer muito sentido, pois são
rendimentos que não geram tributação, ou que já foram tributados, e a
Receita já foi devidamente informada sobre eles.  Como evidência de que
não dá problema, as declarações que entreguei em 2009, com essas linhas
faltando, passaram lisas.

Mesmo assim, achei melhor preparar declarações de retificação, até
porque a Receita Federal continua insistindo que minhas declarações de
2008 dão “Erro de descompctação” (sic).  De repente, corringindo isso,
vai.

Preparei as retificações desde 2007, calculando esses números na mão,
verificando que tava tudo certo, gravei as declarações no disquete junto
com as de 2010, e...  O banco não aceitou as declarações nem de 2008 nem
de 2009, porque foram geradas com versões antigas demais “do IRPF”.
Bom, tecnicamente, não foram, mas como o IRPF-Livre gera declarações
iguaizinhas às do IRPF privativo em que se baseou, ele continuava
dizendo que era versão 1.0.

Lá vou eu então atualizar o IRPF-Livre 2008 e 2009.  Enquanto mexia
nisso, me ocorreu que não custava muito dar um jeito de ele fazer as
contas que não fazia, ainda que na marra.  Fui lá e fiz.  Aproveitei pra
implementar um novo comando que dispensa a dança do grava/restaura pra
recalcular valores derivados dos preenchidos: o comando recalcula agora
faz isso, sem passar por um arquivo intermediário, refazendo as contas e
gravando diretamente no repositório xml.  Muito mais prático ;-)

Enquanto implementava essas coisas, entre elas o cálculo do resultado da
ficha cônjuge, pensei...  Pô...  É chato pacas ficar caçando os números
da declaração do cônjuge, especialmente sem um comandinho que cuspa na
tela o resumo da declaração.  Esse comandinho, ainda não fiz, mas fiz
algo muitíssimo mais útil: um comando que abre a sua declaração, a de
seu cônjuge (que precisa estar no mesmo repositório), faz as contas de
um e de outro e preenche as fichas de Cônjuge nas respectivas
declarações.  E pronto!  Não é o máximo?  Viu, Receita, é por coisas
assim, e muitas outras mais, que esse (e qualquer outro) tipo de
software tinha que ser Livre!

Com as novas versões dos IRPF-Livre 2007, 2008, 2009 e 2010, que acabei
de publicar, todas identificadas como r6675 nos respectivos anos (é o
número da revisão no repositório SVN, cada ano com seu branch), gerei
novas declarações de 2008 e 2009, pra entregar amanhã^Wdaqui a pouco, e
verifiquei que não mudou nada nas declarações de 2010 nem de 2007, como
esperado.  Ufa!, fiz as contas direitinho ;-)

Aproveitei pra fazer um back-port de algumas funcionalidades pra versão
de 2007.  Por exemplo, agora ela imprime o “número do recibo” quando
prepara uma declaração pra entrega, como as mais novas já faziam.  É,
isso mesmo, a Receita Federal chama um hash calculado sobre a declaração
de “número de recibo”, embora não tenha recebido a declaração.  Imagina
que barato a Receita Federal dizer que você não entregou a declaração, e
você chega lá com o número de recibo?  Forçando um pouquinho a barra,
daria até pra gerar um arquivo de recibo, que só a própria Receita ia
poder dizer se é válido ou não.  Agora imagina que barato você ter um
.REC gerado pela Receita e ela dizer que não foi ela que emitiu.  Já
pensou?

Enfim...  Era meio chato achar esse número no arquivo de declaração
anterior, na hora de preparar uma retificação (pra declaração no ano
seguinte é tranquila, o importador já preenche), e mesmo assim ele
aparece no arquivo de declaração sem os dois dígitos verificadores (por
isso que implementei lá por 2008 o comandinho calculaDV, agora também na
versão para 2007), então achei que valia a pena.

Amanhã (ou, no caso, daqui a pouco) vou passar no BB de novo pra
entregar as retificações, aproveitando a tranquilidade bancária de
início de mês.  E aí, salvo relatórios de erros, provavelmente só volto
a esse programa ano que vem.

Saudações Livres,

-- 
Alexandre Oliva, freedom fighter    http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/   FSF Latin America board member
Free Software Evangelist      Red Hat Brazil Compiler Engineer


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