Store Builder

"POS — bán khi mất mạng"

"Quầy vẫn bán tiền mặt khi rớt mạng: đơn lưu trên máy, in hoá đơn tạm, tự đồng bộ khi có mạng lại — và những việc chỉ làm được khi có mạng."

Trong app Bán hàng tại quầy (POS), thanh trạng thái ở đầu mọi màn hình quầy cho biết Trực tuyến hay Ngoại tuyến, số đơn chờ đồng bộ, số xung đột và tuổi của danh mục trên máy. Bấm Hàng đợi để mở bảng Hàng đợi ngoại tuyến.

"Đang mất mạng. Chỉ bán tiền mặt. Bàn/bếp, trả hàng, công nợ, ca, kho cần mạng."

Câu đó là cả trang này tóm lại. Bốn điều dễ làm bạn bất ngờ, nên nói trước:

  • Tính năng BẬT sẵn, và bật theo từng máy, không theo cửa hàng. Mỗi máy tự giữ danh mục và hàng đợi của nó; máy khác không thấy đơn ngoại tuyến của máy này cho tới khi nó đồng bộ xong.
  • Xoá dữ liệu trình duyệt là mất các đơn chưa đồng bộ. Đơn ngoại tuyến chỉ nằm trên máy đó. Không có bản sao nào ở đâu khác.
  • Hoá đơn in ra lúc mất mạng là hoá đơn tạm, mang số NT-…, không phải số đơn chính thức.
  • Đơn được ghi theo giờ máy chủ lúc đồng bộ, không theo giờ bán. Bán lúc 23:50, có mạng lại lúc 00:10, đơn nằm ở ngày hôm sau trong báo cáo.

Bật và tắt

Công tắc Bán khi mất mạng nằm trong bảng Hàng đợi ngoại tuyến:

"Giữ danh mục trên máy này và xếp hàng đơn tiền mặt khi mất mạng."

Nó bật sẵn vì một lý do đơn giản: danh mục phải được tải về trước khi mất mạng. Đợi tới lúc rớt mạng mới bật thì đã muộn. Tắt trên một máy thì máy đó thôi tải danh mục và không bán được khi mất mạng; các máy khác không bị ảnh hưởng. Chưa có cách tắt cho cả cửa hàng một lần.

Mất mạng thì bán được gì

Chỉ bán nhanh, trả tiền mặt. Bạn vẫn quét mã hoặc tìm tên, gõ số tiền khách đưa, nhập giảm giá tay, và ghi SĐT, tên khách dạng chữ. Nút thanh toán đổi thành Hoàn tất (ngoại tuyến).

Mọi thứ còn lại cần mạng: chuyển khoản/VietQR, thẻ, mã giảm giá, tìm khách có sẵn, ghi nợ và thu nợ, trả hàng, huỷ đơn, mở/đóng ca, nộp/rút két, nhập, chuyển, kiểm kho, bàn và phiếu bếp, soát vé. Lý do: tiền mặt là thứ duy nhất quầy tự xác nhận được mà không cần hỏi ai. Những việc kia đổi một trạng thái dùng chung giữa nhiều máy (một ca, một khoản nợ, một bàn, một lượt mã), và làm chúng khi mất mạng là tạo ra hai phiên bản của cùng một sự thật.

Đang bán có mạng mà rớt mạng ngay lúc hoàn tất, màn hình đề nghị Hoàn tất ngoại tuyến (tiền mặt). Đang hiện mã QR chuyển khoản thì app không tự chuyển sang tiền mặt: thu ngân phải chọn Thu tiền mặt, vì chỉ người đứng quầy biết khách đã chuyển hay chưa.

Khi nút hoàn tất bị thay bằng một câu giải thích, câu đó nói vì sao. Hay gặp nhất:

  • Chưa có danh mục trên máy, hoặc danh mục của địa điểm khác: kết nối mạng một lần để tải.
  • Cửa hàng có thuế cộng thêm hoặc khuyến mãi tự động. Chỉ máy chủ tính được những khoản đó, nên máy không thể in một tổng tiền đúng. Bán ngoại tuyến tắt hẳn thay vì in một con số sai.
  • Quầy bắt buộc có ca mà máy này không giữ ca nào đang mở: mở ca khi còn mạng.

Hoá đơn tạm

"Hoá đơn tạm — ngoại tuyến. Số chính thức cấp khi đồng bộ."

Mã NT- cộng tám ký tự lấy từ chính đơn đó, nên hai máy cùng bán ngoại tuyến không bao giờ trùng mã, và không phụ thuộc đồng hồ của máy. Khi đồng bộ xong, dòng trong hàng đợi hiện số đơn thật ("Đã ghi thành …") và nút Hoá đơn chính thức để in lại bản chính thức nếu khách cần. Trong Quản lý → Đơn hàng, ghi chú của đơn mang dòng Bán ngoại tuyến · NT-… · <giờ máy>, nên bạn tra ngược được từ hoá đơn tạm sang đơn thật.

Một đơn chỉ được coi là đã bán khi nó đã được ghi vào máy. Nếu không ghi được (thường là bộ nhớ trình duyệt đầy), app báo "Không lưu được đơn trên máy này", không in, không mở két, và giỏ hàng vẫn giữ nguyên.

