From b6adfac6abe59eaf6165396982e4ab447e48b62b Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Sun, 30 May 2004 03:44:33 +0000 Subject: [PATCH] Varios bugfixes, mejoras de funcionalidad y validaciones. --- emufs/tipo3.c | 1 + emufs_gui/emufs.dtd | 2 +- emufs_gui/emufs.xml | 4 +- emufs_gui/emufs_view.c | 6 +-- emufs_gui/facturas.c | 64 +++++++++++++++++-------- emufs_gui/generar_archivos/genera_art.c | 1 + emufs_gui/tree_viewer.c | 3 +- 7 files changed, 54 insertions(+), 27 deletions(-) diff --git a/emufs/tipo3.c b/emufs/tipo3.c index 8e86c39..4faabe7 100644 --- a/emufs/tipo3.c +++ b/emufs/tipo3.c @@ -113,6 +113,7 @@ void* emufs_tipo3_leer_registro(EMUFS *emu, CLAVE clave, block = dato.bloque; ID = dato.id; PERR("Use indice"); + fprintf(stderr, "Datos leidos : id=%ld, bloque=%ld\n", ID, block); } else { /* Si no tengo claves, uso el campo entero para pasar un ID * directamente. diff --git a/emufs_gui/emufs.dtd b/emufs_gui/emufs.dtd index ac7e560..a28fd4e 100644 --- a/emufs_gui/emufs.dtd +++ b/emufs_gui/emufs.dtd @@ -23,7 +23,7 @@ diff --git a/emufs_gui/emufs.xml b/emufs_gui/emufs.xml index 4ede2d8..f072c8c 100644 --- a/emufs_gui/emufs.xml +++ b/emufs_gui/emufs.xml @@ -13,10 +13,10 @@ facturas.xml - + - + diff --git a/emufs_gui/emufs_view.c b/emufs_gui/emufs_view.c index f859cd6..f2d2c22 100644 --- a/emufs_gui/emufs_view.c +++ b/emufs_gui/emufs_view.c @@ -59,8 +59,8 @@ void print_help(char *s) int leer_tipo_arbol(char *s) { if (strcmp(s, "B") == 0) return 0; - if (strcmp(s, "B*") == 0) return 1; - if (strcmp(s, "B+") == 0) return 2; + if (strcmp(s, "BA") == 0) return 1; + if (strcmp(s, "BP") == 0) return 2; /* Por defecto es un B */ return 0; @@ -508,7 +508,7 @@ int main_menu() h = LINES-2; w = COLS-2; win = newwin(h, w, 1, 1); - emufs_indice_b_ver(art_get_lst()->fp->indices, win, w, h, 0); + emufs_indice_b_ver(fact_get_lst()->fp->indices, win, w, h, 0); delwin(win); } } diff --git a/emufs_gui/facturas.c b/emufs_gui/facturas.c index 2035834..626fb64 100644 --- a/emufs_gui/facturas.c +++ b/emufs_gui/facturas.c @@ -138,7 +138,7 @@ t_Item *leer_items(xmlNode *node, int *cant, int size) count++; } } - if (count == 10) break; /* No me entran mas items! */ + if (count == size) break; /* No me entran mas items! */ node = node->next; } } @@ -226,7 +226,7 @@ t_LstFacturas *fact_cargar(t_Parametros *param) /* En el registro no guardo los punteros de nota ni items. Si guardo la cantidad de items * y los items al final del registro. */ - if ((param->tipo_arch_fact) == T3) { + if (param->tipo_arch_fact == T3) { /* Limito a 10 items en el caso de registro constante! */ cant_items = 10; } else { @@ -359,21 +359,25 @@ t_Factura *fact_buscar(t_LstFacturas *lst, int numero, EMUFS_REG_ID *id, EMUFS_R k = emufs_indice_generar_clave_desde_valor(lst->fp->indices, (char*)&numero); error = 0; leo = lst->fp->leer_registro(lst->fp, k, &size, &error); + PERR("Registro Leido"); if (leo != NULL) { fact = (t_Factura *)malloc(sizeof(t_Factura)); if (fact == NULL) { free(leo); return NULL; } + PERR("Procesando"); procesar_leer_factura(fact, leo, size, lst); /* y esto ??! (*id) = reg->num_reg; (*id_texto) = reg->texto_reg; */ free(leo); + PERR("Leo nota"); k.i_clave = fact->reg_nota; error = 0; fact->nota = lst->fp_texto->leer_registro(lst->fp_texto, k, &size, &error); + PERR("DONE"); } return fact; @@ -757,6 +761,7 @@ static int procesar_leer_factura(t_Factura *dst, void *src, EMUFS_REG_SIZE size, return 0; } + fprintf(stderr, "TIPO = %d\n", lst->fp->tipo); switch (lst->fp->tipo) { case T1: case T2: @@ -955,25 +960,31 @@ int fact_exportar_xml(const char *filename) fprintf(fp, "\n"); fprintf(fp, "\n"); + fprintf(stderr, "EXPORTAR : Menor Clave = %d\n", k.i_clave); while (k.i_clave != -1) { fact = fact_buscar(lst_facturas, k.i_clave, &id, &id1); - fprintf(fp, "\tnumero); - fprintf(fp, "FechaEmisión=\"%s\" ", fact->emision); - fprintf(fp, "FechaVto=\"%s\" ", fact->vencimiento); - fprintf(fp, "NroRemito=\"%08d\" ", fact->numero_remito); - fprintf(fp, "FP=\"%s\" ", fact->fp); - fprintf(fp, "Estado=\"%s\" ", fact->estado); - fprintf(fp, "NroCheque=\"%s\" ", fact->cheque); - fprintf(fp, "PorcDoI=\"%.2f\" ", fact->procdoi); - fprintf(fp, "NroCtaCte=\"%s\" ", fact->ctacte); - fprintf(fp, ">\n"); - fprintf(fp, "\t\t%s\n", fact->nota); - for(j=0; jcant_items; j++) { - if (fact->items[j].numero != 0) - fprintf(fp, "\t\t\n", fact->items[j].numero, fact->items[j].cv, fact->items[j].pvu); + fprintf(stderr, "Lei factura numero %d y apunta a %p\n", k.i_clave, fact); + if (fact != NULL) { + fprintf(fp, "\tnumero); + fprintf(fp, "FechaEmisión=\"%s\" ", fact->emision); + fprintf(fp, "FechaVto=\"%s\" ", fact->vencimiento); + fprintf(fp, "NroRemito=\"%08d\" ", fact->numero_remito); + fprintf(fp, "FP=\"%s\" ", fact->fp); + fprintf(fp, "Estado=\"%s\" ", fact->estado); + fprintf(fp, "NroCheque=\"%s\" ", fact->cheque); + fprintf(fp, "PorcDoI=\"%.2f\" ", fact->procdoi); + fprintf(fp, "NroCtaCte=\"%s\" ", fact->ctacte); + fprintf(fp, ">\n"); + fprintf(fp, "\t\t%s\n", fact->nota); + for(j=0; jcant_items; j++) { + if (fact->items[j].numero != 0) + fprintf(fp, "\t\t\n", fact->items[j].numero, fact->items[j].cv, fact->items[j].pvu); + } + fprintf(fp, "\t\n"); + free(fact); } - fprintf(fp, "\t\n"); k = idx->obtener_sig_clave(idx, k); + fprintf(stderr, "XXX Siguiente = %d\n", k.i_clave); } fprintf(fp, "\t\n"); @@ -1006,11 +1017,14 @@ void fact_consultas_codigos(char *s) { EMUFS_REG_ID dummy; int desde_codigo, hasta_codigo; - int i; t_Factura *factura; t_Lista *lista; t_Form *form; WINDOW *win, *win1; + INDICE *idx; + CLAVE k, menor, mayor; + + idx = lst_facturas->fp->indices; win = newwin(LINES-4, COLS-2, 2, 1); win1 = derwin(win, LINES-6, COLS-4, 1, 1); @@ -1032,6 +1046,14 @@ void fact_consultas_codigos(char *s) werase(win1); wrefresh(win1); + menor = idx->obtener_menor_clave(idx); + mayor = idx->obtener_mayor_clave(idx); + + if (desde_codigo < menor.i_clave) + desde_codigo = menor.i_clave; + if (hasta_codigo > mayor.i_clave) + hasta_codigo = mayor.i_clave; + /* Creo la lista donde mostrar la consulta*/ /* Muestro solo info relevante */ lista = lista_crear(4, win1, COLS-4, LINES-6); @@ -1043,8 +1065,9 @@ void fact_consultas_codigos(char *s) lista_agregar_columna(lista, "F. Pago", DATO_STR, 40, 9); /* fp */ /* Leo los datos desde el archivo */ - for(i=desde_codigo; i<=hasta_codigo; i++) { - factura = fact_buscar(lst_facturas, i, &dummy, &dummy); + k.i_clave = desde_codigo; + while ((k.i_clave != -1) && (k.i_clave <= hasta_codigo)) { + factura = fact_buscar(lst_facturas, k.i_clave, &dummy, &dummy); if (factura != NULL) { lista_agregar_fila(lista, factura->numero, @@ -1053,6 +1076,7 @@ void fact_consultas_codigos(char *s) get_forma_pago(factura->fp) ); } + k = idx->obtener_sig_clave(idx, k); } curs_set(0); diff --git a/emufs_gui/generar_archivos/genera_art.c b/emufs_gui/generar_archivos/genera_art.c index ef10790..ab72d1e 100644 --- a/emufs_gui/generar_archivos/genera_art.c +++ b/emufs_gui/generar_archivos/genera_art.c @@ -52,6 +52,7 @@ int main(int argc, char *argv[]) fprintf(fp, "Presentación=\"%s\" ", dict_get_al_azar(presentacion)); fprintf(fp, "Existencia=\"%d\" ", al_azar(1, 1000)); pvu = (al_azar(1, 1000) / (float)al_azar(1, 765)) * al_azar(1, 10); + if (pvu > 100) pvu /= 2.0f; fprintf(fp, "PVU=\"%.2f\" ", pvu); fprintf(fp, "Emín=\"%d\" />\n", al_azar(1, 1000)); /* Ahora dejo para las facturas */ diff --git a/emufs_gui/tree_viewer.c b/emufs_gui/tree_viewer.c index 34fe6f2..7f83b26 100644 --- a/emufs_gui/tree_viewer.c +++ b/emufs_gui/tree_viewer.c @@ -10,7 +10,7 @@ int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id) char *nodo; char tmp[100]; int i; - int posibles_proximos[100]; + int posibles_proximos[1000]; int proximo; if (id == -1) return 0; @@ -44,6 +44,7 @@ int emufs_indice_b_ver(INDICE *idx, WINDOW *win, int w, int h, int id) wmove(win, y, 0); sprintf(tmp, "%d", header.hijo_izquierdo); waddstr(win, tmp); + fprintf(stderr, "CANT DE CLAVES = %d\n", header.cant); for(i=0; i