Ledger Mode là gói Emacs cho chương trình kế toán dòng lệnh Ledger. Cho phép người dùng Emacs khai thác tính năng mạnh của Ledger ngay trong trình soạn thảo yêu thích.
Tại sao dùng Ledger Mode làm sổ sách trong Emacs?
Ledger Mode đơn giản, trực quan. Tự động cân đối tài chính, cảnh báo khi ghi chép sai. Phân loại chi tiêu, nguồn thu – sắp xếp, phân tích từ chính gói. Ledger Mode là bổ sung tuyệt vời cho người dùng Emacs làm bộ công cụ năng suất. Loại bỏ bảng tính, đồng thời dùng dữ liệu ledger cho các phần khác của Emacs.
Emacs hoạt động theo tư duy tương tác vận hành (interoperability): dữ liệu tạo ra trong Emacs có thể tái sử dụng cho gói khác. Ledger Mode cho phép tạo, kết hợp dữ liệu ledger với công cụ khác trong Emacs (ví dụ: tài liệu Org Mode liên kết email lưu trữ và file ledger; copy entry ledger sang email và ngược lại – vì entry ledger là plain text, Emacs dễ dàng chuyển giữa buffer).
Tiện ích Ledger
Ledger Mode chỉ là cách truy cập Ledger CLI. Cần hiểu Ledger là gì và làm gì được.
Ledger hoạt động như thế nào?
Ledger đọc sổ cái plain text, tạo báo cáo kế toán. Khác với phần mềm kế toán truyền thống, nó không tạo/sửa file database. Ledger là giải pháp gọn nhẹ, linh hoạt theo dõi tài chính.
Ledger yêu cầu mỗi entry tuân theo định dạng cụ thể. Ví dụ:
2022/02/16 Expenses
Expenses:Food:Lunch 140 PHP
Expenses:Food:Snack 50 PHP
Assets:Fiat:Cash -190 PHP
Ledger kỳ vọng 3 điều từ file text:
- Dòng tiêu đề: ngày và tên entry (ví dụ: entry Expenses ngày 16/2).
- Nhóm tài khoản: tiền từ đâu, đến đâu (tài sản Cash → chi tiêu).
- Giá trị tiền di chuyển (trừ từ tài sản một lần cuối ngày).
3 giả định cơ bản này giúp Ledger thích ứng mọi tình huống: tiền tệ, hàng hóa (cổ phiếu, đồ vật) – hữu ích cho theo dõi chi tiêu và đầu tư.
Định nghĩa danh mục tài khoản trong Ledger
Danh mục giao dịch trong Ledger hoàn toàn tùy ý. Thông thường tài chính cá nhân chia 5 phần:
- Tài sản (Assets): tiền tệ, hàng hóa bạn sở hữu (tiền, cổ phiếu, hàng tồn kho).
- Chi phí (Expenses): hàng hóa mua bằng tài sản.
- Thu nhập (Income): nguồn tiền (lương...).
- Nợ (Liabilities): khoản bạn đang nợ.
- Vốn chủ sở hữu (Equity): tài khoản đặc biệt xác định giá trị ròng. Dùng tạo số dư mở đầu (opening balance).
Chi tiết hơn bằng cách thêm : sau mỗi danh mục. Ví dụ Expenses:Food:Lunch – hierarchy 3 cấp.
Cài đặt Ledger
Có sẵn repo hầu hết distro Linux.
- Debian/Ubuntu:
sudo apt install ledger
- Fedora:
sudo dnf install ledger
- Arch:
sudo pacman -S ledger
Tôi dùng Debian → cài qua apt.
Dùng Ledger Mode trong Emacs
Cài gói đồng hành Ledger Mode (có sẵn kho ELPA mặc định → cài qua package manager Emacs).
- Alt+X →
package-install→ gõledger-mode. - Emacs tải, biên dịch. Dùng Ledger trong Emacs qua Ledger Mode.
Tạo sổ cái đầu tiên trong Emacs
Ledger Mode tự bật khi mở file kết thúc bằng .ledger.
- Ctrl+X, Ctrl+F → gõ
example.ledger. - Emacs tạo file, mở ra. Bắt đầu nhập giao dịch.
Tạo số dư mở đầu (Opening Balance)
Để theo dõi tài chính, cung cấp số dư hiện tại cho Ledger: trừ tài sản/nợ vào tài khoản Equity. Ví dụ opening balance:
2022/02/10 * Opening Balance
Assets:Bitcoin:Savings 0.045 BTC
Assets:Bitcoin:Checking 0.00050712 BTC
Assets:Fiat:Checking 15,000.00 PHP
Assets:Fiat:Savings 255,944.00 PHP
Liabilities:Fiat:Car Loan -450,000.00 PHP
Liabilities:Fiat:Credit Payable -5,000.00 PHP
Liabilities:Fiat:Home Loan -755,831.34 PHP
Equity:Opening Balance
Khác với ví dụ trước: thêm * trước tiêu đề → báo cho Ledger giao dịch đã "clear" (xác định) – Ledger được phép cộng/trừ từ các tài khoản này.
Kiểm tra số dư hiện tại
- Ctrl+C, Ctrl+O, Ctrl+R → Ledger Mode tạo báo cáo.
- Gõ
balhiển thị số dư chạy.
- Kết quả: hierarchy tất cả tài khoản, tổng bằng 0 ở dòng cuối.
Thêm giao dịch mới
- Ctrl+C, Ctrl+A → tạo giao dịch mới.
- Nhập ngày (Enter = hôm nay).
- Nhập tên giao dịch đã log trước (dùng cho thanh toán định kỳ). Enter = tạo mới.
- Ledger Mode tạo dòng trống với ngày hiện tại. Thêm giao dịch. Ví dụ:
2022/02/10 * Opening Balance Assets:PHP:Checking 5,000.00 PHP Assets:PHP:Savings 10,000.00 PHP Liabilities:PHP:Credit Payable -5,000.00 PHP Equity:Opening Balance 2022/02/11 My First Transaction Expenses:Food:Snack 250.00 PHP Assets:PHP:Checking -250.00 PHP
Tạo báo cáo cơ bản
- Ctrl+C, Ctrl+O, Ctrl+R → báo cáo. Ngoài
bal, dùng các lệnh khác. - Gõ
account+ tên tài khoản → báo cáo tài khoản cụ thể. Ví dụAssets.
- Gõ
payee+ chuỗi → lọc giao dịch theo tiêu đề. Ví dụsnack.
- Gõ
reg→ báo cáo sổ cái (register) chi tiết từng hàng hóa cân đối.
Chúc mừng! Bạn đã biết dùng Emacs theo dõi tài chính với Ledger Mode và hiểu Ledger CLI tạo báo cáo chi tiết.
Câu hỏi thường gặp
1. Ledger báo lỗi sổ cái không cân đối. Sai ở đâu?
Thường do quên đóng giao dịch (thiếu giá trị âm). Trong Ledger: giá trị âm = rút từ tài khoản, dương = thêm vào. Cần cả 2 để cân đối.
2. Ledger chỉ dùng cho tài sản thực không?
Không. Tài khoản Ledger tùy ý. Ví dụ theo dõi tài sản ảo game EVE Online:
2022/01/04 Venture Profits
Main:Assets:Liquid:ISK 150,000,000.00 ISK
Alt 1:Income:Ore Mining -10,000,000.00 ISK
Alt 1:Income:Station Trading -40,000,000.00 ISK
Alt 2:Income:Data Running (0.0) -100,000,000.00 ISK
2022/01/07 Upkeep Costs
Alt 1:Expenses:Ship Insurance 10,000.00 ISK
Alt 2:Expenses:New Ship 53,450,000.00 ISK
Main:Assets:Liquid:ISK -53,460,000.00 ISK
3. Đảo ngược thứ tự giao dịch như sao kê ngân hàng được không?
Được trong báo cáo (Shift+R trong buffer báo cáo). Không đảo trong file ledger gốc.