# COD Detective

> Đối chiếu 2 file Excel đơn hàng và đối soát của hãng vận chuyển, kết án số tiền COD hãng đang giữ của bạn — xuất hồ sơ khiếu nại một chạm.

Trình hai tấm giấy — file đơn hàng và bảng đối soát của hãng — rồi thám tử tự dò từng mã vận đơn: mã nào hãng đã thu tiền nhưng chưa trả, trả thiếu bao nhiêu, phí nào cao bất thường. Kết án dập xuống thành một con số tiền thiếu, kèm bằng chứng từng đơn và hồ sơ khiếu nại xuất một cú bấm.

## Vấn đề giải quyết

Chủ shop đối chiếu file đơn hàng với bảng đối soát của hãng vận chuyển bằng VLOOKUP tay: hàng nghìn dòng, mã viết lệch hoa/thường, trạng thái viết mỗi hãng một kiểu — nên tiền COD hãng thu hộ rồi giữ lại thường lọt qua mắt, vài trăm nghìn đến vài triệu mất im lặng mỗi kỳ đối soát.

## Cách tính

- Đọc file ngay trong trình duyệt (SheetJS), không gửi đi đâu: tự chọn sheet có nhiều dòng nhất, quét 12 dòng đầu tìm dòng header thật (dòng có ≥2 cột giống từ khóa mã/COD/phí/trạng thái — để không nhầm banner ngày kỳ đối soát), rồi chấm điểm từng tiêu đề cột theo bảng từ đồng nghĩa tiếng Việt bỏ dấu («mã vận đơn», «tiền COD thực nhận», «tổng phi van chuyen», «trang thai giao hang»…): khớp từ khóa trước cộng điểm, từ khóa loại trừ (khách hàng, phi…) trừ điểm, khớp chính xác cộng thêm; mã vận đơn là cột bắt buộc, thiếu cột COD hoặc mã yếu là hạ độ tin cậy và app mời chỉnh tay.
- Chuẩn hóa mã vận đơn bỏ hoa/thường, khoảng trắng thừa trước khi dò; số tiền đọc cả hai quy ước 1.234.567 (kiểu VN) và 1,234,567 (kiểu Anh), chữ ₫/đ/VND bỏ qua; trạng thái giao hàng quy về delivered (thành công, đã giao…) và returned (chuyển hoàn, hủy, thất lạc…).
- Mỗi đơn hãng trả công theo 3 lớp, ưu tiên từ trên xuống: (1) đơn hoàn/hủy chưa thu tiền không tính vào tiền thiếu — tách riêng ghi chú thay vì kết án oan; (2) đã giao nhưng hãng ghi nhận chưa thu/ô trống ⇒ «Chưa trả» đủ giá trị COD dự kiến; (3) còn lại so COD dự kiến với thực nhận trong dung sai max(1.000₫, 0,5%) ⇒ Đúng, lệch dưới là Trả thiếu, lệch trên là Trả thừa.
- Phí ship bị khoanh «Phí bất thường» theo 2 đường: vượt phí dự kiến quá max(3.000₫, 10%), hoặc khi file không khai phí dự kiến thì so với mặt bằng chung của cả kỳ — median phí + max(15.000₫, 6×MAD), thống kê bền vì phí vận chuyển lệch nhiều hơn mean/std.
- Mã có ở file hãng nhưng không có trong đơn hàng được tách thành «Mã lạ phía hãng» thay vì im lặng bỏ sót; số điểm tin cậy nhận diện cột hiển thị ở bảng kết quả và mọi khối kết quả là DOM text, không canvas.

## Ví dụ

- **Hãng trả thiếu so với dự kiến**: File đơn hàng: mã VTP983120250, COD dự kiến 450.000₫, phí 28.000₫. File đối soát: cùng mã, COD thực nhận 300.000₫. → Kết luận «Trả thiếu 150.000₫ — dự kiến 450.000₫, thực nhận 300.000₫», gom vào nhóm Đáng khiếu nại và vào tổng tiền thiếu.
- **Đã giao nhưng chưa trả COD**: File đơn hàng: mã VTP983120300, COD dự kiến 850.000₫. File đối soát: trạng thái «Giao hàng thành công», ô COD thực nhận để 0. → Kết luận «Hãng ghi nhận đã giao nhưng chưa trả COD 850.000₫» — khoản này là phần lớn nhất trong con số kết án 1.744.000₫ của ca mẫu.
- **Phí vượt mặt bằng chung**: File đối soát: mã VTP983120350, tổng cước 185.000₫, trong khi file đơn khai phí dự kiến 32.000₫. → Kết luận «Phí vượt dự kiến 153.000₫» — kể cả khi file không khai phí dự kiến, cước 185.000₫ vẫn bị khoanh vì vượt median kỳ đối soát quá 15.000₫.

## Nguồn tham khảo

- Bộ ca mẫu đi kèm app
  - Nút «CHƯA CÓ FILE? XEM VỤ ÁN MẪU» nạp 2 file demo 38 đơn (don-hang-nha-mua-demo.xlsx + doi-soat-viettel-demo.xlsx); hoặc tải file mẫu trong public/samples — toàn bộ ví dụ trên là kết quả thật của chính pipeline này.

## Tool liên quan

- [Excel Import Doctor](https://xongngay.vn/excel-import-doctor) — Sửa file Excel lộn xộn trước khi nhập MISA/Sapo/KiotViet.
- [Bank Match](https://xongngay.vn/bank-match) — Đối chiếu sao kê ngân hàng với sổ Excel, xếp bài tự khớp.

Source: https://xongngay.vn/cod-detective
