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, IND_B, IDX_STRING, STRUCT_OFFSET(factura, emision), 512, 0);
+ emufs_agregar_indice(tmp->fp, "numero", IND_PRIMARIO, IND_B, IDX_INT, 0, 512, 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) {
t_Factura *fact;
EMUFS_REG_ID id;
CLAVE k;
+ INDICE_DATO dummy;
win = newwin(LINES-4, COLS-2, 2, 1);
box(win, 0, 0);
}
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);
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);
}
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++) {
delwin(win);
}
+float get_importe_factura(t_Item *items, int cant, float interes)
+{
+ float a=0.0f;
+ int i;
+ for(i=0; i<cant; i++) {
+ a += atof(items[i].cv)*atof(items[i].pvu);
+ }
+ a += a*interes/100.0f;
+ return a;
+}
+
+
void fact_consultas_fechas(char *s)
{
char desde_fecha[10], hasta_fecha[10];
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 */
while (k_menor.i_clave != -1) {
fact->nota = lst->fp_texto->leer_registro(lst->fp_texto, k, &size, &error);
*/
}
- lista_agregar_fila(lista,
- fact.numero,
- fact.emision,
- get_estado(fact.estado),
- get_forma_pago(fact.fp)
- );
+ 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);
}