Ich würde versuchen, der GroupQuoteItem-Tabelle GroupQuoteItem.Priority eine Spalte hinzuzufügen. Diese Spalte würde in der Abfrage verwendet, die den Endpreis bestimmt. Wenn Sie N Rabatte mit der gleichen, höchsten Priorität haben, werden sie übereinander gestapelt (die Reihenfolge spielt dank der Assoziativität der Multiplikation keine Rolle).
Wenn alle diese Rabatte mit hoher Priorität später entfernt werden, können Rabatte mit niedrigerer Priorität an ihre Stelle treten. Dies sollte Ihnen helfen, ziemlich komplexe Rabattstrukturen einzurichten.
Ich hoffe, das gibt dir zumindest einen Ansatzpunkt.