Sales & Order Domain / HTML Specification
Bounded Context 2

Sales & Order Domain

Tài liệu đặc tả nghiệp vụ chi tiết về tiếp nhận đơn bán hàng, phân rã chi tiết đơn hàng (Order Items) và hoạch định nguyên vật liệu bao bì Logistics.

📖 1. Ngôn Ngữ Chung (Ubiquitous Language)

Chuẩn hóa các thuật ngữ kinh doanh đơn hàng và đối tác khách hàng thống nhất trong codebase.

Thuật ngữ (Việt - Anh) Mã nguồn (Model) Định nghĩa nghiệp vụ & Ranh giới
Hồ Sơ Đơn Hàng
Sales Order
Order Ghi nhận thỏa thuận thương mại, thời hạn giao hàng mong muốn chung và thông tin khách hàng đặt mua thành phẩm.
Dòng Chi Tiết Đơn Hàng
Order Item
OrderItem Dòng chi tiết mặt hàng trong đơn. Bắt buộc liên kết tới một Variant của sản phẩm gốc và xác định số lượng cụ thể.
Khách Hàng
Customer
Customer Đối tác mua hàng từ Kingston, lưu trữ thông tin địa chỉ giao hàng và thông tin thanh toán pháp lý.
Vật Tư Đính Kèm Đơn Hàng
Order Item Material
OrderItemMaterial Vật tư sản xuất (PRODUCTION) và đóng gói (PACKAGING) tùy biến đính kèm theo từng dòng đơn hàng chi tiết.

📐 2. Sơ Đồ Thiết Kế Domain Model

Sơ đồ mối quan hệ giữa các Aggregates, Entities, và Value Objects trong phân hệ Sales & Order.

1 - N 1 - N 1 - N Customer Aggregate Customer Aggregate Root Order Aggregate Order Aggregate Root OrderItem OrderItemMaterial

📂 3. Các Aggregates & Ranh Giới Nghiệp Vụ

Bản đặc tả chi tiết quy tắc nghiệp vụ tĩnh và ranh giới giao dịch của từng Aggregate.

Sales Core

Order Aggregate (Giao dịch bán hàng)

Ranh giới quản lý các cam kết thương mại với khách hàng. Toàn bộ các dòng item đặt mua và thông số bao bì đi kèm được kiểm soát nhất quán bên trong ranh giới giao dịch này.

  • Quy tắc 1: Không cho phép lưu đơn hàng nếu không có bất kỳ dòng chi tiết OrderItem nào.
  • Quy tắc 2: Mỗi OrderItem bắt buộc phải tham chiếu đến một Biến thể thành phẩm thương mại (`Variant`) có sẵn.
  • Quy tắc 3: Ngày mong muốn giao hàng của từng sản phẩm không được trước ngày thiết lập đơn.
Customer Info

Customer Aggregate (Quản lý đối tác)

Ranh giới quản lý dữ liệu đối tác thương mại, cách ly với các thay đổi giao dịch bán hàng.

  • Quy tắc 1: Khách hàng được định danh độc nhất bằng Mã số thuế hoặc Số điện thoại.
  • Quy tắc 2: Địa chỉ giao hàng mặc định được lưu làm giá trị Value Object khởi tạo cho đơn hàng mới.

🔌 4. Domain Events & Domain Services

Các sự kiện và dịch vụ nghiệp vụ liên vùng được tích hợp trong phân hệ.

Domain Events (Sự kiện nghiệp vụ)

  • `OrderPlacedEvent`: Phát ra khi nhân viên kinh doanh tạo đơn. Kích hoạt giữ chỗ tạm thời tồn kho thành phẩm ảo để đảm bảo tính sẵn có của hàng hóa.
  • `OrderApprovedEvent`: Phát ra khi ban giám đốc duyệt đơn hàng. Kích hoạt phân hệ Kế hoạch sản xuất (`production-planning`) tự động lên lịch WorkOrder.

Domain Services (Dịch vụ nghiệp vụ)

`LogisticsPackagingService` (Tính toán bao bì tự động)

Đọc thông số đóng gói định mức của biến thể sản phẩm R&D, tự động cộng dồn nhu cầu bao bì carton, màng co và pallet gỗ theo quy mô số lượng đơn hàng:

  • Pallet: Nhu cầu = Số lượng Q × Định mức số pallet/bộ.
  • Carton: Nhu cầu = Số lượng Q × Số lượng thùng đóng gói kèm/bộ.
  • Lưu thông số kết quả vào bảng `OrderItemMaterial` của đơn hàng với phân loại `type = "PACKAGING"`.

🏁 5. Luồng Nghiệp Vụ Chính (Happy Path Flow)

Quy trình dòng chảy công việc chuẩn từ khi tạo đơn hàng đến khi được duyệt sẵn sàng sản xuất.

1

Khởi tạo đơn hàng

Chọn khách hàng, thêm các biến thể SKU thành phẩm và nhập số lượng Q.

2

Bóc tách bao bì

Hệ thống tự động chạy dịch vụ tính toán vật tư logistics cần dùng.

3

Ký duyệt đơn hàng

Ban giám đốc phê duyệt đơn, chuyển trạng thái Order sang APPROVED.

4

Chuyển tiếp sản xuất

Hệ thống phát sự kiện kích hoạt phân hệ hoạch định kế hoạch xưởng.