Bỏ qua để đến nội dung

Hồ sơ, ngôn ngữ và cửa hàng

import { Aside } from ‘@astrojs/starlight/components’;

MụcVào từMục đíchQuyền
Hồ sơ/point-of-sale/settings/profileTên, mật khẩu, đăng xuấtTất cả cashier
Ngôn ngữModal PosSettingsLanguageModalLocale giao diện (en, vi)Tất cả cashier
Cửa hàng/point-of-sale/settings/storeXem thông tin cửa hàng activeCần pos ghi

Hồ sơ — tab thông tin Hình: Tab Hồ sơ — email (không sửa), tên, avatar, nút đăng xuất. Spec owner: cashier-screenshots.spec.ts → "settings — profile (with profile tab active)".

Hồ sơ — tab đổi mật khẩu Hình: Tab Mật khẩu — form RHF + Zod, validation realtime. Spec owner: cashier-screenshots.spec.ts → "settings — profile password tab".

Ngôn ngữ — modal chọn locale Hình: Modal chọn ngôn ngữ giao diện (English / Tiếng Việt) — mở từ ngôn ngữ card trên hub. Spec owner: cashier-screenshots.spec.ts → "settings — language modal (open)".

Cửa hàng — thông tin active Hình: Trang cửa hàng — store ID, tên, SĐT (chỉ xem). Spec owner: cashier-screenshots.spec.ts → "settings — store info".

Từ shell Thu ngân → Cài đặt → Hồ sơ (/point-of-sale/settings/profile). Trang có 2 tab:

  • Hồ sơ — tên hiển thị, email (không cho sửa), avatar.
  • Mật khẩu — đổi mật khẩu với form RHF + Zod (<ChangePasswordSettings>).

URL sync: tab hiện tại lưu qua ?tab=profile hoặc ?tab=password (useSearchParams).

Cuộn xuống cuối trang → click Đăng xuất → confirm trong <LogoutModal>.

Source: apps/vendor-web/src/app/point-of-sale/pages/settings/settings-profile-page.tsx.

  • Email không thể đổi tại POS — chỉ chủ mới đổi được trong Dashboard (bảo mật).
  • Mật khẩu mới phải đủ mạnh theo schema (<ChangePasswordSettings>).
  • Sau khi đăng xuất, cashier được đưa về /cashier-login.

Từ shell Thu ngân → Cài đặt → Ngôn ngữ → mở Modal PosSettingsLanguageModal.

  • 🇬🇧 English — mặc định cho mọi cashier mới.
  • 🇻🇳 Tiếng Việt — chuyển toàn bộ UI sang tiếng Việt.

Source: apps/docs có /vi/ mirror — khi chuyển sang tiếng Việt, tài liệu hướng dẫn cũng tự động sang /vi/....

Từ shell Thu ngân → Cài đặt → Cửa hàng (/point-of-sale/settings/store) — chỉ hiển thị khi cashier đã chọn cửa hàng active.

Trang chỉ xem, không sửa (sửa cửa hàng phải làm ở Dashboard):

TrườngNguồn
Store IDusePosStoreId()
Tên cửa hàngusePosStoreBrand().name (fallback “Cửa hàng chưa đặt tên”)
SĐTstore.phone (nếu có)

Source: settings-store-page.tsx.

Không qua trang này — dùng store selector trên top bar của shell Thu ngân. Khi đổi:

  1. Catalog, giá, khách hàng, thuế đều thay đổi (mỗi cửa hàng 1 dataset).
  2. Giỏ hàng bị xoá — bán dở phải kết thúc hoặc lưu nháp trước.
  3. Nhân viên thuộc 1 cửa hàng (profile.store_id) sẽ không thấy dropdown.

Xem Bán — có khách hàng & coupon và FAQ — bán & thanh toán → Phiên hết hạn.

Triệu chứngXử lý
Email để trống trong formEmail không sửa được ở POS; chủ sửa trong Dashboard
Tab “Mật khẩu” báo lỗi validationMật khẩu mới phải đủ dài + khác mật khẩu cũ
Không thấy mục “Cửa hàng”Chưa chọn cửa hàng active trên top bar, hoặc thiếu pos ghi
Đổi ngôn ngữ không ảnh hưởng shellReload POS (Ctrl/Cmd + R) sau khi đổi locale