X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/774da16a7fe143971dddecd52bd88133e0d88155..0c7f85c8241f9f9f42be480ea4df08468e948364:/emufs_gui/facturas.c?ds=inline diff --git a/emufs_gui/facturas.c b/emufs_gui/facturas.c index bbfcf20..7a594d3 100644 --- a/emufs_gui/facturas.c +++ b/emufs_gui/facturas.c @@ -22,12 +22,13 @@ t_LstFacturas *fact_get_lst() char *xml_get_prop(xmlNode *node, char *nombre) { char *s; - if (xmlGetProp(node, nombre) == NULL) { + s = xmlGetProp(node, nombre); + if (s == NULL) { s = malloc(1); s[0] = '\0'; return s; } - return xmlGetProp(node, nombre); + return s; } int eliminar_nodo_factura(t_LstFacturas *lst, t_Reg_Factura *nodo) @@ -91,7 +92,7 @@ t_Item *leer_items(xmlNode *node, int *cant, int size) if (strcmp(node->name, "ITEMVENTA") == 0) { count++; tmp = realloc(tmp, sizeof(t_Item)*count); - memset(&tmp[count-1], '*', sizeof(t_Item)); + memset(&tmp[count-1], 0, sizeof(t_Item)); prop = xml_get_prop(node, "NroArtículo"); tmp[count-1].numero = atoi(prop); xmlFree(prop); @@ -174,6 +175,7 @@ t_LstFacturas *fact_cargar(const char *filename, int tipo, int tam_bloque) PERR("Voy a cargar de un XML"); document = xmlReadFile(filename, "ISO-8859-1",0); if (document == NULL) { + PERR("Error al leer documento!!"); free(tmp); lst_facturas = NULL; return NULL; @@ -195,7 +197,7 @@ t_LstFacturas *fact_cargar(const char *filename, int tipo, int tam_bloque) /* En el registro no guardo los punteros de nota ni items. Si guardo la cantidad de items * y los items al final del registro. */ - if (tipo == 3) { + if (tipo == T3) { /* Limito a 10 items en el caso de registro constante! */ cant_items = 10; } else { @@ -292,6 +294,7 @@ int fact_liberar(t_LstFacturas *l) if (l == NULL) return 1; emufs_destruir(l->fp); + emufs_destruir(l->fp_texto); while (l->primero) { del = l->primero; l->primero = l->primero->sig; @@ -541,6 +544,7 @@ void fact_agregar(char *s) mvwaddstr(win, 15, 2, "Numero"); mvwaddstr(win, 15, 11, "CV"); mvwaddstr(win, 15, 21, "PVU"); + cant = 0; do { form_set_valor(form, "Nro de Articulo (* == fin)", ""); form_set_valor(form, "CV", ""); @@ -562,21 +566,24 @@ void fact_agregar(char *s) /* Agrego el Item */ cant++; its = (t_Item *)realloc(its, cant*sizeof(t_Item)); - its[cant-1].numero = atoi(entrada); - strcpy(its[cant-1].cv, form_obtener_valor_char(form, "CV")); - strcpy(its[cant-1].pvu, form_obtener_valor_char(form, "PVU")); + if (its != NULL) { + its[cant-1].numero = atoi(entrada); + strcpy(its[cant-1].cv, form_obtener_valor_char(form, "CV")); + strcpy(its[cant-1].pvu, form_obtener_valor_char(form, "PVU")); + } } } while (entrada[0] != '*'); - if (lst_facturas->fp->tipo == 3) { + if (lst_facturas->fp->tipo == T3) { if (cant != 10) { /* TODO Limitar en la GUI en lugar de truncar! */ - fprintf(stderr, "Tengo %d\n", cant); its = (t_Item *)realloc(its, 10*sizeof(t_Item)); - fprintf(stderr, "Realoque ok\n"); - memset(its+sizeof(t_Item)*cant, 0, (10-cant)*sizeof(t_Item)); - fprintf(stderr, "Seteo a 0 sin priblemas\n"); - cant = 10; + if (its == NULL) { + cant = 0; + } else { + memset(its+sizeof(t_Item)*cant, 0, (10-cant)*sizeof(t_Item)); + cant = 10; + } } } fact.items = its;