This process add or update a product in the cart
*/
protected function processChangeProductInCart()
{
$mode = (Tools::getIsset('update') && $this->id_product) ? 'update' : 'add';
if ($this->qty == 0)
$this->errors[] = Tools::displayError('Null quantity.', !Tools::getValue('ajax'));
elseif (!$this->id_product)
$this->errors[] = Tools::displayError('Product not found', !Tools::getValue('ajax'));
$product = new Product($this->id_product, true, $this->context->language->id);
if (!$product->id || !$product->active)
{
$this->errors[] = Tools::displayError('This product is no longer available.', !Tools::getValue('ajax'));
return;
}
$qty_to_check = $this->qty;
$cart_products = $this->context->cart->getProducts();
if (is_array($cart_products))
foreach ($cart_products as $cart_product)
{
if ((!isset($this->id_product_attribute) || $cart_product['id_product_attribute'] == $this->id_product_attribute) &&
(isset($this->id_product) && $cart_product['id_product'] == $this->id_product))
{
$qty_to_check = $cart_product['cart_quantity'];
if (Tools::getValue('op', 'up') == 'down')
$qty_to_check -= $this->qty;
else
$qty_to_check += $this->qty;
break;
Посмотрите пожалуйста