Модератор форума: Yuri_G  
Расчёт стоимости доставки товара через матрицы
Модератор форума
Сообщение # 1 | 18:55:19

Вариант №1:
Я владелец Интернет магазина, где в зависимости от общей стоимости товара устанавливается накрутка в виде фиксированной (неизменяемой) единицы к каждому товару. Такое возможно, например, для магазина который осуществляет доставку по почте. 
 

Вариант №2:
Я владелец Интернет магазина, где в зависимости от общей стоимости товара устанавливается накрутка в виде процента. Такое возможно, например, для магазина, где доставка осуществляется курьером.
 
Главная » Интернет-магазин » Матрицы формирования цен

Нажимаем кнопку Добавить правило. В появившееся поле вписываем название, удобное для Вас. По стандарту это будет Матрица формирования цен № 4. После ввода названия нажимаем для сохранения данных и перехода в интерфейс настройки матрицы. 
 


После сохранения названия матрицы формирования цен появляется первая строка настройки матрицы:


1. Начальная ценовая грань.
2. Окончательная ценовая грань.
3. Тип накрутки (Фиксированная, Процент от суммы)
4. Значение - единица накрутки

 


Выбираем тип накрутки Фиксированная. В поля ОТ и ДО вписываем границы стоимости товара. (Например: ценовая категория товара от 5 до 10). В поле Значение вписываем значение накрутки, например, 3 (при постановке знака минус, будет осуществляться скидка на доставку)

ВНИМАНИЕ! Вписываемые значения рассчитываются в у.е.


Выбираем тип накрутки Процент от суммы. В поля ОТ и ДО вписываем границы стоимости товара. (Например: ценовая категория товара от 5 до 10). В поле Значение вписываем значение накрутки, например, 3 (при постановке знака минус, будет осуществляться скидка на доставку)

ВНИМАНИЕ! Вписываемые значения в поля ОТ и ДО рассчитываются в у.е.
Поле Значение рассчитывается в %.


 


Жмем кнопку "Сохранить". Из наших настроек следует:
При стоимости товара от 5 до 10 у.е. будет производится накрутка за доставку в размере 3 у.е. товар, входящий в эту ценовую категорию.
 


Жмем кнопку "Сохранить". Из наших настроек следует:
При суммы стоимости товара от 5 до 10 у.е. будет производится накрутка за доставку в размере 3 % от общей суммы товаров в корзине.
 


Настройки матрицы закончились. Внимание, не забудьте нажать кнопку сохранить!

Вы можете добавить новые условия, нажав кнопку Добавить строку.
 


Главная » Интернет-магазин » Способы оплаты, доставки, валюты и курсы

Примечание: Для дальнейших настроек накрутки (или скидки) у Вас должен быть настроен Способы оплаты.

Переходим к настройкам Способа Доставок.



Ставим галочку в пункте "Использовать модуль расчёта стоимости доставки" и выбираем в выпадающем списке "Расчет по матрице".

 Нажимаем ссылку [ Настройки модуля ].
 


В всплывающем Ajax окне выпираем созданную нами матрицу в выпадающем списке и жмем кнопку "Сохранить".
 

Свои настройки на доставку вы можете увидеть в интерфейсе "Ваш заказ", пункт "Такса за доставку".

HETPE3B
Сообщений: 1976
Репутация: 409

Сообщение # 46 | 11:16:18
DriftUCOZ, писать у.е. У вас 1 у.е. = 1 руб.

DriftUCOZ
Сообщений: 113
Репутация: 18

Сообщение # 47 | 11:24:12
Quote (HETPE3B)
DriftUCOZ, писать у.е. У вас 1 у.е. = 1 руб.


Ну если у меня вещь стоит 1500р мне писать 1500 y.e.?

Интернет магазин модной женской, мужской и подростковой одежды. http://bestshop-sp.ru
HETPE3B
Сообщений: 1976
Репутация: 409

Сообщение # 48 | 14:19:24
DriftUCOZ, писать в у.е.

Возникла необходимость вывести предполагаемую дату доставки товара, например, к текущей прибавить 3 дня. неужели нет простого скрипта, чтобы это сделать? или придется реализовывать кучей условных операторов? или может у кого готовое решение есть?

rodatam
Сообщений: 160
Репутация: 12

Сообщение # 49 | 15:56:37
Quote (MaxL)
nananana,
Quote (nananana)
А как сделать чтобы при покупке от трёх товаров делалась скидка 10%?

Ставишь матрицу от количества товара.
В матрице пишешь
от 0 до 2 = 0
от 3 до 9999999 = -10 %


Ответа на вопрос где и как я так и не дождался от MaxL, но проблемку эту уже решил и есть некоторые замечания. Расскажу, может пригодится кому.

