diff --git a/classes/Cart.php b/classes/Cart.php index ef572c2fd..6ccb66bb3 100644 --- a/classes/Cart.php +++ b/classes/Cart.php @@ -193,6 +193,35 @@ class CartCore extends ObjectModel return $return; } + + /** + * Update the address id of the cart + * + * @param int $id_address Current address id to change + * @param int $id_address_new New address id + */ + public function updateAddressId($id_address, $id_address_new) + { + $to_update = false; + if ($this->id_address_invoice == $id_address) + { + $to_update = true; + $this->context->cart->id_address_invoice = $id_address_new; + } + if ($this->id_address_delivery == $id_address) + { + $to_update = true; + $this->id_address_delivery = $id_address_new; + } + if ($to_update) + $this->update(); + + $sql = 'UPDATE `'._DB_PREFIX_.'cart_product` + SET `id_address_delivery` = '.(int)$id_address_new.' + WHERE `id_cart` = '.(int)$this->id.' + AND `id_address_delivery` = '.(int)$id_address; + Db::getInstance()->execute($sql); + } public function delete() { diff --git a/controllers/front/AddressController.php b/controllers/front/AddressController.php index f7cd4e4da..9637dc5f5 100644 --- a/controllers/front/AddressController.php +++ b/controllers/front/AddressController.php @@ -215,25 +215,7 @@ class AddressControllerCore extends FrontController { // Update id address of the current cart if necessary if (isset($address_old) && $address_old->isUsed()) - { - if ($this->context->cart->id_address_invoice == $address_old->id) - { - $to_update = true; - $this->context->cart->id_address_invoice = (int)$address->id; - } - if ($this->context->cart->id_address_delivery == $address_old->id) - { - $to_update = true; - $this->context->cart->id_address_delivery = (int)$address->id; - } - $this->context->cart->update(); - - $sql = 'UPDATE `'._DB_PREFIX_.'cart_product` - SET `id_address_delivery` = '.(int)$address->id.' - WHERE `id_cart` = '.(int)$this->context->cart->id.' - AND `id_address_delivery` = '.(int)$address_old->id; - Db::getInstance()->execute($sql); - } + $this->context->cart->updateAddressId($address_old->id, $address->id); if ($this->ajax) {