cascardo/declara.git
5 years agoEvita divisão por zero ao calcular alíquota efetiva.
Thadeu Lima de Souza Cascardo [Sat, 20 Apr 2019 10:14:48 +0000 (07:14 -0300)]
Evita divisão por zero ao calcular alíquota efetiva.

Se não há rendimentos tributáveis, uma divisão por zero ocorreria ao calcular a
alíquota efetiva. Considera alíquota igual a zero neste caso.

5 years agoVersão IRPF para 2018.
Thadeu Lima de Souza Cascardo [Mon, 15 Apr 2019 00:41:44 +0000 (21:41 -0300)]
Versão IRPF para 2018.

A versão mínima para transmissão da declaração de 2018 é 160.

5 years agoNão gera linhas de rendimentos exclusivos de total zero.
Thadeu Lima de Souza Cascardo [Fri, 19 Apr 2019 13:13:39 +0000 (10:13 -0300)]
Não gera linhas de rendimentos exclusivos de total zero.

Quando não há um determinado rendimento exclusivo, seu total é zero, e não deve
ser gerada uma linha para determinado tipo de rendimento exclusivo.

5 years agoTelefone é outro campo no detalhe do recibo.
Thadeu Lima de Souza Cascardo [Mon, 30 Apr 2018 20:39:23 +0000 (17:39 -0300)]
Telefone é outro campo no detalhe do recibo.

A partir de 2018, o telefone aparece em um campo diferente no detalhe do
recibo. O campo onde aparecia é um FILLER agora.

5 years agoPagamento de psicólogo é despesa médica.
Thadeu Lima de Souza Cascardo [Mon, 30 Apr 2018 20:38:42 +0000 (17:38 -0300)]
Pagamento de psicólogo é despesa médica.

5 years agoSe total de rendimentos é zero, não gera linha.
Thadeu Lima de Souza Cascardo [Mon, 30 Apr 2018 20:37:40 +0000 (17:37 -0300)]
Se total de rendimentos é zero, não gera linha.

Ao gerar a linha de um tipo de rendimento, se o seu total é zero, a linha não
deve ser gerada.

5 years agoUtiliza contexto na declaração ao gerar rendimentos.
Thadeu Lima de Souza Cascardo [Mon, 30 Apr 2018 20:35:13 +0000 (17:35 -0300)]
Utiliza contexto na declaração ao gerar rendimentos.

O número de linhas é utilizado para obter o rendimento cuja linha será gerada.
No entanto, com o novo formato de 2018, este método não funciona sempre.

A utilização de um ponteiro de uso temporário na declaração resolve o problema,
e é menos sujeito a erros.

5 years agoAdiciona /INSTALL a gitignore
Thadeu Lima de Souza Cascardo [Sun, 13 May 2018 14:12:44 +0000 (11:12 -0300)]
Adiciona /INSTALL a gitignore

5 years agoAdiciona arquivos de teste ao gitignore
Thadeu Lima de Souza Cascardo [Sun, 13 May 2018 14:10:27 +0000 (11:10 -0300)]
Adiciona arquivos de teste ao gitignore

5 years agoAdiciona arquivos de backup a gitignore
Thadeu Lima de Souza Cascardo [Sun, 13 May 2018 14:09:54 +0000 (11:09 -0300)]
Adiciona arquivos de backup a gitignore

5 years agoAdiciona arquivos objetos a gitignore
Thadeu Lima de Souza Cascardo [Sun, 13 May 2018 14:09:27 +0000 (11:09 -0300)]
Adiciona arquivos objetos a gitignore

5 years agoComenta gitignore
Thadeu Lima de Souza Cascardo [Sun, 13 May 2018 14:09:00 +0000 (11:09 -0300)]
Comenta gitignore

5 years agodeclara: retorna 0 se, e somente se, houverem erros
Antonio Terceiro [Mon, 30 Apr 2018 01:33:06 +0000 (22:33 -0300)]
declara: retorna 0 se, e somente se, houverem erros

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.

