From 95e46afc99657f4de6c5c941c378de57472fdc25 Mon Sep 17 00:00:00 2001 From: gRoussac Date: Fri, 24 May 2013 17:21:56 +0200 Subject: [PATCH] [-] FO : Fix bug #PSCFV-9171, can not order with a unactivated country --- classes/Address.php | 5 +++++ controllers/front/ParentOrderController.php | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/classes/Address.php b/classes/Address.php index abf8ac2a3..01a227232 100644 --- a/classes/Address.php +++ b/classes/Address.php @@ -237,6 +237,8 @@ class AddressCore extends ObjectModel */ public static function getZoneById($id_address) { + if(!isset($id_address) || empty($id_address)) + return false; if (isset(self::$_idZones[$id_address])) return self::$_idZones[$id_address]; @@ -259,6 +261,9 @@ class AddressCore extends ObjectModel */ public static function isCountryActiveById($id_address) { + if(!isset($id_address) || empty($id_address)) + return false; + if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT c.`active` FROM `'._DB_PREFIX_.'address` a diff --git a/controllers/front/ParentOrderController.php b/controllers/front/ParentOrderController.php index b5f5fdc1d..65e287e5d 100644 --- a/controllers/front/ParentOrderController.php +++ b/controllers/front/ParentOrderController.php @@ -399,10 +399,11 @@ class ParentOrderControllerCore extends FrontController // Getting a list of formated address fields with associated values $formatedAddressFieldsValuesList = array(); - foreach ($customerAddresses as $address) + foreach ($customerAddresses as $i => $address) { + if (!Address::isCountryActiveById((int)($address['id_address']))) + unset($customerAddresses[$i]); $tmpAddress = new Address($address['id_address']); - $formatedAddressFieldsValuesList[$address['id_address']]['ordered_fields'] = AddressFormat::getOrderedAddressFields($address['id_country']); $formatedAddressFieldsValuesList[$address['id_address']]['formated_fields_values'] = AddressFormat::getFormattedAddressFieldsValues( $tmpAddress, @@ -459,6 +460,8 @@ class ParentOrderControllerCore extends FrontController { $address = new Address($this->context->cart->id_address_delivery); $id_zone = Address::getZoneById($address->id); + if (!Address::isCountryActiveById((int)($this->context->cart->id_address_delivery)) || !Address::isCountryActiveById((int)($this->context->cart->id_address_invoice))) + Tools::redirect('index.php?controller=order&step=1'); $carriers = $this->context->cart->simulateCarriersOutput(); $checked = $this->context->cart->simulateCarrierSelectedOutput(); $delivery_option_list = $this->context->cart->getDeliveryOptionList();