]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/articulos.c
Partir 2 en 3 milagrosamente anda (con este pequeño cambio que fue
[z.facultad/75.06/emufs.git] / emufs_gui / articulos.c
index 2c038dcd20c9bf9f64655160a7647eb5e77cd4ce..136bf969ab77a8b9b0792776875feebfad2acc5b 100644 (file)
@@ -112,9 +112,9 @@ 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), 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);
+               emufs_agregar_indice(tmp->fp, "presentacion", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(un_articulo, desc), 512, 1);
+               emufs_agregar_indice(tmp->fp, "desc", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(un_articulo, desc), 512, 0);
+               emufs_agregar_indice(tmp->fp, "codigo", IND_PRIMARIO, IND_B_ASC, IDX_INT, 0, 512, 0);
                if (!tmp->fp) {
                        PERR("NO SE PUDO CREAR ARCHIVO ARTICULOS");
                        free(tmp);
@@ -315,9 +315,13 @@ void art_modificar(char *s)
                tmp = procesar_guardar_articulo(articulo, &size, lst_articulos);
                if (tmp) {
                        CLAVE k;
+                       INDICE_DATO dummy1;
                        error = 0;
                        k = emufs_indice_generar_clave_desde_valor(lst_articulos->fp->indices, (char *)&articulo->numero);
-                       lst_articulos->fp->modificar_registro(lst_articulos->fp, k, tmp, size, &error);
+                       /* dummy se pasa porque esto se hace por clave primaria, y el INDICE_DATO que se
+                        * pasa solo es requerido cuando son claves multiples
+                        */
+                       lst_articulos->fp->modificar_registro(lst_articulos->fp, k, tmp, size, &error, dummy1);
                        free(tmp);
                }
                
@@ -355,8 +359,11 @@ void art_eliminar(char *s)
                wrefresh(win);
                getch();
        } else {
+               INDICE_DATO dummy;
                k = emufs_indice_generar_clave_desde_valor(lst_articulos->fp->indices, (char *)&(articulo->numero));
-               lst_articulos->fp->borrar_registro(lst_articulos->fp, k);
+               PERR("Borrando ARTICULO")
+               lst_articulos->fp->borrar_registro(lst_articulos->fp, k, dummy);
+               PERR("LISTO BORRADO");
                free(articulo);
        }
 
@@ -809,6 +816,8 @@ void art_consultas_cambiar_precio(char *s, t_Lista *lista)
        form_agregar_widget(form, INPUT, "Desc. Articulo (nulo==Todos)", 50, "");
        form_agregar_widget(form, INPUT, "Ingrese %", 8, "0");
 
+       werase(lista->win);
+       wrefresh(lista->win);
        form_ejecutar(form, 2, 2);
 
        por = form_obtener_valor_float(form, "Ingrese %");
@@ -853,7 +862,14 @@ void art_consultas_cambiar_precio(char *s, t_Lista *lista)
                                sprintf(articulo.pvu, "%.2f", pvu);
                                tmp = procesar_guardar_articulo(&articulo, &size, lst_articulos);
                                error = 0;
-                               lst_articulos->fp->modificar_registro(lst_articulos->fp, k1, tmp, size, &error);
+                               /* README : Aca si tengo que pasar el INDICE_DATO correcto, para que la funcion
+                                * borrar sea capaz de eliminar solo el item que corresponde en las
+                                * claves con repeticion
+                                */
+                               PERR("=== MODIFICANDO ===");
+                               fprintf(stderr, "Desc=%s , PVU=%s, Codigo=%d\n", articulo.desc, articulo.pvu, articulo.numero);
+                               lst_articulos->fp->modificar_registro(lst_articulos->fp, k1, tmp, size, &error, datos[i]);
+                               PERR("===     FIN     ===");
                        }
                }
                if (datos) free(datos);