emufs_agregar_indice(tmp->fp, "vto", IND_SELECCION, param->ind_fac[2].tipo_arbol, IDX_STRING, STRUCT_OFFSET(factura, emision), param->ind_fac[2].tam_bloque, 1);
emufs_agregar_indice(tmp->fp, "emision", IND_EXAHUSTIVO, param->ind_fac[1].tipo_arbol, IDX_STRING, STRUCT_OFFSET(factura, emision), param->ind_fac[1].tam_bloque, 0);
emufs_agregar_indice(tmp->fp, "numero", IND_PRIMARIO, param->ind_fac[0].tipo_arbol, IDX_INT, 0, param->ind_fac[0].tam_bloque, 0);
+
+ /* Creo el indice externo por Nro Articulo */
+ tmp->fp->externo = emufs_indice_crear(tmp->fp, "articulo", IND_SELECCION, IND_B, IDX_INT, 0, 512, 0);
+
tmp->fp_texto = emufs_crear("notas", param->tipo_arch_nota, param->tam_bloque_nota, 100);
for (node=inicio ; node ; node = node->next) {
if (node->type == XML_ELEMENT_NODE) {
fact.reg_nota = id;
save = procesar_guardar_factura(&fact, lst_facturas, &size);
if (save != NULL) {
+ int i;
error = 0;
- tmp->fp->grabar_registro(tmp->fp, save, size, &error);
+ id = tmp->fp->grabar_registro(tmp->fp, save, size, &error);
+
+ /* Agrego los Items al indice externo */
+ for(i=0; i<fact.cant_items; i++) {
+ if (fact.items[i].numero != 0) {
+ CLAVE _k; /* HACK Para hacer mas rapido */
+ INDICE_DATO _dato;
+ _k.i_clave = fact.items[i].numero;
+ _dato.id = id;
+ tmp->fp->externo->agregar_entrada(tmp->fp->externo, _k, _dato);
+ }
+ }
+
if (fact.items) {
free(fact.items);
fact.items = NULL;
xmlFreeDoc(document);
xmlCleanupParser();
} else {
-#ifdef NO_SE_USA_MAS
- /* TODO RECUPERAR INDICES DESDE EL ARCHIVO */
PERR("Voy a recuperar desde un archivo");
tmp->fp = emufs_abrir("facturas");
if (tmp->fp == NULL) {
lst_facturas = NULL;
return NULL;
}
-
- /* Ahora trato de recuperar la info */
- indices = emufs_idx_get(tmp->fp, &indices_cant);
- for(i=0; i<indices_cant; i++) {
- t_Factura art;
- void *save;
- /* Leo el registro */
- save = tmp->fp->leer_registro(tmp->fp, indices[i], &size, &error);
- if (procesar_leer_factura(&art, save, size, tmp) == 1) {
- agregar_nodo_factura(tmp, crear_nodo_factura(indices[i], art.reg_nota, art.numero));
- free(save);
- }
- }
- free(indices);
-#endif
}
PERR("Facturas todo Ok");
cant++;
its = (t_Item *)realloc(its, cant*sizeof(t_Item));
if (its != NULL) {
+ art_actualizar_stock(atoi(entrada), atoi(cv));
its[cant-1].numero = atoi(entrada);
- strcpy(its[cant-1].cv, form_obtener_valor_char(form, "CV"));
+ strcpy(its[cant-1].cv, cv);
strcpy(its[cant-1].pvu, art->pvu);
}
free(art);
}
}
+int fact_hay_con_item(int numero)
+{
+ INDICE *idx;
+ CLAVE k;
+ INDICE_DATO dato;
+ /* Busco si existe alguna factura que contenga al articulo "numero" */
+ idx = lst_facturas->fp->externo;
+
+ k.i_clave = numero;
+ dato = idx->existe_entrada(idx, k);
+
+ if (dato.id == -1)
+ return 0; /* No existe factura que contenga este articulo!! */
+
+ return 1; /* Hay alguna factura que contiene el articulo */
+}
+