. */ /* */ /*************************************************************************************/ namespace LocalPickup; use Propel\Runtime\Connection\ConnectionInterface; use Thelia\Install\Database; use Thelia\Model\Order; use Thelia\Model\Country; use Thelia\Model\AddressQuery; use Thelia\Model\ConfigQuery; use Thelia\Module\AbstractDeliveryModule; /** * Class LocalPickup * @package LocalPickup * @author Thelia */ class LocalPickup extends AbstractDeliveryModule { const DOMAIN_NAME = 'localpickup'; const PRICE_VAR_NAME = 'price'; /** * @inheritdoc */ public function getPostage(Country $country) { return floatval(LocalPickup::getConfigValue(self::PRICE_VAR_NAME, 0)); } public function update($currentVersion, $newVersion, ConnectionInterface $con = null) { if ($newVersion === '1.2') { $db = new Database($con); // Migrate previous price from database to module config try { $statement = $db->execute("select price from local_pickup_shipping order by id desc limit 1"); $price = floatval($statement->fetchColumn(0)); LocalPickup::setConfigValue(self::PRICE_VAR_NAME, $price); } catch (\Exception $ex) { //LocalPickup::setConfigValue(self::PRICE_VAR_NAME, 0); } } } /** * @inheritdoc */ public function isValidDelivery(Country $country) { if (null !== $deliveryAddress = AddressQuery::create()->findPk( $this->getRequest()->getSession()->getOrder()->getChoosenDeliveryAddress() )) { $myPostalCode = $deliveryAddress->getZipcode(); // On recherche si le CP de l'adresse de livraison est dans la table 'boutique_cp_retrait_sur_place', pour savoir si le retrait sur place est possible. $postalCodes = explode(';', ConfigQuery::read('thecoredev_cp_autorises_retrait_sur_place', [])); if (null !== $postalCodes) { foreach($postalCodes as $currentPostalCode) { if ($myPostalCode === $currentPostalCode) { return true; } } } } return false; } }