From 9fd7fdefa9de8b8932cd4c3951792f80ba91b676 Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Fri, 2 Apr 2004 19:41:25 +0000 Subject: [PATCH] * Termino de generar las opciones de Baja y Alta de articulo (ojo que no dan de alta nada, solo dormularios) --- gui/articulos.c | 80 +++++++++++++++++++++++++++++++++++++++++++++---- gui/articulos.h | 2 ++ gui/form.c | 24 ++++++++++----- gui/gui.c | 6 ++-- 4 files changed, 96 insertions(+), 16 deletions(-) diff --git a/gui/articulos.c b/gui/articulos.c index cce691a..81bb207 100644 --- a/gui/articulos.c +++ b/gui/articulos.c @@ -3,6 +3,8 @@ t_LstArticulos *lst_articulos; +t_Articulo *art_form_buscar(WINDOW *win); + t_LstArticulos *art_cargar(const char *filename) { xmlDocPtr document; @@ -109,6 +111,20 @@ t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero) return NULL; } +t_Articulo *art_form_buscar(WINDOW *win) +{ + t_Form *form; + t_Articulo *articulo; + + form = form_crear(win); + form_agregar_widget(form, INPUT, "Numero de Artículo", 8, ""); + form_ejecutar(form, 1,1); + articulo = art_obtener(NULL, form_obtener_valor(form, "Numero de Artículo")); + form_destruir(form); + + return articulo; +} + void art_modificar(char *s) { WINDOW *win; @@ -119,11 +135,7 @@ void art_modificar(char *s) box(win, 0, 0); wrefresh(win); - form = form_crear(win); - form_agregar_widget(form, INPUT, "Numero de Artículo", 8, ""); - form_ejecutar(form, 1,1); - articulo = art_obtener(NULL, form_obtener_valor(form, "Numero de Artículo")); - form_destruir(form); + articulo = art_form_buscar(win); if (articulo != NULL) { form = form_crear(win); @@ -131,9 +143,12 @@ void art_modificar(char *s) form_agregar_widget(form, INPUT, "Descripción", 50, articulo->desc); form_agregar_widget(form, INPUT, "Presentación", 30, articulo->presentacion); form_agregar_widget(form, INPUT, "Stock Actual", 8, articulo->existencia); - form_agregar_widget(form, INPUT, "PVU", 30, articulo->pvu); + form_agregar_widget(form, INPUT, "PVU", 8, articulo->pvu); form_agregar_widget(form, INPUT, "Stock Mínimo", 8, articulo->emin); form_ejecutar(form, 1,1); + + /* TODO : Actualizar registro */ + form_destruir(form); } @@ -142,3 +157,56 @@ void art_modificar(char *s) delwin(win); } +void art_eliminar(char *s) +{ + WINDOW *win; + t_Articulo *articulo; + + win = newwin(8, 68, 13, 1); + box(win, 0, 0); + wrefresh(win); + + articulo = art_form_buscar(win); + + if (articulo == NULL) { + wattron(win, COLOR_PAIR(COLOR_YELLOW)); + mvwaddstr(win, 6, 4, "No existe artículo con ese código. Abortando!"); + wattroff(win, COLOR_PAIR(COLOR_YELLOW)); + wrefresh(win); + getch(); + } else { + /* TODO : Eliminar un registro */ + } + + werase(win); + wrefresh(win); + delwin(win); +} + +void art_agregar(char *s) +{ + WINDOW *win; + t_Form *form; + + win = newwin(8, 68, 13, 1); + box(win, 0, 0); + wrefresh(win); + + form = form_crear(win); + form_agregar_widget(form, INPUT, "Numero de Artículo", 8, ""); + form_agregar_widget(form, INPUT, "Descripción", 50, ""); + form_agregar_widget(form, INPUT, "Presentación", 30, ""); + form_agregar_widget(form, INPUT, "Stock Actual", 8, ""); + form_agregar_widget(form, INPUT, "PVU", 8, ""); + form_agregar_widget(form, INPUT, "Stock Mínimo", 8, ""); + form_ejecutar(form, 1,1); + + /* TODO : Agregar el nuevo elemento */ + + form_destruir(form); + + werase(win); + wrefresh(win); + delwin(win); +} + diff --git a/gui/articulos.h b/gui/articulos.h index e95adf5..3e35b80 100644 --- a/gui/articulos.h +++ b/gui/articulos.h @@ -23,6 +23,7 @@ */ typedef struct _articulo_ { + unsigned int idREG; /* Registro Fisico donde esta guardado */ char numero[9]; char desc[51]; char presentacion[31]; @@ -43,5 +44,6 @@ t_Articulo *art_obtener(t_LstArticulos *, const char *numero); void art_agregar(char *); void art_eliminar(char *); void art_modificar(char *); + #endif diff --git a/gui/form.c b/gui/form.c index 38d9373..21e7d48 100644 --- a/gui/form.c +++ b/gui/form.c @@ -90,23 +90,32 @@ void form_ejecutar(t_Form *f, int x, int y) /* Pongo las etiquetas de los campos, y me fijo el mayor offset */ while (tmp) { my_y++; - mvwaddstr(f->win, my_y, x, tmp->nombre); - waddch(f->win, ':'); - waddch(f->win, ' '); if (strlen(tmp->nombre) > offset) offset = strlen(tmp->nombre); tmp = tmp->sig; } /* Agrego el ": " al offset*/ - x += offset + 2; + offset += 2; + + tmp = f->primero; + my_y = y-1; + while (tmp) { + ++my_y; + mvwaddstr(f->win, my_y, x, tmp->nombre); + waddch(f->win, ':'); + waddch(f->win, ' '); + mvwaddstr(f->win, my_y, x+offset, tmp->valor); + tmp = tmp->sig; + } wrefresh(f->win); + tmp = f->primero; my_y = y-1; while (tmp) { ++my_y; - wmove(f->win, my_y, x); - salida = tmp->ejecutar(f->win, x, my_y, tmp); + wmove(f->win, my_y, x+offset); + salida = tmp->ejecutar(f->win, x+offset, my_y, tmp); wrefresh(f->win); tmp = tmp->sig; } @@ -209,7 +218,7 @@ int form_input(WINDOW *win, int x, int y, t_Widget *w) char *tmp = w->valor; int current = 0, c; mvwaddstr(win, y, x, w->valor); - + curs_set(1); while ((*tmp) != '\0') { tmp++; current++; @@ -226,6 +235,7 @@ int form_input(WINDOW *win, int x, int y, t_Widget *w) waddch(win, ' '); /* Este va para dejar el cursor bien, ya que addch mueve el cursor*/ wmove(win, y, x+current); + wrefresh(win); continue; } /* Si no entra mas, ignoro toda entrada */ diff --git a/gui/gui.c b/gui/gui.c index 9042cbb..dc71625 100644 --- a/gui/gui.c +++ b/gui/gui.c @@ -99,9 +99,9 @@ void menu_articulos() items = (ITEM **)calloc(5, sizeof(ITEM *)); items[0] = new_item(opciones[0], "Crear un nuevo articulo."); - //set_item_userptr(items[0], art_agregar); + set_item_userptr(items[0], art_agregar); items[1] = new_item(opciones[1], "Eliminar un articulo existente."); - //set_item_userptr(items[0], art_eliminar); + set_item_userptr(items[1], art_eliminar); items[2] = new_item(opciones[2], "Modificar un articulo existente."); set_item_userptr(items[2], art_modificar); items[3] = new_item(opciones[3], "Volver al menu anterior."); @@ -124,7 +124,7 @@ void menu_articulos() curs_set(0); salir = 0; - while((!salir) && (c = getch()) != KEY_F(1)) { + while((!salir) && (c = getch()) != KEY_F(3)) { switch(c) { case KEY_DOWN: menu_driver(menu, REQ_DOWN_ITEM); -- 2.43.0