🏠 Trang chủ Hướng dẫn sử dụng Giao hàng
🚚 Hướng dẫn chi tiết

Quản lý Giao hàng

Hướng dẫn tạo phiếu giao hàng theo PO & bản vẽ, xác nhận giao hàng có chữ ký và ảnh chứng từ, báo cáo sự cố phát sinh khi giao hàng.

🔗 Đi đến
📋 Tổng quan — Module Giao hàng

Module Giao hàng quản lý toàn bộ vòng đời của một phiếu giao hàng: từ lúc tạo phiếu theo đơn hàng (PO)bản vẽ, đến khi xác nhận đã giao thành công (kèm chữ ký người nhận và ảnh/PDF chứng từ), và ghi nhận các sự cố phát sinh trong quá trình giao hàng (hàng hỏng, thiếu hàng, trễ giao...).

👤 Chọn khách hàng
📑 Chọn PO & Bản vẽ
📄 Tạo phiếu giao hàng
✅ Xác nhận giao hàng
⚠️ Báo cáo sự cố (nếu có)

Module gồm 4 trang chính:

📊 Quản lý giao hàng
Trang Delivery_Note_List_management.php — Xem toàn bộ phiếu giao hàng, chi tiết bản vẽ, file đính kèm, in phiếu.
➕ Tạo phiếu giao hàng
Trang create_delivery_note.php — Chọn khách hàng, PO & bản vẽ, thông tin giao hàng.
✅ Xác nhận giao hàng
Trang delivery_confirmation.php — Nhập SL thực giao, chữ ký người nhận, ảnh/PDF chứng từ.
⚠️ Sự cố giao hàng
Trang delivery_issue.php — Báo cáo hàng hỏng, thiếu hàng, sai hàng, trễ giao...
Tạo phiếu giao hàng — Các bước thực hiện

Truy cập create_delivery_note.php hoặc bấm nút + Tạo phiếu giao hàng trên trang danh sách.

  • 1
    Số phiếu
    Hệ thống tự sinh mã theo định dạng DN-YYYYMMDD-XXXX (ví dụ DN-20260729-0001). Có thể sửa tay; lưu ý hệ thống không kiểm tra trùng đối với số phiếu tự nhập.
  • 2
    Chọn khách hàng *
    Bắt buộc. Sau khi chọn, hệ thống tự tải danh sách PO (đơn hàng) của khách hàng đó qua ?ajax=po_by_customer.
  • 3
    Chọn PO liên quan & bản vẽ cần giao
    Chọn một PO trong danh sách, sau đó nhập số lượng giao thực tế cho từng bản vẽ thuộc PO. Xem chi tiết ở mục 📐 Chọn PO & Bản vẽ.
  • 4
    Ngày giao *
    Bắt buộc, mặc định là ngày hôm nay.
  • 5
    Nhân viên giao hàng
    Chọn nhân viên phụ trách giao hàng (tuỳ chọn) trong danh sách nhân viên của doanh nghiệp. Có thể để trống ("Không chỉ định").
  • 6
    Người nhận & Địa chỉ giao
    Nhập tên người nhận hàng và địa chỉ giao hàng (đều tuỳ chọn).
  • 7
    Nhập ghi chú (tuỳ chọn)
    Ghi chú thêm về phiếu giao hàng: yêu cầu đặc biệt, hướng dẫn giao, v.v.
  • 8
    Bấm "📄 Tạo phiếu giao hàng" để lưu
    Phiếu mới luôn được tạo với trạng thái ⏳ Chờ giao. Sau khi lưu thành công, hệ thống chuyển về trang danh sách và hiển thị thông báo "✅ Đã tạo phiếu giao hàng.".
