]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
* Se agrega exportar a XML de ambos archivos.
authorRicardo Markiewicz <gazer.arg@gmail.com>
Mon, 19 Apr 2004 04:19:11 +0000 (04:19 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Mon, 19 Apr 2004 04:19:11 +0000 (04:19 +0000)
emufs_gui/articulos.c
emufs_gui/articulos.h
emufs_gui/emufs_view.c
emufs_gui/facturas.c
emufs_gui/facturas.h

index e55b1b6b5795b21b19cec70c62fe920b3896bb81..546fd7e119ecf70e3cc7a73fe44db37f0e1eb99f 100644 (file)
@@ -185,14 +185,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 +232,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;
@@ -591,3 +591,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;
+}
+
index 6f5508d650df6339b7002aecc51418fdba1042f5..f398b63f6750c3f02aba3867c153ab4a61a357f0 100644 (file)
@@ -35,10 +35,13 @@ typedef struct _lista_articulos_ {
 
 t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_registro);
 int art_liberar(t_LstArticulos *l);
-t_Articulo *art_obtener(t_LstArticulos *, const char *numero, EMUFS_REG_ID *id);
+t_Articulo *art_obtener(t_LstArticulos *, int numero, EMUFS_REG_ID *id);
 void art_agregar(char *);
 void art_eliminar(char *);
 void art_modificar(char *);
 t_LstArticulos *art_get_lst();
 void art_reformatear(int tipo, int tam_bloque, int tam_reg);
+
+int art_exportar_xml(const char *filename);
+
 #endif
index a1333d7db05031cbc3934316bdac83ad84860355..9a2a94aca1d2a060c5f695648b72ffd7e9bbc7b7 100644 (file)
@@ -27,6 +27,7 @@ void menu_estadisticas();
 void menu_ver_registros();
 void menu_ver_bloques();
 void preguntar_nuevo_tipo(const char *title, int *tipo, int *tam_bloque, int *tam_reg);
+char *preguntar_file();
 
 void ver_estadisticas(EMUFS *fp);
 
@@ -456,6 +457,8 @@ void menu_mantenimiento()
                MENU_OPCION("Compactar Notas","Elimina espacio no utilizado."),
                MENU_OPCION("Cambiar tipo Archivo Articulos","Permite cambiar el tipo del archivo."),
                MENU_OPCION("Cambiar tipo Archivo Facturas","Permite cambiar el tipo del archivo."),
+               MENU_OPCION("Exportar Articulos", "Genera un archivo XML con los articulos."),
+               MENU_OPCION("Expostar Facturas", "Genera un archivo XML con las facturas."),
                MENU_OPCION("Volver", "Volver al menu anterior.")
        };
 
@@ -463,8 +466,9 @@ void menu_mantenimiento()
        int nuevo_tam_registro, nuevo_tam_bloque, nuevo_tipo;
        int nuevo_tam_registro1, nuevo_tam_bloque1, nuevo_tipo1;
        WINDOW *dlg;
+       char *s;
 
-       while ((opt = menu_ejecutar(mi_menu, 6, "Menu Mantenimiento")) != 5) {
+       while ((opt = menu_ejecutar(mi_menu, 8, "Menu Mantenimiento")) != 7) {
                switch (opt) {
                        case 0:
                                dlg = msg_box(stdscr, COLS, LINES, "Compactando archivo.... Aguarde");
@@ -495,6 +499,25 @@ void menu_mantenimiento()
                                dlg = msg_box(stdscr, COLS, LINES, "Cambiando el formato de archivo .... Aguarde");
                                fact_reformatear(nuevo_tipo, nuevo_tam_bloque, nuevo_tam_registro, nuevo_tipo1, nuevo_tam_bloque1, nuevo_tam_registro1);
                                msg_box_free(stdscr, dlg);
+                       case 5:
+                               s = preguntar_file();
+                               if (s) {
+                                       dlg = msg_box(stdscr, COLS, LINES, "Exportando .... Aguarde");
+                                       PERR("Exportando");
+                                       art_exportar_xml(s);
+                                       msg_box_free(stdscr, dlg);
+                                       free(s);
+                               }
+                               break;
+                       case 6:
+                               s = preguntar_file();
+                               if (s) {
+                                       dlg = msg_box(stdscr, COLS, LINES, "Exportando .... Aguarde");
+                                       PERR("Exportando");
+                                       fact_exportar_xml(s);
+                                       msg_box_free(stdscr, dlg);
+                                       free(s);
+                               }
                }
        }
 }
@@ -689,3 +712,29 @@ void ver_estadisticas(EMUFS *fp)
        delwin(win);
 }
 
+char *preguntar_file()
+{
+       WINDOW *win;
+       t_Form *form;
+       char *s, *t;
+
+       win = newwin(LINES/2, COLS/2, LINES/4, COLS/4);
+       box(win, 0, 0);
+
+       form = form_crear(win);
+       form_agregar_widget(form, INPUT, "Nombre de archivo", 30, "");
+       form_ejecutar(form, 1,1);
+
+       s = form_obtener_valor_char(form, "Nombre de archivo");
+
+       if (strlen(s) == 0) {
+               form_destruir(form);
+               return NULL;
+       }
+       t = (char *)malloc(sizeof(char*)*(strlen(s)+1));
+       strcpy(t, s);
+       form_destruir(form);
+       return t;
+}
+
+
index 8cd926772526d2ac1a31ed02020379d3ad747721..a585be9d792a6833b1ec391eb56a69d8026f0556 100644 (file)
@@ -868,3 +868,45 @@ void fact_reformatear(int tipo, int tam_bloque, int tam_reg, int nota_tipo, int
        PERR("==== TERMINE ====\n");
 }
 
+int fact_exportar_xml(const char *filename)
+{
+       int j;
+       t_Reg_Factura *nodo;
+       t_Factura *fact;
+       EMUFS_REG_ID id, id1;
+       FILE *fp;
+
+       if (lst_facturas->primero == NULL) return 0;
+
+       nodo = lst_facturas->primero;
+
+       if (!(fp = fopen(filename, "wt"))) return 0;
+       
+       fprintf(fp, "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n");
+       fprintf(fp, "<FACTURAS>\n");
+       while (nodo) {
+               fact = fact_buscar(lst_facturas, nodo->numero, &id, &id1);
+               fprintf(fp, "\t<FACTURA NroFac=\"%08d\" ", nodo->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");
+               nodo = nodo->sig;
+       }
+       fprintf(fp, "\t</FACTURAS>\n");
+
+       fclose(fp);
+       return 1;
+}
+
index fe9bced70cf9a4dc1ee112f35964e8d5be9a4198..dac8edbb7002ff74095a344ca423187c075d935a 100644 (file)
@@ -73,4 +73,6 @@ t_LstFacturas *fact_get_lst();
 
 void fact_reformatear(int tipo, int tam_bloque, int tam_reg, int nota_tipo, int nota_tam_bloque, int nota_tam_registro);
 
+int fact_exportar_xml(const char *filename);
+
 #endif