tmp->fp = emufs_crear("articulos", param->tipo_arch_art, param->tam_bloque_art, sizeof(t_Articulo));
/* Agrego los indices */
PERR("Voy a agregar un indice");
- emufs_agregar_indice(tmp->fp, "presentacion", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(un_articulo, presentacion), 512);
- emufs_agregar_indice(tmp->fp, "desc", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(un_articulo, desc), 512);
+ emufs_agregar_indice(tmp->fp, "presentacion", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(un_articulo, presentacion), 20480);
+ emufs_agregar_indice(tmp->fp, "desc", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(un_articulo, desc), 2048);
emufs_agregar_indice(tmp->fp, "codigo", IND_PRIMARIO, IND_B, IDX_INT, 0, 512);
if (!tmp->fp) {
PERR("NO SE PUDO CREAR ARCHIVO ARTICULOS");
void art_consultas_stock(char *s, t_Lista *lista)
{
- EMUFS_REG_ID dummy;
- int hasta_codigo;
- CLAVE k, menor, mayor;
- t_Articulo *articulo;
+ CLAVE k, menor;
+ t_Articulo articulo;
t_Form *form;
INDICE *idx;
float por;
- idx = lst_articulos->fp->indices;
+ idx = emufs_buscar_indice_por_nombre(lst_articulos->fp, "desc");
+ if (idx == NULL) PERR("NO SE ENCUENTRA INDICE DESC!!!");
/* El usuario ingresa rango a listar */
form = form_crear(lista->win);
wrefresh(lista->win);
menor = idx->obtener_menor_clave(idx);
- mayor = idx->obtener_mayor_clave(idx);
k = menor;
- hasta_codigo = mayor.i_clave;
- while ((k.i_clave != -1) && (k.i_clave <= hasta_codigo)) {
- articulo = art_obtener(lst_articulos, k.i_clave, &dummy);
- if (articulo != NULL) {
- if (atof(articulo->existencia) <= (1.0f+por)*atof(articulo->emin)) {
- lista_agregar_fila(lista,
- articulo->numero,
- articulo->desc,
- articulo->existencia,
- articulo->emin
- );
+ while (k.i_clave != -1) {
+ char *tmp;
+ EMUFS_REG_SIZE size;
+ int error, cant, i;
+ INDICE_DATO *datos;
+ CLAVE k1;
+ datos = idx->buscar_entradas(idx, k, &cant);
+ for(i=0; i<cant; i++) {
+ error = 1;
+ k1.i_clave = datos[i].id;
+ tmp = lst_articulos->fp->leer_registro(lst_articulos->fp, k1, &size, &error);
+
+ if (tmp != NULL) {
+ procesar_leer_articulo(&articulo, tmp, size, lst_articulos);
+
+ if (atof(articulo.existencia) <= (1.0f+por)*atof(articulo.emin)) {
+ lista_agregar_fila(lista,
+ articulo.numero,
+ articulo.desc,
+ articulo.existencia,
+ articulo.emin
+ );
+ }
+ free(tmp);
}
- free(articulo);
}
+ if (datos) free(datos);
k = idx->obtener_sig_clave(idx, k);
}
PERR("NO SE PUDO RECUPERAR EL REGISTRO DE DATOS");
}
}
-
+ if (datos) free(datos);
curs_set(0);
lista_ejecutar(lista);
curs_set(1);