Skip to main content

Xử lý hàng lạc tuyến

  1. 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).
  2. Ý 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: 

      image.png

    • 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`. 
      • =====> 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)

  3. 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

        image.png



          • ChoChỉnh phésửa chức năng **scan barcode** để xử lý trường hợp lấy**hàng ralạc tuyế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


            • 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 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 CASE
                CASE 0: Kiện Không Tồn Tại
                barcode`.
                • Controller: soft/application/sites/cod/bill-confirm/controllers/ConfirmController.php
                • Action:
                kiện
                Mục
                Chi tiết
                Điều kiện
                Không tìm thấy trong `express_bill_package`
                Hành động
                Báo lỗi
                Response
                `STATUS: ERROR`, `message: "Kiện không tồn tại trên hệ thốngng"`
                khi
                `scan
                ajaxScanBarcodeBillPackageConfirmArrivalAction :
                action
                xử lý chức năng scanbarcode.
                UI
              • Trạng
              • thái
                của
                `bill_package_status`
              • TH1, kiện `Không tồn tại trong hệ thống` hoặc `Hoàn tấ
                Phát giao`(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ại
                Mục
                Chi tiết
                Điều kiện
                bill_package_current_agency_id = VP đang giaologin
                tại
                Bưu
                cục)
              • TH3,
                kiện
                Hành động
              • Cảnh báo
                Response
                `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ế
                "`
                UI
                Phát âm thanh cảnh báo, hiển thị toast warning với thông tin kiện
                CASE 2: Kiện Đã Hoàn Tất Giao
                Mục
                Chi tiết
                Điều kháckiện
                `bill_package_status = 'COMPLETED'`
                Hành động
                Báo lỗi
                Response
                `STATUS: ERROR`, `message: "Kiện phòđã hoàn tất giao, không thể nhập khokho"`
                UI
                Phát âm thanh lỗi `/audio/no.mp3`, hiển thị toast error
                CASE 4: Kiện có trạng thái Đang Giao | Mới tạo | Đã đến nơi| Sự cố
                Mục
                Chi tiết
                Điều kiện
                bill_package_status => 'CONFIRM_GO_DELIVERY', 
                Hành động
                Lấy
                Response
                `STATUS: ERROR`, `message: "Kiện đã hoàn tất giao, không lạcthể tuyến`.nhập kho"`
                UI
                Phá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`