> For the complete documentation index, see [llms.txt](https://docs.monpos.vn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.monpos.vn/ban-hang-and-doanh-thu/sales.md).

# Bán hàng (POS)

Màn hình bán hàng POS (Point of Sale) là trung tâm giao dịch của dự án Mon POS, được tối ưu hóa để thu ngân và chủ cửa hàng thực hiện thanh toán nhanh chóng, chính xác, phục vụ nhiều khách hàng song song và quản lý dòng tiền tức thì.

***

## 1. Giới thiệu tổng quan

Tính năng **Bán hàng (POS)** giúp tối ưu hóa tốc độ thanh toán tại quầy, giảm thiểu hàng chờ và tránh nhầm lẫn giá cả nhờ tích hợp quét mã vạch và các phím tắt tiện lợi.

* **Bán hàng offline 100%**: Hoạt động mượt mà không cần kết nối mạng Internet.
* **Đa tab giỏ hàng**: Cho phép mở nhiều hóa đơn cùng lúc để thanh toán song song.
* **Tích hợp sỉ & lẻ**: Tự động áp dụng giá bán sỉ hoặc giá bán lẻ phù hợp cho từng khách hàng.
* **Liên kết kho & sổ quỹ**: Trừ tồn kho thực tế ngay khi thanh toán và tự động đồng bộ dòng tiền sang Sổ quỹ.

***

## 2. Giao diện và các chức năng chính

Giao diện POS được chia làm 3 khu vực chính:

```
+------------------------------------------------------------+-----------------+
|  [Hóa đơn 1] [Hóa đơn 2] [+]            [Tra cứu] [Lịch sử]|   Khách hàng    |
+------------------------------------------------------------+                 |
|                                                            | [ Chọn khách ]  |
|  [F1] Tìm sản phẩm...             [F2] Quét mã vạch...     |                 |
|                                                            +-----------------+
|  +-------------------------------------------------------+ |  Tổng tiền hàng |
|  | Danh sách sản phẩm trong giỏ hàng                     | |  Chiết khấu     |
|  | - Tên sản phẩm, Biến thể (Size, Màu)                  | |  Thuế VAT (%)   |
|  | - Đơn vị tính (Chai, Lốc, Thùng)                       | |  Khách đưa      |
|  | - Kho xuất hàng                                       | |  Tiền thừa     |
|  | - Số lượng, Đơn giá, Thành tiền                       | |                 |
|  +-------------------------------------------------------+ | [F9] Thanh toán |
+------------------------------------------------------------+-----------------+
```

### A. Khu vực bên trái (70%): Quản lý Giỏ hàng

* **Thanh tìm kiếm sản phẩm (Phím tắt F1)**: Tìm nhanh sản phẩm theo tên hoặc mã.
* **Ô quét mã vạch (Phím tắt F2)**: Đặt con trỏ tại đây để quét mã vạch bằng máy quét chuyên dụng, sản phẩm sẽ tự động được thêm vào giỏ hàng.
* **Bảng danh sách sản phẩm**:
  * **Chọn kho**: Mỗi dòng sản phẩm có thể chọn xuất từ một kho hàng cụ thể (ví dụ: Kho chính, Kho phụ).
  * **Thay đổi số lượng & đơn giá**: Có thể điều chỉnh số lượng mua hoặc sửa giá bán trực tiếp (nếu được phân quyền).
  * **Chọn đơn vị tính**: Hỗ trợ quy đổi đơn vị (Ví dụ: bán lẻ 1 Chai hoặc bán 1 Thùng).
  * **Chọn biến thể**: Hỗ trợ chọn nhanh Size/Màu sắc của sản phẩm thông qua popover trực quan.

### B. Khu vực bên phải (30%): Thanh toán & Thông tin khách hàng

* **Tìm kiếm & Chọn khách hàng**: Liên kết hóa đơn với thông tin khách hàng trong cơ sở dữ liệu để tích lũy điểm hoặc ghi nhận công nợ.
* **Bảng tính tiền**:
  * **Tổng tiền hàng (Subtotal)**: Tổng giá trị hàng hóa chưa giảm giá và thuế.
  * **Chiết khấu (Discount)**: Giảm giá theo số tiền mặt hoặc phần trăm trên tổng hóa đơn.
  * **Thuế VAT**: Tự động áp dụng VAT mặc định từ cấu hình hệ thống (hoặc chỉnh sửa thủ công).
  * **Khách thanh toán (Grand Total)**: Tổng tiền khách phải trả sau khi tính chiết khấu và thuế.
  * **Khách đưa (Received Amount)**: Số tiền thực tế khách đưa cho thu ngân.
  * **Tiền thừa (Change Amount)**: Số tiền thừa cần trả lại khách.
* **Phương thức thanh toán (Phím tắt F8)**: Chọn giữa Tiền mặt (Cash), Chuyển khoản (Bank Transfer), hoặc Khác.
* **Chế độ bán (Phím tắt F7)**: Chuyển đổi linh hoạt giữa Bán lẻ (Retail) và Bán sỉ (Wholesale).

***

## 3. Quy trình thao tác chi tiết

### Bước 1: Khởi tạo giỏ hàng

* Mặc định hệ thống luôn có sẵn 1 tab giỏ hàng. Nếu muốn mở thêm hóa đơn mới để phục vụ khách khác song song, bấm nút `+` (hoặc phím tắt tương ứng) trên thanh tiêu đề.

### Bước 2: Thêm sản phẩm vào giỏ hàng

* **Cách 1 (Quét mã vạch)**: Ấn phím **F2** để focus vào ô quét mã vạch, tiến hành quét barcode sản phẩm. Sản phẩm sẽ tự động thêm vào giỏ hàng với số lượng là 1.
* **Cách 2 (Tìm kiếm thủ công)**: Ấn phím **F1** để focus vào ô tìm kiếm, nhập tên sản phẩm. Chọn sản phẩm từ danh sách hiển thị. Nếu sản phẩm có biến thể (Size/Màu) hoặc nhiều đơn vị tính, popover sẽ hiển thị yêu cầu bạn chọn biến thể và đơn vị phù hợp.

### Bước 3: Điều chỉnh thông tin giỏ hàng

* Thay đổi số lượng mua bằng cách nhập số trực tiếp vào cột **Số lượng** hoặc dùng các nút tăng/giảm.
* Lựa chọn kho xuất hàng cho từng sản phẩm tại cột **Kho hàng** để hệ thống trừ tồn kho chính xác.
* Chuyển đổi chế độ bán sỉ/bán lẻ bằng phím **F7** nếu khách hàng mua số lượng lớn.

### Bước 4: Nhập thông tin thanh toán & Khách hàng

* Nhập tên hoặc số điện thoại khách hàng tại ô **Khách hàng** ở cột bên phải. Nếu là khách mới, bấm nút **\[+]** để thêm nhanh thông tin.
* Nhập số tiền chiết khấu (nếu có) và nhập số tiền khách đưa tại ô **Khách đưa**.

### Bước 5: Hoàn tất & In hóa đơn

* Ấn phím **F9** hoặc click nút **Thanh toán & In**.
* Hệ thống sẽ hiển thị một cửa sổ xem trước hóa đơn (Invoice Print Preview).
* Xác nhận thông tin và bấm **Xác nhận & In** để lưu vào cơ sở dữ liệu SQLite cục bộ, in hóa đơn giấy và tự động giải phóng giỏ hàng hiện tại.

***

## 4. Danh sách phím tắt POS

Hệ thống hỗ trợ các phím tắt giúp thu ngân thao tác cực nhanh mà không cần dùng chuột:

| Phím tắt | Chức năng              | Mô tả                                                                   |
| -------- | ---------------------- | ----------------------------------------------------------------------- |
| **F1**   | Tìm kiếm sản phẩm      | Di chuyển con trỏ chuột vào ô tìm kiếm tên sản phẩm                     |
| **F2**   | Quét mã vạch           | Di chuyển con trỏ chuột vào ô quét mã vạch                              |
| **F7**   | Đổi chế độ giá         | Chuyển đổi qua lại giữa Bán lẻ $\leftrightarrow$ Bán sỉ                 |
| **F8**   | Phương thức thanh toán | Chuyển đổi giữa: Tiền mặt $\rightarrow$ Chuyển khoản $\rightarrow$ Khác |
| **F9**   | Thanh toán             | Mở màn hình xác nhận thanh toán & in hóa đơn                            |
| **F10**  | Hủy giỏ hàng           | Xóa sạch toàn bộ sản phẩm trong tab giỏ hàng hiện tại                   |

***

## 5. Các lưu ý quan trọng & Quy tắc nghiệp vụ

> \[!WARNING] **Quy tắc chặn tồn kho âm**: Hệ thống được cấu hình không cho phép xuất bán quá số lượng tồn kho thực tế của sản phẩm tại kho đã chọn. Nếu số lượng trong giỏ vượt quá tồn kho khả dụng, hệ thống sẽ hiển thị cảnh báo và không cho phép thanh toán.

> \[!IMPORTANT] **Quy tắc ghi nợ khách hàng**:
>
> * Nếu hóa đơn có giá trị lớn hơn số tiền khách đưa (`Received Amount < Grand Total`), hệ thống yêu cầu bạn **bắt buộc phải chọn một Khách hàng** cụ thể để ghi nhận số tiền thiếu vào công nợ của khách hàng đó.
> * Đối với khách lẻ (không lưu thông tin), thu ngân bắt buộc phải thu đủ tiền trước khi bấm thanh toán.

> \[!NOTE] **Chế độ bán sỉ (Wholesale)**:
>
> * Khi chuyển sang chế độ bán sỉ (Wholesale Mode), toàn bộ sản phẩm trong giỏ hàng hiện tại sẽ tự động chuyển sang đơn giá sỉ được định cấu hình sẵn trong danh mục sản phẩm.
> * Nếu một sản phẩm không có cấu hình giá sỉ (giá sỉ bằng 0), hệ thống sẽ giữ nguyên giá bán lẻ ban đầu chứ không áp dụng giá 0đ.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.monpos.vn/ban-hang-and-doanh-thu/sales.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