5 years agoconjuge: melhora grafia de mensagem de erro
Antonio Terceiro [Mon, 30 Apr 2018 01:33:07 +0000 (22:33 -0300)]
conjuge: melhora grafia de mensagem de erro

5 years agoAdiciona arquivos .gitignore
Antonio Terceiro [Mon, 30 Apr 2018 01:33:05 +0000 (22:33 -0300)]
Adiciona arquivos .gitignore

6 years agoPermite importação de declarações.
Thadeu Lima de Souza Cascardo [Mon, 9 Apr 2018 23:13:54 +0000 (20:13 -0300)]
Permite importação de declarações.

Arquivos de declaração gerados para transmissão podem agora ser importados.

A importação não realiza alguns cálculos e, portanto, deve ser utilizada apenas
para salvar novo arquivo, que deve ser reprocessado.

6 years agoNão salva cônjuge caso não haja CPF.
Thadeu Lima de Souza Cascardo [Mon, 9 Apr 2018 23:51:52 +0000 (20:51 -0300)]
Não salva cônjuge caso não haja CPF.

Cônjuge era salvo mesmo quando não havia cônjuge.

6 years agoIndicação de campos vazios em bens.
Thadeu Lima de Souza Cascardo [Tue, 10 Apr 2018 02:58:41 +0000 (23:58 -0300)]
Indicação de campos vazios em bens.

Unidade de medida e registro de imóveis vazios utilizam uma representação
diferente. Ao menos em 2018, bens não imóveis também utilizam tal
representação.

6 years agoMais campos para bens em 2018.
Thadeu Lima de Souza Cascardo [Tue, 10 Apr 2018 02:57:51 +0000 (23:57 -0300)]
Mais campos para bens em 2018.

A partir de 2018, outros dados passam a ser pedidos para alguns tipos de bens.
Tais dados vão todos em todas as linhas de bens.

6 years agoRendimentos isentos e exclusivos em 2018.
Thadeu Lima de Souza Cascardo [Tue, 10 Apr 2018 02:35:40 +0000 (23:35 -0300)]
Rendimentos isentos e exclusivos em 2018.

As linhas mudaram em 2018. A linha simples com totais utilizada em anos
anteriores foi alterada para múltiplas linhas, com o total por sub-código de
rendimento.

Tais sub-códigos também foram introduzidos recentemente. As linhas com
detalhamento também mudaram para linhas que possuem o mesmo sub-código.

6 years agoCritérios de obrigatoriedade.
Thadeu Lima de Souza Cascardo [Tue, 10 Apr 2018 02:33:48 +0000 (23:33 -0300)]
Critérios de obrigatoriedade.

Há outros critérios de obrigatoriedade, como valor total de bens e direitos. Um
dos campos gerados da declaração a ser entregue identifica os diferentes
critérios de obrigatoriedade como bits em seu valor.

6 years agoAlíquota efetiva na declaração completa
Thadeu Lima de Souza Cascardo [Tue, 10 Apr 2018 02:33:24 +0000 (23:33 -0300)]
Alíquota efetiva na declaração completa

6 years agoSuporte inicial a 2018.
Thadeu Lima de Souza Cascardo [Sun, 4 Mar 2018 12:52:16 +0000 (09:52 -0300)]
Suporte inicial a 2018.

Suporte testado para rendimentos de pessoa jurídica.

6 years agoCalcula alíquota efetiva.
Thadeu Lima de Souza Cascardo [Sun, 4 Mar 2018 12:51:29 +0000 (09:51 -0300)]
Calcula alíquota efetiva.

O IRPF 2018 calcula e utiliza o valor de alíquota efetiva no arquivo gerado.

6 years agoImplementa celular.
Thadeu Lima de Souza Cascardo [Sun, 4 Mar 2018 12:48:48 +0000 (09:48 -0300)]
Implementa celular.

A Receita Federal tem um campo para telefone e outro para celular.

6 years agoSuporta carnê leão
Thadeu Lima de Souza Cascardo [Tue, 6 Mar 2018 20:16:23 +0000 (17:16 -0300)]
Suporta carnê leão

