Автор Тема: цена доставки в зависимости от способа оплаты  (Прочитано 1075 раз)

14 Апреля 2014, 10:57:23
  • Старожил
  • ****
  • Сообщений: 287
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите, пожалуйста
Можно ли реализовать такое,
Цена доставки в зависимости от способа оплаты.
Например,
Стоимость доставки:
При выборе типа оплаты «наличными» - 200 руб.
При выборе способа оплаты «банковской картой» - бесплатно
14 Апреля 2014, 13:35:27
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
Можно, модуль нужен carrier2payment. Модуль платный, где-то на форуме была ссылка на него.
14 Апреля 2014, 14:03:15
Ответ #2
  • Старожил
  • ****
  • Сообщений: 287
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Можно, модуль нужен carrier2payment. Модуль платный, где-то на форуме была ссылка на него.
Спасибо я уже опробывал его...
Докопался до этого момента:
public function getOrderShippingCost($cart, $shipping_cost)
{
return $shipping_cost+300;

Как определить какой выбран Способ оплаты (какой нажат чек бокс), чтобы я мог варьировать между
return $shipping_cost+300и
return $shipping_cost+0
Заранее спасибо..
14 Апреля 2014, 14:48:05
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22215
  • Репутация: +17111/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Нет такого в модуле. Этот модуль устанавливает связи между методами доставки и оплаты. Работает модуль по другому.
Если вы хотите только для 1 модуля оплаты увеличить стоимость, то меняйте создание заказа в PaymentModule.php.
Метод не очень хороший, смените методы доставки (при редактировании ид меняется) и опять нужно будет править код.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
14 Апреля 2014, 15:20:20
Ответ #4
  • Старожил
  • ****
  • Сообщений: 287
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
1).Менять создание заказа здесь: public function validateOrder??
Если, да то как менять shopping-cart.tpl значение доставки
{displayPrice price=$total_shipping_tax_exc}
2).Здесь была такая идея
public function getOrderShippingCost($cart, $shipping_cost)
   {
      return $shipping_cost+300;
В зависимости от спопсоба оплаты. Для модуля доставки увеличивать $shipping_cost
Только не пойму как поймать этот способ оплаты.
3). Склоняюсь к варианту с carrier2payment. Клонирую модуль оплаты и способ доставки (со скидкой и без скидки)...
Только после установки модуля carrier2payment исчез один из способов оплаты. При удалении модуля всё возвращается на место...
Никто не сталкивался с подобной проблемой?
14 Апреля 2014, 16:27:06
Ответ #5
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22215
  • Репутация: +17111/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Этот модуль для того, чтобы создать разных перевозчиков, с разными ценами и клиенту показывать разные методы оплаты при выборе разных способов доставки.
Для ваших задач нужно другое. Увеличивать сумму заказа в зависимости от способа оплаты. Для этого можно в нужном модуле добавить  функцию, которая будет увеличивать общую сумму
$this->context->cart->total += ... PS_ADD_TOTAL
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
15 Апреля 2014, 09:10:23
Ответ #6
  • Старожил
  • ****
  • Сообщений: 287
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Увеличить это не проблема... Главное чтобы само действие происходило... Т.е. я нажимаю на чекбокс среди способов оплаты и в этот мемент меняется сумма доставки в оформлении заказа... Т.е. наглядно это видим на странице оформления заказа, ну а потом когда нажимаем на кнопку разместить заказ, то да в контроллере для данного модуля оплаты мы добавим сумму в заказ...

Вопрос как реализовать наглядность при нажатии на чекбокс...
16 Апреля 2014, 08:44:58
Ответ #7
  • Старожил
  • ****
  • Сообщений: 287
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В общем перерыл весь интернет... Остановился на варианте с carrier2payment. Минус такой....
Придётся создавать два одинаковых способа доставки с одной лишь разницей в цене доставки.
Один способ доставки привязать к одной оплате (например "Оплата наличными при получении"), а другой способ доставки привязать к оплате например "Банковской картой онлайн". Ну а минус, будут два практически одинаковых способа доставки...

Возможно следует в шаблоне order-carrier.tpl при выводе способов доставки прописать для этих двух способов идентификаторы id
ну и в зависимости от того какой нажат чекбокс в способах оплаты скрывать или открывать тот или иной способ доставки при помощи jquery...

Возможно предложите лучший вариант?
16 Апреля 2014, 11:05:33
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 1012
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Проблема в том, что в престашопе выбор доставки происходит перед выбором оплаты. Модуль carrier2payment не меняет курьеров и не может менять цену доставки. Добавление суммы нужно делать на javascript. Можно в добавлять N-сумму при выборе метода оплаты в функции  updateCartSummary (файл cart-summary.js). Там есть стоимость доставки "shipping_cost", добавить определение ИД модуля оплаты и сумму при совпадении этого ИД.
16 Апреля 2014, 12:41:38
Ответ #9
  • Старожил
  • ****
  • Сообщений: 287
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Проблема в том, что в престашопе выбор доставки происходит перед выбором оплаты. Модуль carrier2payment не меняет курьеров и не может менять цену доставки. Добавление суммы нужно делать на javascript. Можно в добавлять N-сумму при выборе метода оплаты в функции  updateCartSummary (файл cart-summary.js). Там есть стоимость доставки "shipping_cost", добавить определение ИД модуля оплаты и сумму при совпадении этого ИД.

updateCartSummary срабатывает при выборе не метода оплаты, а выборе способе доставки...
Я правильно понимаю,что при выборе  метода оплаты нужно генерировать это событие?
16 Апреля 2014, 14:09:26
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 1012
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В том то и дело, что обновление суммы заказа только при выборе доставки, а не оплаты.
Поэтому и нужно добавить это событие на нажатие метода оплаты (выбор  «наличными» +200 к сумме).
20 Мая 2014, 14:49:28
Ответ #11
  • Старожил
  • ****
  • Сообщений: 287
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В том то и дело, что обновление суммы заказа только при выборе доставки, а не оплаты.
Поэтому и нужно добавить это событие на нажатие метода оплаты (выбор  «наличными» +200 к сумме).
Хорошо, я добавлю функцию updateCartSummary в событие при нажатии на radio в  onchange=''  для метода оплаты...
Но как мне передать массив json
Ведь:
function updateCartSummary(json) ???

Заранее спасибо!