Aide - Recherche - Membres - Calendrier
Version complète : [mod] Poste Livre
Forum osCommerce-fr > Vie du groupe > Archives
rahasiyam
J'avais besoin de créer un module de livraison Poste Livre (qui ne sert pas qu'à poster des livres... conseillé par un agent de ma poste local..hum..pas légal tout ça wink.gif) enfin bref...moi je suis ce qu'on me dit hein !
>> A savoir que le Poste Livre est limité à 1 Kg et qu'il n'y a que le Grand Format d'inséré (petit format à rajouter).

Un GRAND merci à xaglo pour m'avoir plus qu'aidé à faire ce module.

Pour l'installation, 3 choses :
Ce fichier nommé postelivre.php à placer dans catalog/includes/modules/shipping :

CODE
<?php

/*

 $Id: PosteLivre.php,v 1 23/05/2003 3:00:00 Exp $



   Released under the GNU General Public License



www.oscommerce-fr.info

*/





 class postelivre {

   var $code, $title, $description, $icon, $enabled;



// class constructor

   function postelivre() {

     $this->code = 'postelivre';

     $this->title = MODULE_SHIPPING_POSTELIVRE_TEXT_TITLE;

     $this->description = MODULE_SHIPPING_POSTELIVRE_TEXT_DESCRIPTION;

     $this->sort_order = MODULE_SHIPPING_POSTELIVRE_SORT_ORDER;

     $this->icon = DIR_WS_ICONS . 'poste_livre.gif';

     $this->enabled = MODULE_SHIPPING_POSTELIVRE_STATUS;

   }



// class methods

   function quote($method = '') {

     global $order, $shipping_weight;



     $this->quotes = array('id' => $this->code,

                           'module' => MODULE_SHIPPING_POSTELIVRE_TEXT_TITLE,

                           'methods' => array());



     if (tep_not_null($this->icon))

$this->quotes['icon'] = tep_image($this->icon, $this->title);



     $dest_country = $order->delivery['country']['iso_code_2'];



     if (($dest_country != 'FR') && ($dest_country != 'FX')) {

       if (MODULE_SHIPPING_POSTELIVRE_DISPLAY == 'False') return;

         else {

     $this->quotes['error'] = MODULE_SHIPPING_POSTELIVRE_INVALID_ZONE;

     return $this->quotes;

   }

    }



   if ($shipping_weight < MODULE_SHIPPING_POSTELIVRE_MINI) {

     if (MODULE_SHIPPING_POSTELIVRE_DISPLAY == 'False') return;

      else {

   $this->quotes['error'] = MODULE_SHIPPING_POSTELIVRE_INVALID_WEIGHT;

   return $this->quotes;

 }

  }

 

   if ($shipping_weight > MODULE_SHIPPING_POSTELIVRE_MAXI) {

     if (MODULE_SHIPPING_POSTELIVRE_DISPLAY == 'False') return;

         else {

         $this->quotes['error'] = MODULE_SHIPPING_POSTELIVRE_TOO_HEAVY;

         return $this->quotes;

        }

      }  

 

     $table = split("[:,]" , $cost = constant('MODULE_SHIPPING_POSTELIVRE_GF'));

     for ($i = 0; $i < sizeof($table); $i+=2) {

if ($shipping_weight > $table[$i])

  continue;



$this->quotes['methods'][] = array('id'    => $this->code,

       'title' => $shipping_weight . ' ' . MODULE_SHIPPING_POSTELIVRE_TEXT_UNITS,

       'cost'  => $table[$i+1] + MODULE_SHIPPING_POSTELIVRE_HANDLING);

return $this->quotes;

     }



     $this->quotes['error'] = MODULE_SHIPPING_POSTELIVRE_TOO_HEAVY;

     return $this->quotes;

   }



   function check() {

     $check = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_POSTELIVRE_STATUS'");

     $check = tep_db_num_rows($check);



     return $check;

   }



   function install() {

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('Valider Poste Livre', 'MODULE_SHIPPING_POSTELIVRE_STATUS', 'True', 'Activer Poste Livre / D&sactiver sans perdre les valeurs chang&es', '6', '0', 'tep_cfg_select_option(array('True', 'False'), ', now())");

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id,  sort_order, date_added) values ('Poids minimum', 'MODULE_SHIPPING_POSTELIVRE_MINI', '0.100', 'Poids minimum de la commande pour proposer le Poste Livre', '6', '8', now())");

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Affichage permanent', 'MODULE_SHIPPING_POSTELIVRE_DISPLAY', 'True', 'Permettre l'affichage du texte même si la m&thode n'est pas possible', '6', '7', 'tep_cfg_select_option(array('True', 'False'), ', now())");

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Poste Livre Grand Format', 'MODULE_SHIPPING_POSTELIVRE_GF', '1.000:5.26', 'Port bas& sur le poids total des produits. Exemple: 1:3.50,2:7.00,etc.. Jusqu'à 1 Kg facturer 3.50, jusqu'à 2 Kg, 7.00, etc', '6', '0', now())");

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Frais fixes', 'MODULE_SHIPPING_POSTELIVRE_HANDLING', '0', 'Frais fixes (emballage) pour postelivre', '6', '0', now())");

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Ordre d'affichage', 'MODULE_SHIPPING_POSTELIVRE_SORT_ORDER', '0', 'Ordre d'affichage de la m&thode de livraison.', '6', '0', now())");

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id,  sort_order, date_added) values ('Poids maximum', 'MODULE_SHIPPING_POSTELIVRE_MAXI', '1.000', 'Poids maximum de la commande pour proposer le Poste Livre', '6', '8', now())");

   }



   function remove() {

     tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");

   }



   function keys() {

     return array('MODULE_SHIPPING_POSTELIVRE_STATUS', 'MODULE_SHIPPING_POSTELIVRE_MINI', 'MODULE_SHIPPING_POSTELIVRE_DISPLAY', 'MODULE_SHIPPING_POSTELIVRE_GF', 'MODULE_SHIPPING_POSTELIVRE_HANDLING', 'MODULE_SHIPPING_POSTELIVRE_SORT_ORDER','MODULE_SHIPPING_POSTELIVRE_MAXI');

   }

 }