6 years agoNão imprime soma de zero a total
Thadeu Lima de Souza Cascardo [Tue, 6 Mar 2018 20:14:45 +0000 (17:14 -0300)]
Não imprime soma de zero a total

6 years agoDistingue pagamentos de titular e dependentes
Thadeu Lima de Souza Cascardo [Tue, 6 Mar 2018 20:14:18 +0000 (17:14 -0300)]
Distingue pagamentos de titular e dependentes

6 years agoSuporta NIT, exigido a partir de 2017
Thadeu Lima de Souza Cascardo [Tue, 6 Mar 2018 20:13:25 +0000 (17:13 -0300)]
Suporta NIT, exigido a partir de 2017

6 years agoCPF e DN de dependentes é Filler em 2017
Thadeu Lima de Souza Cascardo [Tue, 6 Mar 2018 20:12:18 +0000 (17:12 -0300)]
CPF e DN de dependentes é Filler em 2017

6 years agoUsa última versão IRPF 2017
Thadeu Lima de Souza Cascardo [Tue, 6 Mar 2018 20:10:27 +0000 (17:10 -0300)]
Usa última versão IRPF 2017

6 years agoDefine erro para comando conjuge
Thadeu Lima de Souza Cascardo [Tue, 6 Mar 2018 20:09:46 +0000 (17:09 -0300)]
Define erro para comando conjuge

6 years agoMostra outras deduções no modo verboso
Thadeu Lima de Souza Cascardo [Tue, 6 Mar 2018 20:07:52 +0000 (17:07 -0300)]
Mostra outras deduções no modo verboso

6 years agoComentário sobre número de dependentes com instrução
Thadeu Lima de Souza Cascardo [Tue, 6 Mar 2018 20:07:17 +0000 (17:07 -0300)]
Comentário sobre número de dependentes com instrução

7 years agoCorrige possível utilização após liberar memória.
Thadeu Lima de Souza Cascardo [Thu, 2 Mar 2017 10:32:32 +0000 (07:32 -0300)]
Corrige possível utilização após liberar memória.

Se um erro ocorre ao atualizar os totais dos rendimentos isentos ou
exclusivos, liberamos a estrutura, mas não a removemos da lista. A
adição à lista deve ser a última ação, para prevenir tais erros.

7 years agoOutros rendimentos isentos exclusivos.
Thadeu Lima de Souza Cascardo [Thu, 2 Mar 2017 10:27:59 +0000 (07:27 -0300)]
Outros rendimentos isentos exclusivos.

Outros rendimentos exigem uma descrição, e a discriminação se são
isentos ou exclusivos.

Até então, rendimentos exclusivos utilizavam o comando isento e eram
distintos pelo seu código. O comando exclusivo utiliza o mesmo código,
mas permite a distinção pelo primeiro argumento, quando o código não o
permitir.

7 years agoAdiciona totais de rendimentos tributáveis.
Thadeu Lima de Souza Cascardo [Tue, 28 Feb 2017 20:36:31 +0000 (17:36 -0300)]
Adiciona totais de rendimentos tributáveis.

Rendimentos tributáveis e de pessoas físicas são adicionados. Onde
rendimentos tributáveis devem ser utilizados, ao invés de apenas
rendimentos de pessoa jurídica, a mudança foi feita.

7 years agoRemove variável não utilizada
Thadeu Lima de Souza Cascardo [Tue, 28 Feb 2017 20:34:13 +0000 (17:34 -0300)]
Remove variável não utilizada

7 years agoGera hash do CPF no cabeçalho.
Thadeu Lima de Souza Cascardo [Mon, 27 Feb 2017 22:07:47 +0000 (19:07 -0300)]
Gera hash do CPF no cabeçalho.

Um dos campos do cabeçalho apresenta um hash que é apenas um CRC32 do CPF. Se
uma nova versão do IRPF remover tal campo, basta reverter este commit junto com
a provável atualização do campo de versão.

7 years agoGera cabeçalhos para versão 2017.
Thadeu Lima de Souza Cascardo [Mon, 27 Feb 2017 14:06:19 +0000 (11:06 -0300)]
Gera cabeçalhos para versão 2017.

