From: Ricardo Markiewicz Date: Mon, 31 May 2004 03:41:42 +0000 (+0000) Subject: * Agrego a la lista capacidad de imprimirse a un archivo, para X-Git-Tag: svn_import_r684~35 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/b64f16940c1962e4889807463966f7382818eff1 * Agrego a la lista capacidad de imprimirse a un archivo, para que no digan que no lo implementamos (y ademas sale gratis :-) --- diff --git a/emufs_gui/emufs_view.c b/emufs_gui/emufs_view.c index 8a0a1d6..fb8436c 100644 --- a/emufs_gui/emufs_view.c +++ b/emufs_gui/emufs_view.c @@ -28,7 +28,6 @@ void menu_ver_registros(); void menu_ver_bloques(); void menu_ver_indices(); void preguntar_nuevo_tipo(const char *title, int *tipo, int *tam_bloque, int *tam_reg); -char *preguntar_file(); void ver_estadisticas(EMUFS *fp); diff --git a/emufs_gui/facturas.c b/emufs_gui/facturas.c index f16e16f..a1d7e32 100644 --- a/emufs_gui/facturas.c +++ b/emufs_gui/facturas.c @@ -1216,8 +1216,6 @@ void fact_consultas_fechas(char *s) } fclose(fp); /* Mando a ordenar */ - /* XXX TODO XXX TODO XXX */ - /* ORDENAR */ extsort("tmp_ord.xxx", 5*sizeof(t_OrdExt_Data), sizeof(t_OrdExt_Data), comparar_externo); } /* Creo la lista donde mostrar la consulta*/ @@ -1267,10 +1265,17 @@ void fact_consultas_fechas(char *s) } else { /* Cargo la lista a partir del archivo ordenado externamente */ FILE *fp; + int j; + char st[3]; t_OrdExt_Data ord; + + j =( strcmp(estado, "Todos") == 0); fp = fopen("tmp_ord.xxx", "r"); + + /* si j == 1 tengo que paginar por estado */ + fread(&ord, sizeof(t_OrdExt_Data), 1, fp); + strcpy(st, ord.estado); while (!feof(fp)) { - if (fread(&ord, sizeof(t_OrdExt_Data), 1, fp) != 1) continue; lista_agregar_fila(lista, ord.numero, ord.emision, @@ -1278,7 +1283,20 @@ void fact_consultas_fechas(char *s) get_forma_pago(ord.fp), ord.importe ); + strcpy(st, ord.estado); + + fread(&ord, sizeof(t_OrdExt_Data), 1, fp); + /* Si el estado cambio y j == 1 */ + if ((strcmp(st, ord.estado) != 0) && (j == 1)) { + /* Hago la pausa para mostrar lo que hay */ + lista_ejecutar(lista); + /* bue, ya miraron, ahora limpio y sigo con el resto */ + lista_clear(lista); + } } + + /* Elimino el archivo temporal */ + unlink("tmp_ord.xxx"); } curs_set(0); lista_ejecutar(lista); diff --git a/emufs_gui/gui.h b/emufs_gui/gui.h index c825b3c..2eab16e 100644 --- a/emufs_gui/gui.h +++ b/emufs_gui/gui.h @@ -53,5 +53,7 @@ typedef struct _mis_param_ { parametro_indice ind_fac[5]; } t_Parametros; +char *preguntar_file(); + #endif diff --git a/emufs_gui/lista.c b/emufs_gui/lista.c index ca71b72..5d22bff 100644 --- a/emufs_gui/lista.c +++ b/emufs_gui/lista.c @@ -1,6 +1,7 @@ #include "common.h" #include "lista.h" +#include "gui.h" t_Lista *lista_crear(int cc, WINDOW *win, int w, int h) { @@ -178,7 +179,7 @@ void print_lista(t_Lista *lst, t_Fila *fil, int sel) /* Imprimo algunas cosas*/ sprintf(format, "Cantidad de Items : %d", lst->cant_filas); mvwaddstr(lst->win, 0, 0, format); - mvwaddstr(lst->win, 1, 0, "Teclas : ENTER = VOLVER E = Editar"); + mvwaddstr(lst->win, 1, 0, "Teclas : ENTER = VOLVER E = Editar P = Imprimir"); /* Pongo la filas */ y = 0; y++; @@ -226,6 +227,7 @@ int lista_ejecutar(t_Lista *lst) int key; t_Fila *fil; int i, offset=0, selected=0; + char *file; fil = lst->primera; if (fil == NULL) { @@ -262,6 +264,12 @@ int lista_ejecutar(t_Lista *lst) i++; } return fil->datos[0].i_dato; + } else if ((key == 'p') || (key == 'P')) { + file = preguntar_file(); + if (file) { + lista_print_file(lst, file); + free(file); + } } else { continue; } @@ -291,5 +299,71 @@ void lista_clear(t_Lista *lst) free(del); } lst->primera = NULL; + lst->cant_filas = 0; } +void poner_espacios(FILE *fp, int cant) +{ + int i; + for(i=0; icant_filas); + fputs(format, fp); + /* Pongo la filas */ + col = lst->columnas; + while (col) { + poner_espacios(fp, col->offset); + fputs(col->nombre, fp); + col = col->sig; + } + fputs("\n", fp); + + fil = lst->primera; + while (fil) { + /* Si no entran mas filas salgo! */ + col = lst->columnas; + /* Imprimo los datos de cada columna */ + i = 0; + while (col) { + switch (col->tipo) { + case DATO_INT: + sprintf(texto, "%d", fil->datos[i].i_dato); + /* Alineo el numero a derecha */ + sprintf(format, "%% %ds", col->width); + break; + case DATO_STR: + sprintf(texto, "%s", fil->datos[i].s_dato); + sprintf(format, "%%-%ds", col->width); + break; + case DATO_FLOAT: + sprintf(texto, "%.2f", fil->datos[i].f_dato); + sprintf(format, "%%%ds", col->width); + } + sprintf(salida, format, texto); + poner_espacios(fp, col->offset); + fputs(texto, fp); + i++; + col = col->sig; + } + fputs("\n", fp); + fil = fil->sig; + } + fclose(fp); +} diff --git a/emufs_gui/lista.h b/emufs_gui/lista.h index 4b2d977..d3f8c4b 100644 --- a/emufs_gui/lista.h +++ b/emufs_gui/lista.h @@ -96,5 +96,9 @@ int lista_ejecutar(t_Lista *lst); /** Limpia los datos agregados a las filas */ void lista_clear(t_Lista *lst); + +/** Imprime una lista a un archivo */ +void lista_print_file(t_Lista *lst, char *file); + #endif