?>



Puis celui-ci nommé encore postelivre.php à placer dans catalogincludeslanguagesfrenchmodulesshipping :

CODE
<?php

/*

 $Id: PosteLivre.php,v 1 23/05/2003 3:00:00 Exp $



   Released under the GNU General Public License



www.oscommerce-fr.info

*/





define('MODULE_SHIPPING_POSTELIVRE_TEXT_TITLE', 'Poste Livre');

define('MODULE_SHIPPING_POSTELIVRE_TEXT_DESCRIPTION', 'Tarif Poste Livre<br><b>Attention!</b> la désactivation de ce module rétablira les valeurs par défaut');

define('MODULE_SHIPPING_POSTELIVRE_TEXT_WAY', 'Optimum');

define('MODULE_SHIPPING_POSTELIVRE_TEXT_WEIGHT', 'Poids');

define('MODULE_SHIPPING_POSTELIVRE_TEXT_UNITS', 'kg');

define('MODULE_SHIPPING_POSTELIVRE_INVALID_ZONE', 'Cette zone n'est pas couverte');

define('MODULE_SHIPPING_POSTELIVRE_INVALID_WEIGHT', 'Poste Livre GF disponible & partir de '. MODULE_SHIPPING_POSTELIVRE_MINI . ' ' . MODULE_SHIPPING_POSTELIVRE_TEXT_UNITS . ' seulement.');

define('MODULE_SHIPPING_POSTELIVRE_TOO_HEAVY', 'Colis trop lourd pour cette m&thode de livraison');

?>


et ce logo user posted image (nommé poste_livre.gif) à placer dans catalogimagesicons.

Y'a plus qu'à se rendre dans l'Admin, partie Module de livraison et activer la ligne Poste Livre.

Et voilou..si ça peut servir hein smile.gif

@ pluche!
xaglo
QUOTE (rahasiyam)

Un GRAND merci à xaglo pour m'avoir plus qu'aidé à faire ce module.
blush.gif
Ce n'est que le début d'un embryon de ce qui pourrait devenir un VRAI module, plus destiné à l'autoformation de rahasiyam pour faire ses propres mod (je connais bien le problème, j'ai mis le doigt dans le php en commençant pareil laugh.gif )

En effet, il fait tout comme les grands, ajout de frais fixes, poids mini, poids maxi pour proposer ce mode d'envoi, affichache facultatif si le module n'est pas disponible, bref tout... pour ne proposer qu'un seul tarif confused.gif Le VRAI module reste donc à faire :
- choix de la méthode QUE si le produit s'y prette,
- choix du mode d'envoi (petit ou grand format) en fonction de la dimension de(s) l'article(s),
- calcul automatique du nombre d'envellopes nécessaires pour plusieurs livres
- ... liste non exhaustive wink.gif tongue.gif

Allez AU BOULOT
tiens au fait, il a disparu où le père Ciju?? AU BOULOT??? wink.gif
jp71
juste pour info

le poste livre n'est pas une bonne idée

pas d'assurance et une evaporation dans les services de poste très importante

j'ai perdu quelque dizaine de livre avec aucun recours et des clients qui téléphone...

je dois d'ailleurs m'en faire reprendre 200...

pour info

bon courage

jean-pierre
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2024 Invision Power Services, Inc.