OVIRO LogoOVIRO | Trợ giúp
Khách hàng

Import địa chỉ nhận hàng

Nhập liệu hàng loạt địa chỉ nhận hàng cho nhiều khách hàng từ file Excel, tự động tìm khách hàng theo mã KH hoặc số điện thoại và resolve tỉnh/quận/phường.

Tính năng Import địa chỉ nhận hàng cho phép thêm hàng loạt địa chỉ giao hàng cho nhiều khách hàng từ file Excel (.xls, .xlsx) hoặc CSV. Hệ thống sẽ tự động tìm khách hàng dựa trên mã khách hàng hoặc số điện thoại, và resolve Tỉnh/Quận/Phường từ tên text sang mã khu vực hệ thống.

Giao diện tổng thể

  • Chức năng import nằm ở cuối bảng danh sách trong trang Khách hàng.
  • Nhấn nút Import địa chỉ nhận hàng để mở hộp thoại chọn file.
  • Hệ thống sẽ đọc file, tự động mapping các cột, và cho phép bạn xem trước dữ liệu trước khi import.

Định dạng file import

File import có thể là Excel (.xls, .xlsx) hoặc CSV (.csv). Mỗi dòng trong file tương ứng với một địa chỉ nhận hàng cần thêm.

Các cột trong file Excel

Tên cộtBắt buộcMô tảMã code
Mã khách hàngKhôngMã khách hàng để định danh. Ưu tiên tìm theo mã nếu cócustomer_code
SĐT Khách hàngSố điện thoại khách hàng để định danh. Bắt buộccustomer_phone
Tên hiển thịTên hiển thị cho địa chỉ (VD: "Nhà riêng", "Công ty")display_name
Họ tênHọ tên người nhận hàngfull_name
SĐT liên hệKhôngSố điện thoại liên hệ nhận hàngphone
Địa chỉ giao hàngKhôngĐịa chỉ giao hàng (số nhà, đường)address
Tỉnh/Thành phốKhôngTên tỉnh/thành phố. Hệ thống tự động resolve sang mã khu vựcprovince
Quận/HuyệnKhôngTên quận/huyện. Resolve dựa trên tỉnh đã tìmdistrict
Phường/XãKhôngTên phường/xã. Resolve dựa trên quận đã tìmward
Thông tin địa chỉ phụKhôngMã căn hộ, Block, Chung cư - tòa nhàaddress_line_2
Chỉ dẫn giao hàngKhôngGhi chú / hướng dẫn giao hàng dành cho shipperdelivery_note
Địa chỉ mặc địnhKhôngCó/Không — đánh dấu địa chỉ mặc định. Mặc định: Khôngis_default

Tên cột trong file không cần khớp chính xác. Hệ thống hỗ trợ nhận diện tên cột tương tự (synonyms).

Danh sách tên cột tương đương (synonyms)

CộtTên tương đương được nhận diện
Mã khách hàngMã khách hàng
SĐT Khách hàngSĐT Khách hàng
Tên hiển thịTên hiển thị
Họ tênHọ tên
SĐT liên hệSĐT liên hệ
Địa chỉ giao hàngĐịa chỉ giao hàng
Tỉnh/Thành phốTỉnh/Thành phố
Quận/HuyệnQuận/Huyện
Phường/XãPhường/Xã
Thông tin địa chỉ phụThông tin địa chỉ phụ
Chỉ dẫn giao hàngChỉ dẫn giao hàng
Địa chỉ mặc địnhĐịa chỉ mặc định

Quy tắc tìm khách hàng

Cột Mã KH / SĐT trong file Excel dùng để xác định khách hàng. Backend nhận giá trị text và tìm khách hàng theo thứ tự ưu tiên:

  1. Ưu tiên 1 – Tìm theo mã khách hàng (cc_code): So khớp chính xác, không phân biệt hoa thường.
  2. Ưu tiên 2 – Tìm theo số điện thoại (cc_phone): So khớp chính xác.
  3. Ưu tiên 3 – Tìm theo ID khách hàng: Nếu giá trị là số thuần, tìm khách hàng có ID khớp.

