Ubercart - доставка [решено]

Аватар пользователя gWashington gWashington 21 ноября 2008 в 7:45

Вот подошел к вопросу настойки стоимости доставки. Имеющиеся модули слишком дубовые, есть ли более гибкие? Мне нужно "внедрить" вот такой прайс лист:
http://www.alemtat.kz/kazservices.html
Или придецца создавать самому?

Комментарии

Аватар пользователя gWashington gWashington 21 ноября 2008 в 11:56

ну там по доставке встроены uc_shipping, uc_weight_quote, uc_quote, uc_flat_rate. вот их. Может конечно их можно настроить, только например в модуле uc_weight_quote вводится начальная цена за один кило например, и сумма за дополнительный килограмм. это дубово Smile uc_flat_rate - это насколько я понял, процент от стоимости товара. тож не нужно вообще. Smile

Аватар пользователя glu2006 glu2006 21 ноября 2008 в 14:27

В двух словах могу сказать что это можно попробовать настроить через workflow_ng т.е. вы пересекаете шкалу доставок flat_rate с модулем workflow_ng (как-то так) или же:
http://www.ubercart.org/contrib?filter0=**ALL**&filter1=29&filter2=**ALL**
вот тут посмотрите, при желании можно чего нибудь и своего наваять. )))
Я на каком то магазине по моему вообще это решал только одним flate_rate но там была немного иная шкала.
В вашем варианте все ломает + за каждый последующий килограмм, вы ж до 5-ти тонн не будете руками прописывать ))). Поэтому наверное придется и покодить чутка.

Аватар пользователя gWashington gWashington 24 ноября 2008 в 13:23

пробую предложенную связку Flatrate + workflow. при вычислении стоимости доставки можно выполнить custom PHP-код. Как я понял, там можно взять вес заказуемого Smile товара, и вычислить какую надо стоимость доставки. Вот только как достать этот вес и в каком виде должен выглядеть этот код не пойму. Подскажите пожалуйста, или хотя бы дайте пример. спсб

Аватар пользователя glu2006 glu2006 24 ноября 2008 в 22:57

gWashington wrote:
пробую предложенную связку Flatrate + workflow. при вычислении стоимости доставки можно выполнить custom PHP-код. Как я понял, там можно взять вес заказуемого Smile товара, и вычислить какую надо стоимость доставки. Вот только как достать этот вес и в каком виде должен выглядеть этот код не пойму. Подскажите пожалуйста, или хотя бы дайте пример. спсб

Вес товара можно достать скл запросом или надо смотреть в какой он переменной? Вообще вариантов много, вплоть до написания своего функционала. Пример если бы был то поделился.
Но что-то мне подсказывает что вы не до конца просмотрели воркфлоу там если мне не изменяет память shipping прописывает событие Check an order's total weight т.е. вес всего заказа к которому в зависимости от его размера можно прицепить свою цену. В вашем варианте надо создавать под каждую градацию веса свое правило и все т.е. у вас их может быть например 10 или 20 )).

Аватар пользователя gWashington gWashington 25 ноября 2008 в 9:04

ага нашел вроде, это жесть, придется кучу правил создать. Зато будет конфетка. Сделаю - отпишусь. Smile

Аватар пользователя gWashington gWashington 25 ноября 2008 в 9:15

итак, нашел проверку веса. Condition создал, например если весменьше какото числа данный кондишн вернет тру. а как добавить акшн? просто выполнить дополнительный код PHP? там проверить кондишн (как?) и каким-то образом прицепить цену (тож не очень понятно)?

Аватар пользователя glu2006 glu2006 25 ноября 2008 в 9:19

gWashington wrote:
итак, нашел проверку веса. Condition создал, например если весменьше какото числа данный кондишн вернет тру. а как добавить акшн? просто выполнить дополнительный код PHP? там проверить кондишн (как?) и каким-то образом прицепить цену (тож не очень понятно)?

А модуль Action у Вас установлен? Если да то в workflow_ng при создании правила вверху сондишн а внизу появляется action

Аватар пользователя gWashington gWashington 25 ноября 2008 в 9:26

так, начинаю потихоньку соображать Smile если condition возвращает тру, то выполняется Action. Значит нужно только сообразить, что выполнить в акшне.

Аватар пользователя gWashington gWashington 25 ноября 2008 в 9:46

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

Аватар пользователя gWashington gWashington 25 ноября 2008 в 10:37

вообщем есть прогресс. делаю акшн "Установить стоимость доставки". Перед ним выполняю дополнительный PHP код:
db_query("UPDATE {uc_flatrate_methods} SET base_rate = Нужная стоимость");
теперь вот в чем проблема. с помощью модуля Flat_rate я содал 2 метода: доставка авиатранспортом и доставка жд транспортом. и в результате у обоих методов одна и та же присвоенная стоимость. вообще сделано это конечно не красиво и по шамански, но по другому не смог. теперь вопрос, как отличить данные методы?

Аватар пользователя gWashington gWashington 25 ноября 2008 в 10:42

УРА. В запрос добавил WHERE title='Доставка авиатранспортом' и все стало норм. Smile
Спасибы!

Аватар пользователя gWashington gWashington 25 ноября 2008 в 12:24

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

Аватар пользователя gWashington gWashington 26 ноября 2008 в 10:07

тупо изменил код модуля uc_weightquote. там просто в зависимости от веса прицепил цену. нехорошо в принципе, но работает. пока буду этим пользоваться.