Chciałbym przyjrzeć się dodaniu kolumny do tabeli GroupQuoteItem, GroupQuoteItem.Priority. Ta kolumna zostanie użyta w zapytaniu, które określa ostateczną cenę. Jeśli masz N rabatów o tym samym, najwyższym priorytecie, zostaną one ułożone jeden na drugim (kolejność nie ma znaczenia, dzięki asocjacji mnożenia).
Jeśli wszystkie te rabaty o wysokim priorytecie zostaną później usunięte, ich miejsce mogą zająć rabaty o niższym priorytecie. Powinno to pomóc w tworzeniu dość złożonych struktur rabatów.
Mam nadzieję, że przynajmniej da ci to od czego zacząć.