재고 Fava에 날짜 기반 사이드바 지시문을 추가한 다음, 모든 게시물을 합산한 후 마이너스 잔액을 찾는 쿼리를 저장하세요. 예제는 Beancount 3.2.3, beanquery 0.2.0, Fava 1.30.16으로 실행되었습니다. 고정 로컬 설정을 사용하세요.
이 URL은 로컬 재고 Fava 서버를 대상으로 합니다. Beancount.io의 호스팅 대시보드는 다른 보고서 경로를 가지며 아래에서 별도로 범위가 지정됩니다.
Fava를 사용자 정의하는 이유
사이드바 단축키는 유용한 필터 보기를 보존합니다. 저장된 쿼리는 반복적으로 BQL을 입력하지 않고도 특정 회계 질문에 답할 수 있습니다.
해결되는 문제점:
- 현재 또는 이전 월을 반복적으로 선택해야 하는 문제.
- 저장된 보고서를 다시 열어야 하는 문제.
- 실제로 0 미만으로 끝나는 계정에서 지출을 구분해야 하는 문제.
✨ 사용자 정의 사이드바 링크
다음 섹션의 전체 sidebar-demo.beancount 원장에 다음 지시문을 추가하세요. fava sidebar-demo.beancount로 시작하고 단축키를 클릭하기 전에 Journal 보고서를 여세요.
2021-01-01 custom "fava-sidebar-link" "Current Month" "/jump?time=month"
2021-01-01 custom "fava-sidebar-link" "Last Month" "/jump?time=month-1"
2021-01-01 custom "fava-sidebar-link" "Clear All" "/jump?account=&time=&filter="기능:
/jump는 브라우저의 Referer 헤더에 있는 페이지로 돌아가며 제공된 쿼리 매개변수를 대체합니다. 항상 Journal 보고서를 열지는 않습니다. 대차대조표에서는 대차대조표에 머무릅니다. 이 동작은 재고 Fava 리디렉션 처리기에 의해 구현됩니다.
- 현재 월: 현재 보고서에
time=month를 설정합니다. - 지난 달: 현재 보고서에
time=month-1을 설정합니다. - 모두 지우기:
account,time,filter를 제거합니다.conversion과 같은 다른 매개변수는 유지됩니다.
2021년 픽스처는 오늘의 월에 거래가 없습니다. 모두 지우기를 사용한 후에 쿼리 결과를 재현하세요. /jump URL은 리퍼러가 필요합니다. 직접 연 북마크의 경우 대신 완전한 작업 보고서 URL을 복사하세요.
호스트 루트에서 /jump?time=month는 /sidebar-demo/journal/?time=2021&account=Assets에서 테스트되었습니다: account=Assets&time=month와 함께 동일한 journal로 HTTP 302를 반환했습니다. 대상 보고서는 HTTP 200을 반환했습니다.
관리자가 /books에 전체 Fava 애플리케이션을 마운트한 경우, 모든 루트 상대 단축키에는 해당 접두사가 포함되어야 합니다. 이는 대안적 구성으로, 위의 현재 월 옆에 추가할 또 다른 지시문이 아닙니다:
2021-01-01 custom "fava-sidebar-link" "Current Month" "/books/jump?time=month"로컬 WSGI 마운트 테스트에서 /books/jump가 새 필터와 함께 /books/sidebar-demo/journal/로 리디렉션되는 것을 확인했습니다. 일반 /jump는 해당 마운트 외부에 있으며 404를 반환했습니다. Fava의 사용자 정의 링크는 제공된 URL을 보존합니다. /로 시작하는 것은 호스트 루트를 의미하며 원장 루트가 아닙니다.
호스팅 범위, 2026-09-07 확인: Beancount.io 대시보드 소스는 /ledger/OWNER/LEDGER/income-statement 및 /ledger/OWNER/LEDGER/query와 같은 경로를 사용합니다. 해당 사이드바는 자체 보고서 메뉴를 구축합니다. 검사된 소스에는 /jump 경로나 fava-sidebar-link 소비자가 없습니다. 따라서 이 기본 레시피는 해당 대시보드에는 적용되지 않습니다. 호스팅 제품에서는 원하는 보고서를 열고 작업 주소를 북마크하세요. 소스 스냅샷은 실행 중인 배포판의 개정판을 증명하지 않습니다.
🔍 사용자 정의 SQL 쿼리
이 전체 픽스처를 sidebar-demo.beancount로 저장하세요. 각 자산 계정에 양수 및 음수 게시물을 모두 포함하도록 의도적으로 설계되었습니다:
option "title" "Sidebar Demo"
option "operating_currency" "USD"
2021-01-01 open Assets:BCM:Positive USD
2021-01-01 open Assets:BCM:Negative USD
2021-01-01 open Equity:Opening-Balances USD
2021-12-01 * "Opening balances"
Assets:BCM:Positive 100.00 USD
Assets:BCM:Negative 20.00 USD
Equity:Opening-Balances -120.00 USD
2021-12-10 * "Outflows"
Assets:BCM:Positive -30.00 USD
Assets:BCM:Negative -50.00 USD
Equity:Opening-Balances 80.00 USD
2022-01-05 * "Refund"
Assets:BCM:Negative 10.00 USD
Equity:Opening-Balances -10.00 USD
2022-01-09 balance Assets:BCM:Positive 70.00 USD
2022-01-09 balance Assets:BCM:Negative -20.00 USDbean-check sidebar-demo.beancount가 통과합니다. 1월 9일 시작 시점에 Positive는 100 - 30 = 70 USD를, Negative는 20 - 50 + 10 = -20 USD를 보유합니다.
재고 Fava의 Query 페이지에서 전역 필터를 지운 상태로 다음 쿼리를 실행하세요:
SELECT account, currency, SUM(number) AS ending_balance
FROM postings
WHERE account ~ ':BCM:'
AND date < 2022-01-09
GROUP BY account, currency
HAVING SUM(number) < 0
ORDER BY account, currency;| 계정 | 통화 | 기말 잔액 |
|---|---|---|
| Assets:BCM:Negative | USD | -20.00 |
분석:
WHERE는 집계할 게시물을 선택합니다. 하한 날짜는 없습니다: 기말 잔액에는 12월 1일의 기초 잔액을 포함한 모든 이전 내역이 필요합니다. 상한 날짜는 1월 8일을 포함하고 1월 9일 거래를 제외합니다.
GROUP BY account, currency는 서로 다른 통화를 분리합니다. HAVING SUM(number) < 0은 각 그룹의 양수 및 음수 수량을 합산한 후에 필터링합니다. 이는 통화당 기말 단위 잔액이며, 단일 통화로 환산된 시장 가치가 아닙니다. 각 정확한 계정을 보고하며 상위 계정으로 롤업하지 않습니다.
비교를 위해, 이 실행 가능한 쿼리는 다른 질문에 답합니다: 검토 기간 동안 마이너스로 게시된 금액은 얼마인가요?
SELECT account, currency, SUM(number) AS negative_postings
FROM postings
WHERE account ~ ':BCM:'
AND number < 0
AND date >= 2021-12-09 AND date < 2022-01-09
GROUP BY account, currency
ORDER BY account, currency;| 계정 | 통화 | 마이너스 게시물 |
|---|---|---|
| Assets:BCM:Negative | USD | -50.00 |
| Assets:BCM:Positive | USD | -30.00 |
두 번째 쿼리는 환불 및 기초 잔액을 생략합니다. -30.00 USD 행은 Positive가 마이너스임을 의미하지 않습니다. 첫 번째 쿼리에 하한 날짜를 추가하면 기간 순 이동이 생성되며 기말 잔액이 아닙니다. 추가 쿼리 구문은 BQL 참조를 참조하세요.
사용 사례:
- 예상치 못한 마이너스 수량에 대해 자산 계정을 확인합니다.
- 지출 또는 환불을 조사할 때 마이너스 게시물을 별도로 검토합니다.
- 이상 징후로 처리하기 전에 보고된 잔액을 기초 잔액 및 후속 활동과 대조합니다.
🛠 프로 팁: 링크 + 쿼리 결합
Fava는 쿼리에 대한 링크를 지원합니다. 이 저장된 쿼리와 단축키를 sidebar-demo.beancount에 추가하세요:
2021-01-01 query "negative-balances" "SELECT account, currency, SUM(number) AS ending_balance FROM postings WHERE account ~ ':BCM:' AND date < 2022-01-09 GROUP BY account, currency HAVING SUM(number) < 0 ORDER BY account, currency"
2021-01-01 custom "fava-sidebar-link" "Negative Balances" "/sidebar-demo/query/?query_string=.run+%22negative-balances%22"쿼리 지시문은 Fava의 저장된 쿼리 사이드바에도 나타나며, sidebar-show-queries (기본값 5)의 적용을 받습니다. 명시적 단축키는 픽스처의 sidebar-demo 슬러그를 대상으로 하고 명명된 쿼리를 실행합니다. 재고 쿼리 페이지는 URL에서 query_string을 읽습니다. 해당 쿼리 API는 로컬 테스트에서 동일한 단일 -20.00 USD 행을 반환했습니다. 버전별 Query 컴포넌트를 참조하세요.
다른 장부에서 원장의 실제 슬러그를 사용하세요. /books 마운트에서는 단축키가 /books/sidebar-demo/query/?query_string=.run+%22negative-balances%22가 됩니다. 전체 내역 기말 잔액을 위해 전역 필터를 유지하세요. 저장된 쿼리 실행 전에 날짜 필터가 시작 잔액 내역을 제거할 수 있습니다.
최종 고려 사항
월 단축키를 사용하여 보고서를 탐색하고, 저장된 쿼리를 사용하여 재현 가능한 기말 잔액을 확인하세요. 예산 검토 시 마이너스 숫자를 해석하기 전에 지출, 기간 이동 및 기말 잔액을 구분하세요. 추가 보고서는 Fava의 확장 문서 및 UI 가이드를 참조하세요.