⚠️
Điều kiện bắt buộcPhải chọn khách hàng, nếu không hệ thống báo lỗi "Vui lòng chọn khách hàng." và không lưu phiếu.
Mỗi PO chỉ tạo được 1 phiếu giao hàngNếu PO đã chọn từng được gắn vào một phiếu giao hàng khác trong cùng doanh nghiệp, hệ thống báo lỗi "PO này đã được tạo phiếu giao hàng trước đó. Vui lòng chọn PO khác." và chặn lưu — kể cả khi người dùng cố tình bỏ qua trạng thái khoá trên giao diện.
📑 Giải thích các trường dữ liệu
TrườngBắt buộcMô tả
Số phiếu Tự động Sinh tự động theo định dạng DN-YYYYMMDD-XXXX, có thể sửa tay (không kiểm tra trùng).
Khách hàng Bắt buộc Khách hàng nhận hàng. Quyết định danh sách PO được tải lên để chọn bản vẽ giao hàng.
PO liên quan Tuỳ chọn PO được gắn vào phiếu. Mỗi PO chỉ được phép gắn vào một phiếu giao hàng duy nhất trong doanh nghiệp.
Bản vẽ & SL giao Tuỳ chọn Danh sách bản vẽ thuộc PO kèm số lượng yêu cầu và số lượng giao thực tế, lưu vào bảng riêng delivery_note_items (không phải JSON).
Ngày giao Bắt buộc Ngày dự kiến/thực tế giao hàng. Mặc định là ngày hiện tại.
Nhân viên giao hàng Tuỳ chọn Chọn từ danh sách nhân viên của doanh nghiệp. Có thể để trống.
Người nhận Tuỳ chọn Tên người đại diện khách hàng nhận hàng.
Địa chỉ giao Tuỳ chọn Địa chỉ nơi giao hàng.
Ghi chú Tuỳ chọn Thông tin bổ sung về phiếu giao hàng.
Trạng thái Tự động Luôn khởi tạo là pending (⏳ Chờ giao) khi tạo mới; chỉ thay đổi khi xác nhận giao hàng.
Ngày tạo Tự động Hệ thống tự ghi nhận thời điểm tạo phiếu (created_at = NOW()).
📐 Chọn PO & Bản vẽ cần giao

Sau khi chọn khách hàng, khu vực "PO liên quan" hiển thị danh sách PO của khách hàng đó để chọn:

  • 1
    Chọn PO trong dropdown
    Danh sách PO tải qua ?ajax=po_by_customer. Những PO đã có phiếu giao hàng vẫn hiển thị nhưng bị khoá (disabled), gom vào nhóm riêng "⛔ PO đã tạo phiếu giao hàng" để phân biệt với PO còn chọn được.
  • 2
    Bản vẽ tự động tải theo PO
    Khi chọn PO, hệ thống tự tải danh sách bản vẽ qua ?ajax=drawings_by_po, hiển thị bảng gồm mã bản vẽ, mô tảsố lượng yêu cầu (cố định, không sửa được).
  • 3
    Nhập số lượng giao thực tế
    Ô "SL giao thực tế" cho từng bản vẽ mặc định điền sẵn bằng số lượng yêu cầu, người dùng có thể chỉnh lại cho đúng thực tế trước khi lưu phiếu.
💾
Lưu vào bảng riêngKhác với module Đóng gói (lưu JSON), danh sách bản vẽ của phiếu giao hàng được lưu thành từng dòng trong bảng delivery_note_items (drawing_id, qty_required, qty_actual), giúp truy vấn và cập nhật số lượng ở bước xác nhận giao hàng dễ dàng hơn.
Không thể tạo 2 phiếu cho cùng 1 PONếu PO đã được gắn vào một phiếu giao hàng khác, hệ thống chặn cả ở giao diện (disable trong dropdown) lẫn khi lưu ở máy chủ.
📊 Quản lý danh sách giao hàng

Trang Quản lý giao hàng (Delivery_Note_List_management.php) hiển thị toàn bộ phiếu giao hàng, mới nhất lên trước, dưới dạng bảng (Desktop) hoặc card (Mobile).

