public function shippingAction() { $this->checkIsAllowed(); //Download Article - no need for Shipping if (!$this->cart->hasPhysicalItems()) { $this->_redirect($this->view->url(array("action" => "payment"), "coreshop_checkout")); } $this->view->provider = Plugin::getShippingProviders($this->cart); if ($this->getRequest()->isPost()) { $shippingProvider = reset($this->getParam("shipping_provider", array())); foreach ($this->view->provider as $provider) { if ($provider->getIdentifier() == $shippingProvider) { $shippingProvider = $provider; break; } } if (!$provider instanceof Shipping) { $this->view->error = "oh shit, not found"; } else { $this->session->order['shippingProvider'] = $provider; $this->_redirect($this->view->url(array("action" => "payment"), "coreshop_checkout")); } } $this->view->headTitle($this->view->translate("Shipping")); }
/** * calculates shipping costs for the cart * * @return int */ public function getShipping() { $session = Tool::getSession(); //check for existing shipping if (array_key_exists("shippingProvider", $session->order) && $session->order['deliveryProvider'] instanceof Shipping) { return $session->order['shippingProvider']->getShipping($this); } //get all provider and choose cheapest $providers = Plugin::getShippingProviders($this); $cheapestProvider = null; foreach ($providers as $p) { if ($cheapestProvider === null) { $cheapestProvider = $p; } else { if ($cheapestProvider->getShipping($this) > $p->getShipping($this)) { $cheapestProvider = $p; } } } if ($cheapestProvider instanceof Shipping) { return $cheapestProvider->getShipping($this); } return 0; }