]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
* Termino de generar las opciones de Baja y Alta de articulo (ojo que no dan de...
authorRicardo Markiewicz <gazer.arg@gmail.com>
Fri, 2 Apr 2004 19:41:25 +0000 (19:41 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Fri, 2 Apr 2004 19:41:25 +0000 (19:41 +0000)
gui/articulos.c
gui/articulos.h
gui/form.c
gui/gui.c

index cce691a481ec57b42363fdf780bff5f83edbb3e5..81bb20725e0f468cee3304aedc97206db4617c67 100644 (file)
@@ -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);
+}
+
index e95adf50938fb38408d05f31780645af7486322c..3e35b80db6a83db4297dcff4245bc0d0b991045f 100644 (file)
@@ -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
 
index 38d93738ca929589b423a4099a8c41f6fb14609e..21e7d4865425c52017ad3997bb2d070e942d1856 100644 (file)
@@ -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 */
index 9042cbbe4b6cf26d901020022ec02dc339c65a9c..dc716259bdb9837f039fb5fbe236dbf37a528af3 100644 (file)
--- 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);