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 = xmlReadFile(filename, "ISO-8859-1",0);
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 tmp->array[cant].numero = atoi(xmlGetProp(node, "NroArtículo"));
69 strncpy(tmp->array[cant].desc, xmlGetProp(node, "Descripción"), 50);
70 strncpy(tmp->array[cant].presentacion, xmlGetProp(node, "Presentación"), 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, "Emín"), 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 = 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_char(form, "Numero de Artículo"));
128 void art_modificar(char *s)
132 t_Articulo *articulo;
135 win = newwin(8, 68, 13, 1);
139 articulo = art_form_buscar(win);
141 if (articulo != NULL) {
142 form = form_crear(win);
143 sprintf(num, "%07d", articulo->numero);
144 form_agregar_widget(form, INPUT, "Numero de Artículo", 8, num);
145 form_agregar_widget(form, INPUT, "Descripción", 50, articulo->desc);
146 form_agregar_widget(form, INPUT, "Presentación", 30, articulo->presentacion);
147 form_agregar_widget(form, INPUT, "Stock Actual", 8, articulo->existencia);
148 form_agregar_widget(form, INPUT, "PVU", 8, articulo->pvu);
149 form_agregar_widget(form, INPUT, "Stock Mínimo", 8, articulo->emin);
150 form_ejecutar(form, 1,1);
152 /* TODO : Actualizar registro */
162 void art_eliminar(char *s)
165 t_Articulo *articulo;
167 win = newwin(8, 68, 13, 1);
171 articulo = art_form_buscar(win);
173 if (articulo == NULL) {
174 wattron(win, COLOR_PAIR(COLOR_YELLOW));
175 mvwaddstr(win, 6, 4, "No existe artículo con ese código. Abortando!");
176 wattroff(win, COLOR_PAIR(COLOR_YELLOW));
180 /* TODO : Eliminar un registro */
188 void art_agregar(char *s)
193 win = newwin(8, 68, 13, 1);
197 form = form_crear(win);
198 form_agregar_widget(form, INPUT, "Numero de Artículo", 8, "");
199 form_agregar_widget(form, INPUT, "Descripción", 50, "");
200 form_agregar_widget(form, INPUT, "Presentación", 30, "");
201 form_agregar_widget(form, INPUT, "Stock Actual", 8, "");
202 form_agregar_widget(form, INPUT, "PVU", 8, "");
203 form_agregar_widget(form, INPUT, "Stock Mínimo", 8, "");
204 form_ejecutar(form, 1,1);
206 /* TODO : Agregar el nuevo elemento */