Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Выполнено?..] Доработки модулей на рабочем ИМ


Recommended Posts

Добрый день.

Необходимо доработать следующие моменты:

 

На сайте установлен модуль Simple и доставка рассчитывается через Edost.
 

1. Несколько раз уже приходили вот такие заказы, с двойным адресом: https://yadi.sk/i/p_-e8ppcqe87K
То есть выбран способ доставки "Почта России", а адрес доставки указан для пункта выдачи СДЭК (другого способа доставки).
 
Я экспериментальным способом разобрался, как такое происходит:
Покупатель сперва для какого-то города (допустим Челябинск) выбирает способ доставки "пункт выдачи СДЭК" (и модуль видимо в адрес доставки сразу записывает адрес ПВЗ СДЭК), а потом покупатель меняет свой город (допустим Аша, для которого СДЭК не работает) и вводит уже свой адрес. Но модуль записывается адрес в адрес оплаты, а адрес доставки так и остается "ПВЗ СДЭК".
 
Задача в следующем, либо либо
а). Нужно либо, чтобы после выбора "Почты России" адрес доставки сбрасывался и дублировал "Платежный адрес", как это происходит обычно https://yadi.sk/i/V2bBE8Iaqe8Nr (самый простой вариант)
б). Либо переработать этот механизм и вообще исключить из формы "Платежный адрес", так как мы используем только "адрес доставки". Но тогда будет вопрос, как быть в случае, если клиент выбирает какой-то пункт вывоза доставки "СДЭК" и дополнительно вводит еще свой адрес. Тут нужно обсуждать, потому что я не понимаю, как это реализуется технически.
Как вариант, отключить заполнение поля адрес для способа доставки "СДЭК ПВЗ", но в этом тоже есть неудобства.
 
2. Установлена платежная система Paymaster. В опенкарте есть страница об успешном оформлении заказа, но нет страницы, об успешной оплате заказа. Я ее создал отдельно. Прописал в файле модуля и теперь когда платеж проходит, то пользователя направляет на нужную новую страницу успешной оплаты. НО, в этом случае не сбрасывается заказ в корзине, товары там так и остаются.
Нужно дописать код очистки корзины в контроллер этой новой страницы. Я добавил его в специально созданный php блок для этой страницы, но не работает. Нужно что бы работало и объяснить мне, как это было реализовано. Решение я потом собираюсь опубликовать.
 
Данные работы нужно выполнить на двух идентичных сайтах.
Ссылку на сайт могу скинуть в личку.
Интересно найти человека для регулярных доработок на сайте, так как постоянно нужно что-то улучшать и уже не хватает времени на самостоятельный поиск решений.
 
Жду ваши комментарии.
С уважением, Евгений.
 
Надіслати
Поділитися на інших сайтах


по 1-му пункту - может проще в симпле блок оплаты убрать и поставить блок доставки - тогда сам симпл будет сбрасывать (это ИМХО, только предположил - может и сработает)

по 2-му - вот эти все функции добавили в контроллер?

$this->cart->clear();
unset($this->session->data['shipping_method']);
unset($this->session->data['shipping_methods']);
unset($this->session->data['payment_method']);
unset($this->session->data['payment_methods']);
unset($this->session->data['guest']);
unset($this->session->data['comment']);
unset($this->session->data['order_id']);
unset($this->session->data['coupon']);
unset($this->session->data['reward']);
unset($this->session->data['voucher']);
unset($this->session->data['vouchers']);
unset($this->session->data['totals']);

Опять же - просто предположил, теоретически - они должны полностью сбросить все, что связано с покупкой.

Надіслати
Поділитися на інших сайтах


по 1-му пункту - может проще в симпле блок оплаты убрать и поставить блок доставки - тогда сам симпл будет сбрасывать (это ИМХО, только предположил - может и сработает)

по 2-му - вот эти все функции добавили в контроллер?

$this->cart->clear();
unset($this->session->data['shipping_method']);
unset($this->session->data['shipping_methods']);
unset($this->session->data['payment_method']);
unset($this->session->data['payment_methods']);
unset($this->session->data['guest']);
unset($this->session->data['comment']);
unset($this->session->data['order_id']);
unset($this->session->data['coupon']);
unset($this->session->data['reward']);
unset($this->session->data['voucher']);
unset($this->session->data['vouchers']);
unset($this->session->data['totals']);

