PankovAlxndr
@PankovAlxndr
FullStack: php, laravel, vue, docker

Как мне реализовать смену параметров заказа?

Как правильно менять цену доставки в заказе при частой смене параметров этой самой доставки

у меня есть в БД заказ, у заказа есть свойства
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%, а это не честно по отношению к клиенту
мне нужно как-то понять, что его заказ всегда считать "по старым" процентам.

вот и вопрос как мне хранить эти СТАРЫЕ параметры, чтобы все старые заказы, в случае их пересчета считались по процентам на момент оформления?

вариант просто создавать новые доставки в таблице..
те название доставки будет такое же, но проценты новые и ввести какой-то флаг, которые будет отвечать за активные на данный момент доставки для клеинтской части.
но не знаю правильный ли это подход?
  • Вопрос задан
  • 25 просмотров
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Первичные документы (в вашем случае: заказ и его доставка) должны быть неизменны. Храните эти данные в таблице заказов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы