Автор Тема: Вопрос по validateOrder  (Прочитано 1394 раз)

21 Май 2014, 14:43:57
  • Ветеран
  • *****
  • Сообщений: 527
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В модуле оплаты перед созданием заказа, т.е. перед выполнением validateOrder
потребовалось уменьшить сумму доставки для определённого способа доставки.
И соответственно нужно, чтобы после validateOrder все изменения вступили в силу.

Подскажите, как можно уменьшить сумму доставки, что нужно переопределить для validateOrder?
Заранее спасибо!

Такое впечатление, что в $this->context->cart-> указан только  [id_carrier]
Дальше по нему выбирается сумма доставки.

Не знаю куда копать...
Неужели только PaymentModule.php
в части касающейся: $order->total_shipping_tax_excl = (float)$this->context->cart->getPackageShippingCost((int)$id_carrier, false, null, $order->product_list);
и без вариантов?
21 Май 2014, 16:29:20
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В платежном модуле должен быть контроллер validate.
Например, для Оплаты наличными при получении: /cashondelivery/controllers/front/validation.php
Проверить ид доставки, если совпалает, то уменьшать сумму.
И так для всез установленных модулей оплаты.
21 Май 2014, 16:45:58
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 527
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В платежном модуле должен быть контроллер validate.
Например, для Оплаты наличными при получении: /cashondelivery/controllers/front/validation.php
Проверить ид доставки, если совпалает, то уменьшать сумму.
И так для всез установленных модулей оплаты.

Хорошо, узнаю id доставки $this->context->cart->id_carrier, а что уменьшать?
Дальше идёт validateOrder((int)$this->context->cart->id, Configuration::get('PS_OS_PREPARATION'), $total, $this->module->displayName, null, array(), null, false, $customer->secure_key, null, $delivery_date);

Здесь я могу изменить только общую сумму  $total
Как мне изменить цену доставки?
21 Май 2014, 17:18:23
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
На последнем этапе можно только уменьшить общую стоимость. Стоимость доставки изменить нельзя.
В заказе будет стоимость доставки, которая сохранена для выбранного перевозчика.
Уменьшайте общую стоимоть и пишите, что скидка за использование такого-то метода доставки.
А лучше всего пересмотрите алгоритм заказа. Не логично менять стомить доставки при выборе оплаты.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.