Перейти к содержанию
Форум поддержки пользователей VamShop

Пропала стоимость доставки


Рекомендуемые сообщения

Не знаю, что делал но сайт перестал выводить стоимость доставки указанную в FlatRate.

Как следствие он её и не плюсует при оформлении заказа.

Т.е. он считает, что цена доставки 0, в то время как она указана 150.

Кеш сбрасывал (и в магазине и в app\tmp\cache\smarty_templates_c)

Что может быть и как исправить?

==============================

Второй вопрос: 

Когда сам пишешь модуль доставки, то при установки в админке он просит какой-то фаил install.

Что это за фаил? Что в нем писать? И куда сувать?

Ссылка на сообщение
Поделиться на другие сайты

А другие модули доставки считают?

 

Может это всё из-за того, что убрали страницу подтверждения!?

Ссылка на сообщение
Поделиться на другие сайты

По поводу своего модуля доставки.

 

Вот для этого специально был сделан тестовый модуль, что б свои модули писать на его основе.

 

Скачайте - http://support.vamshop.ru/modules/wfdownloads/singlefile.php?cid=2&lid=2

 

и используйте в качестве примера.

Ссылка на сообщение
Поделиться на другие сайты

Но у этого примерочного модуля нет файла install, который, как я понял, при необходимости, создает дополнительные таблицы в базе данных

Ссылка на сообщение
Поделиться на другие сайты

Например стандартный модуль /app/Plugins/Shipping/Controller/FlatRateController.php

Да и в любом другом тоже обязательно должно быть, это ж установка (install) и удаление (uninstall) модуля в админке, без этих методов просто ничего работать не будет.

Ссылка на сообщение
Поделиться на другие сайты

Другие модули доставки то же не выводят стоимость доставки.
На экспериментальном движке (где ни чего не изменено), убрал подтверждения заказа, поменяв в /app/Vendor/smarty/vam_plugins/function.checkout.php 

'checkout_form_action' => BASE . '/orders/confirmation/'

на:

'checkout_form_action' => BASE . '/orders/place_order/'

Но там все сработало.

Т.е. в письме он вывел стоимость доставки и подсчитал её.

Ссылка на сообщение
Поделиться на другие сайты

Может, но, что я не помню  :rolleyes: .

Перестанавливать магазин не хочется. Поэтому хочу понять цепочку работы модулей доставки при формировании заказа.

Ссылка на сообщение
Поделиться на другие сайты

В заке и корзине участвуют:

/app/Controller/Component/OrderBaseComponent.php

/app/Controller/CartController.php

/app/Controller/OrderController.php

/app/Vendor/smarty/vam_plugins/function.shopping_cart.php

 

Попробуйте сравнить эти файлы с оригиналами.

Ссылка на сообщение
Поделиться на другие сайты

Удалил из админки все модули доставки, потом установил только FlatRate.

Оформил заказ - цену доставки он вывел правильно и подсчитал.

Далее установил FreeShipping и сделал оформление заказа с этим способом доставки. Но назавание доставки вывел правильно, а вместо 0 он вывел цену указанную в FlatRate и подсчитал заказ в месте с ней.

Поменял галочки "По умолчанию" и тогда при выборе любого способа из способов он стал выводить цену 0 за доставку.

Получается так, что какой способ доставки по умолчанию поставишь, тот и будет подсчитываться в заказе не зависимо от того какой способ выбирает пользователь.

Ссылка на сообщение
Поделиться на другие сайты

По умолчанию да, выбирается доставка по умолчанию.

 

Но ведь потом, когда при оформлении заказа выбирается доставка, на странице подтверждения уже будет та доставка, что выбрана была при оформлении.

 

Если Вы страницу подтверждения удалили, то новое значение доставки и не запишется.

Ссылка на сообщение
Поделиться на другие сайты

Куда записывается значение доставки?

Я так думаю, что можно переделать. Что на прямую он брал значение из базы данных и записывал его в заказ при оформлении.