Os cabeçalhos de declarações simplificada e completa mantém os campos de
2016, mudam alguns valores de código e versão e adicionam celular e um
campo de presença de cônjuge.

A primeira versão do IRPF 2017 também substitui um campo em branco por
um hash, que aparenta depender apenas do CPF. No entanto, parece ser um
bug e uma nova versão é esperada.

7 years agoAdiciona mensagens de erro ao comando gera.
Thadeu Lima de Souza Cascardo [Sat, 14 Jan 2017 16:35:02 +0000 (14:35 -0200)]
Adiciona mensagens de erro ao comando gera.

Mensagens ao validar parâmetros, verificar o ano suportado e erro ao
abrir arquivo são emitidas.

7 years agoRemove fim de linha em mensagens de erro.
Thadeu Lima de Souza Cascardo [Sat, 14 Jan 2017 16:30:41 +0000 (14:30 -0200)]
Remove fim de linha em mensagens de erro.

7 years agoAdiciona valores para cálculo referente a exercício 2017.
Thadeu Lima de Souza Cascardo [Sat, 14 Jan 2017 12:24:26 +0000 (10:24 -0200)]
Adiciona valores para cálculo referente a exercício 2017.

Os valores foram obtidos a partir de [1], com exceção do valor de
obrigatoriedade, que foi obtido a partir da Instrução Normativa 1671 de
2016.

O comando "gera" ainda não suporta o ano de 2017.

[1] http://idg.receita.fazenda.gov.br/acesso-rapido/tributos/irpf-imposto-de-renda-pessoa-fisica

7 years agoSimplifica set_int e set_string.
Thadeu Lima de Souza Cascardo [Sat, 14 Jan 2017 15:08:37 +0000 (15:08 +0000)]
Simplifica set_int e set_string.

set_int e set_string eram utilizados com argumentos dados a um comando e
sempre esperavam dois argumentos apenas, o que fazia com que seu uso não
fosse legível a não ser pelas macros SET_INT_ e SET_STRING_.

Movendo a lógica de teste de argumentos para as macros, foi possível
simplificar set_int e set_string e tornar o uso de set_int em alguns
casos mais legível, bem como passar a utilizar set_string para verificar
erros de alocação de memória.

As macros SET_INT_ e SET_STRING_ foram também unificadas em SET_VAL_,
porém mantidas com os argumentos que aceitavam anteriormente, mas
fazendo uso desta última. SET_VAL_ foi melhorada para aceitar um texto
de ajuda e definir um texto de erro mais amigável ao usuário.

7 years agoAdiciona ajuda curta para ajuda.
Thadeu Lima de Souza Cascardo [Sat, 14 Jan 2017 13:13:04 +0000 (13:13 +0000)]
Adiciona ajuda curta para ajuda.

7 years agoFecha o stream para arquivo processado.
Thadeu Lima de Souza Cascardo [Wed, 14 Dec 2016 23:40:19 +0000 (21:40 -0200)]
Fecha o stream para arquivo processado.

Ao abrir o arquivo com fdopen, um vazamento de memória ocorre se o
stream não for fechado com fclose.

7 years agoAdiciona ajuda sobre a ajuda.
Thadeu Lima de Souza Cascardo [Mon, 12 Dec 2016 01:50:46 +0000 (23:50 -0200)]
Adiciona ajuda sobre a ajuda.

7 years agoFunção para iniciar todos os comandos.
Thadeu Lima de Souza Cascardo [Mon, 12 Dec 2016 01:50:01 +0000 (23:50 -0200)]
Função para iniciar todos os comandos.

7 years agoEmite mensagem de erro se ano é inválido.
Thadeu Lima de Souza Cascardo [Mon, 12 Dec 2016 01:45:07 +0000 (23:45 -0200)]
Emite mensagem de erro se ano é inválido.

Se o ano não é suportado pelo comando calcula, uma mensagem de erro é
definida.

7 years agoImprime mensagem de erro se definida.
Thadeu Lima de Souza Cascardo [Mon, 12 Dec 2016 01:43:55 +0000 (23:43 -0200)]
Imprime mensagem de erro se definida.

