From 6c1c229c39002932d0f842f7b5662992c5466628 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Fri, 25 Sep 2015 07:46:40 -0300 Subject: [PATCH] =?utf8?q?Permite=20escolher=20entre=20declara=C3=A7=C3=A3?= =?utf8?q?o=20completa=20e=20simplificada.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- lib/base.c | 29 +++++++++++++++++++++++++++++ lib/calcula.c | 3 ++- lib/declaracao.h | 2 ++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/base.c b/lib/base.c index 4f5c5fd..7c55b85 100644 --- a/lib/base.c +++ b/lib/base.c @@ -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; } diff --git a/lib/calcula.c b/lib/calcula.c index 50747c9..9116868 100644 --- a/lib/calcula.c +++ b/lib/calcula.c @@ -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 { diff --git a/lib/declaracao.h b/lib/declaracao.h index eaff855..ce318e6 100644 --- a/lib/declaracao.h +++ b/lib/declaracao.h @@ -27,6 +27,8 @@ enum { SIMPLES, COMPLETA, + FORCA_SIMPLES, + FORCA_COMPLETA, }; struct declaracao { -- 2.20.1