X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/91245c4c700e6740b4d00e1f36b02e05ff96dabd..549a07c528dc9f77fa70cd331fb0250026781425:/emufs_gui/facturas.c?ds=sidebyside diff --git a/emufs_gui/facturas.c b/emufs_gui/facturas.c index b5e2fa9..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) { @@ -227,7 +231,7 @@ t_LstFacturas *fact_cargar(const char *filename, int tipo, int tam_bloque, int t cant_items = 0; } tmp->fp = emufs_crear("facturas", tipo-1, tam_bloque, sizeof(t_Factura)-sizeof(char *)-sizeof(t_Item*)+cant_items*sizeof(t_Item)); - /*emufs_agregar_indice(tmp->fp, "emision", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(factura, emision), 512);*/ + emufs_agregar_indice(tmp->fp, "emision", IND_EXAHUSTIVO, IND_B, IDX_STRING, STRUCT_OFFSET(factura, emision), 512); emufs_agregar_indice(tmp->fp, "numero", IND_PRIMARIO, IND_B, IDX_INT, 0, 512); tmp->fp_texto = emufs_crear("notas", tipo_nota-1, bloque_nota, 100); for (node=inicio ; node ; node = node->next) { @@ -416,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); } @@ -424,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; @@ -432,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) { @@ -511,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); } @@ -534,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; @@ -646,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); } @@ -947,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; @@ -984,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++) { @@ -994,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) ); } } @@ -1054,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); @@ -1068,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 {