X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/78ff3129342b5ae75673aac710820805fe5e3f41..549a07c528dc9f77fa70cd331fb0250026781425:/emufs_gui/facturas.c diff --git a/emufs_gui/facturas.c b/emufs_gui/facturas.c index f5bde1d..76c042f 100644 --- a/emufs_gui/facturas.c +++ b/emufs_gui/facturas.c @@ -11,10 +11,12 @@ static t_LstFacturas *lst_facturas; static void *procesar_guardar_factura(t_Factura *f, t_LstFacturas *lst, EMUFS_REG_SIZE *size); static int procesar_leer_factura(t_Factura *dst, void *src, EMUFS_REG_SIZE size, t_LstFacturas *lst); +#ifdef TP_PRIMER_ENTREGA /* Manejo de la lista en memoria */ static t_Reg_Factura *crear_nodo_factura(EMUFS_REG_ID reg, EMUFS_REG_ID texto, unsigned int num); static int agregar_nodo_factura(t_LstFacturas *lst, t_Reg_Factura *nodo); int eliminar_nodo_factura(t_LstFacturas *lst, t_Reg_Factura *nodo); +#endif /* Funciones para carga desde el XML */ static t_Item *leer_items(xmlNode *, int *cant, int size); @@ -38,6 +40,7 @@ char *xml_get_prop(xmlNode *node, char *nombre) return s; } +#ifdef TP_PRIMER_ENTREGA int eliminar_nodo_factura(t_LstFacturas *lst, t_Reg_Factura *nodo) { if (nodo == NULL) return 0; @@ -84,6 +87,7 @@ int agregar_nodo_factura(t_LstFacturas *lst, t_Reg_Factura *nodo) } return 1; } +#endif /*TP_PRIMER_ENTREGA*/ t_Item *leer_items(xmlNode *node, int *cant, int size) { @@ -237,6 +241,7 @@ t_LstFacturas *fact_cargar(const char *filename, int tipo, int tam_bloque, int t void *save; memset(&fact, 0, sizeof(t_Factura)); prop = xml_get_prop(node, "NroFac"); + PERR(prop); fact.numero = atoi(prop); xmlFree(prop); prop = xml_get_prop(node, "PorcDoI"); fact.procdoi = atof(prop); xmlFree(prop); @@ -264,9 +269,15 @@ t_LstFacturas *fact_cargar(const char *filename, int tipo, int tam_bloque, int t save = procesar_guardar_factura(&fact, lst_facturas, &size); if (save != NULL) { error = 0; - id = tmp->fp->grabar_registro(tmp->fp, save, size, &error); - if (fact.items) free(fact.items); - if (fact.nota) free(fact.nota); + tmp->fp->grabar_registro(tmp->fp, save, size, &error); + if (fact.items) { + free(fact.items); + fact.items = NULL; + } + if (fact.nota) { + free(fact.nota); + fact.nota = NULL; + } free(save); } } @@ -344,6 +355,7 @@ t_Factura *fact_buscar(t_LstFacturas *lst, int numero, EMUFS_REG_ID *id, EMUFS_R fact = NULL; k = emufs_indice_generar_clave_desde_valor(lst->fp->indices, (char*)&numero); + error = 0; leo = lst->fp->leer_registro(lst->fp, k, &size, &error); if (leo != NULL) { fact = (t_Factura *)malloc(sizeof(t_Factura)); @@ -358,6 +370,7 @@ t_Factura *fact_buscar(t_LstFacturas *lst, int numero, EMUFS_REG_ID *id, EMUFS_R */ free(leo); k.i_clave = fact->reg_nota; + error = 0; fact->nota = lst->fp_texto->leer_registro(lst->fp_texto, k, &size, &error); } @@ -407,7 +420,8 @@ void fact_eliminar(char *s) k.i_clave = fact->reg_nota; lst_facturas->fp_texto->borrar_registro(lst_facturas->fp_texto, k); - free(fact->items); + if (fact->items) free(fact->items); + if (fact->nota) free(fact->nota); free(fact); } @@ -415,7 +429,6 @@ void fact_modificar(char *s) { WINDOW *win, *items, *nota, *subnota; t_Form *form, *form_nota; - t_Reg_Factura *nodo; t_Factura *fact; EMUFS_REG_SIZE size; EMUFS_REG_ID id, id_texto; @@ -423,17 +436,13 @@ void fact_modificar(char *s) char tmp_str[10]; void *entrada; - /* XXX XXX XXX TODO */ - return; - win = newwin(LINES-4, COLS-2, 2, 1); box(win, 0, 0); if (s == NULL) { fact = fact_form_buscar(win, &id, &id_texto); } else { - id = atoi(s); - fact = fact_buscar(lst_facturas, nodo->numero, &id, &id_texto); + fact = fact_buscar(lst_facturas, atoi(s), &id, &id_texto); } if (fact == NULL) { @@ -502,8 +511,11 @@ void fact_modificar(char *s) entrada = procesar_guardar_factura(fact, lst_facturas, &size); if (entrada) { - id = lst_facturas->fp->modificar_registro(lst_facturas->fp, id, entrada, size, &error); - id_texto = lst_facturas->fp_texto->modificar_registro(lst_facturas->fp_texto, id_texto, fact->nota, strlen(fact->nota)+1, &error); + CLAVE k; + k = emufs_indice_generar_clave_desde_valor(lst_facturas->fp->indices, (char *)&fact->numero); + lst_facturas->fp->modificar_registro(lst_facturas->fp, k, entrada, size, &error); + k.i_clave = id_texto; + id_texto = lst_facturas->fp_texto->modificar_registro(lst_facturas->fp_texto, k, fact->nota, strlen(fact->nota)+1, &error); free(entrada); } @@ -525,7 +537,7 @@ void fact_agregar(char *s) t_Item *its = NULL; t_Factura fact; EMUFS_REG_SIZE size; - EMUFS_REG_ID id, id_texto; + EMUFS_REG_ID id_texto; int y_actual, cant, error; char *entrada; @@ -637,7 +649,6 @@ void fact_agregar(char *s) if (entrada) { error = 0; lst_facturas->fp->grabar_registro(lst_facturas->fp, entrada, size, &error); - agregar_nodo_factura(lst_facturas, crear_nodo_factura(id, id_texto, fact.numero)); free(entrada); } @@ -938,6 +949,27 @@ int fact_exportar_xml(const char *filename) return 1; } +char *get_estado(char *s) +{ + if (strcmp(s, "PN")==0) return "Pago Normal"; + if (strcmp(s, "CD")==0) return "Credito al dia"; + if (strcmp(s, "CM")==0) return "Credito en mora"; + if (strcmp(s, "SF")==0) return "Cheque sin fondos"; + if (strcmp(s, "PM")==0) return "Pagada con Mora"; + if (strcmp(s, "NC")==0) return "No Cobrada"; + + return s; +} + +char *get_forma_pago(char *s) +{ + if (strcmp(s, "CO") == 0) return "Contado"; + if (strcmp(s, "CR") == 0) return "Credito"; + if (strcmp(s, "CH") == 0) return "Cheque"; + + return s; +} + void fact_consultas_codigos(char *s) { EMUFS_REG_ID dummy; @@ -975,8 +1007,8 @@ void fact_consultas_codigos(char *s) /* Creo las columnas */ lista_agregar_columna(lista, DATO_INT, 0, 8); /* numero */ lista_agregar_columna(lista, DATO_STR, 10, 9); /* emision */ - lista_agregar_columna(lista, DATO_STR, 20, 3); /* estado */ - lista_agregar_columna(lista, DATO_STR, 25, 3); /* fp */ + lista_agregar_columna(lista, DATO_STR, 20, 19); /* estado */ + lista_agregar_columna(lista, DATO_STR, 40, 9); /* fp */ /* Leo los datos desde el archivo */ for(i=desde_codigo; i<=hasta_codigo; i++) { @@ -985,8 +1017,8 @@ void fact_consultas_codigos(char *s) lista_agregar_fila(lista, factura->numero, factura->emision, - factura->estado, - factura->fp + get_estado(factura->estado), + get_forma_pago(factura->fp) ); } } @@ -1045,8 +1077,8 @@ void fact_consultas_varias(char *nombre_indice, char *titulo) /* Creo las columnas */ lista_agregar_columna(lista, DATO_INT, 0, 8); /* numero */ lista_agregar_columna(lista, DATO_STR, 10, 9); /* emision */ - lista_agregar_columna(lista, DATO_STR, 20, 3); /* estado */ - lista_agregar_columna(lista, DATO_STR, 25, 3); /* fp */ + lista_agregar_columna(lista, DATO_STR, 20, 19); /* estado */ + lista_agregar_columna(lista, DATO_STR, 40, 9); /* fp */ /* Leo los datos desde el archivo */ datos = emufs_buscar_registros(fs, nombre_indice, desc, &cant); @@ -1059,8 +1091,8 @@ void fact_consultas_varias(char *nombre_indice, char *titulo) lista_agregar_fila(lista, factura.numero, factura.emision, - factura.estado, - factura.fp + get_estado(factura.estado), + get_forma_pago(factura.fp) ); free(tmp); } else {