Đối soát cuối ngày — ghi nhận quỹ hôm nay

Cuối ca làm việc, lễ tân + kế toán vào hệ thống để đối soát: kiểm tra tổng cộng tiền thu hôm nay, so khớp với cash session opening/closing, ghi các chi phí phát sinh, confirm balance chính xác.

Giao diện end of day
Workflow: mở cash session → xem payment log hôm nay → check receipt phát hành → ghi expense → close session → print báo cáo

Bối cảnh

Phòng khám giữ tiền ở 2 nơi: quầy (cash/wallet) và ngân hàng (bank). Mỗi ngày phải chốt quỹ để biết: tiền thực tế đang giữ là bao nhiêu, lệch với hóa đơn bao nhiêu, có chi phí nào phát sinh không. Đây là bảo vệ tài chính cơ bản (CI-04).

Diễn viên & quyền cần

Vai tròQuyền cầnNhiệm vụ
Lễ tâncash.read, cash.manageMở cash session, kiểm tra payment hôm nay, ghi chi phí
Kế toáncash.manage, cash.export, payment.readĐối soát số liệu, export báo cáo, confirm close
Clinic Admincash.manageApprove close nếu số liệu lệch, reopen period nếu cần fix

Quy trình từng bước

  1. Mở Cash Session (sáng):
    • Lễ tân vào Menu → Cash Management → "Mở phiên làm việc mới"
    • Nhập "Opening balance" (tiền quầy lúc bắt đầu hôm nay), chọn branch
    • Lưu → session trở thành "OPEN"
  2. Ngày làm việc:
    • Lễ tân ghi nhận payment từ BN bình thường (Payment module)
    • Mỗi payment được ghi vào cash ledger tự động (nếu method = cash/bank)
    • Các giao dịch khác: chi phí, nạp tiền, transfer giữa cash ↔ bank đều ghi nhận ngay
  3. Trước khi close (chiều/tối):
    • Kế toán vào Cash Management → tab "Cash Ledger" hoặc "Reconciliation"
    • Xem tổng payment hôm nay (expected balance = opening + payment in − payment out)
    • Kiểm tra tab "Receipts issued" → xem tất cả phiếu thu phát hành hôm nay, confirm mỗi phiếu match 1 payment
  4. Ghi expense (nếu có):
    • Kế toán click "Ghi chi phí" → nhập: loại chi (supplies, transport, repair...), số tiền, ghi chú
    • Lưu → expense được ghi vào ledger, expected balance giảm
  5. Kiểm tra balance:
    • Đếm tiền mặt ở quầy → so với "Expected balance" trên màn hình
    • Nếu khớp: "Balanced" ✓
    • Nếu lệch: kiểm tra payment ghi nhận, receipt, hoặc expense xem sai chỗ nào
  6. Close Cash Session:
    • Nhập "Closing balance" (tiền thực tế đếm được)
    • Hệ thống so sánh: expected vs actual → hiển thị "Difference"
    • Nếu difference = 0 → click "Confirm Close" → session trở "CLOSED", period lock
    • Nếu difference > 0 → investigate trước (xem "Variance report")
  7. Print báo cáo:
    • Từ closed session → nút "In báo cáo" → PDF gồm: opening balance, payment in/out, expense, closing balance, variance (if any)
    • Lưu file hoặc in giấy lưu hồ sơ

Kết quả mong đợi

  • Cash session mỗi ngày tạo 1 period lock → không edit payment/expense cũ sau khi close
  • Balance khớp → team tin tưởng số liệu tài chính
  • Nếu có lệch: variance được ghi audit → giúp trace nguyên nhân (sơ suất, mất tiền, ghi nhầm)
  • Payment không bị double-count với cash balance: payment = thanh toán BN ghi, cash = quỹ giữ (CI-04)
  • Báo cáo hỗ trợ kế toán bộ đối soát với bank statement

Khi nào hỏng & cách xử lý

Vấn đềNguyên nhânCách checkCách fix
Balance lệch hơn 100kThường do: ghi nhầm số tiền, quên ghi payment nào đó, hoặc expense chưa ghiXem Cash Ledger detail, filter hôm nay, xem từng entryTìm entry sai → edit (nếu chưa close) hoặc ghi "Adjustment" entry để cân bằng
Không thể close session — lệch quá 5%Có thể do ghi sai payment hoặc cash withdrawal chưa ghiXem "Variance report" chi tiết, so sánh receipt vs payment entryReopen session (Admin permission), fix entry, đóng lại
Receipt số X không có payment tương ứngLễ tân in receipt nhưng BN rút tiền lại, hoặc ghi nhầmMở receipt detail, kiểm tra trạng thái (issued / voided), xem linked paymentNếu receipt sai, void nó. Nếu payment thực tế nhưng entry chưa ghi, tạo entry mới
Session không mở được buổi sángSession hôm qua chưa close, hoặc cơ sở dữ liệu lỗiKiểm tra Cash Management → "Sessions", filter hôm quaClose session hôm qua (hoặc reopen nếu cần sửa). Rồi mở session mới

Dấu vết để lại (audit & branch ownership)

Branch scope (CI-01, CI-03): Cash session thuộc 1 branch duy nhất. Nếu phòng khám có nhiều chi nhánh, mỗi nhánh có session riêng. Active UI branch không thay đổi session ownership.

Audit trail:

  • Session open log: opening balance, time, actor, branch
  • Per entry: payment / expense in/out, time, method, actor, amount, note
  • Session close log: closing balance, variance, time, actor, approval
  • Edit/void log (nếu reopen và fix): old value → new value, actor, reason
Cash vs Payment (CI-04)

Dễ nhầm: Payment = tiền BN nộp (ghi thanh toán charge). Cash = tiền quầy phòng khám đang giữ. Chúng là 2 hệ thống khác nhau. Payment tăng không tự động cộng cash — phải đi qua cash ledger để ghi nhận. Đó là bảo vệ để tránh double-count.