From a9f9aecb4dc1ae44e94c45b461dc18b6da2a9c9a Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Mon, 19 Apr 2004 04:19:11 +0000 Subject: [PATCH] * Se agrega exportar a XML de ambos archivos. --- emufs_gui/articulos.c | 42 +++++++++++++++++++++++++++++++--- emufs_gui/articulos.h | 5 ++++- emufs_gui/emufs_view.c | 51 +++++++++++++++++++++++++++++++++++++++++- emufs_gui/facturas.c | 42 ++++++++++++++++++++++++++++++++++ emufs_gui/facturas.h | 2 ++ 5 files changed, 137 insertions(+), 5 deletions(-) diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index e55b1b6..546fd7e 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -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, "\n\n"); + fprintf(fp, "\n"); + while (nodo) { + art = art_obtener(lst_articulos, nodo->numero, &id); + if (art != NULL) { + fprintf(fp, "\tnumero); + 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, "\n"); + + fclose(fp); + return 1; +} + diff --git a/emufs_gui/articulos.h b/emufs_gui/articulos.h index 6f5508d..f398b63 100644 --- a/emufs_gui/articulos.h +++ b/emufs_gui/articulos.h @@ -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 diff --git a/emufs_gui/emufs_view.c b/emufs_gui/emufs_view.c index a1333d7..9a2a94a 100644 --- a/emufs_gui/emufs_view.c +++ b/emufs_gui/emufs_view.c @@ -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; +} + + diff --git a/emufs_gui/facturas.c b/emufs_gui/facturas.c index 8cd9267..a585be9 100644 --- a/emufs_gui/facturas.c +++ b/emufs_gui/facturas.c @@ -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, "\n"); + fprintf(fp, "\n"); + while (nodo) { + fact = fact_buscar(lst_facturas, nodo->numero, &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(fp, "\t\n"); + nodo = nodo->sig; + } + fprintf(fp, "\t\n"); + + fclose(fp); + return 1; +} + diff --git a/emufs_gui/facturas.h b/emufs_gui/facturas.h index fe9bced..dac8edb 100644 --- a/emufs_gui/facturas.h +++ b/emufs_gui/facturas.h @@ -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 -- 2.43.0