Permite escolher entre declaração completa e simplificada.
[cascardo/declara.git] / lib / calcula.c
index 42b33b6..9116868 100644 (file)
 #include "declaracao.h"
 #include "cmd.h"
 #include "rendimento.h"
-#include "dependente.h"
 #include "totais.h"
 
 static const long long dependente2015 = 215652;
 
+long long deducao_dependente(struct declaracao *dec)
+{
+       if (dec->ano == 2015)
+               return dependente2015;
+       return 0;
+}
+
 /* Alguns totais precisam ser limitados. Portanto, um total de decuções
  * precisa ser ajustado para tais limites. Esta função considerará tais
  * limites no futuro. */
 static long long total_deducao(struct declaracao *dec)
 {
        int i;
-       long long dependentes = 0;
-       struct dependente *dependente;
-       for (i = 0; (dependente = list_get(dec->dependentes, i)); i++) {
-               dependentes += dependente2015;
-       }
-       return dependentes +
+       return totais_get(dec, "DEPENDENTES") +
               totais_get(dec, "INSS") +
-              totais_get(dec, "PAGAMENTOS");
+              totais_get(dec, "PAGAMENTOS") -
+              totais_get(dec, "REEMBOLSOS");
 }
 
 static void total_pago(struct declaracao *dec)
@@ -122,7 +124,8 @@ int calcula(struct declaracao *dec)
        i_simples = imposto_simples(dec);
        i_completa = imposto_completa(dec);
        total_pago(dec);
-       if (i_simples > i_completa) {
+       if (dec->tipo != FORCA_SIMPLES &&
+           (i_simples > i_completa || dec->tipo == FORCA_COMPLETA)) {
                dec->tipo = COMPLETA;
                dec->devido = i_completa;
        } else {