diff --git a/local/modules/LivraisonParSecteurs/Config/config.xml b/local/modules/LivraisonParSecteurs/Config/config.xml new file mode 100644 index 00000000..3f4a14fd --- /dev/null +++ b/local/modules/LivraisonParSecteurs/Config/config.xml @@ -0,0 +1,32 @@ + + + + + +
+ + + + + + + + + + + + + + + + + + + + diff --git a/local/modules/LivraisonParSecteurs/Config/module.xml b/local/modules/LivraisonParSecteurs/Config/module.xml new file mode 100644 index 00000000..5978655d --- /dev/null +++ b/local/modules/LivraisonParSecteurs/Config/module.xml @@ -0,0 +1,28 @@ + + + LivraisonParSecteurs\LivraisonParSecteurs + + Define a delivery area, depending on customer's zip code + + + Permet de gérer les secteurs de livraison des clients, en fonction de leur code postal + + + en_US + fr_FR + + 1.0.0 + + + Laurent LE CORRE + laurent@thecoredev.fr + + + delivery + 2.3.x + alpha + 0 + 0 + diff --git a/local/modules/LivraisonParSecteurs/Config/schema.xml b/local/modules/LivraisonParSecteurs/Config/schema.xml new file mode 100644 index 00000000..74de6ce7 --- /dev/null +++ b/local/modules/LivraisonParSecteurs/Config/schema.xml @@ -0,0 +1,44 @@ + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
diff --git a/local/modules/LivraisonParSecteurs/I18n/en_US.php b/local/modules/LivraisonParSecteurs/I18n/en_US.php new file mode 100644 index 00000000..3b1c17c2 --- /dev/null +++ b/local/modules/LivraisonParSecteurs/I18n/en_US.php @@ -0,0 +1,5 @@ + 'The displayed english string', + 'My areas' => 'My delivery areas', +); diff --git a/local/modules/LivraisonParSecteurs/I18n/fr_FR.php b/local/modules/LivraisonParSecteurs/I18n/fr_FR.php new file mode 100644 index 00000000..5d405cc9 --- /dev/null +++ b/local/modules/LivraisonParSecteurs/I18n/fr_FR.php @@ -0,0 +1,16 @@ + 'Actif', + 'Actions' => 'Actions', + 'Area name' => 'Nom du secteur', + 'Cities' => 'Communes couvertes', + 'Delivery days' => 'Jours de livraison', + 'Delivery price' => 'Prix de la livraison', + 'Edit an area' => 'Modifier le secteur', + 'General' => 'Général', + 'Home delivery cost' => 'Frais de livraison à domicile', + 'My areas' => 'Mes secteurs de livraison', + 'Save' => 'Sauvegarder', + 'Schedule' => 'Horaires', + 'Title of config view' => 'Module LivraisonParSecteurs - Configuration' +); diff --git a/local/modules/LivraisonParSecteurs/LivraisonParSecteurs.php b/local/modules/LivraisonParSecteurs/LivraisonParSecteurs.php new file mode 100644 index 00000000..5fe7093d --- /dev/null +++ b/local/modules/LivraisonParSecteurs/LivraisonParSecteurs.php @@ -0,0 +1,81 @@ +getWrappedConnection()); + $database->insertSql(null, array(__DIR__ . '/Config/thelia.sql')); + $database->insertSql(null, array(__DIR__ . '/Config/insert.sql')); + } + + /** + * This method is called by the Delivery loop, to check if the current module has to be displayed to the customer. + * Override it to implements your delivery rules/ + * + * If you return true, the delivery method will de displayed to the customer + * If you return false, the delivery method will not be displayed + * + * @param Country $country the country to deliver to. + * + * @return boolean + */ + public function isValidDelivery(Country $country) + { + // Get current addressId + $currentAddressId = $this->getRequest()->request->get('address_id'); + + if (empty($currentAddressId)) { + if (null !== $customer = $this->getRequest()->getSession()->getCustomerUser()) { + $currentAddressId = AddressQuery::create() + ->filterByCustomer($customer) + ->filterByIsDefault(1) + ->select('ID') + ->findOne(); + } else { + return false; + } + } + } + + + /** + * Calculate and return delivery price in the shop's default currency + * + * @param Country $country the country to deliver to. + * + * @return OrderPostage|float the delivery price + * @throws DeliveryException if the postage price cannot be calculated. + */ + public function getPostage(Country $country) + { + if (! $this->isValidDelivery($country)) { + throw new DeliveryException( + Translator::getInstance()->trans("This module cannot be used on the current cart.") + ); + } + + return LpsSecteurQuery::create()->findOneByActive(1)->getPrice(); + } + +} diff --git a/local/modules/LivraisonParSecteurs/Readme.md b/local/modules/LivraisonParSecteurs/Readme.md new file mode 100644 index 00000000..c3163a85 --- /dev/null +++ b/local/modules/LivraisonParSecteurs/Readme.md @@ -0,0 +1,55 @@ +# Secteurs Livraison + +Add a short description here. You can also add a screenshot if needed. + +## Installation + +### Manually + +* Copy the module into ```/local/modules/``` directory and be sure that the name of the module is LivraisonParSecteurs\. +* Activate it in your thelia administration panel + +### Composer + +Add it in your main thelia composer.json file + +``` +composer require your-vendor/secteurs-livraison-module:~1.0 +``` + +## Usage + +Explain here how to use your module, how to configure it, etc. + +## Hook + +If your module use one or more hook, fill this part. Explain which hooks are used. + + +## Loop + +If your module declare one or more loop, describe them here like this : + +[loop name] + +### Input arguments + +|Argument |Description | +|--- |--- | +|**arg1** | describe arg1 with an exemple. | +|**arg2** | describe arg2 with an exemple. | + +### Output arguments + +|Variable |Description | +|--- |--- | +|$VAR1 | describe $VAR1 variable | +|$VAR2 | describe $VAR2 variable | + +### Exemple + +Add a complete exemple of your loop + +## Other ? + +If you have other think to put, feel free to complete your readme as you want. diff --git a/local/modules/LivraisonParSecteurs/composer.json b/local/modules/LivraisonParSecteurs/composer.json new file mode 100644 index 00000000..1355df24 --- /dev/null +++ b/local/modules/LivraisonParSecteurs/composer.json @@ -0,0 +1,12 @@ +{ + "name": "thecoredev/secteurs-livraison-module", + "description": "LivraisonParSecteurs\ module for Thelia", + "license": "LGPL-3.0-or-later", + "type": "thelia-module", + "require": { + "thelia/installer": "~1.1" + }, + "extra": { + "installer-name": "LivraisonParSecteurs\" + } +} \ No newline at end of file