[*] FO : removed code specific to multishipping from the no-multishipping process

This commit is contained in:
Damien Metzger committed 2013-07-08 11:21:50 +02:00
1 parent 4b88e8cc06
commit 1bdc07be20
1 file changed
+47 -50
+47 -50
View File
@@ -3410,62 +3410,59 @@ class CartCore extends ObjectModel
*/ */
public function setNoMultishipping() public function setNoMultishipping()
{ {
// Upgrading quantities if (Configuration::get('PS_ALLOW_MULTISHIPPING'))
$sql = 'SELECT sum(`quantity`) as quantity, id_product, id_product_attribute, count(*) as count
FROM `'._DB_PREFIX_.'cart_product`
WHERE `id_cart` = '.(int)$this->id.'
AND `id_shop` = '.(int)$this->id_shop.'
GROUP BY id_product, id_product_attribute
HAVING count > 1';
foreach (Db::getInstance()->executeS($sql) as $product)
{ {
$sql = 'UPDATE `'._DB_PREFIX_.'cart_product` // Upgrading quantities
SET `quantity` = '.$product['quantity'].' $sql = 'SELECT sum(`quantity`) as quantity, id_product, id_product_attribute, count(*) as count
WHERE `id_cart` = '.(int)$this->id.' FROM `'._DB_PREFIX_.'cart_product`
AND `id_shop` = '.(int)$this->id_shop.' WHERE `id_cart` = '.(int)$this->id.'
AND id_product = '.$product['id_product'].' AND `id_shop` = '.(int)$this->id_shop.'
AND id_product_attribute = '.$product['id_product_attribute']; GROUP BY id_product, id_product_attribute
Db::getInstance()->execute($sql); HAVING count > 1';
foreach (Db::getInstance()->executeS($sql) as $product)
{
$sql = 'UPDATE `'._DB_PREFIX_.'cart_product`
SET `quantity` = '.$product['quantity'].'
WHERE `id_cart` = '.(int)$this->id.'
AND `id_shop` = '.(int)$this->id_shop.'
AND id_product = '.$product['id_product'].'
AND id_product_attribute = '.$product['id_product_attribute'];
Db::getInstance()->execute($sql);
}
// Merging multiple lines
$sql = 'DELETE cp1
FROM `'._DB_PREFIX_.'cart_product` cp1
INNER JOIN `'._DB_PREFIX_.'cart_product` cp2
ON (
(cp1.id_cart = cp2.id_cart)
AND (cp1.id_product = cp2.id_product)
AND (cp1.id_product_attribute = cp2.id_product_attribute)
AND (cp1.id_address_delivery <> cp2.id_address_delivery)
AND (cp1.date_add > cp2.date_add)
)';
Db::getInstance()->execute($sql);
} }
// Merging multiple lines // Update delivery address for each product line
$sql = 'DELETE cp1 Db::getInstance()->execute('
FROM `'._DB_PREFIX_.'cart_product` cp1 UPDATE `'._DB_PREFIX_.'cart_product`
INNER JOIN `'._DB_PREFIX_.'cart_product` cp2 SET `id_address_delivery` = (
ON ( SELECT `id_address_delivery` FROM `'._DB_PREFIX_.'cart`
(cp1.id_cart = cp2.id_cart) WHERE `id_cart` = '.(int)$this->id.' AND `id_shop` = '.(int)$this->id_shop.'
AND (cp1.id_product = cp2.id_product) )
AND (cp1.id_product_attribute = cp2.id_product_attribute) WHERE `id_cart` = '.(int)$this->id.'
AND (cp1.id_address_delivery <> cp2.id_address_delivery) '.(Configuration::get('PS_ALLOW_MULTISHIPPING') ? ' AND `id_shop` = '.(int)$this->id_shop : ''));
AND (cp1.date_add > cp2.date_add)
)';
Db::getInstance()->execute($sql);
// Upgrading address delivery if (Customization::isFeatureActive())
$sql = 'UPDATE `'._DB_PREFIX_.'cart_product` Db::getInstance()->execute('
SET `id_address_delivery` = UPDATE `'._DB_PREFIX_.'customization`
( SET `id_address_delivery` = (
SELECT `id_address_delivery` SELECT `id_address_delivery` FROM `'._DB_PREFIX_.'cart`
FROM `'._DB_PREFIX_.'cart`
WHERE `id_cart` = '.(int)$this->id.'
AND `id_shop` = '.(int)$this->id_shop.'
)
WHERE `id_cart` = '.(int)$this->id.'
'.(Configuration::get('PS_ALLOW_MULTISHIPPING') ? ' AND `id_shop` = '.(int)$this->id_shop : '');
Db::getInstance()->execute($sql);
$sql = 'UPDATE `'._DB_PREFIX_.'customization`
SET `id_address_delivery` =
(
SELECT `id_address_delivery`
FROM `'._DB_PREFIX_.'cart`
WHERE `id_cart` = '.(int)$this->id.' WHERE `id_cart` = '.(int)$this->id.'
) )
WHERE `id_cart` = '.(int)$this->id; WHERE `id_cart` = '.(int)$this->id);
Db::getInstance()->execute($sql);
} }
/** /**