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

[Решено] Как вызвать значение переменной amount класса tax?

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

Кто подскажет, как в \catalog\controller\product\catalog.php вызвать переменную $amount из system\library\tax.php?

Я может не правильно описал задачу, т.к. уже запутался окончательно в наследовании свойств и прочих хитростях ООП. Выражаясь "по-человечески", мне нужно в \catalog\controller\product\catalog.php получить значение $amount, определенное в tax.php. Что-то я делаю не так, поскольку получаю ошибки (либо переменная такая-то не определена, либо результат является массивом).

 

Подскажите, как получить $amount в catalog.php? Застопорился на этом моменти, вторые сутки бьюсь, ничего не получается =(

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


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

Под $amount вы подразумеваете метод getTax() (system\library\tax.php), верно?

 

Напишите, что конкретно вам надо получить.

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


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

Верно. Мне нужно в category.php в этом месте:

$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);

заменить на $amount, чтобы $tax имело значение $amount, а не price или special.

Это нужно для https://opencartforum.com/topic/27060-новая-старая-тема-про-ндс/

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


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

Неужели никто не знает?

 

добавил в category.php

$amount = $this->currency->format($this->tax->getTax($value, $tax_class_id));

 

Вылетает Notice: Undefined variable: value и Undefined variable: tax_class_id

 

Что с этим можно сделать?

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


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

Куда именно вы добавили этот код?
 
В category.php есть такой кусок кода:

$product_total = $this->model_catalog_product->getTotalProducts($data); 
			
$results = $this->model_catalog_product->getProducts($data);

Если посмотреть массив $results, то в нем найдете элемент tax_class_id - это то, что вы должны подставить вместо $tax_class_id. Элемент price - естественно цена определенного товара в оргиниале, т.е. без всяких налогов. Следовательно, цену товара вы подставляете вместо $value. Метод getTax() возвращает налог от цены.

  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
$amount = $this->currency->format($this->tax->getTax($result['price'], $result['tax_class_id']));
if ($this->config->get('config_tax')) {
$tax = $this->currency->format((float)$result['special'] ? ($result['special'] - $amount) : ($result['price'] - $amount));
} else {
$tax = false;
}	

Добавил перед условным выражением. До этого строка была как раз между приведенными Andretti. 

Andretti, огромное спасибо! Я пробовал обращаться к массиву $results дважды, Присваивал значение $amount по аналогии с $price. Но в первом случае обращался к данным с синтаксической ошибкой: $results['price'] А во втором случае строка "$amount = $this->currency...." была, как я описал выше, - между $product_total и $results, т.е. до цикла "foreach ($results as $result)". Вероятно, отсюда и грабли.

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


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

Вопрос решен. Эту тему можно закрыть.

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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