Hàng đợi và đồng bộ

Có mạng lại là app tự đồng bộ; bạn cũng có thể bấm Đồng bộ ngay. Đơn gửi lên theo đúng thứ tự đã bán. Mỗi đơn chỉ thành một đơn hàng dù mạng chập chờn giữa chừng hay hai tab cùng đồng bộ: gửi lại không bao giờ tạo đơn thứ hai.

Bảng hàng đợi chia bốn nhóm: Cần xử lý, Đang chờ, Đã đồng bộ, Đã huỷ. Đơn đã đồng bộ còn hiện 7 ngày, đơn đã huỷ 30 ngày, rồi tự dọn. Đơn đang chờ hoặc cần xử lý thì không bao giờ tự xoá.

Mỗi máy chỉ đồng bộ đơn của chính tài khoản đang đăng nhập. Đơn do người khác bán trên máy này hiện "Chờ <tên> đăng nhập để đồng bộ", vì máy chủ ghi thu ngân là người gửi lên, và gửi thay sẽ ghi sai người.

Đơn được ghi vào ca đang mở của quầy lúc đồng bộ, vì tiền đang nằm trong két hiện tại. Nếu khác ca lúc bán, dòng đó ghi "ghi vào ca khác".

Xung đột

Một đơn rơi vào Cần xử lý khi máy chủ không nhận nó như lúc bán. App không tự sửa gì; mỗi loại có một nút:

  • Giá đã đổi. Dòng hiện "Đã thu … · Hệ thống tính … · Chênh … (sẽ lệch két)". Bấm Ghi theo hệ thống để ghi đơn theo giá hiện tại của hệ thống. Tiền khách đã đưa thì đã nằm trong két, nên phần chênh sẽ hiện ở đối soát két (Dư/Thiếu) khi đóng ca. Đó là chỗ đúng để thấy nó, thay vì để máy âm thầm sửa giá.
  • Một sản phẩm đã bị xoá. Bỏ dòng đã xoá ghi phần còn lại; phần chênh cũng vào két như trên.
  • Hệ thống không đủ tồn. Hàng đã ra khỏi cửa, nghĩa là số tồn trên hệ thống đang sai. Sửa tồn (nhập hoặc kiểm kê) rồi Thử lại. App không cho tồn âm.
  • Ca của quầy đã đóng. Mở ca rồi thử lại.
  • Đã được xử lý ở nơi khác, ví dụ quản lý đã xử lý đơn đó khi đóng ca cưỡng bức: Đánh dấu đã xử lý.

Huỷ khỏi hàng đợi là quyết định, không phải nút dọn dẹp: phải ghi lý do, đơn sẽ không bao giờ được gửi, và tiền đã thu vẫn nằm trong két, hiện ở đối soát ca.

Không đóng được ca khi máy còn đơn chưa đồng bộ

"Còn N đơn ngoại tuyến của quầy này chưa đồng bộ. Đồng bộ hoặc xử lý xong rồi mới đóng ca."

Đóng ca khi tiền đã vào két mà chưa vào sổ thì báo cáo cuối ca chắc chắn sai. Lưu ý giới hạn: chặn này chỉ có trên chính máy giữ hàng đợi. Đóng ca từ một máy khác thì máy đó không nhìn thấy hàng đợi này.

Danh mục trên máy

Thanh trạng thái hiện "Danh mục ngoại tuyến: … trước". Danh mục là bản chụp sản phẩm, giá và tồn của địa điểm quầy đang đứng, tự làm mới khoảng 15 phút một lần khi có mạng; bạn cũng có thể bấm Tải lại danh mục. Quá 12 giờ, tuổi danh mục đổi màu cảnh báo: giá và tồn bạn bán theo có thể đã cũ, và mỗi chỗ cũ là một xung đột lúc đồng bộ. Lần tải lỗi thì máy vẫn dùng bản trước và bảng hàng đợi nói rõ lỗi.

Khi mất mạng, máy chặn bán quá số tồn trong bản chụp trừ đi số đã bán trong hàng đợi. Nhiều máy cùng bán món cuối thì máy nào đồng bộ sau sẽ gặp xung đột tồn.

Bộ nhớ trình duyệt

Bảng hàng đợi hiện "Bộ nhớ được trình duyệt giữ: có/không" cùng dung lượng đã dùng. "Không" nghĩa là trình duyệt có quyền tự dọn dữ liệu của trang khi máy thiếu chỗ. App đã xin giữ, nhưng trình duyệt có quyền từ chối. Dù "có" hay "không", xoá dữ liệu duyệt web, dùng tab ẩn danh, hay gỡ trình duyệt đều xoá luôn hàng đợi, và sau khi đã xoá thì không cách nào biết được đã mất gì. Trước khi dọn một máy quầy, hãy chắc chắn hàng đợi đã đồng bộ hết.

Mất mạng mà lỡ tải lại trang vẫn quay về được màn Bán, vì máy đã lưu sẵn một bản của app. Khi đó thanh trạng thái báo "Đang chạy từ bản lưu trên máy": quầy, ca và quyền hiện ra có thể đã cũ cho tới khi có mạng lại.

Cập nhật 9/10/2026