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.
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.
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.
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.
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.
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.
Thadeu Lima de Souza Cascardo [Sat, 26 Mar 2016 03:22:13 +0000 (00:22 -0300)]
Suporta geração de declaração de 2016.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 20:22:58 +0000 (17:22 -0300)]
Nova função para ordenação de pagamentos médicos.
Como pagamentos médicos podem utilizar mais de um código de pagamento,
uma nova função foi necessária.
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 20:19:17 +0000 (17:19 -0300)]
Preenche corretamente se não há informações bancárias.
Caso informações bancárias não sejam fornecidas, preenchar os campos
corretamente. No caso de banco e agência, preenche com zeros. No caso de
número de conta e dígito verificador, utilize espaços em branco.
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 20:15:45 +0000 (17:15 -0300)]
Conserta campo de resultado de imposto no cabeçalho.
Se há imposto a pagar, o resultado é 1. Se há imposto a restituir, o
resultado é 2. Ainda a confirmar se o resultado é 0 caso não haja
imposto a pagar nem a restituir.
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 11:53:42 +0000 (08:53 -0300)]
Salva demais partes da declaração
Thadeu Lima de Souza Cascardo [Sat, 12 Mar 2016 11:52:04 +0000 (08:52 -0300)]
Adiciona macros para formatar valores em Real.
Thadeu Lima de Souza Cascardo [Fri, 25 Sep 2015 10:47:00 +0000 (07:47 -0300)]
Calcula base de cálculo para declaração completa.
Como tentamos o cálculo de ambas as declarações, o valor da base de
cálculo deve ser calculado separadamente para cada tipo de declaração.
Thadeu Lima de Souza Cascardo [Fri, 25 Sep 2015 10:46:40 +0000 (07:46 -0300)]
Permite escolher entre declaração completa e simplificada.
Thadeu Lima de Souza Cascardo [Fri, 25 Sep 2015 10:00:37 +0000 (07:00 -0300)]
Atualiza versão do IRPF para aceitar declaração.
Thadeu Lima de Souza Cascardo [Fri, 25 Sep 2015 10:00:09 +0000 (07:00 -0300)]
Deduz reembolsos de pagamentos.
Alguns pagamentos são reembolsados e seu valor não deve ser
contabilizado em deduções.
Thadeu Lima de Souza Cascardo [Fri, 25 Sep 2015 09:58:55 +0000 (06:58 -0300)]
Inicializa valores da estrutura de bens.
Bens estavam sendo incorretamente identificados como imóveis, já que
alguns de seus valores não são inicializados no caso de outros bens.
Thadeu Lima de Souza Cascardo [Fri, 25 Sep 2015 09:58:37 +0000 (06:58 -0300)]
Inclui mais informações no sumário.
Inclui base de cálculo, rendimentos isentos, rendimentos exclusivos e
hash/recibo no sumário.
Thadeu Lima de Souza Cascardo [Thu, 10 Sep 2015 22:20:52 +0000 (19:20 -0300)]
Implementa rendimentos de aplicações.
Rendimentos de aplicações, como CDB, utilizam o código 99, e seus totais
são utilizados na declaração completa.
Thadeu Lima de Souza Cascardo [Sun, 6 Sep 2015 03:37:38 +0000 (00:37 -0300)]
Totaliza deduções por dependentes.
O total de deduções por dependentes está presente na linha de totais.
Implementa uma função para obter o limite da dedução anual por
dependente e totaliza em um total DEPENDENTES.
Thadeu Lima de Souza Cascardo [Sun, 6 Sep 2015 03:33:48 +0000 (00:33 -0300)]
O CPF e o total do cônjuge estão nas primeiras linhas.
A linha do cabeçalho contém o CPF do cônjuge, e a linha de totais da
declaração simplificada contém o total do cônjuge.
Thadeu Lima de Souza Cascardo [Sun, 6 Sep 2015 03:32:23 +0000 (00:32 -0300)]
Adiciona suporte a cônjuge.
Dados da declaração do cônjuge estão na linha 9.
Futuramente, seria interessante implementar a importação dos dados da
declaração do cônjuge.
Thadeu Lima de Souza Cascardo [Sun, 6 Sep 2015 01:53:10 +0000 (22:53 -0300)]
Calcula dedução por dependentes.
Calcula o valor da dedução usando o limite anual por dependente.
Thadeu Lima de Souza Cascardo [Sun, 6 Sep 2015 01:52:59 +0000 (22:52 -0300)]
Imprime no resumo se declaração é simples ou completa
Thadeu Lima de Souza Cascardo [Sun, 6 Sep 2015 01:37:46 +0000 (22:37 -0300)]
Adiciona suporte a linha de dependentes.
A linha 25 é utilizada para listar os dependentes. O suporte completo a
dependentes ainda exige tanto o cálculo de dedução, quanto a lista de
demais campos para dependentes, como rendimentos e pagamentos, seja o
dependente o autor ou o beneficiário. Vários totais também dependem
destes campos.
Thadeu Lima de Souza Cascardo [Sun, 6 Sep 2015 01:36:25 +0000 (22:36 -0300)]
Limita o campo de data de nascimento a 8 caracteres
Thadeu Lima de Souza Cascardo [Sun, 6 Sep 2015 01:35:34 +0000 (22:35 -0300)]
declara.c usa bem_cmd_init de bem.h
Adiciona o cabeçalho bem.h que estava faltando.
Thadeu Lima de Souza Cascardo [Sun, 9 Aug 2015 00:43:35 +0000 (21:43 -0300)]
Imprime o hash do cabeçalho.
Utiliza uma lista para guardar as linhas temporariamente, altera o
cabeçalho para incluir o hash e recalcula o campo de controle, com o
prefixo do nome de arquivo em formato DOS (8.3), e imprime as linhas no
arquivo.
Thadeu Lima de Souza Cascardo [Sun, 9 Aug 2015 00:27:17 +0000 (21:27 -0300)]
Calcula hashes do arquivo da declaração.
Os dois hashes necessários para a declaração são calculados. O hash de
recibo está na última linha, o que facilita sua inclusão. O hash do
cabeçalho ainda não é impresso.
Thadeu Lima de Souza Cascardo [Sat, 8 Aug 2015 22:54:27 +0000 (19:54 -0300)]
Implementa comando sistema para configurações.
SO, versão do SO e da JVM e MAC address são campos do cabeçalho da
declaração. O usuário deve optar por informar ou não esses dados. No
momento, os dados são obtidos do arquivo de entrada ou valores padrões
são utilizados.
Seria interessante, no entanto, implementar outras opções, como obter os
dados reais do sistema, utilizar valores de sistemas livres, valores
aleatórios e valores conformantes com o que o software privativo
utiliza. O padrão também deveria ser configurado em tempo de compilação.
Thadeu Lima de Souza Cascardo [Sat, 8 Aug 2015 20:34:50 +0000 (17:34 -0300)]
Gera linhas com totais de isentos e exclusivos.
O registro com os totais de rendimentos isentos inclui apenas poupança,
no momento.
Já o registro com os rendimentos com tributação exclusiva inclui décimo
terceiro e PLR.
Thadeu Lima de Souza Cascardo [Sat, 8 Aug 2015 19:55:06 +0000 (16:55 -0300)]
Rendimentos isentos e de tributação exclusiva.
Alguns registros dos dois tipos exigem os mesmos campos. No momento,
apenas poupança e participação nos lucros e resultados são suportados.
Suporte a novos registros pode ou não ser trivial, dependendo dos campos
exigidos pelo registro.
Thadeu Lima de Souza Cascardo [Tue, 4 Aug 2015 10:25:24 +0000 (07:25 -0300)]
Salva dados bancários, pagamentos e bens.
Thadeu Lima de Souza Cascardo [Tue, 4 Aug 2015 09:20:46 +0000 (06:20 -0300)]
Utiliza crc32 da zlib para cálculo do campo de controle.
O campo de controle de todos os registros é calculado usando CRC32. A
zlib tem uma função de fácil uso chamada crc32. Além do mais, a zlib é
uma biblioteca presente em vários sistemas, de alta portabilidade.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 13:38:05 +0000 (10:38 -0300)]
Utiliza LDADD de forma a regerar programa quando biblioteca é alterada.
Quando algum código fonte da biblioteca era alterado, a biblioteca era
regerada, mas o programa não era ligado à nova versão da biblioteca.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 13:36:46 +0000 (10:36 -0300)]
Suporta bens móveis.
O comando bem permite adicionar bens móveis. A linha de bens, de número
27, é gerada. O suporte a bens imóveis está iniciado, mas ainda é
necessária a implementação do comando que recebe todos os parâmetros
exigidos.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 12:39:05 +0000 (09:39 -0300)]
Gera linha de pagamento.
No momento, está restrito a pagamentos feitos a CNPJ, pelo e para o
titular.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 03:28:26 +0000 (00:28 -0300)]
Separa código em diretórios.
src contém o código de programas, lib contém código utilizado pelos
programas, na forma do libreceita, e test contém os testes a serem
realizados.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 02:54:36 +0000 (23:54 -0300)]
Gera outros totais de declaração simplificada.
Para a linha 18, clarifica alguns totais, gera outros utilizando o
dicionário de totais, e computa os rendimentos exclusivos do titular,
considerando o décimo terceiro salário.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 02:53:54 +0000 (23:53 -0300)]
Calcula e gera desconto simplificado e base de cálculo.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 02:34:01 +0000 (23:34 -0300)]
Atualiza alguns totais na declaração simplificada.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 02:27:06 +0000 (23:27 -0300)]
Atualiza comentários de valores da declaração simplificada.
Na declaração simplificada, a linha 17 contém alguns valores totais que
são apenas de RRA. E o imposto retido refere-se apenas àquele retido
pela Lei 11.033.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 02:24:44 +0000 (23:24 -0300)]
Soma 13o a rendimentos tributados exclusivamente na fonte.
Atualiza os totais de décimo terceiro e tributos "exclusivos" com os
valores recebidos de décimo terceiro salário. Calcula o valor de
rendimentos exclusivos com exceção do décimo terceiro com a subtração
dos respectivos valores.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 02:10:35 +0000 (23:10 -0300)]
gera: Principal fonte pagadora na linha de contribuinte.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 02:09:38 +0000 (23:09 -0300)]
gera: imprime espaços quando recibo é nulo
O recibo pode ser nulo, e espaços devem ser impressos neste caso.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 01:55:38 +0000 (22:55 -0300)]
Considera o total de pagamentos nas deduções.
Os pagamentos devem ser contabilizados por tipo, a fim de considerar os
limites aplicáveis. Neste momento, considere os totais de pagamentos.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 01:54:10 +0000 (22:54 -0300)]
Utiliza o dicionário de totais para o cabeçalho.
Os totais de rendimentos isentos e tributados exclusivamente na fonte e
o total de pagamentos estão presentes no cabeçalho.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 01:52:36 +0000 (22:52 -0300)]
Utiliza CNPJ de previdência privada no cabeçalho.
Previdência privada utiliza o código 36 e os CNPJs dos dois maiores
pagamentos estão presentes no cabeçalho.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 01:50:18 +0000 (22:50 -0300)]
Utiliza CNPJ de planos de saúde no cabeçalho.
O CNPJ maior de médicos pode utilizar o CNPJ do código 26 dos
pagamentos, que indica planos de saúde. Outros códigos podem ser
considerados e um código específico será necessário.
Thadeu Lima de Souza Cascardo [Sun, 2 Aug 2015 01:20:40 +0000 (22:20 -0300)]
Adiciona comando pagamento.
Cria uma lista de pagamentos. Algumas opções ainda não são suportadas,
como NIT para empregado/a doméstico/a.
Thadeu Lima de Souza Cascardo [Sat, 1 Aug 2015 21:24:35 +0000 (18:24 -0300)]
Implementa funções para obter reais e centavos.
Thadeu Lima de Souza Cascardo [Sat, 1 Aug 2015 17:58:17 +0000 (14:58 -0300)]
totais_get não estava declarada.
Thadeu Lima de Souza Cascardo [Sat, 1 Aug 2015 17:47:28 +0000 (14:47 -0300)]
Remove ponto-e-vírgula sobrando em um if.
Thadeu Lima de Souza Cascardo [Sat, 1 Aug 2015 15:06:21 +0000 (12:06 -0300)]
Gera critério de obrigatoriedade.
O valor em uma das declaraçãoes de teste é 001, em uma declaração com
rendimentos tributáveis acima do valor para obrigatoriedade.
Thadeu Lima de Souza Cascardo [Sat, 1 Aug 2015 14:58:42 +0000 (11:58 -0300)]
Soma total do INSS durante processamento de rendimentos.
Utiliza o total de INSS nas deduções, fazendo a soma e armazenamento do
total durante o processamento de rendimentos.
Thadeu Lima de Souza Cascardo [Sat, 1 Aug 2015 14:57:45 +0000 (11:57 -0300)]
Definição de pmhash_new não estava declarada.
Thadeu Lima de Souza Cascardo [Sat, 1 Aug 2015 14:55:43 +0000 (11:55 -0300)]
Utiliza dicionário de totais no lugar de totalrendimento.
Elimina o membro totalrendimento da declaração e utiliza o total RENDPJ
em seu lugar. No futuro, outros valores serão tributáveis, e outro total
deve ser utilizado.
Thadeu Lima de Souza Cascardo [Sat, 1 Aug 2015 14:44:23 +0000 (11:44 -0300)]
Cria dicionário de totais.
Com este dicionário, cada módulo pode adicionar um valor a um total, que
pode ser posteriormente usado no cálculo e na geração da declaração.
Thadeu Lima de Souza Cascardo [Sat, 1 Aug 2015 13:37:04 +0000 (10:37 -0300)]
Insere rendimentos de forma ordenada.
O cabeçalho da declaração contém os CNPJs das pessoas jurídicas que
pagaram os maiores rendimentos. Insere os rendimentos de forma ordenada,
com os maiores rendimentos primeiro, e cria uma função para retornar o
CNPJ de um rendimento dado o seu índice.
Thadeu Lima de Souza Cascardo [Sun, 26 Jul 2015 01:37:59 +0000 (22:37 -0300)]
Suporta dados de conta bancária.
Thadeu Lima de Souza Cascardo [Sat, 25 Jul 2015 20:35:51 +0000 (17:35 -0300)]
Suporta indicadores de segurança, imposto pago e antecipado.
Foi observada uma divergência no valor do indicador de segurança entre
uma declaração retificadora e uma vazia, com apenas recibo anterior. O
mesmo para os valores de imposto pago e antecipado.
Utilizando o código do IRPF Livre, foi constatado que também devem ser
considerados no futuro os casos de Carnê Leão, Lei 11.033 e outros.
Thadeu Lima de Souza Cascardo [Sat, 25 Jul 2015 20:34:56 +0000 (17:34 -0300)]
Calcula e imprime se declaração é obrigatória.
Existem vários critérios e o único observado no momento é o montante de
rendimentos tributáveis.
Thadeu Lima de Souza Cascardo [Sat, 25 Jul 2015 20:13:39 +0000 (17:13 -0300)]
Imprime imposto devido no cabeçalho
Thadeu Lima de Souza Cascardo [Sat, 25 Jul 2015 19:30:06 +0000 (16:30 -0300)]
Implementa inserção ordenada em lista
Thadeu Lima de Souza Cascardo [Sat, 25 Jul 2015 19:10:25 +0000 (16:10 -0300)]
Implementa teste para lista
Thadeu Lima de Souza Cascardo [Sat, 25 Jul 2015 19:09:32 +0000 (16:09 -0300)]
Implementa função list_insert
Thadeu Lima de Souza Cascardo [Sat, 25 Jul 2015 19:09:12 +0000 (16:09 -0300)]
Permite função free nula para liberar lista
Thadeu Lima de Souza Cascardo [Sat, 25 Jul 2015 20:08:02 +0000 (17:08 -0300)]
Imprime linha com rendimentos de PJ.
Para utilizar o wrapper, considerando que o único argumento é a
declaração, utiliza o número de linhas impressas para indexar o
rendimento a ser impresso.
Thadeu Lima de Souza Cascardo [Sat, 25 Jul 2015 20:07:19 +0000 (17:07 -0300)]
Recibo pode ser vazio, não imprime "(null)".
Thadeu Lima de Souza Cascardo [Sat, 25 Jul 2015 19:56:16 +0000 (16:56 -0300)]
Última declaração transmitida pode ser campo vazio.
De acordo com um teste com uma declaração retificadora, este campo fica
vazio.
Thadeu Lima de Souza Cascardo [Sat, 25 Jul 2015 16:40:44 +0000 (13:40 -0300)]
Usa um wrapper para gerar linhas.
Escreve a linha em uma área de memória, executa algumas ações, como
incrementar o número de linhas, e grava no arquivo.
Este mecanismo permite outros patches futuros, como cálculo do valor de
código de controle.
Thadeu Lima de Souza Cascardo [Sun, 19 Jul 2015 14:39:06 +0000 (11:39 -0300)]
Campo resultado de imposto no cabeçalho
Para uma declaração simplificada com restituição, o valor do campo é 2.
Para uma declaração completa sem quaisquer rendimentos, o valor é 0.
Thadeu Lima de Souza Cascardo [Sun, 19 Jul 2015 14:36:58 +0000 (11:36 -0300)]
Inclui imposto sobre décimo terceiro no rendimento
O arquivo de declaração inclui esse valor na linha sobre rendimentos
de PJ.
Thadeu Lima de Souza Cascardo [Wed, 8 Jul 2015 09:48:59 +0000 (09:48 +0000)]
Escreve alguns valores totais já calculados na declaração.
Os valores de totais de rendimentos, imposto retido, pago, devido, e
imposto a pagar e restituir já são calculados, e são impressos nos seus
respectivos campos no arquivo de declaração. Alguns desses valores devem
ser revisados, pois podem corresponder a subtotais, como total de
rendimentos tributáveis ou totais do titular.
Thadeu Lima de Souza Cascardo [Wed, 8 Jul 2015 09:48:11 +0000 (09:48 +0000)]
Pré-calcula o total de rendimentos.
Ao invés de calcular duas vezes, tanto para declaração simples quanto
completa, calcula o total de rendimentos uma única vez.
Thadeu Lima de Souza Cascardo [Wed, 8 Jul 2015 09:26:38 +0000 (09:26 +0000)]
Calcula imposto retido e a pagar.
Imposto retido é aquele retido na fonte. Imposto pago é o retido e o
pago por outros meios, como carnê-leão. Ainda a confirmar através de um
teste com o IRPF privativo. No momento, todos os impostos suportados são
aqueles declarados em rendimento de PJ e, portanto, são retidos na
fonte.
Se o imposto devido é maior que o pago, calcula-se o imposto a pagar,
caso contrário, o imposto a restituir.
Thadeu Lima de Souza Cascardo [Wed, 8 Jul 2015 09:12:42 +0000 (09:12 +0000)]
Gera linhas de trailler e de recibos.
Gera as últimas linhas do arquivo de declaração. Alguns valores da linha
de detalhes de recibo ainda precisam ser implementados.
Thadeu Lima de Souza Cascardo [Tue, 7 Jul 2015 23:36:27 +0000 (23:36 +0000)]
Imprime linha de resumo e totais da declaração simplificada.
Os campos ainda precisam ser preenchidos com os reais valores.
As duas linhas para a declaração completa ainda não estão implementadas,
são apenas duas funções a serem preenchidas.
Thadeu Lima de Souza Cascardo [Sat, 13 Jun 2015 14:59:48 +0000 (14:59 +0000)]
Subfunções de geração não retornam valor.
Thadeu Lima de Souza Cascardo [Fri, 12 Jun 2015 00:02:13 +0000 (21:02 -0300)]
Evita SEGFAULT com linha em branco.
Com uma linha em branco, o primeiro argumento aponta para NULL, causando
um SEGFAULT quando pmhash_get é chamado.
Thadeu Lima de Souza Cascardo [Sat, 2 May 2015 13:38:01 +0000 (13:38 +0000)]
Inicia implementação do comando gera.
Este comando gera o arquivo que deve ser enviado à Receita Federal. O
arquivo é bastante complexo, com muitos campos, alguns obtidos
diretamente dos valores preenchidos pelo contribuinte, outros que exigem
cálculos, somas, ou ordenação de listas.
No momento, apenas as duas primeiras linhas estão implementadas, e ainda
falta calcular o CRC e o hash do arquivo. Vários campos ainda precisam
ser preenchidos corretamente.
Com exceção do endereço MAC, dos campos de controle (CRC32) e do hash, o
comando gera as duas primeiras linhas idênticas àquelas geradas pelo
IRPF privativo para uma declaração sem nenhum rendimento, apenas a ficha
de dados básicos do contribuinte preenchida.
O plano é implementar o cálculo do hash, as demais linhas necessárias à
uma declaração com apenas os dados básicos do contribuinte, e ir
acrescentando novas linhas e preenchendo outros campos à medida em que o
programa for sendo desenvolvido, considerando como novo suporte ou nova
funcionalidade.