🚚 Bảng giao hàng — Desktop
#Số phiếuKhách hàngPOBản vẽNV giaoNgày giaoTrạng thái
1 DN-20260701-0001 Công ty TNHH ABC PO-2405 (2 bản vẽ) 2 bản vẽ ✅ Đủ ▾ Nguyễn Văn A 05/07/2026 ✅ Đã giao
2 DN-20260702-0002 Công ty CP XYZ PO-2406 (1 bản vẽ) 1 bản vẽ ⚠️ Thiếu 5 ▾ 06/07/2026 ⏳ Chờ giao

Cột "Bản vẽ" hiển thị một pill dạng "X bản vẽ [badge tổng hợp] ▾" — bấm vào để mở popover chi tiết từng bản vẽ (mã bản vẽ, SL yêu cầu, SL giao). Cột "File đính kèm" hiển thị các nút xem trực tiếp file bản vẽ liên quan (PDF, Ảnh, AutoCAD, SolidWorks, STEP, IGS, DXF, HTML) ngay tại chỗ, không cần mở trang khác.

👁️
Nút XemMở modal chi tiết phiếu (thông tin phiếu, thông tin giao hàng, danh sách bản vẽ theo PO) và cho phép 🖨️ In phiếu — bản in gồm chữ ký người giao hàng và người nhận hàng.
✏️
Nút SửaMở trang edit_delivery_note.php?id={id} để chỉnh sửa thông tin phiếu giao hàng.
🗑️
Nút XoáChỉ hiển thị với tài khoản Admin (role = 0). Xoá phiếu sẽ xoá luôn toàn bộ dòng bản vẽ liên quan trong delivery_note_items. Hệ thống yêu cầu xác nhận trước khi xoá và hành động này không thể hoàn tác.
🏷️ Trạng thái phiếu & Tình trạng bản vẽ

Mỗi phiếu giao hàng có một trong 4 trạng thái xử lý:

⏳ Chờ giao — Trạng thái mặc định khi vừa tạo phiếu 🚚 Đang giao — Đang trong quá trình vận chuyển ✅ Đã giao — Đã xác nhận giao thành công ❌ Thất bại — Giao không thành công

Trạng thái Đang giao / Đã giao / Thất bại chỉ được thiết lập thông qua bước ✅ Xác nhận giao hàng, không có thao tác đổi trạng thái nhanh trực tiếp trên bảng danh sách.

Riêng từng bản vẽ bên trong phiếu có tình trạng riêng, tính bằng cách so sánh số lượng yêu cầusố lượng giao (qty_actual):

Chưa giao — Chưa nhập/cập nhật số lượng giao ✅ Đủ — Giao đúng số lượng yêu cầu ⚠️ Thiếu N — Giao ít hơn yêu cầu N cái ➕ Dư N — Giao nhiều hơn yêu cầu N cái
📊
Badge tổng hợpTrên pill "X bản vẽ" ở trang danh sách, hệ thống hiển thị thêm một badge tổng hợp tính trên tổng số lượng yêu cầu và tổng số lượng giao của tất cả bản vẽ trong phiếu, giúp đánh giá nhanh tình trạng cả phiếu.
Xác nhận giao hàng

