Как правильно менять цену доставки в заказе при частой смене параметров этой самой доставки
у меня есть в БД заказ, у заказа есть свойства
id
.....
id_доставки
сумма_доставки
сумма_сборки
сумма_услуг
еще в заказе есть таблица с доставками
id
.....
процент_от_товаров
процент_сборки
сумма_доп_услуг
Логика такая:
1) клиент набирает корзину товаров
2) выбирает какую-то доставку одну (у каждой доставки свои проценты начисления)
3) получаем итоговые суммы в заказе
Например: заказ на 1.000 рублей, доставка "до квартиры", а у этой доставки выставлен процент 10, сборка как 5, доп 100р
Те мы от 1.000р берем 10% + 5% + 100р и получаем сумму услуг и это параметры при создании заказ сохраняются в таблицу заказа уже
(поля сумма_доставки, сумма_сборки сумма_услуг)
Соответственно если клиент дополнит заказ, то мы знаем его доставку (id_доставки) и вытаскивая ее проценты(параметры) перечитываем все суммы в заказе, все ок.
Те в заказе мы хранаим привязку к доставке, у которой берем правила начисления, которые считаем и сохраняем в заказ.
СТолкнулся с такой проблемой:
у нас есть 100000+ выполненных заказов и еще 1000 на складе уже оплачены и готовы к выдаче.
бизнес требует, чтобы изменились проценты доставки,
те была
доставка "до квартиры" -> процент 10, сборка как 5, доп 100р
нужно сделать
доставка "до квартиры" -> процент 12, сборка как 6, доп 100р
и так далее (по факту там 12 вариантов, которые от суммы и веса товара еще зависят, а не только от типа до дома, квартиры, пвз)
те табличка "доставка" 12 строк
если я это в БД поправлю, то для новых заказов это будет работать как надо, НО!!!!
мне нужно сохранить цифры старых заказов, которые уже выданы или лежать на складе..
те клиент оформил заказ по 10% оплатил мы его отдали.
пришел через 30 дней (у нас уже другие правила доставок) и сдал какой-то товар по браку
соответственно мне нужно пересчитать его заказ
(вычесть стоимость брака, обратиться в таблицу доставок, получить проценты и посчитать новые суммы)
НО клиент-то оформлял за 10%, а сейчас я, при обращении к доставке получу новые 12%, а это не честно по отношению к клиенту
мне нужно как-то понять, что его заказ всегда считать "по старым" процентам.
вот и вопрос как мне хранить эти СТАРЫЕ параметры, чтобы все старые заказы, в случае их пересчета считались по процентам на момент оформления?
вариант просто создавать новые доставки в таблице..
те название доставки будет такое же, но проценты новые и ввести какой-то флаг, которые будет отвечать за активные на данный момент доставки для клеинтской части.
но не знаю правильный ли это подход?
Думаю, логичным вариантом бы хранить информацию о заказе в самом заказе т.е. в заказе помимо информации о типа доставки, товарах и прочем, дополнительно хранить данные о % расчета.