From 7d15630785cfb45d9ef67621cc4ce3ef43ca0318 Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Thu, 27 May 2004 21:22:31 +0000 Subject: [PATCH] * ADDED : Buscar siguiente clave en un arbol a partir de otra clave, para poder recorrer el arbol de forma ordenada (al parecer no anda,tengo que revisar) * Agrego busqueda de facturas por rango de fechas y filtro de estado --- emufs/indice_b.c | 81 ++++++++++++++++++++++++++++++++++++++++++++ emufs/indice_b.h | 2 ++ emufs/indices.c | 1 + emufs/indices.h | 2 ++ emufs_gui/facturas.c | 41 +++++++++++++++------- 5 files changed, 115 insertions(+), 12 deletions(-) diff --git a/emufs/indice_b.c b/emufs/indice_b.c index eba1739..89a5b77 100644 --- a/emufs/indice_b.c +++ b/emufs/indice_b.c @@ -1132,3 +1132,84 @@ CLAVE emufs_indice_b_obtener_mayor_clave(INDICE *idx) return k; } +CLAVE emufs_indice_b_obtener_sig_clave(INDICE *idx, CLAVE k) +{ + int i; + B_NodoHeader header; + B_NodoEntry *claves; + char *nodo, *tmp; + int nodo_id; + CLAVE salida; + + /* Primero busco la clave pasada por parametro */ + nodo = b_leer_nodo(idx, 0); + nodo_id = 0; + while (nodo) { + b_leer_header(nodo, &header); + claves = b_leer_claves(nodo, &header); + i=0; + while ((ibuscar_entradas = emufs_indice_b_buscar_muchos; tmp->obtener_menor_clave = emufs_indice_b_obtener_menor_clave; tmp->obtener_mayor_clave = emufs_indice_b_obtener_mayor_clave; + tmp->obtener_sig_clave = emufs_indice_b_obtener_sig_clave; break; case IND_B_ASC: /* llenar metodos */ diff --git a/emufs/indices.h b/emufs/indices.h index f38a63a..73231d5 100644 --- a/emufs/indices.h +++ b/emufs/indices.h @@ -76,6 +76,8 @@ typedef struct _indices_h_ { CLAVE (*obtener_menor_clave)(struct _indices_h_ *idx); CLAVE (*obtener_mayor_clave)(struct _indices_h_ *idx); + CLAVE (*obtener_sig_clave)(struct _indices_h_ *idx, CLAVE k); + char *nombre; /**< Nombre único de busqueda del indice */ char *filename; /**< nombre del archivo de indice */ diff --git a/emufs_gui/facturas.c b/emufs_gui/facturas.c index c699278..6e38afb 100644 --- a/emufs_gui/facturas.c +++ b/emufs_gui/facturas.c @@ -1038,10 +1038,8 @@ void fact_consultas_codigos(char *s) void fact_consultas_fechas(char *s) { - EMUFS_REG_ID dummy; char desde_fecha[10], hasta_fecha[10]; - int i; - t_Factura *factura; + char estado[6]; t_Lista *lista; t_Form *form; WINDOW *win, *win1; @@ -1058,11 +1056,12 @@ void fact_consultas_fechas(char *s) form = form_crear(win1); form_agregar_widget(form, INPUT, "Desde Fecha", 8, ""); form_agregar_widget(form, INPUT, "Hasta Fecha", 8, ""); - + form_agregar_widget(form, RADIO, "Estado", 7, "Todos,PN,CD,CM,SF,PM,NC"); form_ejecutar(form, 2, 2); strcpy(desde_fecha, form_obtener_valor_char(form, "Desde Fecha")); strcpy(hasta_fecha, form_obtener_valor_char(form, "Hasta Fecha")); + strcpy(estado, form_obtener_valor_char(form, "Estado")); form_destruir(form); werase(win1); @@ -1095,22 +1094,40 @@ void fact_consultas_fechas(char *s) lista_agregar_columna(lista, "Forma de Pago", DATO_STR, 40, 19); /* fp */ /* Leo los datos desde el archivo */ -/* for(i=desde_codigo; i<=hasta_codigo; i++) { - factura = fact_buscar(lst_facturas, i, &dummy, &dummy); - if (factura != NULL) { + while (k.i_clave != -1) { + t_Factura fact; + int error, cant, i; + char *leo; + EMUFS_REG_SIZE size; + INDICE_DATO *datos; + CLAVE k1; + datos = idx->buscar_entradas(idx, k, &cant); + for(i=0; ifp->leer_registro(lst_facturas->fp, k1, &size, &error); + if (leo != NULL) { + procesar_leer_factura(&fact, leo, size, lst_facturas); + free(leo); + /*k.i_clave = fact->reg_nota; + error = 0; + fact->nota = lst->fp_texto->leer_registro(lst->fp_texto, k, &size, &error); + */ + } lista_agregar_fila(lista, - factura->numero, - factura->emision, - get_estado(factura->estado), - get_forma_pago(factura->fp) + fact.numero, + fact.emision, + get_estado(fact.estado), + get_forma_pago(fact.fp) ); } + if (datos) free(datos); + k = idx->obtener_sig_clave(idx, k); } curs_set(0); lista_ejecutar(lista); curs_set(1); - */ wrefresh(win1); wrefresh(win); werase(win1); -- 2.43.0