Ví dụ: Nếu khách hàng có Mã = KH001SĐT = 0901234567, bạn có thể nhập một trong các giá trị:

  • KH001 → Tìm theo mã khách hàng ✅
  • 0901234567 → Tìm theo SĐT ✅

Nếu không tìm thấy khách hàng phù hợp, dòng đó sẽ bị bỏ qua và hiển thị lỗi "Không tìm thấy khách hàng".

Quy tắc resolve Tỉnh/Quận/Phường

Hệ thống resolve Tỉnh/Quận/Phường theo dạng cascade (bậc thang):

  1. Tỉnh/Thành phố: Tìm trong danh sách khu vực cấp 1 (parent_id = 0).
  2. Quận/Huyện: Chỉ tìm trong các khu vực thuộc Tỉnh đã resolve ở bước 1.
  3. Phường/Xã: Chỉ tìm trong các khu vực thuộc Quận đã resolve ở bước 2.

Thứ tự matching

Mỗi bước resolve sử dụng 3 cấp matching:

Thứ tựPhương thứcMô tả
1Exact matchBỏ prefix (Thành phố/Tỉnh/Quận/Huyện...) + lowercase → so khớp chính xác
2Contains matchTìm tên chứa giá trị nhập hoặc ngược lại
3Diacritics-insensitiveBỏ dấu tiếng Việt rồi so khớp

Ví dụ: Nhập Hà Nội → match với "Thành phố Hà Nội" ✅. Nhập Ha Noi → match bằng diacritics-insensitive ✅.

Ngoài resolve region_id, hệ thống đồng thời lưu text gốc vào các field legacy (legacy_province_name, legacy_district_name, legacy_ward_name) để đảm bảo dữ liệu không bị mất ngay cả khi resolve thất bại.

File mẫu tải về

File mẫuMô tả
customeraddress_import_template.xlsxFile mẫu import địa chỉ nhận hàng với các cột Mã KH, Tên hiển thị, Họ tên, Điện thoại, Địa chỉ, Tỉnh/Quận/Phường.

Các bước import

  1. Truy cập trang Khách hàng từ menu.
  2. Cuộn xuống cuối bảng danh sách, nhấn nút Import địa chỉ nhận hàng.
  3. Chọn file Excel hoặc CSV từ máy tính.
  4. Hệ thống hiển thị bảng mapping cột – kiểm tra và điều chỉnh mapping nếu cần.
  5. Nhấn Xử lý để bắt đầu import.
  6. Hệ thống hiển thị kết quả: số lượng thành công và lỗi (nếu có).
  7. Danh sách khách hàng sẽ tự động refresh sau khi import hoàn tất.

Ví dụ file Excel mẫu

Mã KH / SĐTTên hiển thịHọ tênĐiện thoạiEmailĐịa chỉTỉnh/TPQuận/HuyệnPhường/XãMặc định
KH001Nhà riêngNguyễn Văn A0901234567[email protected]123 Nguyễn TrãiHồ Chí MinhQuận 1Bến Thành
0987654321Công tyTrần Thị B0987654321[email protected]45 Lê LợiHà NộiBa ĐìnhPhúc XáKhông
KH003Nhà bà ngoạiLê Văn C0912345678789 Trần PhúĐà NẵngHải ChâuThạch ThangKhông

Quy tắc xử lý giá trị

Mặc định

Giá trị nhậpKết quả
, Co, Yes, 1, trueĐặt làm mặc định
Các giá trị khác hoặc để trốngKhông mặc định

Giới hạn

  • Tối đa 10.000 dòng mỗi lần import. Nếu file có nhiều hơn 10.000 dòng, chỉ 10.000 dòng đầu tiên được xử lý, các dòng còn lại bị bỏ qua.

Danh sách lỗi

Import địa chỉ nhận hàng trải qua 2 giai đoạn xác thực: Frontend (resolve khu vực Tỉnh/Quận/Phường và validate dữ liệu cơ bản) và Backend (resolve khách hàng theo mã/SĐT/ID và validate trước khi lưu). Dưới đây là danh sách đầy đủ các lỗi có thể xảy ra.

Lỗi Frontend (xử lý trên giao diện)

Các lỗi này xảy ra khi hệ thống đọc file Excel và validate dữ liệu cơ bản. Dòng bị lỗi sẽ không gửi lên server.