Итак задача стояла настроить автоматический расчет скидок для оптовых покупателей, думаю многим этот вопрос близок :). Скидка от суммы заказа здесь естественно не подходит, поскольку товары есть разные, один стоит 1 евро второй 100, и как тут настроишь скидку для оптовика от суммы? Если к примеру поставить условие от 100 до 500 уе = скидка 10%, то клиент купивший 90 единиц товара по 1 уе и не оптовик получается никакой, поскольку скидка ему начисляться не будет.
Начал рыть и нашел этот пост
Ставишь матрицу от количества товара.
В матрице пишешь
от 0 до 2 = 0
от 3 до 9999999 = -10 %

Так то оно так, но матрица от количества работает только в модуле расчета цен доставки (о чем я спрашивал но так и не дождался ответа). Вопрос конечно решаем и если вы твердо уверены что вам нужна скидка от количества, то читайте дальше.
Я решил использовать "модуль расчета цен доставки" не по назначению, сделал матрицу со скидками , к примеру
1-9=0%
10-25=10%
26-50=20%
и так далее, затем пошел настраивать "модуль расчета цен доставки", как я это сделал есть на скрине ниже

Дело оставалось за малым, теперь только нужно было поковырять шаблон "Страница служебных форм" и поменять все стандартные надписи на те что мне нужно, в результате получилось следующее

Урррра......заработалооооо!!!
Правда есть два НО...
1...мне пришлось пожертвовать "модулем расчета цен доставки", но поскольку я принимаю платежи посредством системы ПайПал, то я не сильно расстроился, а просто взял и настроил наценки за доставку прямо в этой системе, благо такая возможность есть.
2...я обнаружил баг в "модуле расчета цен доставки", и на это прошу обратить внимание разработчиков. Проблема в следующем, система не начисляет скидку по нижней границе в строке диапазона количества товара в матрице.
Тоесть, к примеру мы сделали матрицу
от 0 до 9 единиц = 0% скидки
от 10 до 24 единиц = 10% скидки
от25 до 50 единиц = 20% скидки
все работает если клиент закажет, скажем 15 или30 единиц, но если заказать ровно 10 или 25, что является нижней границей диапазона, то скидка не начисляется.
Пришлось пойти на уловку и сделать вот так

правда в таком случаи скидка по нижней границе начисляется по значению предыдущей строки, тоесть для количества 25 скидка -10% а не -20% как должно было бы быть, но если указать диапазон правильно, вот так
от 10 до 24 единиц = 10% скидки
от25 до 50 единиц = 20% скидки
то на количество 25 скидка вообще не начисляется.
Поэтому чтоб добиться желаемого результата пришлось сделать вот так

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

Добавлено (02-Сен-2011, 01:18:04)
---------------------------------------------

Quote (HETPE3B)
Возникла необходимость вывести предполагаемую дату доставки товара, например, к текущей прибавить 3 дня. неужели нет простого скрипта, чтобы это сделать? или придется реализовывать кучей условных операторов? или может у кого готовое решение есть?


Нет ничего проще, пишеш где тебе надо <? $DAY$+3 ?> и получиш предполагаемую дату (текущий день + 3 = дата доставки)

Добавлено (03-Сен-2011, 15:56:37)
---------------------------------------------
Хотел еще добавить, что не пришлось жертвовать "модулем расчета цен доставки", я создал два модуля расчета цен, один для оптовых, другой для розничных покупателей. Соответственно к первому привязал матрицу расчета скидок от количества а ко второму матрицу накруток за доставку.Теперь единственное что нужно, это чтоб покупатель поставил галочку оптовик он или розничный покупатель.

Прикрепления: 4949112.jpg (65.3 Kb) · 9476921.jpg (64.7 Kb) · 6817169.jpg (27.1 Kb) · 3316431.jpg (27.5 Kb)

Сообщение отредактировал rodatam - Четверг, 01 Сен 2011, 16:18:26
HETPE3B
Сообщений: 1976
Репутация: 409

Сообщение # 50 | 11:54:42
rodatam, пробовал, не получается. Т.к. значение $DAY$+3 может стать равным 32, 33 и 34, что невозможно. Помимо этого все усложняется юлианским календарем, где не каждый месяц 31 день.

rodatam
Сообщений: 160
Репутация: 12

Сообщение # 51 | 00:33:34
Все решаемо, можно ведь прописать дополнительные условия, к примеру .... если $DAY$<28 то дата доставки $DAY$+3 или если $DAY$=>28 то дата доставки ($DAY$+3)-31 плюс к этому прописать условия в зависимости от месяца используя $MONTH$ чтобы учесть 30 и 31 день. Надо просто покумекать и сделать.

MaxL
Сообщений: 862
Репутация: 140

Сообщение # 52 | 01:46:33
rodatam,
Quote (rodatam)
так и не дождался от MaxL

Я тут мимо шел и вот вдруг увидел smile
Quote (rodatam)
Итак задача стояла настроить автоматический расчет скидок для оптовых покупателей, думаю многим этот вопрос близок :). Скидка от суммы заказа здесь естественно не подходит, поскольку товары есть разные, один стоит 1 евро второй 100, и как тут настроишь скидку для оптовика от суммы? Если к примеру поставить условие от 100 до 500 уе = скидка 10%, то клиент купивший 90 единиц товара по 1 уе и не оптовик получается никакой, поскольку скидка ему начисляться не будет.

