From 52ecfe7dade8152087cee6ccbbaeca74260418f6 Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Thu, 17 Apr 2014 23:52:01 +0200 Subject: [PATCH] Fix #308 --- .../Thelia/Core/Template/Loop/Delivery.php | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/core/lib/Thelia/Core/Template/Loop/Delivery.php b/core/lib/Thelia/Core/Template/Loop/Delivery.php index 2e7391c95..3eb858eb4 100644 --- a/core/lib/Thelia/Core/Template/Loop/Delivery.php +++ b/core/lib/Thelia/Core/Template/Loop/Delivery.php @@ -25,10 +25,11 @@ namespace Thelia\Core\Template\Loop; use Thelia\Core\Template\Element\LoopResult; use Thelia\Core\Template\Element\LoopResultRow; use Thelia\Core\Template\Loop\Argument\Argument; -use Thelia\Exception\OrderException; use Thelia\Model\CountryQuery; +use Thelia\Model\Module; use Thelia\Module\BaseModule; use Thelia\Module\DeliveryModuleInterface; +use Thelia\Module\Exception\DeliveryException; /** * Class Delivery @@ -62,9 +63,11 @@ class Delivery extends BaseSpecificModule $country = $this->container->get('thelia.taxEngine')->getDeliveryCountry(); } + /** @var Module $deliveryModule */ foreach ($loopResult->getResultDataCollection() as $deliveryModule) { $loopResultRow = new LoopResultRow($deliveryModule); + /** @var DeliveryModuleInterface $moduleInstance */ $moduleInstance = $this->container->get(sprintf('module.%s', $deliveryModule->getCode())); if (false === $moduleInstance instanceof DeliveryModuleInterface) { @@ -72,28 +75,27 @@ class Delivery extends BaseSpecificModule } try { - $postage = $moduleInstance->getPostage($country); - } catch (OrderException $e) { - switch ($e->getCode()) { - case OrderException::DELIVERY_MODULE_UNAVAILABLE: - /* do not show this delivery module */ - continue(2); - break; - default: - throw $e; + // Check if module is valid, by calling isValidDelivery(), + // or catching a DeliveryException. + + if ($moduleInstance->isValidDelivery($country)) { + + $postage = $moduleInstance->getPostage($country); + + $loopResultRow + ->set('ID', $deliveryModule->getId()) + ->set('TITLE', $deliveryModule->getVirtualColumn('i18n_TITLE')) + ->set('CHAPO', $deliveryModule->getVirtualColumn('i18n_CHAPO')) + ->set('DESCRIPTION', $deliveryModule->getVirtualColumn('i18n_DESCRIPTION')) + ->set('POSTSCRIPTUM', $deliveryModule->getVirtualColumn('i18n_POSTSCRIPTUM')) + ->set('POSTAGE', $postage) + ; + + $loopResult->addRow($loopResultRow); } + } catch (DeliveryException $ex) { + // Module is not available } - - $loopResultRow - ->set('ID', $deliveryModule->getId()) - ->set('TITLE', $deliveryModule->getVirtualColumn('i18n_TITLE')) - ->set('CHAPO', $deliveryModule->getVirtualColumn('i18n_CHAPO')) - ->set('DESCRIPTION', $deliveryModule->getVirtualColumn('i18n_DESCRIPTION')) - ->set('POSTSCRIPTUM', $deliveryModule->getVirtualColumn('i18n_POSTSCRIPTUM')) - ->set('POSTAGE', $postage) - ; - - $loopResult->addRow($loopResultRow); } return $loopResult; @@ -103,4 +105,4 @@ class Delivery extends BaseSpecificModule { return BaseModule::DELIVERY_MODULE_TYPE; } -} +} \ No newline at end of file