static t_LstArticulos *lst_articulos;
-static t_Articulo *art_form_buscar(WINDOW *win);
+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);
return 0;
}
-t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero)
+t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero, EMUFS_REG_ID *id)
{
t_Articulo *art;
t_Reg_Articulo *nodo;
nodo = lst->primero;
while (nodo) {
if (n == nodo->numero) {
+ (*id) = nodo->num_reg;
art = (t_Articulo *)malloc(sizeof(t_Articulo));
/* Ya se cual tengo que retornar. Ahora veo si lo cargo desde el archivo */
error = 0;
return NULL;
}
-t_Articulo *art_form_buscar(WINDOW *win)
+t_Articulo *art_form_buscar(WINDOW *win, EMUFS_REG_ID *id)
{
t_Form *form;
t_Articulo *articulo;
form = form_crear(win);
form_agregar_widget(form, INPUT, "Numero de Artículo", 8, "");
form_ejecutar(form, 1,1);
- articulo = art_obtener(NULL, form_obtener_valor_char(form, "Numero de Artículo"));
+ articulo = art_obtener(NULL, form_obtener_valor_char(form, "Numero de Artículo"), id);
form_destruir(form);
return articulo;
void *tmp;
int error;
EMUFS_REG_SIZE size;
+ EMUFS_REG_ID id;
win = newwin(8, COLS-2, 13, 1);
box(win, 0, 0);
wrefresh(win);
if (s == NULL) {
- articulo = art_form_buscar(win);
+ articulo = art_form_buscar(win, &id);
} else {
+ id = atoi(s);
/* Leo el registro directamente */
articulo = (t_Articulo *)malloc(sizeof(t_Articulo));
/* Ya se cual tengo que retornar. Ahora veo si lo cargo desde el archivo */
error = 0;
- tmp = lst_articulos->fp->leer_registro(lst_articulos->fp, atoi(s), &size, &error);
+ tmp = lst_articulos->fp->leer_registro(lst_articulos->fp, id, &size, &error);
if (error) {
free(articulo);
articulo = NULL;
} else {
if (procesar_leer_articulo(articulo, tmp, size, lst_articulos) != 1) {
free(articulo);
- free(tmp);
articulo = NULL;
- } else {
- free(tmp);
}
+ free(tmp);
}
}
form_agregar_widget(form, INPUT, "Stock Mínimo", 8, articulo->emin);
form_ejecutar(form, 1,1);
- /* TODO : Actualizar registro */
+ /* Actualizar registro */
+ articulo->numero = form_obtener_valor_int(form, "Numero de Artículo");
+ strcpy(articulo->desc, form_obtener_valor_char(form, "Descripción"));
+ strcpy(articulo->presentacion, form_obtener_valor_char(form, "Presentación"));
+ strcpy(articulo->existencia, form_obtener_valor_char(form, "Stock Actual"));
+ strcpy(articulo->pvu, form_obtener_valor_char(form, "PVU"));
+ strcpy(articulo->emin, form_obtener_valor_char(form, "Stock Mínimo"));
+ /* Ya actualice los datos, ahora veo de grabarlos */
+ tmp = procesar_guardar_articulo(articulo, &size, lst_articulos);
+ if (tmp) {
+ error = 0;
+ lst_articulos->fp->modificar_registro(lst_articulos->fp, id, tmp, size, &error);
+ free(tmp);
+ }
form_destruir(form);
free(articulo);
WINDOW *win;
t_Articulo *articulo;
t_Reg_Articulo *nodo;
+ EMUFS_REG_ID id;
+
win = newwin(8, COLS-2, 13, 1);
box(win, 0, 0);
wrefresh(win);
- articulo = art_form_buscar(win);
+ articulo = art_form_buscar(win, &id);
if (articulo == NULL) {
wattron(win, COLOR_PAIR(COLOR_YELLOW));
data[SIG] = (char *)fp->leer_registro(fp, ant_indice+2, &size, &error);
data[SIG] = procesar_registro_articulo(data[SIG], &size);
- max_scroll = size / (w/3-2) - (h-7);
+ max_scroll = size / (w/3-2) - (h-8);
if (max_scroll < 0) max_scroll = 0;
- actual[0] = derwin(padre, h-5, w/3, 1, w/3);
+ actual[0] = derwin(padre, h-6, w/3, 1, w/3);
actual_ancho = w/3-2;
- actual[1] = derwin(actual[0], h-7, w/3-2, 1, 1);
+ actual[1] = derwin(actual[0], h-8, w/3-2, 1, 1);
box(actual[0], 0, 0);
- ant[0] = derwin(padre, h-5, w/3, 1, 0);
- ant[1] = derwin(ant[0], h-7, w/3-2, 1, 1);
+ ant[0] = derwin(padre, h-6, w/3, 1, 0);
+ ant[1] = derwin(ant[0], h-8, w/3-2, 1, 1);
box(ant[0], 0, 0);
- sig[0] = derwin(padre, h-5, w/3, 1, w/3*2);
- sig[1] = derwin(sig[0], h-7, w/3-2, 1, 1);
+ sig[0] = derwin(padre, h-6, w/3, 1, w/3*2);
+ sig[1] = derwin(sig[0], h-8, w/3-2, 1, 1);
box(sig[0], 0, 0);
curs_set(0);
/* Info de teclas */
wattron(padre, A_BOLD);
wattron(padre, COLOR_PAIR(COLOR_RED));
- mvwaddstr(padre, h-4, 5, "Teclas :");
+ mvwaddstr(padre, h-5, 5, "Teclas :");
wattroff(padre, A_BOLD);
wattroff(padre, COLOR_PAIR(COLOR_RED));
- mvwaddstr(padre, h-3, 8, "Salir = ENTER");
- mvwaddstr(padre, h-2, 8, "Scroll = A/Z");
- mvwaddstr(padre, h-1, 8, "Mover registros = K/L");
+ mvwaddstr(padre, h-4, 8, "Salir = ENTER");
+ mvwaddstr(padre, h-3, 8, "Scroll = A/Z");
+ mvwaddstr(padre, h-2, 8, "Mover registros = K/L");
+ mvwaddstr(padre, h-1, 8, "Editar Actual = e");
/* Info de leyenda */
wattron(padre, A_BOLD);
wattron(padre, COLOR_PAIR(COLOR_RED));
- mvwaddstr(padre, h-4, 35, "Leyenda :");
+ mvwaddstr(padre, h-5, 35, "Leyenda :");
wattroff(padre, A_BOLD);
wattroff(padre, COLOR_PAIR(COLOR_RED));
- mvwaddstr(padre, h-3, 38, "| = Separador de campos");
- mvwaddstr(padre, h-2, 38, "(XXX) = Campo numerico");
- mvwaddstr(padre, h-1, 38, "* = Relleno en registros fijos");
+ mvwaddstr(padre, h-4, 38, "| = Separador de campos");
+ mvwaddstr(padre, h-3, 38, "(XXX) = Campo numerico");
+ mvwaddstr(padre, h-2, 38, "* = Relleno en registros fijos");
wattron(actual[1], A_BOLD);
sprintf(codigo, "%lu", ant_indice+1);
fprintf(stderr, "%s", codigo);
art_modificar(codigo);
+ /* Vuelvo a cargar el articulo actual */
+ free(data[ACT]);
+ data[ACT] = (char *)fp->leer_registro(fp, ant_indice+1, &size, &error);
+ data[ACT] = procesar_registro_articulo(data[ACT], &size);
+
/* Tengo que re-pintar algunas cosas */
box(actual[0], 0, 0);
box(sig[0], 0, 0);