Opencart. Связка модулей разовых и накопительных скидок.

Все проекты
Прошло времени:   11 лет 6 месяцев 2 недели 1 день 18 часов 56 минут
Задача: связать обе системы скидок — разовую и накопительную и заставить их учитывать акции и скидки, назначаемые товарам по-отдельности.

В настоящее время, на сайте действуют обе системы, два модуля: Скидки от суммы заказа и Накопительные скидки на основе купонов. Обе прогрессивные, назначающие размер скидок в зависимости от суммы заказа.

Но система подсчёта итога, их тупо плюсует, делая очень хорошо клиенту и вводя в разорение продавца. Нет речи ни каком взаимодействии и логичном расчёте. Приходится отрубать накопительные, оставляя только разовые. Да к тому же, модулям всё равно — под акцией товар или нет, назначены ему собственные скидки или нет.

Мне нужна реализация следующего алгоритма подсчёта итоговой суммы заказа.

1. Посчитать сумму заказа. Если в нём есть акционные или скидочные товары, то считать по акционным и скидочным ценам. /* Впрочем, система и так будет считать подобным образом. */ Запомнить это число как «№ 1».

2. Теперь снова посчитать сумму заказа, но теперь на основе базовых цен товаров, без их собственных скидок и акций. Запомнить это число как «№ 2».

3. Взять число «№ 1» и пересчитать его, на этот раз, с вычетом подходящего процента разовой скидки. Запомнить это число как «№ 3».

4. Взять число «№ 2» и пересчитать его с вычетом подходящего процента разовой скидки. Запомнить это число как «№ 4».

5. Сравнить оба полученных числа. Запомнить меньшее как «№ 5». /* Таким образом мы получим наиболее выгодное и логичную сумму для клиента: если ему выгодно, то сработали акции магазина, а если нет, то включилась его разовая скидка. Теперь надо выяснить — может быть клиенту будет выгоднее использовать накопительную, а не разовую скидку. Но это уже касается только зарегистрированных клиентов, так как накопительные скидки считаются только для них. */

6. /* Поэтому, на данном этапе, модуль должен закончить обработку заказа незарегистрированного клиента. */ Берётся меньшее из чисел №№ «3» и «4», а затем добавляется в качестве готовой суммы для дальнейшего расчёта итога, со всеми его методами доставки, способами оплаты и т.д.

/* Теперь работа с зарегистрированным клиентом. */

7. Если клиент зарегистрирован, то взять число «№ 1» и пересчитать его за вычетом накопительной скидки клиента. Запомнить это число как «№ 6».

8. Если клиент зарегистрирован, то взять число «№ 2» и пересчитать его за вычетом накопительной скидки клиента. Запомнить это число как «№ 7».

9. Сравнить оба полученных числа. Запомнить меньшее как «№ 8».

10. Теперь надо сравнить оба полученных меньших числа — «№ 7» и «№ 8». Запомнить меньшее из них как «№ 9». /* Это наиболее выгодная зарегистрированному клиенту сумма, учитывающая его накопительную скидку. Вот теперь и надо выяснить окончательно, какая ему выгоднее в итоге — накопительная, разовая или изначально предоставленная акционными ценами товаров. */

11. Берётся число «№ 9» и сравнивается с «№ 5». Оставляется меньшее и запоминается как «№ 10».

12. «№ 10» принимается суммой заказа для зарегистрированного клиента и добавляется в качестве готовой суммы для дальнейшего расчёта итога, как в случае для незарегистрированного клиента из шестого пункта алгоритма.


***
В процессе обсуждения возможны внесения изменений и дополнений.
    Видеть контакты заказчика и оставлять свои предложения по проекту могут только зарегистрированные и авторизованные пользователи.
    Зарегистрируйтесь или войдите на сайт под своим именем.

    Фриланс-биржа Web-lance.net предлагает огромные возможности по поиску работы как опытным специалистам в сфере интернет-бизнеса, так и новичкам, только постигающим основы заработка во всемирной сети. Здесь вы найдете сотни интересных вакансий в сфере дизайна, копирайтинга, программирования, верстки, контент-менеджмента и других сфер деятельности востребованных среди интернет-пользователей. Также, зарегистрировавшись на бирже, вы сможете разместить здесь свою анкету, указав в ней свою специализацию и контактные данные, что даст возможность потенциальным клиентам, связаться с вами для дальнейшего взаимовыгодного сотрудничества. Сайт удобно структурирован и разбит на тематические разделы, что позволяет даже неопытным заказчикам точно определять категорию, в которую стоит публиковать их проект, в тоже время, упрощая исполнителям поиск интересующих их вакансий. Кроме того на портале имеется раздел Блоги где зарегистрированные пользователи могут публиковать материалы, а также Форум на котором исполнители и заказчики смогут обсудить рабочие моменты, а также пообщаться на интересующие их темы. Приятной вам работы на Web-lance.net - бирже, где вы сможете найти лучших исполнителей и самые интересные проекты.

    Хенд-мейд – говоря русским языком – художники-прикладники. Предмет их искусства – произведения ручной работы, предметы быта или виртуозно выполненные украшения. Резьба по дереву и кости, вышивка, металлические аксессуары, всего и не перечесть, настолько разнообразна фантазия этих мастеров.