Бих разгледал възможността за добавяне на колона към таблицата GroupQuoteItem, GroupQuoteItem.Priority. Тази колона ще се използва в заявката, която определя крайната цена. Ако имате N отстъпки с еднакъв, най-висок приоритет, те ще бъдат подредени една върху друга (редът няма значение, благодарение на асоциативността на умножението).
Ако всички тези отстъпки с висок приоритет бъдат премахнати по-късно, отстъпките с по-нисък приоритет могат да заемат тяхното място. Това трябва да ви помогне при настройването на доста сложни структури на отстъпки.
Надявам се, че това поне ви дава откъде да започнете.