Escapa o carectere %.
[cascardo/declara.git] / lib / base.c
index b4bf17d..8007d12 100644 (file)
 #include <string.h>
 #include <errno.h>
 #include "rendimento.h"
+#include "carne.h"
+#include "pagamento.h"
+#include "bem.h"
+#include "isento.h"
+#include "dependente.h"
+#include "conjuge.h"
+#include "sistema.h"
+#include "totais.h"
 #include "util.h"
 
 SET_INT(ano);
@@ -41,17 +49,42 @@ static int run_resumo(struct declaracao *dec, char **args, int argc)
                printf("retificadora\n");
        if (dec->obrigatoria)
                printf("obrigatoria\n");
-       printf("pago: %lld.%02d\n", reais(dec->pago), centavos(dec->pago));
-       printf("retido: %lld.%02d\n", reais(dec->retido),
-                                     centavos(dec->retido));
-       printf("devido: %lld.%02d\n", reais(dec->devido),
-                                     centavos(dec->devido));
+       switch (dec->tipo) {
+       case SIMPLES:
+               printf("simples\n");
+               break;
+       case COMPLETA:
+               printf("completa\n");
+               break;
+       }
+       printf("pago: "FMT_R"\n", R(dec->pago));
+       printf("retido: "FMT_R"\n", R(dec->retido));
+       printf("devido: "FMT_R"\n", R(dec->devido));
        if (dec->restituicao > 0)
-               printf("restituicao: %lld.%02d\n", reais(dec->restituicao),
-                                                  centavos(dec->restituicao));
+               printf("restituicao: "FMT_R"\n", R(dec->restituicao));
        if (dec->pagar > 0)
-               printf("a pagar: %lld.%02d\n", reais(dec->pagar),
-                                              centavos(dec->pagar));
+               printf("a pagar: "FMT_R"\n", R(dec->pagar));
+       printf("base de cálculo: "FMT_R"\n",
+               R(totais_get(dec, "BASE")));
+       printf("isentos: "FMT_R"\n",
+               R(totais_get(dec, "ISENTOS")));
+       printf("exclusivos: "FMT_R"\n",
+               R(totais_get(dec, "EXCLUSIVOS")));
+       printf("bens: "FMT_R"\n",
+               R(totais_get(dec, "BENS")));
+       printf("bens: "FMT_R"\n",
+               R(totais_get(dec, "BENSANTERIOR")));
+       printf("aliquota efetiva: "FMT_R"%%\n",
+               R(dec->aliquota_efetiva));
+       printf("hash: %010ld\n", dec->hash);
+       return 0;
+}
+
+static int run_verbose(struct declaracao *dec, char **args, int argc)
+{
+       if (argc != 1)
+               return -EINVAL;
+       dec->verbose = 1;
        return 0;
 }
 
@@ -66,8 +99,23 @@ static void salva(struct declaracao *dec, FILE *f)
                fprintf(f, "recibo \"%s\"\n", dec->recibo);
        if (dec->retifica)
                fprintf(f, "retifica \"%s\"\n", dec->retifica);
+       if (dec->banco)
+               fprintf(f, "banco \"%s\"\n", dec->banco);
+       if (dec->agencia)
+               fprintf(f, "agencia \"%s\"\n", dec->agencia);
+       if (dec->contacorrente)
+               fprintf(f, "contacorrente \"%s\"\n", dec->contacorrente);
+       if (dec->dvconta)
+               fprintf(f, "dvconta \"%s\"\n", dec->dvconta);
        contribuinte_salva(dec, f);
        rendimento_salva(dec, f);
+       carne_salva(dec, f);
+       pagamento_salva(dec, f);
+       bem_salva(dec, f);
+       isento_salva(dec, f);
+       dependente_salva(dec, f);
+       conjuge_salva(dec, f);
+       sistema_salva(dec, f);
 }
 
 static int run_salva(struct declaracao *dec, char **args, int argc)
@@ -85,6 +133,22 @@ static int run_salva(struct declaracao *dec, char **args, int argc)
        return 0;
 }
 
+static int run_simples(struct declaracao *dec, char **args, int argc)
+{
+       if (argc != 1)
+               return -EINVAL;
+       dec->tipo = FORCA_SIMPLES;
+       return 0;
+}
+
+static int run_completa(struct declaracao *dec, char **args, int argc)
+{
+       if (argc != 1)
+               return -EINVAL;
+       dec->tipo = FORCA_COMPLETA;
+       return 0;
+}
+
 static struct cmd cmd_salva = {
        .name = "salva",
        .run = run_salva,
@@ -95,6 +159,21 @@ static struct cmd cmd_resumo = {
        .run = run_resumo,
 };
 
+static struct cmd cmd_verbose = {
+       .name = "verbose",
+       .run = run_verbose,
+};
+
+static struct cmd cmd_simples = {
+       .name = "simples",
+       .run = run_simples,
+};
+
+static struct cmd cmd_completa = {
+       .name = "completa",
+       .run = run_completa,
+};
+
 int base_cmd_init(void)
 {
        cmd_add(&cmd_salva);
@@ -111,5 +190,9 @@ int base_cmd_init(void)
        cmd_add(&cmd_contacorrente);
        cmd_add(&cmd_dvconta);
 
+       cmd_add(&cmd_verbose);
+       cmd_add(&cmd_simples);
+       cmd_add(&cmd_completa);
+
        return 0;
 }