Files
loyalty-agent-service/docs/knowledge-refs/customer/adjustment_deduction_logic.md

3.4 KiB

ref_id, parent_card, title, domain, ref_type, tags
ref_id parent_card title domain ref_type tags
customer/adjustment_deduction_logic customer/operations_adjustment Chi tiết Logic Bù Trừ và Trừ Điểm (Adjustment Deduction Logic) customer edge_cases
adjustment
offset
deduction
negative balance
fifo

Chi tiết Logic Bù Trừ và Trừ Điểm (Adjustment Deduction Logic)

Thuộc về

customer/operations_adjustment — Card mô tả quy tắc bù trừ (offset) và trừ điểm (deduction) chung chung. Reference này làm rõ chi tiết thứ tự trừ điểm giữa các bucket, cách xử lý negative balance để đảm bảo model hiểu cách tính toán điểm chính xác khi có điều chỉnh.

Chi tiết

Logic Bù trừ (Offset) khi Cộng Điểm (Positive Adjustment)

Khi một giao dịch Positive Adjustment được duyệt, hệ thống phân bổ số điểm được cộng theo thứ tự ưu tiên sau:

Trình tự Điều kiện kiểm tra Hành động
1 Tìm các Bucket đang có số dư âm (Negative Balance) Điểm cộng thêm được ưu tiên dùng để bù đắp (offset) cho bucket đang âm về 0.
2 Nếu có nhiều Bucket âm Ưu tiên bù trừ cho Bucket có Expiry Date sớm nhất.
3 Điểm cộng vẫn còn dư (sau khi offset hết các bucket âm) Số điểm dư sẽ được tạo thành một Bucket mới với Expiry Date được cấu hình trong giao dịch điều chỉnh.

Logic Trừ Điểm (Deduction) khi Điều chỉnh Âm (Negative Adjustment)

Người dùng có hai lựa chọn khi thực hiện Negative Adjustment:

Tùy chọn Cơ chế xử lý
Chỉ định đích danh Bucket Nếu người dùng chọn cụ thể 1 Bucket để trừ điểm (dựa trên Bucket Expiry Date), hệ thống sẽ CHỈ trừ điểm trên Bucket đó. Nếu số lượng trừ lớn hơn số dư của Bucket, Bucket đó sẽ bị âm (nếu Pool cho phép âm).
Không chỉ định Bucket (Mặc định) Hệ thống tự động trừ điểm theo phương pháp FIFO (First-In, First-Out) dựa trên Expiry Date. Điểm sẽ được trừ dần từ Bucket có ngày hết hạn sớm nhất đến ngày hết hạn muộn nhất cho đến khi đủ số lượng.

Validation Rules

Rule Khi nào check Reject nếu
Cho phép âm (Allow Negative Balance) Khi thực hiện Negative Adjustment mà số lượng trừ lớn hơn tổng số dư khả dụng Pool Definition được cấu hình Allow Negative Balance = OFF

Ví dụ cụ thể

  1. Ví dụ Bù trừ (Offset):

    • Tình trạng: Khách hàng đang có 1 Bucket âm -50 điểm (hết hạn 31/12/2024).
    • Hành động: Nhân viên thực hiện Positive Adjustment +100 điểm (hết hạn 31/12/2025).
    • Kết quả: Hệ thống lấy 50 điểm bù cho Bucket cũ (về 0). 50 điểm còn lại vào Bucket mới (Balance 50, hết hạn 31/12/2025).
  2. Ví dụ Trừ điểm theo FIFO:

    • Tình trạng: Khách hàng có Bucket A (50 điểm, hết hạn T6/2024) và Bucket B (100 điểm, hết hạn T12/2024).
    • Hành động: Nhân viên thực hiện Negative Adjustment -70 điểm không chỉ định Bucket.
    • Kết quả: Hệ thống trừ 50 điểm ở Bucket A (về 0) và tiếp tục trừ 20 điểm ở Bucket B (còn 80).