]> git.llucax.com Git - z.facultad/75.06/emufs.git/blob - gui/articulos.c
* Agrego carga articulos (NOT DONE!)
[z.facultad/75.06/emufs.git] / gui / articulos.c
1
2 #include "articulos.h"
3
4 t_LstArticulos *art_cargar(const char *filename)
5 {
6         xmlDocPtr document;
7         xmlNode *node;
8         int cant;
9         t_LstArticulos *tmp = (t_LstArticulos *)malloc(sizeof(t_LstArticulos));
10         if (tmp == NULL) return NULL;
11
12         document = xmlParseFile(filename);
13         if (document == NULL) {
14                 free(tmp);
15                 return NULL;
16         }
17
18         node = xmlDocGetRootElement(document);
19
20         /* Cuento la cantidad de articulos en el archivo */
21         cant = 0;
22         for ( ; node ; node = node->next) {
23                 if (node->type == XML_ELEMENT_NODE) {
24                         if (strcmp(node->name, "ARTICULO") == 0) {
25                                 ++cant;
26                         }
27                 }       
28         }
29         tmp->cant = cant;
30         tmp->array = (t_Articulo *)malloc(sizeof(t_Articulo)*cant);
31
32         node = xmlDocGetRootElement(document);
33
34         /* leo los datos */
35         cant = 0;
36         for ( ; node ; node = node->next) {
37                 if (node->type == XML_ELEMENT_NODE) {
38                         if (strcmp(node->name, "ARTICULO") == 0) {
39                                 strncpy(tmp->array[cant].numero, xmlGetProp(node, "NroArtículo"), 8);
40                                 strncpy(tmp->array[cant].desc, xmlGetProp(node, "Descripción"), 50);
41                                 strncpy(tmp->array[cant].presentacion, xmlGetProp(node, "Presentación"), 30);
42                                 strncpy(tmp->array[cant].existencia, xmlGetProp(node, "Existencia"), 8);
43                                 strncpy(tmp->array[cant].ubicacion, xmlGetProp(node, "Ubicación"), 30);
44                                 strncpy(tmp->array[cant].pvu, xmlGetProp(node, "PVU"), 8);
45                                 strncpy(tmp->array[cant].emin, xmlGetProp(node, "Emín"), 8);
46                                 ++cant;
47                         }
48                 }
49         }
50         xmlFreeDoc(document);
51         xmlCleanupParser();
52
53         return tmp;
54 }
55
56 int art_liberar(t_LstArticulos *l)
57 {
58         if (l == NULL) return 1;
59
60         free(l->array);
61         free(l);
62
63         return 0;
64 }
65
66 t_Articulo *art_obtener(t_LstArticulos *lst, const char *numero)
67 {
68         return NULL;
69 }
70