Skip to content

Commit

Permalink
Um monte de alterações
Browse files Browse the repository at this point in the history
  • Loading branch information
diegotoral committed Dec 3, 2013
1 parent f5ed47f commit f4937c9
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 33 deletions.
2 changes: 1 addition & 1 deletion src/data.h
Expand Up @@ -17,6 +17,6 @@ Data* data_novo(int ano, int mes, int dia);
/*
* Retorna um objeto representando a data atual.
*/
//Data* data_atual();
Data* data_atual();

#endif
49 changes: 34 additions & 15 deletions src/estoque.c
Expand Up @@ -66,7 +66,7 @@ int estoque_cheio (Estoque *estoque) {
Produto* estoque_busca_nome (Estoque* estoque, char *nome_produto) {
int i;

for (i = 0; i < estoque->qtd_produtos - 1; i++) {
for (i = 0; i < estoque->qtd_produtos; i++) {
if (strcmp(estoque->produtos[i].nome, nome_produto) == 0)
return &estoque->produtos[i];
}
Expand All @@ -79,7 +79,7 @@ void estoque_lista_categoria (Estoque* estoque, char *categoria_produto) {

tabela_produto ();

for (i = 0; i < estoque->qtd_produtos - 1; i++) {
for (i = 0; i < estoque->qtd_produtos; i++) {
if (strcmp(estoque->produtos[i].categoria, categoria_produto) == 0)
produto_listar (&estoque->produtos[i]);
}
Expand All @@ -90,7 +90,7 @@ void estoque_lista_categoria (Estoque* estoque, char *categoria_produto) {
Produto* estoque_busca_codigo (Estoque *estoque, int codigo) {
int i;

for (i = 0; i < estoque->qtd_produtos - 1; i++) {
for (i = 0; i < estoque->qtd_produtos; i++) {
if (estoque->produtos[i].codigo == codigo)
return &estoque->produtos[i];
}
Expand All @@ -103,7 +103,7 @@ void estoque_busca_fabricante (Estoque *estoque, char* fabricante) {

tabela_produto ();

for (i = k = 0; i < estoque->qtd_produtos - 1; i++) {
for (i = k = 0; i < estoque->qtd_produtos; i++) {
if (strcmp(estoque->produtos[i].fabricante, fabricante) == 0)
produto_listar (&estoque->produtos[i]);
}
Expand All @@ -116,6 +116,21 @@ void estoque_add_produto (Estoque *estoque, Produto *produto) {
estoque->qtd_produtos++;
}

void estoque_rm_produto (Estoque *estoque, Produto *produto) {
int i;

assert (produto != NULL);

for (i = 0; i < estoque->qtd_produtos; ++i) {
if (estoque->produtos[i].codigo == produto->codigo) {
estoque->qtd_produtos--;
pswap (&estoque->produtos[i], produto);

return;
}
}
}

void estoque_listar (Estoque *estoque){

int i;
Expand Down Expand Up @@ -146,7 +161,7 @@ int estoque_baixo (Estoque *estoque, int qtd) {

int i, k;

for (i = k = 0; i < estoque->qtd_produtos - 1; i++){
for (i = k = 0; i < estoque->qtd_produtos; i++){
if (estoque->produtos[i].quantidade <= qtd)
k++;
}
Expand All @@ -166,17 +181,21 @@ void estoque_repor (Estoque *estoque, int codigo, Data *validade, int qtd) {
}


void estoque_validade (Estoque *estoque, Data *data) {
// int i, k;
int estoque_validade (Estoque *estoque, Data *data) {
int i, k;

for (i = k = 0; i < estoque->qtd_produtos - 1; i++){
int mes, ano;

// for (i = k = 0; i < estoque->qtd_produtos - 1; i++){
// int dia, mes, ano;
mes = estoque->produtos[i].validade->mes;
ano = estoque->produtos[i].validade->ano;

// dia = estoque->produtos[i].validade.dia;
// mes = estoque->produtos[i].validade.mes;
// ano = estoque->produtos[i].validade.ano;
if (ano <= data->ano) {
if (mes >= data->mes + 1) {
k++;
}
}
}

// if (ano <= data.ano || (ano == data.ano && mes <= data.mes))
// k++;
// }
return k;
}
9 changes: 7 additions & 2 deletions src/estoque.h
Expand Up @@ -56,6 +56,11 @@ void estoque_busca_fabricante (Estoque *estoque, char* fabricante);
*/
void estoque_add_produto (Estoque *estoque, Produto *produto);

/*
* Remove um produto do estoque.
*/
void estoque_rm_produto (Estoque *estoque, Produto *produto);

/*
* Salva produtos do estoque no banco de dados.
*/
Expand All @@ -80,8 +85,8 @@ int estoque_baixo (Estoque *estoque, int qtd);
void estoque_repor (Estoque *estoque, int codigo, Data *validade, int qtd);

/*
* Lista produtos com a data de validade próxima.
* Conta os produtos com a data de validade próxima.
*/
void estoque_validade (Estoque *estoque, Data *data);
int estoque_validade (Estoque *estoque, Data *data);

#endif
45 changes: 31 additions & 14 deletions src/funcionario.c
@@ -1,4 +1,5 @@
#include "funcionario.h"
#include <string.h>
#include "utils.h"
#include "filtros.h"

Expand Down Expand Up @@ -59,41 +60,40 @@ void funcionario_busca_nome (Estoque *estoque) {
}

void funcionario_busca_codigo (Estoque *estoque) {
Produto *produto;
int codigo;
Produto *produto;

limpar_terminal ();
cabecalho ("Buscar produto por código");

printf("Digite o código do produto: ");
scanf (" %i", &codigo);
printf("\n");

/* produto = estoque_busca_codigo (estoque, codigo);
produto = estoque_busca_codigo (estoque, codigo);

if (produto == NULL)
printf("\nNenhum produto encontrado!\n");
else
else {
tabela_produto ();
produto_listar (produto);
*/
hr ();
}

aguarde ();
}

void funcionario_busca_fabricante (Estoque *estoque) {
Produto *produto;
char *fabricante = NULL;
char fabricante[100];

limpar_terminal ();
cabecalho ("Buscar produto por fabricante");

printf("Digite o nome do fabricante do produto: ");
scanf (" %s", fabricante);
printf("\n");

/* produto = estoque_busca_fabricante (estoque, fabricante);
if (produto == NULL)
printf("\nNenhum produto encontrado!\n");
else
produto_listar (produto);*/
estoque_busca_fabricante (estoque, fabricante);

aguarde ();
}
Expand Down Expand Up @@ -129,22 +129,39 @@ void funcionario_listar_quantidade (Estoque *estoque) {
}

void funcionario_produto_rm (Estoque *estoque) {
Produto *produto;
int codigo;
char confirmacao[5];
Produto *produto;

limpar_terminal ();
cabecalho ("Remover produto do estoque");

printf("Digite o código do produto: ");
scanf ("%i", &codigo);
printf("\n");

produto = estoque_busca_codigo (estoque, codigo);

if (produto == NULL)
return;

// Exibe o produto antes da remoção.
tabela_produto (produto);
produto_listar (produto);
hr ();

printf("\nTem certeza que deseja remover este produto? (Sim/Nao) ");
scanf(" %s", confirmacao);

if (strcmp (confirmacao, "Sim") == 0)
estoque_rm_produto (estoque, produto);

aguarde ();
}

void funcionario_estoque_repor (Estoque *estoque) {
int qtd, codigo;
Data *validade;
Produto *produto;

limpar_terminal ();
cabecalho ("Repor produto no estoque");
Expand Down
17 changes: 16 additions & 1 deletion src/utils.c
Expand Up @@ -2,7 +2,9 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "globals.h"
#include "data.h"


void cabecalho (char *tela) {
Expand All @@ -16,12 +18,25 @@ void cabecalho (char *tela) {
}

void rodape () {
Data *data_atual;
int ano, mes, dia;
struct tm * local;
time_t t;

t = time(NULL);
local = localtime (& t);
dia = local->tm_mday;
mes = local->tm_mon + 1;
ano = local->tm_year + 1900;

data_atual = data_novo(ano, mes, dia);

// Alertas.
printf("\n\n");
hr ();
printf("\t\t\t\tAVISOS\t\t\t\n");
hr ();
printf(" %i produto(s) próximo(s) do vencimento.\n", 0);
printf(" %i produto(s) próximo(s) do vencimento.\n", estoque_validade (estoque, data_atual));
printf(" %i produto(s) com estoque abaixo de 10.\n", estoque_baixo (estoque, 10));
hr ();

Expand Down

0 comments on commit f4937c9

Please sign in to comment.