Logic for Mutiple Discounts / Coupon Codes etc

Hi,

I’m working on some enhancements for a facility (futsal court) booking system for a client

Particularly, I’m working on the rate codes module - i.e. doing the logic behind having discounts for certain hours of certain days, when the person booking has a certain student card, X% off when they book 3 consecutive hours and stuff like that.

Its been a long time since I’ve started on working on this with my client, and the logic became particularly messy when the client needed multiple discount mechanics to be applied for a single booking.

e.g. person book 3 hours, from 2pm, 3pm and 4pm.
because of a certain promotion, 2pm and 3pm slots are discounted by 10%
and because he owns a certain student card, 4pm is discounted by 30%

I’m just wondering if there are any systems out there which you guys know handle such multiple discount structure mechanics well, in terms of the UI for the administrator, as well as in terms of logic?

For example, are there ecommerce systems that can handle a separate discount structure for members vs non members, together with time sensitive offers + coupon codes? How are these things normally pulled off?

I’m sure I’m not the only one pulling my hair out over this!