Jump to content
Sign in to follow this  
leotop

[РЕШЕНО] Вывод всех акций на странице продукта

Recommended Posts

В зависимости от группы покупателя в карточке товара в акциях указана своя скидка.

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

 

Должно получиться:

Базовая цена 1000 руб

Постоянный покупатель 900 руб

Старый клиент 800 руб

Share this post


Link to post
Share on other sites

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

Может быть кто-то встречал модуль для вывода нескольких акций в код товара?

Share this post


Link to post
Share on other sites

Зачем делить клиентов на "Старых" и "Постоянных"? Судя по ценнику, "Старый" для вас важнее, чем "Постоянный", что говорит (по логике вещей) о том, что "Старый" клиент не который один раз купил и получил скидку больше того, что затаривается ежедневно, а который также регулярно покупает что-то, что дает ему привилегированную цену. Так пусть он будет "VIP клиент", если у вас есть разница между постоянными клиентами по возрасту аккаунта. Сначала СМЕНИТЕ название клиента со "Старого" на нормальное уважительное, а потом уже выводите.

А то выглядит это, как "Старый пень" :)

Share this post


Link to post
Share on other sites

сначала пусть определится "акции" или "скидки".

Share this post


Link to post
Share on other sites

сначала пусть определится "акции" или "скидки".

В чем нужно определиться? В опенкарт четкое разграничение.

 

Акция - это скидка которая не зависит от количества

Скидка - это скидка которая задается в зависимости от кол-ва товара для каждой группы.

 

Поэтому нужно вывести именно акции но для всех групп покупателей, а не только текущей.

 

 

Сначала СМЕНИТЕ название клиента со "Старого" на нормальное уважительное, а потом уже выводите.

А то выглядит это, как "Старый пень" :)

 

Сменим на колонка 1, колонка 2, от этого что-то измениться в решение поставленной задачи - вывод акций на страницу не зависимо от группы?

Share this post


Link to post
Share on other sites

Готовый модуль с выводом цен для разных групп никто не встречал?

Share this post


Link to post
Share on other sites

catalog/controller/product/product.php

...
			$this->load->model('account/customer_group');
			$customerGroupsList = $this->model_account_customer_group->getCustomerGroups();
			
			$this->data['wholeSpecials'] = array();
			if ($this->customer->isLogged()) {
				$ws_customer_group_id = $this->customer->getCustomerGroupId();
			} else {
				$ws_customer_group_id = $this->config->get('config_customer_group_id');
			}
			foreach ($customerGroupsList as $customerGroup) {
				if ($customerGroup['customer_group_id'] != $ws_customer_group_id) {
					$customerGroupName = $customerGroup['name'];
					
					$wholeSpecial = $this->model_catalog_product->getWholeProductSpecialData($this->request->get['product_id'], $customerGroup['customer_group_id']);
					
					if ($wholeSpecial) {
						$this->data['wholeSpecials'][] = array(
							'price'    => $this->currency->format($this->tax->calculate($wholeSpecial['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))),
							'customerGroup' => $customerGroupName
						);
					}
				}
			}
			...
catalog/model/catalog/product.php

...
public function getProductSpecials($data = array()) {
...
>>

...
	public function getWholeProductSpecialData($product_id, $customer_group_id_listed) {
		$query = $this->db->query("SELECT `price`, `date_end`, `customer_group_id` FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$customer_group_id_listed . "' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY priority ASC, price ASC LIMIT 1");

		if ($query->num_rows) {
			return $query->row;
		} else {
			return FALSE;
		}
	}

public function getProductSpecials($data = array()) {
...
tpl

...
        <?php if ($wholeSpecials) { ?>
        <br />
        <div class="discount">
          <?php foreach ($wholeSpecials as $wholeSpecial) { ?>
			<?php echo "Для группы ".$wholeSpecial['customerGroup'].": ".$wholeSpecial['price'].""; ?>
			<br />
          <?php } ?>
        </div>
        <?php } ?>
...
  • +1 1

Share this post


Link to post
Share on other sites

Отличное решение! Спасибо и тому кто создал тему и тому кто дал ответ как сделать! Все сделал у себя. Все работает! Оформил в нужный стиль и песня! :D

  • +1 1

Share this post


Link to post
Share on other sites

можно перевести синтаксис на 2.3? :D

Share this post


Link to post
Share on other sites
В 18.04.2015 в 22:01, afwollis сказал:

catalog/controller/product/product.php

 


...
			$this->load->model('account/customer_group');
			$customerGroupsList = $this->model_account_customer_group->getCustomerGroups();
			
			$this->data['wholeSpecials'] = array();
			if ($this->customer->isLogged()) {
				$ws_customer_group_id = $this->customer->getCustomerGroupId();
			} else {
				$ws_customer_group_id = $this->config->get('config_customer_group_id');
			}
			foreach ($customerGroupsList as $customerGroup) {
				if ($customerGroup['customer_group_id'] != $ws_customer_group_id) {
					$customerGroupName = $customerGroup['name'];
					
					$wholeSpecial = $this->model_catalog_product->getWholeProductSpecialData($this->request->get['product_id'], $customerGroup['customer_group_id']);
					
					if ($wholeSpecial) {
						$this->data['wholeSpecials'][] = array(
							'price'    => $this->currency->format($this->tax->calculate($wholeSpecial['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))),
							'customerGroup' => $customerGroupName
						);
					}
				}
			}
			...

catalog/model/catalog/product.php

 


...
public function getProductSpecials($data = array()) {
...

>>

 


...
	public function getWholeProductSpecialData($product_id, $customer_group_id_listed) {
		$query = $this->db->query("SELECT `price`, `date_end`, `customer_group_id` FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$customer_group_id_listed . "' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY priority ASC, price ASC LIMIT 1");

		if ($query->num_rows) {
			return $query->row;
		} else {
			return FALSE;
		}
	}

public function getProductSpecials($data = array()) {
...

tpl

 


...
        <?php if ($wholeSpecials) { ?>
        <br />
        <div class="discount">
          <?php foreach ($wholeSpecials as $wholeSpecial) { ?>
			<?php echo "Для группы ".$wholeSpecial['customerGroup'].": ".$wholeSpecial['price'].""; ?>
			<br />
          <?php } ?>
        </div>
        <?php } ?>
...

 

Дружище! Как на 2.3 сделать? Помоги пожалуйста! И в категории вывести эти цены... Можно платно, только предоставь код для разных версий движка 2.0 и 2.3

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.