Rechercher :
Accueil » Modules » Livraison Connexion

Question Comment créer son module de livraison??
Réponse Une façon simple de créer son propre module de livraison avec des tables de poids/tarifs propres à chaque zones de livraison est d'utiliser le module catalog/include/modules/shipping/zones.php
De nombreux modules (colissimo, chronopost...) ne sont que des adaptations de ce module.

Il suffit de l'éditer et vous aurez toute la description (en anglais) des modifications à effectuer.
En résumé, le module désactivé il faut changer dans les premières lignes de code (après les commentaires, à la fin de la function zones()
Code:
      // CUSTOMIZE THIS SETTING FOR THE NUMBER OF ZONES NEEDED
      $this->num_zones = 1;
Changer le nombre de zones nécessaires, puis activer le module et remplir les tables de pays et de poids/tarif pour chaque zone.
THAT'S ALL Exclamation
--------------------------------------------------------------------------
Idea Le danger de ce module est que les tables de tarifs sont uniquement en base de données et qu'elles diparaisent en cas de désactivation du module!!! Pour éviter ce désagrément, vous pouvez mettre en "dur" ces données en ajoutant et modifiant des lignes dans la boucle de la function install ()
Code:
      for ($i = 1; $i <= $this->num_zones; $i++) {
        $default_countries = '';
        if ($i == 1) {
          $default_countries = 'US,CA';
        }
deviendra :
      for ($i = 1; $i <= $this->num_zones; $i++) {
        $default_countries = '';
        if ($i == 1) { // France
          $default_countries = 'FR';
          $shipping_table = '0.500:7.20,1:8.40,2:8.90,3:9.60,5:10.70,7:11.70,10:13.60,15:14.90,30:19.50';
        }
        if ($i == 2) { // DOM
          $default_countries = 'GP,GF,MQ,YT,RE,PM';
          $shipping_table = '0.500:9.70,1:13.70,2:17.50,3:21.90,4:26.30,5:30.70,6:35.10,7:39.50,8:43.90,9:46.30,10:52.70';
        }
        if ($i == 3) { // TOM
          $default_countries = 'NC,PF,TF,FX,WF';
          $shipping_table = '0.500:10.30,1:15.20,2:24.20,3:36.10,5:54.40,7:77.50,10:105.20';
        }

Remplacer ensuite 2 lignes après le remplissage de la table MODULE_SHIPPING_ZONES_COST par
Code:
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Table Zone " . $i ." (poids:tarifs)', 'MODULE_SHIPPING_ZONES_COST_" . $i ."', '" . $shipping_table . "', 'Exemple: 3:8.50,7:10.50,... Un poids inférieur ou égal à 3kg coutera 8.50€, 10,50€ de 3kg à 7kg...', '6', '0', now())");


---------------------------------------------------------------------------------------------
Idea Si vous voulez créer plusieurs modules il est également facile de dupliquer ce module (ainsi que les fichiers zones.php des fichiers languages) et de changer le nom des fichiers "methode.php" par exemple

Il faut ensuite rechercher/remplacer partout le terme "zones" et le remplacer par le nom du fichier "methode" le remplacement doit être fait pour la "class zones()" devenant "class methode()", la "function zones()" devenant "function methode". ATTENTION d'utiliser un nom de méthode et de class simple sans caractères spéciaux ni undescore (_)
Vous pouvez remplacer TOUS les "zones" par "methode" en respectant la casse (minuscule) et TOUS les "ZONES" par "METHODE" en respectant également la casse.

Et enfin adapter les define() des fichiers languages (où le remplacement ZONE->METHODE aura également été fait)
Auteur : xaglo Mise à jour le 14/10/2007

Retour