'Y', ]; public function __construct() { $this->adminSectionTree = ServiceContainer::getService(AdminSectionTree::class); } public function get_vars() { $vars = parent::get_vars(); $pageVars = getVal('body', $vars); $pageVars['tree'] = $this->adminSectionTree->getCategories(); $ID = $this->getID(); $dbcfg = Settings::getDefault(); $pageVars['data']['priceWithVat'] = $dbcfg['prod_prefer_price_vat'] == 'Y' || $dbcfg['prod_prefer_price_vat'] == 'F'; $pageVars['price_levels_products'] = []; if (!empty($ID)) { $SQL = sqlQuery('SELECT id_section, discount, unit FROM '.getTableName('price_levels_sections')." WHERE id_price_level='".$ID."' "); $pageVars['dbSec'] = sqlFetchAll($SQL, 'id_section'); $this->selected = $pageVars['dbSec']; $this->adminSectionTree->getOpened($pageVars['tree']); $pageVars['opened'] = $this->adminSectionTree->opened; $SQL = sqlQuery('SELECT p.id, p.name, plp.discount, plp.unit FROM price_levels_producers AS plp JOIN producers AS p ON plp.id_producer=p.id AND plp.id_price_level=:id ORDER BY p.name ASC', ['id' => $ID]); $pageVars['price_levels_producers'] = sqlFetchAll($SQL); $SQL = sqlQuery('SELECT p.id, p.code, p.in_store, p.title, plp.discount, plp.unit, ph.id as id_photo, ph.source, ph.image_2, vats.vat AS vat, vats.vat AS vats_value FROM price_levels_products AS plp, products AS p LEFT JOIN vats ON vats.id = p.vat LEFT JOIN photos_products_relation ppr ON ppr.id_product=p.id AND ppr.show_in_lead = "Y" LEFT JOIN photos ph ON ph.id=ppr.id_photo WHERE plp.id_price_level=:id AND plp.id_product=p.id ORDER BY p.title ASC', ['id' => $ID]); foreach ($SQL as $product) { if (($product['unit'] == 'final_price' || $product['unit'] == 'price') && $pageVars['data']['priceWithVat'] && $product['vats_value']) { $product['discount'] = calcPrice($product['discount'], $product['vats_value'])->printFloatValue(-2); } $product['image'] = getImage($product['id_photo'], $product['image_2'], $product['source'], 4); $pageVars['price_levels_products'][] = $product; } $pageVars['ranges'] = sqlQueryBuilder() ->select('*') ->from('price_levels_ranges') ->orderBy('range_from') ->where(\Query\Operator::equals(['id_price_level' => $ID])) ->execute() ->fetchAll(); $last = 0; foreach ($pageVars['ranges'] as &$margin) { if ($margin['range_from'] < $last) { $margin['bad_down_range'] = true; } $last = $margin['range_to']; } } $this->unserializeCustomData($pageVars['data']); $vars['body'] = $pageVars; return $vars; } public function getData() { $data = parent::getData(); if (getVal('Submit')) { $this->serializeCustomData($data); } return $data; } public function handleUpdate() { $OLD_ID = $this->getID(); $SQL = parent::handleUpdate(); if ($SQL) { $ID = $this->getID(); $data = $this->getData(); if ($this->isDuplicate()) { sqlQuery('INSERT INTO price_levels_producers (id_price_level, id_producer, discount, unit) SELECT :new_price_level, id_producer, discount, unit FROM price_levels_producers WHERE id_price_level=:old_price_level', ['new_price_level' => $ID, 'old_price_level' => $OLD_ID]); sqlQuery('INSERT INTO price_levels_products (id_price_level, id_product, discount, unit) SELECT :new_price_level, id_product, discount, unit FROM price_levels_products WHERE id_price_level=:old_price_level', ['new_price_level' => $ID, 'old_price_level' => $OLD_ID]); sqlQuery('INSERT INTO price_levels_sections (id_price_level, id_section, discount, unit) SELECT :new_price_level, id_section, discount, unit FROM price_levels_sections WHERE id_price_level=:old_price_level', ['new_price_level' => $ID, 'old_price_level' => $OLD_ID]); } // # ZARAZENI CENOVYCH HLADIN DO SEKCI if (findModule('products_sections')) { // plSecDiscount,plSecUnit sqlQuery('DELETE FROM '.getTableName('price_levels_sections')." WHERE id_price_level={$ID}"); foreach (getVal('plSecID', null, []) as $key => $value) { $key = intval($key); $id = intval($_POST['plSecID'][$key]); $discount = trim($_POST['plSecDiscount'][$key]); $unit = ($_POST['plSecUnit'][$key] == 'perc') ? 'perc' : 'price'; // jestli neni prazdny klidc, hodnota a jestli ma parametr nastaveno - pouzit: Y if (empty($id) || $discount == '') { continue; } $this->preparePrice($discount); $this->insertSQL('price_levels_sections', [ 'id_price_level' => $ID, 'id_section' => $id, 'discount' => $discount, 'unit' => $unit, ]); } } // # ZARAZENI CENOVYCH HLADIN KE ZBOZI if (findModule('products')) { $products = getVal('products', $data, []); foreach ($products as $id => $product) { $product['id_product'] = intval($product['id_product']); $product['id_price_level'] = $ID; if (!empty($product['delete']) || !$id || $product['id_product'] <= 0) { if ($id > 0) { $this->deleteSQL('price_levels_products', $this->filterFields($product, ['id_product', 'id_price_level'])); } continue; } $this->preparePrice($product['discount']); if (($product['unit'] == 'final_price' || $product['unit'] == 'price') && $product['priceWithVat']) { $product['discount'] = calcPrice($product['discount'], -$product['priceVat']); } if ($id < 0) { $this->insertSQL('price_levels_products', $product, ['priceVat', 'priceWithVat']); } else { $this->updateSQL('price_levels_products', $product, $this->filterFields($product, ['id_product', 'id_price_level']), ['priceVat', 'priceWithVat']); } } } // # ZARAZENI CENOVYCH HLADIN K VYROBCI if (findModule('producers')) { $producers = getVal('producers', $data, []); foreach ($producers as $id => $producer) { $producer['id_producer'] = intval($producer['id_producer']); $producer['id_price_level'] = $ID; if (!empty($producer['delete']) || !$id || $producer['id_producer'] <= 0) { if ($id > 0) { $this->deleteSQL('price_levels_producers', $this->filterFields($producer, ['id_producer', 'id_price_level'])); } continue; } $this->preparePrice($producer['discount']); if ($id < 0) { $this->insertSQL('price_levels_producers', $producer); } else { $this->updateSQL('price_levels_producers', $producer, $this->filterFields($producer, ['id_producer', 'id_price_level'])); } } } /** * ZARAZENI rozsahu cen v CENOVYCH HLADINach. */ $ranges = getVal('ranges', $data, []); if (!empty($ranges)) { $this->deleteSQL('price_levels_ranges', ['id_price_level' => $ID]); foreach ($ranges as $key => $range) { $key = intval($key); // jestli neni prazdny klidc, hodnota a jestli ma parametr nastaveno - pouzit: Y if (!empty($range['delete']) || empty($key) || $range['discount'] == '') { continue; } $range['id_price_level'] = $ID; $this->preparePrice($range['discount']); $this->insertSQL('price_levels_ranges', $range); } } } return $SQL; } } $pricelevels = new PriceLevels(); $pricelevels->run();