Xử lý hàng lạc tuyến
-
Vấn đề
- Trong quá trình vận chuyển, tài xế lấy nhầm kiện hàng. Ví dụ: hàng ở bưu cục A khai thác sang B nhưng tài xế lại chở đến bưc cục C (hàng lạc tuyến)
- Hiện tại, khi hàng đến bưu cục/kho đích, hệ thống không cho phép nhập kho các kiện hàng này, gây khó khăn cho việc xử lý.
- Bổ sung tính năng cho phép Tài xế/User tại Bưu cục/điểm đích được phép scan và nhập kho các kiện hàng lạc tuyến để tiếp tục quy trình xử lý (trả về hoặc chuyển tiếp).
-
Ý tưởng và giải pháp
- Tại Màn hình nhập kho hàng đến theo kiện, cho phép Tài xế scan mã bill/kiện bị lạc tuyến và xử lý nhập kho cho kiện bị lạc tuyến.
- Flow ý tưởng:
- Khi scanbarcode xảy ra các tình huống sau:
-
- Kiện không tồn tại trên hệ thống => Báo lỗi
-
- Kiện đang ở đúng Bưu cục/Văn phòng hiện tại nhập kho => Cảnh báo và không xử lý.
-
- Kiện không ở Bưu cục/Văn phòng hiện tại nhập kho:
- => Trường hợp 1: Kiện `Đã hoàn tất giao`.
- ==> Báo lỗi.
- => Trường hợp 2: Kiện `Đang giao`.
- ==> Hủy kiện trong bảng kê giao (note Hủy do hàng lạc tuyến). Tạo bảng kê vận chuyển mới (note Bảng kê lạc tuyến) -> lấy văn phòng xuất là văn phòng hiện tại của kiện, văn phòng đến là văn phòng hiện tại nhập kho -> Đánh trạng thái bảng kê là `Đã đến nơi`.
- => Trường hợp 3: Kiện `Đang vận chuyển`.
- ==> Hủy kiện trong bảng kê vận chuyển (note Hủy do hàng lạc tuyến). Tạo bảng kê vận chuyển mới (note Bảng kê lạc tuyến) -> lấy văn phòng xuất là văn phòng hiện tại của kiện, văn phòng đến là văn phòng hiện tại nhập kho -> Đánh trạng thái bảng kê là `Đã đến nơi`.
- => Trường hợp 4: Kiện `Mới tạo, Đã đến nơi` (kiện không có bảng kê đang vận chuyển/ đang giao).
- ==> Tạo bảng kê vận chuyển mới (note Bảng kê lạc tuyến) -> lấy văn phòng xuất là văn phòng hiện tại của kiện, văn phòng đến là văn phòng hiện tại nhập kho -> Đánh trạng thái bảng kê là `Đã đến nơi`.
- => Trường hợp 5: Kiện `Đang bị Sự cố`.
- ==> Giữ nguyên trạng thái sự cố của bill, kiện. Tạo bảng kê vận chuyển mới (note Bảng kê lạc tuyến) -> lấy văn phòng xuất là văn phòng hiện tại của kiện, văn phòng đến là văn phòng hiện tại nhập kho -> Đánh trạng thái bảng kê là `Đã đến nơi`.
- ==> Giữ nguyên trạng thái sự cố của bill, kiện. Tạo bảng kê vận chuyển mới (note Bảng kê lạc tuyến) -> lấy văn phòng xuất là văn phòng hiện tại của kiện, văn phòng đến là văn phòng hiện tại nhập kho -> Đánh trạng thái bảng kê là `Đã đến nơi`.
- => Trường hợp 1: Kiện `Đã hoàn tất giao`.
-
=====> Lưu ý: Khi tạo bảng kê vận chuyển mới cho các kiện lạc tuyến --> Nhóm(Gộp) các kiện lạc tuyến có cùng văn phòng hiện tại vào cùng 1 bảng kê vận chuyển (đánh dấu là bảng kê lạc tuyến)
-
- Tại Màn hình nhập kho hàng đến theo kiện, cho phép Tài xế scan mã bill/kiện bị lạc tuyến và xử lý nhập kho cho kiện bị lạc tuyến.
-
Giải pháp kỹ thuật
- Schema
- express_bill (thông tin đơn hàng)
- express_bill_package (thông tin kiện hàng)
- express_transport (Bảng kê vận chuyển)
- express_transport_detail_bill_package (Chi tiết bảng kê vận chuyển)
- express_transport_session (Bảng kê NCC giao hàng)
- express_voucher_business_statement (Bảng kê nội bộ giao hàng)
- express_voucher_business_statement_detail (Chi tiết bảng kê nội bộ giao hàng)
- Màn hình xử lý
- Màn hình Nhập kho hàng đến theo kiện {my_domain}/cod/bill-confirm/confirm/bill-package-confirm-arrival
ChoChỉnhphésửa chức năng **scan barcode** để xử lý trường hợplấy**hàngralạccátuyến**-
ComponentFile PathMô tảView Templatecod/bill-confirm/views/scripts/confirm/bill-package-confirm-arrival.phtml
Giao diện nhập kho Frontend JScod/bill-confirm/views/assets/confirm/bill-package-confirm-arrival.jsXử lý client-side scan và hiển thị UIBackend Controllercod/bill-confirm/controllers/ConfirmController.phpAction:ajaxScanBarcodeBillPackageConfirmArrivalAction.xử lý logic scan barcode -
Flow Scan Barcode hiện tại:
[User Scan Barcode]
↓
[Frontend: onScanBarcode()]
↓
[AJAX Request: POST_SCAN_BARCODE]
↓
[Backend: ajaxScanBarcodeBillPackageConfirmArrivalAction()]
↓
[Query: Tìm kiện trong bảng kê có VP đến = VP đang login]
↓
[Return: Danh sách kiện + thông tin bảng kê]
↓
[Frontend: Hiển thị kiện vào bảng nhập kho]
-
Logic Hiện Tại (Controller):- Tìm kiện trong bảng kê có `confirm_to_agency_id = VP của user đang đăng nhập`- Lọc chi tiết bảng kê chưa xác nhận hàng đến (`detail_bill_package_arrival_time IS NULL`)- Lọc kiện
hàchưa huỷ, chưa xoá- Loại bảng kê: `AXIS` (Khai thác NCC), `INTERNAL` (Khái thác nội bộ). -
YÊU CẦU MỚI: XỬ LÝ HÀNG LẠC TUYẾN.
-
Định nghĩa Hàng Lạc Tuyến.- Kiện **không có bảng kê vận chuyển** đến VP nhập kho, HOẶC- Kiện đang thuộc bảng kê vận chuyển đến VP khác.
-
Xử Lý Scan Barcode.
-
ĐẶC TẢ CHI TIẾT TỪNG CASECASE 0: Kiện Không Tồn TạiMụcChi tiếtĐiều kiệnKhông tìm thấy trong `express_bill_package`Hành độngBáo lỗiResponse`STATUS: ERROR`, `message: "Kiện không tồn tại trên hệ thố
ngng"`khi`scanbarcode`.Controller: soft/application/sites/cod/bill-confirm/controllers/ConfirmController.phpAction:ajaxScanBarcodeBillPackageConfirmArrivalAction:actionxử lý chức năng scanbarcode.UITrạngtháicủakiện`bill_package_status`TH1, kiện `Không tồn tại trong hệ thống` hoặc `Hoàn tấPhátgiao`(COMPLETED)âm=> Báo lỗi.TH2, kiện `Đang giao`(DELIVERY)-> sai bưu cục (hợp lệ cho phép scan)-> đúng bưu cục (báothanh lỗi `/audio/no.mp3`, hiển thị toast error
CASE 1: Kiện Đang Ở Đúng VP Hiện TạiMụcChi tiếtĐiều kiệnbill_package_current_agency_id = VP đanggiaologintạiBưucục)TH3,kiệnHành độngCảnh báoResponse`STATUS: WARNING`, `Đangmessage:vận"chuyển`"`(CONFIRM_GO)-> sai bưu cục (hợp lệ cho phép scan)-> đúng bưu cục ()
TH4, kiện `Đã nhập kho` (ARRIVAL)-> sai bưu cục (hợp lệ cho phép scan)-> đúng bưu cục (báo lỗi kiệKiện đãnhập kho)TH5, kiện `Có sự cố` (TROUBLE)Kiểm tra các kiện có bị lạc tuyến không khi `Nhập kho hàng đến`.TH1: Kiện có bảng kê đang vận chuyển -> kiểm tra văn phòng đến của bảng kê nếu khác văn phòng nhập kho => `Hàng lạc tuyến`.TH2: Kiện có bảng kê xuất kho giao -> kiểm tra văn giao của bảng kê nếu khác văn phòng nhập kho => `Hàng lạc tuyến`.TH3: Kiện không có bảng kê đang vận chuyển/ đang giao hàng -> Kiểm traở văn phòng hiện tại
nế
UIPhát âm thanh cảnh báo, hiển thị toast warning với thông tin kiệnCASE 2: Kiện Đã Hoàn Tất Giao
CASE 4: Kiện có trạng thái Đang Giao | Mới tạo | Đã đến nơi| Sự cốMụcChi tiếtĐiềukháckiệnvă`bill_package_status = 'COMPLETED'`Hành độngBáo lỗiResponse`STATUS: ERROR`, `message: "Kiệnphòđã hoàn tất giao, không thể nhậpkhokho"`UIPhát âm thanh lỗi `/audio/no.mp3`, hiển thị toast errorMụcChi tiếtĐiều kiệnbill_package_status =>'CONFIRM_GO_DELIVERY',Hành độngLấyResponse`STATUS: ERROR`, `Hàmessage: "Kiện đã hoàn tất giao, khônglạcthểtuyến`.nhập kho"`UIPhát âm thành công `/audio/yes.mp3`, hiển thị toast success
-
Xửlý nhập kho các kiện hàng lạc tuyến.Kiện có bảng kê đang vận chuyển/ bảng kê xuất kho giao-> Hủy kiện trong bảng kê hiện tại + ghi chú `Hủy do lạc tuyến` khi hủy.
Kiện không có bảng kê đang vận chuyển/ bảng kê giao.-> Tiến hành nhập kho luôn.
=> Sau khi kiểm tra và hủy bảng kê => Gộp những kiện có cùng VP hiện tại Tạo ra bảng kê vận chuyển mới (đánh dấu là Bảng kê lạc tuyến).=> Cho Văn phòng đi của Bảng kê là Văn phòng hiện tại của kiện (`bill_package_current_agency_id`) và Văn phòng đến là Văn phòng nhập kho.=> Cho trạng thái của bảng kê là `Hàng đã đến` `confirm_status = CONFIRM_ARRIVAL`
-
- Màn hình Nhập kho hàng đến theo kiện {my_domain}/cod/bill-confirm/confirm/bill-package-confirm-arrival
- Schema

