Ý nghĩa
Trang Nhập dữ liệu là công cụ trung tâm giúp doanh nghiệp chuyển đổi dữ liệu từ bên ngoài vào hệ thống SellMate CRM một cách có kiểm soát và an toàn. Thay vì nhập tay từng bản ghi, người dùng chuẩn bị file Excel/CSV theo đúng chuẩn định sẵn, sau đó hệ thống tự động đọc, kiểm tra lỗi, ánh xạ dữ liệu và nạp vào database.
Mục đích chính
Trang Nhập dữ liệu phục vụ 6 mục đích nghiệp vụ cụ thể, tương ứng với 6 loại dữ liệu có thể nhập:
Tài khoản nhân viên: Tạo hàng loạt tài khoản nhân viên (Admin) vào hệ thống khi onboarding doanh nghiệp mới hoặc bổ sung nhân sự theo đợt. Mỗi dòng tương ứng một nhân viên, với thông tin họ tên, email, tên đăng nhập, phòng ban, nhóm và vai trò quyền hạn.
Sản phẩm: Nhập danh mục sản phẩm từ file Excel vào hệ thống để xây dựng kho hàng ban đầu, bao gồm tên sản phẩm, SKU, giá bán, giá nhập, trọng lượng và nhóm sản phẩm.
Khách hàng (Data): Nhập danh sách data marketing (lead khách hàng) từ các nguồn bên ngoài như Pushsale, Tuha hoặc các phần mềm CRM khác, gồm thông tin liên lạc, nhân viên Sale/MKT phụ trách, giai đoạn tác nghiệp và địa chỉ. Đây là loại được dùng nhiều nhất theo lịch sử import.
Đơn hàng: Nhập lịch sử đơn hàng từ phần mềm cũ sang hệ thống SellMate, cho phép giữ nguyên toàn bộ dữ liệu giao dịch trong quá trình chuyển đổi hệ thống.
Tác nghiệp: Cấu hình quy trình tác nghiệp (luồng chuyển giai đoạn) theo dạng file Excel thay vì thiết lập thủ công trên giao diện. Mỗi dòng định nghĩa một luồng: khi có kết quả X thì chuyển sang giai đoạn Y và nhắc lại sau Z thời gian.
Chia khách: Phân công hàng loạt khách hàng (theo số điện thoại) cho nhân viên Sale/CSKH/MKT từ file Excel, thay thế hoàn toàn phân công hiện tại.
Quy trình thực hiện
Người dùng đăng nhập vào hệ thống SellMate CRM, di chuyển đến màn hình Nhập dữ liệu
Bước 1: Chọn phần mềm nguồn và loại dữ liệu
Chọn phần mềm nguồn: Hiện tại chỉ có một lựa chọn là Thủ công – nhập tay theo file mẫu chuẩn của hệ thống. Nhấp vào card "Thủ công" để chọn (card chuyển sang viền xanh, hiện dấu tích xanh).

Tải file mẫu (nếu chưa có): Sau khi chọn phần mềm nguồn và loại dữ liệu, hệ thống hiển thị bảng hướng dẫn cột và nút Tải file mẫu ở góc phải trên. Tải file mẫu này về để điền đúng định dạng.

Chọn loại dữ liệu: Có 6 loại, nhấp chọn loại phù hợp. Khi chọn, hệ thống tự động hiện bảng hướng dẫn chi tiết:

- Tài khoản – Nhập nhân viên. Cột bắt buộc: Họ tên, Doanh nghiệp. Cột tùy chọn: Email, Tên đăng nhập (tự sinh nếu trống), Phòng ban, Nhóm, Vị trí/Chức vụ, Vai trò (map ở bước 3, có thể điền nhiều vai trò cách nhau bởi dấu phẩy).
- Sản phẩm – Nhập danh mục hàng hóa. Cột bắt buộc: Tên sản phẩm. Cột tùy chọn: Mã sản phẩm/SKU (tự sinh từ tên nếu trống), Giá bán, Giá nhập, Trọng lượng (gram), Đơn vị tính (map ở bước 3), Nhóm sản phẩm (map ở bước 3), Mô tả.
- Khách hàng (Data) – Nhập data marketing theo chuẩn 16 cột cố định. Tên cột phải khớp 100% (case-sensitive). Cột bắt buộc: Mã số (dùng kiểm tra trùng - dedupe theo cuda_origin_id, mã đã tồn tại sẽ bị bỏ qua), Họ tên, Số điện thoại. Cột tùy chọn: Ngày tạo (d/m/Y H:i hoặc Y-m-d H:i:s), Mã MKT, Số điện thoại phụ, Ghi chú, Mã Sale (nếu có giá trị → data status = "Mới" + gán Sale + ghi log), Tác nghiệp, Kết quả tác nghiệp, Ngày tác nghiệp, Sale Ngày nhận data, Địa chỉ (tự bóc thành city/district/ward), Người tạo (rỗng → fallback user đang đăng nhập), Ngày sinh, Giới tính (map ở bước 3: 1=Nam, 2=Nữ, 0=Chưa xác định). Giới hạn tối đa 100.000 dòng/lần.
- Đơn hàng – Nhập lịch sử đơn hàng. Cột bắt buộc: Mã đơn hàng (dùng kiểm tra trùng, đã có → bỏ qua không update), Số điện thoại (dùng khớp với data, KH phải đã tồn tại trong hệ thống). Cột tùy chọn: Họ tên, Địa chỉ giao hàng, Sản phẩm (nhiều SP ngăn cách bởi dấu phẩy, prefix "N-" trước tên SP để khai báo số lượng), Mã SP/SKU, Số lượng, Đơn giá, Giảm giá SP, Tổng tiền (tự cộng nếu thiếu), Phí ship, Giảm giá, Đã thu (COD), Mã vận đơn, Ghi chú, Ngày tạo, Trạng thái (phải map sang trạng thái hệ thống ở bước 3, không map → mặc định "Mới tạo"), NV Sale, Mã NV Sale, NV MKT, Mã NV MKT.
- Tác nghiệp – Cấu hình luồng tác nghiệp. Cột bắt buộc: Khi kết quả là. Cột tùy chọn: Từ giai đoạn (trống = áp dụng mọi giai đoạn), Chuyển sang giai đoạn (trống = chỉ ghi nhận, không tạo luồng), Thời gian nhắc lại (ví dụ: "1 phút", "12 giờ", "3 ngày"). Giai đoạn/kết quả mới sẽ được tự tạo và active.
- Chia khách – Phân công khách cho nhân sự. Cột bắt buộc: Email nhân viên (dùng tra cứu nhân viên), Loại Data (map sang SALE/CSKH/MKT ở bước 3), SDT (số điện thoại khách cần phân công). Cột tùy chọn: Tên nhân viên (không dùng để tra cứu). Dữ liệu sẽ ghi đè lên phân công hiện tại.
Lưu ý chung cho bước 1: Adapter hệ thống tự nhận diện thêm các tên cột tương đương (ví dụ: "Họ tên" = "KH Họ tên") nên không cần đặt tên cột quá cứng nhắc. Sau khi chọn xong, phần footer hiển thị xác nhận "Đã chọn [Phần mềm] · [Loại dữ liệu]". Nhấn nút Tiếp tục → để sang bước 2.

Bước 2: Tải lên & xem trước (Kiểm tra lỗi trước khi import)
Đây là bước quan trọng nhất để đảm bảo chất lượng dữ liệu trước khi nạp thật.
Upload file: Nhấn nút Upload Excel trên card "Thủ công" hoặc kéo thả file vào vùng upload. Hệ thống chấp nhận file .xlsx và .csv. Giới hạn tối đa 100.000 dòng mỗi lần nhập.

