Tôi sẽ xem xét việc thêm một cột vào bảng GroupQuoteItem, GroupQuoteItem.Pastener. Cột này sẽ được sử dụng trong truy vấn xác định giá cuối cùng. Nếu bạn có N chiết khấu có cùng mức ưu tiên cao nhất, chúng sẽ được xếp chồng lên nhau (thứ tự không quan trọng, nhờ vào tính kết hợp của phép nhân).
Nếu sau đó tất cả các chiết khấu có mức độ ưu tiên cao này bị loại bỏ, thì các chiết khấu có mức độ ưu tiên thấp hơn có thể được thay thế. Điều này sẽ giúp bạn thiết lập cấu trúc chiết khấu khá phức tạp.
Tôi hy vọng rằng ít nhất cũng mang lại cho bạn một nơi nào đó để bắt đầu.