Верно. Накопительная скидка есть, но вам нужна разовая скидка за количество.
Да, я бы тоже пожертвовал бы системой расчета стоимости доставки.
По поводу бага в матрице.
Попробуйте записать так:
от 0 до 10 единиц = 0% скидки
от 10 до 25 единиц = 10% скидки
от 25 до 50 единиц = 20% скидки

Самому протестировать негде.
cool

Спасибо в репутацию.
rodatam
Сообщений: 160
Репутация: 12

Сообщение # 53 | 13:50:37
Quote (MaxL)
По поводу бага в матрице.
Попробуйте записать так:
от 0 до 10 единиц = 0% скидки
от 10 до 25 единиц = 10% скидки
от 25 до 50 единиц = 20% скидки


Так тоже делал, проблема в том что скидка по нижней границе все равно не начисляется. Тоесть при вышеуказанном условии, скидка на количество 25 единиц будет не 20% а 10%. Ну это не смертельно, проблемку решил записав по другому.

MaxL
Сообщений: 862
Репутация: 140

Сообщение # 54 | 15:48:36
rodatam, но все равно я себе записал, программисту передам. В ЛС скиньте ссылку на магазин и номер сервера.

Спасибо в репутацию.
HETPE3B
Сообщений: 1976
Репутация: 409

Сообщение # 55 | 12:16:16
rodatam, да, я тут покумекал
нужно учесть февраль, т.к. в нем 28 дней
нужно учесть февраль високосного года, т.к. в нем 29 дней
нужно учесть месяцы в которых 30 дней
нужно учесть месяцы в которых 31 день
нужно учесть +2 два дня к результату, если заказ оформляется перед выходными (т.к. условие, что доставка в течении 3 рабочих дней)

rodatam
Сообщений: 160
Репутация: 12

Сообщение # 56 | 21:02:45
Quote (HETPE3B)
rodatam, да, я тут покумекал
нужно учесть февраль, т.к. в нем 28 дней
нужно учесть февраль високосного года, т.к. в нем 29 дней
нужно учесть месяцы в которых 30 дней
нужно учесть месяцы в которых 31 день
нужно учесть +2 два дня к результату, если заказ оформляется перед выходными (т.к. условие, что доставка в течении 3 рабочих дней)


biggrin ну вот, пол дела уже сделал, теперь осталось прописать это все с операторами.....хотя, не проще было бы всего лишь навсего написать гдето на видном месте "Доставка в течении 3-х рабочих дней", а клиент пускай сам себе считает biggrin

HETPE3B
Сообщений: 1976
Репутация: 409

Сообщение # 57 | 01:51:39
rodatam, поздно, я уже блок-схему набросал biggrin

rodatam
Сообщений: 160
Репутация: 12

Сообщение # 58 | 13:50:40
Quote (HETPE3B)
rodatam, поздно, я уже блок-схему набросал biggrin

ты мазохист biggrin ...
как закончишь, не забудь похвалиться, заценим wink

LV
Разработчик
Сообщений: 592
Репутация: 102

Сообщение # 59 | 17:50:22
Quote (rodatam)
Обращаюсь еще раз к сильным мира Юкоз, исправте баг, ато непорядок получается.

я непойму откуда вы взяли что нада начало следующего и конец предыдущего диапазона разделять в единицу ? например:

Code
10-24
25-50


матрицы универсальны, да сейчас вы их применяете к целочисленным значением, количеству.... но они же применяются и к ценами
что делать если значение, которое нужно "прокатить" по этой матрице: 24.2 ?

посему алгоритм преобразования по матрицам прост универсален и един:

коэфицент накладывается в следующем случае:

ЕСЛИ значение БОЛЬШЕ нижнего диапазона линии матрицы  И МЕНЬШЕ ИЛИ РАВНО верхнему диапазону линии


тоесть для линии матрицы 25-50 имеем выражение: (value > 25) AND (value <= 50)

при этом формат матриц должен иметь ввид: тоесть границы начала верних и конца нижних диапазонов должны совпадать
Code
0-10
10-25
50-50
50-100
100-99999      
rodatam
Сообщений: 160
Репутация: 12

Сообщение # 60 | 18:05:10
Quote (LV)
я непойму откуда вы взяли что нада начало следующего и конец предыдущего диапазона разделять в единицу ? например:


Да нет, это я пробовал разные варианты, в конечном итоге пришёл к тому, что нижний диапазон не учитывается. Поэтому для условий 0-9 = 0%, 10-24= 5%, 25-49 = 10% и т.д. прописал следуещее

от 0 до 9 =0%
от 9 до 24 =0%
от 24 до 49 =0% о чем и написал выше. Спасибо за ответ.

Поиск: