Посмотрите как это делается в pms-системах (отели, да и вообще любое бронирование ресурсов). Это будет правильнее всего т.к. там учитываются практически все вариации ситуаций. Но там и сущностей будет больше. Тарифы, услуги, пакеты услуг, календари, приказы на изменение цен в тарифах, скидки, динамическое ценообразование, типы клиентов, сегментация и т.д. Это всё влияет на итоговую сумму в конечном счёте.