public static function getQuantityDiscounts($id_product, $id_shop, $id_currency, $id_country, $id_group, $id_product_attribute = null, $all_combinations = false, $id_customer = 0) { if (!SpecificPrice::isFeatureActive()) { return array(); } $now = date('Y-m-d H:i:s'); $res = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT *, ' . SpecificPrice::_getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group, $id_customer) . ' FROM `' . _DB_PREFIX_ . 'specific_price` WHERE `id_product` IN(0, ' . (int) $id_product . ') AND ' . (!$all_combinations ? '`id_product_attribute` IN(0, ' . (int) $id_product_attribute . ') AND ' : '') . ' `id_shop` IN(0, ' . (int) $id_shop . ') AND `id_currency` IN(0, ' . (int) $id_currency . ') AND `id_country` IN(0, ' . (int) $id_country . ') AND `id_group` IN(0, ' . (int) $id_group . ') AND `id_customer` IN(0, ' . (int) $id_customer . ') AND ( (`from` = \'0000-00-00 00:00:00\' OR \'' . $now . '\' >= `from`) AND (`to` = \'0000-00-00 00:00:00\' OR \'' . $now . '\' <= `to`) ) ORDER BY `from_quantity` ASC, `id_specific_price_rule` ASC, `score` DESC '); $targeted_prices = array(); $last_quantity = array(); foreach ($res as $specific_price) { if (!isset($last_quantity[(int) $specific_price['id_product_attribute']])) { $last_quantity[(int) $specific_price['id_product_attribute']] = $specific_price['from_quantity']; } elseif ($last_quantity[(int) $specific_price['id_product_attribute']] == $specific_price['from_quantity']) { continue; } $last_quantity[(int) $specific_price['id_product_attribute']] = $specific_price['from_quantity']; if ($specific_price['from_quantity'] > PP::getSpecificPriceFromQty((int) $id_product)) { $targeted_prices[] = $specific_price; } } return $targeted_prices; }
public static function getQuantityDiscount($id_product, $id_shop, $id_currency, $id_country, $id_group, $quantity, $id_product_attribute = null, $id_customer = 0) { $context = Context::getContext(); if ($context->customer->id) { $groups = array(); $customer_groups = Db::getInstance()->executeS("SELECT id_group FROM ps_customer_group WHERE id_customer={$context->customer->id}"); foreach ($customer_groups as $row_group) { $groups[] = $row_group['id_group']; } } else { $groups = array($id_group); } $groups = implode(',', $groups); if (!SpecificPrice::isFeatureActive()) { return array(); } $now = date('Y-m-d H:i:s'); $sql = ' SELECT *, ' . SpecificPrice::_getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group, $id_customer) . ' FROM `' . _DB_PREFIX_ . 'specific_price` WHERE `id_product` IN(0, ' . (int) $id_product . ') AND `id_product_attribute` IN(0, ' . (int) $id_product_attribute . ') AND `id_shop` IN(0, ' . (int) $id_shop . ') AND `id_currency` IN(0, ' . (int) $id_currency . ') AND `id_country` IN(0, ' . (int) $id_country . ') AND `id_group` IN(0, ' . $groups . ') AND `id_customer` IN(0, ' . (int) $id_customer . ') AND `from_quantity` >= ' . (int) $quantity . ' AND ( (`from` = \'0000-00-00 00:00:00\' OR \'' . $now . '\' >= `from`) AND (`to` = \'0000-00-00 00:00:00\' OR \'' . $now . '\' <= `to`) ) ORDER BY `from_quantity` DESC, `score` DESC '; return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); }
public static function getQuantityDiscount($id_product, $id_shop, $id_currency, $id_country, $id_group, $quantity, $id_product_attribute = null, $id_customer = 0) { if (!SpecificPrice::isFeatureActive()) { return array(); } $now = date('Y-m-d H:i:s'); return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT *, ' . SpecificPrice::_getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group, $id_customer) . ' FROM `' . _DB_PREFIX_ . 'specific_price` WHERE `id_product` IN(0, ' . (int) $id_product . ') AND `id_product_attribute` IN(0, ' . (int) $id_product_attribute . ') AND `id_shop` IN(0, ' . (int) $id_shop . ') AND `id_currency` IN(0, ' . (int) $id_currency . ') AND `id_country` IN(0, ' . (int) $id_country . ') AND `id_group` IN(0, ' . (int) $id_group . ') AND `id_customer` IN(0, ' . (int) $id_customer . ') AND `from_quantity` >= ' . (int) $quantity . ' AND ( (`from` = \'0000-00-00 00:00:00\' OR \'' . $now . '\' >= `from`) AND (`to` = \'0000-00-00 00:00:00\' OR \'' . $now . '\' <= `to`) ) ORDER BY `from_quantity` DESC, `score` DESC '); }
public static function getQuantityDiscount($id_product, $id_shop, $id_currency, $id_country, $id_group, $quantity, $id_product_attribute = null, $id_customer = 0) { if (!SpecificPrice::isFeatureActive()) { return array(); } $query_extra = self::computeExtraConditions($id_product, $id_product_attribute, $id_customer, null); return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT *, ' . SpecificPrice::_getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group, $id_customer) . ' FROM `' . _DB_PREFIX_ . 'specific_price` WHERE `id_shop` ' . self::formatIntInQuery(0, $id_shop) . ' AND `id_currency` ' . self::formatIntInQuery(0, $id_currency) . ' AND `id_country` ' . self::formatIntInQuery(0, $id_country) . ' AND `id_group` ' . self::formatIntInQuery(0, $id_group) . ' AND `from_quantity` >= ' . (int) $quantity . ' ' . $query_extra . ' ORDER BY `from_quantity` DESC, `score` DESC, `to` DESC, `from` DESC '); }