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
FLOW SCAN BARCODE
Xử lý kiện có bảng kê đang giao hàng
1: Tìm bảng kê đang giao hàng của kiện
Sử dụng UNION ALL để quét dữ liệu từ 2 nguồn (Giao nội bộ & Giao qua đối tác/Ncc).
- 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:
2: Hủy kiện trong bảng kê đang giao
LOGIC HỦY GIAO HÀNG NỘI BỘ
-
Bước 1: Hủy điều phối shipper
- Hành động:
UPDATE - Bảng:
express_bill_assign_detail - Giá trị (SET):
bill_assign_detail_status= 'DELETED'bill_assign_detail_note= 'Hủy do lạc tuyến'bill_assign_detail_cancel_time= NOW()bill_assign_detail_cancel_account_id= tài khoản loginbill_assign_detail_is_delete_misrouted_cargo= 1
-
Bước 2: Hủy chi tiết bảng kê giao
- Hành đồng:
UPDATE - Bảng:
express_voucher_business_statement_detail - Giá trị (SET):
voucher_business_statement_detail_status= 'FAILED'voucher_business_statement_detail_note= 'Hủy do hàng lạc tuyến'voucher_business_statement_detail_delete_account_id= tài khoản loginvoucher_business_statement_detail_delete_time= NOW()voucher_business_statement_detail_is_delete_misrouted_cargo= 1
-
Bước 3: Kiểm tra & cập nhật bảng kê giao
- Điều kiện: COUNT(
express_voucher_business_statement_detail) == 0 - Hành động:
UPDATE - Bảng:
express_voucher_business_statement - Giá trị (SET):
voucher_business_statement_delete_time= NOW()voucher_business_statement_delete_account_id= tài khoản loginvoucher_business_statement_delete_reason= 'Hủy do lạc tuyến'
LOGIC HỦY GIAO HÀNG NCC
-
Bước 1: Hủy chi tiết bảng kê
- Hành động:
UPDATE - Bảng:
express_transport_detail_bill_package - Giá trị (SET):
detail_bill_package_is_delete= 1detail_bill_package_is_delete_misrouted_cargo= 1
-
Bước 2: Cập nhật kê NCC giao hàng
- Hành động:
UPDATE - Bảng:
express_transport_session - Điều kiện: COUNT(
express_transport_detail_bill_package) +detail_bill_package_transport_session_idis NULL == 0 - Giá trị (SET):
session_is_delete_misrouted_cargo= 1session_note= 'Hủy do lạc tuyến'
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()- các filed khác tự thêm vào khi code....
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 ở mục 3}detail_bill_package_transport_id= {bill_package_id}detail_bill_package_arrival_time= NOW()detail_bill_package_arrival_time_system= NOW()detail_bill_package_arrival_note= 'Nhập kho lạc tuyến từ VP...'detail_bill_package_arrival_account_id= tài khoản login
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'
Xử lý kiện có bảng kê đang giao hàng
1. Tìm bảng kê đang vận chuyển
Query để tìm kiếm trong bảng express_transport
- Nguồn: Bảng kê khai thác nội bộ/Ncc
- 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- On:
confirm_go_bill_id=detail_bill_package_transport_idANDconfirm_status='CONFIRM_GO'
- On:
- Bảng
2. Hủy kiện trong bảng kê đang vận chuyển
Loigc hủy kiện trong bảng kê vận chuyển nội bộ
-
Bước 1: Hủy chi tiết bảng kê
- Hành động:
UPDATE - Bảng:
express_transport_detail_bill_package - Giá trị (SET):
detail_bill_package_is_delete= 1detail_bill_package_is_delete_misrouted_cargo= 1
-
Bước 2: Cập nhật bảng kê vận chuyển
- Hành động:
UPDATE - Bảng:
express_transport - Điều kiện: COUNT(
express_transport_detail_bill_package) == 0 ANDdetail_bill_package_is_deleteis NULL - Giá trị (SET):
confirm_status= 'TROUBLE'
Loigc hủy kiện trong bảng kê vận khai thác
-
Bước 1: Hủy chi tiết bảng kê
- Hành động:
UPDATE - Bảng:
express_transport_detail_bill_package - Giá trị (SET):
detail_bill_package_is_delete= 1detail_bill_package_is_delete_misrouted_cargo= 1
-
Bước 2: Cập nhật bảng kê NCC vận chuyển
- Hành động:
UPDATE - Bảng:
express_transport_session - Điều kiện: COUNT(
express_transport_detail_bill_package) == 0 ANDdetail_bill_package_is_deleteis NULL - Giá trị (SET):
session_is_delete_misrouted_cargo= 1session_note= 'Hủy do lạc tuyến'
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 ở mục 3}detail_bill_package_transport_id= {bill_package_id}detail_bill_package_arrival_time= NOW()detail_bill_package_arrival_time_system= NOW()detail_bill_package_arrival_note= 'Nhập kho lạc tuyến từ VP...'detail_bill_package_arrival_account_id= tài khoản login
5: Cập nhật trạng thái kiện
- Hành động:
UPDATE - Bảng:
express_bill_package - Giá trị (SET):
bill_package_current_agency_id= {VP đang nhập kho - VP Login}bill_package_status='CONFIRM_ARRIVAL'
LƯU Ý ĐẶC BIỆT CHO KIỆN CÓ TRẠNG THÁI SỰ CỐ (bill_package_status = TROUBLE)
GIỮ NGUYÊN TRẠNG THÁI SỰ CỐ CỦA BILL VÀ KIỆN.
LƯU Ý KHI TẠO BẢNG KÊ VẬN CHUYỂN MỚI.
LUÔN NHÓM CÁC KIỆN CÓ CÙNG VĂN PHÒNG HIỆN TẠI VÀO CÙNG 1 BẢNG KÊ VẬN CHUYỂN.bill_package_current_agency_id - VP hiện tại

