+ if (filename != NULL) {
+ document = xmlReadFile(filename, "ISO-8859-1",0);
+ if (document == NULL) {
+ fprintf(stderr, "ERROR ABRIENDO %s\n", filename);
+ return NULL;
+ }
+
+ inicio = NULL;
+ node = xmlDocGetRootElement(document);
+ /* Busco el TAG principal "ARTICULOS" */
+ while (node) {
+ if (node->type == XML_ELEMENT_NODE) {
+ if (strcmp(node->name, "FACTURAS") == 0) {
+ inicio = node->children;
+ break;
+ }
+ }
+ node = node->next;
+ }
+
+ /* En el registro no guardo los punteros de nota ni items. Si guardo la cantidad de items
+ * y los items al final del registro.
+ */
+ if (tipo == 3) {
+ /* Limito a 10 items en el caso de registro constante! */
+ cant_items = 10;
+ } else {
+ cant_items = 0;
+ }
+ tmp->fp = emufs_crear("facturas", tipo-1, tam_bloque, sizeof(t_Factura)-sizeof(char *)-sizeof(t_Item*)+cant_items*sizeof(t_Item));
+ tmp->fp_texto = emufs_crear("notas", 1, 420, 400);
+ for (node=inicio ; node ; node = node->next) {
+ if (node->type == XML_ELEMENT_NODE) {
+ if (strcmp(node->name, "FACTURA") == 0) {
+ t_Factura fact;
+ void *save;
+ memset(&fact, '*', sizeof(t_Factura));
+ fact.numero = atoi(xml_get_prop(node, "NroFac"));
+ fact.procdoi = atoi(xml_get_prop(node, "porcDoI"));
+ fact.numero_remito = atoi(xml_get_prop(node, "NroRemito"));
+ strcpy(fact.emision, xml_get_prop(node, "FechaEmisión"));
+ strcpy(fact.vencimiento, xml_get_prop(node, "FechaVto"));
+ strcpy(fact.estado, xml_get_prop(node, "Estado"));
+ strcpy(fact.fp, xml_get_prop(node, "FP"));
+ strcpy(fact.ctacte, xml_get_prop(node, "NroCtaCte"));
+ strcpy(fact.cheque, xml_get_prop(node, "NroCheque"));
+
+ fact.nota = leer_nota(node);
+ fact.items = leer_items(node, &fact.cant_items, (tipo==3)?10:-1);
+
+ save = procesar_guardar_factura(&fact, lst_facturas, &size);
+ if (save != NULL) {
+ id = tmp->fp->grabar_registro(tmp->fp, save, size, &error);
+ fprintf(stderr, "Voy a grabar el texto [%d]\n", strlen(fact.nota));
+ id_texto = tmp->fp_texto->grabar_registro(tmp->fp_texto, fact.nota, 400, &error);
+ fprintf(stderr, "Todo ok : ID=%lu , txtID=%lu\n", id, id_texto);
+ agregar_nodo_factura(tmp, crear_nodo_factura(id, id_texto, fact.numero));
+ free(save);
+ }
+ }
+ }
+ }
+ xmlFreeDoc(document);
+ xmlCleanupParser();
+ } else {
+/* tmp->fp = emufs_abrir("articulos");*/
+ /* Ahora trato de recuperar la info */
+/* indices = emufs_idx_get(tmp->fp, &indices_cant);
+ for(i=0; i<indices_cant; i++) {
+ t_Articulo art;
+ void *save;*/
+ /* Leo el registro */
+/* save = tmp->fp->leer_registro(tmp->fp, indices[i], &size, &error);
+ if (procesar_leer_articulo(&art, save, size, tmp) == 1) {
+ agregar_nodo_articulo(tmp, crear_nodo_articulo(indices[i], art.numero));
+ free(save);
+ }
+ }
+ free(indices);*/
+ }