Перейти к содержанию
mreas

Как убрать способ доставки при Бесплатном заказе?

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

Приветствую! 

Версия ocStore 2.1.0.2.1

 

Подскажи пожалуйста, как убрать один из способов доставки, если появился способ оплаты "Бесплатный заказ".

 

Например:

Способы доставки - 1)Доставка почтой, 2)Наложенный платеж

Способы оплаты -  1)Картой

 

Покупатель закрывает сумму товара полностью бонусами, Итог равен 0,в способах оплаты появляется возможность оплатить "бесплатно" и получается:

Способы оплаты -  1)Картой, 2)Бесплатный заказ

 

Вопрос:

1.Как убрать способ доставки "наложенный платеж", если появился "бесплатный заказ" в способах оплаты?

 я так понимаю надо править в модели catalog/model/payment/ , но тут модуль мультидоставка , который формирует несколько вариантов доставки.... и как прописать условие для доставки по key  я не понял(

 

что то типа такого:

	if (isset($this->session->data['payment_method']['code']) && strpos($this->session->data['payment_method']['code'], 'free_checkout') && $key == 3) /*наложенный платеж*/
					$status = false;
				} else {
					$status = true;
				}

в файл модели доставки перед if ($status) :

 

<?php
class ModelShippingCs extends Model {
	function getQuote($address) {
		$this->load->language('shipping/cs');
		$this->load->model('setting/setting');
		$custom_shippings = $this->model_setting_setting->getSetting('cs');

		$method_data = array();
		$status = $this->config->get('cs_status');
		$quote_data = array();
		if(!empty($custom_shippings['cs'])){
			foreach($custom_shippings['cs'] as $key => $custom_shipping){
				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$custom_shipping['cs_geo_zone_id'] . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");

				if (!$custom_shipping['cs_geo_zone_id']) {
					$status = true;
				} elseif ($query->num_rows) {
					$status = true;
				} else {
					$status = false;
				}
 

				if ($status) { 

					if(!empty($custom_shipping['cost'])){
						$textt = $this->currency->format($this->tax->calculate($custom_shipping['cost'], $custom_shipping['cs_tax_class_id'], $this->config->get('config_tax')));
					} else{
						$textt =  $this->language->get('');
					}

					$quote_data['cs_'.$key] = array(
						'code'         => 'cs.cs_'.$key,
						'title'        => $custom_shipping['shipping_description'][(int)$this->config->get('config_language_id')]['name'],
						'cost'         => $custom_shipping['cost'],
						'tax_class_id' => $custom_shipping['cs_tax_class_id'],
						/*'text'         => $this->currency->format($this->tax->calculate($custom_shipping['cost'], $custom_shipping['cs_tax_class_id'], $this->config->get('config_tax')))*/
						'text'         => $textt
						);
				}
			}
		}
		$titlearray = $this->config->get('cs_group_shipping'); 
		$method_data = array(
			'code'       => 'cs',
			'title'      => $titlearray[(int)$this->config->get('config_language_id')]['shipping_name'],
			'quote'      => $quote_data,
			'sort_order' => $this->config->get('cs_sort_order'),
			'error'      => false
			);

		return $method_data;
	}
}

 подскажите пожалуйста!

Изменено пользователем mreas

Поделиться сообщением


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

можно наверное сделать по условию:

if($key == 3 && total <= 0)/*нал. платеж*/
$status = false;

но, как достать итоговую сумму товара ?

Поделиться сообщением


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

Тема закрыта, разобрался!

Не отображать способ доставки при предварительной сумме заказа больше максимальной и сумме заказа равной нулю(+ учет примененных бонусов,если доступны):

if (isset($this->request->post['reward']) ) {
     $current_reward = $this->request->post['reward'];
} else {
     $current_reward = 0; 
}

/*убрать наложенный платеж если предварительная сумма > макс заданной или Итог - баллы = 0 */
if($key == 3 && ($this->cart->getSubTotal() >= $this->config->get('free_total') || ($this->cart->getTotal() -  $current_reward <= 0 ) ))
     $status = false;
Изменено пользователем mreas

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.