]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/facturas.c
* Saco texto de debug que habia puesto
[z.facultad/75.06/emufs.git] / emufs_gui / facturas.c
index 9410c192c4835df287c699999aa33022dc1a5ac8..b713ba660e128c45cf7f83dd678d8179985ffbd7 100644 (file)
@@ -8,9 +8,13 @@ static t_LstFacturas *lst_facturas;
 /* Procesa una factura antes de enviarla al archivo para guardarla */
 static void *procesar_guardar_factura(t_Factura *f, t_LstFacturas *lst, EMUFS_REG_SIZE *size);
 static int procesar_leer_factura(t_Factura *dst, void *src, EMUFS_REG_SIZE size, t_LstFacturas *lst);
 /* Procesa una factura antes de enviarla al archivo para guardarla */
 static void *procesar_guardar_factura(t_Factura *f, t_LstFacturas *lst, EMUFS_REG_SIZE *size);
 static int procesar_leer_factura(t_Factura *dst, void *src, EMUFS_REG_SIZE size, t_LstFacturas *lst);
+
+/* Manejo de la lista en memoria */
 static t_Reg_Factura *crear_nodo_factura(EMUFS_REG_ID reg, EMUFS_REG_ID texto, unsigned int num);
 static int agregar_nodo_factura(t_LstFacturas *lst, t_Reg_Factura *nodo);
 int eliminar_nodo_factura(t_LstFacturas *lst, t_Reg_Factura *nodo);
 static t_Reg_Factura *crear_nodo_factura(EMUFS_REG_ID reg, EMUFS_REG_ID texto, unsigned int num);
 static int agregar_nodo_factura(t_LstFacturas *lst, t_Reg_Factura *nodo);
 int eliminar_nodo_factura(t_LstFacturas *lst, t_Reg_Factura *nodo);
+
+/* Funciones para carga desde el XML */
 static t_Item *leer_items(xmlNode *, int *cant, int size);
 static char *leer_nota(xmlNode *, int max);
 
 static t_Item *leer_items(xmlNode *, int *cant, int size);
 static char *leer_nota(xmlNode *, int max);
 