Trang Xác nhận giao hàng (delivery_confirmation.php) dùng để chốt kết quả giao hàng thực tế: số lượng đã giao, trạng thái, chữ ký người nhận và ảnh/PDF chứng từ có chữ ký. Trang mặc định hiển thị bảng toàn bộ phiếu giao hàng của doanh nghiệp kèm nút ✅ Xác nhận hoặc ✏️ Sửa.

  • 1
    Bấm "✅ Xác nhận" trên phiếu cần xử lý
    Chỉ những phiếu chưa ở trạng thái Đã giao/Thất bại mới hiện nút này; phiếu đã xác nhận hiển thị nhãn "✅ Đã xác nhận" thay vào đó (vẫn có thể bấm ✏️ Sửa để chỉnh lại).
  • 2
    Nhập số lượng thực giao
    Nếu phiếu có bản vẽ, nhập số lượng thực giao cho từng bản vẽ (mặc định điền sẵn bằng số đã lưu hoặc số yêu cầu). Nếu phiếu không gắn bản vẽ nào, nhập trực tiếp tổng số lượng giao ở ô thủ công.
  • 3
    Chọn trạng thái & thời gian xác nhận
    Chọn một trong ba: ✅ Đã giao xong, 🚚 Đang giao, ❌ Giao thất bại. Thời gian xác nhận mặc định là thời điểm hiện tại, có thể chỉnh lại.
  • 4
    Ghi chú & Chữ ký người nhận
    Ghi chú thêm về lần giao hàng và nhập tên hoặc mã người nhận hàng vào ô "Chữ ký người nhận" (dạng văn bản, không phải chữ ký số vẽ tay).
  • 5
    🖼️ Đính kèm ảnh/PDF phiếu giao hàng đã ký
    Bắt buộc chọn một file ảnh hoặc PDF làm bằng chứng giao hàng. File được lưu trực tiếp vào thư mục NAS đã cấu hình sẵn (xem mục cấu hình bên dưới) thông qua File System Access API của trình duyệt.
  • 6
    Bấm "✅ Lưu xác nhận giao hàng"
    Hệ thống cập nhật trạng thái phiếu, ghi nhận thời điểm xác nhận, và lưu thêm một dòng lịch sử trong bảng delivery_confirmations (không ghi đè lịch sử cũ).
⚠️
Bắt buộc có file chứng từNếu chưa chọn file ảnh/PDF (và không giữ lại file cũ khi sửa), hệ thống báo lỗi "Thiếu mã phiếu hoặc file chứng từ giao hàng." và không lưu.
⚙️
Cấu hình thư mục lưu trữ NAS (chỉ Admin)Bấm nút ⚙️ Cài đặt thư mục ở đầu trang, thực hiện 2 bước: (1) nhập đường dẫn thư mục trên NAS; (2) chọn đúng thư mục cuối cùng khớp với đường dẫn đã nhập để trình duyệt cấp quyền ghi. Chỉ hoạt động trên Chrome/Edge phiên bản 86 trở lên.
🔄
Thay thế file chứng từ khi sửaKhi chỉnh sửa một xác nhận đã có, bấm "🔄 Thay thế" để chọn file mới — file cũ trên NAS sẽ bị xoá tự động và thay bằng file mới.
📎
Xem lại chứng từỞ bảng danh sách, cột "File phiếu giao hàng (đã xác nhận)" hiển thị nút xem trực tiếp ảnh/PDF chứng từ mà không cần tải về.
⚠️ Báo cáo sự cố giao hàng

Trang Sự cố giao hàng (delivery_issue.php) dùng để ghi nhận các vấn đề phát sinh trong quá trình giao hàng, gắn với một phiếu giao hàng cụ thể.

  • 1
    Chọn phiếu giao hàng *
    Bắt buộc — chọn trong danh sách 100 phiếu giao hàng gần nhất của doanh nghiệp.
  • 2
    Chọn loại sự cố
    Một trong 5 loại: 💥 Hàng hỏng, 📦 Thiếu hàng, ❓ Sai hàng, ⏰ Trễ giao, 📋 Khác.
  • 3
    Mô tả sự cố *
    Bắt buộc — mô tả chi tiết sự cố xảy ra.
  • 4
    Hành động đã xử lý (tuỳ chọn)
    Ghi lại cách đã xử lý sự cố, nếu có.
  • 5
    Bấm "⚠️ Báo cáo sự cố" để lưu
    Sự cố mới luôn được lưu với trạng thái 🔴 Mở.

Trạng thái xử lý sự cố gồm 3 mức: 🔴 Mở 🟡 Đang XL ✅ Đã giải quyết.

ℹ️
Chưa có chức năng cập nhật trạng thái trên giao diệnHiện trang chỉ hỗ trợ tạo mới (mặc định "Mở") và xoá (chỉ Admin); chưa có form để chuyển sự cố sang "Đang xử lý" hoặc "Đã giải quyết" trực tiếp từ giao diện này.
🗑️
Xoá sự cốChỉ tài khoản Admin (role = 0) mới thấy nút xoá trên danh sách sự cố, có xác nhận trước khi xoá.
🔍 Lọc & Tìm kiếm

