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ư.

Form đóng ca: expected (read-only), counted (input), difference, confirm button
Sơ đồ quỹ ca: mở ca → ghi thu/chi → đóng ca → kiểm đếm → đối soát

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ó).
Quan trọng (CI-04, CI-01)

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):

  1. Nhấn "Thêm chi phí" (hoặc "Record expense").
  2. Nhập: số tiền, loại chi (vật tư / tiền lương / chi khác), mô tả, bucket (cash / bank).
  3. 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):

  1. Nhấn "Chuyển tiền".
  2. Nhập số tiền + từ bucket (cash hoặc bank) → sang bucket khác.
  3. 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ế:

  1. Mở "Reconciliation" hoặc "Đóng ca".
  2. Xem "Expected balance" (từ sổ sách) — read-only.
  3. Nhập "Counted balance" (kiểm đếm tay — input field).
  4. Hệ thống tính "Difference" (expected − counted).
  5. Nếu khớp → xanh, nếu sai ± một ít → vàng, sai nhiều → đỏ.
  6. Nhấn "Xác nhận đóng ca" → period CLOSED, không thể edit tay cho đến reopen.
Form đóng ca: expected (read-only), counted (input), difference, confirm button
Form đóng ca: expected (read-only), counted (input), difference, confirm button

Hai bucket: Cash vs Bank

DentIQ tách biệt hai nơi giữ tiền:

BucketÝ nghĩaVí dụ ghi chi
CashTiền mặt ở quầy / tủ an toànChi vật tư từ quầy, trả tạm ứng từ tiền mặt
BankTiền chuyển khoản / tài khoản ngân hàngChi 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:

  1. Nhấn "Reopen ca" trên period đã CLOSED (cần quyền `cash.manage`).
  2. Period trở về OPEN → có thể edit/thêm transaction.
  3. Sau khi fix, nhấn "Đóng ca lại".
  4. History reopen vẫn ghi trong audit log.

Quyền và cấp truy cập

Vai tròQuyền cầnCó thể làm
Kế toáncash.manage + cash.exportMở/đóng ca, ghi chi, chuyển tiền, reopen, export Excel
Quản lý phòng khámcash.readXem sổ quỹ, số dư (đọc), reopen nếu có quyền
Lễ tâncash.readXem 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.