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 getProductIdByDate($id_shop, $id_currency, $id_country, $id_group, $beginning, $ending, $id_customer = 0, $with_combination_id = false) { if (!SpecificPrice::isFeatureActive()) { return array(); } $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT `id_product`, `id_product_attribute` FROM `' . _DB_PREFIX_ . 'specific_price` WHERE `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` = 1 AND ( (`from` = \'0000-00-00 00:00:00\' OR \'' . pSQL($beginning) . '\' >= `from`) AND (`to` = \'0000-00-00 00:00:00\' OR \'' . pSQL($ending) . '\' <= `to`) ) AND `reduction` > 0 ', false); $ids_product = array(); while ($row = Db::getInstance()->nextRow($result)) { $ids_product[] = $with_combination_id ? array('id_product' => (int) $row['id_product'], 'id_product_attribute' => (int) $row['id_product_attribute']) : (int) $row['id_product']; } return $ids_product; }
protected function _getProductIdByDate($beginning, $ending, Context $context = null, $with_combination_id = false, $id_customer = 0, $deal = false) { if (!$context) { $context = Context::getContext(); } $id_address = $context->cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}; $ids = Address::getCountryAndState($id_address); $id_country = $ids['id_country'] ? (int) $ids['id_country'] : (int) Configuration::get('PS_COUNTRY_DEFAULT'); if (!SpecificPrice::isFeatureActive()) { return array(); } if ($deal == true) { $where = '(`from` = \'0000-00-00 00:00:00\' OR \'' . pSQL($beginning) . '\' >= `from`) AND (`to` != \'0000-00-00 00:00:00\' AND \'' . pSQL($ending) . '\' <= `to`)'; } else { $where = '(`from` = \'0000-00-00 00:00:00\' OR \'' . pSQL($beginning) . '\' >= `from`) AND (`to` = \'0000-00-00 00:00:00\' OR \'' . pSQL($ending) . '\' <= `to`)'; } $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT `id_product`, `id_product_attribute` FROM `' . _DB_PREFIX_ . 'specific_price` WHERE `id_shop` IN(0, ' . (int) $context->shop->id . ') AND `id_currency` IN(0, ' . (int) $context->currency->id . ') AND `id_country` IN(0, ' . (int) $id_country . ') AND `id_group` IN(0, ' . (int) $context->customer->id_default_group . ') AND `id_customer` IN(0, ' . (int) $id_customer . ') AND `from_quantity` = 1 AND (' . $where . ') AND `reduction` > 0 ', false); $ids_product = array(); while ($row = Db::getInstance()->nextRow($result)) { $ids_product[] = $with_combination_id ? array('id_product' => (int) $row['id_product'], 'id_product_attribute' => (int) $row['id_product_attribute']) : (int) $row['id_product']; } return $ids_product; }
public static function getProductIdByDate($id_shop, $id_currency, $id_country, $id_group, $beginning, $ending, $id_customer = 0, $with_combination_id = false) { if (!SpecificPrice::isFeatureActive()) { return array(); } $query_extra = self::computeExtraConditions(null, null, $id_customer, null, $beginning, $ending); $results = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT `id_product`, `id_product_attribute` 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` = 1 AND `reduction` > 0 ' . $query_extra); $ids_product = array(); foreach ($results as $key => $value) { $ids_product[] = $with_combination_id ? array('id_product' => (int) $value['id_product'], 'id_product_attribute' => (int) $value['id_product_attribute']) : (int) $value['id_product']; } return $ids_product; }
public static function getSpecificPriceById($id_specific_price) { if (!SpecificPrice::isFeatureActive()) { return array(); } $res = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT * FROM `' . _DB_PREFIX_ . 'specific_price` sp WHERE `id_specific_price` =' . (int) $id_specific_price); return $res; }