Ссылка на сообщение
Поделиться на другие сайты

Заказ появляется сразу же как добавляется хотя бы один товар в корзину.

По идее, данные в базу должны писаться в методе purchase_product в /app/Controller/CartController.php

 

Там же и идёт запрос модулей доставки и оплаты по умолчанию, можно наверное вручную там задать нужный модуль.

 

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

Ссылка на сообщение
Поделиться на другие сайты

Все правильно это "глюк" из-за удалённой страницы подтверждения заказа. (проверял на не переделанном движке, как только убираешь подтверждения заказа тут же появляется такой глюк) 

И все же у меня стоит задача в одну страницу оформления товара.

Ссылка на сообщение
Поделиться на другие сайты
Попробуйте в purchase_product поменять:
$default_shipping = $this->Order->ShippingMethod->find('first', array('conditions' => array('default' => '1')));
$new_order['Order']['shipping_method_id'] = $default_shipping['ShippingMethod']['id'];
на что-то типа:
//$default_shipping = $this->Order->ShippingMethod->find('first', array('conditions' => array('default' => '1')));
$new_order['Order']['shipping_method_id'] = X;
где X - id номер нужного модуля доставки.
 
Но дело ведь вряд ли в этом.
 
Если нужен расчёт доставки и Вы убрали переход на confirmation страницу, то, тогда, по идее, нужно править /app/Controller/OrderController.php 
Метод place_order, добавлять там запись в базу стоимость доставки.
Ссылка на сообщение
Поделиться на другие сайты

 

Попробуйте в purchase_product поменять:
$default_shipping = $this->Order->ShippingMethod->find('first', array('conditions' => array('default' => '1')));
$new_order['Order']['shipping_method_id'] = $default_shipping['ShippingMethod']['id'];
на что-то типа:
//$default_shipping = $this->Order->ShippingMethod->find('first', array('conditions' => array('default' => '1')));
$new_order['Order']['shipping_method_id'] = X;
где X - id номер нужного модуля доставки.
 
Но дело ведь вряд ли в этом.
 
Если нужен расчёт доставки и Вы убрали переход на confirmation страницу, то, тогда, по идее, нужно править /app/Controller/OrderController.php 
Метод place_order, добавлять там запись в базу стоимость доставки.

 

 

В данном случае поможет если используется только один метод доставка, а у меня их несколько. Т.е. мне он не подайте. :(

Ссылка на сообщение
Поделиться на другие сайты

Т.е. он, кончено же работать будет, но мне надо, если пользователь выбрал "самовывоз", но в стоимость доставки выводит 0, если "доставка по СПб", то в стоимость доставки 150 руб., если "доставка по Ленобласти", то в стоимость доставки 250 руб. 

Ссылка на сообщение
Поделиться на другие сайты

Это всё нужно прописывать в place_order в /app/Controller/OrderController.php

 

Там оконсательно заказ пишется в базу, т.е. смотрите в place_order, что там сидит в $_POST массиве и добавляйте условия для записи доставки в базу.

 

В общем, смотрите как сделано по умолчанию в случае с confirmation и делайте так же в place_order, раз удалили у себя страницу подтверждения (confirmation).

Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что он все данные передает правильно, включая название выбранной доставки, кроме суммы выбранной доставки, которую он берёт из доставки выбранной по умолчанию.
В $_POST сидит то же самое.
Единственное, что в сумму доставки в подтверждении он выводит через 

'shipping_total' => $CurrencyBase->display_price($order['Order']['shipping'])

Пробовал в place_order в /app/Controller/OrderController.php , но не помогло. Хотя, возможно я не так сделал.

Ссылка на сообщение
Поделиться на другие сайты

Ну попробуйте задать вручную эту shipping_total, для начала, что б Ваше значение писалось в базу.

 

А затем уже нужно будет, зная id модуля (он через POST передаётся), когда выбираете при оформлении, уже делать расчёт доставки и записывать значение в базу.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...