Mã lỗiThông báoNguyên nhânCách khắc phục
error_customer_requiredMã KH / SĐT không được để trống (Dòng X)Cột Mã KH / SĐT để trốngĐiền mã khách hàng hoặc số điện thoại
full_nameHọ tên không được để trống (Dòng X)Cột Họ tên để trốngĐiền họ tên người nhận hàng
import_warning_max_rowsFile có {total} dòng, chỉ xử lý {max} dòng đầu tiênFile Excel có hơn 10.000 dòngChia nhỏ file thành nhiều lần import, mỗi lần tối đa 10.000 dòng
import_error_no_dataKhông có dữ liệu để importTất cả các dòng đều bị lỗi, không có dòng nào hợp lệKiểm tra lại toàn bộ file Excel

Lỗi Backend (xử lý trên server)

Các lỗi này xảy ra khi server nhận dữ liệu và validate trước khi lưu vào database. Backend chịu trách nhiệm resolve khách hàng từ mã/SĐT.

Mã lỗiNguyên nhânCách khắc phục
error_empty_itemsDanh sách items gửi lên server rỗngĐảm bảo file Excel có ít nhất 1 dòng dữ liệu hợp lệ
error_customer_requiredCột Mã KH / SĐT trống (lọt qua frontend)Điền mã khách hàng hoặc số điện thoại
error_customer_not_foundKhông tìm thấy khách hàng. Backend đã tìm theo: 1. Mã KH (exact, case-insensitive) → 2. SĐT (exact) → 3. ID (nếu là số thuần) – đều không khớpKiểm tra lại mã KH/SĐT. Đảm bảo khách hàng đã được tạo trong hệ thống. Xem Quy tắc tìm khách hàng
error_fullname_requiredCột Họ tên trống (lọt qua frontend)Điền họ tên người nhận hàng
error_insert_failedDòng dữ liệu hợp lệ nhưng không thể lưu vào database (lỗi hệ thống)Thử lại hoặc liên hệ quản trị viên

Lỗi logic (không hiển thị cảnh báo nhưng ảnh hưởng dữ liệu)

Tình huốngHành vi hệ thốngLưu ý
Tỉnh/TP không tìm thấyregion_id = 0. Text gốc vẫn được lưu vào legacy_province_nameDữ liệu vẫn được import, nhưng khu vực không được resolve. Kiểm tra tên Tỉnh/TP đúng chính tả
Quận/Huyện không tìm thấysub_region_id = 0. Text gốc được lưu vào legacy_district_name. Phường/Xã cũng sẽ không resolve (vì phụ thuộc Quận)Kiểm tra tên Quận/Huyện và đảm bảo Tỉnh đã resolve thành công
Phường/Xã không tìm thấysub_sub_region_id = 0. Text gốc được lưu vào legacy_ward_nameKiểm tra tên Phường/Xã thuộc đúng Quận đã resolve
Tên hiển thị để trốngHệ thống tự lấy Họ tên làm tên hiển thịĐiền tên hiển thị để phân biệt các địa chỉ (VD: "Nhà riêng", "Công ty")
Mặc định không hợp lệGiá trị không nhận diện được → mặc định KhôngXem Quy tắc xử lý giá trị để biết các giá trị được chấp nhận

Lỗi chung (file Excel)

LỗiNguyên nhânCách khắc phục
File không đọc đượcFile bị hỏng, sai định dạng hoặc không có dòng tiêu đềKiểm tra file có đuôi .xls, .xlsx hoặc .csv. Đảm bảo dòng đầu tiên là tiêu đề cột
Cột không được nhận diệnTên cột trong file không nằm trong danh sách synonymsĐổi tên cột theo danh sách tên cột tương đương

Cách đọc lỗi: Khi import thất bại, hệ thống hiển thị số dòng trong file Excel (bắt đầu từ dòng 2, vì dòng 1 là tiêu đề + dòng 2 bắt đầu dữ liệu). Ví dụ: "Dòng 5" tương ứng với dòng thứ 5 trong file Excel.

Phân quyền

  • Xem khách hàng: Cần quyền Xem khách hàng (customer.view).
  • Import địa chỉ nhận hàng: Cần quyền Quản lý khách hàng (customer.manage).

On this page