Jag skulle överväga att lägga till en kolumn i tabellen GroupQuoteItem, GroupQuoteItem.Priority. Denna kolumn skulle användas i frågan som bestämmer det slutliga priset. Om du har N rabatter med samma högsta prioritet, kommer de att staplas ovanpå varandra (ordningen spelar ingen roll, tack vare multiplikationsassociativiteten).
Om alla dessa högprioriterade rabatter senare tas bort, kan lägre prioritetsrabatter ersättas. Detta bör hjälpa dig att skapa ganska komplicerade rabattstrukturer.
Jag hoppas att det åtminstone ger dig någonstans att börja från.