Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

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

 

Подскажите, как получить $amount в catalog.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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.