Caso um erro tenha ocorrido e a mensagem de erro esteja definida,
utilize-a ao invés da mensagem correspondente ao código de erro.

7 years agoPermite definir um erro ao processar a declaração.
Thadeu Lima de Souza Cascardo [Mon, 12 Dec 2016 01:42:17 +0000 (23:42 -0200)]
Permite definir um erro ao processar a declaração.

Uma mensagem de erro pode ser definida no contexto da declaração. Assim,
o usuário pode ter mais detalhes sobre o erro ao processar algum
comando.

7 years agohelp: comando exibe ajuda curta dos comandos.
Thadeu Lima de Souza Cascardo [Sun, 11 Dec 2016 13:46:09 +0000 (11:46 -0200)]
help: comando exibe ajuda curta dos comandos.

O comando "help" ou "ajuda" sem parâmetros mostram a lista de comandos
acompanhados de uma descrição curta.

7 years agocmd: adiciona campo help.
Thadeu Lima de Souza Cascardo [Sun, 11 Dec 2016 13:45:44 +0000 (11:45 -0200)]
cmd: adiciona campo help.

Comandos podem documentar uma ajuda curta com o campo help.

7 years agocmd: itera entre os comandos.
Thadeu Lima de Souza Cascardo [Sun, 11 Dec 2016 13:41:21 +0000 (11:41 -0200)]
cmd: itera entre os comandos.

7 years agopmhash: permite iterar os valores.
Thadeu Lima de Souza Cascardo [Sun, 11 Dec 2016 13:39:39 +0000 (11:39 -0200)]
pmhash: permite iterar os valores.

A função pmhash_next retorna o próximo valor de um hash dado um iterador
opaco que deve ser iniciado com NULL.

7 years agoBusca os arquivos de ajuda no diretório instalado.
Thadeu Lima de Souza Cascardo [Sun, 11 Dec 2016 10:32:48 +0000 (08:32 -0200)]
Busca os arquivos de ajuda no diretório instalado.

Exporta DOCDIR para o código para que busque os arquivos de ajuda no
local em que foram instalados.

7 years agoDistribui os arquivos de ajuda.
Thadeu Lima de Souza Cascardo [Sun, 11 Dec 2016 10:31:38 +0000 (08:31 -0200)]
Distribui os arquivos de ajuda.

Eles serão instalados em docdir, /usr/share/doc/declara/, se o prefixo
for /usr/.

7 years agoAdiciona ajuda para ano e cpf.
Thadeu Lima de Souza Cascardo [Sun, 11 Dec 2016 10:30:46 +0000 (08:30 -0200)]
Adiciona ajuda para ano e cpf.

Os comandos ano e cpf são documentados.

7 years agoAdiciona comando help.
Thadeu Lima de Souza Cascardo [Sat, 10 Dec 2016 13:24:14 +0000 (11:24 -0200)]
Adiciona comando help.

O comando help lê arquivos texto e imprime seu conteúdo na saída padrão.
Assim, a documentação pode ser escrita em simples arquivos.

7 years agodumpfile: joga o conteúdo de um arquivo em um fd
Thadeu Lima de Souza Cascardo [Sat, 10 Dec 2016 13:22:09 +0000 (11:22 -0200)]
dumpfile: joga o conteúdo de um arquivo em um fd

A função dumpfile lê o conteúdo de um arquivo e o escreve em um
descritor, que pode ser a saída padrão, por exemplo.

7 years agoAdiciona suporte a readline.
Thadeu Lima de Souza Cascardo [Sat, 10 Dec 2016 13:21:21 +0000 (11:21 -0200)]
Adiciona suporte a readline.

Quando executado sem um parâmetro, o declara aceitará comandos na
entrada padrão, utilizando readline e history.

7 years agoCorrige comentários de alguns campos.
Thadeu Lima de Souza Cascardo [Sat, 10 Dec 2016 12:10:05 +0000 (10:10 -0200)]
Corrige comentários de alguns campos.