@@ -174,11 +178,11 @@ t_LstFacturas *fact_cargar(const char *filename, int tipo, int tam_bloque, int t
 {
        xmlDocPtr document;
        xmlNode *node, *inicio;
 {
        xmlDocPtr document;
        xmlNode *node, *inicio;
-       int error = 0, cant_items, i;
+       int error = 0, cant_items;
        char *prop;
        EMUFS_REG_SIZE size;
        t_LstFacturas *tmp;
        char *prop;
        EMUFS_REG_SIZE size;
        t_LstFacturas *tmp;
-       EMUFS_REG_ID id, *indices, indices_cant;
+       EMUFS_REG_ID id;
        
        lst_facturas = NULL;
 
        
        lst_facturas = NULL;
 
@@ -271,6 +275,7 @@ t_LstFacturas *fact_cargar(const char *filename, int tipo, int tam_bloque, int t
                xmlFreeDoc(document);
                xmlCleanupParser();
        } else {
                xmlFreeDoc(document);
                xmlCleanupParser();
        } else {
+#ifdef NO_SE_USA_MAS
                PERR("Voy a recuperar desde un archivo");
                tmp->fp = emufs_abrir("facturas");
                if (tmp->fp == NULL) {
                PERR("Voy a recuperar desde un archivo");
                tmp->fp = emufs_abrir("facturas");
                if (tmp->fp == NULL) {
@@ -301,6 +306,7 @@ t_LstFacturas *fact_cargar(const char *filename, int tipo, int tam_bloque, int t
                        }
                }
                free(indices);
                        }
                }
                free(indices);
+#endif
        }
 
        PERR("Facturas todo Ok");
        }
 
        PERR("Facturas todo Ok");
@@ -329,35 +335,29 @@ int fact_liberar(t_LstFacturas *l)
 t_Factura *fact_buscar(t_LstFacturas *lst, int numero, EMUFS_REG_ID *id, EMUFS_REG_ID *id_texto)
 {
        t_Factura *fact;
 t_Factura *fact_buscar(t_LstFacturas *lst, int numero, EMUFS_REG_ID *id, EMUFS_REG_ID *id_texto)
 {
        t_Factura *fact;
-       t_Reg_Factura *reg;
        char *leo;
        EMUFS_REG_SIZE size;
        int error;
        if (lst == NULL) return NULL;
 
        fact = NULL;
        char *leo;
        EMUFS_REG_SIZE size;
        int error;
        if (lst == NULL) return NULL;
 
        fact = NULL;
-       reg = lst->primero;
-       while (reg) {
-               if (reg->numero == numero) {
-                       size = 0;
-                       error = 0;
-                       leo = lst->fp->leer_registro(lst->fp, reg->num_reg, &size, &error);
-                       if (leo != NULL) {
-                               fact = (t_Factura *)malloc(sizeof(t_Factura));
-                               if (fact == NULL) {
-                                       free(leo);
-                                       return NULL;
-                               }
-                               procesar_leer_factura(fact, leo, size, lst);
-                               (*id) = reg->num_reg;
-                               (*id_texto) = reg->texto_reg;
-                               free(leo);
-                               fact->nota = lst->fp_texto->leer_registro(lst->fp_texto, reg->texto_reg, &size, &error);
-                       }
-                       break;
+       leo = lst->fp->leer_registro(lst->fp, 
+                                       emufs_indice_generar_clave_desde_valor(lst->fp->indices, (char*)&numero), &size, &error);
+       if (leo != NULL) {
+               fact = (t_Factura *)malloc(sizeof(t_Factura));
+               if (fact == NULL) {
+                       free(leo);
+                       return NULL;
                }
                }
-               reg = reg->sig;
+               procesar_leer_factura(fact, leo, size, lst);
+               /* y esto ??!
+               (*id) = reg->num_reg;
+               (*id_texto) = reg->texto_reg;
+               */
+               free(leo);
+               //fact->nota = lst->fp_texto->leer_registro(lst->fp_texto, reg->texto_reg, &size, &error);
        }
        }
+       
        return fact;
 }
 
        return fact;
 }
 
@@ -402,8 +402,8 @@ void fact_eliminar(char *s)
        nodo = lst_facturas->primero;
        while (nodo) {
                if (nodo->numero == fact->numero) {
        nodo = lst_facturas->primero;
        while (nodo) {
                if (nodo->numero == fact->numero) {
-                       lst_facturas->fp->borrar_registro(lst_facturas->fp, nodo->num_reg);
-                       lst_facturas->fp_texto->borrar_registro(lst_facturas->fp_texto, nodo->texto_reg);
+                       /*lst_facturas->fp->borrar_registro(lst_facturas->fp, nodo->num_reg);*/
+                       /*lst_facturas->fp_texto->borrar_registro(lst_facturas->fp_texto, nodo->texto_reg);*/
                        eliminar_nodo_factura(lst_facturas, nodo);
                        break;
                }
                        eliminar_nodo_factura(lst_facturas, nodo);
                        break;
                }
@@ -418,6 +418,7 @@ void fact_modificar(char *s)
 {
        WINDOW *win, *items, *nota, *subnota;
        t_Form *form, *form_nota;
 {
        WINDOW *win, *items, *nota, *subnota;
        t_Form *form, *form_nota;
+       t_Reg_Factura *nodo;
        t_Factura *fact;
        EMUFS_REG_SIZE size;
        EMUFS_REG_ID id, id_texto;
        t_Factura *fact;
        EMUFS_REG_SIZE size;
        EMUFS_REG_ID id, id_texto;
@@ -429,11 +430,24 @@ void fact_modificar(char *s)
        win = newwin(LINES-4, COLS-2, 2, 1);
        box(win, 0, 0);
        
        win = newwin(LINES-4, COLS-2, 2, 1);
        box(win, 0, 0);
        
-       fact = fact_form_buscar(win, &id, &id_texto);
+       if (s == NULL) {
+               fact = fact_form_buscar(win, &id, &id_texto);
+       } else {
+               id = atoi(s);
+               fact = NULL;
+               nodo = lst_facturas->primero;
+               while (nodo) {
+                       if (nodo->num_reg == id) {
+                               fact = fact_buscar(lst_facturas, nodo->numero, &id, &id_texto);
+                               break;
+                       }
+                       nodo = nodo->sig;
+               }
+       }
 
        if (fact == NULL) {
                wattron(win, COLOR_PAIR(COLOR_YELLOW));
 
        if (fact == NULL) {
                wattron(win, COLOR_PAIR(COLOR_YELLOW));
-               mvwaddstr(win, 2, 1, "No existe artículo con ese código. Abortando!");
+               mvwaddstr(win, 2, 1, "No existe factura con ese código. Abortando!");
                wattroff(win, COLOR_PAIR(COLOR_YELLOW));
                wrefresh(win);
                getch();
                wattroff(win, COLOR_PAIR(COLOR_YELLOW));
                wrefresh(win);
                getch();
@@ -699,7 +713,7 @@ void *procesar_guardar_factura(t_Factura *f, t_LstFacturas *lst, EMUFS_REG_SIZE
 static int procesar_leer_factura(t_Factura *dst, void *src, EMUFS_REG_SIZE size, t_LstFacturas *lst)
 {
        char *ini, *fin;
 static int procesar_leer_factura(t_Factura *dst, void *src, EMUFS_REG_SIZE size, t_LstFacturas *lst)
 {
        char *ini, *fin;
-       int dummy;
+       /*int dummy;*/
 
        if (lst == NULL) {
                PERR("Puntero a lista NULO");
 
        if (lst == NULL) {
                PERR("Puntero a lista NULO");
@@ -772,7 +786,7 @@ static int procesar_leer_factura(t_Factura *dst, void *src, EMUFS_REG_SIZE size,
                        } else {
                                dst->items = NULL;
                        }
                        } else {
                                dst->items = NULL;
                        }
-                       dst->nota = lst->fp_texto->leer_registro(lst->fp_texto, dst->reg_nota, (EMUFS_REG_SIZE *)&dummy, &dummy);
+                       /*dst->nota = lst->fp_texto->leer_registro(lst->fp_texto, dst->reg_nota, (EMUFS_REG_SIZE *)&dummy, &dummy);*/
                        return 0;
                break;
                case T3:
                        return 0;
                break;
                case T3:
@@ -782,13 +796,14 @@ static int procesar_leer_factura(t_Factura *dst, void *src, EMUFS_REG_SIZE size,
                        memcpy(dst, src, size-sizeof(t_Item)*10);
                        dst->items = (t_Item *)malloc(10*sizeof(t_Item));
                        memcpy(dst->items, src+size-sizeof(t_Item)*10, 10*sizeof(t_Item));
                        memcpy(dst, src, size-sizeof(t_Item)*10);
                        dst->items = (t_Item *)malloc(10*sizeof(t_Item));
                        memcpy(dst->items, src+size-sizeof(t_Item)*10, 10*sizeof(t_Item));
-                       dst->nota = lst->fp_texto->leer_registro(lst->fp_texto, dst->reg_nota, (EMUFS_REG_SIZE *)&dummy, &dummy);
+                       /*dst->nota = lst->fp_texto->leer_registro(lst->fp_texto, dst->reg_nota, (EMUFS_REG_SIZE *)&dummy, &dummy);*/
        }
        return 0;
 }
 
 void fact_reformatear(int tipo, int tam_bloque, int tam_reg, int nota_tipo, int nota_tam_bloque, int nota_tam_registro)
 {
        }
        return 0;
 }
 
 void fact_reformatear(int tipo, int tam_bloque, int tam_reg, int nota_tipo, int nota_tam_bloque, int nota_tam_registro)
 {
+#ifdef NO_ANDA_AUN
        EMUFS *nuevo, *old;
        EMUFS_REG_ID *indices, id;
        EMUFS_REG_SIZE indices_total, i, size, tam_reg1;
        EMUFS *nuevo, *old;
        EMUFS_REG_ID *indices, id;
        EMUFS_REG_SIZE indices_total, i, size, tam_reg1;
@@ -885,6 +900,7 @@ void fact_reformatear(int tipo, int tam_bloque, int tam_reg, int nota_tipo, int
        rename("nota_tmp.fsc", "notas.fsc");
        rename("nota_tmp.did", "notas.did");
        PERR("==== TERMINE ====\n");
        rename("nota_tmp.fsc", "notas.fsc");
        rename("nota_tmp.did", "notas.did");
        PERR("==== TERMINE ====\n");
+#endif
 }
 
 int fact_exportar_xml(const char *filename)
 }
 
 int fact_exportar_xml(const char *filename)