public function renderView() { $supplier = new SupplierCore((int) Tools::getValue('id_supplier')); $products = $supplier->getProductsLite($this->context->language->id); $total_product = count($products); $comb_array = array(); for ($i = 0; $i < $total_product; $i++) { $products[$i] = new Product($products[$i]['id_product'], false, $this->context->language->id); $products[$i]->loadStockData(); // Build attributes combinations $combinations = $products[$i]->getAttributeCombinations($this->context->language->id); foreach ($combinations as $combination) { $comb_infos = Supplier::getProductInformationsBySupplier($this->object->id, $products[$i]->id, $combination['id_product_attribute']); $comb_array[$combination['id_product_attribute']]['product_supplier_reference'] = $comb_infos['product_supplier_reference']; $comb_array[$combination['id_product_attribute']]['product_supplier_price_te'] = Tools::displayPrice($comb_infos['product_supplier_price_te'], new Currency($comb_infos['id_currency'])); $comb_array[$combination['id_product_attribute']]['reference'] = $combination['reference']; $comb_array[$combination['id_product_attribute']]['ean13'] = $combination['ean13']; $comb_array[$combination['id_product_attribute']]['upc'] = $combination['upc']; $comb_array[$combination['id_product_attribute']]['quantity'] = $combination['quantity']; $comb_array[$combination['id_product_attribute']]['attributes'][] = array($combination['group_name'], $combination['attribute_name'], $combination['id_attribute']); } if (isset($comb_array)) { foreach ($comb_array as $key => $product_attribute) { $list = ''; foreach ($product_attribute['attributes'] as $attribute) { $list .= $attribute[0] . ' - ' . $attribute[1] . ', '; } $comb_array[$key]['attributes'] = rtrim($list, ', '); } isset($comb_array) ? $products[$i]->combination = $comb_array : ''; unset($comb_array); } else { $product_infos = Supplier::getProductInformationsBySupplier($this->object->id, $products[$i]->id, 0); $products[$i]->product_supplier_reference = $product_infos['product_supplier_reference']; $products[$i]->product_supplier_price_te = Tools::displayPrice($product_infos['product_supplier_price_te'], new Currency($product_infos['id_currency'])); } } $this->tpl_view_vars = array('supplier' => $this->object, 'products' => $products, 'stock_management' => Configuration::get('PS_STOCK_MANAGEMENT'), 'shopContext' => Shop::getContext()); return parent::renderView(); }
public function getProductsLite($id_lang) { $context = Context::getContext(); $front = true; if (!in_array($context->controller->controller_type, array('front', 'modulefront'))) { $front = false; } $agile_sql_parts = AgileSellerManager::getAdditionalSqlForProducts("p"); if (empty($agile_sql_parts['joins']) or empty($agile_sql_parts['wheres'])) { parent::getProductsLite($id_lang); } $sql = ' SELECT p.`id_product`, pl.`name` FROM `' . _DB_PREFIX_ . 'product` p ' . Shop::addSqlAssociation('product', 'p') . ' LEFT JOIN `' . _DB_PREFIX_ . 'product_lang` pl ON ( p.`id_product` = pl.`id_product` AND pl.`id_lang` = ' . (int) $id_lang . ' ) INNER JOIN `' . _DB_PREFIX_ . 'product_supplier` ps ON ( ps.`id_product` = p.`id_product` AND ps.`id_supplier` = ' . (int) $this->id . ' ) ' . ($front ? ' WHERE product_shop.`visibility` IN ("both", "catalog")' : '') . ' GROUP BY p.`id_product`'; $finalResults = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); $finalResults = AgileSellerManager::prepareSellerRattingInfo($finalResults); return $finalResults; }