7 years agoUtiliza macros para formatar Real no resumo.
Thadeu Lima de Souza Cascardo [Sat, 10 Dec 2016 12:09:17 +0000 (10:09 -0200)]
Utiliza macros para formatar Real no resumo.

8 years agoSuporta indenizações isentas, como FGTS e aviso prévio.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 22:44:18 +0000 (19:44 -0300)]
Suporta indenizações isentas, como FGTS e aviso prévio.

Indenizações como FGTS, aviso prévio e abono pecuniário contam como
rendimentos isentos.

8 years agoUsa marca BUG IRPF.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 22:22:21 +0000 (19:22 -0300)]
Usa marca BUG IRPF.

Os comportamentos que parecem ser bugs no programa IRPF distribuído pela
Receita Federal devem ser marcados como BUG IRPF.

8 years agoCálculo de despesas com instrução.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 19:38:17 +0000 (16:38 -0300)]
Cálculo de despesas com instrução.

Calcula despesas com instrução, limitados a seus valores por titular e
dependente. Soma tais valores às deduções. Também gera os valores
necessários para as linhas de declaração e totais, como número de
dependentes por instrução e total de despesas dedutíves com instrução.

8 years agoMudanças no cálculo das deduções.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 19:39:44 +0000 (16:39 -0300)]
Mudanças no cálculo das deduções.

Ao invés de considerar como dedução todos os pagamentos subtraídos de
todas as deduções, considera apenas aqueles valores legais conhecidos.

No momento, o total das despesas médicas e previdência. No entanto,
ainda é necessário fazer o cáculo para limites com a previdência.

8 years agoDeduções pode ser maiores que rendimentos tributáveis.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 19:32:57 +0000 (16:32 -0300)]
Deduções pode ser maiores que rendimentos tributáveis.

Base de cálculo deve ser zero nesses casos, não negativa.

8 years agoIRPF gera 0 para rendimentos isentos de dependentes.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 16:16:18 +0000 (13:16 -0300)]
IRPF gera 0 para rendimentos isentos de dependentes.

Na linha de cabeçalho da declaração simplificada, os rendimentos isentos
de dependentes exibem 0 no caso de rendimentos como doações e poupança.

Ainda não é claro se é algum bug, algum cálculo diferente do que
fazemos. O cálculo da linha 18 está correto, no entanto.

8 years agoCabeçalho de simplificada usa rendimentos de titular.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 16:13:46 +0000 (13:13 -0300)]
Cabeçalho de simplificada usa rendimentos de titular.

Os rendimentos isentos no cabeçalho da declaração simplificada se
referem aos rendimentos do titular.

8 years agoImprime total de doações na linha de rendimentos isentos.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 15:39:23 +0000 (12:39 -0300)]
Imprime total de doações na linha de rendimentos isentos.

8 years agoSuporta rendimentos de dependentes nos totais.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 15:35:15 +0000 (12:35 -0300)]
Suporta rendimentos de dependentes nos totais.

Ao gerar as linhas de totais, imprime os totais de rendimentos isentos e
exclusivos de dependentes.

8 years agoNão totaliza rendimentos de dependentes como de titular.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 15:33:54 +0000 (12:33 -0300)]
Não totaliza rendimentos de dependentes como de titular.

Os rendimentos de dependentes são adicionados a novos totais de
rendimentos de dependentes. Os rendimentos de titular excluem tais
rendimentos.

8 years agoSuporta rendimentos isentos e exclusivos de dependentes.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 15:32:51 +0000 (12:32 -0300)]
Suporta rendimentos isentos e exclusivos de dependentes.

Da mesma forma como implementado para pagamentos, os rendimentos isentos
e exclusivos de dependentes são indicados através de um índice de
dependentes.

8 years agoPermite pagamento para despesa com dependente.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 15:24:53 +0000 (12:24 -0300)]
Permite pagamento para despesa com dependente.

O dependente deve ser especificado numericamente, indexado a partir de
1. Este é o mesmo código a ser utilizado ao gerar a linha de dependente
e que será utilizado na linha de pagamento.

