Нужно подсчитать сумму всех товаров находящихся в корзине, которые имеют отметку *** (которых нет в наличии) в файлe catalog/controller/checkout/cart.php PHP: if (!$product['stock']) {if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $totalstock = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']);} else { $totalstock = false;}} else {$totalstock = false;} // в конец массива добавил 'totalstock'=> $totalstock$this->data['products'][] = array(...'totalstock'=> $totalstock); подсчитал сумму для каждого продукта которого нет в наличии Как теперь сложить их и записать в другую переменную?
$totalstock=$this->currency->format($t..... ты считаешь их по-стоимости или по количеству? теория $totaloutstock - так как то понятнее $totaloutstock = 0; foreach ,где начинается перечисление продуктов { if (условие по которому решаешь добавлять ли что то в $totalstock) { $totaloutstock += ....; } } // в конец массива добавил 'totalstock'=> $totalstock это значит что ты в каждый продукт добавил эту сумму,а это как я понял не нужно, тебе же нужно посчитать (количество, сумму) ВСЕХ продуктов, которых нет на складе а значит записывать её надо в $this->data['totaloutstock'] = $totaloutstock; а когда будешь выводить , то условие if ($totaloutstock > 0) echo $totaloutstock;
цена продукта умноженная на его количество в корзине --- добавлено: Apr 1, 2013 12:53 PM --- вот тут не совсем понятно как добавлять $totaloutstock += ....;
раз по стоимости (format смущает, тестить надо), то $totaloutstock += $this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']; тогда в вывод записывается $this->data['totaloutstock'] = $this->currency->format($totaloutstock); --- добавлено: Apr 1, 2013 1:07 PM --- а зачем это? типа, вы заказали товары, из них на нашем складе отсутствует товара на сумму ... ?
это для предзаказов если в корзине отсутствующих товаров лежит меньше чем на 10 000 руб, то оформление заказа не доступно
т.е будет сравнение строки с числом... наверно не стоит тогда делать $this->currency->format , лучше просто записать $this->data['totaloutstock'] = $totaloutstock;
записал вот так внутри foreach ($products as $product) { PHP: if (!$product['stock']) { $totaloutstock += $this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity'];}$this->data['totaloutstock'] = $totaloutstock; после выхода из foreach ($products as $product) { PHP: if ($min_predzakaz > $totaloutstock) { $this->simple->block_order = true; $this->simple->error = 'cart';} в корзине(cart.tpl) вывел <?php echo $totaloutstock; ?> для проверки Все работает, сумму выводит и условие срабатывает правильно, но вылазит 2 ошибки Undefined variable: totaloutstock к тем что внутри foreach ($products as $product) {
не должно оно выводить правильно... $this->data['totaloutstock'] = $totaloutstock; - прописываешь после того как foreach закрылся
тут ошибка осталась PHP: if (!$product['stock']) { $totaloutstock += $this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity'];}
какая? Undefined variable: totaloutstock ?магия,а перед forech ты прописал что $totaloutstock = 0; ? --- добавлено: Apr 1, 2013 3:08 PM --- соответсвенно условие на вывод, if ($totaloutstock != 0 && $totaloutstock < $min_predzakaz) {... проверяем если $totaloutstock равен нулю, то впринципе в корзине нет товаров, отсутствующих на складе если не равен 0 и меньше минималки, то блокируем заказ