Finance — Case thường gặp
Invoice không hiện đúng trong manager
Kiểm tra theo thứ tự: invoice gốc còn active không, lock/processing state có đang chặn không, finance transaction projection đã refresh chưa, và search key/booking number sync có bị stale không.
Ví dụ thực tế: Kế toán tìm hóa đơn theo booking number nhưng manager không hiện. → Khoanh vùng do dữ liệu hay do projection chưa refresh. → Record gốc đúng nhưng projection stale → chạy reconcile thay vì sửa invoice.
Edit booking đã confirm làm thay đổi tiền
Luồng đúng là preview diff trước, sau đó confirm mới persist invoice/credit-note thật. Preview không được tạo scheduler, finance log hoặc credit note thật.
Ví dụ thực tế: Admin thêm 2 buổi vào booking đã confirm, cần báo phụ huynh phải trả thêm. → Cho xem chênh lệch tiền trước khi chốt. → Preview hiện diff (không ghi sổ); chỉ khi Confirm mới tạo invoice/credit-note thật.
Credit note không match invoice
Đối chiếu original invoice link, allocation, attendee/header sync và booking number. Nếu projection sai nhưng record gốc đúng, xử lý như projection refresh/reconcile.
Ví dụ thực tế: Hủy 1 booking, credit note hiện số tiền lệch với invoice gốc. → Xác định lệch thật hay chỉ projection. → Allocation + original invoice link khớp → reconcile projection, không chỉnh tay credit note.
Payment đã thu nhưng invoice chưa cập nhật
Phân biệt Payment domain và Finance domain: provider transaction có thể đã paid, nhưng invoice/projection cần job hoặc event cập nhật trạng thái. Đọc cả payment record, invoice status và scheduler/error.
Ví dụ thực tế: Phụ huynh đã trả PayNow, biên lai báo thành công, nhưng invoice vẫn "unpaid". → Phân biệt tiền đã vào (Payment) với sổ chưa cập nhật (Finance). → Provider paid nhưng event/job chưa chạy → kiểm tra scheduler/error, không thu lại tiền.
Xero sync lỗi
Xác định lỗi nằm ở cấu hình provider, mapping account/tax, dữ liệu invoice/credit-note hay retry state. Không sửa invoice gốc chỉ để “làm Xero pass” nếu chứng từ AIMY đang đúng.
Ví dụ thực tế: Một hóa đơn không đẩy được sang Xero do tax code chưa map. → Sửa cấu hình mapping chứ không bóp méo chứng từ. → Map account/tax đúng rồi retry sync; giữ nguyên invoice gốc của AIMY.