}
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*/
} 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,
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);
#include "common.h"
#include "lista.h"
+#include "gui.h"
t_Lista *lista_crear(int cc, WINDOW *win, int w, int h)
{
/* 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++;
int key;
t_Fila *fil;
int i, offset=0, selected=0;
+ char *file;
fil = lst->primera;
if (fil == NULL) {
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;
}
free(del);
}
lst->primera = NULL;
+ lst->cant_filas = 0;
}
+void poner_espacios(FILE *fp, int cant)
+{
+ int i;
+ for(i=0; i<cant; i++)
+ fputc(' ', fp);
+}
+
+void lista_print_file(t_Lista *lst, char *file)
+{
+ FILE *fp;
+
+ char texto[100];
+ char salida[100];
+ char format[100];
+ t_Columna *col;
+ t_Fila *fil;
+ int i;
+
+ fp = fopen(file, "wt");
+ /* Imprimo algunas cosas*/
+ fputs("EMUFS - Reporte\n\n", fp);
+
+ sprintf(format, "Cantidad de Items : %d\n\n", lst->cant_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);
+}