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) {
}
/* 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);
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);
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,
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,
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;
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;
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);