Trang Quản lý giao hàng cung cấp các tuỳ chọn lọc và tìm kiếm:

🔎
Tìm kiếm phiếuNhập số phiếu, tên khách hàng hoặc tên nhân viên giao hàng vào ô tìm kiếm ở đầu trang (tự tìm sau ~450ms ngừng gõ, không cần bấm nút).
🏷️
Lọc theo trạng tháiDropdown "Tất cả trạng thái" lọc phiếu theo: Chờ giao / Đang giao / Đã giao / Thất bại. Tự áp dụng ngay khi chọn.
🔄
Xoá bộ lọcBấm nút ↺ Tất cả để quay về danh sách đầy đủ không có bộ lọc nào.
🔐 Phân quyền người dùng

Module giao hàng áp dụng phân quyền dựa trên biến $role (system_role trong session):

Hành độngAdmin (role = 0)Người dùng thường
Xem danh sách phiếu / sự cố ✅ Có ✅ Có
Tạo / Sửa phiếu giao hàng ✅ Có ✅ Có
Xoá phiếu giao hàng ✅ Có ❌ Không
Xác nhận / sửa xác nhận giao hàng ✅ Có ✅ Có
Cài đặt thư mục lưu chứng từ NAS ✅ Có ❌ Không
Báo cáo sự cố giao hàng ✅ Có ✅ Có
Xoá sự cố giao hàng ✅ Có ❌ Không
⚠️
Lưu ý bảo mậtTất cả thao tác đều kiểm tra bussines_id trong session để đảm bảo dữ liệu chỉ thuộc về doanh nghiệp của người dùng đang đăng nhập. Không thể xem hoặc sửa phiếu giao hàng của doanh nghiệp khác.
⚠️ Lưu ý quan trọng
🚨
Xoá phiếu là vĩnh viễnKhi xoá một phiếu giao hàng, toàn bộ dòng bản vẽ liên quan trong delivery_note_items (và lịch sử xác nhận trong delivery_confirmations nếu xoá từ trang Xác nhận giao hàng) cũng bị xoá theo. Chỉ Admin mới có quyền thực hiện thao tác này.
Một PO — một phiếu giao hàngHệ thống chặn tạo phiếu giao hàng thứ hai cho cùng một PO, cả ở giao diện lẫn khi lưu ở máy chủ.
✍️
Số lượng giao phải nhập tayHệ thống không tự tính số lượng giao từ số lượng yêu cầu — người dùng cần nhập chính xác số lượng thực tế ở cả bước tạo phiếu và bước xác nhận giao hàng.
📎
Chứng từ giao hàng là bắt buộcKhông thể lưu xác nhận giao hàng nếu chưa đính kèm ảnh/PDF phiếu đã ký (trừ khi giữ nguyên file đã có khi chỉnh sửa).
🌐
Giới hạn trình duyệt khi lưu file NASTính năng lưu trực tiếp file chứng từ vào thư mục NAS dùng File System Access API, chỉ hoạt động trên Chrome/Edge phiên bản 86 trở lên.
ℹ️
Sự cố chưa có luồng cập nhật trạng tháiSự cố báo cáo luôn ở trạng thái "Mở" khi tạo; hiện chưa có chức năng trên giao diện để chuyển sang "Đang xử lý" hoặc "Đã giải quyết".
📱
Tối ưu cho MobileCác trang tạo phiếu và quản lý danh sách hiển thị dạng card trên điện thoại (màn hình <768px); riêng trang Xác nhận giao hàng dùng chung một bố cục cho mọi thiết bị.
🏢
Dữ liệu độc lập theo doanh nghiệpMỗi doanh nghiệp (bussines_id) có danh sách phiếu giao hàng, xác nhận và sự cố riêng. Không có sự chia sẻ dữ liệu giữa các doanh nghiệp trên cùng hệ thống.

Tiếp tục khám phá các chức năng liên quan:

Quản lý giao hàng Tạo phiếu giao hàng Xác nhận giao hàng Mục lục hướng dẫn