Господа. У меня есть 2 валюты. Евро и Рубли. Цены я по умолчанию ставлю в евро, они меняются в зависимости от моего курса евро. Нужно: Для цены "Акция" чтобы не было пересчета, она выставлялась как написано. Например: Цена товара 100 евро, курс стоит 70, показывает цену 7000р. - все хорошо Мне надо назначить акционную цену в рублях не зависимо от евро. Вкладка Акция: ставлю 6000р. , нужно чтобы показывало 6000р., а не 420 000р. (с пересчетом курса). Спасибо!
Как то не тянет, на обычный вопрос, который вот так с наскока можно решить, более подходит на разработку.. (~2т.р.)
в файле html/catalog/controller/product/product.php вставил и закомментил строку Код: if ((float)$result['special']) { // $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); $special = $this->currency->format($result['special'], 'RUB', 1); } else { $special = false; } Теперь выводит цену акции, как указано во вкладке Акция умножая на 1, а не курс. По аналогии тоже самое в самом каталоге. Но возникла проблема - это корзина: Там цена выводится так: Код: // Display prices if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } // Display prices if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $total = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']); } else { $total = false; } Не понятно как тут быть, т.к. в корзине все еще идет пересчет
потому что корзина проходит через библиотеку library/cart.php Посмотрите пример начиная от комментария //Special
в этот файле, как я понял, за специальную цену отвечает этот код: Код: // Product Specials $product_special_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$cart['product_id'] . "' AND customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' 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 ($product_special_query->num_rows) { $price = $product_special_query->row['price']; } не понимаю где здесь идет пересчет с курса и что дописать эта функция отвечает за подсчет суммы: Код: public function getTotal() { $total = 0; foreach ($this->getProducts() as $product) { $total += $this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']; } return $total; }
пересчет курса идет в библиотеки currency.php В библиотеки корзины, то что запишется последним в $price, то такая цена и попадет в корзину. В контроллере корзины там уже с помощью вышеуказанной библиотеки пересчитывается на текущий курс и показывается покупателю.