X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/c566e71b3fbe7bbbcf2b833dcb0d8c7c2a19192b..d381699312637624c1fa51dfdf0f2184636e498c:/emufs_gui/articulos.c diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 3400689..fd1d1fd 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -13,16 +13,12 @@ static t_Articulo *art_form_buscar(WINDOW *win, EMUFS_REG_ID *id); static void *procesar_guardar_articulo(t_Articulo *src, EMUFS_REG_SIZE *size, t_LstArticulos *lst); static int procesar_leer_articulo(t_Articulo *dst, void *src, EMUFS_REG_SIZE size, t_LstArticulos *lst); +#ifdef TP_PRIMER_ENTREGA /* Manejo de la lista doble */ static t_Reg_Articulo *crear_nodo_articulo(EMUFS_REG_ID reg, unsigned int num); static int agregar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo); static int eliminar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo); -t_LstArticulos *art_get_lst() -{ - return lst_articulos; -} - int eliminar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo) { if (nodo == NULL) return 0; @@ -68,8 +64,14 @@ int agregar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo) } return 1; } +#endif /* TP_PRIMER_ENTREGA */ + +t_LstArticulos *art_get_lst() +{ + return lst_articulos; +} -t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_bloque) +t_LstArticulos *art_cargar(t_Parametros *param) { xmlDocPtr document; xmlNode *node, *inicio; @@ -79,16 +81,15 @@ t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_bloque) t_LstArticulos *tmp; t_Articulo *un_articulo; lst_articulos = NULL; - EMUFS_REG_ID id; tmp = (t_LstArticulos *)malloc(sizeof(t_LstArticulos)); if (tmp == NULL) return NULL; lst_articulos = tmp; tmp->primero = NULL; - if (filename != NULL) { + if (param != NULL) { PERR("Voy a crear desde un XML"); - document = xmlReadFile(filename, "ISO-8859-1",0); + document = xmlReadFile(param->xml_art, "ISO-8859-1",0); if (document == NULL) { free(tmp); lst_articulos = NULL; @@ -107,11 +108,8 @@ t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_bloque) } node = node->next; } -#ifdef DEBUG - fprintf(stderr, "Articulos : Tipo=%d Bloque=%d\n", tipo-1, tam_bloque); -#endif /* Creo el FS */ - tmp->fp = emufs_crear("articulos", tipo-1, tam_bloque, sizeof(t_Articulo)); + 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); @@ -149,8 +147,7 @@ t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_bloque) save = procesar_guardar_articulo(&art, &size, lst_articulos); if (save != NULL) { error = 0; - id = tmp->fp->grabar_registro(tmp->fp, save, size, &error); - agregar_nodo_articulo(tmp, crear_nodo_articulo(id, art.numero)); + tmp->fp->grabar_registro(tmp->fp, save, size, &error); free(save); } } @@ -317,8 +314,10 @@ void art_modificar(char *s) /* Ya actualice los datos, ahora veo de grabarlos */ tmp = procesar_guardar_articulo(articulo, &size, lst_articulos); if (tmp) { + CLAVE k; error = 0; - lst_articulos->fp->modificar_registro(lst_articulos->fp, codigo, tmp, size, &error); + 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); free(tmp); } @@ -655,9 +654,9 @@ void art_consultas_old(char *s) lista = lista_crear(3, win1, COLS-4, LINES-6); /* Creo las columnas */ - lista_agregar_columna(lista, DATO_INT, 0, 8); - lista_agregar_columna(lista, DATO_STR, 10, 45); - lista_agregar_columna(lista, DATO_FLOAT, 60, 10); + lista_agregar_columna(lista, "Col1", DATO_INT, 0, 8); + lista_agregar_columna(lista, "Col2", DATO_STR, 10, 45); + lista_agregar_columna(lista, "Col3", DATO_FLOAT, 60, 10); /* Agrego unos datos a ver que pasa */ /* Pongo 100 y rezo */ @@ -711,10 +710,10 @@ void art_consultas_codigos(char *s) lista = lista_crear(4, win1, COLS-4, LINES-6); /* Creo las columnas */ - lista_agregar_columna(lista, DATO_INT, 0, 8); /* numero */ - lista_agregar_columna(lista, DATO_STR, 10, 51); /* desc */ - lista_agregar_columna(lista, DATO_STR, 55, 9); /* existencia */ - lista_agregar_columna(lista, DATO_STR, 65, 9); /* enim */ + lista_agregar_columna(lista, "Numero", DATO_INT, 0, 8); /* numero */ + lista_agregar_columna(lista, "Descripcion", DATO_STR, 10, 51); /* desc */ + lista_agregar_columna(lista, "Existencia", DATO_STR, 55, 9); /* existencia */ + lista_agregar_columna(lista, "Stock Minimo", DATO_STR, 65, 9); /* enim */ /* Leo los datos desde el archivo */ for(i=desde_codigo; i<=hasta_codigo; i++) { @@ -781,10 +780,10 @@ void art_consultas_varias(char *nombre_indice, char *titulo) lista = lista_crear(4, win1, COLS-4, LINES-6); /* Creo las columnas */ - lista_agregar_columna(lista, DATO_INT, 0, 8); /* numero */ - lista_agregar_columna(lista, DATO_STR, 10, 51); /* desc */ - lista_agregar_columna(lista, DATO_STR, 55, 9); /* existencia */ - lista_agregar_columna(lista, DATO_STR, 65, 9); /* enim */ + lista_agregar_columna(lista, "Numero", DATO_INT, 0, 8); /* numero */ + lista_agregar_columna(lista, "Descripcion", DATO_STR, 10, 51); /* desc */ + lista_agregar_columna(lista, "Existencia", DATO_STR, 55, 9); /* existencia */ + lista_agregar_columna(lista, "Stock Minimo", DATO_STR, 65, 9); /* enim */ /* Leo los datos desde el archivo */ datos = emufs_buscar_registros(fs, nombre_indice, desc, &cant);