]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/articulos.c
* bugfixes
[z.facultad/75.06/emufs.git] / emufs_gui / articulos.c
index ad5d9f4b2f1781ef695bd3785a1a5c08fa1a1bad..b7d8ee09f453946dc766ab7fa5dd3f67242a210d 100644 (file)
@@ -104,7 +104,9 @@ t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_bloque)
                        }
                        node = node->next;
                }
-
+#ifdef DEBUG
+               fprintf(stderr, "Articulos : Tipo=%d Bloque=%d\n", tipo-1, tam_bloque);
+#endif
                tmp->fp = emufs_crear("articulos", tipo-1, tam_bloque, sizeof(t_Articulo));
                for (node=inicio ; node ; node = node->next) {
                        if (node->type == XML_ELEMENT_NODE) {
@@ -121,7 +123,7 @@ t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_bloque)
                                        art.presentacion[30] = '\0'; /* Me aseguro de que este */
                                        strncpy(art.existencia, prop = xml_get_prop(node, "Existencia"), 8); xmlFree(prop);
                                        art.existencia[8] = '\0'; /* Me aseguro de que este */
-                                       strncpy(art.ubicacion, prop = xml_get_prop(node, "Ubicacion"), 30); xmlFree(prop);
+                                       strncpy(art.ubicacion, prop = xml_get_prop(node, "Ubicación"), 30); xmlFree(prop);
                                        strncpy(art.pvu, prop = xml_get_prop(node, "PVU"), 8); xmlFree(prop);
                                        art.pvu[8] = '\0'; /* Me aseguro de que este */
                                        strncpy(art.emin, prop = xml_get_prop(node, "Emín"), 8); xmlFree(prop);
@@ -185,14 +187,14 @@ int art_liberar(t_LstArticulos *l)
        return 0;
 }
 
-t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero, EMUFS_REG_ID *id)
+t_Articulo *art_obtener(t_LstArticulos *lst, int numero, EMUFS_REG_ID *id)
 {
        t_Articulo *art;
        t_Reg_Articulo *nodo;
        void *tmp;
        int error = 0;
        EMUFS_REG_SIZE size;
-       int n = atoi(numero);
+       int n = numero;
 
        if (lst == NULL) lst = lst_articulos;
        if (lst == NULL) return NULL;
@@ -232,7 +234,7 @@ t_Articulo *art_form_buscar(WINDOW *win, EMUFS_REG_ID *id)
        form = form_crear(win);
        form_agregar_widget(form, INPUT, "Numero de Artículo", 8, "");
        form_ejecutar(form, 1,1);
-       articulo = art_obtener(NULL, form_obtener_valor_char(form, "Numero de Artículo"), id);
+       articulo = art_obtener(NULL, form_obtener_valor_int(form, "Numero de Artículo"), id);
        form_destruir(form);
 
        return articulo;
@@ -530,9 +532,6 @@ void art_reformatear(int tipo, int tam_bloque, int tam_reg)
        PERR("==== EMPIEZO ====\n");
        old = lst_articulos->fp;
 
-       /* Si el tipo es el mismo, no tengo que hacer nada! */
-       if (old->tipo == tipo) return;
-
        /* Creo el nuevo file */
        PERR("Creo el archivo\n");
        nuevo = emufs_crear("emufs_tmp", tipo, tam_bloque, sizeof(t_Articulo));
@@ -594,3 +593,39 @@ void art_reformatear(int tipo, int tam_bloque, int tam_reg)
        PERR("==== TERMINE ====\n");
 }
 
+int art_exportar_xml(const char *filename)
+{
+       t_Reg_Articulo *nodo;
+       t_Articulo *art;
+       EMUFS_REG_ID id;
+       FILE *fp;
+
+       if (lst_articulos->primero == NULL) return 0;
+
+       nodo = lst_articulos->primero;
+
+       if (!(fp = fopen(filename, "wt"))) return 0;
+       
+       fprintf(fp, "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n\n");
+       fprintf(fp, "<ARTICULOS>\n");
+       while (nodo) {
+               art = art_obtener(lst_articulos, nodo->numero, &id);
+               if (art != NULL) {
+                       fprintf(fp, "\t<ARTICULO ");
+                       fprintf(fp, "NroArtículo=\"%d\" ", nodo->numero);
+                       fprintf(fp, "Descripción=\"%s\" ", art->desc);
+                       fprintf(fp, "Presentación=\"%s\" ", art->presentacion);
+                       fprintf(fp, "Ubicación=\"%s\" ", art->ubicacion);
+                       fprintf(fp, "Existencia=\"%s\" ", art->existencia);
+                       fprintf(fp, "PVU=\"%s\" ", art->pvu);
+                       fprintf(fp, "Emín=\"%s\" />\n", art->emin);
+                       free(art);
+               }
+               nodo = nodo->sig;
+       }
+       fprintf(fp, "</ARTICULOS>\n");
+
+       fclose(fp);
+       return 1;
+}
+