Ledger este un instrument puternic în linia de comandă pentru contabilitate în partidă dublă în text simplu. Înregistrând tranzacțiile în fișiere text ușor de citit, Ledger calculează solduri, generează registre și produce rapoarte financiare detaliate.
Concepte de bază și primii pași
Ecuația contabilă în partidă dublă
În Ledger, fiecare tranzacție constă din două sau mai multe înregistrări a căror sumă trebuie să fie strict zero:
$$\text{Assets} + \text{Expenses} = \text{Liabilities} + \text{Equity} + \text{Income}$$
Assets:Checking -$600.00 ; Asset decreases (credit)
Expenses:Rent $600.00 ; Expense increases (debit)
---------------------------------
Sold net = $0.00
Prezentare generală a comenzilor de bază
| Comandă | Formă completă | Descriere |
|---|---|---|
ledger bal |
ledger balance |
Calculează și afișează soldurile curente ale conturilor |
ledger reg |
ledger register |
Afișează cronologic înregistrările cu soldul curent |
ledger print |
ledger print |
Formatează și afișează intrările din jurnal |
ledger csv |
ledger csv |
Exportă tranzacțiile filtrate în format CSV standard |
ledger payees |
ledger payees |
Afișează toți beneficiarii unici din jurnal |
ledger accounts |
ledger accounts |
Afișează toate conturile și ierarhia acestora |
Specificațiile sintaxei de jurnal
Structura de bază a unei tranzacții
2024/01/03 * (CODE#001) Landlord John ; tag:rent
Expenses:Rent:Apartment $600.00
Assets:Checking:MainBank
- Detalierea liniei de antet::
2024/01/03 * (CODE#001) Landlord John ; tag:rent
^ ^ ^ ^ ^
Date State Code/Check# Payee/Description Comment & Tags
- Deducere automată: Ledger poate deduce automat valoarea unei înregistrări pentru echilibrarea tranzacției.
Indicatori de stare a tranzacțiilor
| Indicator | Stare | Descriere și utilizare tipică |
|---|---|---|
| (None) | Neconciliat | Tranzacții noi care nu au fost încă verificate cu extrasul de cont |
! |
În așteptare | Tranzacții inițiate aflate în curs de decontare |
* |
Conciliat | Tranzacții verificate și decontate pe extrasul bancar |
Date auxiliare
Semnul egal permite separarea datei tranzacției de data efectivă a decontării:
; Format: EventDate=SettlementDate
2024/01/01=2024/01/15 Consulting Client A
Assets:AccountsReceivable $1,000.00
Income:Consulting
Aserțiuni și alocări de sold
- Aserțiune de sold (= $VALUE): verifică dacă soldul contului corespunde valorii declarate.
- Alocare de sold (= $VALUE): calculează diferența necesară pentru a aduce contul la valoarea respectivă.
; 1. Balance Assertion
2024/01/01 * Restaurant
Expenses:Food:Dinner $20.00
Assets:Cash -$20.00 = $500.00
; 2. Balance Assignment
2024/01/01 * Opening Balance
Assets:Cash = $500.00
Equity:OpeningBalances
Account Declarations & Validation
account Expenses:Food
note Dining and grocery expenses
alias food
payee ^(KFC|McDonalds|Starbucks)$
check commodity == "$"
assert commodity == "$"
default
account Assets:Cash
alias cash
Commodities & Currencies
; 1. Per-unit cost (@ symbol)
2024/05/31 * Farmers Market
Expenses:Food:Apples 10 APPLE @ $1.50
Assets:Checking -$15.00
; 2. Total cost (@@ symbol)
2024/06/01 * Brokerage
Assets:Investments:AAPL 5 AAPL @@ $950.00
Assets:Checking -$950.00
; 3. Explicit currency price history
P 2024/06/01 00:00:00 EUR $1.0850
Directives
; Global default currency
D $1,000.00
; Set default year
Y2024
Including Sub-Journals
include accounts.journal
include 2023.journal
include 2024.journal
account Business
include company_expenses.journal
end
Budgeting
~ Monthly
Expenses:Rent $600.00
Expenses:Food $400.00
Expenses:Utilities $100.00
Expenses $100.00
Assets
~ Yearly
Expenses:Insurance $1,200.00
Assets
ledger bal --budget Expensesledger bal --unbudgeted Expenses
Expresii de perioadă
Ledger permite filtrarea temporală în limbaj natural prin opțiunea -p sau --period.
Syntax Structure
[INTERVAL] [BEGIN] [END]
Intervale
| Interval | Semnificație |
|---|---|
every day / daily |
Daily |
every week / weekly |
Weekly |
biweekly |
Every two weeks |
every month / monthly |
Monthly |
every quarter / quarterly |
Quarterly |
every year / yearly |
Yearly |
every N days/weeks/months |
Custom interval |
Period Filtering Examples
ledger reg -p "since last month"
ledger reg Expenses -p "every month from 2024 to 2024/12/31" -M
ledger bal -p "from 2024/01/01 until this month"
ledger bal Expenses:Food -p "last quarter"
Expresii de căutare și filtrare
| Syntax | Țintă | Exemplu | Descriere |
|---|---|---|---|
Account |
Account name | ledger bal Assets |
Substring/regex match |
^Account |
Root account | ledger bal ^Expenses |
Accounts starting with Expenses |
@Payee |
Payee name | ledger reg @Starbucks |
Match payee field |
%Tag |
Tag presence | ledger reg %reimburse |
Match tagged transactions |
%Tag=Value |
Tag value | ledger reg %project=alpha |
Match tag key-value pairs |
=Note |
Memo note | ledger reg =taxi |
Match memo text |
#Code |
Transaction code | ledger reg #1042 |
Match check or order number |
Logică booleană
ledger reg Expenses:Food and @Starbucks and not dining
ledger bal Rent or Transportation
ledger bal Expenses and not \( Drinks or Food \)
Opțiuni uzuale de filtrare
| Indicator | Opțiune | Descriere |
|---|---|---|
-b DATE |
--begin DATE |
Filter transactions on or after date |
-e DATE |
--end DATE |
Filter transactions before date |
-C |
--cleared |
Only cleared transactions (*) |
-U |
--uncleared |
Only uncleared transactions |
--pending |
--pending |
Only pending transactions (!) |
-R |
--real |
Exclude virtual postings |
-r |
--related |
Show the offsetting balancing postings |
Rapoarte și export de date
-s, --subtotal # Calculate subtotals for grouped postings
-n, --collapse # Collapse multi-line postings into one line
--flat # Render account tree as a flat list
--tail N # Limit output to last N lines
--invert # Invert numerical signs (display expenses as positive)
-X CUR, --exchange CUR # Convert foreign holdings to specified currency at latest rate
# Export all entries to CSV
ledger csv > report.csv
# Export this month's dining expenses
ledger csv Expenses:Food -p "this month"
Exemple practice
# Current assets vs liabilities
ledger bal ^Assets ^Liabilities
# Net revenue this month with positive expenses
ledger bal ^Expenses ^Income -p "this month" --invert
# Top 10 largest expenses
ledger reg Expenses -S amount --tail 10
# Monthly average daily expenses
ledger reg Expenses -M -n --average