A opção foi feita por utilizar o índice, pois nem todos os dependentes
possuem CPF, e no raro caso de existirem dependentes homônimos, o nome
não poderia ser utilizado tampouco.

A utilização do índice exige que o dependente seja adicionado
anteriormente ao pagamento. Se o dependente for omitido ou tiver o
índice zero, considera-se a despesa com o titular.

A linha de pagamento também passa a ser gerada com a informação correta
sobre o dependente.

8 years agoImplementa list_size, retornando tamanho da lista.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 15:23:23 +0000 (12:23 -0300)]
Implementa list_size, retornando tamanho da lista.

Esta função será útil para obter número de dependentes, por exemplo.

8 years agoSuporta doações.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 12:23:24 +0000 (09:23 -0300)]
Suporta doações.

Computa doações e gera linha de doações. No entanto, ainda não imprime
nas linhas de totais.

8 years agoImprime lista de dependentes no cabeçalho do DEC.
Thadeu Lima de Souza Cascardo [Sun, 10 Apr 2016 11:52:14 +0000 (08:52 -0300)]
Imprime lista de dependentes no cabeçalho do DEC.

O cabeçalho do arquivo contém campos para CPFs e datas de nascimento dos
dependentes. Estes valores não eram impressos. Agora, itera-se na lista
de dependentes e os valores são impressos.

8 years agoCom o suporte a 2016, muda versão.
Thadeu Lima de Souza Cascardo [Sat, 9 Apr 2016 02:32:33 +0000 (23:32 -0300)]
Com o suporte a 2016, muda versão.

Utiliza versão 2016.0, ainda que o software seja experimental, indicando
suporte ao ano de 2016.

8 years agoNão instala biblioteca.
Thadeu Lima de Souza Cascardo [Sat, 9 Apr 2016 02:31:48 +0000 (23:31 -0300)]
Não instala biblioteca.

Biblioteca não deve ser publicada no momento, sendo apenas para uso
interno do programa.

8 years agoSuporta geração de declaração de 2016.
Thadeu Lima de Souza Cascardo [Sat, 26 Mar 2016 03:22:13 +0000 (00:22 -0300)]
Suporta geração de declaração de 2016.

8 years agoNão gera linha de isentos e exclusivos quando não existentes.
Thadeu Lima de Souza Cascardo [Sat, 26 Mar 2016 03:17:22 +0000 (00:17 -0300)]
Não gera linha de isentos e exclusivos quando não existentes.

Quando os rendimentos isentos ou tributados de forma exclusiva na fonte
não existem, não imprime suas respectivas linhas.

8 years agoNão imprime valores nulos.
Thadeu Lima de Souza Cascardo [Sat, 26 Mar 2016 03:16:38 +0000 (00:16 -0300)]
Não imprime valores nulos.

Imprime a string vazia para alguns valores, quando estes não foram
definidos pelo usuário.

8 years agoFunções para lista de pagamentos ordenados.
Thadeu Lima de Souza Cascardo [Sat, 26 Mar 2016 03:14:16 +0000 (00:14 -0300)]
Funções para lista de pagamentos ordenados.

Cria uma função para lista de pagamentos independente do código, uma
função mais genérica, com um callback de condição, e uma função para
pagamentos à previdência pública INSS.

8 years agoCalcula imposto para 2016.
Thadeu Lima de Souza Cascardo [Sat, 19 Mar 2016 19:23:41 +0000 (16:23 -0300)]
Calcula imposto para 2016.

Adiciona os valores de limites e alíquotas suportados para o exercício
de 2016.

8 years agoRetorna erro para gerar declaração de ano não suportado.
Thadeu Lima de Souza Cascardo [Sat, 19 Mar 2016 15:01:59 +0000 (12:01 -0300)]
Retorna erro para gerar declaração de ano não suportado.

Apenas a declaração de 2015 é suportada no momento. Retorna erro caso o
usuário tente gerar uma declaração de outro exercício.

8 years agoPermite expandir cálculo para outros anos.
Thadeu Lima de Souza Cascardo [Sat, 19 Mar 2016 14:58:55 +0000 (11:58 -0300)]
Permite expandir cálculo para outros anos.

