]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/articulos.c
nada importante, cosas que se escapan por tocar para probar, etc
[z.facultad/75.06/emufs.git] / emufs_gui / articulos.c
index 4c6977086c5de9bde49e24c02c7fb3160db00db0..737bff67bf173e6341f63e8829a30077a37a459b 100644 (file)
@@ -112,8 +112,8 @@ t_LstArticulos *art_cargar(t_Parametros *param)
                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");
@@ -733,15 +733,14 @@ void art_consultas_codigos(char *s, t_Lista *lista)
 
 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);
@@ -756,23 +755,35 @@ void art_consultas_stock(char *s, t_Lista *lista)
        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); 
        }
 
@@ -828,7 +839,7 @@ void art_consultas_varias(char *nombre_indice, char *titulo, t_Lista *lista)
                        PERR("NO SE PUDO RECUPERAR EL REGISTRO DE DATOS");
                }
        }
-
+       if (datos) free(datos);
        curs_set(0);
        lista_ejecutar(lista);
        curs_set(1);