Cash management (quỹ ca) — quản lý tiền giữ hôm nay
Cash management là quản lý tiền thực tế mà phòng khám đang giữ ở hai nơi: tiền mặt (quầy) và ngân hàng. Mỗi ngày cần chốt quỹ để đối soát số dư.
Khái niệm cơ bản
DentIQ quản lý tiền theo ledger model (sổ sách):
- Opening balance — tiền còn lại từ hôm trước (sẵn sàng từ lúc mở ca).
- Inflow — tiền thu hôm nay (từ payment patients).
- Outflow — chi hôm nay (vật tư, lương tạm ứng, chi khác).
- Expected balance — opening + inflow − outflow (tính từ sổ sách).
- Counted balance — tiền kiểm đếm thực tế (bằng tay).
- Difference — expected − counted (sai lệch, nếu có).
Cash đều được ghi từ payment/expense thực tế, không từ charge hoặc outstanding (công nợ). Cash branch lấy từ source payment record, không phải active branch UI. Khi số dư hidden (thiếu quyền), hiển thị "Dữ liệu bị ẩn do thiếu quyền" (CI-02).
Quy trình hàng ngày
Sáng: Mở ca
Kế toán vào menu "Cash Management" → nhấn "Mở ca hôm nay":
- Xem "opening balance" từ hôm trước (đã chốt).
- DentIQ ghi tự động inflow từ payment (tất cả phương thức: cash/bank/card/Momo/ZaloPay).
Trong ngày: Ghi chi phí
Nếu có chi phí (vật tư, y tế, lương tạm ứng, chi khác):
- Nhấn "Thêm chi phí" (hoặc "Record expense").
- Nhập: số tiền, loại chi (vật tư / tiền lương / chi khác), mô tả, bucket (cash / bank).
- Lưu → hệ thống cộng outflow vào sổ sách.
Trong ngày: Chuyển tiền (cash ↔ bank)
Nếu cần chuyển tiền từ quầy vào ngân hàng (hoặc ngược lại):
- Nhấn "Chuyển tiền".
- Nhập số tiền + từ bucket (cash hoặc bank) → sang bucket khác.
- Lưu → total không đổi, chỉ dịch chuyển giữa hai nơi.
Cuối ngày: Đóng ca
Kế toán kiểm đếm tiền mặt thực tế:
- Mở "Reconciliation" hoặc "Đóng ca".
- Xem "Expected balance" (từ sổ sách) — read-only.
- Nhập "Counted balance" (kiểm đếm tay — input field).
- Hệ thống tính "Difference" (expected − counted).
- Nếu khớp → xanh, nếu sai ± một ít → vàng, sai nhiều → đỏ.
- Nhấn "Xác nhận đóng ca" → period CLOSED, không thể edit tay cho đến reopen.
Hai bucket: Cash vs Bank
DentIQ tách biệt hai nơi giữ tiền:
| Bucket | Ý nghĩa | Ví dụ ghi chi |
|---|---|---|
| Cash | Tiền mặt ở quầy / tủ an toàn | Chi vật tư từ quầy, trả tạm ứng từ tiền mặt |
| Bank | Tiền chuyển khoản / tài khoản ngân hàng | Chi hóa đơn điện nước từ TK, chuyển khoản cho nhà cung cấp |
Phương thức payment (cash/card/Momo/bank transfer) tự động ghi vào bucket đúng.
Reopen (mở lại kỳ đã chốt)
Nếu phát hiện lỗi ghi sai hoặc quên transaction:
- Nhấn "Reopen ca" trên period đã CLOSED (cần quyền `cash.manage`).
- Period trở về OPEN → có thể edit/thêm transaction.
- Sau khi fix, nhấn "Đóng ca lại".
- History reopen vẫn ghi trong audit log.
Quyền và cấp truy cập
| Vai trò | Quyền cần | Có thể làm |
|---|---|---|
| Kế toán | cash.manage + cash.export | Mở/đóng ca, ghi chi, chuyển tiền, reopen, export Excel |
| Quản lý phòng khám | cash.read | Xem sổ quỹ, số dư (đọc), reopen nếu có quyền |
| Lễ tân | cash.read | Xem cash (đọc), không thao tác |
Export sổ quỹ
Kế toán có thể xuất sổ quỹ ra Excel:
- Menu: "Cash Management" → "Export" hoặc "Xuất Excel".
- Chọn khoảng thời gian (từ ngày - đến ngày).
- File Excel chứa: date, time, type (PAYMENT_IN / EXPENSE / TRANSFER), amount, method, actor, description, status.
- Dùng để đối soát với ngân hàng hoặc báo cáo kế toán bộ.
Trường hợp đặc biệt
Hủy payment khi ca đã đóng
Nếu cần hủy payment nhưng ca hôm đó đã chốt:
- Hệ thống chặn: "Ngày đã chốt. Vui lòng reopen ca trước."
- Kế toán mở lại kỳ → hủy payment → đóng ca lại.
Chênh lệch tiền
Nếu kiểm đếm không khớp sổ sách:
- Ghi lại difference (vàng/đỏ) nhưng vẫn đóng ca.
- Ngày hôm sau điều tra nguyên nhân (chi bị quên ghi, payment bị ghi nhầm, etc.).
- Kế toán reopen → fix → đóng lại.
Tách biệt Cash vs Outstanding
Rất quan trọng:
- Outstanding (công nợ) = tiền BN còn phải trả → ảnh hưởng "Charge" thôi, không phải cash.
- Cash = tiền mặt/ngân hàng phòng khám đang giữ → sổ quỹ riêng.
- BN nợ 100k nhưng chưa trả → outstanding +100k, cash không đổi.
- BN trả 50k (hôm sau trả 50k nữa) → payment ghi 2 lần, cash tăng từng lần.