Permite escolher entre declaração completa e simplificada.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Fri, 25 Sep 2015 10:46:40 +0000 (07:46 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Sat, 12 Mar 2016 20:47:05 +0000 (17:47 -0300)
lib/base.c
lib/calcula.c
lib/declaracao.h

index 4f5c5fd..7c55b85 100644 (file)
@@ -116,6 +116,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,
@@ -126,6 +142,16 @@ static struct cmd cmd_resumo = {
        .run = run_resumo,
 };
 
+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);
@@ -142,5 +168,8 @@ int base_cmd_init(void)
        cmd_add(&cmd_contacorrente);
        cmd_add(&cmd_dvconta);
 
+       cmd_add(&cmd_simples);
+       cmd_add(&cmd_completa);
+
        return 0;
 }
index 50747c9..9116868 100644 (file)
@@ -124,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 {
index eaff855..ce318e6 100644 (file)
@@ -27,6 +27,8 @@
 enum {
        SIMPLES,
        COMPLETA,
+       FORCA_SIMPLES,
+       FORCA_COMPLETA,
 };
 
 struct declaracao {