Опять же - просто предположил, теоретически - они должны полностью сбросить все, что связано с покупкой.

 

Спасибо за подсказки.

1. Блок оплаты и так убран https://yadi.sk/i/riufbnTMqePxD 

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

 

2. Я не особо разбираюсь этом. Мне подсказали что нужно вписать код сброса на конечную страницу, я нашел это php код и полностью вписал в новый блок с пхп кодом, который разместил только на странице оплаты. Отдельно в контроллер я не добавлял. Не знаю как это делать, так с ходу инструкций не нашел.

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

 

Надіслати
Поділитися на інших сайтах


 

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

Всегда можно сделать резервную копию магазина, установить его на виртуальную машинку с линуксом, в хостсе прописать айпишник виртуалки, и со своего компа заходить в "тестовый" магазин. Даже коды доступа к зашифрованным модулям останутся, так как адрес домена не изменится. А виртуалке запретить общаться с СРМ системой, так что это не проблема.

2. Ссылка на диск яндекса не рабочая, так что ничего не понятно, что убрано, а что оставлено.

Надіслати
Поділитися на інших сайтах


Всегда можно сделать резервную копию магазина, установить его на виртуальную машинку с линуксом, в хостсе прописать айпишник виртуалки, и со своего компа заходить в "тестовый" магазин. Даже коды доступа к зашифрованным модулям останутся, так как адрес домена не изменится. А виртуалке запретить общаться с СРМ системой, так что это не проблема.

2. Ссылка на диск яндекса не рабочая, так что ничего не понятно, что убрано, а что оставлено.

https://yadi.sk/i/riufbnTMqePxD

Надіслати
Поділитися на інших сайтах


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

Автор симплы говорит, что проблема не в его модуле. За это отвечает модуль доставки, видимо нужно с модулем edost разбираться.

Вопрос все еще актуальный, ищу исполнителя.

Надіслати
Поділитися на інших сайтах


Исполнителя нашел, вопросы решены. Опишу способ решения первой проблемы, может кому пригодится:

Чудаки из едоста используют один id на все свои доставки, но разные сессионные переменные

Там есть блок отвечающий за назначение сессионной переменной если у метода доставки есть адрес грубо говоря
а сброса если адреса нет- нету
поэтому если он был выбран первый, то потом хоть убейся он не скинется
if ($quote_data[$i]['pickpointmap'] && $this->config->get('edost_pickpoint')) {
if (!$pickpoint_script_included) {
$quote_data[$i]['description'] .= '';
$quote_data[$i]['description'] .= '';
$pickpoint_script_included = true;
}
$pickpoint_name = isset($this->request->post['pickpoint_name']) ? $this->request->post['pickpoint_name'] : '';
$pickpoint_address = isset($this->request->post['pickpoint_address']) ? $this->request->post['pickpoint_address'] : '';

if ($pickpoint_name || $pickpoint_address) {
$this->session->data['edost'][$i]['office'] = array(
'part_1' => $pickpoint_name,
'part_2' => $pickpoint_address
);
}
$quote_data[$i]['description'] .= '

'.$pickpoint_name.'
'.$pickpoint_address.'
'.$this->language->get('SALE_DH_EDOST_PICKPOINT').'

';
}
вот такой блок в файле модели edost.php
я после него приписал обнуление этой переменной, если адреса нет
if ($quote_data[$i]['pickpointmap'] && $this->config->get('edost_pickpoint')) {......} else {$this->session->data['edost'][$i]['office'] = array();}
и все хорошо
почему именно обнуление а не unset- чтобы потом еще вкмод не править едостовский
if ($data['shipping_code'] == 'код.доставки') { а вот это логичное решение к сожалению нифига не сработает в данном случае, т.к у этих чудаков на букву М у всех первых методов доставки код один и тот же edost.1
соответственно когда стоит первым пункт самовывоза у него edost.1 когда там первая почта у нее edost.1 ну и т.д.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.