Доработка для VirtueMart 1.1
Реализовать следующий функционал:
0. Группы покупателей - добавить поле "Сумма от". Поле должно редактироваться и видно в админке.
1. общий список товаров для заказа с возможностью проставления количества.
Т.е. весь товар должен быть представлен в виде таблицы с колонками: артикул, картинка (уменьшенная с возможностью перехода на товар), название товара ( с возможностью перехода в карточку товара), цены по типам цен (типы цен задаются в админке), колонка ввода количества (в поле вводится количество, которое клиент хочет заказать), статус наличия на складе (например, на складе, поступление в июне)
После таблицы с колонками должна быть кнопка "добавить заказ". В заказ попадают товары, для которых введено ненулевое количество в таблице.
Функционал работы с корзиной:
2. Сделать одну общую кнопку (а не у каждой позиции своя) пересчета для всех позиций заказа.
Кнопка пересчета делает пересчет сумм по введенному/исправленному количеству
Пересчет сумм происходит так:
1.из списка элементов группы покупателей выбирается элемент с минимальным значением "сумма от" (см. п. 0). Выборка элементов должна быть отсортирована по значению реквизита.
2. Общая сумма за товар пересчитывается как цена для данной группы покупателей умноженная на количество товара. Вычисляется итоговая сумма за товар.
3. Выбирается элемент группы покупателей со значением "сумма от" большим, чем у предыдущего элемента "сумма от", но меньшим, чем у последующих элементов.
4. если общая сумма за товар превысила значение в поле группы покупателей "сумма от", то цены считаются по ценам этой группы покупателей, т.е. выполняется п. 2. Если общая сумма заказа меньше значения в поле группы покупателей "сумма от", то это и есть искомая сумма.
5. Если сумма заказа после пересчета меньше значения реквизита "сумма от", то сумма заказа пересчитывается для предыдущей группы покупателей из выборки, это и есть искомая сумма.
Пример:
Группы покупателей:
розница. Сумма от - 0
Опт 1 - сумма от 300
Опт 2 - сумма от 400
Опт 3 - сумма от 420
Товар 1, цены: розница 100, опт 1 - 80, опт2 - 70, опт 3 - 60
Товар 2, цены: розница 200, опт 1 - 190, опт 2 - 180, опт 3 - 170
Заказ:
Товар 1 - 1 шт
товар 2 - 2 шт.
Пересчитываем по группе покупателей "розница"
Товар 1: 1*100 = 100
Товар 2: 2*200 = 400
Итого: 500
Пересчитываем по следующей группе покупателей, опт 1:
Товар 1: 1*80 = 80
Товар 2: 2*190 = 380
Итого: 460
460>300. Т.е. условие по Опт 1 выполняется.
Пересчитываем по опт 2:
Товар 1: 1*70=70
Товар 2: 2*180=360
Итого: 430
430>400. Условие выполняется. Пересчитываем по опт-3
Товар 1: 1*60= 60
Товар 2: 2*170=340
Итого: 400. Условие для опт-3 не выполняется, сумма заказа пересчитывается для группы покупателей опт-2, т.е. суммма заказа остается 430.