Introduz macros para indexar arranjos com o ano do exercício da
declaração, e altera as variáveis utilizadas para os valores de 2015
para arranjos, de tal forma a permitir expansão para outros anos.

8 years agoImprime complemento corretamente.
Thadeu Lima de Souza Cascardo [Sun, 13 Mar 2016 18:11:08 +0000 (15:11 -0300)]
Imprime complemento corretamente.

Se não há complemento, imprime espaços.

8 years agoGera linha de cônjuge apenas se há cônjuge declarado.
Thadeu Lima de Souza Cascardo [Sun, 13 Mar 2016 18:09:48 +0000 (15:09 -0300)]
Gera linha de cônjuge apenas se há cônjuge declarado.

A linha de cônjuge era emitida incondicionalmente. Esta deve ser emitida
apenas se há declaração de cônjuge.

8 years agoAdiciona teste de tokenizer.
Thadeu Lima de Souza Cascardo [Sun, 13 Mar 2016 12:02:27 +0000 (09:02 -0300)]
Adiciona teste de tokenizer.

Teste é ainda bem simples, mas já verifica o correto suporte a
comentários e o tratamento de espaços em branco.

8 years agoCompara chaves do hash sem distinção de "caixa".
Thadeu Lima de Souza Cascardo [Sun, 13 Mar 2016 11:57:14 +0000 (08:57 -0300)]
Compara chaves do hash sem distinção de "caixa".

Apenas a lista de comandos e totais utilizam pmhash. Ao utilizar
strcasecmp ao invés de strcmp, comandos passam a ser reconhecidos
independente de utilizarem letras maiúsculas ou minúsculas.

8 years agoSuporta comentários.
Thadeu Lima de Souza Cascardo [Sun, 13 Mar 2016 11:55:45 +0000 (08:55 -0300)]
Suporta comentários.

Implementa comentários no tokenizer, permitindo que apareçam no arquivo
de entrada.

8 years agoVerifica limites de token antes de alocar memória.
Thadeu Lima de Souza Cascardo [Sun, 13 Mar 2016 11:54:50 +0000 (08:54 -0300)]
Verifica limites de token antes de alocar memória.

Caso não exista mais tokens, não é necessário alocar mais memória.

8 years agoImplementa opção verbose.
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 20:38:19 +0000 (17:38 -0300)]
Implementa opção verbose.

Com esta opção, alguns resultados intermediários são exibidos,
permitindo verificações e detecção de erros.

8 years agoPreenche campos implementados da declaração completa.
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 20:36:55 +0000 (17:36 -0300)]
Preenche campos implementados da declaração completa.

Permite a geração de uma declaração completa, ainda que apenas com
alguns dos campos suportados.

8 years agoCorrige campo em caso de pagamento a pessoa física.
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 20:35:31 +0000 (17:35 -0300)]
Corrige campo em caso de pagamento a pessoa física.

O valor 1 identifica pessoa física, com CPF, enquanto o valor 2
identifica pessoa jurídica, com CNPJ.

8 years agoTotaliza outros pagamentos.
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 20:29:03 +0000 (17:29 -0300)]
Totaliza outros pagamentos.

A declaração completa exige outros totais de pagamentos, como pagamentos
médicos e de previdência. Soma tais totais em uma função própria, dada
sua nova complexidade.

8 years agoSoma total de decuções para declaração completa.
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 20:27:48 +0000 (17:27 -0300)]
Soma total de decuções para declaração completa.

8 years agoRemove TODO em alguns casos.
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 20:25:43 +0000 (17:25 -0300)]
Remove TODO em alguns casos.

Alguns campos foram implementados, não sendo mais necessário
documentá-los com TODO.

8 years agoCorrige campos de quotas em caso de imposto a pagar.
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 20:24:43 +0000 (17:24 -0300)]
Corrige campos de quotas em caso de imposto a pagar.

Em caso de imposto a pagar, é necessário informar o número e valor das
quotas. No momento, apenas uma quota é suportada.