protected function _updateCustomizationQuantity($quantity, $id_customization, $id_product, $id_product_attribute, $id_address_delivery, $operator = 'up', $id_cart_product = 0) { // Link customization to product combination when it is first added to cart if (empty($id_customization)) { $customization = $this->getProductCustomization($id_product, null, true); foreach ($customization as $field) { if ($field['quantity'] == 0) { $qty_policy = PP::productQtyPolicy($id_product); $q = PP::normalizeQty($quantity, $qty_policy); Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'customization` SET `quantity` = ' . (PP::qtyPolicyLegacy($qty_policy) ? $q : 1) . ', `quantity_fractional` = ' . (PP::qtyPolicyLegacy($qty_policy) ? 0 : $q) . ', `id_cart_product` = ' . (int) $id_cart_product . ', `id_product_attribute` = ' . (int) $id_product_attribute . ', `id_address_delivery` = ' . (int) $id_address_delivery . ', `in_cart` = 1 WHERE `id_customization` = ' . (int) $field['id_customization']); } } } /* Deletion */ if (!empty($id_customization) && (int) $quantity < 1) { return $this->_deleteCustomization((int) $id_customization, (int) $id_product, (int) $id_product_attribute); } /* Quantity update */ if (!empty($id_customization)) { $result = Db::getInstance()->getRow('SELECT `quantity` FROM `' . _DB_PREFIX_ . 'customization` WHERE `id_customization` = ' . (int) $id_customization); if ($result && Db::getInstance()->NumRows()) { if ($operator == 'down' && (int) $result['quantity'] - (int) $quantity < 1) { return Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'customization` WHERE `id_customization` = ' . (int) $id_customization); } return Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'customization` SET `quantity` = `quantity` ' . ($operator == 'up' ? '+ ' : '- ') . (int) $quantity . ', `id_address_delivery` = ' . (int) $id_address_delivery . ' WHERE `id_customization` = ' . (int) $id_customization); } else { Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'customization` SET `id_address_delivery` = ' . (int) $id_address_delivery . ' WHERE `id_customization` = ' . (int) $id_customization); } } // refresh cache of self::_products $this->_products = $this->getProducts(true); $this->update(); return true; }