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 scan barcode 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.
- ==> 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à
- => 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... (xử lý tương tự TH2).
- => Trường hợp 4: Kiện
Mới tạo,Đã đến nơi(kiện tự do).- ==> Tạo bảng kê vận chuyển mới (note Bảng kê lạc tuyến)...
- => Trường hợp 5: Kiện
Đang bị Sự cố.- ==> Giữ nguyên trạng thái sự cố. Tạo bảng kê vận chuyển mới để ghi nhận hành trình...
- => Trường hợp 1: Kiện
- 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ê.
-
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ý: Nhập kho hàng đến theo kiện

Component File Path Mô tả View Template cod/bill-confirm/views/scripts/confirm/bill-package-confirm-arrival.phtml Giao diện nhập kho Frontend JS cod/bill-confirm/views/assets/confirm/bill-package-confirm-arrival.js Xử lý client-side scan và hiển thị UI Backend Controller cod/bill-confirm/controllers/ConfirmController.php Action: ajaxScanBarcodeBillPackageConfirmArrivalAction
Xử lý logic scan barcode
- Schema
Xử lý kiện có bảng kê đang giao hàng
STEP 1: Tìm bảng kê đang giao hàng của kiện
Chiến lược: Sử dụng UNION ALL để quét dữ liệu từ 2 nguồn (Giao nội bộ & Giao qua đối tác/phiên).
- Nguồn 1: Bảng kê nội bộ giao hàng
- Bảng:
express_bill_assign_detail - Điều kiện:
bill_assign_detail_bill_package_id= {ID Kiện}bill_assign_detail_statusIN ('ASSIGNED','SHIPPER_CONFIRMED')
- Join:
express_voucher_business_statement_detail- On:
data_id=bill_assign_detail_idANDtype='DEFAULT'
- On:
- Bảng:
- Nguồn 2: Bảng kê phiên giao hàng (Session)
- Bảng:
express_transport_detail_bill_package - Điều kiện:
detail_bill_package_bill_package_id= {ID Kiện}detail_bill_package_is_deleteIS NULL
- Join:
express_transport_session- On:
session_id=transport_session_idANDsession_type='DELIVERY'
- On:
- Bảng:
STEP 2: Hủy kiện trong bảng kê giao hiện tại
- Hành động:
UPDATE - Bảng:
express_transport_detail_bill_package - Giá trị (SET):
detail_bill_package_is_delete= 1detail_bill_package_note="Hủy do hàng lạc tuyến"detail_bill_package_update_time=NOW()
STEP 3: Tạo bảng kê vận chuyển mới (Lạc tuyến)
- Hành động:
INSERT - Bảng:
express_transport - Giá trị (VALUES):
confirm_from_agency_id= {VP hiện tại của kiện}confirm_to_agency_id= {VP đang nhập kho - VP Login}confirm_status='CONFIRM_ARRIVAL'confirm_is_misrouted_cargo=1(cờ nhận biết bảng kê lạc tuyến)confirm_note="Bảng kê lạc tuyến"confirm_arrival_time=NOW()
STEP 4: Thêm kiện vào bảng kê mới
- Hành động:
INSERT - Bảng:
express_transport_detail_bill_package - Giá trị (VALUES):
detail_transport_id= {ID bảng kê vừa tạo ở Step 3}detail_bill_package_id= {bill_package_id}detail_bill_package_arrival_time=NOW()detail_bill_package_note="Nhập kho lạc tuyến từ VP..."
STEP 5: Cập nhật trạng thái kiện
- Hành động:
UPDATE - Bảng:
express_bill_package - Giá trị (SET):
current_agency_id= {VP đang nhập kho - VP Login}bill_package_status='CONFIRM_ARRIVAL'