X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/376814ea9f4cd3e7dda91f6afa435a6b0d1190b8..fe7cadabd775ddd59714749b7dfe31a578c6ecca:/emufs_gui/facturas.c diff --git a/emufs_gui/facturas.c b/emufs_gui/facturas.c index c699278..f6ab13c 100644 --- a/emufs_gui/facturas.c +++ b/emufs_gui/facturas.c @@ -232,8 +232,8 @@ t_LstFacturas *fact_cargar(t_Parametros *param) cant_items = 0; } tmp->fp = emufs_crear("facturas", param->tipo_arch_fact, param->tam_bloque_fact, 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, "numero", IND_PRIMARIO, IND_B, IDX_INT, 0, 512); + emufs_agregar_indice(tmp->fp, "emision", IND_EXAHUSTIVO, param->ind_fac[1].tipo_arbol, IDX_STRING, STRUCT_OFFSET(factura, emision), param->ind_fac[1].tam_bloque, 0); + emufs_agregar_indice(tmp->fp, "numero", IND_PRIMARIO, param->ind_fac[0].tipo_arbol, IDX_INT, 0, param->ind_fac[0].tam_bloque, 0); tmp->fp_texto = emufs_crear("notas", param->tipo_arch_nota, param->tam_bloque_nota, 100); for (node=inicio ; node ; node = node->next) { if (node->type == XML_ELEMENT_NODE) { @@ -398,6 +398,7 @@ void fact_eliminar(char *s) t_Factura *fact; EMUFS_REG_ID id; CLAVE k; + INDICE_DATO dummy; win = newwin(LINES-4, COLS-2, 2, 1); box(win, 0, 0); @@ -417,9 +418,9 @@ void fact_eliminar(char *s) } k = emufs_indice_generar_clave_desde_valor(lst_facturas->fp->indices, (char *)(&fact->numero)); - lst_facturas->fp->borrar_registro(lst_facturas->fp, k); + lst_facturas->fp->borrar_registro(lst_facturas->fp, k, dummy); k.i_clave = fact->reg_nota; - lst_facturas->fp_texto->borrar_registro(lst_facturas->fp_texto, k); + lst_facturas->fp_texto->borrar_registro(lst_facturas->fp_texto, k, dummy); if (fact->items) free(fact->items); if (fact->nota) free(fact->nota); @@ -513,10 +514,11 @@ void fact_modificar(char *s) entrada = procesar_guardar_factura(fact, lst_facturas, &size); if (entrada) { CLAVE k; + INDICE_DATO dummy; 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); + lst_facturas->fp->modificar_registro(lst_facturas->fp, k, entrada, size, &error, dummy); 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); + id_texto = lst_facturas->fp_texto->modificar_registro(lst_facturas->fp_texto, k, fact->nota, strlen(fact->nota)+1, &error, dummy); free(entrada); } @@ -673,6 +675,7 @@ void *procesar_guardar_factura(t_Factura *f, t_LstFacturas *lst, EMUFS_REG_SIZE switch (lst->fp->tipo) { case T1: case T2: + case T4: /* Calculo el tamaƱo que voy a necesitar */ i[0] = sizeof(int); i[1] = sizeof(float); @@ -706,6 +709,7 @@ void *procesar_guardar_factura(t_Factura *f, t_LstFacturas *lst, EMUFS_REG_SIZE memcpy(tmp+i[0]+i[1]+i[2]+i[3]+i[4]+i[5]+i[6]+i[7]+i[8]+i[9]+i[10], f->items, i[11]); break; case T3: + case T5: (*size) = sizeof(t_Factura)-sizeof(char *)-sizeof(t_Item *) + f->cant_items*sizeof(t_Item); tmp = (char *)malloc(*size); if (tmp == NULL) return NULL; @@ -732,6 +736,7 @@ static int procesar_leer_factura(t_Factura *dst, void *src, EMUFS_REG_SIZE size, switch (lst->fp->tipo) { case T1: case T2: + case T4: ini = (char *)src; /* Copio los campos numericos, muy facil:-) */ memcpy(&dst->numero, ini, sizeof(int)); @@ -795,6 +800,7 @@ static int procesar_leer_factura(t_Factura *dst, void *src, EMUFS_REG_SIZE size, return 0; break; case T3: + case T5: /* Se que tengo 10 items */ /* TODO : Ver porque leer_registro_tipo3 tira mal el size */ size = lst->fp->tam_reg; @@ -1009,7 +1015,7 @@ void fact_consultas_codigos(char *s) lista_agregar_columna(lista, "Numero", DATO_INT, 0, 8); /* numero */ lista_agregar_columna(lista, "Fecha", DATO_STR, 10, 9); /* emision */ lista_agregar_columna(lista, "Estado", DATO_STR, 20, 19); /* estado */ - lista_agregar_columna(lista, "Forma de Pago", DATO_STR, 40, 19); /* fp */ + lista_agregar_columna(lista, "F. Pago", DATO_STR, 40, 9); /* fp */ /* Leo los datos desde el archivo */ for(i=desde_codigo; i<=hasta_codigo; i++) { @@ -1036,17 +1042,27 @@ void fact_consultas_codigos(char *s) delwin(win); } +float get_importe_factura(t_Item *items, int cant, float interes) +{ + float a=0.0f; + int i; + for(i=0; ifp, "emision"); if (idx==NULL) PERR("INDICE EMISION NO SE ENCUENTRA!!"); if (strlen(desde_fecha) == 0) { - k = idx->obtener_menor_clave(idx); - emufs_indice_obtener_valor_desde_clave(idx, k, desde_fecha); + k_menor = idx->obtener_menor_clave(idx); + emufs_indice_obtener_valor_desde_clave(idx, k_menor, desde_fecha); PERR("OBTUVE MENOR CLAVE DESDE EL INDICE"); PERR(desde_fecha); } if (strlen(hasta_fecha) == 0) { - k = idx->obtener_mayor_clave(idx); - emufs_indice_obtener_valor_desde_clave(idx, k, hasta_fecha); + k_mayor = idx->obtener_mayor_clave(idx); + emufs_indice_obtener_valor_desde_clave(idx, k_mayor, hasta_fecha); PERR("OBTUVE MAYOR CLAVE DESDE EL INDICE"); PERR(hasta_fecha); } @@ -1092,25 +1109,51 @@ void fact_consultas_fechas(char *s) lista_agregar_columna(lista, "Numero", DATO_INT, 0, 8); /* numero */ lista_agregar_columna(lista, "Fecha", DATO_STR, 10, 9); /* emision */ lista_agregar_columna(lista, "Estado", DATO_STR, 20, 19); /* estado */ - lista_agregar_columna(lista, "Forma de Pago", DATO_STR, 40, 19); /* fp */ + lista_agregar_columna(lista, "F. Pago", DATO_STR, 40, 9); /* fp */ + lista_agregar_columna(lista, "Importe", DATO_FLOAT, 50, 8); /* importe */ /* Leo los datos desde el archivo */ -/* for(i=desde_codigo; i<=hasta_codigo; i++) { - factura = fact_buscar(lst_facturas, i, &dummy, &dummy); - if (factura != NULL) { - lista_agregar_fila(lista, - factura->numero, - factura->emision, - get_estado(factura->estado), - get_forma_pago(factura->fp) - ); + while (k_menor.i_clave != -1) { + t_Factura fact; + int error, cant, i; + char *leo; + EMUFS_REG_SIZE size; + INDICE_DATO *datos; + CLAVE k1; + datos = idx->buscar_entradas(idx, k_menor, &cant); + for(i=0; ifp->leer_registro(lst_facturas->fp, k1, &size, &error); + if (leo != NULL) { + procesar_leer_factura(&fact, leo, size, lst_facturas); + free(leo); + /*k.i_clave = fact->reg_nota; + error = 0; + fact->nota = lst->fp_texto->leer_registro(lst->fp_texto, k, &size, &error); + */ + } + if (strcmp(estado, "Todos") != 0) { + if (strcmp(estado, fact.estado) == 0) { + fprintf(stderr, "Agrego factura num=%d con %d items\n", fact.numero, fact.cant_items); + lista_agregar_fila_ordenada(lista, + fact.numero, + fact.emision, + get_estado(fact.estado), + get_forma_pago(fact.fp), + get_importe_factura(fact.items, fact.cant_items, fact.procdoi) + ); + } + } } + if (datos) free(datos); + if (fact.items) free(fact.items); + k_menor = idx->obtener_sig_clave(idx, k_menor); } curs_set(0); lista_ejecutar(lista); curs_set(1); - */ wrefresh(win1); wrefresh(win); werase(win1);