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;
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;
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;
+}
+
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
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);
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.")
};
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");
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);
+ }
}
}
}
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;
+}
+
+
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;
+}
+
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