1. Giới thiệu về bán offline
Bán offline là chế độ hoạt động của kênh POS khi thiết bị không có kết nối internet ổn định hoặc hệ thống gặp sự cố. Dữ liệu giao dịch được lưu tạm trên thiết bị và tự động đồng bộ khi có mạng trở lại.
Khi hệ thống phát hiện sự cố hoặc thiết bị mất kết nối, POS có thể tự chuyển sang chế độ bán offline.
Khi mạng chập chờn, người dùng có thể chủ động chuyển sang offline để tránh lỗi giữa chừng.
Đơn offline được lưu trên thiết bị bán hàng và đưa vào danh sách chờ đồng bộ khi mạng hoạt động trở lại.
2. Điều kiện tiên quyết để dùng POS Offline
Tính năng Offline chỉ hoạt động ổn định khi POS đã có dữ liệu cần thiết trong bộ nhớ tạm và trình duyệt không chặn cơ chế lưu cache. Bấm vào từng nhóm bên dưới để xem chi tiết khi cần.
2.1 Chuyển offline do mất mạng
Phải đăng nhập và tải xong dữ liệu khi đang có mạng
- User vừa mới truy cập lần đầu, chưa đồng bộ dữ liệu hoặc cửa hàng chưa có sản phẩm/ khách hàng.
- User vừa mới xóa cache - lịch sử trình duyệt web ~ đồng nghĩa xóa hết dữ liệu. Lưu ý: trường hợp user cần xóa lịch sử trình duyệt, thì lưu ý vào POS để đồng bộ dữ liệu.
- User vừa truy cập, hệ thống đang đồng bộ dữ liệu thì gặp sự cố hoặc mất mạng - dữ liệu chưa đồng bộ đủ.
Trình duyệt phải hỗ trợ và không bị chặn Cache
Trạng thái mạng phải là “Disconnected” (Mất kết nối hoàn toàn)
Hệ điều hành phải báo trạng thái No Internet. Nếu mạng chập chờn (kiểu có sóng Wifi nhưng không có dữ liệu), trình duyệt sẽ liên tục cố gắng gửi yêu cầu lên máy chủ và bị treo.
2.2 Chuyển offline do sự cố hệ thống
Màn POS được xây dựng cơ chế chủ động phát hiện sự cố từ hệ thống để chủ động chuyển sang offline
3. Offline hỗ trợ được gì và chưa hỗ trợ được gì?
| Nghiệp vụ | Ghi chú khi thao tác offline |
|---|---|
| Tạo đơn hàng mới | Thêm sản phẩm, số lượng, ghi chú. Đơn được lưu tạm trên thiết bị và nằm trong danh sách chờ đồng bộ. |
| Thu tiền mặt và thanh toán thủ công | Nhập số tiền khách đưa hoặc ghi nhận các phương thức thanh toán thủ công, tính tiền thừa và hoàn tất đơn ngay cả khi không có internet. |
| In hóa đơn bán hàng | In bill qua máy in Bluetooth hoặc máy in kết nối cục bộ USB/LAN nội bộ. Không cần internet để in. |
| Thêm sản phẩm tùy chỉnh | Chỉ thêm được sản phẩm tùy chỉnh vào đơn đang bán, không tạo mới sản phẩm vào danh mục chính. |
| Giảm giá thủ công | Nhân viên có quyền có thể giảm giá theo phần trăm hoặc số tiền cố định trực tiếp trên đơn. |
| Tìm sản phẩm / khách hàng | Tìm theo tên, barcode hoặc dữ liệu đã được lưu cache trước đó trên thiết bị. |
| Thêm khách hàng mới | Có thể thêm mới thông tin khách hàng khi tạo đơn offline để lưu cùng giao dịch và đồng bộ sau khi có mạng. |
| Bán theo bảng giá | Hệ thống vẫn áp dụng giá bán theo bảng giá đã có trong dữ liệu cache của POS. |
| Đăng nhập offline | Hỗ trợ đăng nhập Offline với các tài khoản đã đăng nhập trước đó trên thiết bị bán hàng. |
| Nghiệp vụ | Lý do / cách xử lý thay thế |
|---|---|
| Thanh toán tích hợp | VietQR, VNPay, MoMo, ZaloPay,... cần xác thực real-time với cổng thanh toán nên chưa xử lý được khi mất mạng. |
| Quản lý ca bán hàng |
User vẫn bán hàng bình thường. Hệ thống sẽ xử lý ca khi đồng bộ đơn hàng lên hệ thống.
|
| Phát hành hóa đơn điện tử | Cần ký số và gửi dữ liệu tới cơ quan thuế qua API. Có thể in bill tạm, sau đó phát hành hóa đơn điện tử khi đơn đã đồng bộ online. |
| Tạo sản phẩm mới vào danh mục | Tạo sản phẩm mới cần ghi nhận và đồng bộ dữ liệu với hệ thống trung tâm. Có thể dùng sản phẩm tùy chỉnh trong đơn hoặc tạo sản phẩm mới khi có mạng. |
| Báo cáo cuối ngày / dashboard | Báo cáo cần dữ liệu tổng hợp từ server, nên chỉ đầy đủ sau khi hệ thống online và các đơn offline đã đồng bộ thành công. |
| Tra cứu và cấu hình nâng cao | Tra cứu đơn hàng, tra cứu tồn kho, đổi trả hàng, chỉnh sửa giá, cấu hình cần kết nối hệ thống để lấy dữ liệu mới nhất, kiểm tra đơn gốc, tồn kho, quyền thao tác và đồng bộ thay đổi cấu hình. |
| Đăng nhập tài khoản mới / đổi mật khẩu | Các thao tác xác thực tài khoản cần kết nối tới server. Nên đăng nhập trước khi vào khu vực mất mạng và không đổi mật khẩu trong thời gian offline. |
| Loyalty: tích điểm, đổi điểm | Điểm tích của khách hàng sẽ được cộng sau khi đồng bộ đơn offline thành công. |
| Khuyến mãi tự động / mã khuyến mãi | Cần server xác thực điều kiện, số lần dùng và tính hợp lệ của chương trình hoặc mã khuyến mãi. Có thể áp giảm giá thủ công nếu được phép. |
| Sổ quỹ | Cần dữ liệu hệ thống để ghi nhận và đối soát thu chi chính xác. |
| Hiển thị công nợ khách hàng | Dữ liệu công nợ cần truy vấn hệ thống để đảm bảo số liệu hiện tại. Khi online, đơn chưa thanh toán hoặc thanh toán thiếu vẫn được ghi nhận vào công nợ sau đồng bộ. |
“Khi mất mạng, cửa hàng vẫn tạo đơn, thanh toán thủ công và in bill bình thường. Một số phần cần kết nối mạng để xử lý như thanh toán VietQR, hóa đơn điện tử… sẽ được thực hiện sau khi có mạng trở lại.”
4. Cơ chế đồng bộ dữ liệu offline → online
Khi có mạng trở lại, dữ liệu đơn hàng offline sẽ được đồng bộ theo 1 trong 3 cách sau.
(Thông dụng nhất) Hệ thống tự động đồng bộ đơn hàng khi chuyển từ bán hàng offline sang online.
Trong trường hợp đơn hàng chưa được đồng bộ ngay lập tức khi có mạng, đơn sẽ được đồng bộ theo tiến trình đồng bộ của phần mềm, chạy mỗi 30 phút 1 lần.
Khi chuyển sang bán hàng online, vào mục Danh sách đơn hàng chưa đồng bộ → chọn Đồng bộ tất cả.
5. Lỗi phổ biến & cách xử lý
Mã lỗi:
[{"message":"access_denied UserId 836236 does not have permission manage_fulfillments at locationId 872465","key":"unknown","code":"unknown","field Path":"unknown"}]
Nguyên nhân: Tài khoản không được phân quyền manage_fulfillments / đóng gói.
Mã lỗi:
[{"message":"Available of inventoryItemId 207466636 at locationId 527076 is out of stock.","fieldPath":"base","code":"inventory_level_out_of_stock_rule","key":"base.inventory_level_out_of_stock_rule"}]
Nguyên nhân: Sản phẩm không còn hàng tại kho tương ứng. Sản phẩm không cho phép bán âm nhưng đã bị bán âm khi offline.
6. FAQ - Câu hỏi thường gặp
Q1. Mất mạng rồi thì làm thế nào để vào được kênh POS bán hàng?
Khi onboard khách hàng POS, cần thực hiện lúc vẫn có mạng: tạo shortcut màn POS vào máy tính và duy trì đăng nhập tài khoản. Nếu khách đã đăng xuất, cơ chế offline không áp dụng được.
Ấn vào dấu 3 chấm góc trên cùng bên phải của trình duyệt → chọn Cast, save, and share → chọn Create Shortcut.
Hoặc có thể tải ứng dụng POS về thiết bị tại góc trên cùng bên phải thanh tiêu đề.
Q2. Vì sao có mạng rồi nhưng vẫn ở chế độ offline?
Hệ thống đôi khi không tự chuyển online được. Người dùng có thể chuyển thủ công sang bán online.
Q3. Tại sao không thể dùng MoMo/thẻ khi offline?
Các phương thức thanh toán qua cổng payment như MoMo, ZaloPay, thẻ ngân hàng cần kết nối internet real-time để xác thực giao dịch với ngân hàng/ví điện tử. Vì vậy không thể thực hiện ngoại tuyến.
Q4. Có thể áp khuyến mãi hoặc mã giảm giá khi offline không?
KHÔNG áp dụng được mã khuyến mãi/voucher cần xác thực từ server. Tuy nhiên, nhân viên có thẩm quyền CÓ THỂ áp giảm giá thủ công (% hoặc số tiền cố định) trực tiếp trên đơn hàng mà không cần mạng.
Q5. Khách mua lúc offline có được tính điểm tích lũy không?
Khi đơn hàng được đồng bộ lên hệ thống thì sẽ tính điểm tích lũy theo cơ chế của hệ thống.
Q6. Khách mua offline muốn xuất hóa đơn điện tử thì xử lý thế nào?
Offline không hỗ trợ phát hành hóa đơn điện tử ngay tại thời điểm mất mạng.
Nếu user đã thiết lập xuất hóa đơn tự động, khi đơn hàng offline được đồng bộ lên hệ thống, luồng tự động xuất hóa đơn sẽ tự chạy và user không cần thao tác gì thêm.
Nếu chưa thiết lập xuất hóa đơn tự động, sau khi đơn đồng bộ lên hệ thống, vào module đơn hàng → chi tiết đơn offline → yêu cầu hóa đơn để xuất hóa đơn điện tử.
Q7. Đơn offline chưa thanh toán hoặc thanh toán một phần có ghi nhận công nợ không?
Có. Khi hệ thống online trở lại và đơn được đồng bộ, đơn chưa thanh toán hoặc thanh toán thiếu vẫn được ghi nhận vào công nợ khách hàng.
Q8. Vì sao mất mạng rồi mà hệ thống vẫn không tự động chuyển offline?
Thông thường hệ thống sẽ tự động chuyển sang offline khi không có mạng.
Có 1 số nguyên nhân dẫn đến không chuyển được sang offline:
- Dữ liệu chưa kịp lưu vào Local Storage: nếu bạn vừa mở máy lên, chưa kịp load danh sách sản phẩm thì bản sẽ không có gì để hiển thị khi mất mạng.
- Trạng thái “Mất mạng giả” (lỗi DNS hoặc Wifi yếu): Máy tính của bạn vẫn hiển thị biểu tượng Wifi (vẫn có kết nối tới Modem) nhưng Modem lại không có Internet. Sapo chỉ chuyển sang Offline khi trình duyệt nhận được tín hiệu “Disconnect” hoàn toàn từ hệ điều hành. Nếu tín hiệu chập chờn hoặc “có sóng nhưng không có mạng”, hệ thống sẽ rơi vào trạng thái chờ (Loading) vô tận để cố gắng gửi dữ liệu lên Server.
- Nhấn F5 (tải lại trang) khi đã mất mạng: Khi có mạng, trình duyệt tải dữ liệu từ Server về. Khi mất mạng, trình duyệt sẽ dùng dữ liệu “nằm chờ” trong bộ nhớ đệm (Cache). Nếu bạn nhấn F5 hoặc load lại trang lúc không có mạng, trình duyệt sẽ cố gắng kết nối với Server để lấy dữ liệu mới. Vì không có mạng, nó sẽ trả về trang báo lỗi “Không có kết nối Internet” (hình con khủng long). Lúc này, chế độ Offline chính thức bị vô hiệu hóa.
Cách xử lý:
- Luôn đảm bảo bạn đã đăng nhập và tải xong danh mục sản phẩm khi có mạng ổn định trước khi bắt đầu ca làm việc.
Lưu ý: Bản Web lưu dữ liệu bán hàng tạm thời vào Local Storage của trình duyệt. Nếu bạn cài đặt trình duyệt tự động xóa dữ liệu khi đóng hoặc dùng Tab ẩn danh, chế độ Offline sẽ không bao giờ hoạt động. - Bạn hãy chủ động ngắt kết nối Wifi hoặc rút dây mạng ra khỏi máy tính. Khi máy tính xác nhận hoàn toàn “No Internet”, trình duyệt sẽ kích hoạt Service Worker (trình chạy ngầm của Sapo) để chuyển sang giao diện bán hàng offline.
- Nếu lỡ F5 mà bị ra màn hình trắng: tạm thời phát 5G từ điện thoại cho máy tính truy cập 1 vài phút, chỉ cần qua được màn trắng, sau đó có thể thao tác chuyển sang offline. Hoặc chuyển qua tạo đơn bằng mobile hoặc ghi chép lại chờ khi có mạng ổn định, bạn vào phần mềm và tạo đơn bù để trừ kho và lưu doanh thu.
Q9. Bán offline có áp dụng được bảng giá không?
Có. Offline vẫn áp dụng bảng giá như khi bán online.
Q10. Khi có mạng trở lại hoặc hệ thống hết sự cố thì đơn hàng đồng bộ lên sẽ được ghi nhận dữ liệu đơn hàng như thế nào?
Đơn hàng offline đồng bộ lên hệ thống được ghi nhận như sau:
- Ngày giờ Đặt hàng: là ngày giờ người dùng tạo đơn offline trên thiết bị.
- Ngày giờ Xác nhận - Giao hàng - Hoàn thành: là ngày giờ đơn hàng được đồng bộ.
- Ghi nhận doanh thu và thanh toán: theo ngày giờ đơn được đồng bộ.
Lưu ý: để doanh thu ghi nhận đúng và xuất hóa đơn đúng thì nên đồng bộ trong ngày.