Hoá đơn
Vòng đời hoá đơn, cách tính tiền và trạng thái chi trả.
Hoá đơn được sinh ra từ đâu

Hoá đơn chỉ được sinh tự động khi phiên kiểm tra hoàn tất, mỗi đơn hợp lệ đúng một hoá đơn. Không có thao tác tạo hoá đơn bằng tay.
Mã hoá đơn lấy từ mã đơn: HD- cộng phần sau tiền tố YC- của mã đơn.
Điều kiện chặn phát hành
Nếu một loại phế liệu trong đơn chưa có giá thu mua hiệu lực, hệ thống chặn phát
hành với lỗi INVOICE_PRICE_MISSING: Loại … chưa có giá thu mua hiệu lực. Cần
cấu hình Bảng giá trước khi hoàn tất.
Cách tính tiền

Tiền được tính theo tám bước, mỗi bước làm tròn lên nửa đơn vị (làm tròn 1 đồng).
Bước 1 — Gộp khối lượng cùng loại
Mỗi dòng đưa vào công thức phải là một loại duy nhất. Khối lượng được chuyển thành số nguyên gram và tiền dùng phép tính số nguyên để tránh sai số dấu phẩy động.
Bước 2 — Chọn bậc và một đơn giá
A = khối lượng tích luỹ trước đó + khối lượng giao dịch này
bậc = bậc đầu tiên có "đến" rỗng, hoặc có A < "đến"
đơn giá = giá của bậc đó
thành tiền = làm tròn(A phần thường × đơn giá)Không chia giá luỹ tiến
Đây là điểm rất dễ hiểu nhầm: hệ thống không chia khối lượng ra nhiều bậc rồi
tính từng phần. Toàn bộ khối lượng phần thường dùng một đơn giá duy nhất của
bậc mà tổng tích luỹ rơi vào. Biên bậc theo dạng [từ, đến) — đúng tại mốc thì
rơi vào bậc kế tiếp.
Bước 3 — Mở kỳ thưởng
Nếu loại phế liệu có bật thưởng và tổng tích luỹ đạt ngưỡng của bậc áp chót, hệ thống mở một kỳ thưởng:
- Bắt đầu từ hôm sau ngày kích hoạt.
- Kéo dài theo số ngày cấu hình.
- Có hạn mức khối lượng theo cấu hình.
- Giá thưởng bằng giá của bậc vừa dùng.
Bước 4 — Dùng hạn mức thưởng
Trong kỳ thưởng, khối lượng được hưởng giá thưởng cho tới khi hết hạn mức; phần dư tính theo tích luỹ thường. Hết hạn mức thì kỳ kết thúc ngay.
Cấu hình thay đổi không cắt kỳ thưởng đã mở, vì kỳ được chốt tại thời điểm mở.
Bước 5 — Phí vận chuyển
phí vận chuyển của mỗi loại = làm tròn(khối lượng × đơn giá vận chuyển của nhóm)Đơn giá vận chuyển nằm ở cấp nhóm giá, không phải cấp từng loại.
Bước 6 — Phí phân loại
nếu khách đã phân loại: phí phân loại = 0
nếu chưa phân loại: phí phân loại = làm tròn(tổng khối lượng × đơn giá phân loại)Bước 7 — Thuế VAT
VAT = làm tròn((phí vận chuyển + phí phân loại) × tỉ lệ VAT / 100)VAT chỉ áp trên phí vận chuyển và phí phân loại
VAT không áp trên tiền phế liệu. Tỉ lệ mặc định trong cấu hình là 8% và
quản trị viên sửa được. Đây là tham số sản phẩm lấy từ ví dụ thiết kế ban đầu,
không phải kết luận về nghĩa vụ thuế. Cần người có thẩm quyền xác nhận tỉ lệ
áp dụng thực tế.
Bước 8 — Thực nhận
thực nhận = max(0, tổng tiền phế liệu − vận chuyển − phân loại − VAT)Tiền túi phân loại không trừ vào thực nhận — đó là khoản thu riêng.
Không có phí dịch vụ
Hoá đơn không cộng phí dịch vụ. Các thành phần duy nhất là tiền phế liệu, phí vận chuyển, phí phân loại và VAT.
Giá trị mặc định của bộ phí
Các con số dưới đây là giá trị mặc định trong cơ sở dữ liệu, không phải giá đang áp dụng cho sản xuất. Giá trị thật xem tại màn Cài đặt → Bảng giá.
| Tham số | Mặc định |
|---|---|
| Tỉ lệ giá bán gợi ý so với giá mua | 130 |
| Số ngày kỳ thưởng | 2 ngày |
| Hạn mức thưởng | 10 kg mỗi kỳ |
| Đơn giá phân loại | 400 đ/kg |
| Giá túi phân loại | 15.000 đ/bộ |
| Tỉ lệ VAT | 8% |
| Thù lao người thu gom | 520 đ/kg |
Kiểm tra giá trước khi dùng để đối soát
Các giá trị trên nằm trong dữ liệu khởi tạo và dữ liệu xem trước. Đừng dùng chúng làm căn cứ tính tiền thật.
Bất biến của hoá đơn
Hoá đơn là bản ghi bất biến:
- Số tiền, dòng chi tiết, phí, khách hàng và ngày phát hành được chốt.
- Không tính lại khi bảng giá thay đổi.
- Không tính lại khi khách xác nhận hoặc khi chi tiền.
- Cơ sở dữ liệu chặn sửa snapshot, nhật ký và sổ giá.
Chưa có điều chỉnh hoặc huỷ hoá đơn
Hiện chưa có luồng điều chỉnh hoặc huỷ hoá đơn. Khi có khiếu nại, biện pháp hiện có là tạm dừng chi trả để rà soát. Điều này được ghi nhận là quyết định (INV-D11) chứ chưa phải tính năng đã xây.
Trạng thái chi trả
Vòng đời hoá đơn gắn với trạng thái chi trả:
| Trạng thái | Nhãn trên trang quản trị | Nhãn trên app người dân |
|---|---|---|
customer | Chờ khách xác nhận | Chờ xác nhận |
transfer | Chờ thanh toán | Chờ chuyển khoản |
cash | Chờ thanh toán | Chờ nhận tiền mặt |
paused | Tạm dừng thanh toán | Tạm dừng thanh toán |
paid | Đã thanh toán | Đã thanh toán |
Hai trạng thái hiển thị giống nhau ở nội bộ
transfer và cash đều được gộp thành nhóm Chờ thanh toán trên trang quản
trị. Muốn biết khách chọn cách nào, mở chi tiết hoá đơn.
Chuyển trạng thái hợp lệ
customer ──khách xác nhận──▶ transfer hoặc cash
customer ──quản trị/kế toán──▶ paused
transfer hoặc cash ──kế toán──▶ paid
transfer hoặc cash ──kế toán──▶ paused
paused ──tiếp tục──▶ trạng thái cũ, hoặc customer nếu phải chọn lại cách nhận tiền
paid ──▶ kết thúc, không sửa, không xoá, không chi lạiAi được thao tác
| Thao tác | Ai được làm |
|---|---|
| Xác nhận hoá đơn | Chính khách hàng, chỉ khi hoá đơn ở trạng thái chờ khách xác nhận |
| Ghi nhận đã trả | Quản trị viên và Kế toán |
| Tạm dừng chi trả | Quản trị viên và Kế toán |
| Tiếp tục chi trả | Quản trị viên và Kế toán |
Không có quyền riêng cho chi trả
Hệ thống không có quyền pay tách riêng. Quyền chi trả gắn với vai trò Quản trị
viên và Kế toán.
Nhật ký chi trả
Mọi thay đổi trạng thái chi trả đều được ghi vào bảng nhật ký chỉ-thêm, với một trong các loại: phát hành, xác nhận, tạm dừng, tiếp tục, đã trả.
Ghi nhận chi trả là thao tác thủ công
Khi kế toán chọn "đã trả", hệ thống ghi nhận thủ công sau khi tiền đã được chuyển thật. Hệ thống không gọi API ngân hàng.
Màn Tài chính
Màn Tài chính là nơi đối soát toàn bộ dòng tiền trong tháng.

Góc trên bên phải hiển thị kỳ đang xem và quyền truy cập của bạn. Các chỉ số chính:
| Chỉ số | Ý nghĩa |
|---|---|
| Doanh thu | Tổng tiền bán được trong kỳ. |
| Chi phí mua | Tổng tiền YeChai đã trả và phải trả cho khách. |
| Lợi nhuận | Doanh thu trừ chi phí mua. |
| Biên lợi nhuận | Tỉ lệ lợi nhuận trên doanh thu. |
Phiên doanh thu

Bảng này gom doanh thu theo từng phiên thu gom, giúp đối chiếu giữa tiền bán được và khối lượng đã thu.
Phiếu chi

Danh sách các khoản phải trả, gồm cả thù lao người thu gom và các khoản chi cho khách đang chờ xử lý.
Số liệu trên màn Tài chính không phải số thật
Trên môi trường xem thử, màn Tài chính chỉ có dữ liệu của một ngày và lợi nhuận đang âm. Đó là đặc điểm của dữ liệu mẫu, không phải tình hình kinh doanh.