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

Import thông tin khách hàng

Nhập liệu hàng loạt khách hàng mới từ file Excel, tự động xử lý giới tính, ngày sinh, khu vực và kiểm tra trùng lặp SĐT/Email/Mã KH.

Tính năng Import thông tin khách hàng cho phép thêm hàng loạt khách hàng mới vào hệ thống từ file Excel (.xls, .xlsx) hoặc CSV. Hệ thống sẽ tự động normalize dữ liệu (giới tính, ngày sinh, SĐT), resolve Tỉnh/Quận/Phường từ tên text, và kiểm tra trùng lặp SĐT/Email/Mã KH trước khi lưu.

Đây là tính năng import khách hàng (tạo mới khách hàng). Nếu bạn cần import địa chỉ nhận hàng cho khách hàng đã có, xem Import địa chỉ nhận hà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 thông tin khách 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 khách hàng cần tạo mới.

Các cột trong file Excel

Thông tin cơ bản

Tên cộtBắt buộcMô tảMã code
Họ tênHọ tên đầy đủ của khách hàngfull_name
Mã KHKhôngMã khách hàng (chỉ cho phép a-z, A-Z, 0-9, _, -, .)code
Điện thoạiKhôngSố điện thoại (tối thiểu 8 số). Trùng → lỗiphone
EmailKhôngĐịa chỉ email. Trùng → lỗiemail
Giới tínhKhôngNam / Nữ / Khác. Mặc định: Không xác địnhgender
Ngày sinhKhôngĐịnh dạng DD/MM/YYYYbirthday

Địa chỉ

Tên cộtBắt buộcMô tảMã code
Địa chỉKhôngĐịa chỉ (số nhà, đường)address
Tỉnh/Thành phốKhôngTên tỉnh/thành phố. Hệ thống tự 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
Địa chỉ phụKhôngĐịa chỉ phụ (tầng, tòa nhà...)address_line_2
Ghi chú giao hàngKhôngChỉ dẫn giao hàngdelivery_note

Thông tin thêm

Tên cộtBắt buộcMô tảMã code
TagKhôngNhãn phân loại khách hàngtag
Ghi chúKhôngGhi chú về khách hàngnote
Tên nội bộKhôngTên hiển thị nội bộ (chỉ nhân viên thấy)internal_name
Ghi chú nội bộKhôngGhi chú nội bộ (chỉ nhân viên thấy)internal_note
Chức danhKhôngChức danh / Danh xưngsalutation

Mạng xã hội

Tên cộtMã code
Zalozalo_id
Facebookfacebook_id
Instagraminstagram_id
TikToktiktok_id
Shopeeshopee_id
Telegramtelegram_id

Hóa đơn

Tên cộtMã code
Tên người muatax_buyer_name
Địa chỉ người muatax_buyer_address
Mã số thuếtax_buyer_tax_number

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). Ví dụ: cột "Tên khách hàng", "Họ tên", "Tên KH" sẽ được tự động mapping thành cột Họ tên.

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

CộtTên tương đương được nhận diện
Họ tênTên khách hàng, Họ tên, Họ và tên, Tên KH, Tên
Mã KHMã KH, Mã khách hàng, Mã thẻ, Mã thành viên
Điện thoạiSố điện thoại, SĐT, Điện thoại, Phone
EmailEmail, Địa chỉ email
Giới tínhGiới tính, Gender
Ngày sinhNgày sinh, Sinh nhật, Birthday
Địa chỉĐịa chỉ, Address
Tỉnh/Thành phốTỉnh, Thành phố, TP, Province, City
Quận/HuyệnQuận, Huyện, Thị xã, District
Phường/XãPhường, , Thị trấn, Ward
TagTag, Tags, Thẻ, Nhãn
Ghi chúGhi chú, Note
Tên nội bộTên nội bộ, Tên hiển thị nội bộ
Ghi chú nội bộGhi chú nội bộ, Ghi chú NV
Chức danhChức danh, Danh xưng
Địa chỉ phụĐịa chỉ phụ, Địa chỉ 2
Ghi chú giao hàngGhi chú giao hàng, Chỉ dẫn giao hàng
ZaloZalo, Zalo ID
FacebookFacebook, Facebook ID, FB
InstagramInstagram, Instagram ID, IG
TikTokTikTok, TikTok ID
ShopeeShopee, Shopee ID
TelegramTelegram, Telegram ID
Tên người muaTên người mua, Tên trên hóa đơn
Địa chỉ người muaĐịa chỉ người mua, Địa chỉ hóa đơn
Mã số thuếMST, Mã số thuế

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

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

Giới tính

Giá trị nhậpKết quả
Nam, Male, MNam
Nữ, Nu, Female, FNữ
Khác, Khac, OtherKhác
Các giá trị khác hoặc để trốngKhông xác định

Ngày sinh

Hệ thống tự động nhận diện nhiều định dạng ngày sinh:

Định dạng nhậpVí dụKết quả
DD/MM/YYYY15/03/199015/03/1990 ✅
DD-MM-YYYY15-03-199015/03/1990 ✅
YYYY-MM-DD (ISO)1990-03-1515/03/1990 ✅
DD/MM/YY15/03/9015/03/2090 ✅
Excel serial number32917Tự động convert ✅
Các định dạng không nhận diệnMarch 15Bỏ trống

