- lst_facturas->fp = emufs_crear("facturas", T3, sizeof(t_Factura)*20, sizeof(t_Factura));
- /* Genero las facturas en forma automática */
- /* Genero las facturas de fecha Abril 2004 */
- srand(time(NULL));
- numero = 0;
- cant = 0;
- for(i=0; i<CANT_FACTURAS; i++) {
- /* Entre 10 y 15 ITEMS! */
- fact.numero = numero;
- sprintf(fact.emision, "200404%02d", al_azar(1, 30));
- sprintf(fact.vencimiento, "200406%02d", al_azar(1, 30));
- fact.numero_remito = numero; /* QUE PONGO? */
- strcpy(fact.estado, estados[al_azar(0, 5)]);
- strcpy(fact.fp, fps[al_azar(0, 2)]); /* FIXME : esto y estado se relacionan */
- fact.procdoi = 0; /* TODO : relacionar con el estado */
- sprintf(fact.ctacte, "%05d", al_azar(11111, 99999));
- sprintf(fact.cheque, "%04d-%03d-%05d-%03d", al_azar(1, 9999), al_azar(1,999),al_azar(1,99999),al_azar(1,999));
- fact.nota = NULL;
-
- /* Guardo */
- save = procesar_guardar_factura(&fact, lst_facturas, &size);
- if (save != NULL) {
- id = lst_facturas->fp->grabar_registro(lst_facturas->fp, save, size, &error);
- agregar_nodo_factura(lst_facturas, crear_nodo_factura(id, EMUFS_NOT_FOUND, numero));
- free(save);
+ 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);
+ }
+ }