Автор Тема: Как сделать: При оплате банковской карты стоимость доставки равна 0  (Прочитано 77 раз)

21 Апрель 2017, 12:57:16
  • Старожил
  • ****
  • Сообщений: 307
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите, как сделать, чтобы при оплате банковской картой стоимость доставки была равной 0

Вариант 1:
$cart = $this->context->cart;
После этого изменить id_carrier объекта Cart.

Как будет выглядеть итоговый вариант.

$this->context->cart->id_carrier = 3Так можно присвоить?
Или необходимо как то обновить объект Cart $this->context->cart->update();

И всё это указать в validation.php перед вызовом validateOrder($cart->id????
===========================================================
Вариант 2:

В методе доставки вычисляем сумму оплаты:
public function getOrderShippingCost($params, $shipping_cost)
{
$method = 'open' - переменная где находится выбранный метод оплаты (open - банковская карта)

$shipping_cost = ($method == 'open') ?  0  : 300;

return $shipping_cost;
}

Как получить в $method выбранный метод оплаты???
===========================================================
Вариант 3:

Возможно есть что то ещё?
21 Апрель 2017, 16:51:18
Ответ #1
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22307
  • Репутация: +17114/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Цитировать
Как сделать: При оплате банковской карты стоимость доставки равна 0
В модуле оплаты банковской карты перед созданием заказа validateOrder изменить свойство объекта Cart
$cart->id_carrier /*id бесплатной доставки*/;
$cart->update();
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
21 Апрель 2017, 17:18:39
Ответ #2
  • Старожил
  • ****
  • Сообщений: 307
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за Ваш ответ.

Ещё один вопрос.

Как можно создать метод доставки, чтобы он не отображался в общем списке доступных.

Но его можно было использовать:

$cart->id_carrier /*id бесплатной доставки*/;
21 Апрель 2017, 17:53:37
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 33066
  • Репутация: +26762/-0
    • Просмотр профиля
Чтобы не показывало метод оплаты, нужно в модуле удалить вывод шаблона в хуке payment или удалить установку модуля в хук.
24 Май 2017, 16:48:25
Ответ #4
  • Старожил
  • ****
  • Сообщений: 307
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы не показывало метод оплаты, нужно в модуле удалить вывод шаблона в хуке payment или удалить установку модуля в хук.

А возможен ли такой вариант:

Я создаю свой модуль доставки и делаю следующее:
указываю return false; в public function getOrderShippingCost 

public function getOrderShippingCost($params, $shipping_cost)
{
 return false;
}

В этом случае данный метод доставки точно не будет отображаться в списке доступных.

Ну и затем перед вызовом validateOrder($cart->id.....

выполнить
$cart->id_carrier /*id бесплатной доставки*/;
$cart->update();
24 Май 2017, 16:58:42
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 14000
  • Репутация: +14568/-2
  • Сообщество PrestaShop
    • Просмотр профиля
24 Май 2017, 17:39:34
Ответ #6
  • Старожил
  • ****
  • Сообщений: 307
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Хотя вряд ли поможет такой вариант.

При return в getOrderShippingCost
не произойдёт расчет стоимости доставки.

Нужно чтобы был 0

24 Май 2017, 20:14:41
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 20987
  • Репутация: +25282/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
return false; // Перевозчик неизвестен, а не возврат ошибки.

http://doc.prestashop.com/display/PS16/Creating+a+carrier+module

public function getOrderShippingCost($params, $shipping_cost)
{
  if ($this->id_carrier == (int)(Configuration::get('MYCARRIER_CARRIER_ID'))
      && Configuration::get('MYCARRIER_OVERCOST') > 1)
    return (float)(Configuration::get('MYCARRIER1_OVERCOST'));
  return false; // Перевозчик неизвестен
}
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!