Jeg ville overveje at tilføje en kolonne til GroupQuoteItem-tabellen, GroupQuoteItem.Priority. Denne kolonne vil blive brugt i den forespørgsel, der bestemmer den endelige pris. Hvis du har N rabatter med den samme højeste prioritet, vil de blive stablet oven på hinanden (rækkefølgen er ligegyldig, takket være multiplikationens associativitet).
Hvis alle disse højprioriterede rabatter senere fjernes, kan lavere prioriterede rabatter træde i stedet. Dette skulle hjælpe dig med at opsætte ret komplekse rabatstrukturer.
Jeg håber, at det i det mindste giver dig et sted at starte fra.