From lxoliva en fsfla.org Mon Jan 29 05:55:58 2018 From: lxoliva en fsfla.org (Alexandre Oliva) Date: Mon, 29 Jan 2018 03:55:58 -0200 Subject: Controle 99 =?utf-8?B?Q2FybsOqIExlw6Nv?= In-Reply-To: (denecir@gmail.com's message of "Fri, 26 Jan 2018 14:19:26 -0200") References: Message-ID: [adicionando a lista] On Jan 26, 2018, Denecir wrote: > Sou desenvolvedor e estou iniciando o desenvolvimento de uma aplicação > contábil que, dentre outras funcionalidades, deve permitir gerar um arquivo > que pode ser importado pelo programa Carnê Leão da Receita Federal. Que legal! Você já tem a aplicação nalgum repositório público de Software Livre? Quem sabe a gente pode colaborar com alguma coisa! > Olhei o Layout mas percebi que o último registro (99), tem um código de > controle que não consigo decifrar como ele é gerado. Se for o mesmo código de controle usado no IRPF, o código fonte de cálculo tá disponível em Java sob LGPL2.1 nos fontes do IRPF-Livre, e também em C sob GPLv3+ nos fontes do "declara", projeto do Thadeu Cascardo. > Depois de muitas pesquisas, encontrei isso: ( > http://www.fsfla.org/ikiwiki/blogs/lxo/2012-10-10-IRPF-LAI) e isso ( > http://www.acessoainformacao.gov.br/precedentes/MF/16853007273201226.pdf). > Vi que sua última postagem falando sobre o assunto foi em 2012 (quase 6 > anos atrás). Sei que no nosso país, as coisas são extremamente burocráticas > mas, como não está garantido, eu te pergunto: "Você tem alguma novidade?". A Receita Federal insistiu até o fim que o código fonte do IRPF é secreto, que se fosse publicado permitiria acesso às bases de dados de contribuintes da Receita Federal que ela deve guardar (mentira), que o código fonte descompilado e publicado não corresponde ao original (mentira) e portanto não pôe em risco as bases de dados, e que o método de cálculo do código de controle é um secretíssimo mecanismo criptográfico desenvolvido em Israel que não pode ser divulgado (mentira), pois já pensou o desastre se alguém descobrisse como se calcula um CRC32? Mesmo ante contradições entre SERPRO e Receita Federal, com os técnicos da Receita Federal tentando acobertar mentiras anteriores, os burocratas acabaram entrando nos malabarismos retóricos para evitar exigir o fornecimento das informações solicitadas, por razões que ainda não consigo entender, mas cansei de brincar disso depois de esgotar todas as instâncias várias vezes em pedidos diversos. Como tudo isso era só pra que eles publicassem o que já é público e notório, não valia o esforço. 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 Brasil GNU Toolchain Engineer From cascardo en cascardo.eti.br Tue Apr 10 03:27:06 2018 From: cascardo en cascardo.eti.br (Thadeu Lima de Souza Cascardo) Date: Tue, 10 Apr 2018 00:27:06 -0300 Subject: declara para IRPF 2018 Message-ID: <20180410032705.GG3130@siri.cascardo.eti.br> Como está muito tarde e trabalhei bastante no código agora à noite, vou ser breve no post. 1) Atualizei o código para 2018, também testando agora declaração completa, rendimentos isentos e exclusivos, e bens. A princípio, não há como informar os novos campos para bens. Mas apenas emitiram alertas no programa privativo, sem impedir a transmissão da declaração. 2) Agora dá pra importar um arquivo gerado para transmissão. Ou seja, se você não sabe como começar a editar um arquivo de entrada pro declara, dá pra importar o arquivo transmitido ano passado e usá-lo pra gerar um arquivo de entrada pro declara. Rápido tutorial para fazê-lo: $ git clone http://git.libreplanetbr.org/declara.git/ $ cd declara/ $ ./bootstrap.sh $ ./configure $ make $ ./src/declara declara> importa arquivo.DEC declara> salva arquivo.txt declara> Ctrl-D $ echo -e "calcula\nresumo\ngera arquivo2.DEC" >> arquivo.txt $ editor arquivo.txt $ ./src/declara arquivo.txt $ rnetclient arquivo2.DEC $ :-) -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 833 bytes Desc: not available URL: From lxoliva en fsfla.org Sun Apr 22 20:13:04 2018 From: lxoliva en fsfla.org (Alexandre Oliva) Date: Sun, 22 Apr 2018 17:13:04 -0300 Subject: IRPF-Livre 2018: pronto para =?utf-8?Q?come=C3=A7ar?= a testar Message-ID: Finalmente terminei a imensa cirurgia de atualização do IRPF-Livre para 2018, particularmente a reorganização na forma de armazenamento e gravação de rendimentos isentos/não tributáveis e com tributação exclusiva na fonte. Ainda não fiz nem preparei para transmissão qualquer declaração com o que está em https://www.fsfla.org/svn/fsfla/software/irpf-livre-2018 mas já gravei e recuperei backups com os vários tipos de rendimentos, então creio que já dá pra começar a usar o código para começar a preparar declarações. Dá até pra tentar gravar para transmitir com o rnetclient, mas convém comparar o arquivo gerado com o do IRPF2018 v1.4 antes de transmitir, e reportar problemas (idealmente com declarações fictícias). Nessa altura, eu não ficaria surpreso se o código de gravação para transmissão capotar ou gerar coisas de mais ou de menos, já que essa parte eu ainda não testei. Mas já dá pra ver se ele tá pelo menos fazendo as contas direito ;-) Qualquer coisa, avisem. Quando eu tiver testado mais (talvez mais tarde, talvez ao longo da semana) eu empacoto uma versão compilada e aviso. 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 Brasil GNU Toolchain Engineer From lxoliva en fsfla.org Wed Apr 25 01:37:07 2018 From: lxoliva en fsfla.org (Alexandre Oliva) Date: Tue, 24 Apr 2018 22:37:07 -0300 Subject: IRPF-Livre 2018 v1.4 r14876 =?utf-8?Q?dispon=C3=ADvel?= In-Reply-To: (Alexandre Oliva's message of "Sun, 22 Apr 2018 17:13:04 -0300") References: Message-ID: On Apr 22, 2018, Alexandre Oliva wrote: > Ainda não fiz nem preparei para transmissão qualquer declaração com o > que está em https://www.fsfla.org/svn/fsfla/software/irpf-livre-2018 Pronto, agora fiz testes suficientes para ficar razoavelmente confiante de que tá funcionando, adicionei algumas umas conveniências, escrevi uma nova seção pro LEIAME com um roteiro para a preparação das declarações que imagino mais comuns, empacotei uma versão compilada, transmiti (com o rnetclient 2017.1) duas declarações feitas com essa versão e publiquei-a em https://www.fsfla.org/~lxoliva/fsfla/irpf-livre/2018/r14876/ Desculpem pela demora. Façam bom proveito, mesmo que seja só pra mandar declarações retificadoras com "ARECEITAFEDE" no lugar do endereço MAC (porque "ARECEITAFEDERAL" não cabe nos 12 caracteres reservados pra isso :-) 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 Brasil GNU Toolchain Engineer From lxoliva en fsfla.org Thu Apr 26 01:10:48 2018 From: lxoliva en fsfla.org (Alexandre Oliva) Date: Wed, 25 Apr 2018 22:10:48 -0300 Subject: IRPF-Livre 2018 v1.4 r14876 =?utf-8?Q?dispon=C3=ADvel?= In-Reply-To: (Alexandre Oliva's message of "Tue, 24 Apr 2018 22:37:07 -0300") References: Message-ID: On Apr 24, 2018, Alexandre Oliva wrote: > On Apr 22, 2018, Alexandre Oliva wrote: >> Ainda não fiz nem preparei para transmissão qualquer declaração com o >> que está em https://www.fsfla.org/svn/fsfla/software/irpf-livre-2018 > Pronto, agora fiz testes suficientes para ficar razoavelmente confiante > de que tá funcionando, adicionei algumas umas conveniências, escrevi uma > nova seção pro LEIAME com um roteiro para a preparação das declarações > que imagino mais comuns, empacotei uma versão compilada, transmiti (com > o rnetclient 2017.1) duas declarações feitas com essa versão e publiquei-a > em https://www.fsfla.org/~lxoliva/fsfla/irpf-livre/2018/r14876/ E pra quem tiver imposto a pagar, hoje implementei funcionalidade para gerar os números do código de barras, para pagamento da DARF da primeira quota. Não tenho planos de empacotar uma nova versão com essa funcionalidade ainda este ano, então, se você quiser usar, vai ter de compilar por conta própria, ou me pedir pra fazer isso até sábado, pra que eu faça no domingo, depois de voltar do FLISOL em Araraquara, pra que você possa gerar a DARF e fazer o pagamento na segunda-feira. Depois disso, o código que eu aprendi a gerar (sem calcular multas ou juros) já não vai mais servir depois do final de abril. -- 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 Brasil GNU Toolchain Engineer From terceiro en softwarelivre.org Mon Apr 30 01:33:06 2018 From: terceiro en softwarelivre.org (Antonio Terceiro) Date: Sun, 29 Apr 2018 22:33:06 -0300 Subject: [PATCH 2/3] declara: retorna 0 se, e somente se, houverem erros In-Reply-To: <20180430013307.25890-1-terceiro@softwarelivre.org> References: <20180430013307.25890-1-terceiro@softwarelivre.org> Message-ID: <20180430013307.25890-2-terceiro@softwarelivre.org> getline() com certeza vai retornar -1 quando o arquivo acabar, então não se pode usar seu valor de retorno como status de saída do programa como um todo. Além disso, como `r` é sobrescrito a cada iteração, precisamos de uma outra variável pra guardar um valor de saída. Caso contrário, se a execução do ultimo comando no arquivo for bem sucedido, o programa vai retornar 0 mesmo se houver erros anteriormente. --- src/declara.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/declara.c b/src/declara.c index f5faa00..995dc31 100644 --- a/src/declara.c +++ b/src/declara.c @@ -37,21 +37,23 @@ static int fileprocess(struct declaracao *dec, int fd) size_t lsz = 0; FILE *f; int r; + int rc = 0; int n = 1; f = fdopen(fd, "r"); if (!f) return -errno; - while ((r = getline(&line, &lsz, f)) > 0) { + while (getline(&line, &lsz, f) > 0) { r = cmd_run(dec, line); if (r < 0) { fprintf(stderr, "Não foi possível executar comando na linha %d: %s\n", n, dec->error ?: strerror(-r)); + rc = r; } n++; } free(line); fclose(f); - return r; + return rc; } static int ttyprocess(struct declaracao *dec) -- 2.17.0 From terceiro en softwarelivre.org Mon Apr 30 01:33:07 2018 From: terceiro en softwarelivre.org (Antonio Terceiro) Date: Sun, 29 Apr 2018 22:33:07 -0300 Subject: [PATCH 3/3] conjuge: melhora grafia de mensagem de erro In-Reply-To: <20180430013307.25890-2-terceiro@softwarelivre.org> References: <20180430013307.25890-1-terceiro@softwarelivre.org> <20180430013307.25890-2-terceiro@softwarelivre.org> Message-ID: <20180430013307.25890-3-terceiro@softwarelivre.org> --- lib/conjuge.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/conjuge.c b/lib/conjuge.c index 3608c3b..bb5651c 100644 --- a/lib/conjuge.c +++ b/lib/conjuge.c @@ -60,7 +60,7 @@ static int run_conjuge(struct declaracao *dec, char **args, int argc) struct conjuge *conjuge; int r; if (argc != 9) { - dec_set_error(dec, "Precise de %d argumentos, recebidos %d.\n", 9, argc); + dec_set_error(dec, "Esperados %d argumentos, recebidos %d.\n", 9, argc); return -EINVAL; } r = conjuge_parse(dec, args); -- 2.17.0 From terceiro en softwarelivre.org Mon Apr 30 01:33:05 2018 From: terceiro en softwarelivre.org (Antonio Terceiro) Date: Sun, 29 Apr 2018 22:33:05 -0300 Subject: [PATCH 1/3] Adiciona arquivos .gitignore Message-ID: <20180430013307.25890-1-terceiro@softwarelivre.org> --- .gitignore | 18 ++++++++++++++++++ test/.gitignore | 4 ++++ 2 files changed, 22 insertions(+) create mode 100644 .gitignore create mode 100644 test/.gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..87f7e56 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +/aclocal.m4 +build-aux +*.cache +/config.h +/configure +deps +.deps +*.in +*.la +.libs +/libtool +*.lo +*.log +Makefile +/src/declara +stamp-h1 +*.status +*.tar.gz diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000..06176bb --- /dev/null +++ b/test/.gitignore @@ -0,0 +1,4 @@ +listtest +listtest.trs +tokentest +tokentest.trs -- 2.17.0 From cascardo en cascardo.eti.br Sun May 13 13:58:35 2018 From: cascardo en cascardo.eti.br (Thadeu Lima de Souza Cascardo) Date: Sun, 13 May 2018 10:58:35 -0300 Subject: [PATCH 1/3] Adiciona arquivos .gitignore In-Reply-To: <20180430013307.25890-1-terceiro@softwarelivre.org> References: <20180430013307.25890-1-terceiro@softwarelivre.org> Message-ID: <20180513135834.GN9207@siri.cascardo.eti.br> On Sun, Apr 29, 2018 at 10:33:05PM -0300, Antonio Terceiro wrote: > --- > .gitignore | 18 ++++++++++++++++++ > test/.gitignore | 4 ++++ > 2 files changed, 22 insertions(+) > create mode 100644 .gitignore > create mode 100644 test/.gitignore > > diff --git a/.gitignore b/.gitignore > new file mode 100644 > index 0000000..87f7e56 > --- /dev/null > +++ b/.gitignore > @@ -0,0 +1,18 @@ > +/aclocal.m4 > +build-aux > +*.cache > +/config.h > +/configure > +deps > +.deps > +*.in > +*.la > +.libs > +/libtool > +*.lo > +*.log > +Makefile > +/src/declara > +stamp-h1 > +*.status > +*.tar.gz > diff --git a/test/.gitignore b/test/.gitignore > new file mode 100644 > index 0000000..06176bb > --- /dev/null > +++ b/test/.gitignore > @@ -0,0 +1,4 @@ > +listtest > +listtest.trs > +tokentest > +tokentest.trs > -- > 2.17.0 Ao aplicar o patch, vi que eu já tinha um .gitignore local, melhor comentado. Vou aplicar o seu patch e depois aplico alguma coisa em cima. Obrigado. Cascardo. From cascardo en cascardo.eti.br Sun May 13 13:59:08 2018 From: cascardo en cascardo.eti.br (Thadeu Lima de Souza Cascardo) Date: Sun, 13 May 2018 10:59:08 -0300 Subject: [PATCH 3/3] conjuge: melhora grafia de mensagem de erro In-Reply-To: <20180430013307.25890-3-terceiro@softwarelivre.org> References: <20180430013307.25890-1-terceiro@softwarelivre.org> <20180430013307.25890-2-terceiro@softwarelivre.org> <20180430013307.25890-3-terceiro@softwarelivre.org> Message-ID: <20180513135907.GO9207@siri.cascardo.eti.br> On Sun, Apr 29, 2018 at 10:33:07PM -0300, Antonio Terceiro wrote: > --- > lib/conjuge.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/conjuge.c b/lib/conjuge.c > index 3608c3b..bb5651c 100644 > --- a/lib/conjuge.c > +++ b/lib/conjuge.c > @@ -60,7 +60,7 @@ static int run_conjuge(struct declaracao *dec, char **args, int argc) > struct conjuge *conjuge; > int r; > if (argc != 9) { > - dec_set_error(dec, "Precise de %d argumentos, recebidos %d.\n", 9, argc); > + dec_set_error(dec, "Esperados %d argumentos, recebidos %d.\n", 9, argc); > return -EINVAL; > } > r = conjuge_parse(dec, args); > -- > 2.17.0 Aplicado. Obrigado. Cascardo. From cascardo en cascardo.eti.br Sun May 13 14:13:47 2018 From: cascardo en cascardo.eti.br (Thadeu Lima de Souza Cascardo) Date: Sun, 13 May 2018 11:13:47 -0300 Subject: [PATCH 2/3] declara: retorna 0 se, e somente se, houverem erros In-Reply-To: <20180430013307.25890-2-terceiro@softwarelivre.org> References: <20180430013307.25890-1-terceiro@softwarelivre.org> <20180430013307.25890-2-terceiro@softwarelivre.org> Message-ID: <20180513141346.GP9207@siri.cascardo.eti.br> On Sun, Apr 29, 2018 at 10:33:06PM -0300, Antonio Terceiro wrote: > getline() com certeza vai retornar -1 quando o arquivo acabar, então não > se pode usar seu valor de retorno como status de saída do programa como > um todo. > > Além disso, como `r` é sobrescrito a cada iteração, precisamos de uma > outra variável pra guardar um valor de saída. Caso contrário, se a > execução do ultimo comando no arquivo for bem sucedido, o programa vai > retornar 0 mesmo se houver erros anteriormente. > --- > src/declara.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/declara.c b/src/declara.c > index f5faa00..995dc31 100644 > --- a/src/declara.c > +++ b/src/declara.c > @@ -37,21 +37,23 @@ static int fileprocess(struct declaracao *dec, int fd) > size_t lsz = 0; > FILE *f; > int r; > + int rc = 0; > int n = 1; > f = fdopen(fd, "r"); > if (!f) > return -errno; > - while ((r = getline(&line, &lsz, f)) > 0) { > + while (getline(&line, &lsz, f) > 0) { > r = cmd_run(dec, line); > if (r < 0) { > fprintf(stderr, "Não foi possível executar comando na linha %d: %s\n", > n, dec->error ?: strerror(-r)); > + rc = r; > } > n++; > } > free(line); > fclose(f); > - return r; > + return rc; > } > > static int ttyprocess(struct declaracao *dec) > -- > 2.17.0 Por causa da codificação do e-mail em ISO-8859-1, tive que fazer uma boa massagem no patch pra conseguir aplicá-lo. Abraços. Cascardo.