]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
nada importante, cosas que se escapan por tocar para probar, etc
authorRicardo Markiewicz <gazer.arg@gmail.com>
Fri, 28 May 2004 05:02:31 +0000 (05:02 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Fri, 28 May 2004 05:02:31 +0000 (05:02 +0000)
emufs/indice_b.c
emufs/indices.c
emufs_gui/articulos.c
emufs_gui/emufs.xml

index f032d51805e834070f7647d46bd74ec9f64bf45a..4edaca21d4921d3821bb013249be90fcfe36bb73 100644 (file)
@@ -104,7 +104,6 @@ int emufs_indice_b_insertar(INDICE *idx, CLAVE clave, INDICE_DATO dato)
                                return 0;
                        }
                        
-                       /* TODO : Implementar carga de valor en clave duplicada! */
                        b_insertar_dup_en_pos(idx, claves[i].dato, dato);
                
                        if (idx->tipo_dato == IDX_STRING) {
@@ -285,7 +284,7 @@ char *b_leer_nodo(INDICE *idx, int id)
        }
 
        /* Si estoy manejando string tengo que sacar las abreviaturas */
-/*     XXX if (idx->tipo_dato == IDX_STRING) {
+/*     if (idx->tipo_dato == IDX_STRING) {
                b_leer_header(out, &header);
                claves = b_leer_claves(out, &header);
                desabreviar_claves(idx, claves, &header);
@@ -301,7 +300,7 @@ static void b_grabar_nodo(INDICE *idx, int id, char *data)
        B_NodoEntry *claves;
 
        /* Si las claves son de tipo string debo abreviar antes de guardar */
-/*XXX  if (idx->tipo_dato == IDX_STRING) {
+/*     if (idx->tipo_dato == IDX_STRING) {
                b_leer_header(data, &header);
                claves = b_leer_claves(data, &header);
                abreviar_claves(idx, claves, &header);
index c570894b2259694e30353351d624fc46627a9512..207e999c582641564d73c782c4733d3a46bc4edd 100644 (file)
@@ -130,7 +130,7 @@ CLAVE emufs_indice_generar_clave_desde_valor(INDICE *idx, char *data)
                        error = 0;
                        /* Le agrego un * para diferenciarla, porque no la tengo abreviada! */
                        /* Hack feo :-D */
-                       sprintf(salvar, "*%s", data);
+                       sprintf(salvar, "%s", data);
                        k.i_clave = idx->emu_string->grabar_registro(idx->emu_string,
                                                                                salvar,
                                                                                strlen(salvar)+1,
@@ -155,6 +155,8 @@ CLAVE emufs_indice_generar_clave(INDICE *idx, char *data)
                break;
                case IDX_STRING:
                        error = 0;
+                       PERR(idx->nombre);
+                       PERR(data+idx->offset);
                        k.i_clave = idx->emu_string->grabar_registro(idx->emu_string,
                                                                                data+idx->offset,
                                                                                strlen(data+idx->offset)+1,
@@ -177,13 +179,15 @@ int emufs_indice_es_menor(INDICE *idx, CLAVE c1, CLAVE c2)
                case IDX_INT:
                        return c1.i_clave < c2.i_clave;
                case IDX_STRING:
+                       error = 0;
                        sc1 = idx->emu_string->leer_registro(idx->emu_string, c1, &dummy, &error);
+                       error = 0;
                        sc2 = idx->emu_string->leer_registro(idx->emu_string, c2, &dummy, &error);
                        /* Salteo el caracter que indica si la clave en temporal */
                        a = b = 0;
                        if (*sc1 == '*') a = 1;
                        if (*sc2 == '*') b = 1;
-                       error = (strcmp(sc1+a, sc2+b) < 0);
+                       error = (strcmp(sc1, sc2) < 0);
                        free(sc1);
                        free(sc2);
                        return error;
@@ -211,7 +215,7 @@ int emufs_indice_es_igual(INDICE *idx, CLAVE c1, CLAVE c2)
                        a = b = 0;
                        if (*sc1 == '*') a=1;
                        if (*sc2 == '*') b=1;
-                       error = (strcmp(sc1+a, sc2+b) == 0);
+                       error = (strcmp(sc1, sc2) == 0);
                        free(sc1);
                        free(sc2);
                        return error;
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);
index 8fd45cef861bc3558d990356c38d95acf7736d61..689e50ea5f841fc0ecc1a55c5ac855aa65288e2f 100644 (file)
@@ -4,7 +4,7 @@
 <emufs>
        <articulos>
                <fuente>articulos.xml</fuente>
-               <datos tipo="1" bloque="512" />
+               <datos tipo="3" bloque="512" />
                <indices>
                        <indice nombre="codigo" tipo="B" bloque="512" />
                        <indice nombre="desc" tipo="B" bloque="512" />