Hệ thống phân tích file: Sau khi upload, hệ thống tự động đọc file và thực hiện:
- So khớp tên cột trong file với 16 cột chuẩn của hệ thống (bảng so khớp hiển thị đối chiếu cột chuẩn vs cột trong file).
- Phát hiện các lỗi dữ liệu: thiếu cột bắt buộc, sai định dạng ngày tháng, mã trùng, giá trị không hợp lệ...
- Xác định các giá trị cần map thủ công (trạng thái đơn hàng, giới tính, vai trò, loại data...).
Xử lý mapping (tùy loại dữ liệu):
- Với Khách hàng (Data): Bắt buộc chọn "Nguồn data" (Pushsale hoặc Tuha) để phân biệt nguồn trong báo cáo. Các giá trị "Giới tính" trong file phải được map sang Nam/Nữ/Chưa xác định.
- Với Đơn hàng: Các giá trị "Trạng thái" đơn hàng trong file phải được map sang trạng thái của hệ thống.
- Với Tài khoản: Phòng ban, Nhóm, Vai trò map sang giá trị tương ứng trong hệ thống ở bước này.
- Với Sản phẩm: Đơn vị tính, Nhóm sản phẩm được map ở bước này.
- Với Chia khách: Loại Data (Sale/CSKH/MKT) được map ở bước này.
Xem trước kết quả: Hệ thống hiển thị preview dữ liệu sẽ được nhập, số dòng hợp lệ và danh sách các dòng lỗi kèm lý do cụ thể. Người dùng có thể quay lại sửa file và upload lại nếu cần.
Tùy chọn đặc biệt với Đơn hàng:
- Tự tạo TK NV chưa có: Bật để tự động tạo tài khoản Admin inactive cho nhân viên Sale/MKT chưa có trong hệ thống.
- Tự tạo sản phẩm chưa có: Bật để tự động tạo sản phẩm inactive khi không match được tên/SKU, tránh lỗi làm hỏng toàn dòng đơn (chỉ áp dụng khi nhập sản phẩm lẻ).
Bước 3: Thực thi (Nạp dữ liệu vào hệ thống)
Xác nhận nạp dữ liệu: Sau khi xem trước và hài lòng với kết quả, xác nhận để hệ thống thực thi nhập dữ liệu thật sự.
Hệ thống thực hiện tự động:
- Lọc trùng (dedupe) theo trường khóa của từng loại (Mã số với Khách hàng Data, Mã đơn hàng với Đơn hàng, Email/username với Tài khoản).
- Ánh xạ các giá trị đã được map ở bước 2 sang giá trị database.
- Ghi log chi tiết cho từng dòng: thành công hay thất bại và lý do cụ thể.
- Với Khách hàng Data: Nếu có Mã Sale hợp lệ → tự động gán Sale và ghi log_process_data với thời gian = "Sale Ngày nhận data". Nếu không có Sale → trạng thái data = "Nhập lên" (UPLOADED).
- Với địa chỉ: Tự bóc thành City/District/Ward qua AddressParseService. Chuỗi rác toàn dấu phẩy sẽ được làm sạch thành rỗng.
Kết quả trả về: Sau khi hoàn tất, hệ thống hiển thị tổng kết dưới dạng X/Y · Z lỗi trong đó X là số dòng nhập thành công, Y là tổng số dòng trong file, Z là số dòng lỗi. Kết quả cũng được lưu vào bảng Lịch sử nhập dữ liệu để tra cứu sau.
Theo dõi qua Lịch sử nhập dữ liệu
Bảng lịch sử ở phía dưới trang ghi nhận tất cả các lần import, bao gồm các cột: Thời gian (ngày giờ thực hiện), Loại (loại dữ liệu đã nhập), File (tên file + nguồn + người thực hiện), Kết quả (trạng thái Hoàn tất/Thất bại và tỉ lệ thành công/lỗi), Thao tác (các nút hành động).
Các nút Thao tác trên mỗi dòng lịch sử gồm: icon mắt (xem chi tiết kết quả), icon file đỏ (tải lại file gốc), icon làm lại (import lại file này), icon cấm (hủy/xóa lịch sử).
Bảng lịch sử hỗ trợ lọc theo Nguồn, Loại dữ liệu và Trạng thái (Hoàn tất / Thất bại), đồng thời tìm kiếm theo tên file hoặc tên người nhập. Mặc định hiển thị 10 dòng/trang, có phân trang.