Да, кажется понял. Нет, вопрос немного не об этом.
Как у меня сейчас реализовано:
Есть заказ, есть некие "стратегии по модификации цены". Они пробегают по заказу и меняют его цену. Т.е. это акции и прочее. Грубо говоря ваш OrderService который вы предлагали.
Но с этим функионалом у меня:
1) Нет истории - ну это ладно
2) Я не могу кусками модифицировать заказ. Т.е. например забрать у заказа акцию или добавить ее вручную.
Поэтому я описал свою идею: записывать к заказу "модификаторы цены" - т.е. те изменения которые были применены к цене. Их можно было бы убрать/добавлять вручную. Вроде похоже на "историю" а вроде это и не история. Поэтому я зазвал это "модификатор цены". Т.е. это не функционал по изменению, а фактические результаты "стратегии по модификации цены" .
Очень плохо с неймингом и терминологией, сори, плохо объясняю :(
Про ручное применение акций в изначальной постановке не было :) В изначальное постановке было про низменность цены :)
Тогда можно развить идею в том, что «Действующая Акция» и «Примененная к определенному заказу акция в определенное время» - это две разные вещи в разных контекстах. Примененные акции будут жить в Агрегате заказ и через заказ их можно модифицировать.
Заказ будет обеспечивать инвариант товара и акций (например - суммарная скидка по всем акциям не больше 50%)
Если именно заказ за этим следит, конечно.