Saltar al contenido principal

Funciones de la interfaz de usuario

Explora las principales funciones de la interfaz web de beancount.io para editar, consultar, subir documentos y personalizar tu flujo de trabajo con Beancount.

Utiliza el editor, el formulario de transacciones y los informes de consulta para trabajar con tu libro mayor. Las recetas ejecutables a continuación están orientadas a la versión estándar de Fava 1.30.16 con Beancount 3.2.0 y beanquery 0.2.0; sigue la configuración local fijada.

beancount.io utiliza un panel separado. Su código fuente confirma las rutas para editar, consultar, documentos y configuración, además de los consumidores para varias opciones de visualización de Fava. Esto no significa que los atajos de teclado, las reglas de inserción, la ejecución de plugins o las rutas de URL de Fava estándar sean una promesa de compatibilidad alojada. La imagen siguiente muestra el panel alojado, no la interfaz estándar.

Panel de beancount.io que muestra un gráfico de evolución del patrimonio, saldos de cuentas y una barra de asistente de IA

Explora el libro mayor en vivo →

1. Edición y entrada de datos

El editor integrado

El editor estándar de Fava ofrece autocompletado para cuentas, beneficiarios y etiquetas. Utiliza default-file para elegir el archivo fuente inicial. La función insert-entry también coloca el cursor en el último marcador de inserción de ese archivo; no es una opción principal de Beancount.

2000-01-01 custom "fava-option" "default-file"
2024-01-01 custom "fava-option" "insert-entry" "^Expenses:Food$"

Este fragmento selecciona su archivo contenedor. Las nuevas entradas posteriores al 1 de enero de 2024 que coincidan con Expenses:Food se insertan antes del marcador, a menos que una regla posterior elegible o una cuenta de asiento posterior tengan prioridad. Consulta el ejemplo completo de inserción multiarchivo.

Añadir transacciones

En Fava estándar, haz clic en + o presiona n para abrir el formulario de transacciones. El campo de descripción acepta etiquetas y enlaces separados por espacios, como Lunch #food ^receipt-001. Los nombres de cuenta deben tener directivas open existentes.

Guarda este libro mayor completo como ui-demo.beancount para probar los informes siguientes. El gasto positivo es un débito; el ingreso negativo en efectivo es su crédito.

option "title" "UI Demo"
option "operating_currency" "USD"
2024-01-01 open Assets:Checking USD
  fava-uptodate-indication: TRUE
2024-01-01 open Income:Salary USD
2024-01-01 open Expenses:Food USD
 
2024-01-02 * "Salary"
  Assets:Checking    3000.00 USD
  Income:Salary     -3000.00 USD
 
2024-01-03 * "Groceries" #food
  Expenses:Food       400.00 USD
  Assets:Checking    -400.00 USD
 
2024-01-04 balance Assets:Checking 2600.00 USD

Ejecuta bea --file ui-demo.beancount check y luego fava ui-demo.beancount. La comprobación pasa y la cuenta de cheques mantiene 2.600,00 USD. Una transacción con fecha futura con #template sigue siendo una transacción real: esa etiqueta no la convierte en una plantilla reutilizable inerte. Mantén las transacciones hipotéticas en un libro mayor de escenarios separado.

2. Gestión de documentos

Fava estándar puede subir documentos arrastrándolos sobre los nombres de cuenta o las filas del diario. Configura una carpeta raíz de documentos real y mantén la jerarquía de cuentas coherente con tus cuentas abiertas.

Este fragmento opcional puede añadirse a ui-demo.beancount. Primero crea un directorio documents junto al libro mayor. Para probar la detección, coloca un archivo real llamado 2024-01-03-receipt.pdf dentro de documents/Expenses/Food/.

option "documents" "documents"
plugin "fava.plugins.link_documents"
plugin "fava.plugins.tag_discovered_documents"

Estos son módulos reales incluidos en Fava 1.30.16. Beancount detecta archivos fechados en los directorios de cuentas; tag_discovered_documents añade #discovered. link_documents asocia metadatos document de la transacción con los documentos y los enlaza. No infiere una asociación de transacción a partir del contenido del archivo. Añade estos metadatos directamente bajo el encabezado de la cuenta Expenses:Food, antes de sus asientos:

  document: "2024-01-03-receipt.pdf"

Esa línea con sangría es un fragmento de metadatos, no un libro mayor independiente. Con el archivo presente, el documento recibe #linked y comparte ^dok-2024-01-03 con la transacción. Si falta la coincidencia, se produce un error. Para conocer el comportamiento exacto, consulta la documentación de la versión del plugin de enlace.

3. Consultas y análisis con BQL

La página de consultas de Fava estándar ejecuta lenguaje de consulta Beancount. Limpia los filtros globales de fecha antes de reproducir resultados completos del libro mayor. Los filtros de interfaz pueden eliminar entradas antes de ejecutar una consulta.

Los resultados pueden descargarse como CSV. El soporte de gráficos depende de los tipos de resultado: la ayuda estándar describe exactamente dos columnas, con una fecha o una cadena seguida de un inventario. Una pareja arbitraria de columnas numéricas no garantiza un gráfico.

