Приветствую всех!
Блин, полдня бился над этой проблемой. Предлагают кучу разных вариантов, но ничего не работает.
Решение нашел. Магазин на OcStore 1.5.5.1.2
Дано:
В геогр. зоне Москва существует 2 способа доставки - курьер и пункты самовывоза.
Таже подключено 2 способа оплаты - RBKmoney и оплата при доставке.
Необходимо, чтобы при доставке курьером было 2 способа оплаты. При доставке из пунктов самовывоза - только RBKmoney
Решение:
Редактируем файл catalog\model\payment\cod.php - оплата при доставке
multiflat - это id доставки из пунктов самовывоза
Получается, что мы в файле cod.php (оплата при доставке) делаем запрет на активацию при доставке из пунктов самовывоза
Находим
if ($this->config->get('cod_total') > 0 && $this->config->get('cod_total') > $total) {
$status = false;
} elseif (!$this->config->get('cod_geo_zone_id')) {
$status = true;
} elseif ($query->num_rows) {
$status = true;
} else {
$status = false;
}
После этого вставляем
if (isset($this->session->data['shipping_method']['code']) && strpos($this->session->data['shipping_method']['code'], 'multiflat') !== false) {
$status = false;
} else {
$status = true;
}
Я реализовал это с помощью vqmod. Здесь упоминался файлик ship2pay.xml, я его немного доработал
Содержимое:
<modification>
<id>ship2pay</id>
<version>1.0</version>
<vqmver>1.0</vqmver>
<author>mobisale.biz</author>
<file name="catalog/model/payment/cod.php">
<operation>
<search position="before"><![CDATA[$method_data = array();]]></search>
<add><![CDATA[// Payment method depend on the chosen shipping method
if (isset($this->session->data['shipping_method']['code']) && strpos($this->session->data['shipping_method']['code'], 'multiflat') !== false) {
$status = false;
} ]]></add>
</operation>
</file>
</modification>