From: Ricardo Markiewicz Date: Sun, 30 May 2004 05:06:23 +0000 (+0000) Subject: * ADDED : Recorrer archivo de articulos por alguno de sus indices (solo por codigo... X-Git-Tag: svn_import_r684~96 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/673b6744b98968c1a0fd6856b5a9dcd636c06b7c?hp=b6adfac6abe59eaf6165396982e4ab447e48b62b * ADDED : Recorrer archivo de articulos por alguno de sus indices (solo por codigo implementado hasta ahora) * algunos bugs arreglados --- diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 67206b6..2d49c02 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -1003,3 +1003,120 @@ void art_consultas(char *s) delwin(win); } + +void imprimir(WINDOW *win, int y, int x, char *s, char *b) +{ + wmove(win, y, x); + waddstr(win, s); + waddstr(win, b); +} + +void mostrar_art(WINDOW *win, CLAVE k, char *s) +{ + t_Articulo *art; + EMUFS_REG_ID dummy; + int y = 3; + char numero[10]; + /* XXX SOLO PARA CODIGO XXX */ + + wattron(win, COLOR_PAIR(COLOR_RED)); + mvwaddstr(win, 1, 5, "Recorriendo Articulos por indice "); + waddstr(win, s); + wattroff(win, COLOR_PAIR(COLOR_RED)); + + wattron(win, A_BOLD); + mvwaddstr(win, 18, 5, "Teclas:"); + wattroff(win, A_BOLD); + mvwaddstr(win, 19, 5, " L = Siguiente"); + mvwaddstr(win, 20, 5, " K = Anterior"); + art = art_obtener(lst_articulos, k.i_clave, &dummy); + if (art != NULL) { + sprintf(numero, "%08d", art->numero); + + imprimir(win, y++, 5, "Numero : ", numero); + imprimir(win, y++, 5, "Descripcion : ", art->desc); + imprimir(win, y++, 5, "Presentacion: ", art->presentacion); + imprimir(win, y++, 5, "Existencia : ", art->existencia); + imprimir(win, y++, 5, "Ubicacion : ", art->ubicacion); + imprimir(win, y++, 5, "P. Unitario : ", art->pvu); + imprimir(win, y++, 5, "Stock Minimo: ", art->emin); + + free(art); + } else { + PERR("NO EXISTE EL ARTICULO"); + } + +} + +void art_recorrer_con_indice(char *s) +{ + WINDOW *win, *win1; + INDICE *idx; + CLAVE stack[1000]; /* shhhh */ + CLAVE k; + int stack_pos=0, c; + + PERR("Busco indice"); + idx = emufs_buscar_indice_por_nombre(lst_articulos->fp, s); + + win = newwin(LINES-4, COLS-2, 2, 1); + win1 = derwin(win, LINES-6, COLS-4, 1, 1); + werase(win); + box(win, 0, 0); + wrefresh(win); + + PERR("Obtengo clave menor"); + k = idx->obtener_menor_clave(idx); + + PERR("Muestro el primer elemento"); + + + mostrar_art(win1, k, s); + wrefresh(win1); + PERR("Sigue el usuario"); + curs_set(0); + while ((c=wgetch(win)) != 13) { + switch (c) { + case 'L': + case 'l': + stack[stack_pos++] = k; /* Guardo la clave para poder volver */ + k = idx->obtener_sig_clave(idx, k); + /* TODO Verificar que no me pase del fin */ + break; + case 'K': + case 'k': + /* recupero la anterior */ + stack_pos--; + if (stack_pos < 0) stack_pos = 0; + k = stack[stack_pos]; + break; + default: + continue; + } + werase(win1); + mostrar_art(win1, k, s); + wrefresh(win1); + } + curs_set(1); + + werase(win1); + werase(win); + wrefresh(win); + delwin(win); +} + +void art_recorrer() +{ + char *ind[3] = {"codigo", "desc", "presentacion"}; + MENU(mi_menu) { + MENU_OPCION("Codigos", "Recorrer por Indice Codigo"), + MENU_OPCION("Descripcion", "Recorrer por Indice Descripcionn"), + MENU_OPCION("Presentacion", "Recorrer por Indice Presentacion"), + MENU_OPCION("Volver", "Volver al menu anterior.") + }; + int opt; + while ((opt = menu_ejecutar(mi_menu, 4, "Consulta de Articulos")) != 3) { + art_recorrer_con_indice(ind[opt]); + } +} + diff --git a/emufs_gui/articulos.h b/emufs_gui/articulos.h index bfaa5ee..d87de7f 100644 --- a/emufs_gui/articulos.h +++ b/emufs_gui/articulos.h @@ -48,4 +48,6 @@ void art_reformatear(int tipo, int tam_bloque, int tam_reg); int art_exportar_xml(const char *filename); +void art_recorrer(); + #endif diff --git a/emufs_gui/emufs.xml b/emufs_gui/emufs.xml index f072c8c..6fc553a 100644 --- a/emufs_gui/emufs.xml +++ b/emufs_gui/emufs.xml @@ -16,7 +16,7 @@ - + diff --git a/emufs_gui/emufs_view.c b/emufs_gui/emufs_view.c index f2d2c22..003a6b3 100644 --- a/emufs_gui/emufs_view.c +++ b/emufs_gui/emufs_view.c @@ -362,11 +362,12 @@ void menu_articulos() MENU_OPCION("Baja", "Elimina un articulo existente."), MENU_OPCION("Modificacion", "Modifica un articulo existente."), MENU_OPCION("Consultas", "Consulta varias de articulo."), + MENU_OPCION("Recorrer", "Recorrer el archivo por alguno de sus indices."), MENU_OPCION("Volver", "Volver al menu anterior.") }; int opt; - while ((opt = menu_ejecutar(mi_menu, 5, "Menu Articulos")) != 4) { + while ((opt = menu_ejecutar(mi_menu, 6, "Menu Articulos")) != 5) { switch (opt) { case 0: art_agregar(NULL); @@ -379,6 +380,9 @@ void menu_articulos() break; case 3: art_consultas(NULL); + break; + case 4: + art_recorrer(); } }