X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/5a9b2bb828b925aa8082bf117a91cf1e77dd0464..fe7cadabd775ddd59714749b7dfe31a578c6ecca:/emufs_gui/facturas.c?ds=inline diff --git a/emufs_gui/facturas.c b/emufs_gui/facturas.c index 153b5cb..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,6 +1042,18 @@ 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; iobtener_sig_clave(idx, k_menor); }