]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
Varios bugfixes, mejoras de funcionalidad y validaciones.
authorRicardo Markiewicz <gazer.arg@gmail.com>
Sun, 30 May 2004 03:44:33 +0000 (03:44 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Sun, 30 May 2004 03:44:33 +0000 (03:44 +0000)
emufs/tipo3.c
emufs_gui/emufs.dtd
emufs_gui/emufs.xml
emufs_gui/emufs_view.c
emufs_gui/facturas.c
emufs_gui/generar_archivos/genera_art.c
emufs_gui/tree_viewer.c

index 8e86c399607e1b42e77d6d6416a077cf6afa8132..4faabe762d7073d2c205f995102cf64a1a6cc7e2 100644 (file)
@@ -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.
index ac7e56095ecc7248be7cbd7e774d6e730e04e21f..a28fd4e99cd98b3efca5b9e263aa3ebf2f11ca0a 100644 (file)
@@ -23,7 +23,7 @@
 <!ELEMENT indice EMPTY>
 <!ATTLIST indice
        nombre CDATA #REQUIRED
-       tipo (B | B_A | B_P) #REQUIRED
+       tipo (B | BA | BP) #REQUIRED
        bloque CDATA #REQUIRED
 >
 
index 4ede2d84efc4ecc2eafd4a90b8642b390c7b211a..f072c8c33b3bbf7294b0f403c4c6fed857479628 100644 (file)
        </articulos>
        <facturas>
                <fuente>facturas.xml</fuente>
-               <datos tipo="3" bloque="512" />
+               <datos tipo="1" bloque="512" />
                <datos_notas tipo="2" bloque="0" />
                <indices>
-                       <indice nombre="numero" tipo="B" bloque="512" />
+                       <indice nombre="numero" tipo="BA" bloque="2048" />
                        <indice nombre="emision" tipo="B" bloque="512" />
                </indices>
        </facturas>
index f859cd6bc11760ab18641498632a823d2680169f..f2d2c22375ecf9380a9f58d99cfec560a00d97e7 100644 (file)
@@ -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);
                }
        }
index 20358345f1ffc5ca90164141a79e9a7e8559d1b9..626fb64d8cfec73d3e9e5a0faa7de10f3baf7545 100644 (file)
@@ -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, "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n");
        fprintf(fp, "<FACTURAS>\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, "\t<FACTURA NroFac=\"%08d\" ", fact->numero);
-               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<NOTA>%s</NOTA>\n", fact->nota);
-               for(j=0; j<fact->cant_items; j++) {
-                       if (fact->items[j].numero != 0)
-                               fprintf(fp, "\t\t<ITEMVENTA NroArtículo=\"%08d\" CV=\"%s\" PVU=\"%s\" />\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, "\t<FACTURA NroFac=\"%08d\" ", fact->numero);
+                       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<NOTA>%s</NOTA>\n", fact->nota);
+                       for(j=0; j<fact->cant_items; j++) {
+                               if (fact->items[j].numero != 0)
+                                       fprintf(fp, "\t\t<ITEMVENTA NroArtículo=\"%08d\" CV=\"%s\" PVU=\"%s\" />\n", fact->items[j].numero, fact->items[j].cv, fact->items[j].pvu);
+                       }
+                       fprintf(fp, "\t</FACTURA>\n");
+                       free(fact);
                }
-               fprintf(fp, "\t</FACTURA>\n");
                k = idx->obtener_sig_clave(idx, k);
+               fprintf(stderr, "XXX Siguiente = %d\n", k.i_clave);
        }
        fprintf(fp, "\t</FACTURAS>\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);
index ef10790e29ddf4243860e60441ff3db08d3115a4..ab72d1e61387b96560c314bf52afecc90b8822f4 100644 (file)
@@ -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 */
index 34fe6f2d1b34f968a5150ace6d5c8504606c2068..7f83b26a74092bf009a1f386048e379f19a4da4a 100644 (file)
@@ -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<header.cant; i++) {
                        sprintf(tmp, "(%d)%d",
                                        claves[i].clave.i_clave,