4 t_LstArticulos *lst_articulos;
6 t_Articulo *art_form_buscar(WINDOW *win);
8 t_LstArticulos *art_cargar(const char *filename)
13 t_LstArticulos *tmp = (t_LstArticulos *)malloc(sizeof(t_LstArticulos));
14 if (tmp == NULL) return NULL;
16 document = xmlParseFile(filename);
17 if (document == NULL) {
22 node = xmlDocGetRootElement(document);
24 if (node->type == XML_ELEMENT_NODE) {
25 if (strcmp(node->name, "ARTICULOS") == 0) {
26 node = node->children;
33 /* Cuento la cantidad de articulos en el archivo */
35 for ( ; node ; node = node->next) {
36 if (node->type == XML_ELEMENT_NODE) {
37 if (strcmp(node->name, "ARTICULO") == 0) {
43 tmp->array = (t_Articulo *)malloc(sizeof(t_Articulo)*cant);
45 if (tmp->array == NULL) {
52 node = xmlDocGetRootElement(document);
54 if (node->type == XML_ELEMENT_NODE) {
55 if (strcmp(node->name, "ARTICULOS") == 0) {
56 node = node->children;
65 for ( ; node ; node = node->next) {
66 if (node->type == XML_ELEMENT_NODE) {
67 if (strcmp(node->name, "ARTICULO") == 0) {
68 strncpy(tmp->array[cant].numero, xmlGetProp(node, "NroArticulo"), 8);
69 strncpy(tmp->array[cant].desc, xmlGetProp(node, "Descripcion"), 50);
70 strncpy(tmp->array[cant].presentacion, xmlGetProp(node, "Presentacion"), 30);
71 strncpy(tmp->array[cant].existencia, xmlGetProp(node, "Existencia"), 8);
72 // strncpy(tmp->array[cant].ubicacion, xmlGetProp(node, "Ubicacion"), 30);
73 strncpy(tmp->array[cant].pvu, xmlGetProp(node, "PVU"), 8);
74 strncpy(tmp->array[cant].emin, xmlGetProp(node, "Emin"), 8);
86 int art_liberar(t_LstArticulos *l)
88 if (l == NULL) l = lst_articulos;
89 if (l == NULL) return 1;
98 t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero)
101 int n = atoi(numero);
103 if (lst == NULL) lst = lst_articulos;
105 for(i=0; i<lst->cant; i++) {
106 j = atoi(lst->array[i].numero);
108 return &lst->array[i];
114 t_Articulo *art_form_buscar(WINDOW *win)
117 t_Articulo *articulo;
119 form = form_crear(win);
120 form_agregar_widget(form, INPUT, "Numero de Artículo", 8, "");
121 form_ejecutar(form, 1,1);
122 articulo = art_obtener(NULL, form_obtener_valor(form, "Numero de Artículo"));
128 void art_modificar(char *s)
132 t_Articulo *articulo;
134 win = newwin(8, 68, 13, 1);
138 articulo = art_form_buscar(win);
140 if (articulo != NULL) {
141 form = form_crear(win);
142 form_agregar_widget(form, INPUT, "Numero de Artículo", 8, articulo->numero);
143 form_agregar_widget(form, INPUT, "Descripción", 50, articulo->desc);
144 form_agregar_widget(form, INPUT, "Presentación", 30, articulo->presentacion);
145 form_agregar_widget(form, INPUT, "Stock Actual", 8, articulo->existencia);
146 form_agregar_widget(form, INPUT, "PVU", 8, articulo->pvu);
147 form_agregar_widget(form, INPUT, "Stock Mínimo", 8, articulo->emin);
148 form_ejecutar(form, 1,1);
150 /* TODO : Actualizar registro */
160 void art_eliminar(char *s)
163 t_Articulo *articulo;
165 win = newwin(8, 68, 13, 1);
169 articulo = art_form_buscar(win);
171 if (articulo == NULL) {
172 wattron(win, COLOR_PAIR(COLOR_YELLOW));
173 mvwaddstr(win, 6, 4, "No existe artículo con ese código. Abortando!");
174 wattroff(win, COLOR_PAIR(COLOR_YELLOW));
178 /* TODO : Eliminar un registro */
186 void art_agregar(char *s)
191 win = newwin(8, 68, 13, 1);
195 form = form_crear(win);
196 form_agregar_widget(form, INPUT, "Numero de Artículo", 8, "");
197 form_agregar_widget(form, INPUT, "Descripción", 50, "");
198 form_agregar_widget(form, INPUT, "Presentación", 30, "");
199 form_agregar_widget(form, INPUT, "Stock Actual", 8, "");
200 form_agregar_widget(form, INPUT, "PVU", 8, "");
201 form_agregar_widget(form, INPUT, "Stock Mínimo", 8, "");
202 form_ejecutar(form, 1,1);
204 /* TODO : Agregar el nuevo elemento */