Fix for #308
This commit is contained in:
@@ -23,14 +23,16 @@
|
|||||||
namespace Front\Controller;
|
namespace Front\Controller;
|
||||||
|
|
||||||
use Propel\Runtime\Exception\PropelException;
|
use Propel\Runtime\Exception\PropelException;
|
||||||
use Thelia\Controller\Front\BaseFrontController;
|
|
||||||
use Thelia\Core\Event\Order\OrderEvent;
|
|
||||||
use Thelia\Form\Exception\FormValidationException;
|
|
||||||
use Thelia\Core\Event\Cart\CartEvent;
|
|
||||||
use Thelia\Core\Event\TheliaEvents;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Thelia\Controller\Front\BaseFrontController;
|
||||||
|
use Thelia\Core\Event\Cart\CartEvent;
|
||||||
|
use Thelia\Core\Event\Order\OrderEvent;
|
||||||
|
use Thelia\Core\Event\TheliaEvents;
|
||||||
use Thelia\Form\CartAdd;
|
use Thelia\Form\CartAdd;
|
||||||
|
use Thelia\Form\Exception\FormValidationException;
|
||||||
|
use Thelia\Log\Tlog;
|
||||||
use Thelia\Model\AddressQuery;
|
use Thelia\Model\AddressQuery;
|
||||||
|
use Thelia\Module\Exception\DeliveryException;
|
||||||
|
|
||||||
class CartController extends BaseFrontController
|
class CartController extends BaseFrontController
|
||||||
{
|
{
|
||||||
@@ -60,7 +62,7 @@ class CartController extends BaseFrontController
|
|||||||
$this->redirectSuccess();
|
$this->redirectSuccess();
|
||||||
|
|
||||||
} catch (PropelException $e) {
|
} catch (PropelException $e) {
|
||||||
\Thelia\Log\Tlog::getInstance()->error(sprintf("Failed to add item to cart with message : %s", $e->getMessage()));
|
Tlog::getInstance()->error(sprintf("Failed to add item to cart with message : %s", $e->getMessage()));
|
||||||
$message = "Failed to add this article to your cart, please try again";
|
$message = "Failed to add this article to your cart, please try again";
|
||||||
} catch (FormValidationException $e) {
|
} catch (FormValidationException $e) {
|
||||||
$message = $e->getMessage();
|
$message = $e->getMessage();
|
||||||
@@ -108,7 +110,7 @@ class CartController extends BaseFrontController
|
|||||||
|
|
||||||
$this->redirectSuccess();
|
$this->redirectSuccess();
|
||||||
} catch (PropelException $e) {
|
} catch (PropelException $e) {
|
||||||
\Thelia\Log\Tlog::getInstance()->error(sprintf("error during deleting cartItem with message : %s", $e->getMessage()));
|
Tlog::getInstance()->error(sprintf("error during deleting cartItem with message : %s", $e->getMessage()));
|
||||||
$this->getParserContext()->setGeneralError($e->getMessage());
|
$this->getParserContext()->setGeneralError($e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,14 +162,24 @@ class CartController extends BaseFrontController
|
|||||||
|
|
||||||
if (null !== $deliveryModule && null !== $deliveryAddress) {
|
if (null !== $deliveryModule && null !== $deliveryAddress) {
|
||||||
$moduleInstance = $this->container->get(sprintf('module.%s', $deliveryModule->getCode()));
|
$moduleInstance = $this->container->get(sprintf('module.%s', $deliveryModule->getCode()));
|
||||||
$postage = $moduleInstance->getPostage($deliveryAddress->getCountry());
|
|
||||||
|
|
||||||
$orderEvent = new OrderEvent($order);
|
$orderEvent = new OrderEvent($order);
|
||||||
$orderEvent->setPostage($postage);
|
|
||||||
|
|
||||||
$this->getDispatcher()->dispatch(TheliaEvents::ORDER_SET_POSTAGE, $orderEvent);
|
try {
|
||||||
|
$postage = $moduleInstance->getPostage($deliveryAddress->getCountry());
|
||||||
|
|
||||||
|
$orderEvent->setPostage($postage);
|
||||||
|
|
||||||
|
$this->getDispatcher()->dispatch(TheliaEvents::ORDER_SET_POSTAGE, $orderEvent);
|
||||||
|
}
|
||||||
|
catch (DeliveryException $ex) {
|
||||||
|
// The postage has been chosen, but changes in the cart causes an exception.
|
||||||
|
// Reset the postage data in the order
|
||||||
|
$orderEvent->setDeliveryModule(0);
|
||||||
|
|
||||||
|
$this->getDispatcher()->dispatch(TheliaEvents::ORDER_SET_DELIVERY_MODULE, $orderEvent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user