Ngày sinh phải là ngày hợp lệ. Ví dụ: 31/02/1990 (tháng 2 không có ngày 31) sẽ bị báo lỗi error_birthday_invalid.

Số điện thoại

  • Hệ thống tự động loại bỏ: khoảng trắng, dấu gạch ngang -, dấu chấm ., dấu ngoặc ().
  • Chỉ giữ lại chữ số.
  • SĐT phải có tối thiểu 8 chữ số.
  • Ví dụ: 0901-234-5670901234567, (+84) 901 234 56784901234567.

File mẫu tải về

File mẫuMô tả
customer_import_template.xlsxFile mẫu import khách hàng với các cột Họ tên, Mã KH, SĐT, Email, Giới tính, Ngày sinh, Địa chỉ, Tỉnh/Quận/Phường và các trường mở rộng.

Các bước import

  1. Truy cập trang Khách hàng từ menu bên trái.
  2. Cuộn xuống cuối bảng danh sách, nhấn nút Import thông tin khách 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ý & nhập dữ liệu vào form để 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

Họ tênMã KHĐiện thoạiEmailGiới tínhNgày sinhĐịa chỉTỉnh/TPQuận/HuyệnPhường/Xã
Nguyễn Văn AKH0010901234567[email protected]Nam15/03/1990123 Nguyễn TrãiHồ Chí MinhQuận 1Bến Thành
Trần Thị BKH0020987654321[email protected]Nữ20/08/199545 Lê LợiHà NộiBa ĐìnhPhúc Xá
Lê Văn C0912345678Nam789 Trần PhúĐà NẵngHải ChâuThạch Thang

Kiểm tra trùng lặp

Hệ thống kiểm tra trùng lặp trên 3 trường trước khi tạo khách hàng:

TrườngKiểu kiểm traKết quả nếu trùng
SĐTExact match (sau khi format)Lỗi error_phone_exists
EmailExact matchLỗi error_email_exists
Mã KHExact match, case-sensitiveLỗi error_code_exists

Mỗi dòng trong file được kiểm tra độc lập với database hiện tại. Nếu trong cùng file có 2 dòng trùng SĐT, chỉ dòng đầu tiên sẽ được tạo, dòng sau sẽ bị lỗi vì SĐT đã tồn tại (do dòng đầu đã được lưu).

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 và hiển thị cảnh báo.

Danh sách lỗi

Import khách hàng trải qua 2 giai đoạn xác thực: Frontend (validate dữ liệu cơ bản, resolve khu vực) và Backend (kiểm tra trùng lặp, validate format, lưu database).

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_fullname_requiredHọ tên không được để trống (Dòng X)Cột Họ tên để trốngĐiền họ tên khách hàng
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
no_import_dataKhông có dữ liệu để importTất cả các dòng đều bị lỗiKiể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.

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 có ít nhất 1 dòng dữ liệu hợp lệ
error_max_10000_itemsGửi vượt quá 10.000 itemsChia nhỏ file import
error_fullname_requiredCột Họ tên trống (lọt qua frontend)Điền họ tên khách hàng
error_phone_existsSĐT đã tồn tại trong hệ thốngKiểm tra SĐT, sử dụng SĐT khác hoặc sửa SĐT cũ
error_phone_invalidSĐT ít hơn 8 chữ sốKiểm tra lại SĐT, đảm bảo tối thiểu 8 số
error_email_existsEmail đã tồn tại trong hệ thốngKiểm tra email, sử dụng email khác
error_email_invalidEmail không đúng định dạngKiểm tra lại email (VD: [email protected])
error_code_existsMã KH đã tồn tại trong hệ thốngKiểm tra mã KH, sử dụng mã khác
error_code_invalidMã KH chứa ký tự không hợp lệChỉ dùng a-z, A-Z, 0-9, _, -, .
error_birthday_format_invalidNgày sinh không đúng định dạng DD/MM/YYYYSử dụng đúng định dạng DD/MM/YYYY
error_birthday_invalidNgày sinh không hợp lệ (VD: 31/02/1990)Kiểm tra lại ngày tháng hợp lệ
error_addKhô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. Dữ liệu vẫn được importKiểm tra tên tỉnh/TP đúng chính tả
Quận/Huyện không tìm thấysub_region_id = 0. Phường/Xã cũng không resolve (phụ thuộc Quận)Kiểm tra tên phường/xã và đảm bảo Tỉnh đã resolve
Phường/Xã không tìm thấysub_sub_region_id = 0Kiểm tra tên phường/xã thuộc đúng Quận đã resolve
Giới tính không nhận diệnMặc định → Không xác địnhXem Quy tắc xử lý giới tính
Ngày sinh format lạBỏ trống (không lưu ngày sinh)Sử dụng định dạng DD/MM/YYYY
SĐT có ký tự đặc biệtTự động loại bỏ ký tự, chỉ giữ sốXem Quy tắc xử lý SĐT

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 đề). Ví dụ: "Dòng 5" tương ứng với dòng thứ 5 trong file Excel. Hệ thống chỉ hiển thị tối đa 10 lỗi đầu tiên từ server.

Phân quyền

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

On this page