Ejemplos prácticos de consultas

Ejecuta estas consultas contra ui-demo.beancount en la página de consultas de Fava o pasa cada consulta a bea --file ui-demo.beancount query.

Resumen mensual de gastos:

SELECT account, SUM(position) AS total
FROM postings
WHERE account ~ '^Expenses:'
  AND date >= 2024-01-01 AND date < 2024-02-01
GROUP BY account
ORDER BY account;

Resultado esperado: Expenses:Food, 400,00 USD.

Ingresos vs. gastos por mes:

SELECT YEAR(date) AS year, MONTH(date) AS month,
       ROOT(account, 1) AS category, currency,
       SUM(number) AS signed_total
FROM postings
WHERE account ~ '^(Income|Expenses):'
GROUP BY year, month, category, currency
ORDER BY year, month, category, currency;
AñoMesCategoríaMonedaTotal firmado
20241GastosUSD400,00
20241IngresosUSD-3000,00

La consulta conserva los signos de Beancount y agrupa las monedas por separado. Los ingresos de 3.000,00 USD menos los gastos de 400,00 USD dejan 2.600,00 USD. Es un informe de unidades, no una conversión ni un informe de base de coste. IIF no está disponible en beanquery 0.2.0, y el operador unario -position no es compatible; agrupar las dos categorías de cuentas evita ambas operaciones.

4. Personalización y flujo de trabajo

Personalizar la vista

Añade estas directivas de Fava al libro mayor de ejemplo para ocultar cuentas con saldo cero y plegar las ramas de inversión:

2000-01-01 custom "fava-option" "show-closed-accounts" "false"
2000-01-01 custom "fava-option" "show-accounts-with-zero-balance" "false"
2000-01-01 custom "fava-option" "collapse-pattern" "^Assets:Investments"

Afectan a los árboles de cuentas de los informes. Las cuentas con saldo no nulo permanecen visibles. Formas principales como option "show-closed-accounts" "false" fallan la validación de Beancount.

El metadato fava-uptodate-indication: TRUE de la muestra está en su propia línea con sangría bajo open. No lo pongas en la línea open ni lo escribas como booleano. Una comprobación de saldo reciente produce verde; una fallida produce rojo; una transacción posterior produce amarillo. La aserción del 4 de enero es verde. Un indicador gris separado también puede aparecer cuando las fechas son antiguas.

Enlaces laterales

Para el ejemplo estándar titulado UI Demo, estas rutas completas conducen a sus informes:

2024-01-01 custom "fava-sidebar-link" "January Expenses" "/ui-demo/income_statement/?time=2024-01"
2024-01-01 custom "fava-sidebar-link" "All Documents" "/ui-demo/documents/"

Estas rutas asumen que Fava estándar está montado en la raíz del host. Reemplaza /ui-demo con el slug real de tu libro mayor e incluye cualquier prefijo de servidor. Consulta enlaces laterales personalizados para probar el comportamiento de /jump y los límites de enrutamiento alojado.

Configuración general

Al iniciar Fava estándar con varios archivos principales se crean libros mayores separados en su selector. Los archivos incluidos mediante include permanecen como parte de un solo libro mayor y aparecen como fuentes editables; no son libros separados.

Utiliza opciones de Fava para language, default-file y use-external-editor. Un editor externo necesita un manejador beancount:// y acceso a los archivos fuente. Los módulos de extensión estándar también incluyen fava.ext.auto_commit y fava.ext.portfolio_list. Las extensiones utilizan custom "fava-extension" con sus propios requisitos previos; son distintas de las directivas plugin utilizadas anteriormente. Consulta la ayuda de extensiones de esta versión de Fava.

5. Rendimiento y resolución de problemas

Manejo de archivos grandes

Utiliza includes para organizar un libro mayor por cuenta o período. Beancount sigue cargando los archivos incluidos, por lo que dividir un libro no reduce por sí mismo la entrada del informe. Limita las fechas mostradas y simplifica las consultas costosas cuando necesites un informe más pequeño.

Problemas comunes y soluciones

  • Errores en el libro mayor: Ejecuta bea check e inspecciona el informe de errores de Fava. Una página puede renderizarse mientras el cargador tiene errores.
  • Comportamiento inesperado de opciones: Verifica el tiempo de ejecución probado y utiliza directivas personalizadas de Fava con fecha. bea check no puede detectar por sí solo una opción desconocida de Fava.
  • Totales de consulta inesperados: Limpia los filtros globales, incluye el historial de apertura y mantén las monedas separadas.
  • Documentos faltantes: Verifica que el directorio exista, que la cuenta esté abierta, que el nombre del archivo comience con una fecha válida y que los metadatos de la transacción coincidan con el documento.

Para contraste, estos son ejemplos inválidos intencionales. No deben copiarse en un libro mayor funcional:

option "insert-entry" "Expenses:Food"
custom "fava-sidebar-link" "Label" "/jump?time=month"

El primero utiliza una opción principal desconocida. El segundo omite la fecha requerida. La referencia de funciones estándar describe el comportamiento de la interfaz para esta versión.

Fuente: https://beancount.io/es/docs/Tips/ui-features