Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forum osCommerce-fr _ Contributions _ Contribution Mondial Relay : votre avis m'interesse

Écrit par : MisterSpoonK 25 Jul 2009, 08:03

Bonjour à tous,

Nous sommes en train de préparer la contribution pour Mondial Relay, le réseau de distribution en relais des 3 Suisses (3800 points de retraits).
Et j'aurais souhaité avoir votre avis.
Pour le moment la contribution contient les choses suivantes :
- en Front office : intégration dans la page du choix du lieu de livraison et enregistrement dans vos bases du relais choisi
- en back office, impression des étiquettes sur un modèle proche d'expeditor Inet (envoi d'un fichier CSV et génération d'un fichier PDF à imprimer)

Voyez-vous d'autres choses?

à vous lire
PS : volontairement, je ne fais pas la promo des relais. je pourrais en parler plus longement à ceux qui le souhaite (prix, délai, retrait, ...).

Écrit par : Gnidhal 25 Jul 2009, 08:28

Déjà, réaliser un module de relais colis pour ce prestataire est une excellente promotion wink.gif

En front-office as-tu penser à intégrer un G-Map ?

Écrit par : MisterSpoonK 25 Jul 2009, 09:00


Oui smile.gif , la Gmap sera intégrée avec présentation de 5 relais (+ liens vers suivants)
au survol d'un relais, photos du relais + horaires remplaceront la Gmap via un calque.

Écrit par : Illeriane 13 Aug 2009, 13:58

Bonjour,

J'aimerais savoir si le module en question a été finalisé et s'il est possible d'en profiter?

Merci d'avance.

Cordialement.

Adrien.

Écrit par : audioshop55 13 Aug 2009, 14:34

D'après ce que je sais la contrib est en phase final et arriveras d'ici peu !

encore un peu de patience wink.gif

Écrit par : dvf 1 Nov 2009, 17:23

finit ou pas ?

On médite sur un contrat avec mondial.

Si la contrib existe , si possible de dire oui ou non , afin d'eviter de faire tout développer smile.gif

Écrit par : petitben62 7 Dec 2009, 21:40

Bonjour,
J'ai contacté Mondial Relay et c'est eux qui m'ont donné la contrib à mettre en place.
Par contre pas de possibilité de la faire fonctionner.
Il faut mettre un dossier complet à la racine.. modifier checkout_shipping et process puis la class order.. et rien de prévu pour le repertoire includes/modules/shipping ni pour languages/french/modules/shipping ..

Quelqu'un pourrait me mettre sur la voie ?? il semble que la contrib a été dév par une sté de Quimper.. alors Sté si tu es sur ce forum.. la parole est à toi wink.gif))

Merci à vous

Écrit par : audioshop 7 Dec 2009, 22:43

Salut http://www.oscommerce-fr.info/forum/index.php?showuser=7623,

Ils t'on dit que c'etait une version final?
prévue pour oscommerce?

Je crois ps d'après ce que tu dit, peut être que tu pourrait nous mettre un lien pour télécharger le package qu'on puisse voir ça de nos propres yeux?

@++

Écrit par : petitben62 8 Dec 2009, 12:41

Bonjour,
Ils m'ont envoyé un dossier mondial relay a mettre a la racine puis demandé de modifier les fichiers ci dessus suivant le lien suivant :
http://plugins.quimper-web.com/rep_plugins/plugin_6/install.php

Voila.. voila.. pour le dossier il contient un dossier js , un dossier lib.. et c'est tout et mondialrelay.class.php

Écrit par : dvf 31 Jan 2010, 09:14

salut

j'ai le même dossier

j'ai récrit la partie module/shipping et language/shipping


Mais j'ai un cannot redeclare class shipping at line 13 quand je clique sur valider le point

Qui a réussit à installer la contribution ?

Écrit par : dvf 31 Jan 2010, 09:26

ici la contrib fournit par mondial relay


http://www.laboutiquedesvraisfans.com/mondial_relay.zip


Le module shipping que je vous rajoute. Ce qui permet au moins d'afficher le javascript sur la page des choix de livraison.

Mais quand on clicque sur valider le point , j'ai une erreur de class.



http://www.laboutiquedesvraisfans.com/mondialrelaymodule.zip


Écrit par : audioshop 31 Jan 2010, 12:53

Salut dvf,

Merci pour le paquet, je vais aller tester de suite mais avant j'aurai voulus savoir à quoi servent tes modifications et pourquoi tu les à faites?

merci

Écrit par : dvf 31 Jan 2010, 13:44

je suis pas le développeur du truc

les modif servent.


Sur la page checkout shipping à afficher un bloc si le mode mondial relay est sélectionner.

D'enregistrer dans la base le point relais choisit.

Et de pouvoir l'imprimer dans le backoffice .. enfin quand on l'aura mise en place car moi je suis bloqué sur la page checkouk quand je clique sur valider mon point relay , j'ai une erreur de class.


Donc , voilà ,

Si des gens aide au débug , smile.gif

Le pack du module est fournit par moi ,c est une version simple du shipping par poids. Après chacun pourra adapater les contrib existante.

je mettrais un autre module avec prix / poids qui marchent , dès que cela marche déjà avec celui ci smile.gif



Écrit par : audioshop 2 Feb 2010, 00:05

Salut dvf,

Après installation aucun des 2 modules ne fonctionne chez moi

l'ifram de sélection du point relais ne s'affiche que si je selectionne mondial relay, je passe sur la page des modes de paiement et je fais un retour arrière
ensuite je choisi mon point relais je passe à la page checkout_paiement ou est installé MATC sur ma boutique qui permet de forcer le client à accepter les CGV sinon le bouton continuer est grisé et bien quand j'active le module mondial_relay impossible de passer à la page suivante même en aillant accepté les cgv le bouton reste grisé, surement dû à un dysfonctionnement java script

Une fois la commande passé en rusant avec mon navigateur, l'adresse de livraison du client est celle du Point relais dans l'admin mrgreen.gif

Bref c'est pas au point, en même temps c'est bien inscrit " les modules Magento et OsCommerce sont en cours de révision" dans l'email du commercial mondial relay que j'ai contacté.

@++

Écrit par : dvf 2 Feb 2010, 09:07

ok

parce que nous on a un contrat inactif , je vais payer pour le faire développer.

J'attend depuis novembre ..

bouh

Écrit par : jguerrea 17 Feb 2010, 22:19

Il ya bien les deux modules front et back dans la contribution ?

choix relais
impression adressse ?

merci

j

Écrit par : dvf 23 Feb 2010, 13:48

toujours pas de retour ?

nous on fait sous traiter , j'attend plus.

Écrit par : titi02330 24 Feb 2010, 15:22

Salut,

Je suis intéressé par cette contribution, elle est disponible ? Y'a une date ?

Merci d'avance.

Ciao.

Écrit par : rol 25 Feb 2010, 15:21

Bonjour,

je dois pratiquer a l'installation de ce module la semaine prochaine est ce que quelqu'un a réussis l'installation ?

Au première vu des commentaires ce n'est pas le cas donc j'appréhende.

Merci pour un retour, je ferais le miens la semaine prochaine.

Écrit par : mosaic 4 Mar 2010, 21:44

bon, les gars, il semblerait en effet qu'il y ait un souci avec ce module ( la fameuse société à Quimper, c'est la mienne ) donc posez vos questions et j'y répondrai dans la mesure de mes disponibilités
déjà, les fichiers de modules absents du zip :

includes/modules/shipping/mondialrelay.php

CODE
<?php
/*
$Id: mondial_relay.php,v 1.27 2003/02/05 22:41:52 hpdl Exp $

osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com

Copyright © 2003 osCommerce

Released under the GNU General Public License
*/

class mondialrelay {
var $code, $title, $description, $icon, $enabled;

// class constructor
function mondialrelay() {
global $order;

$this->code = 'mondialrelay';
$this->title = MODULE_SHIPPING_MONDIALRELAY_TEXT_TITLE;
$this->description = MODULE_SHIPPING_MONDIALRELAY_TEXT_DESCRIPTION;
$this->sort_order = MODULE_SHIPPING_MONDIALRELAY_SORT_ORDER;
$this->icon = '';
$this->tax_class = MODULE_SHIPPING_MONDIALRELAY_TAX_CLASS;
$this->enabled = ((MODULE_SHIPPING_MONDIALRELAY_STATUS == 'true') ? true : false);// la valeur de test 'true' ou 'false' est convertie dans application_top depuis 'Oui' ou 'Non' ! laisser le test sur la valeur 'true'

if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_MONDIALRELAY_ZONE > 0) ) {
$check_flag = false;
$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_MONDIALRELAY_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
while ($check = tep_db_fetch_array($check_query)) {
if ($check['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check['zone_id'] == $order->delivery['zone_id']) {
$check_flag = true;
break;
}
}

if ($check_flag == false) {
$this->enabled = false;
}
}
}

// class methods
function quote($method = '') {
global $order, $cart, $shipping_weight, $shipping_num_boxes;

if (MODULE_SHIPPING_MONDIALRELAY_MODE == 'prix') {
$order_total = $cart->show_total();
} else {
$order_total = $shipping_weight;
}

$mondial_relay_cost = split("[:,]" , MODULE_SHIPPING_MONDIALRELAY_COST);
$size = sizeof($mondial_relay_cost);
for ($i=0, $n=$size; $i<$n; $i+=2) {
if ($order_total <= $mondial_relay_cost[$i]) {
$shipping = $mondial_relay_cost[$i+1];
break;
}
}

if (MODULE_SHIPPING_MONDIALRELAY_MODE == 'poids') {
$shipping = $shipping * $shipping_num_boxes;
}

$this->quotes = array('id' => $this->code,
'module' => MODULE_SHIPPING_MONDIALRELAY_TEXT_TITLE,
'methods' => array(array('id' => $this->code,
'title' => MODULE_SHIPPING_MONDIALRELAY_TEXT_WAY,
'cost' => $shipping + MODULE_SHIPPING_MONDIALRELAY_HANDLING)));

if ($this->tax_class > 0) {
$this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
}

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

return $this->quotes;
}

function check() {
if (!isset($this->_check)) {
$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_MONDIALRELAY_STATUS'");
$this->_check = tep_db_num_rows($check_query);
}
return $this->_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 ('Utiliser ce mode de livraison', 'MODULE_SHIPPING_MONDIALRELAY_STATUS', 'Oui', 'Voulez-vous utiliser ce module de livraison?', '6', '0', 'tep_cfg_select_option(array(\'Oui\', \'Non\'), ', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Tableau de prix', 'MODULE_SHIPPING_MONDIALRELAY_COST', '25:8.50,50:5.50,10000:0.00', 'Le montant du port est calculé selon le montant de la commande ou selon le poids total de celle-ci. Exemple: 25:8.50,50:5.50,etc. Jusqu\'à 25 coût 8.50 (HT), entre 25 et 50 coût 5.50, etc.', '6', '0', 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 ('Type de mondial_relay', 'MODULE_SHIPPING_MONDIALRELAY_MODE', 'poids', 'Le montant des frais de port est calculé en fonction du poids total ou du prix total de la commande.', '6', '0', 'tep_cfg_select_option(array(\'poids\', \'prix\'), ', 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_MONDIALRELAY_HANDLING', '0', 'Frais fixes ou de manutention pour ce mode 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, use_function, set_function, date_added) values ('TVA Applicable', 'MODULE_SHIPPING_MONDIALRELAY_TAX_CLASS', '0', 'Choisissez le taux de TVA applicable à ce mode de livraison.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Zone de livraison', 'MODULE_SHIPPING_MONDIALRELAY_ZONE', '0', 'Si une zone est sélectionnée, seule cette zone proposera ce mode de livraison.', '6', '0', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', 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_MONDIALRELAY_SORT_ORDER', '0', 'Ordre dans l\'affichage des modules', '6', '0', now())");
}

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

function keys() {
return array('MODULE_SHIPPING_MONDIALRELAY_STATUS', 'MODULE_SHIPPING_MONDIALRELAY_COST', 'MODULE_SHIPPING_MONDIALRELAY_MODE', 'MODULE_SHIPPING_MONDIALRELAY_HANDLING', 'MODULE_SHIPPING_MONDIALRELAY_TAX_CLASS', 'MODULE_SHIPPING_MONDIALRELAY_ZONE', 'MODULE_SHIPPING_MONDIALRELAY_SORT_ORDER');
}
}


et includes/languages/french/modules/shipping/mondialrelay.php

<?php
/*
$Id: mondial_relay.php,v 1.5 2002/11/19 01:48:08 dgw_ Exp $

osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com

Copyright © 2002 osCommerce

Released under the GNU General Public License
*/

define('MODULE_SHIPPING_MONDIALRELAY_TEXT_TITLE', 'Mondial Relay');
define('MODULE_SHIPPING_MONDIALRELAY_TEXT_DESCRIPTION', 'Mondial Relay');
define('MODULE_SHIPPING_MONDIALRELAY_TEXT_WAY', 'Mondial Relay vous permet de recevoir votre colis dans un des nombreux Points Relais partout en France');
define('MODULE_SHIPPING_MONDIALRELAY_TEXT_WEIGHT', 'Poids');
define('MODULE_SHIPPING_MONDIALRELAY_TEXT_AMOUNT', 'Montant');
?>

Écrit par : rol 5 Mar 2010, 09:21

Ah je t'ai envoyé un mail hier soir alors smile.gif . Je test le bout de code manquant.

Écrit par : audioshop 5 Mar 2010, 09:44

Bonjour mosaic,

Je vais en profiter pour te poser quelques questions sur ce module qui m'intéresse beaucoup.

Est-ce que ce module est finalisé et opérationnel?
Si oui, peut-tu nous faire un package complet de cette version finalisé et opérationnel?
est-ce que les instructions d'installation situé http://plugins.quimper-web.com/rep_plugins/plugin_6/install.php ont été mise à jours?
Quand j'ai tenté l'installation j'avais eu plusieurs problème le premier était l'affichage de la sélection du point de relais ne s'affichait pas quand on sélectionnais ce mode de livraison, est-ce que ce problème a été réglé?
J'avais aussi une imcompatibilité avec la contrib MATC qui me permet de griser le bouton continuer la commande sur la page checkout_payment.php tant que le client n'a pas accepté les CGV le bouton griser était inaccessible et il était impossible de cliquer dessus, c'était surement un conflit entre javascript puisque mondial relay utilise jquery si je ne me trompe pas.

Merci pour ta futur réponse.

@++

Écrit par : rol 13 Mar 2010, 16:16

Les fichiers fournis ne font toujours pas marcher le module et la société créatrice n'as pas répondu à mon email.

Est ce que ce module est vraiment fonctionnel ?

J'ai vu qu'une autre société à réaliser un module pour leurs clients peut être celui-ci serait en vente ou proposerait t'il une contrib ?

Société : http://www.la-pulpe.net


Écrit par : operceval 1 Apr 2010, 19:48

bonjour Merci pour cette contrib. smile.gif
pas mal d adaptation

par contre j ai juste un dernier probleme.

lorsque l on passe au paiement quelque soit le poids . la page de paiement n indique que le tarif de la premier tranche de prix


exemple
pour un tarif dans l admin de 1:4 , 2:5

si on à 2 kilos dans le checkout_shipping et 5 €
on se retrouve avec 0 kilo dans le checkout_payement et 4 €

la ligne suivante

Code
'cost' => $quote[0]['methods'][0]['cost']);


[dans checkout_shipping.php ] qui ne transmet pas la bonne info au module mondial_relay.php


constaté que lorsque la validation du relais est fait on bascule sur le checkout_payment . le module mondial_relay ne reçoit pas l info $shipping_weight du global

Écrit par : operceval 2 Apr 2010, 10:11

autre info pour le back office

dans le fichier mondial relay dans le tableau $params

qui sert a la création de l étiquette la valeur poids est renseigné à 5000 ce qui donne 5 kilos sur l etiquette a facturer.
le poids est donc une constante et pose probleme car si vous avez un colis de 500 grammes. ça risque de faire cher smile.gif

le poids est donc a récupérer par le $order et donc il faut la stocker des la création de commande

non ? tongue.gif

Écrit par : rol 7 Apr 2010, 17:20

Voici mon petit retour pour la mise en place de Mondial Relay.

Donc j'ai essayé la contrib fourni par mondial, je n'étais pas satisfait du résultat car je la trouvais pas assez simple pour le client, et j'avais quelques erreurs de fonctionnement elle ne fonctionnait de plus que sur la dernière version d'oscommerce (pas la ms2.2 que j'utilise), j'ai donc contacter telede qui avait poster avoir une contrib mondial.

La je n'ai pas grand chose a redire, la contrib fonctionne du tonnerre, le choix pour le client se fait via une liste avec des infos sur chaque point relais.

Le bonus énorme elle permet même la création des bordereaux depuis l'admin et la c'est un véritable bonheur, donc même si c'est payant j'en suis vraiment content.

Bref mondial est enfin en place chez moi et fonctionnel merci encore pour se travail telede.

Écrit par : souhel 1 May 2010, 17:50

Moi aussi après plusieurs essaies sans résultats, j'ai contacter telede et en effet son travail est remarquable, et je dis A DIEU la poste, maintenant je suis à 80% des commandes sur Mondial relay dès la 1ere semaine.

Écrit par : skieur 15 May 2010, 00:29

rol est ce que tu peux nous mettre un lien vers ta boutique ? Ou bien me l'envoyer en mp pour que je teste le module mondial relay vu coté client de telede ?


Merci.


Écrit par : skieur 15 May 2010, 21:18

Bonjour mosaic,

j'ai installé la contribution en suivant à la lettre les instructions donnés sur quimper web. Vérifié que les fichiers manquants étaient présents. A ce sujet il y en a un dans le zip qui n'est pas au bon endroit.

Coté admin j'ai bien le module mondial relay mais coté front office il n'y a rien qui s'affiche. J'ai activé le mode debug il ne donne pas d'info.

Selon toi il faut regarder de quel coté ? Pb d'authentification sur le serveur mondial relay ? Plutôt un problème du coté javascript non ?

Ou est ce que le mode debug affiche des infos ?


Merci de ton aide.


PS : j'utilise la dernière version MS 2.2 d'os commerce, bien modifiée par mes soins mais les modif n'interfèrent pas avec celle de cette contrib je pense.

Écrit par : nilegoff 15 May 2010, 21:20

Bonjour,

Pour infos, les identifiants de teste ne sont pas fonctionnelle le week end.

nilegoff

Écrit par : skieur 15 May 2010, 21:24

Bonjour,

merci de ton aideLes identifiants de test c'est quoi ? Lorsque l'on a pas de contrat ?

En fait j'ai un contrat avec mondial relay et je viens de recevoir les identifiants.

A plus.

Écrit par : nilegoff 15 May 2010, 21:33

Les identifiants de test sont :
$Enseigne_webservice='BDTESTMR';
$Key_webservice='TesT_MondiaL_RelaY';

Si tu as un contract avec eux -> tes identifiants fonctionnent aussi le Week end

nilegoff

Écrit par : skieur 15 May 2010, 21:43

Merci nilegoff ,

est ce que tu a installé cette contrib ? Elle marche ?

A plus.

Écrit par : nilegoff 16 May 2010, 11:09

Bonjour,

J'ai installé la contribution et je l'ai enlevé, car elle ne fonctionne pas. J'en ai développé une autre facile à mettre en place sur un fonctionnement différent avec une page intermédiaire.
Je la mettrai en ligne ce soir.
(avec les identifiants de test, elle ne peut fonctionner le Week-end)

nilegoff

Écrit par : skieur 16 May 2010, 17:17

Ok,
merci pour ces renseignements, je suis en train d'essayer de voir avec firebug ce qui peux clocher avec la contrib de quimper web. J'ai l'impression qu'il y a du boulot quand même.

Merci pour ta contrib. Si je peux j'ai bien envie de m'investir un peu dans un module mondial relay clean.

a plus.

Écrit par : nilegoff 16 May 2010, 17:58

Mise en place Mondial Relay en Front Office

1)
Prendre le fichier checkout_shipping_address.php et l'enregistrer sous checkout_mondial_relay.php

Remplacer les 3

Code
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
par
Code
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, 'action=mondialrelay', 'SSL'));



puis avant

Code
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


ajouter

Code
    if (isset($HTTP_POST_VARS['cp']) && ($HTTP_POST_VARS['cp'] != '00000')) {
  
         $code_postal_mr = tep_db_prepare_input($HTTP_POST_VARS['cp']);
         $city_mr = tep_db_prepare_input($HTTP_POST_VARS['city']);
         $country_id_mr = tep_db_prepare_input($HTTP_POST_VARS['country_id']);
          }
         else
         {
         $cp_adresse_defaut_query = tep_db_query("select entry_postcode,entry_city,entry_country_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$sendto . "'");
          $cp_adresse_defaut = tep_db_fetch_array($cp_adresse_defaut_query);
         $code_postal_mr = $cp_adresse_defaut['entry_postcode'];
         $city_mr = $cp_adresse_defaut['entry_city'];
         $country_id_mr = $cp_adresse_defaut['entry_country_id'];
         }



Puis avant </head> ajouter
Code
<script type="text/javascript">
function popupcentree(page,largeur,hauteur,options) {     var top=(screen.height-hauteur)/2;     var left=(screen.width-largeur)/2;    window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options); }  
</script>
<style type="text/css">
<!--
.Style1 {
    font-size: 16px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}
.Style3 {
    color: #FF0000;
    font-weight: bold;
}
-->
</style>





Puis remplacer le code entre <!-- body_text //--> et <!-- body_eof //--> par

Code
    <td width="100%" valign="top"><?php  //echo tep_draw_form('checkout', tep_href_link(FILENAME_CHECKOUT_SHIPPING_ADDRESS, 'action=relais_colis', 'SSL'), 'post', 'onSubmit="return check_form_optional(checkout_address);"');  ?><table border="0" width="100%" cellspacing="0" cellpadding="0">

      <tr>
        <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td class="pageHeading">Choix du Relais Mondial Relay</td>            
          </tr>
          

        </table></td>
      </tr>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>



      <tr>
        <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
          <tr>
            <td class="main"><b>Choix du Relais Mondial Relay</b></td>
          </tr>
        </table></td>
      </tr>
      <tr>
        <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
          <tr class="infoBoxContents">
            <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
              <tr>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                <td class="main" width="100%" valign="top" align="center"><strong>Adresses des Relais Mondial Relay près de Chez Vous</strong></td>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
              </tr>
              <tr>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                <td><table border="0" width="100%" cellspacing="0" cellpadding="2">

                    
                    <?php

                    tep_db_close(); // fermeture acces BDD
                    
                    
if ($country_id_mr=='74') {$client_pays_iso='fr';}
if ($country_id_mr=='21') {$client_pays_iso='be';}

$client_ville=$city_mr;
$code_postal_mr=str_replace('o','0',$code_postal_mr);
$code_postal_mr=str_replace('O','0',$code_postal_mr);
$client_cp= preg_replace('`[^0-9]`','', $code_postal_mr);
$card_taille='';
$card_weight='1';
$client_type_exp='24R';
$Enseigne_webservice=MR_ENSEIGNE;
$Key_webservice=MR_CLEF;
//$Enseigne_webservice='ECTESTEC'; //TEST
//$Key_webservice='TesT_MondiaL_RelaY'; //TEST

$k_security=strtoupper(md5($Enseigne_webservice.$client_pays_iso.$client_cp.$client_type_exp.$Key_webservice));

require_once('includes/nusoap/lib/nusoap.php');
$client_mr = new nusoap_client("http://www.mondialrelay.fr/webservice/Web_Services.asmx?WSDL",true);

$client_mr->soap_defencoding = 'UTF-8';
$client_mr->decode_utf8 = false;

$params = array(
'Enseigne' => $Enseigne_webservice,
'Pays' => $client_pays_iso,
'CP' => $client_cp,
'Action' => $client_type_exp,
'Security' => $k_security,
);




$result_mr = $client_mr->call('WSI2_RecherchePointRelais', $params, 'http://www.mondialrelay.fr/webservice/', 'http://www.mondialrelay.fr/webservice/WSI2_RecherchePointRelais');
//print_r($result_mr); //(affiche de la reponse du serveur pour debug

tep_db_connect();

                    if ($result_mr['WSI2_RecherchePointRelaisResult']['PR01']['LgAdr1']=='') {?>
                    
                    <tr><td>
                    </td></tr><table width="100%" align="center">

                        <tr>
                            <td class="main" align="center">D&eacute;sol&eacute;e, il n'y a pas de Relais Mondial Relay pour ce code postal: <?php echo $code_postal_cr; ?>.<br>Merci de Choisir un autre code postal.</td>
                        </tr>
                    </table>
                    </td></tr>
                    
                    <?php } else {

for ($i=1;$i<=9;$i++)
{ ?>
                   <tr>
                    <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>                    
                    <td>
                    <table bgcolor="#FF6600" cellpadding="0" cellspacing="1" width="500px" align="center"><tr><td>
                        <table width="100%" bgcolor="#ffffff">
                            <tr>
                                <td align="left" class="main"><?
echo '<strong>'.$result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['LgAdr1'].'</strong><SPAN class="verysmallText">('.$result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['Num'].')</SPAN><br>';
if ($result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['LgAdr2']!='') {echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['LgAdr2'].'<br>';}
if ($result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['LgAdr3']!='') {echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['LgAdr3'].'<br>';}
if ($result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['LgAdr4']!='') {echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['LgAdr4'].'<br>';}
if ($result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['CP']!='') {echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['CP'].'&nbsp;';}
if ($result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['Ville']!='') {echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['Ville'].'&nbsp;&nbsp;';}
//if ($result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['Pays']!='') {echo '('.$result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['Pays'].')';} ?> </td>
                                <td align="center" width="100px" valign="middle" class="main">
                                <a href='java script:popupcentree("http://www.mon-site.com/detail_mondial_relay.php?num=<?php echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['Num']; ?>&pays=<?php echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['Pays']; ?>",750,400,"menubar=no,scrollbars=no,statusbar=no")'><img src="images/template1/Horraire-MR.jpg" alt=""><br><span class="verysmallText">Horaires<br>d'ouverture</span></a>
                                </td>
                                <td width="100px" valign="middle" align="center" class="main">
                                            <form name="adresse-MR<?php echo $i; ?>" method="post" action="">
                                            <input type="image" src="images/template1/mondialrelay-blanc.jpg" alt=""><br><span class="verysmallText">Cliquez pour choisir ce relais</span>
                                            <input type="hidden" name="firstname" value="<?php echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['LgAdr1']; ?>">
                                            <input type="hidden" name="lastname" value="<?php echo '('.$result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['Num'].')'; ?>">
                                            <input type="hidden" name="company" value="MR">
                                            <input type="hidden" name="street_address" value="<?php echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['LgAdr3']; ?>">
                                            <input type="hidden" name="suburb" value="<?php $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['LgAdr2']; ?>">
                                            <input type="hidden" name="suburb2" value="<?php echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['LgAdr4']; ?>">
                                            <input type="hidden" name="postcode" value="<?php echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['CP']; ?>">
                                            <input type="hidden" name="city" value="<?php echo $result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['Ville']; ?>">
                                            <input type="hidden" name="country" value="<?php if ($result_mr['WSI2_RecherchePointRelaisResult']['PR0'.$i]['Pays']=='FR') { echo '74';} else {echo '21';}?>">
                                            <input type="hidden" name="action" value="submit">
                                            </form>
                                
                            </td>
                            </tr>
                        </table>
                        </td></tr></table>
                    </td>
                    <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                  </tr> <?php

} ?>


    

                </table></td>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
              </tr><?php } ?>
            </table></td>
          </tr>
        </table></td>
      </tr>

<script language="JavaScript">

function testNumber(num){
    var pattern = new RegExp("^[0-9]+(\.[0-9]+)?$","g");
    var result = pattern.test(num);
    
    if (num.length == 0)
        document.getElementById("affNum").innerHTML = "";
    else{
        if (result)
            if (num.length == 5) document.getElementById("affNum").innerHTML = "&nbsp;&nbsp;<input name='envoyer' type='submit' value='Valider'>"; else document.getElementById("affNum").innerHTML = "";
        else
            document.getElementById("affNum").innerHTML = "<br><font color='ff0101'>Ne mettez que des Chiffres SVP</font>";
    }
    
    return result;
}
</script><form name="CP" action="" method="post">
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
      <tr>
        <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
          <tr class="infoBoxContents">
            <td><table border="0" width="100%" cellspacing="0" cellpadding="2" width="100%">
              <tr>
            <td class="main" align="center">Choisir un autre code postal:&nbsp;<input name="cp" type="text" id="cp" onkeyup="testNumber(this.value);" size="15" maxlength="5"><input type="radio" name="country_id" value="74" <?php if ($country_id_mr=='74') { echo 'checked';} ?>>France&nbsp;&nbsp;<input name="country_id" type="radio" value="21" <?php if ($country_id_mr=='21') { echo 'checked';} ?>>Belgique<span id="affNum"></span></td>
              </tr>
            </table></td>
          </tr>
        </table></td>
      </tr>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
</form>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
      <tr>
        <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
          <tr class="infoBoxContents">
            <td><table border="0" width="100%" cellspacing="0" cellpadding="2" width="100%">
              <tr>
                <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                <td class="main" align="center"><?php echo '<b>Retour aux m&eacute;thodes d\'exp&eacute;dition</b>   '; ?></td>
                <td><a href="checkout_shipping.php" alt=""><img src="/includes/languages/french/images/buttons/button_continue.gif" alt=""></a></td>
                <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
              </tr>
            </table></td>
          </tr>
        </table></td>
      </tr>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>


    </table><?php echo '</form>'; ?></td>
<!-- body_text_eof //-->

<!-- body_text_eof //-->
    <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
<!-- right_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>
<!-- right_navigation_eof //-->
    </table></td>
  </tr>
</table>



Dans checkout_shipping.php

Modifier le javascript comme suivant

Code
function selectRowEffect(object, buttonSelect, nomModule) {
  if (!selected) {
    if (document.getElementById) {
      selected = document.getElementById('defaultSelected');
    } else {
      selected = document.all['defaultSelected'];
    }
  }

  if (selected) selected.className = 'moduleRow';
  object.className = 'moduleRowSelected';
  selected = object;
  
  
         if (nomModule=="mondialrelay") {
    window.location.href="<?=HTTP_SERVER."/checkout_shipping_mondial_relay.php"?>"
    document.getElementById('chargement').style.visibility='visible';}
    else
     {document.getElementById('chargement').style.visibility='hidden';}
  
// one button is not an array
  if (document.checkout_address.shipping[0]) {
    document.checkout_address.shipping[buttonSelect].checked=true;
  } else {
    document.checkout_address.shipping.checked=true;
  }
}



Puis remplacer:
Code
$checked = (($quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'] == $shipping['id']) ? true : false);

par
Code
if ($action=='mondialrelay') { $checked = (($quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'] == 'mondialrelay_mondialrelay') ? true : false); }  else { $checked = (($quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'] == $shipping['id']) ? true : false); }


avant </body> rajouter

Code
<div id="chargement" style="position: absolute; width: 250px; height: 220px; top:50%; left:50%; margin-top: -110px;margin-left: -125px;background:white;border: solid 2px #FF6600;visibility: hidden;" >
   <table cellpadding="5" cellspacing="5" width="100%"><tr><td align="center"><img src="/images/template1/mondialrelay.jpg" alt="Mondial Relay"></td></tr><tr><td class="loader" align="center">Chargement des relais proches<br>de chez vous.</td></tr><tr><td align="center"><img src="/images/template1/ajax-loader.gif" alt="Mondial Relay"></td></tr></table>
</div>


Dans includes/configure.php ajouter à la fin:

Code
  define('MR_ENSEIGNE', 'ECTESTEC');
  define('MR_MARQUE', 'TEST');
  define('MR_CLEF', 'TesT_MondiaL_RelaY');


Puis telecharger la librairie nusoap: http://sourceforge.net/projects/nusoap/files/nusoap/0.9.5/nusoap-0.9.5.zip/download
et installer la dans includes/nusoap/lib/

Pour le module d'expedition à mettre dans includes/modules/shipping/ et à nommer mondialrelay.php:
Code
<?php


class mondialrelay {
    var $code, $title, $description, $icon, $enabled;
    // class MONDIALRELAY
    function mondialrelay ()
    {
     global $order;
        $this->code = 'mondialrelay';
        $this->title = MODULE_SHIPPING_MONDIALRELAY_TEXT_TITLE;
        $this->description = MODULE_SHIPPING_MONDIALRELAY_TEXT_DESCRIPTION;
        $this->sort_order = MODULE_SHIPPING_MONDIALRELAY_SORT_ORDER;
        $this->icon_click = 'images/template1/MR49x50.jpg'; // ou shipping_laposte.gif au choix
        $this->tax_class = MODULE_SHIPPING_MONDIALRELAY_TAX_CLASS;
        $this->enabled = ((MODULE_SHIPPING_MONDIALRELAY_STATUS == 'True') ? true : false);
        
        global $PHP_SELF;
        if (basename($PHP_SELF) != FILENAME_MODULES) {
        
         if ($this->enabled == true) {


  

        

// Autoriser seulement France Métropolitaine, Belgique
            
               if (($order->delivery['country']['iso_code_2'] !='FR') AND ($order->delivery['country']['iso_code_2'] !='FX') AND ($order->delivery['country']['iso_code_2'] !='BE')) {
               $this->enabled = false;
                }
                
    }        
    }
    }
    // class methods
    function quote($method = '')
    {
        global $order, $cart, $shipping_weight;


        if (MODULE_SHIPPING_MONDIALRELAY_MODE == 'prix') {
                    //kgt - discount coupons
        $order_total = $order->info['subtotal'];
        /**************
        $order_total = $cart->show_total();
        **************/
        //end kgt - discount coupons
        } else {
            $order_total = $shipping_weight;
        }
        $this->quotes = array('id' => $this->code,
            'module' => MODULE_SHIPPING_MONDIALRELAY_TEXT_TITLE,
            'methods' => array());

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

        if (tep_not_null($this->icon_click))
            $this->quotes['icon'] = '<a href="' . tep_href_link('checkout_shipping_mondial_relay.php', '', 'SSL') . '">' . tep_image($this->icon_click, $this->title) . '</a>';

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

        if (($dest_country != 'FR') && ($dest_country != 'FX')  && ($dest_country != 'BE')) {
            $this->quotes['error'] = MODULE_SHIPPING_MONDIALRELAY_INVALID_ZONE;
            return $this->quotes;
        }

        $cost = constant('MODULE_SHIPPING_MONDIALRELAY_NATIONAL');
        $table = split("[:,]" , $cost);
        for ($i = 0; $i < sizeof($table); $i += 2) {
            // if ($shipping_weight > $table[$i])
            if ($order_total > $table[$i])
                continue;

            $this->quotes['methods'][] = array('id' => $this->code,
                //'title' => $order_total . ' ' . MODULE_SHIPPING_MONDIALRELAY_TEXT_UNITS,
                'title' =>  MODULE_SHIPPING_MONDIALRELAY_TEXT_WAY,
                'date' =>  MODULE_SHIPPING_MONDIALRELAY_TEXT_DATE,
                'cost' => $table[$i + 1] + MODULE_SHIPPING_MONDIALRELAY_HANDLING);

            if ($this->tax_class > 0) {
                $this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
            }
            return $this->quotes;
        }

        $this->quotes['error'] = MODULE_SHIPPING_MONDIALRELAY_TOO_HEAVY;
        return $this->quotes;
    }

    function check()
    {
        $check = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_MONDIALRELAY_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 MONDIALRELAY', 'MODULE_SHIPPING_MONDIALRELAY_STATUS', 'True', 'Activer / Désactiver MONDIALRELAY sans perdre les valeurs chang&eacute;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, set_function, date_added) values ('M&eacute;thode de Tableau', 'MODULE_SHIPPING_MONDIALRELAY_MODE', 'poids', 'Le co&ucirc;t de livraison est bas&eacute; sur le total de la commande ou sur le poids des articles command&eacute;s ?', '6', '0', 'tep_cfg_select_option(array(\'poids\', \'prix\'), ', now())");
        tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('MONDIALRELAY national', 'MODULE_SHIPPING_MONDIALRELAY_NATIONAL', '60:8.03,200000:15.05', 'Port bas&eacute; sur le poids total des produits ou le montant de la commande, tarif national TTC. Exemple: 1:6.15, 2:6.95, etc. Jusqu\'à 1 Kg facturé 6.15, jusqu\'à 2 Kg , 6.95, 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_MONDIALRELAY_HANDLING', '0', 'Frais fixes (emballage) pour MONDIALRELAY', '6', '0', now())");
        tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Classe de taxe', 'MODULE_SHIPPING_MONDIALRELAY_TAX_CLASS', '0', 'Appliquer le taux de taxe suivant sur les frais de livraison.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");
        tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Code postal', 'MODULE_SHIPPING_MONDIALRELAY_STORE_POSTCODE', '75000', 'Code postal de la boutique', '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 de tri', 'MODULE_SHIPPING_MONDIALRELAY_SORT_ORDER', '0', 'Ordre de tri pour l\'affichage (Le plus petit nombre est montr&eacute; en premier).', '6', '0', 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 ('Livraison au poids ou au montant', 'MODULE_SHIPPING_MONDIALRELAY_STATUS', 'True', 'Voulez-vous permettre la livraison en fonction du poids total ou du montant de la commande ?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
    }

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

    function keys()
    {
        return array('MODULE_SHIPPING_MONDIALRELAY_STATUS',
            'MODULE_SHIPPING_MONDIALRELAY_MODE',
            'MODULE_SHIPPING_MONDIALRELAY_NATIONAL',
            'MODULE_SHIPPING_MONDIALRELAY_HANDLING',
            'MODULE_SHIPPING_MONDIALRELAY_STORE_POSTCODE',
            'MODULE_SHIPPING_MONDIALRELAY_TAX_CLASS',
            'MODULE_SHIPPING_MONDIALRELAY_SORT_ORDER');
    }
}

?>



Puis creer le fichier mondialrelay.php comme fichier langue et a mettre dans /includes/languages/french/modules/shipping/
Code
<?php
define('MODULE_SHIPPING_MONDIALRELAY_TEXT_TITLE', 'Mondial Relay');
define('MODULE_SHIPPING_MONDIALRELAY_TEXT_DESCRIPTION', 'Tarif MONDIAL RELAY <br><b>Attention!</b> la d&eacute;sactivation de ce module r&eacute;tablira les valeurs par d&eacute;faut');
define('MODULE_SHIPPING_MONDIALRELAY_TEXT_WEIGHT', 'Poids');
define('MODULE_SHIPPING_MONDIALRELAY_TEXT_UNITS', 'kg');
define('MODULE_SHIPPING_MONDIALRELAY_INVALID_ZONE', 'Cette zone n\'est pas couverte');
define('MODULE_SHIPPING_MONDIALRELAY_TOO_HEAVY', 'Colis trop lourd pour cette m&eacute;thode de livraison');
define('MODULE_SHIPPING_MONDIALRELAY_TEXT_WAY', '<b>Je suis livré au Relais Mondial Relay de mon choix.</b>');
?>


Bon courrage et dite moi si j'ai oublié des petites choses car mon module est integré avec d'autres contribution (svt perso) et j'ai du nettoyer un peu le code.
Attention -> au milieu de checkout_shipping_mondial_relay.php, il faut remplacer mon-site.com par le nom de votre site
Attention, il est paramétré pour fonctionner avec la France métropolitaine (FX) et nom la France (FR)

nilegoff

Écrit par : skieur 21 May 2010, 08:21

Merci nilegoff pour ton aide.

En fait j'ai testé ta contrib et celle de mondial relay (officielle). Le fait d'installer la tienne m'a permis de mieux comprendre le fonctionnement. Effectivement il y encore des traces de tes modifs ex //kgt - discount coupons.
Il y a aussi une erreur là :

Citation
1)
Prendre le fichier checkout_shipping_address.php et l'enregistrer sous checkout_mondial_relay.php

En fait c'est checkout_shipping_mondial_relay.php le nom du fichier appelé.

J'ai également modifié la contrib officielle pour qu'elle marche, elle est en production sur mon site. Je vais continuer de la faire évoluer et peux être cela donnera le jour a du code hybride de ta contrib, l'officielle et un peu de ma patte.

Pour ceux qui coincent sur cette contrib, quelques astuces.

- La fonction install du code doit être appelé pour que ces modules marchent correctement. Apparemment (à vérifier) cela oblige dans l'admin à désinstaller la contrib, puis à la réinstaller.

- Vérifier l'éternel problème de l'inscription dans os commerce sous france (FRA) ou France métropolitaine (FX). Pour ma part j'avais supprimé FX de mon oscommerce car c'était source d'erreur pour les clients. D'ailleurs j'ai du mal à voir comment gérer cela. Je verrai mieux dom tom et france dans les choix, non ?

Pour info la contrib officielle est quand même très bien codée notion de classe, respect de l'environnement os commerce etc. Mais effectivement il y a quelques petits bugs à modifier de mémoire (j'ai tellement fait de modifs sur les deux contrib que j'ai du mal à m'en souvenir) un fichier mal placé. Quelques bouts de codes à modifier légèrement.

A plus.

Écrit par : petitben62 20 Sep 2010, 01:40

bonjour,

Je ne parviens toujours pas a installer cette contrib.. dans checkout shipping.. l'option est présente mais rien ne se passe.. je ne peux pas choisir de relais.. 2h40 il se fait tard.. peut etre est ce la fatigue mais je ne trouve pas d'issu..
Vous y etes parvenu comment ? lol

Écrit par : skieur 27 Sep 2010, 22:03

Citation
Vous y etes parvenu comment ? lol


çà représente pas mal de boulot !

Teste en mode debug pour voir ce que te raconte le serveur de mondial.

A plus.

Écrit par : chrysalide 28 Sep 2010, 15:52

je suis en train d'intégrer cette (ces) contrib(s) et c'est un sacré sac de nœuds.

je me suis fait ma propre contrib en me basant sur le fonctionnement de celles de Mosaic et celle de nilegoff.

Quand tout sera OK j'essaireai de pondre une contrib pour "un OScommerce d'usine" car pour l'instant c'est a peu près fonctionnel sur mon fork kéké tuning perso smile.gif

Écrit par : dark perles 28 Sep 2010, 18:21

Bonjour,

Je ne parviens pas à faire fonctionner cette contrib

Dans ma page checkout_shipping.php il ne me propose même pas le mode d'expédition, alors que dans l'admin le module d'expédition de Mondial Relay est bien en service.

Pour info, je suis en oscommerce 2.2

Une aide, une piste merci wub.gif

Écrit par : rico76 1 Oct 2010, 18:58

Bonsoir,
Je viens à l'instant d'installer la contrib Mondial Relay. Que c'est pauvre ! même si c'est bien codé, il pourrait au moins intégré les endroits pour le relais etc...

Bref je vois que c'est intégré à la version payante

Autres choses, je vois que les tarifs ne sont pas celle que m'a donné le responsable Mondial Relay. C'est aussi normal ? à nous de les modifier ?

Merci

Écrit par : skieur 2 Oct 2010, 08:33

Citation
il pourrait au moins intégré les endroits pour le relais


Ils y sont.


Citation
Autres choses, je vois que les tarifs ne sont pas celle que m'a donné le responsable Mondial Relay. C'est aussi normal ? à nous de les modifier ?



Tu peux mettre les tarifs que tu veux. d'ailleurs en général les frais d'envoi réels ne sont pas ceux que tu met sur ta boutique.

Écrit par : rico76 3 Oct 2010, 23:09

Bonsoir skieur,
en installant la version officielle, j'ai bien le choix dans checkout_shipping.php mais pas de choix de relais ? A quel moment cela doit apparaitre ? Je peux commander jusqu'au bout en ayant choisi Mondial Relay et cela est bien pris en compte mais c'est tout. J'ai vu que tu as modifié quelques partie pour que cela fonctionne, à moi de mettre les mains dedans...
Vue pour les tarifs, merci wink.gif

Écrit par : skieur 4 Oct 2010, 10:31

Si tu peux commander jusqu'au bout avec mondial relay c'est que tu a bien le bouton valider envoyé par leur serveur, c'est ça ?

Si tu n'a pas le choix des centres, à mon avis il y a une erreur de communication avec le serveur de mondial. Tu a un mode debug, active le et regarde de plus près la réponse de leur serveur.

A plus.

Écrit par : rico76 4 Oct 2010, 12:20

Je me suis permis de m'inscrire sur ton site pour effectivement voir le choix des centres. Je peux commander jusqu'au bout mais effectivement après relecture complète il me manquait le plus important. L'affichage de l'Iframe au moment de sélectionner ce mode de livraison.
Maintenant j'ai bien le choix des centres, par contre lorsque je valide un point de relais j'ai une erreur avec :

Citation
(DIR_WS_CLASSES . 'shipping.php');


Je vais regarder encore de plus prêt et terminer l'installation de ce module wink.gif

Edith vient de me dire que c'est lorsque je clique sur "Valider" un point de relais :
Code
Fatal error: Cannot redeclare class shipping in /www/includes/classes/shipping.php on line 13

Écrit par : skieur 4 Oct 2010, 20:57

Citation
Je peux commander jusqu'au bout


Oui mais tu ne l'a pas fait, du moins tu n'a pas payé biggrin.gif


A plus.

Écrit par : rico76 4 Oct 2010, 22:37

Oui j'ai su m'arrêter à temps smile.gif m'enfin j'ai déjà ma réservation pour l'hiver prochain, why not smile.gif

sinon étant donné que tu as réussi à installer correctement la version officielle, tu n'a pas eu la même erreur que moi ?
Je suis bloqué de ce côté et pas trouvé le pourquoi du comment sad.gif

Écrit par : dark perles 11 Oct 2010, 09:44

Bonjour,

Je n'arrive toujours pas à faire fonctionner le module Mondial Relay

J'ai lorsque j'affiche la page checkout_shipping.php le message d'erreur

Code
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /XX/XX/www/mondial_relay/MondialRelay.class.php on line 4


Le fichier MondialRelay.class.php est d'origine. Seulement renseigné les codes de test (extrait ci-dessous du début du code de MondialRelay.class.php)
Code
<?php

class Mondial_Relay

{

    public $enseigne;

    public $reference_marque;

    public $cle_privee;

    public $reference_marque_suivi;

    public $cle_privee_suivi;

    public $lang;

    public $ModeCol;

    public $ModeLiv;

Pour information :
Je suis en PHP 4.4.9 sur hébergeur OVH
Dans le fichier MondialRlay.class.php j'ai mis $this->mod_php = 4; // Mode PHP de votre serveur

Merci d'avance pour votre aide

Écrit par : dark perles 12 Oct 2010, 09:15

Je suis passé en PHP 5 par le htacces en ajoutant --> SetEnv PHP_VER 5
Je suis donc en PHP 5.2.13 et je n'ai plus le défaut biggrin.gif

Mais cela ne change rien sur la page checkout_shipping.php ou le transport par mondial relay ne s'affiche pas.

Pour info je suis en osc 2.2

Écrit par : roja82 12 Oct 2010, 09:20

Bonjour,

J'ai également de problème pour faire fonctionner ce module, voici le code source de la page checkout_shipping.php genérée:
(...)
<script type="text/javascript" src="mondial_relay/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript"><!--
$(document).ready(function(){
$(".choice_shipping input").each(function()
{
var thisEl = $(this);
var val_id = thisEl.attr("id");

if ( thisEl.attr("checked") ) {
if ( val_id == "mondialrelay_mondialrelay" )
{
$("#mondial_relay_bloc").html('<td></td><td colspan="2" style="text-align:center;"><iframe src="http://www.mondialrelay.fr/lg_fr/espaces/url/frame_pr_kit.aspx?ens=BDTKITEC11&cp=85340&pays=FX&crc=C6F1566A4C635F9CDC74FB31025C30B7&url=www.myweb.com/checkout_shipping.php%3Ftype%3Dmondial_relay%26relais%3D%7Brelais%7D%26pays%3D%7Bpays%7D" name="zone1" height="480" width="480"> Cadres local </iframe></td><td></td>');
}
else
{
$("#mondial_relay_bloc").hide();
}
}
});

$(".choice_shipping input").live("click", function ()
{
var thisEl = $(this);
var val_id = thisEl.attr("id");

if ( val_id == "mondialrelay_mondialrelay" )
{
$("#mondial_relay_bloc").show();
$("#mondial_relay_bloc").html('<td></td><td colspan="2" style="text-align:center;"><iframe src="http://www.mondialrelay.fr/lg_fr/espaces/url/frame_pr_kit.aspx?ens=BDTKITEC11&cp=85340&pays=FX&crc=C6F1566A4C635F9CDC74FB31025C30B7&url=www.myweb.com/checkout_shipping.php%3Ftype%3Dmondial_relay%26relais%3D%7Brelais%7D%26pays%3D%7Bpays%7D" name="zone1" height="480" width="480"> Cadres local </iframe></td><td></td>');
}
else
{
$("#mondial_relay_bloc").hide();
}

});
});
//--></script>

(...)

Config du serveur: CentOS 5.2 / apache2 / php5 / MySQL5, hébergé chez OVH


Merci

Écrit par : rico76 26 Oct 2010, 20:39

Bnsoir,

Je n'arrive toujours pas à faire fonctionner le module. J'ai beau cherché dans tous les coins, j'ai toujours le message d'erreur suivant :

Code
Fatal error: Cannot redeclare class shipping in /www/includes/classes/shipping.php on line 13

lorsque j'ai choisi un point de retrait et appuyer sur le bouton "valider".

L'adresse du site est celle-ci avec le message d'erreur plus haut.
Code
www.../checkout_shipping.php?type=mondial_relay&relais=068918&pays=FR


Si quelqu'un à une solution ?

Merci

Écrit par : Snickers 1 Feb 2011, 15:10

Wow wow wow

Bon je up car moi aussi je suis en galère avec la version officielle.... pareil que plus haut j'ai rien qui s'affiche dans ma page de méthodes de livraison.

Est-ce que quelqu'un a avancé sur le sujet ?

Écrit par : Medounet 22 Feb 2011, 12:38

Bonjour,

j'ai un petit probleme avec la contrib "officiel"

quand je l'active dans checkout_shipping.php avec toutes les modifs demander par mondial relay

j'ai une erreur iframe

si vous avez des idées de ou je doit chercher

merci par avance

Écrit par : oneill 23 Feb 2011, 18:48

La seule erreur de ce type venait de la fonction Display_Iframe()
J'ai donc modifé cette ligne dans checkout_shipping

$Mondial_Relay->Display_Iframe($order->customer['postcode']);

par
$Mondial_Relay->Display_Iframe($order->delivery['country']['iso_code_2'], $order->delivery['postcode']);
et la, on a bien 2 arguments et on obtient les relais autour du lieu de livraison et non autour du client.

Mais je n'ai pas été beaucoup plus loin

Écrit par : operceval 24 Feb 2011, 00:41

Citation (rico76 @ 26 Oct 2010, 14:39) *
Code
Fatal error: Cannot redeclare class shipping in /www/includes/classes/shipping.php on line 13

lorsque j'ai choisi un point de retrait et appuyer sur le bouton "valider".

L'adresse du site est celle-ci avec le message d'erreur plus haut.
Code
www.../checkout_shipping.php?type=mondial_relay&relais=068918&pays=FR


Si quelqu'un à une solution ?

Merci



bonjour

pour ton problème il est évident que le test
Code
if ( (isset($quote[0]['methods'][0]['title'])) && (isset($quote[0]['methods'][0]['cost'])) )

n est pas bon. le teste $quote doivent etre vide. ce qu il fait que tu ne passes pas au checkout payment. et donc tu redéclares la classe shipping plus bas.

trouve pourquoi tu ne récuperes pas tes variables ou pourquoi elles ne sont pas affectés et ça marchera.

Écrit par : Medounet 24 Feb 2011, 00:59

dans le fichier MondialRelay.class.php il faut modifier si votre catalogue n'est pas a la racine

$url_retour = str_replace("http://", "", HTTP_SERVER).'/' en $url_retour = str_replace("http://", "", HTTP_SERVER).'/catalog/

par contre apres quand on valide toujours des problème

Écrit par : oneill 24 Feb 2011, 07:50

Ah mais rien de s'affiche chez moi, rien de rien !
Et je suis sur ms2 sortie d'usine.

J'en suis même à me demander si ma contrib officielle fournie il y a 3 jours est complète ! Par exemple : Je vois des lectures en base de donnée (num_relais_mr_id, url_etiquette_mr, num_colis_mr_id) génial, seulement je n'ai pas une seule instruction pour leur création ni de trace dans le module.
Si quelqu'un pouvait me filer son package pour comparer...



Écrit par : operceval 28 Feb 2011, 21:15

salut oneill

ça fait 4 fois que j installe cette contrib sur 4 sites différents . elle n a pas été conçu par mondial relay. ils se contentent juste de transmettre ce module créé par un prestataire. ils ne fournissent donc aucune maintenance. il manque des éléments importants dans cette contrib comme la gestion du poids qui est fixe dans cette version. il faut donc adapter à chaque fois. cela dit meme si effectivement elle n'est pas très propre. elle fonctionne. il faut juste prier que MR ne change pas son fonctionnement. je n ai pas le temps de faire une contrib qui serait plus securisé comme j ai plus réaliser avec chronorelais. il y a plein de raisons pour que cela ne marche pas.

déja être en php 5 est important.

Écrit par : oneill 28 Feb 2011, 22:58

Salut

Citation (operceval @ 28 Feb 2011, 21:15) *
déja être en php 5 est important.


Et y a pas que ca...

Il faut aussi avoir la librairie SOAP activée sur son hébergement pour que ca fonctionne...


Pour ton poids fixe, c'est pas 5 kg ?

'Poids' => '5000',
Ligne 288 dans MondialRelay.class.php

moi je ne suis même pas arrivé jusque la. (Je capte pas les Telenovelas brésiliennes)

#########edit################
En fait, faute de SOAP, faut mieux être en PHP 4, comme ca tu es en NUSOAP qui est dans la contrib. Mais ca ne change rien au reste qui n'est pas très très bien ficelé)

Écrit par : operceval 1 Mar 2011, 11:38

oui tout a fait.

le poids etant fixé a cet endroit , la création de l étiquette en pdf de ce fait reste à 5 kilos et donc au tarif 5 kilos. si qui me paraissait complètement fou. merci la facture a la fin chez MR pour ceux qui font du moins de 5 kilos.

j ai donc mémorisé le poids sur la commande dans la table orders (nouveau champ , modification de class order , de checkoutprocess et shipping )pour pouvoir m en servir a cet endroit.

class mondial relay

pour donner l idée
if ($order->info['poids_commande']< 0.110) { $poids_ajust = 0.110; } else { $poids_ajust = $order->info['poids_commande']; } // correctif de bug MR
dans le param
'Poids' => ($poids_ajust)*1000,

tellement pratique l édition du bon de livraison MR.

j en profite pour dire que la meme chose existe chez so colissimo. je n ai pas eu le temps d installer la contrib de delete qui est deja tres bien faite vu la demo et ma lecture en Z du code. mais en regardant rapidement je suis pas sur d avoir vu si c etait possible. j attend la doc de so colissimo pour avoir les élements puisque la création du bon de livraison existe bien chez eux.

Écrit par : oneill 1 Mar 2011, 13:31

<HS>
Pour So Colissimo, j'exporte vers I-Expeditor et je rentre le poids vérifié à la main (alors qu'il pourrait être couplé à ma balance mais je suis trop loin - ou mon cable est trop court...)
</HS>

Écrit par : petitben62 7 Mar 2011, 10:33

J'ai une bonne nouvelle pour tout le monde !! Je quitte à l'instant la personne en charge de la contribution mondial relay pour Oscommerce. En fin de semaine nous devrions avoir une nouvelle version avec refonte complète et fonctionnelle !
Cyrille.. convial et " sérieux" m'a dit passer dans la semaine sur le forum pour nous distribuer sa contribution et en assure le support s'il y a un soucis.

@ + Benoit

Écrit par : oneill 7 Mar 2011, 12:32

On connait chacun le sien alors...
Mais il sera le bienvenu


En attendant la mienne tourne... enfin tourne.... avec des roulettes carrées quand même wacko.gif Vu qu'il me manque la moitié du 3/4 des choses

Écrit par : christof 7 Mar 2011, 20:56

Utilisateur de la "solution" mondial relay,

je peux dire que leur contribution est a l'image du service : pas terrible....

Quelques exemples...
- Livraison a 15 jours au lieu des 5 annoncés
- Livraison dans un autre point relai que celui choisit par le client, parfois a plusieurs dizaines de Km
- Colis bloqué dans une de leur agence, et c'est au client des les appeler.
- Abus du tampon, attente d'avoir x colis dans une zone avant de declencher un enlevement/livraison du coup des colis sont bloqués 2-3 jours sans reelles raisons.
- Back office client inexistant (reellement inexistant il y a rien a par un formulairemethod pst des annees 80)

etc...

En résumé, on en a pour son argent.

Pour en revenir au code, on avait tout refait de A a Z, donc au final est ce vraiement interessant ?

Maintenant je suis curieux du feedback d'autres utilisateurs....




Écrit par : dvf 8 Mar 2011, 14:36

mondial relay depuis le lancement au particulier semble en effet soufrir des problèmes

Soucis aussi des fermetures sauvages des points relais , (faillite... arrêt car trop de boulot ? ect ..)

Un service qui demande encore à progresser je pense , car la poste en 2006 , entre nous c'était les même soucis...

Écrit par : oneill 9 Mar 2011, 13:02

L'intégration de leur module est certe possible, je l'ai bien fait, mais il faut se reporter à cette page http://plugins.quimper-web.com/rep_plugins/plugin_6/install.php qui n'existe plus. Donc il doit bien manquer des choses que je ne peux supposer. Je ne sais pas, par exemple, ce que doit faire l'admin. Je vois des classes de css or il n'y en a aucune dans la contrib telle qu'elle est distribuée, pas plus qu'il n'est fait mention de la base de donnée alors qu'il y a 3 modifs à y faire d'où mon allusion à la moitié des 3/4 qu'il manque, allusion qui pour être imagée n'en n'est pas moins réelle. Je peux continuer, tant qu'on y est, avec mon contrat où il est question d'assurances forfaitaires de N1 à N5 identiques aux recommandations de la poste mais totalement inconnues sur leur Back Office de création d'étiquette (pas prèt, de leur propre aveu). La non plus, il ne s'agit pas d'une vue de l'esprit mais bien de la triste réalité. Quand un service est à la hauteur, je le dis et je le défend, mais la, avant même d'avoir vendu un seul MR il faut bien dire que ca ne part pas sous les meilleurs auspices.
En même temps, je ne demande qu'à être convaincu et je reviendrai s'il le faut faire amende honorable et chanter les louanges de MR.

Allélouia !

smile.gif

Écrit par : telede 9 Mar 2011, 13:29

Citation (petitben62 @ 7 Mar 2011, 10:33) *
J'ai une bonne nouvelle pour tout le monde !! Je quitte à l'instant la personne en charge de la contribution mondial relay pour Oscommerce.

Je viens de de finir une longue et intéressante conversation avec la direction de Mondial Relay qui effectivement s'est engagée a fournir un module sous peu tel que tu le dit. Et effectivement ca colle parfaitement avec tes propos, même le prénom !

Donc Mondial sélectionné ce prestataire pour ce faire et proposera une solution complète et un support wink.gif

J'espère donc que cette réponse calmera les esprits.

Citation (oneill @ 9 Mar 2011, 13:02) *
d'où mon allusion à la motié des 3/4 qu'il manque, allusion qui pour être imagée n'en est pas moins réelle. Je peux continuer, tant qu'on y est, avec mon contrat où il est question d'assurances forfaitaires de N1 à N5 identiques aux recommandations de la poste mais totalement inconnues sur leur Back Office de création d'étiquette...

Qui s'est également engagée à répondre a répondre à ce sujet.

A noter que le web service fournit par Mondial Relais permet la création d'étiquettes directement depuis le site marchand.

Pour ma part, cela a toujours été comme cela, l'étiquette est imprimée en back office...

EDIT : Je te souhaites une bonne continuation avec MR, en tous cas, pour toutes les interventions que j'ai réalisé, les clients ont toujours été satisfait (de MR et de moi tongue.gif)

Écrit par : oneill 9 Mar 2011, 14:47

Moi, personnellement, c'est tout ce que je souhaite. Comme tout le monde ici, j'ai une marmite à faire bouillir. Et la je parle en UTILISATEUR MARCHAND et non pas en tant qu' Admin ou modo de ce forum. Mon avis n'est ,à ce titre, que personnel et ne reflette en rien une quelconque opinion """"Officielle"""" de Osc (On dirait le début d'un DVD)



A ce sujet et à partir de maintenant tout ce que Oneill l'Admin écrira sur les pages de ce forum sera OBLIGATOIREMENT écrit en GRAS et en VERT comme je le faisais dans le temps afin que toute confusion entre mes 2 casquettes soit impossible.

Écrit par : emiled 16 Mar 2011, 16:27

Bonjour,
Je vous invite a tester la nouvelle version de mondial relay pour oscommerce.

Elle est disponible sur le site des contrib: http://addons.oscommerce.com/info/7927
Je suis ouvert a vos recommandations, sachant que l'idée est que l'on reste tout de meme sur un module simple mais fonctionnel.
Il vous faudra php-soap installé sur vos serveur, chez ovh en mutualisé normalement l'extension est installé.

Si vous avez le moindre soucis pour l'installer n'hesitez pas a m'envoyer un mail ou me téléphoner.
Vous aurez mes coordonnées dans la doc ou en appelant mondial relay.

Cordialement,
Cyrille Guillaud

Écrit par : brouillard 16 Mar 2011, 17:39

excellente nouvelle !

Écrit par : chrysalide 16 Mar 2011, 18:04

Attention c'est une contrib pour la 2.3 et non la 2.2.

Testée elle marche mais a moins d'adapter la majorité des users ne pourront pas l'utiliser tel quelle !

EDIT: A noter qu'il manque l'info suivante dans la proc. :

il faut créer un champ shipping_pointrelay dans la table orders

Écrit par : emiled 16 Mar 2011, 19:44

merci,
Je vais corriger la doc et vérifier la rétrocompatibilité 2.2.

Cyrille

Écrit par : chrysalide 16 Mar 2011, 23:12

Mea culpa,

La table en question est créée/supprimée lors de l'installation/désinstallation du module via l'admin.

Écrit par : operceval 21 Mar 2011, 16:46

Citation (emiled @ 16 Mar 2011, 13:44) *
merci,
Je vais corriger la doc et vérifier la rétrocompatibilité 2.2.

Cyrille



Bonjour,

bien pour ce travail

ne maquerait il pas la TVA ?

Écrit par : operceval 21 Mar 2011, 22:37

me suis permis de lire le script. effectivement il est inexploitable dans sa configuration actuelle.

c est pas une critique mais c est pour te faire avancer
j ai développé Chrono RELAIS qui fonctionne aussi avec SOAP.
donc pour les novices qui exploitent un dédié il faudra installer le RPM php soap

-a la premiere lecture j ai effectivement pas vu le traitement de la TVA.
-j ai cru voir des résidus de code qui n appartiennent pas a la version de base il me semble ( a vérifier )
-il est dangereux d effacer les colonnes créé par le module. je pense a ceux qui par accident désinstallent et donc perdent la totalité de l historique des numéros de relais et colis attribués a la commande dans la table ORDERS. ( et oui ça arrive, vive les sauvegardes )
-bien pour les formats A4 et A5, pour ton info il exite le format 15x10 pour les étiquettes thermique. je te dis ça parce que j ai des sites sur lesquelles je l ai paramétré. c est bien pratique. ils auraient pu mettre A6 Mais bon encore un truc curieux.

pour résumer donc novice s abstenir, mais bon j ai pris 15 minutes pour lire le script.

voilou

Écrit par : emiled 30 Mar 2011, 11:52

Je ne suis pas la pour concurrencer qui que ce soit mais pour permettre au client lambda de proposer mondial relay sur son site.
Je suis moi même un client mondial relay avec des sites oscommerce et autre.
Cette méthode de transport étant une excellente alternative a une poste vieillissante je pense qu'il est important qu'un maximum de personne la propose.

Ce code n'est pas un exemple de module mais bien un module fonctionnel avec un niveau de fonctionnalités basiques de façon a ne pas réaliser un support gigantesque.
Par exemple la carte google maps n'est pas intégré dans le site mais dans le popup.
Celle ci posant des problèmes fréquemment.
Concernant php-soap, celui est installé par défaut chez les hébergeurs, ovh en premier sur ça solution mutualisée.
Mais je propose aussi un support gratuit aux personnes qui le veulent sans aller jusqu’à l’intégration.
Chacun est libre de modifier le code ou de me soumettre d’éventuelle modification.
De l'open source en fin de compte.

Maintenant cette solution va évoluer avec vos demandes.
Les prestataires qui vendent l’intégration de mr ont une autre optique et surement d'autre fonctionnalités.
Certaines fonctionnalités comme le tracing ne peuvent pas être dans le module car elle demande une intégration personnalisée.
L’intérêt de proposer une version gratuite, libre et de permettre a n'importe qui d'installer mondial relay sur son site.
Cela permet a un plus grand nombre de sites d’intégrer le module mais aussi aux autres prestataires de proposer de nouvelles fonctionnalités.

Je reste un professionnel du ecommerce avec plus de 5 ans d'activités dans ce domaine.
Suite a cette éclaircissement je ne dénigre pas le travail des versions payantes merci de voir cette version comme une alternative pour un démarrage des commerçants sur mr.
Cela pose une base pour que le prestataire propose une intégration plus personnalisée.

Cdlt,
Cyrille Guillaud


Écrit par : christof 5 Apr 2011, 15:09

Mondial Relay vs Poste vieillissante ?

Soit vous etes chanceux , soit vous expediez peu de colis par Mondial Relay.
Comparer le service de La Poste avec celui de Mondial Relay est une pure blague, Mondial Relay c'est pas cher
et encore pour l'export en Belgique et Luxembourg voir l'Espagne si vous avez un site espagnol.

On envoi plusieurs centaines de colis par jour et je n'ose meme pas vous donner nos statistiques sur le suivi des livraisons, pas bonté pour eux.

Proposer uniquement Mondial Relay pour la livraison est pour une petite structure un suicide, vous allez simplement perdre vos clients qui commanderont une fois mais plus jamais apres.





Écrit par : dvf 9 Apr 2011, 15:52

Même avis que christof
on a stopper le massacre chez nous , Ouste le relais.

Il ne sont pas encore prêt à bien faire le taff que la poste fait...

Faire du pas cher et perdre des clients...

ou faire du + cher et ne pas les perdre

Mon Choix est fait pour le moment biggrin.gif

il corrigeront surement leur soucis mais en attendant....

Écrit par : dvf 9 Apr 2011, 17:46

oui je suis d 'accord sur ce point
mais quand un colis est perdu , là mondial relay.... , il y a plus personnes....

avec la loi chatel , on doit pouvoir afficher une date de livraison , les clients commencent à bien le savoir et j'ai eut beaucoup d'annulation , on verra par la suite pour remettre le service , on doit juste allez voir mondial relay pour que ces menu soucis soit réglé biggrin.gif


Écrit par : oneill 10 Apr 2011, 09:26

Pour l'instant, j'ai un juste un soucis d'organisation avec MR :
Les commandes passée chez moi le vendredi après 14 heures sont très longues à partir. Je ne travaille pas le samedi ni le dimanche (feignasse) et le lundi, c'est mon relais MR qui fait relâche pour déposer les colis. Ce dépot se fait donc le mardi après midi, en même temps que mes colis poste, les 2 étant côte à côte. L'ennui c'est que MR relève ses colis le matin dans mon relais. La commande passée chez moi le vendredi après midi n'est prise en charge par MR que le mercredi matin... Ensuite le colis commence son circuit chez eux... C'est couillon mais je suis coincé la dessus. Je peux juste adapter l'affichage du délai de livraison selon le jour et l'heure de la commande.

Écrit par : chti_poupon 11 Apr 2011, 08:00

smile.gif Bonjour !
Je viens d'essayer (en local) la contrib Mondial Relay 7927 sur ma MS2.2. biggrin.gif
mellow.gif J'ai dû, bien sûr activer soap et remplacer catalog/admin/includes/boxes/customers.php par :

Code
<?php
/*
  $Id: customers.php,v 1.16 2003/07/09 01:18:53 hpdl Exp $

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2002 osCommerce

  Released under the GNU General Public License
  Modifié par le module mondial relay
*/
?>
<!-- customers //-->
          <tr>
            <td>
<?php
  $heading = array();
  $contents = array();

  $heading[] = array('text'  => BOX_HEADING_CUSTOMERS,
                     'link'  => tep_href_link(FILENAME_CUSTOMERS, 'selected_box=customers'));

  if ($selected_box == 'customers') {
    $contents[] = array('text'  => '<a href="' . tep_href_link(FILENAME_CUSTOMERS, '', 'NONSSL') . '" class="menuBoxContentLink">' . BOX_CUSTOMERS_CUSTOMERS . '</a><br>' .
                                   '<a href="' . tep_href_link(FILENAME_ORDERS, '', 'NONSSL') . '" class="menuBoxContentLink">' . BOX_CUSTOMERS_ORDERS . '</a><br>'  .
                                   '<a href="' . tep_href_link("mondialrelayadmin.php", '', 'NONSSL') . '" class="menuBoxContentLink">' . "mondialrelay" . '</a>');
  }

  $box = new box;
  echo $box->menuBox($heading, $contents);
?>
            </td>
          </tr>
<!-- customers_eof //-->

Après, c'est bluffant ! ohmy.gif biggrin.gif

Passage en distant : y'a plus qu'à... (Ifokon)

Chti poupon

Écrit par : 2fik 17 May 2011, 13:00

Bonjour,
J'ai installé cette contrib, mais après de multiple mise au point j'ai 2 erreurs :

Code
1054 - Unknown column 'o.shipping_pointrelay' in 'where clause'

select count(*) as total from orders o left join orders_total ot on (o.orders_id = ot.orders_id), orders_status s where o.orders_status = s.orders_status_id and s.language_id = '4' and ot.class = 'ot_total' and o.shipping_pointrelay IS NOT NULL


et la deuxième est que je n'ai plus le retour IPN de Paypal.

a savoir que je suis sur la version 2.2 OSCOMMERCE et que je suis en php 4 (je sais que je dois faire la migration mais je n'ai pas eu le temps)

je voudrais savoir si il y a une possibilité d'adapter le code de mondialrelayadmin.php afin de l'adapter à php4 et Mysql4 sachant que je n'ai vraiment pas le temps de faire la migration.

Merci d'avance.

Écrit par : chti_poupon 17 May 2011, 16:43

Bonjour,
la colonne cherchée n'a pas été crée !
Dans l'admin (modules expéditions), il faut désactiver puis réactiver mondial_relay après avoir purgé les caches osC et navigateur.
Ainsi la fonction install de la classe mondial_relay sera activée et le champ shipping_pointrelay sera crée par :

Code
        tep_db_query("ALTER table ".TABLE_ORDERS." ADD shipping_pointrelay char(8)");

Bien sûr soap doit avoir été activé, mais cela ne cadre pas avec le message d'erreur

Chti poupon

Écrit par : chti_poupon 17 May 2011, 18:55

Bonjour !
Après essais et retour effaré sur ma nullitude, je me suis aperçu que si l'on désactive le module et que l'on le réactive, les relais choisis par les clients sont effacés, il n'y a plus rien dans la colonne et l'on obtient le même message d'erreur que le tien.
La méthode remove supprime en effet tout (DROP)
Comment faire autrement ?
Chti poupon
PS par contre pour paypal, la modif de checkout process ne doit elle pas être reportée quelque part comme pour cmcic ??
PS bis: en MS22 tu parles d'autres petites modifs: j'ai un problème pour exploiter l'expédition (appel template supprimé et tableau incomplet sur mondialrelayadmin.php.
As-tu l'astuce ??

Écrit par : 2fik 19 May 2011, 04:56

Merci chti poupon

je m'y plonge dès que j'ai le temps !

Et effectivement j'ai pas pensé au report des modifications checkout process sur celui de Paypal. (vraiment nul).

Concernant les données effacées, effectivement j'ai vu ca en gras dans le fichier fourni par mondialrelay : "desactiver la contrib mondial relay efface toutes les tables créé par mondial relay."


Écrit par : chrysalide 19 May 2011, 10:23

si ce fonctionnement est problématique il est possible de switcher ce fonctionnement dans le module en modifiant la fonction remove

Code
function remove() {
        tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
        tep_db_query("ALTER table ".TABLE_ORDERS." DROP shipping_pointrelay");
        tep_db_query("ALTER table ".TABLE_ORDERS." DROP shipping_traking");
    }


par

Code
function remove() {
        tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
      //  tep_db_query("ALTER table ".TABLE_ORDERS." DROP shipping_pointrelay");
      // tep_db_query("ALTER table ".TABLE_ORDERS." DROP shipping_traking");
    }


ou

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

Écrit par : 2fik 19 May 2011, 15:10

J'ai une autre question, es ce que quelqu'un a réussi a faire marcher cette contribution sur Oscommerce 2.2 en php4 sans faire de modification ?

Écrit par : chrysalide 19 May 2011, 16:15

Cette contrib nécessite d'être adaptée a la MS2 car celle-ci est construite pour le 2.3.1

Par exemple le fichier d'administration Mondial Relay fait référence la méthode de construction des boutons via jquery ui qui n'existe pas sous MS2.

Rien de bien sorcier avec quelques connaissances en PHP.

Écrit par : telede 19 May 2011, 18:30

Peut on avoir une démonstration de ta simple et peu sorcière adaptation de ce module pour osC 2.2 sous PHP4 ?

Écrit par : chrysalide 19 May 2011, 19:25

une demonstration comme le fichier mondialrelayadmin.php

Code
<?php
/*
  $Id$

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2010 osCommerce

  Released under the GNU General Public License
*/

  require('includes/application_top.php');

  require(DIR_WS_CLASSES . 'currencies.php');
  $currencies = new currencies();

  $orders_statuses = array();
  $orders_status_array = array();
  $orders_status_query = tep_db_query("select orders_status_id, orders_status_name from " . TABLE_ORDERS_STATUS . " where language_id = '" . (int)$languages_id . "'");
  while ($orders_status = tep_db_fetch_array($orders_status_query)) {
    $orders_statuses[] = array('id' => $orders_status['orders_status_id'],
                               'text' => $orders_status['orders_status_name']);
    $orders_status_array[$orders_status['orders_status_id']] = $orders_status['orders_status_name'];
  }

  $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');

  if (tep_not_null($action)) {
    switch ($action) {
      case 'update_order':
        $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);
        $status = tep_db_prepare_input($HTTP_POST_VARS['status']);
        $comments = tep_db_prepare_input($HTTP_POST_VARS['comments']);

        $order_updated = false;
        $check_status_query = tep_db_query("select customers_name, customers_email_address, orders_status, date_purchased from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");
        $check_status = tep_db_fetch_array($check_status_query);

        if ( ($check_status['orders_status'] != $status) || tep_not_null($comments)) {
          tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . tep_db_input($status) . "', last_modified = now() where orders_id = '" . (int)$oID . "'");

          $customer_notified = '0';
          if (isset($HTTP_POST_VARS['notify']) && ($HTTP_POST_VARS['notify'] == 'on')) {
            $notify_comments = '';
            if (isset($HTTP_POST_VARS['notify_comments']) && ($HTTP_POST_VARS['notify_comments'] == 'on')) {
              $notify_comments = sprintf(EMAIL_TEXT_COMMENTS_UPDATE, $comments) . "\n\n";
            }

            $email = STORE_NAME . "\n" . EMAIL_SEPARATOR . "\n" . EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID . "\n" . EMAIL_TEXT_INVOICE_URL . ' ' . tep_catalog_href_link(FILENAME_CATALOG_ACCOUNT_HISTORY_INFO, 'order_id=' . $oID, 'SSL') . "\n" . EMAIL_TEXT_DATE_ORDERED . ' ' . tep_date_long($check_status['date_purchased']) . "\n\n" . $notify_comments . sprintf(EMAIL_TEXT_STATUS_UPDATE, $orders_status_array[$status]);

            tep_mail($check_status['customers_name'], $check_status['customers_email_address'], EMAIL_TEXT_SUBJECT, $email, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

            $customer_notified = '1';
          }

          tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . " (orders_id, orders_status_id, date_added, customer_notified, comments) values ('" . (int)$oID . "', '" . tep_db_input($status) . "', now(), '" . tep_db_input($customer_notified) . "', '" . tep_db_input($comments)  . "')");

          $order_updated = true;
        }

        if ($order_updated == true) {
         $messageStack->add_session(SUCCESS_ORDER_UPDATED, 'success');
        } else {
          $messageStack->add_session(WARNING_ORDER_NOT_UPDATED, 'warning');
        }

        tep_redirect(tep_href_link(FILENAME_MONDIALRELAYADMIN, tep_get_all_get_params(array('action')) . 'action=edit'));
        break;
      case 'deleteconfirm':
        $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);

        tep_remove_order($oID, $HTTP_POST_VARS['restock']);

        tep_redirect(tep_href_link(FILENAME_MONDIALRELAYADMIN, tep_get_all_get_params(array('oID', 'action'))));
        break;
      case 'cre':
        $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);
        
        $retourBD = tep_db_query("select configuration_key,configuration_value from " . TABLE_CONFIGURATION . " where `configuration_key` REGEXP 'MODULE_SHIPPING_MONDIAL_RELAY' OR `configuration_key` ='STORE_OWNER_EMAIL_ADDRESS' OR `configuration_key` ='SHIPPING_ORIGIN_COUNTRY' OR `configuration_key` = 'SHIPPING_BOX_WEIGHT'");
        // récuper les config du module
        while($i=tep_db_fetch_array($retourBD))
            $infoExpe[$i[configuration_key]]=$i[configuration_value];
        $adresseExp=str_split($infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_EXPE_AD3'],32);
            
            
            
        $totalWeight=$infoExpe['SHIPPING_BOX_WEIGHT'];
        $retourBD = tep_db_query("SELECT p.products_weight,op.products_quantity FROM " . TABLE_ORDERS_PRODUCTS . " op INNER JOIN " . TABLE_PRODUCTS . " p ON op.products_id = p.products_id WHERE op.orders_id=".$oID);
        // récupe le poid des produits pour calcul le total
        while($i=tep_db_fetch_array($retourBD))
            $totalWeight+=$i['products_weight']*$i['products_quantity'];


        $retourBD = tep_db_query("select countries_iso_code_2 AS code FROM " . TABLE_COUNTRIES . " WHERE countries_id=".$infoExpe['SHIPPING_ORIGIN_COUNTRY']);
        // récuper le code pays avec id pour expe
        $codePaysExpe = tep_db_fetch_array($retourBD);
        
        
        $retourBD = tep_db_query("select o.delivery_country,o.customers_telephone,o.customers_email_address, o.delivery_street_address, o.shipping_pointrelay, o.delivery_city, o.delivery_postcode, o.delivery_name, o.currency_value from " . TABLE_ORDERS . " o left join " . TABLE_CUSTOMERS . " c on (o.customers_id = c.customers_id) where o.orders_id=".$oID);
        $infoDest = tep_db_fetch_array($retourBD);//récuper les info de la commande
        $adresseDest=str_split($infoDest['delivery_street_address'],32);
        
        
        $retourBD = tep_db_query("select countries_iso_code_2 AS code FROM " . TABLE_COUNTRIES . " WHERE countries_name='".$infoDest['delivery_country']."'");
        // récuper le code pays avec id pour expe
        $codePaysDest = tep_db_fetch_array($retourBD);
        
        $params = array('Enseigne'       => $infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_ENSEIGNE']
                       ,'ModeCol'        => 'CCC'
                       ,'ModeLiv'        => '24R'
                       ,'Expe_Langage'   => trim($infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_EXPE_PAYS'])
                       ,'Expe_Ad1'       => $infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_EXPE_AD1']
                       ,'Expe_Ad3'       => $adresseExp[0]
                       ,'Expe_Ad4'       => $adresseExp[1]
                       ,'Expe_Ville'     => $infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_Expe_EXPE_VILLE']
                       ,'Expe_CP'        => $infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_Expe_EXPE_CP']
                       ,'Expe_Pays'      => trim($infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_EXPE_PAYS'])
                       ,'Expe_Tel1'      => $infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_EXPE_TEL1']
                       ,'Expe_Mail'      => $infoExpe['STORE_OWNER_EMAIL_ADDRESS']
                       ,'Dest_Langage'   => $codePaysDest['code']
                       ,'Dest_Ad1'       => $infoDest['delivery_name']
                       ,'Dest_Ad3'       => $adresseDest[0]
                       ,'Dest_Ad4'       => $adresseDest[1]
                       ,'Dest_Ville'     => $infoDest['delivery_city']
                       ,'Dest_CP'        => $infoDest['delivery_postcode']
                       ,'Dest_Pays'      => $codePaysDest['code']
                       ,'Dest_Tel1'      => $infoDest['customers_telephone']
                       ,'Dest_Mail'      => $infoDest['customers_email_address']
                       ,'Poids'          => $totalWeight*1000
                       ,'NbColis'        => '1'
                       ,'CRT_Valeur'     => '0'
                       ,'LIV_Rel_Pays'   => substr($infoDest['shipping_pointrelay'],-2)
                       ,'LIV_Rel'        => substr($infoDest['shipping_pointrelay'],0,6));
        
        $code = implode("",$params);
        $code .= $infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_CLE_PRIVEE'];
        //On le rajoute aux paramétres
        
        $params["Security"] = strtoupper(md5($code));
        // On se connecte
        $client = new SoapClient("http://www.mondialrelay.fr/WebService/Web_Services.asmx?WSDL");
                    
        //send request
        $expedition = $client->WSI2_CreationExpedition($params)->WSI2_CreationExpeditionResult;
        if($expedition->STAT != 0){
            echo $infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_EXPE_PAYS'];
            echo $expedition->STAT;
        }else{
            tep_db_query("UPDATE " . TABLE_ORDERS . " SET shipping_traking = '" . $expedition->ExpeditionNum . "' WHERE  orders_id = '".$oID."'");
    
            tep_redirect(tep_href_link(FILENAME_MONDIALRELAYADMIN, tep_get_all_get_params(array('oID', 'action'))));
        }
        break;
      case 'imprim':
        $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);
        
        $retourBD = tep_db_query("SELECT shipping_traking AS traking FROM " . TABLE_ORDERS . " WHERE orders_id=".$oID);
        $traking = tep_db_fetch_array($retourBD);//récuper les info de la commande
        
        $retourBD = tep_db_query("SELECT configuration_value,configuration_key from " . TABLE_CONFIGURATION . " WHERE `configuration_key` ='MODULE_SHIPPING_MONDIAL_RELAY_CLE_PRIVEE' OR `configuration_key` ='MODULE_SHIPPING_MONDIAL_RELAY_ENSEIGNE'");
        // récuper les config du modul
        while($i=tep_db_fetch_array($retourBD))
            $infoExpe[$i[configuration_key]]=$i[configuration_value];
        
          // On met en place les paramÚtres de la requÚte
        $params = array(
                       'Enseigne'       => $infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_ENSEIGNE'],
                       'Expeditions'    => $traking['traking'],
                       'Langue'         => 'FR',
        );
        //On crée le code de sécurité
        $code = implode("",$params);
        $code .= $infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_CLE_PRIVEE'];
        
        //On le rajoute aux paramétres
        $params["Security"] = strtoupper(md5($code));
        
        // On se connecte
        $client = new SoapClient("http://www.mondialrelay.fr/WebService/Web_Services.asmx?WSDL");
        
        // Et on effectue la requéte
        $etiquette = $client->WSI2_GetEtiquettes($params)->WSI2_GetEtiquettesResult;
        if( $etiquette->STAT == 0 ){
            $url = 'http://www.mondialrelay.fr';
            if($infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_FORMAT_PDF']=='A5'){
                $url .= $etiquette->URL_PDF_A5;
            }else{
                $url .= $etiquette->URL_PDF_A5;
            }
            tep_redirect($url);
        }else{
            echo $etiquette->STAT;    
        }
        break;
    }
  }

  if (($action == 'edit') && isset($HTTP_GET_VARS['oID'])) {
    $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);

    $orders_query = tep_db_query("select orders_id from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");
    $order_exists = true;
    if (!tep_db_num_rows($orders_query)) {
      $order_exists = false;
      $messageStack->add(sprintf(ERROR_ORDER_DOES_NOT_EXIST, $oID), 'error');
    }
  }

  include(DIR_WS_CLASSES . 'order.php');?>
<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
<? require(DIR_WS_INCLUDES . 'header.php');
?>
<table border="0" width="100%" cellspacing="2" cellpadding="2">
  <tr>
    <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
    </table></td>
<!-- body_text //-->
    <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
      <tr>
        <td>
    <table border="0" width="100%" cellspacing="0" cellpadding="2">
      <tr>
        <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
            <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', 1, HEADING_IMAGE_HEIGHT); ?></td>
            <td align="right"><table border="0" width="100%" cellspacing="0" cellpadding="0">
              <tr><?php echo tep_draw_form('orders', FILENAME_MONDIALRELAYADMIN, '', 'get'); ?>
                <td class="smallText" align="right"><?php echo HEADING_TITLE_SEARCH . ' ' . tep_draw_input_field('oID', '', 'size="12"') . tep_draw_hidden_field('action', 'edit'); ?></td>
              </form></tr>
              <tr><?php echo tep_draw_form('status', FILENAME_MONDIALRELAYADMIN, '', 'get'); ?>
                <td class="smallText" align="right"><?php echo HEADING_TITLE_STATUS . ' ' . tep_draw_pull_down_menu('status', array_merge(array(array('id' => '', 'text' => TEXT_ALL_ORDERS)), $orders_statuses), '', 'onchange="this.form.submit();"'); ?></td>
            </form></tr>
            </table></td>
          </tr>
        </table></td>
      </tr>
      <tr>
        <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2" >
              <tr class="dataTableHeadingRow">
                <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_CUSTOMERS; ?></td>
                <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ORDER_TOTAL; ?></td>
                <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_DATE_PURCHASED; ?></td>
                <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_STATUS; ?></td>
                <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_SHIPPING_POINTRELAY; ?></td>
                <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_SHIPPING_CODE_TRAKING; ?></td>
                <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?>&nbsp;</td>
              </tr>
<?php
    if (isset($HTTP_GET_VARS['cID'])) {
      $cID = tep_db_prepare_input($HTTP_GET_VARS['cID']);
      $orders_query_raw = "select o.shipping_traking, o.shipping_pointrelay, o.orders_id, o.customers_name, o.customers_id, o.payment_method, o.date_purchased, o.last_modified, o.currency, o.currency_value, s.orders_status_name, ot.text as order_total from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id), " . TABLE_ORDERS_STATUS . " s where o.customers_id = '" . (int)$cID . "' and o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and ot.class = 'ot_total' and o.shipping_pointrelay IS NOT NULL order by orders_id DESC";
    } elseif (isset($HTTP_GET_VARS['status']) && is_numeric($HTTP_GET_VARS['status']) && ($HTTP_GET_VARS['status'] > 0)) {
      $status = tep_db_prepare_input($HTTP_GET_VARS['status']);
      $orders_query_raw = "select o.shipping_traking, o.shipping_pointrelay, o.orders_id, o.customers_name, o.payment_method, o.date_purchased, o.last_modified, o.currency, o.currency_value, s.orders_status_name, ot.text as order_total from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id), " . TABLE_ORDERS_STATUS . " s where o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and s.orders_status_id = '" . (int)$status . "' and ot.class = 'ot_total' and o.shipping_pointrelay IS NOT NULL order by o.orders_id DESC";
    } else {
      $orders_query_raw = "select o.shipping_traking, o.shipping_pointrelay, o.orders_id, o.customers_name, o.payment_method, o.date_purchased, o.last_modified, o.currency, o.currency_value, s.orders_status_name, ot.text as order_total from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id), " . TABLE_ORDERS_STATUS . " s where o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and ot.class = 'ot_total' and o.shipping_pointrelay IS NOT NULL order by o.orders_id DESC ";
    }
    $orders_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS, $orders_query_raw, $orders_query_numrows);
    $orders_query = tep_db_query($orders_query_raw);
    while ($orders = tep_db_fetch_array($orders_query)) {
    if ((!isset($HTTP_GET_VARS['oID']) || (isset($HTTP_GET_VARS['oID']) && ($HTTP_GET_VARS['oID'] == $orders['orders_id']))) && !isset($oInfo)) {
        $oInfo = new objectInfo($orders);
      }

      if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) {
        echo '              <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_MONDIALRELAYADMIN, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=edit') . '\'">' . "\n";
      } else {
        echo '              <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_MONDIALRELAYADMIN, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . '\'">' . "\n";
      }
?>
                <td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_MONDIALRELAYADMIN, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $orders['orders_id'] . '&action=edit') . '">' . tep_image(DIR_WS_ICONS . 'preview.gif', ICON_PREVIEW) . '</a>&nbsp;' . $orders['customers_name']; ?></td>
                <td class="dataTableContent" align="right"><?php echo strip_tags($orders['order_total']); ?></td>
                <td class="dataTableContent" align="center"><?php echo tep_datetime_short($orders['date_purchased']); ?></td>
                <td class="dataTableContent" align="right"><?php echo $orders['orders_status_name']; ?></td>
                <td class="dataTableContent" align="right"><?php echo $orders['shipping_pointrelay']; ?></td>
                <td class="dataTableContent" align="right"><?php echo $orders['shipping_traking']; ?></td>
                <td class="dataTableContent" align="right"><?php if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_MONDIALRELAYADMIN, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?>&nbsp;</td>
              </tr>
<?php
    }
?>
              <tr>
                <td colspan="5"><table border="0" width="100%" cellspacing="0" cellpadding="2">
                  <tr>
                    <td class="smallText" valign="top"><?php echo $orders_split->display_count($orders_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $HTTP_GET_VARS['page'], TEXT_DISPLAY_NUMBER_OF_ORDERS); ?></td>
                    <td class="smallText" align="right"><?php echo $orders_split->display_links($orders_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $HTTP_GET_VARS['page'], tep_get_all_get_params(array('page', 'oID', 'action'))); ?></td>
                  </tr>
                </table></td>
              </tr>
            </table></td>
<?php
  $heading = array();
  $contents = array();

  switch ($action) {
    
    default:
      if (isset($oInfo) && is_object($oInfo)) {
        $heading[] = array('text' => '<strong>[' . $oInfo->orders_id . ']&nbsp;&nbsp;' . tep_datetime_short($oInfo->date_purchased) . '</strong>');

        if($oInfo->shipping_traking=='')
            $contents[] = array('align' => 'center', 'text' => '<a href="' .tep_href_link(FILENAME_MONDIALRELAYADMIN, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=cre').'"> ' . tep_image_button('button_create.gif', IMAGE_CREATE) . ' </a> ');
        else
            $contents[] = array('align' => 'center', 'text' => '<a href="' .tep_href_link(FILENAME_MONDIALRELAYADMIN, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=cre').'"> ' . tep_image_button('button_create.gif', IMAGE_CREATE) . ' </a> <a href="'  .tep_href_link(FILENAME_MONDIALRELAYADMIN, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=imprim').'">' . tep_image_button('button_print.gif', IMAGE_PRINT) . '</a> ');
        $contents[] = array('align' => 'center', 'text' => '<a href="' .tep_href_link(FILENAME_ORDERS_INVOICE, 'oID=' . $oInfo->orders_id).'"> ' . tep_image_button('button_invoice.gif', IMAGE_ORDERS_INVOICE) . ' </a> <a href="' .tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $oInfo->orders_id).'"> ' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . ' </a> ');
        $contents[] = array('text' => '<br />' . TEXT_DATE_ORDER_CREATED . ' ' . tep_date_short($oInfo->date_purchased));
        if (tep_not_null($oInfo->last_modified)) $contents[] = array('text' => TEXT_DATE_ORDER_LAST_MODIFIED . ' ' . tep_date_short($oInfo->last_modified));
        $contents[] = array('text' => '<br />' . TEXT_INFO_PAYMENT_METHOD . ' '  . $oInfo->payment_method);
      }
      break;
  }

  if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {
    echo '            <td width="25%" valign="top">' . "\n";

    $box = new box;
    echo $box->infoBox($heading, $contents);

    echo '            </td>' . "\n";
  }
?>
          </tr>
        </table></td>
      </tr>

    </table></td>
<!-- body_text_eof //-->
  </tr>
</table>

<?php
  require(DIR_WS_INCLUDES . 'footer.php');
  require(DIR_WS_INCLUDES . 'application_bottom.php');
?>


Pour le module en lui même je l'ai modifié pour s'adapter a mes boutiques qui se sont très éloignées de la MS2.

Par contre de mémoire pour que ca colle a la ms2 il faut ajouter la gestion des taxes et modifier la fonction quote pour coller avec les exigences de sortie de la MS2.

Le module Soap existe sous PHP 4 (pear:soap pas testé je suis sous PHP 5.2) a voir si les hébergeurs l'utilisent.....

Écrit par : 2fik 19 May 2011, 21:18

Merci chrysalide pour cette piste !

j'ai l'impression qu'il manque une modifiction pour FILENAME, je ne l'ai pas trouvé dans la contribution officiel ou ai je loupé quelque chose ?

Écrit par : chrysalide 20 May 2011, 12:08

Que veux tu dire par là ?

As tu un message d'erreur ? et si oui lequel ?

EDIT: il faut modifier admin/includes/filename.php pour y inclure le define qui va bien.

Code
define('FILENAME_MONDIALRELAYADMIN', 'mondialrelayadmin.php');


et pour ajouter le lien qui va bien dans le menu de gauche de l'admin il faut modifier admin/includes/boxes/customers.php

en ajoutant

Code
'<a href="' . tep_href_link(FILENAME_MONDIALRELAYADMIN, '', 'NONSSL') . '" class="menuBoxContentLink">' . BOX_CUSTOMERS_MONDIALRELAYADMIN . '</a><br>'.


après :

Code
$contents[] = array('text' => '<a href="' . tep_href_link(FILENAME_ORDERS, '', 'NONSSL') . '" class="menuBoxContentLink">' . BOX_CUSTOMERS_ORDERS . '</a><br>' .


par exemple

ne pas oublier de modifier admin/includes/languages/french.php

pour ajouter

Code
define('BOX_CUSTOMERS_MONDIALRELAYADMIN', 'Gestion expéditions Mondial Relay');


avant le ?> de fin

A noter qu'avant de bosser sur cette contrib qui est écrite en UTF-8 (le têtard et le vieux, il aiment ça biggrin.gif ) il faut :

1 - virer les BOM TAG des fichiers
2 - Les convertir en ISO

Sinon ca risque d'être tout caca à la sortie.

Pour la gestion de la TVA c'est pour un autre numéro.......

Écrit par : chti_poupon 21 May 2011, 15:55

Citation (chrysalide @ 19 May 2011, 10:23) *
si ce fonctionnement est problématique il est possible de switcher ce fonctionnement dans le module en modifiant la fonction remove

Code
function remove() {
         tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
         tep_db_query("ALTER table ".TABLE_ORDERS." DROP shipping_pointrelay");
         tep_db_query("ALTER table ".TABLE_ORDERS." DROP shipping_traking");
     }


par

Code
function remove() {
         tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
       //  tep_db_query("ALTER table ".TABLE_ORDERS." DROP shipping_pointrelay");
       // tep_db_query("ALTER table ".TABLE_ORDERS." DROP shipping_traking");
     }


ou

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

Salut à toi, ô chrysalide !
Hélas, si l'on supprime le module, on a une erreur en le recréant, (avec ALTER TABLE) car les colonnes existent déjà.
Il faut noter de trouver autre chose à l'avenir.

Sinon, mille merci pour l'adaptation 2.2 qui permet d'avancer grandement. biggrin.gif biggrin.gif biggrin.gif
(Il reste un <? au lieu de <?php et DOCTYPE... <body> à ajouter)

Chti poupon

Écrit par : chti_poupon 21 May 2011, 16:15

Bonjour,
Petit détail pour implanter l'icône fournie par Mondialrelay (et faire fonctionner le choix True/False), modifier la classe :

Code
    var $code, $title, $icon, $sort_order, $description, $enabled;
    function mondialrelay()
    {
        $this->code="mondialrelay";
        $this->title=MODULE_SHIPPING_MONDIAL_RELAY_TEXT_TITLE;
        $this->icon = DIR_WS_ICONS . 'MR RVB.jpg'; // To remove icon change to: $this->icon = 'pixel_trans.gif';
        $this->sort_order = MODULE_SHIPPING_MONDIAL_RELAY_SORT_ORDER;
        $this->description=MODULE_SHIPPING_MONDIAL_RELAY_DESCRIPTION;
        $this->enabled=((MODULE_SHIPPING_MONDIAL_RELAY_STATUS == 'True') ? true : false);

et dans la fonction quote :
Code
                $this->quotes = array('id' => $this->code,
                                      'module' => $this->title,
                                      'methods' => $methods);
              if (tep_not_null($this->icon))
                $this->quotes['icon'] = tep_image($this->icon,$this->title,40,42,'align="middle"');
                return $this->quotes;

les dimensions 40x42 peuvent être adaptées à votre goût.

Le travail continue !
Chti poupon

Écrit par : chrysalide 21 May 2011, 16:38

Salut Bébé Cadum ! happy.gif

Il faut verifier la présence des champs avant création, je regarde ca Lundi et je balance.

Merci de verifier mon taf avant d'utiliser car ma base de travail diffère vraiment de la Ms2 de base et si besoin j'apporterai les modifs necessaires.

par exemple chez moi l'appel de la fonction tep_image pour la création de l'icone se fait dans le checkout_shipping et non dans le module.

Pour la taille de l'icone tu peux créer deux clés dans la table config afin que cela soit plus user friendly.

Je vais poser une ms2 afin de valider le fonctionnement de la contrib sur une ms2 toute fraiche.

je validerai les deux trois modifs de implanté dans la mienne afin de rendre la version 2.3.1 exploitable.

D'ailleurs j'ai viré les fonctions d'édition et de suppression présentent dans mondialrelay_admin car je les trouve un peu pas glog placées a cet endroit.

Écrit par : chrysalide 21 May 2011, 23:00

J'ai modifié cette contrib pour être utilisable sous la ms2 avec gestion de la TVA et possibilité de conserver ou non les champs créées dans la table orders via un switch dans l'admin du module.

J'écris la doc d'install et je publie la contrib. Je pense début de semaine prochaine en fonction de mon emploi du temps.

Écrit par : chti_poupon 22 May 2011, 16:33

Bonjour !
Dans l'état actuel des choses, tes lumières seront les bienvenues (en plus de la TVA):

  1. le changement de tarif n'est pas pris en compte, pourtant bien changé dans config BDD (test avec cache)
  2. L'ajout des frais fixes dans la classe mondialrelay par
    Code
                                                ,'cost'   => $tarif +MODULE_SHIPPING_MONDIAL_RELAY_FRAIS_FIXES);

    ne me fait pas l'effet de fonctionner
    (test avec cache)
  3. l'action edit ne fonctionne que si je remplace $HTTP_GET_VARS par $_GET et POST itou (sans doute un réglage local)
  4. l'action cre ne crée rien le paramètre STAT n'étant pas nul
  5. Rien n'apparaît dans la doc sur les paramètres :
    Code
                           ,'ModeCol'        => 'CCC'
                              ,'ModeLiv'        => '24R'
  6. Sur les pages avec soap j'ai
    Code
    
    qui apparaît sur l'écran (local et distant, front et back ???)
Bref la route est encore longue (il reste l'impression des étiquettes depuis l'admin... a moins d'utiliser un fichier csv et en n'imprimant que celles dont le statut atteste le paiement).

çà promet encore un talc chaud biggrin.gif
Chti poupon

Écrit par : chrysalide 23 May 2011, 09:29

Citation (chti_poupon @ 22 May 2011, 16:33) *
[*]le changement de tarif n'est pas pris en compte, pourtant bien changé dans config BDD


blink.gif


Citation
[*]L'ajout des frais fixes dans la classe mondialrelay par
Code
                                            ,'cost'   => $tarif +MODULE_SHIPPING_MONDIAL_RELAY_FRAIS_FIXES);

ne me fait pas l'effet de fonctionner


ouep !

Normalement ca doit marché mias j'ai procédé différemment mais en fait le resulat est le même

j'ai ajouter

Code
$this->frais_fixes = MODULE_SHIPPING_MONDIAL_RELAY_FRAIS_FIXES;
dans la fonction mondialerelay

et ça

Code
,'cost'   => $tarif + $this->frais_fixes


dans mon array methods et ca marche. Au fait merci j'avais oublié de l'intégrer car je ne l'utilise jamais ! biggrin.gif

Citation
[*]l'action edit ne fonctionne que si je remplace $HTTP_GET_VARS par $_GET et POST itou (sans doute un réglage local)


blink.gif ouai a voir si c'est pas un soucis de réglage local

Question tu test en local ou sur un hébergement, peux tu me remonter tes infos de config serveur ?

Citation
[*]l'action cre ne crée rien le paramètre STAT n'étant pas nul


tu as testé quand le serveur de test MR n'est dispo que du Lundi au vendredi de 7h a 20h* je crois.

Code
[*]Rien n'apparaît dans la doc sur les paramètres :[code]                       ,'ModeCol'        => 'CCC'
                         ,'ModeLiv'        => '24R'
[/code]

modecol = Mode de Collecte et peux prendre les valeurs CCC CDR CDS REL.
ModeLiv = Mode de Livraison et peux prendre les valeurs LCC LD1 LDS 24R ESP DRI

j'essaye de choper les correspondances de ces valeurs dans la journée

Citation
[*]Sur les pages avec soap j'ai
Code

qui apparaît sur l'écran (local et distant, front et back ???)


As tu converti tes fichiers en iso ? et celui de langue dans /includes/languages/modules/shipping ? petit canaillou ! biggrin.gif

voir mon post plus haut

Citation
[/list]Bref la route est encore longue (il reste l'impression des étiquettes depuis l'admin... a moins d'utiliser un fichier csv et en n'imprimant que celles dont le statut atteste le paiement).


rien de tout ça quand ta fonction cre marche le numero de tracking et créé et te donne accès a la fonction imprim qui génère un joli pdf depuis le webservice MR a imprimer.

Citation
çà promet encore un talc chaud biggrin.gif
Chti poupon


On connait ton visse maintenant tongue.gif

Écrit par : telede 23 May 2011, 16:20

Citation (chrysalide @ 19 May 2011, 19:25) *
Le module Soap existe sous PHP 4 (pear:soap pas testé je suis sous PHP 5.2) a voir si les hébergeurs l'utilisent.....

Le module Soap existe sous PHP4 sous l'appelation nuSOAP téléchargeable sous forme de classe, librairie.

SOAP est natif sous PHP5 mais n'est pas supporté par certains hébergeurs, et pour malheureuse cible, Icodia, c'est vraiment navrant et il n'y a pas d'explication cohérente.

Merci pour cette contribution wink.gif

Écrit par : chti_poupon 23 May 2011, 18:29

A chrysalide pour infos:

A suivre !
Chti Poupon

Écrit par : chrysalide 23 May 2011, 18:57

Citation
J'ai barré certaines questions de mon message précédent, dues au cache ou à un "excès" d'organisation...


un exces de db less query biggrin.gif

Citation
[*]Les frais d'emballage peuvent servir: certains prétendent que la TVA ne peut être facturée qui s'il y a service ( emballage et envoi ) et non envoi simple. Mais la Poste la facture... Ne rouvrons pas ici cette discussion ./


C'est pour cela que je l'ai intégré car initialement je l'ai pas fait par "par stratégie commerciale" je ne l'utilise pas.

Citation
[*]Les signes "Gamma majuscule, guillemet ouvert, interrogation espagnol" apparaissent tant en local qu'en distant en tête sur la page checkout_shipping.php et dans l'admin sur la page Modules d'expédition, que MR soit actif ou non. au début de la colonne centrale, après le titre et l'"image" d'espacement - avant la barre d'intitulés . Ils ne sont bien sûr pas dans le code source et utf-8 m'est ici étranger.


je suis sure de mon coup ton fichier includes/languages/french/modules/shipping/mondialrelay.php doit être en UFT8 avec un dom tab ou converti en iso et le dom tab est placé avant le <? de debut du fichier.

Citation
[*]ATTENTION : Je viens de constater que la réinstallation du module MR provoque la réinstallation, à la suite, de tous les paramètres de configuration (soient 500 lignes à supprimer dans ma table configuration !!!). Vérifiez votre base !


remets pour tes tests les lignes supprimant les champs tracking et relais dans la fonction remove dans la table orders. Car lors de la désinstallation normalement tu chopes un vieux message d'erreur qui interrompt la désinstallation et ne vire pas les enregistrement dans la table configuration

Citation
[*]A ce sujet, il est tentant d'inscrire en dur les paramètres d'utilisation/codes MR dans la classe, ce qui revient à mettre à disposition du public les codes d'accès pour expédier: gênant. A proscrire, faute de mieux.


oui c'est mal, même si pour les tests s'est chiant

Citation
[*]Merci pour la liste des codes CCC & Co. On peut se demander pourquoi ils ne sont pas réglables dans l'admin... avec la taille du logo smile.gif


ils pourraient l'être pq pas ?! mais pour le logo je vais pas définir la taille via le logo pour rester standard dans la construction de la contrib vis a vis des modules existants. Chacun pourra adapter/ajuster selon ses envies. Au pire je filerai les bouts de code sur le forum.


Citation
[*]Tous mes essais distants ont eu lieu en réel mais je n'ai pas (encore) obtenu d'étiquette que l'on peut -j'espère - annuler (?)


je serai toi quand tu seras a l'étape création d'étiquettes reste avec les identifiants de test livrés dans le module.

Aparté: La contrib est en deux parties module et mondiarelay_admin pour être plus clair dans nos échanges (et surtout pour ceux qui nous lisent/liront) il serait sage d'indiquer a quelle partie on fait référence.

Écrit par : chti_poupon 23 May 2011, 21:21

Bien Chrysalide, Merci ! çà marche !!
J'ai effectivement mon premier envoi à moi même avec étiquette et tout çà! le test en réel et distant fonctionne.
En local, paramètres test rien qu'un code qui dénote que soap a donné STAT non nul.
Bah ! l'essentiel est que çà fonctionne "pour de vrai".
Milles Mercis Doncs !!!

Chti Poupon

PS pour

Citation
je suis sure de mon coup ton fichier includes/languages/french/modules/shipping/mondialrelay.php doit être en UFT8 avec un dom tab ou converti en iso et le dom tab est placé avant le <? de debut du fichier.

je ne vois rien, mais j'ai trouvé de la lecture pour m'instruire. Merci donc de cette puce à l'oreille. C'est cette contrib en 2.3 qui a dû me passer çà Me voilà plus savant çà fonctionne: Nouvelle bordée de Milles Mercis Doncs !!!

Écrit par : chrysalide 24 May 2011, 11:25

Bon et bien je viens de publier la contrib pour la 2.2

celle-ci est téléchargeable là:

http://addons.oscommerce.com/info/8022

Remarques et commentaires sont les bienvenus.

J'ai déja mis une Todo list en bas du fichier d'install sur les trucs que je prévois déja.

Écrit par : chti_poupon 24 May 2011, 14:05

Bonjour !
Je vies de charger ton zip (encore bravo !) pour intégrer les améliorations TVa & co et je m'aperçois d'une confusion due à la notation simplifiée de if utilisée à cet endroit de catalog/includes/modules/shipping/mondialrelay.php:
Il faut - je pense - lire :

Code
$this->quotes = array('id' => $this->code,
'module' => $this->title,
'methods' => $methods);
if ($this->tax_class > 0)
$this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);
return $this->quotes;

sans les {} sinon, la présence de l'icone serait liée à celle de la TVA.
Mais je n'ai pas testé.
Même chose pour catalog/admin/mondialrelayadmin.php:
Il reste avant require(header.. un <? sans php, ce qui n'est pas toujours bien accepté par les navigateurs.
Il manque </body> et </html> à la fin.
il faut remplacer un A4 par A5 dans le choix des étiquettes:
Code
            if($infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_FORMAT_PDF']=='A5'){
                $url .= $etiquette->URL_PDF_A5;
            }else{
                $url .= $etiquette->URL_PDF_A4;
            }

et il me semble bien qu'il faille mettre FILENAME_ORDERS_INVOICE ligne 238
et ligne 523 FILENAME_ORDERS au lieu de FILENAME_CATEGORIES.
Mais je n'ai pas testé non plus à cet instant.
Chti Poupon

Écrit par : chrysalide 24 May 2011, 14:30

je verifie.......


EDIT: exact !

je modifie l'archive sur le dépot.....

EDIT 2 : archive modifiée

Écrit par : chrysalide 24 May 2011, 19:54

Citation (chti_poupon @ 24 May 2011, 14:05) *
Même chose pour catalog/admin/mondialrelayadmin.php:
Il reste avant require(header.. un <? sans php, ce qui n'est pas toujours bien accepté par les navigateurs.
Il manque </body> et </html> à la fin.
il faut remplacer un A4 par A5 dans le choix des étiquettes:
Code
            if($infoExpe['MODULE_SHIPPING_MONDIAL_RELAY_FORMAT_PDF']=='A5'){
                $url .= $etiquette->URL_PDF_A5;
            }else{
                $url .= $etiquette->URL_PDF_A4;
            }

et il me semble bien qu'il faille mettre FILENAME_ORDERS_INVOICE ligne 238
et ligne 523 FILENAME_ORDERS au lieu de FILENAME_CATEGORIES.
Mais je n'ai pas testé non plus à cet instant.
Chti Poupon



Raahhhh des petites merdouilles que j'ai corrigé sur ma version avant de créer cette contrib et que j'ai zappé evil.gif

Merci !

EDIT : en fait c'est beaucoup plus simple que ça !

c'est toute la condition $action = edit que j'ai oublié de virer car pour celle-ci je redirige vers orders.php ainsi que delete passe a la trappe

ET hop ! plus de 200 lignes a la poubelle biggrin.gif

Écrit par : chti_poupon 24 May 2011, 21:25

Bonjour !!
Dans le zip, il y a des explications pour l'installation :

Code
    - Dans catalog/checkout_process.php :

Rechercher :

   if ($selected_box == 'customers') {

remplacer par
Code
    - Dans catalog/admin/includes/boxes/customers.php :

Rechercher :

   if ($selected_box == 'customers') {


Et je ne veux pas voir de remarques sur cette contrib avec cmcic: c'est mis de modifier AUSSI comme checkout_process.php ET par DEUX FOIS à DEUX ENDROITS !! wub.gif

Attention, l'introduction de la TVA amène à modifier le tarif inclus dans catalog/includes/modules/shipping/mondialrelay.php en principe ligne 150 dans la méthode install comme suit (valide jusqu'au 30/6/11) :
Code
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Tarif', 'MODULE_SHIPPING_MONDIAL_RELAY_TARIF', '0.50:3.51,1.00:4.01,2.00:4.60,3.00:5.18,5.00:6.27,7.00:8.03,10.00:9.99,15.00:12.00,20.00:15.01', 'Tarif appliqué suivant le poids.', '6', '0', now())");


Ajouter un champ "Assurance facultative" est à mettre dans la liste "A Faire",

C'est tout ! biggrin.gif
Chti poupon

Écrit par : chrysalide 24 May 2011, 21:30

Citation (chti_poupon @ 24 May 2011, 21:25) *
Et je ne veux pas voir de remarques sur cette contrib avec cmcic: c'est mis de modifier AUSSI comme checkout_process.php ET par DEUX FOIS à DEUX ENDROITS !! wub.gif



Sur le coup je crois que dans la doc j'ai été plus clair que toi ! biggrin.gif

EDIT : toutes les corrections enumérées en fin de journées seront appliquées à l'archives demain dans la journée.

Écrit par : 2fik 24 May 2011, 23:23

Bonjour, un grand merci chrysalide je télécharge et je mis met dès demain cool.gif

je vous tiens au courant

lol chrysalide tu m'as bien fais rire sur le add-ons "Fil de Discutions (remarques, commentaires, insultes):"

Écrit par : 2fik 25 May 2011, 06:13

Voila j'ai installé la contribution, niveau admin ça a l'air de fonctionner mais coté boutique, à checkout_shipping.php je n'ai pas la livraison "mondial relay" qui s'affiche !?
J'ai bien activé le module coté admin et entré les paramètres.

Écrit par : chrysalide 25 May 2011, 08:36

si ca a l'air de fonctionner c'est pas normal car si tu es bien en php4 comme tu nous l'a indiqué il y a qq jours tu devrais avoir un sale message d'erreur du genre

Code
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in


Car php 4 aime moyen les enchaînements d'appels de méthodes

peux tu vérifier ta version de php, stp ? via Renseignements sur serveur dans admin/outils.

si tu es avec une version 5.x verifie si tu as SOAP en module PHP ?

Écrit par : chrysalide 25 May 2011, 09:52

Citation (chti_poupon @ 24 May 2011, 21:25) *
Attention, l'introduction de la TVA amène à modifier le tarif inclus dans catalog/includes/modules/shipping/mondialrelay.php en principe ligne 150 dans la méthode install comme suit (valide jusqu'au 30/6/11) :
Code
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Tarif', 'MODULE_SHIPPING_MONDIAL_RELAY_TARIF', '0.50:3.51,1.00:4.01,2.00:4.60,3.00:5.18,5.00:6.27,7.00:8.03,10.00:9.99,15.00:12.00,20.00:15.01', 'Tarif appliqué suivant le poids.', '6', '0', now())");


Ajouter un champ "Assurance facultative" est à mettre dans la liste "A Faire",

C'est tout ! biggrin.gif
Chti poupon


Le truc c'est que je n'ai pas les mêmes conditions tarifaires que toi (datées du 01/05/2011).
Je vais laisser la grille actuelle car je pense que la grille tarifaire fait partie de la négociation commerciale avec MR.

Écrit par : chrysalide 25 May 2011, 11:04

La version 1.02 de la contrib est dispo dans les bacs.

Écrit par : 2fik 25 May 2011, 11:14

Effectivement chrysalide, j'ai bien ce message d'erreur "unexpected T_OBJECT_OPERATOR"

Écrit par : chrysalide 25 May 2011, 11:39

et bien desolé pour toi mais pour l'instant je ne me suis pas penché sur la compatibilité du module avec php4 et l'intégration de la class nusoap.

Écrit par : chti_poupon 25 May 2011, 11:49

Citation (chrysalide @ 25 May 2011, 09:52) *
Le truc c'est que je n'ai pas les mêmes conditions tarifaires que toi (datées du 01/05/2011).
Je vais laisser la grille actuelle car je pense que la grille tarifaire fait partie de la négociation commerciale avec MR.

Si, Si ! Ce sont les mêmes que par défaut, mais celles de la vo.o sont TTC et en divisant par 1.196 (French normal VAT happy.gif ) on retombe sur ces valeurs qui sont HT.
Et si l'on peut choisir la TVA, il faut partir du HT (Cf module Colissimo par exemple)
Chti Poupon

Écrit par : chrysalide 25 May 2011, 11:59

Citation (chti_poupon @ 25 May 2011, 11:49) *
Citation (chrysalide @ 25 May 2011, 09:52) *
Le truc c'est que je n'ai pas les mêmes conditions tarifaires que toi (datées du 01/05/2011).
Je vais laisser la grille actuelle car je pense que la grille tarifaire fait partie de la négociation commerciale avec MR.

Si, Si ! Ce sont les mêmes que par défaut, mais celles de la vo.o sont TTC et en divisant par 1.196 (French normal VAT happy.gif ) on retombe sur ces valeurs qui sont HT.
Et si l'on peut choisir la TVA, il faut partir du HT (Cf module Colissimo par exemple)
Chti Poupon


ouai ! en fait j'avais pas compris ça ! évidement la grille est HT mais je n'avais pas percuté que celle que tu proposais été la même mais HT.

D'ailleurs dans la v1.02 j'ai modifié les intitulés des champs pour inclure la notion de HT pour la grille ainsi que pour les frais fixes.

Écrit par : chti_poupon 25 May 2011, 15:30

Bonjour !
Dans catalog/admon/mondialrelayadmin.php, remplacer la ligne (vers 325) :

Code
        $contents[] = array('align' => 'center', 'text' => '<a href="' .tep_href_link(FILENAME_ORDERS_INVOICE, 'oID=' . $oInfo->orders_id).'"> ' . tep_image_button('button_invoice.gif', IMAGE_INVOICE) . ' </a> <a href="' .tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $oInfo->orders_id).'"> ' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . ' </a> ');

par
Code
        $contents[] = array('align' => 'center', 'text' => '<a href="' .tep_href_link(FILENAME_ORDERS_INVOICE, 'oID=' . $oInfo->orders_id).'"> ' . tep_image_button('button_invoice.gif', IMAGE_ORDERS_INVOICE) . ' </a> <a href="' .tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $oInfo->orders_id).'"> ' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . ' </a> ');

En effet, dans catalog/admin/includes/languages/french.php, il y a :
Code
define('IMAGE_ORDERS_INVOICE', 'Facture');


Inversement, il faut ajouter dans catalog/admin/includes/languages/french.php la ligne :
Code
define('IMAGE_CREATEMR', 'Créer une étiquette');

et dans catalog/admin/mondialrelay.php remplacer IMAGE_CREATE par IMAGE_CREATEMR (attention: 2 occurences)
(On garde ainsi le parallèlle avec le nom du bouton)
Le reste est impeccable et la suppression de la redondance avec orders efficace.

Chti poupon

Écrit par : chrysalide 27 May 2011, 13:52

je suis en train d'ajouter un truc pas négligeable.

la possibilité d'indiquer "manuellement" le poids du colis avant la création du numéro de tracking afin d'envoyer le poids réel du colis et non le calculé.

Une erreur dans la calcul du poids dans Oscommerce ou si vous avec la main lourde sur le scotch ou les bulles et hop le poids "envoyé" a MR lors de la création du n° de tracking est faux.

Écrit par : chti_poupon 28 May 2011, 14:16

Bonjour,
L'erreur de masse du colis ne paraît pas excessivement grave, puisque s'il y a franchissement d'un seuil, Mondialrelay rectifie à la facturation, comme tous les autres (cf conditions).
Par contre, il me paraît utile de prévoir quelque chose en cas de port sans frais, quand un montant est atteind.
En effet, tant qu'il s'agit d'une livraison à domicile, c'est, pour le client, sans importance.
La mise à disposition en relais, avec quelques jours de plus - éventuellement - est autre chose:

  1. Le client doit accepter le principe du relais - un montant inférieur peut le motiver
  2. Le client doit choisir son relais de toute façon.
En m'inspirant d'un post de Gnidhal du 28/03/2010, je propose cette modification de catalog/includes/modules/shipping/mondialrelay.php :
Code
fclose($log);
}
var $code, $icon, $title, $sort_order, $description, $enabled;
function mondialrelay()
{
$this->code="mondialrelay";
$this->title = MODULE_SHIPPING_MONDIAL_RELAY_TEXT_TITLE;
$this->sort_order = MODULE_SHIPPING_MONDIAL_RELAY_SORT_ORDER;
$this->icon = DIR_WS_ICONS . 'MR RVB.jpg';
$this->description = MODULE_SHIPPING_MONDIAL_RELAY_DESCRIPTION;
$this->enabled = ((MODULE_SHIPPING_MONDIAL_RELAY_STATUS == 'True') ? true : false);
$this->tax_class = MODULE_SHIPPING_MONDIAL_RELAY_TABLE_TAX_CLASS;
$this->frais_fixes = MODULE_SHIPPING_MONDIAL_RELAY_FRAIS_FIXES;
$this->franco = MODULE_SHIPPING_MONDIAL_RELAY_FREE_SHIPPING_OVER;
}

function quote($method = '')
{
global $shipping_weight;
//soap
if($shipping_weight>=0.1)
{
global $order, $cart;
$client = new SoapClient("http://www.mondialrelay.fr/WebService/Web_Services.asmx?WSDL");

$params = array('Enseigne'     => MODULE_SHIPPING_MONDIAL_RELAY_ENSEIGNE
,'Pays'         => $order->delivery['country']['iso_code_2']
,'Ville'        => $order->delivery['city']
,'CP'           => $order->delivery['postcode']);
//On crée le code de sécurité
$code = implode("",$params);
$code .= MODULE_SHIPPING_MONDIAL_RELAY_CLE_PRIVEE;

// On le rajoute aux paramétres
$params["Security"] = strtoupper(md5($code));
$pointsRelais = $client->WSI2_RecherchePointRelais($params)->WSI2_RecherchePointRelaisResult;// récupere la liste des points relais
if($pointsRelais->STAT==0)
{
// calcul du tarif

// ajout livraison gratuite
if ($cart->show_total() >= $this->franco){
$tarif=0;
// Fin ajout livraison gratuite*/
}else{
$table = split("[:,]" , MODULE_SHIPPING_MONDIAL_RELAY_TARIF);
$tarifTrouve=true;
for ($i = 0; $i < sizeof($table); $i+=2) {
if ($shipping_weight > $table[$i])
continue;
if (($shipping_weight < $table[$i]) AND $tarifTrouve) {
$tarif=$table[$i+1];
$tarifTrouve=false;
}

}
$tarif += $this->frais_fixes;
}

$methods = array();
et plus bas :
Code
$methods[]=array('id'     => $pointRelais->Num . $pointRelais->Pays
,'title'  => $pointRelais->LgAdr1 ." à  ".$pointRelais->Ville ." ".$pointRelais->CP ." <a onclick=\"
window.open ('". $link ."', '', 'height=800, width=450, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no');\"><b>Détails</b></a>"
,'cost'   => $tarif );
}
les frais ayant été mis précédemment
avec dans la méthode install :
Code
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Seuil Franco (TTC)', 'MODULE_SHIPPING_MONDIAL_RELAY_FREE_SHIPPING_OVER', '0', 'Port gratuit à partir de (TTC) en marchandises', '6', '60', now())");

et en rajoutant dans la méthode keys:
Code
,"MODULE_SHIPPING_MONDIAL_RELAY_FREE_SHIPPING_OVER"[b]
[/b]

Cà, çà marche.
MAIS :
Bien sûr, il faut réaménager côté order_total/ot_shipping.php ET côté catalog/checkout_shipping.php pour proposer - à partir d'un autre seuil - une livraison gratuite à domicile .
Ce qui ne me paraît pas évident.
Chti poupon

Écrit par : telede 28 May 2011, 18:12

Citation (chti_poupon @ 28 May 2011, 14:16) *
L'erreur de masse du colis ne paraît pas excessivement grave, puisque s'il y a franchissement d'un seuil, Mondialrelay rectifie à la facturation, comme tous les autres (cf conditions).
[*]Le client doit accepter le principe du relais - un montant inférieur peut le motiver

OUI !
1) Au même titre que coliposte il y a un re-pesée wink.gif
2) Il est évident que si le commerçant applique le tarif Mondial Relay le client n'a pas d'autre choix ! pour ma part j'ai compté + de 50% de taux de transfo.

Écrit par : chti_poupon 29 May 2011, 08:16

Bonjour !
Pour (tenter d') être plus clair :
Quand un client m'en prend pour plus de X €, il a droit une livraison sans frais. Comment lui expédier gratuitement en relais s'il n'a pas accepté expressément ce mode de livraison, pas à domicile ?
Sachant que pour moins de X € il a le choix entre relais et colissimo, il peut s'attendre à de la livraison à domicile.
Comment lui faire entériner ce choix ?
Chti Poupon
PS: à telede +50%: Dois_je comprendre que si avant 2 visiteurs sur 10 passaient commande, c'est 3 sur 10 maintenant, ou plutôt comprendre que c'est 5/10 ?

Écrit par : telede 29 May 2011, 11:23

Citation (chti_poupon @ 29 May 2011, 08:16) *
PS: à telede +50%: Dois_je comprendre que si avant 2 visiteurs sur 10 passaient commande, c'est 3 sur 10 maintenant, ou plutôt comprendre que c'est 5/10 ?

J'ai commit une erreur de language,

Ma pensée, qui je pense reflète la réalité, mais ceci dit la mienne, que j'ai eu à ce moment là était :
- Mondial permet d'améliorer son taux de transfo du fait du faible coût de l'offre
- J'ai atteinds jusqu'à 50% d'expéditions par mondial sur la catégorie de produits expédiable par Mondial (donc dans la tranche de poids et dimensions)

smile.gif

Écrit par : chrysalide 30 May 2011, 18:18

Citation (chti_poupon @ 28 May 2011, 14:16) *
Bonjour,
L'erreur de masse du colis ne paraît pas excessivement grave, puisque s'il y a franchissement d'un seuil, Mondialrelay rectifie à la facturation, comme tous les autres (cf conditions).
Par contre, il me paraît utile de prévoir quelque chose en cas de port sans frais, quand un montant est atteind.
En effet, tant qu'il s'agit d'une livraison à domicile, c'est, pour le client, sans importance.
La mise à disposition en relais, avec quelques jours de plus - éventuellement - est autre chose:


l'erreur de masse est critique pour moi parce que j'aime bien savoir ce que l'on me facture et ca permet de savoir si il n'y a pas une erreur de saisie dans la base.

J'ai trouvé deux trucs a modifier :

1 - la gestion des accents lors d'une requête vers le webservice et là c'est le

Code
Fatal error: Uncaught SoapFault exception
de la mort

je vais corrigé ca (ah le uft8 et l'iso c'est le grand amour)

2 - le module ne peut traiter que les commande d'un poids max de 20 Kg car au dela c'est mal avec un code retour "20" (poids erroné).

Dans ma version de test j'ai déja ajouté l'envoie du poinds lors de la requête WSI2_RecherchePointRelais mais cette valeur seule ne permet pas de limiter la requete au point relais XL.
J'attends la réponse sur les paramètres a utiliser pour les colis de plus de 20 Kg.... donc Wait&See.

A mon avis ca doit se jouer sur le paramètre 'Action'.

Pour le franco :

perso je le gère niveau module par un enregistrement dans la table configuration modifiable depuis le module et une petite condition.

+ de détails demain car ce soir j'ai pas le temps..... et pas envie


Écrit par : chti_poupon 30 May 2011, 21:46

Bonjour !

Citation
2 - le module ne peut traiter que les commande d'un poids max de 20 Kg car au dela c'est mal avec un code retour "20" (poids erroné).

Dans ma version de test j'ai déja ajouté l'envoie du poinds lors de la requête WSI2_RecherchePointRelais mais cette valeur seule ne permet pas de limiter la requete au point relais XL.
J'attends la réponse sur les paramètres a utiliser pour les colis de plus de 20 Kg.... donc Wait&See.

Attention, mon contrat ne prévoit pas l'envoi de colis de plus de 20 kg ou > 1.5 m (c'est l'équivalent de so colissimo en fait) ni le multi-colis.
Il faut plutôt prévoir une décomposition en n colis < 20 kg comme le fait - imparfaitement d'ailleurs - le module colissimo, chaque colis ayant un poids hypothétique identique pour minimiser les frais :
  1. nb colis : n= int(poids total/20)+1
  2. poids colis : (poids total)/n
Chti poupon

Écrit par : chrysalide 30 May 2011, 22:08

Citation (chti_poupon @ 30 May 2011, 21:46) *
Bonjour !
Citation
2 - le module ne peut traiter que les commande d'un poids max de 20 Kg car au dela c'est mal avec un code retour "20" (poids erroné).

Dans ma version de test j'ai déja ajouté l'envoie du poinds lors de la requête WSI2_RecherchePointRelais mais cette valeur seule ne permet pas de limiter la requete au point relais XL.
J'attends la réponse sur les paramètres a utiliser pour les colis de plus de 20 Kg.... donc Wait&See.

Attention, mon contrat ne prévoit pas l'envoi de colis de plus de 20 kg ou > 1.5 m (c'est l'équivalent de so colissimo en fait) ni le multi-colis.
Il faut plutôt prévoir une décomposition en n colis < 20 kg comme le fait - imparfaitement d'ailleurs - le module colissimo, chaque colis ayant un poids hypothétique identique pour minimiser les frais :
  1. nb colis : n= int(poids total/20)+1
  2. poids colis : (poids total)/n
Chti poupon


Salut Chti_Poupon
Mon contrat le prévoit, il prévoit également la livraison a domicile sur rdv mais là sur super soft a géré (une petite grille et hop).

Pour cette particularité (relais XL) j'en saurai plus demain.

et je pondrai un truc optionnel switchable depuis le module.

Écrit par : chrysalide 31 May 2011, 14:08

Citation (chrysalide @ 30 May 2011, 22:08) *
Salut Chti_Poupon
Mon contrat le prévoit, il prévoit également la livraison a domicile sur rdv mais là sur super soft a géré (une petite grille et hop).

Pour cette particularité (relais XL) j'en saurai plus demain.

et je pondrai un truc optionnel switchable depuis le module.


Bon et bien c'est pas vendu !

la restriction aux points relais XL n'est pas implémenté dans le webservice confused.gif??: c'était trop simple evil.gif

J'ai reçu la doc de l'EDI......je vais éplucher ça !

Edit :

A la question

Citation
Savez-vous si a court, moyen ou long terme la possibilité de faire des requêtes restrictives sur le webservice est prévu ?


La réponse de mon interlocutrice chez MR est :

Citation
Je n'ai pas la réponse à la question. Il faut compter plutôt long terme.



Damned !

Écrit par : techtrad 31 May 2011, 15:05

Bonjour,

j'ai installé cette contrib (merci aux auteurs !).

Je rencontre un problème qui va paraitre très cxx mais bon..

Dans le module il faut rentrer ;
Enseigne
Clé privée
Clé privée (url)
Marque(url)
Marque

J'ai un contrat actif avec MR et on ne m'a communiqué que ceci
Enseigne : EC + xxxxxx
Référence marque : EC+ xxxxxx +xx
Clé privée (8chiffres) : xxxxxxxx

Que faut-il indiquer pour Clé privée (url) et Marque (url) ???

Merci d'avance pour vos lumières

Écrit par : chti_poupon 31 May 2011, 17:31

Bonjour !
C'était ce que je voulais dire à chrysalide quant aux dénominations de l'admin.
Trace d'un passé révolu ou prévoyance, les champs avec (url) contiennent la même chose que ceux sans (mais de même nom respectivement).
Chti poupon

Écrit par : chti_poupon 2 Jun 2011, 21:45

Bonjour !
Si l'on peut découper la commande en colis de moins de 20 kg, la limite générale étant fixée à 30kg pour colissimo, il faut intégrer cette limite dans les paramètres et éclater en colis identiques, ce qui donne:
catalog/includes/modules/shipping/mondial_relay.php:

Code
<?php
  class mondialrelay{
  
  function log($teste)
  {
  $log = fopen(DIR_FS_CATALOG."/logs/log.txt", "a");
  if($teste!=NULL)
  {
  fprintf($log,print_r($teste,true)."\n");
  }
  else
  {
  fprintf($log,"variable vide\n");
  }
  fclose($log);
  }
  var $code, $icon, $title, $sort_order, $description, $enabled;
  function mondialrelay()
  {
  $this->code="mondialrelay";
  $this->title = MODULE_SHIPPING_MONDIAL_RELAY_TEXT_TITLE;
  $this->sort_order = MODULE_SHIPPING_MONDIAL_RELAY_SORT_ORDER;
  $this->icon = DIR_WS_ICONS . 'MR RVB.jpg';
  $this->description = MODULE_SHIPPING_MONDIAL_RELAY_DESCRIPTION;
  $this->enabled = ((MODULE_SHIPPING_MONDIAL_RELAY_STATUS == 'True') ? true : false);
  $this->tax_class = MODULE_SHIPPING_MONDIAL_RELAY_TABLE_TAX_CLASS;
  $this->frais_fixes = MODULE_SHIPPING_MONDIAL_RELAY_FRAIS_FIXES;
  $this->franco = MODULE_SHIPPING_MONDIAL_RELAY_FREE_SHIPPING_OVER;
  $this->trop_lourd = MODULE_SHIPPING_MONDIAL_RELAY_TOO_HEAVY;
  }
  
  function quote($method = '')
  {
        global $total_weight, $shipping_weight, $shipping_num_boxes;
  //soap
  if($shipping_weight>=0.1)
  {
  global $order, $cart;
  // Début calcul du nombre de colis
          $shipping_num_boxes = 1;
          $shipping_weight = $total_weight;
  
          if (SHIPPING_BOX_WEIGHT >= $shipping_weight*SHIPPING_BOX_PADDING/100) {
            $shipping_weight = $shipping_weight+SHIPPING_BOX_WEIGHT;
          } else {
            $shipping_weight = $shipping_weight + ($shipping_weight*SHIPPING_BOX_PADDING/100);
          }
  
          if ($shipping_weight > $this->trop_lourd) { // Split into many boxes
            $shipping_num_boxes = ceil($shipping_weight/$this->trop_lourd);
            $shipping_weight = $shipping_weight/$shipping_num_boxes;
          }
  // Fin calcul nombre de boîtes
  
  $client = new SoapClient("http://www.mondialrelay.fr/WebService/Web_Services.asmx?WSDL");
  
  $params = array('Enseigne'     => MODULE_SHIPPING_MONDIAL_RELAY_ENSEIGNE
  ,'Pays'         => $order->delivery['country']['iso_code_2']
  ,'Ville'        => $order->delivery['city']
  ,'CP'           => $order->delivery['postcode']);
  //On crée le code de sécurité
  $code = implode("",$params);
  $code .= MODULE_SHIPPING_MONDIAL_RELAY_CLE_PRIVEE;
  
  // On le rajoute aux paramétres
  $params["Security"] = strtoupper(md5($code));
  $pointsRelais = $client->WSI2_RecherchePointRelais($params)->WSI2_RecherchePointRelaisResult;// récupere la liste des points relais
  if($pointsRelais->STAT==0)
  {
  // calcul du tarif
  
  // ajout livraison gratuite
  if ($cart->show_total() >= $this->franco){
  $tarif=0;
  // Fin ajout livraison gratuite*/
  }else{
  $table = split("[:,]" , MODULE_SHIPPING_MONDIAL_RELAY_TARIF);
  $tarifTrouve=true;
  for ($i = 0; $i < sizeof($table); $i+=2) {
  if ($shipping_weight > $table[$i])
  continue;
  if (($shipping_weight < $table[$i]) AND $tarifTrouve) {
  $tarif=$table[$i+1];
  $tarifTrouve=false;
  }
  
  }
  $tarif += $this->frais_fixes;
  $tarif=$tarif*$shipping_num_boxes;
  }
  $methods = array();
  foreach($pointsRelais as $pointRelais)
  {
  if( is_object($pointRelais) && trim($pointRelais->Num) != '' ){
  
  //On crée le code de sécurité
  $code = implode("",$params);
  $code .= MODULE_SHIPPING_MONDIAL_RELAY_CLE_PRIVEE;
  
  //On le rajoute aux paramètres
  $params["Security"] = strtoupper(md5($code));
  // Et on effectue la requète
  // $detail_pointrelais = $client->WSI2_DetailPointRelais($params)->WSI2_DetailPointRelaisResult;
  
  $popup_params = array(
  'ens'     => MODULE_SHIPPING_MONDIAL_RELAY_MARQUE_URL,
  'Num'    => $pointRelais->Num,
  'Pays'   => $pointRelais->Pays
  );
  
  $popup_code = '<'.MODULE_SHIPPING_MONDIAL_RELAY_MARQUE_URL.'>'.$pointRelais->Num.$pointRelais->Pays.'<'.MODULE_SHIPPING_MONDIAL_RELAY_CLE_PRIVEE_URL.'>';
          
  
  $security = strtoupper(md5($popup_code));
  
  $link = 'http://www.mondialrelay.com/public/permanent/details_relais.aspx?ens='. MODULE_SHIPPING_MONDIAL_RELAY_MARQUE_URL .'&num='.$pointRelais->Num.'&pays='.$pointRelais->Pays.'&crc='.$security;
  
  $methods[]=array('id'     => $pointRelais->Num . $pointRelais->Pays
  ,'title'  => $pointRelais->LgAdr1 ." à  ".$pointRelais->Ville ." ".$pointRelais->CP ." <a onclick=\"
  window.open ('". $link ."', '', 'height=800, width=450, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no');\"><b>Détails</b></a>"
  ,'cost'   => $tarif );
  }
  
  }
  // Début préparation affichage nombre de colis et poids
  $info_plus = ( $shipping_num_boxes>1 ) ? ''. $shipping_num_boxes . ' x ' : '';
  $info_envoi = ' ( '. $info_plus . $shipping_weight . 'kg )    ';
  // Fin préparation affichage nombre de colis
  $this->quotes = array('id' => $this->code,
  'module' => $this->title . $info_envoi,
  'methods' => $methods);
  
  if ($this->tax_class > 0)
  $this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
  
  if (tep_not_null($this->icon))
  $this->quotes['icon'] = tep_image($this->icon,$this->title,,,'align="middle"');
  
  return $this->quotes;
  
  }
  else
  {
  $this->quotes = array('module' => $this->title,
  'error' => MODULE_SHIPPING_MONDIAL_RELAY_ERROR);
  return $this->quotes;
  }
  }
  else
  {
  return;
  }
  }
  
  function check() {
  $retourdb = tep_db_query("select configuration_value FROM ".TABLE_CONFIGURATION." WHERE configuration_key= 'MODULE_SHIPPING_MONDIAL_RELAY_STATUS' ");
  $this->checked = tep_db_num_rows($retourdb);
  return $this->checked;
  }
  function remove() {
  tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
  tep_db_query("ALTER table ".TABLE_ORDERS." DROP shipping_pointrelay");
  tep_db_query("ALTER table ".TABLE_ORDERS." DROP shipping_traking");
  }
  
  
  function install() {
  tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Ordre de tri', 'MODULE_SHIPPING_MONDIAL_RELAY_SORT_ORDER', '0', 'Ordre de tri pour l\'affichage (Le plus petit nombre est montr&eacute; en premier).', '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 ('Enseigne', 'MODULE_SHIPPING_MONDIAL_RELAY_ENSEIGNE', 'xxxxxxxx', 'Enseigne fournie par mondial relay.', '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 ('Marque', 'MODULE_SHIPPING_MONDIAL_RELAY_MARQUE', 'xxxxxxxxxx', 'Marque fournie par mondial relay.', '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 ('Clé privée', 'MODULE_SHIPPING_MONDIAL_RELAY_CLE_PRIVEE', 'xxxxxxxx', 'Clé fournie par mondial relay.', '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 ('Marque(url)', 'MODULE_SHIPPING_MONDIAL_RELAY_MARQUE_URL', 'xxxxxxxxxx', 'Marque(url) fournie par mondial relay.', '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 ('Clé privée (url)', 'MODULE_SHIPPING_MONDIAL_RELAY_CLE_PRIVEE_URL', 'xxxxxxxx', 'Clé fournie par mondial relay.', '6', '0', 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 ('activer le module', 'MODULE_SHIPPING_MONDIAL_RELAY_STATUS', 'True', 'activer le module du front', '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 ('Civilité Nom Prénom', 'MODULE_SHIPPING_MONDIAL_RELAY_EXPE_AD1', '".STORE_NAME."', 'Civilité Nom Prénom(Civilités acceptées:\'MR\',\'M\',\'M.\', \'MME\', \'MLE\' et \'MLLE\').', '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 ('Pays d\'expédition', 'MODULE_SHIPPING_MONDIAL_RELAY_EXPE_PAYS', 'FR', 'Pays d\'expédition (Pays acceptés:\'FR\',\'BE\',\'LU\' et \'ES\').', '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 ('Rue', 'MODULE_SHIPPING_MONDIAL_RELAY_EXPE_AD3', 'mon numéro ma rue', 'Rue.', '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 ('Ville', 'MODULE_SHIPPING_MONDIAL_RELAY_Expe_EXPE_VILLE', 'ma ville', 'ville.', '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 ('Code Postal', 'MODULE_SHIPPING_MONDIAL_RELAY_Expe_EXPE_CP', '99999', 'Code Postal.', '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 ('Téléphone', 'MODULE_SHIPPING_MONDIAL_RELAY_EXPE_TEL1', '0123456789', 'Téléphone Fixe.', '6', '0', now())");
  tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('TVA applicable', 'MODULE_SHIPPING_MONDIAL_RELAY_TABLE_TAX_CLASS', '0', 'Sélectionnez la TVA applicable sur le montant de la livraison.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");
  tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Tarif', 'MODULE_SHIPPING_MONDIAL_RELAY_TARIF', '0.50:3.51,1.00:4.01,2.00:4.60,3.00:5.18,5.00:6.27,7.00:8.03,10.00:9.99,15.00:12.00,20.00:15.01', 'Tarif HT appliqué suivant le poids.', '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_MONDIAL_RELAY_FRAIS_FIXES', '0', 'Frais fixes (emballage).', '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 ('Seuil Franco (TTC)', 'MODULE_SHIPPING_MONDIAL_RELAY_FREE_SHIPPING_OVER', '0', 'Port gratuit à partir de (TTC) en marchandises', '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 du colis', 'MODULE_SHIPPING_MONDIAL_RELAY_TOO_HEAVY', '20', 'Poids brut maximum (kg) ', '6', '60', 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 ('Format des étiquettes', 'MODULE_SHIPPING_MONDIAL_RELAY_FORMAT_PDF', 'A5', 'Format des PDF des étiquettes', '6', '0', 'tep_cfg_select_option(array(\'A4\', \'A5\'), ', now())");
  tep_db_query("ALTER table ".TABLE_ORDERS." ADD shipping_pointrelay char(8)");
  tep_db_query("ALTER table ".TABLE_ORDERS." ADD shipping_traking char(8)");
  }
  function keys() {
  return array("MODULE_SHIPPING_MONDIAL_RELAY_STATUS"
  ,"MODULE_SHIPPING_MONDIAL_RELAY_ENSEIGNE"
  ,"MODULE_SHIPPING_MONDIAL_RELAY_CLE_PRIVEE"
  ,"MODULE_SHIPPING_MONDIAL_RELAY_CLE_PRIVEE_URL"
  ,"MODULE_SHIPPING_MONDIAL_RELAY_MARQUE_URL"
  ,"MODULE_SHIPPING_MONDIAL_RELAY_MARQUE"
  ,"MODULE_SHIPPING_MONDIAL_RELAY_TARIF"
  ,"MODULE_SHIPPING_MONDIAL_RELAY_FREE_SHIPPING_OVER"
  ,"MODULE_SHIPPING_MONDIAL_RELAY_FRAIS_FIXES"
  ,"MODULE_SHIPPING_MONDIAL_RELAY_FORMAT_PDF"
  ,'MODULE_SHIPPING_MONDIAL_RELAY_EXPE_PAYS'
  ,'MODULE_SHIPPING_MONDIAL_RELAY_EXPE_AD1'
  ,'MODULE_SHIPPING_MONDIAL_RELAY_Expe_Ad3'
  ,'MODULE_SHIPPING_MONDIAL_RELAY_Expe_EXPE_VILLE'
  ,'MODULE_SHIPPING_MONDIAL_RELAY_Expe_EXPE_CP'
  ,'MODULE_SHIPPING_MONDIAL_RELAY_EXPE_TEL1'
  ,"MODULE_SHIPPING_MONDIAL_RELAY_SORT_ORDER"
  ,'MODULE_SHIPPING_MONDIAL_RELAY_TOO_HEAVY'
  ,'MODULE_SHIPPING_MONDIAL_RELAY_TABLE_TAX_CLASS');
  }
  }
  ?>


Cela fonctionne en local à tout le moins !

MAIS je ne sais pas faire les étiquettes correspondantes autrement qu'en manuel (pour le moment) : l'adaptation de mondialrelay_admin reste à faire.

Chti poupon
EDITION : Corrections erreurs code

Écrit par : chti_poupon 3 Jun 2011, 22:03

Bonjour !
GAG ! wub.gif
dans l'install.txt du zip il manque:

Code
Puis checkout_process.php: L124 ajouter:

    //DOF
      if(substr($shipping['id'],0,12)=="mondialrelay")
      {
        tep_db_query("update " . TABLE_ORDERS . " set shipping_pointrelay = '" . substr($shipping['id'],-8) . "' where  orders_id = '".$insert_id."'");
      }
    //EOF
  
  entre:
      123 $insert_id = tep_db_insert_id();
  et:
      124  for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
      125  $sql_data_array = array('orders_id' => $insert_id,
      126                          'title' => $order_totals[$i]['title'],
      127                          'text' => $order_totals[$i]['text'],
      128                          'value' => $order_totals[$i]['value'],
      129                          'class' => $order_totals[$i]['code'],
      130                          'sort_order' => $order_totals[$i]['sort_order']);


Le champ shipping_pointrelay n'est pas renseigné dans la base !! blink.gif

Je m'aperçois d'un second gag: le choix du point relais ne fonctionne apparemment pas: je reteste sur codes propres et vous tiens au courant.
Chti poupon

Écrit par : chrysalide 4 Jun 2011, 08:07

Citation (chti_poupon @ 3 Jun 2011, 22:03) *
Bonjour !
GAG ! wub.gif
dans l'install.txt du zip il manque:


tu as abusé de la blédine ou quoi ?

je viens de verifier c'est le premier fichier qui est demandé de modifier

Citation (chti_poupon @ 3 Jun 2011, 22:03) *
Le champ shipping_pointrelay n'est pas renseigné dans la base !! blink.gif

Je m'aperçois d'un second gag: le choix du point relais ne fonctionne apparemment pas: je reteste sur codes propres et vous tiens au courant.
Chti poupon


blink.gif euh le champ est créé lors de l'install du module et l'insertion dans celui-ci est conditionnée.

j'ai refait un test sur ma rc1 toute fraiche et cela fonctionne très bien..........

Écrit par : chti_poupon 10 Jun 2011, 18:46

Bonjour !
Pour l'affichage dans checkout_confirmation.php du nom correct du relais choisi (et non du premier de la liste - systématiquement) il semble bien que cela soit dû à une structure particulière (1 module et 10 méthodes == mondial realy et 10 relais ) alors que de coutume, il y a 1 méthode par module (colissimoexpert recommandéR1 ou colissimoaccess normal)
En conséquence de quoi, il faut modifier checkout_shipping.php (Lignes 117 à 130 incluses MS2.3.1) comme suit :

Code
          if (isset($quote['error'])) {
               tep_session_unregister('shipping');
             } else {
           for ($i=0, $n=sizeof($quote[0]['methods']); $i<$n; $i++) {
  
                    if ( (isset($quote[0]['methods'][$i]['title'])) && (isset($quote[0]['methods'][$i]['cost']) && ($quote[0]['methods'][$i]['id']==$method ||$shipping == 'free_free'))) {
                  $shipping = array('id' => $shipping,
                                     'title' => (($free_shipping == true) ?  $quote[0]['methods'][$i]['title'] : $quote[0]['module'] . ' (' . $quote[0]['methods'][$i]['title'] . ')'),
                                     'cost' => $quote[0]['methods'][$i]['cost']);
    
                   tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
                 }
               }
             }

Testé sur MS2.3.1 et MS 2.2 fraîches avec le module mondialrelay et les modules flat, item, table et zone en place. Tous fonctionnent .
Sur ma MS2.2 complète, çà va aussi.
Merci de tester avec MS2.3 et colissimo et de nous en faire part, (Colissimo n'est pas installé en MS2.3
chez moi.)
Le cas des colis de + de 20 kg n'a pas été testé dans cette configuration
Chti poupon

Edition pour correction du code (cas free_free)

Écrit par : chti_poupon 11 Jun 2011, 11:16

Bonjour,
Autres problèmes :
PRIMO :
Avec le lien "on click" intégré, la variable title de $methods dépasse 255 caractères et les informations sur la page confirmation, facture, courriel, historique... sont tronquées et le lien vers le détail du relais est inerte - et il manque une parenthèse.
MODIFICATION BASE DE DONNÉES : TABLE order_total :passer à 511 la taille du champ title par structure mysql c'est le plus simple sinon SQL:

Code
ALTER TABLE `orders_total` CHANGE `title` `title` VARCHAR(511) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL

SECONDO :
L'affichage du relais choisi peut être utile au client, même dans le BL où il n'apparaît pas.
Modifier comme suit vers la fin de packingslip.php :
Code
?>
       <tr>
         <td align="left" colspan="8"><table border="0" cellspacing="0" cellpadding="10">
<?php
   for ($i = 0, $n = sizeof($order->totals); $i < $n; $i++) {
     if ( preg_match('/mondialrelay/',$order->totals[$i]['title']) ){
         echo '          <tr>' . "\n" .
                           '<td align="left" class="smallText"><strong>'.ENTRY_SHIPPING_RELAY.'</strong> </td>' . "\n" .
              '            <td align="left" class="smallText">' . $order->totals[$i]['title'] . '</td>' . "\n" .
              '          </tr>' . "\n";
     }
   }
?>
     </table></td>
   </tr>
</table>
<!-- body_text_eof //-->


Avec ajouté à la fin, dans catalog/admin/includes/languages/french/packingslip.php:
Code
define('ENTRY_SHIPPING_RELAY', 'Enlèvement au relais:');


Chti poupon

Écrit par : chti_poupon 15 Jun 2011, 17:28

Bonjour !
ATTENTION, le code donné plus haut pour checkout_shipping.php est modifié. Il y avait un conflit si le port gratuit par order_total est activé et même MR désactivé caron ne passe plus par la redirection vers checkout_payment.
J'ai donc modifié le "if" comme suit :

Code
                   if ( (isset($quote[0]['methods'][$i]['title'])) && (isset($quote[0]['methods'][$i]['cost']) && ($quote[0]['methods'][$i]['id']==$method ||$shipping == 'free_free'))) {

Chti poupon

Écrit par : Snickers 16 Jun 2011, 17:50

Salut all,

Je viens d'installer la contrib donnée ici (ms2) mais malheureusement rien d'affiché coté client dans checkout_shipping.php (local)

Avant j'avais installé la version officielle donnée par MR, peut il y avoir un conflit ?

Je suis en sur un php5.3

.... si vous avez des pistes je suis prenneur

Écrit par : chti_poupon 16 Jun 2011, 20:17

Bonjour
Utilises-tu MS2.2 ou MS2.3
La contrib donnée ici est pour MS2.2.
Par rapport à celle pour MS2.3, :
la modif pour catalog/admin/customers.php est tout à fait différente
Celle de admin/mondialrelaisadmin.php est facile à remplacer (structure tableaux, etc...)
pour catalog/includes/modules/shipping/mondialrelay.php, il y a peu de différences, mais certaines versions de MS2.2 ne gèrent pas true et false de la même façon et il est bon d'avoir

Code
  $this->enabled = ((MODULE_SHIPPING_MONDIAL_RELAY_STATUS == 'True') ? true : false);
dans la fonction mondialrelay de cette classe si l'on souhaite activer/désactiver correctement ce mode d'expédition depuis l'admin.
Par ailleurs, il ne t'aura pas échappé à la lecture des différents messages,
Refais bien le tour de ton installation et tiens compte des échangess: une version nouvelle est à paraître...
Chti poupon

Écrit par : Snickers 17 Jun 2011, 06:20

Bonjour,
merci pour ta réponse...

Je suis en MS2....... "osCommerce 2.2-MS2"

J'avais noté pour le site de test... j'ai mis mes codes

Citation
•que si ton adresse n'est pas bien renseignée (la mention civilité, nom, ville etc... concerne, c'est clair, l'expéditeur et non le client) ou les codes mauvais, ou encore le site test en repos, il s'affiche (à peu près ) "votre adresse ne doit pas être correcte"


J'ai par contre laissé l adresse par défaut.... mais rien d'affiché quand meme blink.gif
(c'est comme si le module n'était pas activé)

Je vais faire à nouveau l'install.....
Est-ce que je peux exclure que php5.3 puisse être en cause ?!

Écrit par : chti_poupon 17 Jun 2011, 08:35

Bonjour Snickers,

Citation
Est-ce que je peux exclure que php5.3 puisse être en cause ?!

Retour d'expérience personnelle: Quand mon hébergeur est passé de php 4 à php 5, j'ai chargé en local eazy-php 5.3: Ce qui marchait ne marchait plus (en local s'entend). J'ai donc chargé eazy-php 5.2.10 et çà remarchait normalement (sauf les fonctions "deprecated" <? sans php et autres $toto sans $_GET...)
Je crains que tu n'aies mis le doigt dessus.
Chti poupon

Écrit par : Snickers 17 Jun 2011, 09:35

Bon selon moi c'est compatible avec 5.3
Je viens de faire la bascule vers php5.2.6 et le module ne se montre toujours pas...

Dans renseignements serveur j'ai bien Soap d'indiqué.....
Pour ce faire sous easyphp2.0 j'ai décommenté la ligne extension=php_soap.dll (php.ini)

Suis-je dans le vrai ?! Ou ai-je oublié quelque chose ?
(avant je ne l'avais pas d'indiqué dans information serveur)

D'avance merci biggrin.gif

Écrit par : Snickers 17 Jun 2011, 12:45

Bon je viens d'install un OsC de base 2.2 MS2 (en anglais) et j'ai fait l'install dessus.... toujours le même problème :
En local je ne vois pas le module coté client sur la page checkout_shipping
.... je regarde du coté de soap

Edit : bha non soap c'est pareil en local que sur mon serveur, je pense donc que c'est juste

Citation
Soap Client enabled
Soap Server enabled

Directive Local Value Master Value
soap.wsdl_cache 1 1
soap.wsdl_cache_dir /tmp /tmp
soap.wsdl_cache_enabled 1 1
soap.wsdl_cache_limit 5 5
soap.wsdl_cache_ttl 86400 86400

Écrit par : chti_poupon 17 Jun 2011, 22:07

Bonjour,
mon php.ini local contient ces lignes:

Code
[soap]
; Enables or disables WSDL caching feature.
soap.wsdl_cache_enabled=1
; Sets the directory name where SOAP extension will put cache files.
soap.wsdl_cache_dir="/tmp"
; (time to live) Sets the number of second while cached file will be used
; instead of original one.
soap.wsdl_cache_ttl=86400

; Local Variables:
; tab-width: 4
; End:

et çà fonctionne
En distant, les renseignements sur le serveur (dans l'admin) me donnent soap actif

Si cette observation peut être utile, car je ne suis pas bien féru dans ce domaine.
Chti poupon

Écrit par : chti_poupon 18 Jun 2011, 21:36

Citation (Gnidhal @ 28 Mar 2010, 10:35) *
Oui c'est possible mais il faut coder directement dans le module de shipping que tu utilises.
En effet, le système de frais de port gratuits fonctionne sur la globalité de la commande dans TOUS les cas, il désactive les modules de livraison si le montant dépasse celui fixé dans l'admin.

Tu peux modifier cela directement dans le module de livraison et alors désactiver la livraison gratuite car c'est le module qui va gérer cela.
exemple dans ton module, les modifs doivent être apportées à la method "quote" (fonction de la classe function quote() )
dans checkout_shipping.php tu commences par désactiver l'activation du port gratuit en cas de dépassement de la somme, on reportera cette option dans le module :
Code
  if ( defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') ) {
     $pass = false;

     switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
       case 'national':
         if ($order->delivery['country_id'] == STORE_COUNTRY) {
           $pass = true;
         }
         break;
       case 'international':
         if ($order->delivery['country_id'] != STORE_COUNTRY) {
           $pass = true;
         }
         break;
       case 'both':
         $pass = true;
         break;
     }

     $free_shipping = false;
     if ( ($pass == true) && ($order->info['total'] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) {
       $free_shipping = true;

       include(DIR_WS_LANGUAGES . $language . '/modules/order_total/ot_shipping.php');
     }
   } else {
     $free_shipping = false;
   }
à remplacer par :
Code
$free_shipping = false;
tout simplement.

Dans ton module tu peux alors reprendre cette option de port gratuit, ce qui ne change rien à son usage, c'est toujours le même paramètre qui est pris en compte pour détecter le port gratuit : MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER
Donc dans la methode quote (function quote($method = '')) de ton module de livraison tu vas ajouter :
Code
// ajout livraison gratuite
        
         if ($cart->show_total() >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER){
                $this->quotes['methods'][] = array('id' => $this->code,
                   'title' =>  'Livraison gratuite à partir de '.MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER.'&euro;',
                   'cost' => 0);
               return $this->quotes;
         }
// Fin ajout livraison gratuite*/
après la portion qui commence par $this->quotes = array('id' => $this->code,.... (il faut aller après le )); de cette portion hein ? )
il faudra aussi vérifier les les variables $cart et $shipping_weight sont globalisées dans cette méthode : global $order, $cart, $shipping_weight;

Après tu peux faire ce que tu veux dans cette méthode car c'est elle qui va déterminer le montant du port en fonction de ce que tu veux :
Utilises $cart->show_total() pour connaitre le montant total de la commande par exemple
ou $shipping_weight pour connaitre le poids total de la commande et active ton tarif en fonction de ces variables


smile.gif Bonjour,
L'objectif est multiple:
  1. Afficher un franco différent par mode de livraison : les clients sont rebutés par les frais de livraison et mondial relais n'a pas les tarifs de colissimo, donc désactiver dans catalog/checkout_shipping.php pour l'empêcher d'écraser l'affichage : la méthode de Gnidhal ci-dessus est rapide, élégante et efficace en évitant un remaniement complet de ce fichier
  2. Afficher chaque mode de livraison possible, avec tous les renseignements, mais le prix à zéro quand le franco du mode de livraison considéré est atteint:
    1. modifier catalog/includes/modules/order_total/ot_shipping.php dans sa fonction process comme suit :
      Code
              if ( ($pass == true) && ( ($order->info['total'] - $order->info['shipping_cost']) >= (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER )) ) {
      //          $order->info['shipping_method'] = $this->title;
                $order->info['total'] -= $order->info['shipping_cost'];
                $order->info['shipping_cost'] = 0;
              }
            }
      Une seule ligne à commenter pour dire le quoi et le comment de l'expédition, car gratuit, çà se voit, le prix est à zéro. Bien sûr le module ot_shipping reste actif pour contrôler montant général et affichage du prix du port.
    2. Dans le module mondialrelay.php, franco et boîtes multiples ont été précisées plus haut, selon la méthode Gnidhal déjà citée
    3. Dans le module colissimo.php, c'est dans la méthode _add_method(..) qu'il faut modifier ainsi:
      Code
          $shipping += $frais;
      // ajout livraison gratuite
              if ($cart->show_total() >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER){
                $shipping=0;
              }
      // Fin ajout livraison gratuite

          /* Delais */
      Ne pas omettre d'ajouter $cart dans le global en début de fonction
    4. pour mieux éclairer le client, j'ai explicité les différents niveaux de gratuité dans catalog/includes/languages/frence/chechout_shipping.php avec :
      Code
      define('TEXT_CHOOSE_SHIPPING_METHOD', '<p>Veuillez choisir la méthode d\'expédition que vous preférez utiliser pour cette commande.</p><p><b>Rappel :</b></p><p>Est livrée <b>sans frais</b> toute Commande d\'un <b>montant supérieur à</b> :</p><ol><li><u><b>'.MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER.' &euro; TTC</b></u> en marchandises pour un service <b>à domicile.</b></li><li><u><b>'.MODULE_SHIPPING_MONDIAL_RELAY_FREE_SHIPPING_OVER.' &euro; TTC</b></u> en marchandises pour un service <b>en point relais de proximité.</b></li></ol>');
Au final, le client se voit proposer les différents modes de livraison: colissimos, enlèvement en boutique, enlèvement en relais et choix du relais, livraison de proximité, avec des prix dépendant des conditions propres à chaque module et 0 si un seuil est franchi.
Dans checkout_confirmation, la méthode précise de livraison est explicitée.

Chti poupon
PS Dans mes essais, j'ai introduit le client qui a mis "France Métropolitaine" twisted.gif . La solution consistant à supprimer ce code de la liste n'est pas générale, nos amis de la Réunion, par exemple, ne nous contrediront pas. MAIS Mondialrelay fait "tilt" et c'est chez-eux: leur code ingurgite les données client brutes qu'il faudrait filtrer:
Comme la plupart des français (y io blush.gif ) sont "un peu confused.gif??: " mal à l'aise sur ce distingo il faut résoudre cette question:
arrow.gif Qui a pondu (va pondre) le code permettant, d'après le code postal, de sauvegarder la dénomination correcte que le client ait mis l'une ou l'autre ?

Écrit par : dark perles 21 Jun 2011, 10:52

Citation (chrysalide @ 27 May 2011, 13:52) *
je suis en train d'ajouter un truc pas négligeable.

la possibilité d'indiquer "manuellement" le poids du colis avant la création du numéro de tracking afin d'envoyer le poids réel du colis et non le calculé.

Une erreur dans la calcul du poids dans Oscommerce ou si vous avec la main lourde sur le scotch ou les bulles et hop le poids "envoyé" a MR lors de la création du n° de tracking est faux.
Bonjour,

J'attends avant de faire l'installation du module que cette modification soit mise en place.
Car je trouve cela très important que le colis correspond bien à son poids réel.

Pas de nouvelle de chrysalide ?

Écrit par : chrysalide 21 Jun 2011, 11:21

Salut Dark Perles,

Chrysalide, a du mal a prendre le temps en ce moment car il plane à 10 000 mètres d'altitude a cause de sa charge de taf mais il ne désespère pas de trouver le temps pour mettre en place les modifs déjà décrites dans ses précédents posts. biggrin.gif

bon je retourne bosser........ wacko.gif

Écrit par : techtrad 29 Jun 2011, 16:31

Bon et bien pour ma part j'ai abandonné l'installation..

Une vraie usine à gaz. J'ai fait appel à un pro (telede pour ne pas le citer) et bien je ne regrette pas !!

En 10 jours l'installation est finalisée et adaptée à mon site (une version creload). Ca marche nickel et l'install personnalisée selon mes désirs.!!

Bref je me rend compte que passer des heures et des heures à essayer de modifier un code bancal à la base c'est du temps et de l'argent perdu.

Bon courage à tous pour votre install...


Écrit par : chrysalide 29 Jun 2011, 21:23

Citation (techtrad @ 29 Jun 2011, 16:31) *
Bon et bien pour ma part j'ai abandonné l'installation..

Une vraie usine à gaz. J'ai fait appel à un pro (telede pour ne pas le citer) et bien je ne regrette pas !!

En 10 jours l'installation est finalisée et adaptée à mon site (une version creload). Ca marche nickel et l'install personnalisée selon mes désirs.!!

Bref je me rend compte que passer des heures et des heures à essayer de modifier un code bancal à la base c'est du temps et de l'argent perdu.

Bon courage à tous pour votre install...


c'est pas plutôt le fait que tu sois sous creload qui est bancal ........ !

Que tu es fait appel a un pro comme telede je suis convaincu que tu n'as pas été deçu, il faut savoir passer la main quand on ne sait pas faire mais n'incrimines pas la contrib stp.

cette contrib est prévu pour une ms2 rc1 de base et absolument pas pour une creload (qui n'est plus supportée sur ce forum depuis des années) et j'ai pas mal de retour positif sur son installation.

il reste quelques correctifs a apporter mais celle-ci est fonctionnelles.

Écrit par : planetaire 11 Jul 2011, 16:24

Bonjour,

j'ai pu installer la contribution sans problème, mais je suis maintenant confronté au problème d'encodage évoqué par Chrysalide dans le message #125

Code
Fatal error: Uncaught SoapFault exception
SOAP-ERROR: Encoding: string '22 place de la R\xe9publique' is not a valid utf-8 string in /var/www/vhosts/test.fr/httpdocs/admin/mondialrelayadmin.php:147

Il y a d'après mes recherches 2 approches :

1 - changer l'encoding coté déclaration

$client = new SoapClient(WEB_SERVICE,array('encoding','iso-8859-1'));

2 - Encoder les chaînes avant l'envoi par un bataillon de utf8encoding()


quelqu'un a t'il déjà testé une de ces solutions, ou en a trouvé une autre ?

Écrit par : telede 11 Jul 2011, 17:36

Citation (techtrad @ 29 Jun 2011, 16:31) *
Bref je me rend compte que passer des heures et des heures à essayer de modifier un code bancal à la base c'est du temps et de l'argent perdu.

Citation (chrysalide @ 29 Jun 2011, 21:23) *
il faut savoir passer la main quand on ne sait pas faire mais n'incrimines pas la contrib stp.

Calmez vous, il n'y a ni tort ni raison ;
- Il est forcément logique et convenu qu'une solution commerciale est plus élaborée qu'une solution free, in extenso prenons l'exemple du modèle économique du freeware ou shareware. In stricto sensus, l'OpenSource sinifie ouvert et non pas gratuit.
- Le rendu énergétique : Il est évident que quelqu'un qui développe durant 100 heures une solution largement ciblée est plus efficace que 100 personnes qui développent 1 heure pour leur cas individuel.
- Chrysalide ; tu n'es pas auteur de la contribution initiale tu n'a fait que l'améliorer. La personne à l'origine de la contribution a été rémunérée, et celle d'avant aussi. Il ne faut donc pas te sentir visé par des remarques qui ne te concernent pas, bien au contraire, il est plus remarquable d'améliorer volontairement le quotidien que de se faire à celui qui est imposé par une orientation commerciale.

Donc techtrad a raison, tant mieux pour moi smile.gif
Et Chrysalide aussi, tant mieux pour moi aussi tongue.gif



Citation (planetaire @ 11 Jul 2011, 16:24) *
j'ai pu installé la contribution sans problème, mais je suis maintenant confronté au problème d'encodage évoqué par Chrysalide dans le message #125

Tant mieux pour toi, tant pis pour moi biggrin.gif

Une adresse de livraison, ca s'écrit en majuscule sauf en Chine et au Japon (!), donc ne te gêne pas et utilise le filtre suivant :
Code
          $text = htmlentities($text);
          $text = preg_replace( array('/&szlig;/','/&(..)lig;/','/&([aouAOU])uml;/','/&(.)[^;]*;/'),array('ss',"$1","$1".'e',"$1"),  $text);
          $text = str_replace(array('_', '-', '*', '+')), '/', $text); // a affiner
          $text = preg_replace('/[\x00-\x1F\x21-\x2E\x3A-\x3F\x5B-\x60\x7B-\x7F]/', '', $text);
          $text = strtoupper(trim($text));

C'est radical !

Écrit par : mesly 11 Aug 2011, 15:37

Bonjour,
je viens de charger la version mour MS2 et suis sous php 4.4.9

Je ne sais pas pour le coup malgré la lecture complete de ce post si cette version peut etre installée sur mes site.
Ni meme comment faire pour changer de version pour un php 5 et plus
je suis chez OHV et ne voit nulle part parler du truc soap sur les infos serveur.
Biensur chez MR tout le monde est en vacance et ne peux m'aider

Je plante

Écrit par : chrysalide 11 Aug 2011, 17:23

1 - c'est surtout pas MR qui va t'apporter le moindre support sur cette contrib c'est pas leur job.

2 - avant toute chose pour utiliser cette contrib tu as bien compris qu'il faut être sous PHP 5.

donc obligatoirement avant de penser a cette contrib il faut migrer toute la boutique sous PHP 5.

Chez OVH tu peux basculer sous PHP 5.2 en ajoutant la ligne suivante a ton .htaccess à la racine de ta boutique

Code
SetEnv PHP_VER 5



Par contre en fonction de la version exacte de ta boutique tu vas devoir remplacer certaines fonctions php 4 dépréciées dans php5.

Également vérifier que des contribs n'utilisent pas aussi des fonctions dépréciées.

Après tu pourras envisager d'installer cette contrib.


Écrit par : mesly 11 Aug 2011, 17:35

merci
ben je pense que c'est pas gagné pour moi là
ma version osc est ms2 mais laquelle that is the question car la boutique est installéee en fonctionnement depuis pas mal d'années 2007 si mes souvenirs sont bons pour cette version...
... apparemment version ms2 mise à jour octobre 2006
et je ne vois pas comment m'y retrouver avec toutes les contributions qui sont en place actuellement, ni meme comment faire les modifs, je ne suis pas assez caléee en ce domaine

Écrit par : mesly 12 Aug 2011, 09:12

Jze viens de faire l'essais avec cette insertion dans mon .htaccess sur un de mes sites et apparemment tout semble fonctionner
Quelles seraient les contribution avec les quelles je peux avoir des bugs ? sinon comment les identifier ?

Écrit par : Snickers 24 Aug 2011, 08:58

Citation
Citation (mesly @ 12 Aug 2011, 10:12) *

Jze viens de faire l'essais avec cette insertion dans mon .htaccess sur un de mes sites et apparemment tout semble fonctionner
Quelles seraient les contribution avec les quelles je peux avoir des bugs ? sinon comment les identifier ?


Tu as une fonction déprécié, avec une message d'alerte :

Code
Deprecated: Function split() is deprecated........ par exemple

Mais cela ne devrait pas empecher les scripts de marcher

Bon sinon les amis je déséspère..... je suis toujours sur mon instal :

Serveur HTTP : Apache/2.2.13 (Win32) PHP/5.3.0
Version PHP : 5.3.0 (Zend : 2.3.0)
osCommerce 2.2-MS2
Soap Client enabled
Soap Server enabled

J'ai testé, re-testé, installé, désinstallé, mis les fichiers originaux de la ms2...............
Rien y fait je n'arrive pas à avoir le moindre affichage du module, rien... nada... même pas le titre

Du coup je décortique tout :

Sur le ficheir d'install vous mentionnez
Citation
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
INSTALLATION
--------------------
- Copier les fichiers dans leur répertoires respectifs
- Modifier les codes fichiers selon les indications données plus bas

- Installer le module (Mondialrelay) via l'administration : Modules -> Expéditions
- Activer le module dans l'administration de votre boutique

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

Que signifie "Activer le module dans l'administration de votre boutique" ? j'ai bien installé le module via modules->Expé..... mais l'activer ?! où ?!

Écrit par : chrysalide 24 Aug 2011, 09:18

Quand tu vas dans modules ->expeditions tu selectionnes le module en question, tu cliques sur "éditer" -> le premier paramètre est "Activer ce mode de livraison
Voulez-vous utiliser ce mode de livraison?" avec comme choix oui/non. l'idée c'est de le mettre sur "oui"

Écrit par : Snickers 25 Aug 2011, 06:15

ok......
Bon vu que le module est activé lors de l'install (logique) je pense qu'il y a une ligne de trop dans la doc wink.gif

.... mais du coup mon prob est encore là wub.gif ..... que la force soit avec moi XD

Écrit par : djstefx 13 Sep 2011, 13:27

Bonjour à tous
j'ai bien installer MR et apporté quelques modifications coté admin.
Le module fonctionne bien mais lorsque l'on fait le choix du point relais et en suite, suivant, je me retrouve avec une erreur de fonctions general :
Warning: Cannot modify header information - headers already sent by (output started at /home/.../www/includes/languages/french/modules/shipping/mondialrelay.php:1) in /home/../www/includes/functions/general.php on line 33
je tourne en rond depuis plusieurs semaine !!!
je précise, je ne suis pas sous la nouvelle version de OS Com

Autre chose aussi, lorsque j’installe le module MR, le signe € disparait et j'ai un '?' a la place ainsi que tout les accents... blink.gif


Écrit par : sanjb 14 Sep 2011, 10:57

Bonjour a toutes et a tous!
j'ai installé le module sur mon site.
Par contre je me demandais comment faire pour que l'adresse du point relais soit l'adresse d'expédition du client et non l'adresse du client.
Je m'explique: lorsque l'on passe une commande dans le champ adresse d'expédition, j'ai toujours l'adresse du client et non pas l'adresse du point relais.
Savez-vous comment corriger cela?

de plus, c'est toujours le 1er point relais qui est sélectionné et non celui que je coche. Comment faire pour corriger cela? Avez-vous des pistes?

Merci!

Écrit par : chti_poupon 17 Sep 2011, 19:04

Citation (chti_poupon @ 10 Jun 2011, 18:46) *
Bonjour !
Pour l'affichage dans checkout_confirmation.php du nom correct du relais choisi (et non du premier de la liste - systématiquement) il semble bien que cela soit dû à une structure particulière (1 module et 10 méthodes == mondial realy et 10 relais ) alors que de coutume, il y a 1 méthode par module (colissimoexpert recommandéR1 ou colissimoaccess normal)
En conséquence de quoi, il faut modifier checkout_shipping.php (Lignes 117 à 130 incluses MS2.3.1) comme suit :
Code
          if (isset($quote['error'])) {
                tep_session_unregister('shipping');
              } else {
            for ($i=0, $n=sizeof($quote[0]['methods']); $i<$n; $i++) {
    
                     if ( (isset($quote[0]['methods'][$i]['title'])) && (isset($quote[0]['methods'][$i]['cost']) && ($quote[0]['methods'][$i]['id']==$method ||$shipping == 'free_free'))) {
                   $shipping = array('id' => $shipping,
                                      'title' => (($free_shipping == true) ?  $quote[0]['methods'][$i]['title'] : $quote[0]['module'] . ' (' . $quote[0]['methods'][$i]['title'] . ')'),
                                      'cost' => $quote[0]['methods'][$i]['cost']);
      
                    tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
                  }
                }
              }

Testé sur MS2.3.1 et MS 2.2 fraîches avec le module mondialrelay et les modules flat, item, table et zone en place. Tous fonctionnent .
Sur ma MS2.2 complète, çà va aussi.
Merci de tester avec MS2.3 et colissimo et de nous en faire part, (Colissimo n'est pas installé en MS2.3
chez moi.)
Le cas des colis de + de 20 kg n'a pas été testé dans cette configuration
Chti poupon

Edition pour correction du code (cas free_free)


C'était plus haut.
Sinon, l'adresse du point relais apparaît dans le coût de la livraison.
L'adresse d'expédition peut servir à relancer si le destinataire ne va pas chercher son colis.
Enfin, à toi de voir !
Chti poupon

Écrit par : riziere 19 Sep 2011, 10:16

Bonjour !

moi j'ai un souci pour faire fonctionner Mondial Relay.

J'ai téléchargé la dernière contrib en ligne du moi de mai. J'ai fais l'install sans soucis sur un clone fonctionnel de ma boutique (une version 2.2 en php5 chez OVH) mais, malheureusement, bien que configuré, Mondial Relay n'apparaît pas côté client.

J'ai pourtant tous les autres modules Chronopost, Colissimo...

Avez-vous une idée car là je sèche ?!

Merci

Écrit par : sanjb 19 Sep 2011, 14:05

Merci chti_poupon.
J'avais fait la modif mais en oubliant en bout de code smile.gif blink.gif

riziere, as tu bien paramétré le module sur la partie admin? Il faut une vraie adresse. As tu renseigné également les clefs?

Bonne journée!

Écrit par : sanjb 19 Sep 2011, 15:25

Désolé pour mon niveau mais j'ai une question:
lorsque l'on passe une commande, doit elle apparaitre dans admin/mondialrelayadmin.php?
Si oui, je dois manquer une info car je n'ai rien sur cette page...

Merci de vos éclaircissements!

Écrit par : chti_poupon 19 Sep 2011, 19:05

Bonjour
Dans catalog/admin/modules/expéditions/mondialrelay, on règle les paramètres de fonctionnement
Dans catalog/admin/clients-commandes/Geqstion Mondial relat on génère les étiquettes des commandes et seulement après, si tout a bien été, on les imprime (téléchargement d'un pdf pour impression).
Bons essais
Chti poupon

Écrit par : chrysalide 19 Sep 2011, 21:25

Salut sanjb,

oui ta commande doit apparaitre dans mondialrelayadmin.

avec le numero de relai choisi par le client.

si ce n'est pas le cas, verifie bien que tu as modifié checkout_process pour l'injection du numero MR dans la table orders


EDIT :

il y a une erreur dans la doc :

il est écrit :

Citation
- Dans catalog/checkout_process.php :

Rechercher :

$insert_id = tep_db_insert_id();

Ajouter juste après :

for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$sql_data_array = array('orders_id' => $insert_id,
'title' => $order_totals[$i]['title'],
'value' => $order_totals[$i]['value'],
'class' => $order_totals[$i]['code'],
'sort_order' => $order_totals[$i]['sort_order']);


alors que l'étape en question est :

Citation
- Dans catalog/checkout_process.php :

Rechercher :

$insert_id = tep_db_insert_id();

Ajouter juste après :

//Start Mondial Relay
if(substr($shipping['id'],0,12)=="mondialrelay")
{
tep_db_query("update " . TABLE_ORDERS . " set shipping_pointrelay = '" . substr($shipping['id'],-cool.gif . "' where orders_id = '".$insert_id."'");
}
//End Mondial Relay

Écrit par : chrysalide 19 Sep 2011, 21:26

je viens de la corriger et j'ai amené d'autres modifs.

Citation
Corrections et modifications :

- Correction de la procédure d'installation
- Ajout d'une fonction de suppression des éventuels accents dans les données clients transmises lors des requêtes sur le Web Service.
- Ajout du poids total de la commande aux données transmises lors de la requête sur le Web service pour la proposition des points relais au client afin que ceux-ci ne lui soient proposés que si le poids de commande ne dépasse les limites imposées par MR.


http://addons.oscommerce.com/info/8022

Écrit par : riziere 20 Sep 2011, 08:20

Citation (sanjb @ 19 Sep 2011, 15:05) *
riziere, as tu bien paramétré le module sur la partie admin? Il faut une vraie adresse. As tu renseigné également les clefs?


Oui j'ai activé et paramétré le module. J'ai renseigné notre adresse mais pas les clés car nous ne les avons pas encore.

J'ai donc laissé les paramètres qui, je crois, correspondent à un serveur test. Est-ce un élément bloquant ?

PS, je viens d'appliquer la dernière mise à jour de Chrysalide.

Écrit par : riziere 20 Sep 2011, 08:37

Selon http://www.mondialrelay.fr/espaces/ecommercant.aspx Mondial Relay parle d'un module compatible OsCommerce. Le connaissez vous ? L'avez-vous déjà expérimenté ?

http://imageshack.us/photo/my-images/692/mondialrelay.jpg/

Écrit par : riziere 20 Sep 2011, 09:16

Pour la petite histoire, je viens d'essayer la http://addons.oscommerce.com/info/7927 et elle fonctionne parfaitement. Elle a juste pour défaut d'avoir changé les caractères spéciaux dans la boutique comme le signe € et d'est moche. Sinon elle semble fonctionnelle.

Écrit par : riziere 20 Sep 2011, 09:16

Pour la petite histoire, je viens d'essayer la http://addons.oscommerce.com/info/7927 et elle fonctionne parfaitement. Elle a juste pour défaut d'avoir changé les caractères spéciaux dans la boutique comme le signe € et d'est moche. Sinon elle semble fonctionnelle.

Écrit par : chrysalide 20 Sep 2011, 09:51

Riziere, tu es sous 2.3 ?

Écrit par : chrysalide 20 Sep 2011, 09:53

Citation (riziere @ 20 Sep 2011, 08:37) *
Selon http://www.mondialrelay.fr/espaces/ecommercant.aspx Mondial Relay parle d'un module compatible OsCommerce. Le connaissez vous ? L'avez-vous déjà expérimenté ?



il est loin d'être fonctionnel en l'état !

pour la version de CG consulting est pour la 2.3, la version pour le 2.2 est basée dessus et ajoute deux ou trois trucs importants comme la gestion de la TVA, etc.

Écrit par : sanjb 20 Sep 2011, 10:58

Citation (chrysalide @ 19 Sep 2011, 21:26) *
je viens de la corriger et j'ai amené d'autres modifs.

Citation
Corrections et modifications :

- Correction de la procédure d'installation
- Ajout d'une fonction de suppression des éventuels accents dans les données clients transmises lors des requêtes sur le Web Service.
- Ajout du poids total de la commande aux données transmises lors de la requête sur le Web service pour la proposition des points relais au client afin que ceux-ci ne lui soient proposés que si le poids de commande ne dépasse les limites imposées par MR.


http://addons.oscommerce.com/info/8022

Merci chrysalide!
Par contre j'ai toujours rien dans la page mondialrelayadmin.php
Je suis allé voir dans la base de données et en fait les données ne sont même pas stockées dans la base.
Voici le code que j'ai:
Code
  tep_db_perform(TABLE_ORDERS, $sql_data_array);

  $insert_id = tep_db_insert_id();
      //Start Mondial Relay
      if(substr($shipping['id'],0,12)=="mondialrelay")
      {
        tep_db_query("update " . TABLE_ORDERS . " set shipping_pointrelay = '" . substr($shipping['id'],-8) . "' where  orders_id = '".$insert_id."'");
      }
    //End Mondial Relay
  for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
    $sql_data_array = array('orders_id' => $insert_id,
                            'title' => $order_totals[$i]['title'],
                            'text' => $order_totals[$i]['text'],
                            'value' => $order_totals[$i]['value'],
                            'class' => $order_totals[$i]['code'],
                            'sort_order' => $order_totals[$i]['sort_order']);
    tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
  }


Peux tu m'aider car là je sèche... Merci!

Écrit par : chrysalide 20 Sep 2011, 14:21

L'activation du module créait bien les deux champs shipping_pointrelay et shipping_traking ?

Lors de tes tests tu utilises quoi comme mode de paiement ?

Places ça avant l'appel du footer dans checkout_confirmation.php

Code
echo $shipping['id'];


et donnes moi la valeur de sortie normalement tu devrais avoir un truc du genre : mondialrelay_xxxxxxFR

Écrit par : sanjb 20 Sep 2011, 16:19

Oui, les champs dans la base sont bien créés.
Comme paiement j'utilise le paiement par chèque et dans checkout_confirmation.php j'ai le texte "Array" qui apparait mais pas de mondialrelay_xxxxxxFR.
Snif...
Merci pour ton aide!

Écrit par : chrysalide 20 Sep 2011, 17:21

ok on progresse !

tu vas regarder le code source de la page html générée (dans ton navigateur).

regardes sous quelle forme sort la valeur 'value' des boutons radio te permettant de sélectionner un mode de livraison de ton choix.

pour une expédition forfaitaire tu as :

<input type="radio" value="flat_flat" name="shipping">

pour un relai tu as "normalement":

<input type="radio" checked="" value="mondialrelay_xxxxxxFR" name="shipping">

tu as quoi pour les relais ?


Écrit par : chrysalide 20 Sep 2011, 17:27

Dans checkout_shipping.php, tu as la ligne qui génère le bouton radio
exemple ligne 339 (MS2 rc1) :

Code
<td class="main" align="right"><?php echo tep_draw_radio_field('shipping', $quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'], $checked); ?></td>


et toi tu as quoi ?


Écrit par : sanjb 21 Sep 2011, 08:23

Citation (chrysalide @ 20 Sep 2011, 17:27) *
Dans checkout_shipping.php, tu as la ligne qui génère le bouton radio
exemple ligne 339 (MS2 rc1) :

Code
<td class="main" align="right"><?php echo tep_draw_radio_field('shipping', $quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'], $checked); ?></td>


et toi tu as quoi ?

J'ai la même chose que toi.
Pour l'input j'ai:
Code
<input type="radio" value="colissimo_colissimo" name="shipping">

pour colissimo par exemple et j'ai
Code
<input type="radio" checked="" value="mondialrelay_010316FR" name="shipping">

pour le 1er mondial relay.
Pour les suivant j'ai le même code, seuls les N° du champ "value" changent.

Écrit par : Snickers 22 Sep 2011, 07:31

Citation
EDIT :

il y a une erreur dans la doc :

il est écrit :


Citation

- Dans catalog/checkout_process.php :

Rechercher :

$insert_id = tep_db_insert_id();

Ajouter juste après :

for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$sql_data_array = array('orders_id' => $insert_id,
'title' => $order_totals[$i]['title'],
'value' => $order_totals[$i]['value'],
'class' => $order_totals[$i]['code'],
'sort_order' => $order_totals[$i]['sort_order']);


alors que l'étape en question est :


Citation

- Dans catalog/checkout_process.php :

Rechercher :

$insert_id = tep_db_insert_id();

Ajouter juste après :

//Start Mondial Relay
if(substr($shipping['id'],0,12)=="mondialrelay")
{
tep_db_query("update " . TABLE_ORDERS . " set shipping_pointrelay = '" . substr($shipping['id'],- . "' where orders_id = '".$insert_id."'");
}
//End Mondial Relay


Grrrrrr huh.gif
J'envoi la facture à quelle adresse pour la perte de temps et de CA ? wub.gif tongue.gif
..... en plus lors de mes 20 install, je me suis à chaque fois demandé à quoi bon ce code..... mais bon je voulais pas trop jouer au relou


*-*-*-*-*-*-*-*-*-*-*
En vrac :

+ 1 à riziere pour la question du 2.3 ?!

Si les codes enseigne and cie ne sont pas bons le module ne s'affiche pas ? les codes par défaut sont ils les codes de test ?

Écrit par : chrysalide 22 Sep 2011, 08:19

Citation (Snickers @ 22 Sep 2011, 07:31) *
Grrrrrr huh.gif
J'envoi la facture à quelle adresse pour la perte de temps et de CA ? wub.gif tongue.gif
..... en plus lors de mes 20 install, je me suis à chaque fois demandé à quoi bon ce code..... mais bon je voulais pas trop jouer au relou


REMBOURSEZ LA CONTRIBUTION GRATUITE !

C'est ca quand on rédige une doc sur le quai d'une gare !


Citation (Snickers @ 22 Sep 2011, 07:31) *
Si les codes enseigne and cie ne sont pas bons le module ne s'affiche pas ? les codes par défaut sont ils les codes de test ?


Se sont effectivement les codes de test mais il sont actifs uniquement pendant les heures de bureau ! 8h / 19h environ.

Si les codes ne sont pas bon, le module s'affiche mais retourne un message d'erreur générique "Erreur: Votre adresse livraison ne doit pas être correcte."


Écrit par : Snickers 22 Sep 2011, 08:33

(happy.gif )

Je testerai la nouvelle install quand j'aurais un peu plus le temps... pour le moment j'ai fait du bricolage avec un code maison plus ou moins manuel pour le client et pour la création des etiquettes

Merci pour les infos smile.gif

Écrit par : chrysalide 22 Sep 2011, 09:15

Citation (sanjb @ 21 Sep 2011, 08:23) *
pour le 1er mondial relay.
Pour les suivant j'ai le même code, seuls les N° du champ "value" changent.


Bon ca veut dire que le module se comporte correctement !

As tu modifié la class shipping dans includes/classes/shipping.php ?



Écrit par : chti_poupon 23 Sep 2011, 16:09

Bonjour !
Souci rare mais récurrent lors de la création d'étiquette sur MR MS2.2 :
la page mondialrelayadmin action=cre débouche sur une page blanche.
C'est la seconde fois dans le mois que çà se produit (depuis le 3/9) et si c'est comme la dernière fois, çà va se débloquer dans quelques heures.
Est-ce que quelqu'un a le contact avec MR pour savoir ce qui se produit pour pouvoir générer un message genre "patientez..."
Chti Poupon

Écrit par : chrysalide 23 Sep 2011, 17:57

blink.gif

c'est bizarre ton truc !

as tu testé sur différentes expé ? ou c'est uniquement sur une ? car il peut y avoir des soucis si ton client a mal saisi des données genre N° de tel, que le poids est au dela des limites de MR ou que les données perso contiennent des accents ou caractères spéciaux (j'ai déjà eu le cas)

Écrit par : chti_poupon 23 Sep 2011, 18:31

'Fectivement, l'adresse d'expédition concernait Hélène et la correction (en BDD) a été efficace: j'ai mon étiquette ! Merci, j'ai vu plus haut une modif à faire pour çà!
Mais le plus drôle c'est que mon client du début de mois n'avait aucun accent, no caractère spécial dans ses coordonnées et qu'après avoir fait l'étiquette à la main, j'ai vu le lendemain que çà marchait et obtenu 3 numéros (inutilisés = pas facturés) tellement j'y croyais pas.
Un mystère subsiste donc
Chti poupon

Écrit par : chrysalide 23 Sep 2011, 20:39

la dernière version du module que j'ai publié il y a quelques jours corrige ce pb via une fonction de nettoyage des coordonnées clients.

ton pb peut venir aussi d'un numéro de téléphone à la con (genre avec des points 06.01.02.03.04).

Écrit par : chti_poupon 24 Sep 2011, 07:52

OK ! c'est à implanter. Mais ma première déconvenue reste bizarre, puisque rien n'a été changé entre çà coince et çà marche (sauf la date et le fait d'avoir fait une étiquette à ce nom par un moyen différent).
Je reste fana du msg quand MR coince -> une page blanche est pénible...
Chti poupon

Écrit par : chrysalide 24 Sep 2011, 13:06

ouep c'est chelou ! cara chaquefois quej'ai eu des pbs d'édition de n° de tracking ou d'impression d'etiquette c'était tj a cause d'un valeur érronée pas a cause de timeout du webservice MR ou d'un defaillance de celui-ci.

Écrit par : sanjb 26 Sep 2011, 08:33

Citation (chrysalide @ 22 Sep 2011, 09:15) *
Bon ca veut dire que le module se comporte correctement !

As tu modifié la class shipping dans includes/classes/shipping.php ?

Heu... De quelles modifs parles tu? Je ne les vois pas dans la contrib ni dans le fichier texte d'instal'...

Merci

Écrit par : chrysalide 26 Sep 2011, 09:49

non des modifs indépendantes du module pour l'install d'autres contribs, etc.

Écrit par : sanjb 26 Sep 2011, 09:55

Non, pas à ma connaissance.
Voici le code de cette page:

Code
<?php
/*
  $Id: shipping.php,v 1.23 2003/06/29 11:22:05 hpdl Exp $

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/

  class shipping {
    var $modules;

// class constructor
    function shipping($module = '') {
      global $language, $PHP_SELF;

      if (defined('MODULE_SHIPPING_INSTALLED') && tep_not_null(MODULE_SHIPPING_INSTALLED)) {
        $this->modules = explode(';', MODULE_SHIPPING_INSTALLED);

        $include_modules = array();

        if ( (tep_not_null($module)) && (in_array(substr($module['id'], 0, strpos($module['id'], '_')) . '.' . substr($PHP_SELF, (strrpos($PHP_SELF, '.')+1)), $this->modules)) ) {
          $include_modules[] = array('class' => substr($module['id'], 0, strpos($module['id'], '_')), 'file' => substr($module['id'], 0, strpos($module['id'], '_')) . '.' . substr($PHP_SELF, (strrpos($PHP_SELF, '.')+1)));
        } else {
          reset($this->modules);
          while (list(, $value) = each($this->modules)) {
            $class = substr($value, 0, strrpos($value, '.'));
            $include_modules[] = array('class' => $class, 'file' => $value);
          }
        }

        for ($i=0, $n=sizeof($include_modules); $i<$n; $i++) {
          include(DIR_WS_LANGUAGES . $language . '/modules/shipping/' . $include_modules[$i]['file']);
          include(DIR_WS_MODULES . 'shipping/' . $include_modules[$i]['file']);

          $GLOBALS[$include_modules[$i]['class']] = new $include_modules[$i]['class'];
        }
      }
    }

    function quote($method = '', $module = '') {
      global $total_weight, $shipping_weight, $shipping_quoted, $shipping_num_boxes;

      $quotes_array = array();

      if (is_array($this->modules)) {
        $shipping_quoted = '';
        $shipping_num_boxes = 1;
        $shipping_weight = $total_weight;

        if (SHIPPING_BOX_WEIGHT >= $shipping_weight*SHIPPING_BOX_PADDING/100) {
          $shipping_weight = $shipping_weight+SHIPPING_BOX_WEIGHT;
        } else {
          $shipping_weight = $shipping_weight + ($shipping_weight*SHIPPING_BOX_PADDING/100);
        }

        if ($shipping_weight > SHIPPING_MAX_WEIGHT) { // Split into many boxes
          $shipping_num_boxes = ceil($shipping_weight/SHIPPING_MAX_WEIGHT);
          $shipping_weight = $shipping_weight/$shipping_num_boxes;
        }

        $include_quotes = array();

        reset($this->modules);
        while (list(, $value) = each($this->modules)) {
          $class = substr($value, 0, strrpos($value, '.'));
          if (tep_not_null($module)) {
            if ( ($module == $class) && ($GLOBALS[$class]->enabled) ) {
              $include_quotes[] = $class;
            }
          } elseif ($GLOBALS[$class]->enabled) {
            $include_quotes[] = $class;
          }
        }

        $size = sizeof($include_quotes);
        for ($i=0; $i<$size; $i++) {
          $quotes = $GLOBALS[$include_quotes[$i]]->quote($method);
          if (is_array($quotes)) $quotes_array[] = $quotes;
        }
      }

      return $quotes_array;
    }

    function cheapest() {
      if (is_array($this->modules)) {
        $rates = array();

        reset($this->modules);
        while (list(, $value) = each($this->modules)) {
          $class = substr($value, 0, strrpos($value, '.'));
          if ($GLOBALS[$class]->enabled) {
            $quotes = $GLOBALS[$class]->quotes;
            for ($i=0, $n=sizeof($quotes['methods']); $i<$n; $i++) {
              if (isset($quotes['methods'][$i]['cost']) && tep_not_null($quotes['methods'][$i]['cost'])) {
                $rates[] = array('id' => $quotes['id'] . '_' . $quotes['methods'][$i]['id'],
                                 'title' => $quotes['module'] . ' (' . $quotes['methods'][$i]['title'] . ')',
                                 'cost' => $quotes['methods'][$i]['cost']);
              }
            }
          }
        }

        $cheapest = false;
        for ($i=0, $n=sizeof($rates); $i<$n; $i++) {
          if (is_array($cheapest)) {
            if ($rates[$i]['cost'] < $cheapest['cost']) {
              $cheapest = $rates[$i];
            }
          } else {
            $cheapest = $rates[$i];
          }
        }

        return $cheapest;
      }
    }
  }
?>

Écrit par : Snickers 28 Sep 2011, 08:58

Salut all,

Bon pour info, la nouvelle version ne marche pas mieux chez moi
J'abandonne pour le moment.... j'arrive vraiment pas à capter ^le problème

Écrit par : chrysalide 28 Sep 2011, 10:45

Salut Snikers,

La semaine dernière, j'ai testé l'install sur plusieurs versions successives d'une vieille ms2 à la rc2a j'ai pas rencontré de pbs (sauf ceux lié à php5 sur les plus vieilles).

Écrit par : sanjb 28 Sep 2011, 10:55

Bonjour chrysalide,
aurais tu une idée d'ou peut venir le bug que j'ai je cherche depuis l'autre jour, mais je ne vois pas pourquoi les commandes ne sont pas enregistrées dans la page mondial relay admin...
Merci de ton aide!

Écrit par : chrysalide 28 Sep 2011, 11:04

Alors dans ton cas ca risque d'être un peu dur car n'étant pas a ta place, j'aurai un peu du mal à t'aider, ca doit être une connerie de class ou un truc dans le genre.

Donnes moi tes coordonnées par MP que l'on voit ça ensemble.

Écrit par : Snickers 28 Sep 2011, 18:24

Citation (chrysalide @ 28 Sep 2011, 11:45) *
Salut Snikers,

La semaine dernière, j'ai testé l'install sur plusieurs versions successives d'une vieille ms2 à la rc2a j'ai pas rencontré de pbs (sauf ceux lié à php5 sur les plus vieilles).


Merci pour ta réponse
Je tourne sur osCommerce 2.2-MS2 avec en local
Version PHP : 5.2.6-1+lenny13 (Zend : 2.2.0)

Est-ce lié au problèmes que tu cites ?

Écrit par : chrysalide 28 Sep 2011, 19:32

tu es sure d'avoir tous les pré-requis, genre le module soap pour php ?

je serai toi je testerai en ligne (dans un sous dev de ton ndd) genre dev.nomdedomaine.xx

je suis sure que tu auras de meilleurs résultat.

Écrit par : Snickers 29 Sep 2011, 06:20

Oui sur d'avoir le module soap

Dans le doute je viens quand meme de re-re-vérifier lol

Citation
Soap Client enabled
Soap Server enabled

Directive Local Value Master Value

soap.wsdl_cache 1 1
soap.wsdl_cache_dir /tmp /tmp
soap.wsdl_cache_enabled 1 1
soap.wsdl_cache_limit 5 5
soap.wsdl_cache_ttl 86400 86400


Pour ce qui est du serveur, j'ai aussi testé l'install à chaud sur mon serveur de production (je risquais rien puisque activé ou non le module ne s'affiche pas biggrin.gif )

Tout le monde y arrive et pas moi wacko.gif .... mais c'est une des install la plus facile que j'ai faite, et garanti le prob ne vient pas de moi (de mon pc, scripts ou autre je dis pas lol)

Ps: ha au fait je retire, ca vient pas d'un script, j'avais testé l'install sur une ms2.2 vierge et le résultat était le même (en local, pas test sur serveur)

Écrit par : chrysalide 29 Sep 2011, 15:19

le truc tout con

remplaces :

Code
$this->enabled = ((MODULE_SHIPPING_MONDIAL_RELAY_STATUS == 'true') ? true : false);


par :

Code
$this->enabled = true;


Pour tester

Écrit par : Snickers 29 Sep 2011, 17:37

Premier message d'erreur depuis... plusieurs semaines, ca se fete biggrin.gif

Citation
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://www.mondialrelay.fr/WebService/Web_Services.asmx?WSDL' : Extra content at the end of the document in C:\Program Files\EasyPHP5.3.0\www\e-u\includes\modules\shipping\mondialrelay.php:61 Stack trace: #0 C:\Program Files\EasyPHP5.3.0\www\e-u\includes\modules\shipping\mondialrelay.php(61): SoapClient->SoapClient('http://www.mond...') #1 C:\Program Files\EasyPHP5.3.0\www\e-u\includes\classes\shipping.php(81): mondialrelay->quote('') #2 C:\Program Files\EasyPHP5.3.0\www\e-u\checkout_shipping.php(161): shipping->quote('') #3 {main} thrown in C:\Program Files\EasyPHP5.3.0\www\e-u\includes\modules\shipping\mondialrelay.php on line 61


Alors j'ai deja commencé à faire le tour sur le net :
http://www.wampserver.com/phorum/read.php?1,59081

Écrit par : chrysalide 29 Sep 2011, 17:44

un message d'erreur c'est toujours mieux que rien.

Quelle idée d'utiliser Wamp, aussi ! smile.gif

Pourquoi tu ne te montes un environnement de dev sur ton serveur LAMP dans un sous domaine de ton site ? un petit vhost et hop !

Écrit par : Snickers 29 Sep 2011, 17:54

non non moi je suis un vieux de la vieille je tourne en local sur easyphp
(wamp c'est juste quand j'ai cherché une solution au problème)

LAMP ? vhost ? blink.gif biggrin.gif
J'ai toujours fonctionné ainsi... et j'ai même monté easyphp sur un resau local, alors me fais pas changer hein tongue.gif happy.gif

Et oui entièrement d'accord avec toi un message d'erreur vaut mieux que 2 tu l'auras

Écrit par : sanjb 30 Sep 2011, 10:11

J'ai trouvé la solution pour mon bug de commandes non présentes dans l'admin.
J'ai modifié le code de checkout_process.php
J'ai remplacé

Code
    //Start Mondial Relay
      if(substr($shipping['id'],0,12)=="mondialrelay")
      {
        tep_db_query("update " . TABLE_ORDERS . " set shipping_pointrelay = '" . substr($shipping['id'],-8) . "' where  orders_id = '".$insert_id."'");
      }
    //End Mondial Relay


Par

Code
      //Start Mondial Relay
      if(substr($order->info['shipping_method'],0,12)=="Mondialrelay")
      {
        tep_db_query("update " . TABLE_ORDERS . " set shipping_pointrelay = '" . substr(strstr(htmlspecialchars($order->info['shipping_method']), 'num='),4,6) . "FR' where  orders_id = '".$insert_id."'");
      }
    //End Mondial Relay


Merci tout le monde pour votre aide et en particulier chrysalide!

Écrit par : sanjb 5 Oct 2011, 15:11

Re!
Quand y'en a plus, y'en a encore wink.gif
J'ai un petit souci sur la page de confirmation de commande (checkout_confirmation.php), le prix indiqué pour MR est HT alors que dans le module j'ai bien indiqué qu'il faut appliquer la TVA.
Sur la page checkout_shipping.php, j'ai bien le montant TTC, mais la TVA disparait sur confirmation.
Quelqu'un a t'il une idée du pourquoi du comment?

Merci!

Écrit par : riziere 21 Oct 2011, 11:26

Bon, j'ai repris le dossier Mondial Relay.

J'ai comparé la version d'origine (celle qui marche bien que conçue pour la 2.3) et celle de Chrysalide pour la 2.2 mais qui ne marche pas chez moi.

J'ai appliqué ligne par ligne les modifs de Chrysalide à l'ancienne version pour voir à quel moment le module ne fonctionnerait plus.
Visiblement c'est la ligne 48 qui fait que le module n'apparaît pas chez moi. Tout le reste est ok.

Code
$this->enabled = ((MODULE_SHIPPING_MONDIAL_RELAY_STATUS == 'true') ? true : false);


J'ai donc gardé la ligne d'origine
Code
$this->enabled=MODULE_SHIPPING_MONDIAL_RELAY_STATUS;


L'autre problème que j'ai est l'apparition de caractères tordus au haut de la page checkout_shipping :
Code



Les caractères accentués apparaissent mal dans le module mais ça je pense que c'est une question de codage :
Code
EPICERIE LAZAL à PARIS 75014 détail


Dans checkout_confirmation.php j'ai les caractères accentués et le signe € qui sont remplacés par
Code
.

Tout ceci disparaît lors de la désactivation du module.

J'ai pas encore creusé le pourquoi du comment mais si vous avez des idées, je suis preneur !

Écrit par : chrysalide 21 Oct 2011, 12:23

Salut rizière !

encode utf 8 des fichiers + Tag bom UTF 8 sur fichier de langue.

Écrit par : riziere 24 Oct 2011, 14:14

Bonjour Chrysalide,

effectivement, avec le fichier recodé ça marche beaucoup mieux.

J'ai un tout petit peu modifié le module pour qu'il n'y ai plus de texte en dur et pour tout mettre dans un fichier langue. Comme ça je pourrais faire la version anglaise.

Il y a juste une toute petite modif que je voudrais apporter à l'affichage :

Actuellement quand le client vois la liste des relais, il a par exemple "EPICERIE LAZAL à PARIS 75014". A la place de "PARIS 75014" je voudrais afficher l'adresse "63 rue daguerre 75014 PARIS".
Ne trouvant pas la doc de MR, sais-tu quelle variable permet de récupérer l'adresse ?

Merci !

Écrit par : riziere 24 Oct 2011, 14:35

Bon j'ai fini par trouver !

En fait l'adresse est affichée dans LgAdr3.

Maintenant le module est top !

Merci pour tout !

Écrit par : riziere 27 Oct 2011, 09:37

Bonjour Chrysalide,

je crois avoir trouvé un bug bizarre sur le module.

Quand un client sélectionne son relais et arrive sur checkout_confirmation, c'est systématiquement le nom du premier relais de la liste qui est affiché et pas celui choisi à l'origine. Le code relais, quand à lui, est bien prit en compte et enregistré dans la bdd. Le problème est donc à l'affichage côté client.

Par exemple, sur ma boutique j'ai fais le test en prenant le dernier relais BEST OPTIC, 75005 PARIS, le code relais est bien prit en compte mais sur checkout_confirmation je vois "Mondialrelay (EPICERIE LAZAL, 75014 PARIS - Détail)".

Le lien "détail" ouvre une fenêtre sur l'épicerie Lazal et non sur Best Optic. Cependant, si je reviens sur la page checkout_shipping, c'est bien Best Optic, le dernier relais de la liste, qui est sélectionné.

J'ai fais le test sur une boutique neuve et le problème est confirmé.

Qu'en pense-tu ?

Écrit par : riziere 2 Nov 2011, 12:46

Salut !

j'ai découvert que le module ne prenait pas compte des limites géographiques indiquée dans l'admin. Pour la simple raison que la fonction n'existe pas !

J'ai donc récupéré un bout de code dans le module Colissimo et je l'ai adapté avec succès.

Pour ceux que cela intéresse :

Ajouter après ligne

Code
54 : $client = new SoapClient("http://www.mondialrelay.fr/WebService/Web_Services.asmx?WSDL");


Code
        $mr_dest_country = $order->delivery['country']['iso_code_2'];
        $mr_countries_table = constant('MODULE_SHIPPING_MONDIAL_RELAY_EXPE_PAYS');
        $mr_country = split("[, ]", $mr_countries_table);
        if ( in_array($mr_dest_country, $mr_country ) ) {


puis après (vers la ligne 145)
Code
            else
            {
                    return;
            }


Ajouter un

Code
}


A partir de là, le module ne s'affichera pas pour les pays de livraison qui ne le concerne pas.

Écrit par : chti_poupon 2 Nov 2011, 19:39

Bonjour
J'avais signalé le problème de "toujours le premier" plus haut et donné la modif de checkout_shipping nécessaire (il faut remplacer une variable par un tableau.
C'est dns ma série de délires sur ce post, vers juin
Surbooké, pas le temps de retrouver désolé...


(Edition) Voir post suivant merci !
Chti poupon

Écrit par : chti_poupon 3 Nov 2011, 11:05

Bon, c'est là :

Citation (chti_poupon @ 10 Jun 2011, 18:46) *
Bonjour !
Pour l'affichage dans checkout_confirmation.php du nom correct du relais choisi (et non du premier de la liste - systématiquement) il semble bien que cela soit dû à une structure particulière (1 module et 10 méthodes == mondial realy et 10 relais ) alors que de coutume, il y a 1 méthode par module (colissimoexpert recommandéR1 ou colissimoaccess normal)
En conséquence de quoi, il faut modifier checkout_shipping.php (Lignes 117 à 130 incluses MS2.3.1) comme suit :
Code
          if (isset($quote['error'])) {
                tep_session_unregister('shipping');
              } else {
            for ($i=0, $n=sizeof($quote[0]['methods']); $i<$n; $i++) {
    
                     if ( (isset($quote[0]['methods'][$i]['title'])) && (isset($quote[0]['methods'][$i]['cost']) && ($quote[0]['methods'][$i]['id']==$method ||$shipping == 'free_free'))) {
                   $shipping = array('id' => $shipping,
                                      'title' => (($free_shipping == true) ?  $quote[0]['methods'][$i]['title'] : $quote[0]['module'] . ' (' . $quote[0]['methods'][$i]['title'] . ')'),
                                      'cost' => $quote[0]['methods'][$i]['cost']);
      
                    tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
                  }
                }
              }

Testé sur MS2.3.1 et MS 2.2 fraîches avec le module mondialrelay et les modules flat, item, table et zone en place. Tous fonctionnent .
Sur ma MS2.2 complète, çà va aussi.
Merci de tester avec MS2.3 et colissimo et de nous en faire part, (Colissimo n'est pas installé en MS2.3
chez moi.)
Le cas des colis de + de 20 kg n'a pas été testé dans cette configuration
Chti poupon

Edition pour correction du code (cas free_free)

Écrit par : riziere 4 Nov 2011, 15:55

Merci Chti_Poupon pour ce morceau de code. Chez moi, en 2.2, ça marche nickel !

Si Chrysalide est Ok, je ferrais prochainement un petit package avec toutes les dernières modifs apportées au module. Ce sera surement utile à beaucoup.

Écrit par : djstefx 3 Jan 2012, 19:13

Bonjour a tous
j'ai tester le module pour le version OS 2.2 et cela fonctionne tres bien.

Je me suis permis d'effectuer quelques modifs pour le faire apparaitre dans le shipping.
Remplacer la ligne 48 :

Code
$this->enabled = ((MODULE_SHIPPING_MONDIAL_RELAY_STATUS == 'true') ? true : false);


Par :
Code
$this->enabled = ((MODULE_SHIPPING_MONDIAL_RELAY_STATUS == 'True') ? true : false);


Remplacer le ligne 165 :
Code
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 ('Activer ce mode de livraison', 'MODULE_SHIPPING_MONDIAL_RELAY_STATUS', 'Oui', 'Voulez-vous utiliser ce mode de livraison?', '6', '0', 'tep_cfg_select_option(array(\'Oui\', \'Non\'), ', now())");


Par :
Code
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 ('Activer ce mode de livraison', 'MODULE_SHIPPING_MONDIAL_RELAY_STATUS', 'True', 'Voulez-vous utiliser ce mode de livraison?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");


Et voila, probleme résolu lorsque vous ne voulez pas afficher le module.

Pour ce qui est de l'ouverture de la fenêtre win dans la bonne taille pour le détails du Point Relais,
Remplacer la ligne 117 par cela :
Code
window.open ('". $link ."', '', 'height=500, width=700, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no');\"><b>Détail</b></a>"

Écrit par : la loutre 16 Jan 2012, 18:46

Bonsoir,

J'essaie d'installer cette contrib qui me serait bien utile mais j'avoue que je galère...
Après pas mal de bidouille et surtout la lecture et relecture studieuse de ce post, j'arrive enfin à faire apparaitre le module mondial relay dans le checkout shipping du front office mais le client ne peut pas le choisir !
Voici ce que j'ai à l'écran :

Mondialrelay
Erreur: Votre adresse livraison ne doit pas être correcte.

Je n'arrive pas à faire s'afficher le logo ni le petit rond permettant de le cocher ! J'ai activé le module dans l'admin.
J'ai bien activé la librairie soap sur mon hébergement.
Les codes m'ont été envoyés par MR et je n'ai pas d' "enseigne" (comme indiqué dans le module d'expédition) mais un code marque...je me suis dit que c'était la même chose - sinon, j'ai bien
Marque : xx
Code Marque : xx
Clé : xx
Clé tracking url : xx
Marque (tracking url): xx

Je ne sais plus de quel côté je dois chercher wacko.gif

Écrit par : chti_poupon 16 Jan 2012, 20:01

J'avais rencontré ce même problèmes: voir ici après (et vérifier que tu as bien la dernière version de la contrib)

Citation (chrysalide @ 23 May 2011, 09:29) *
Citation (chti_poupon @ 22 May 2011, 16:33) *
[*]le changement de tarif n'est pas pris en compte, pourtant bien changé dans config BDD


:blink:


Citation
[*]L'ajout des frais fixes dans la classe mondialrelay par
Code
                                            ,'cost'   => $tarif +MODULE_SHIPPING_MONDIAL_RELAY_FRAIS_FIXES);

ne me fait pas l'effet de fonctionner


ouep !

Normalement ca doit marché mias j'ai procédé différemment mais en fait le resulat est le même

j'ai ajouter

Code
$this->frais_fixes = MODULE_SHIPPING_MONDIAL_RELAY_FRAIS_FIXES;
dans la fonction mondialerelay

et ça

Code
,'cost'   => $tarif + $this->frais_fixes


dans mon array methods et ca marche. Au fait merci j'avais oublié de l'intégrer car je ne l'utilise jamais ! :D

Citation
[*]l'action edit ne fonctionne que si je remplace $HTTP_GET_VARS par $_GET et POST itou (sans doute un réglage local)


:blink: ouai a voir si c'est pas un soucis de réglage local

Question tu test en local ou sur un hébergement, peux tu me remonter tes infos de config serveur ?

Citation
[*]l'action cre ne crée rien le paramètre STAT n'étant pas nul


tu as testé quand le serveur de test MR n'est dispo que du Lundi au vendredi de 7h a 20h* je crois.

Code
[*]Rien n'apparaît dans la doc sur les paramètres :[code]                       ,'ModeCol'        => 'CCC'
                          ,'ModeLiv'        => '24R'
[/code]

modecol = Mode de Collecte et peux prendre les valeurs CCC CDR CDS REL.
ModeLiv = Mode de Livraison et peux prendre les valeurs LCC LD1 LDS 24R ESP DRI

j'essaye de choper les correspondances de ces valeurs dans la journée

Citation
[*]Sur les pages avec soap j'ai
Code

qui apparaît sur l'écran (local et distant, front et back ???)


As tu converti tes fichiers en iso ? et celui de langue dans /includes/languages/modules/shipping ? petit canaillou ! :D

voir mon post plus haut

Citation
[/list]Bref la route est encore longue (il reste l'impression des étiquettes depuis l'admin... a moins d'utiliser un fichier csv et en n'imprimant que celles dont le statut atteste le paiement).


rien de tout ça quand ta fonction cre marche le numero de tracking et créé et te donne accès a la fonction imprim qui génère un joli pdf depuis le webservice MR a imprimer.

Citation
çà promet encore un talc chaud :D
Chti poupon


On connait ton visse maintenant :-P

Écrit par : djstefx 17 Jan 2012, 01:16

Citation (la loutre @ 16 Jan 2012, 19:46) *
Les codes m'ont été envoyés par MR et je n'ai pas d' "enseigne" (comme indiqué dans le module d'expédition) mais un code marque...je me suis dit que c'était la même chose - sinon, j'ai bien
Marque : xx
Code Marque : xx
Clé : xx
Clé tracking url : xx
Marque (tracking url): xx

Je ne sais plus de quel côté je dois chercher wacko.gif

Salut
ton code enseigne est le même que marque SAUF que tu enleve le deux derniers chiffres, c'est pas plus simple que ca..... biggrin.gif

Écrit par : la loutre 17 Jan 2012, 19:03

Merci beaucoup djstefx, effectivement ça marche mieux comme ça !

Écrit par : la loutre 18 Jan 2012, 16:42

Bon je continue mon install et j'ai 2 soucis
1/ si je mets dans mon panier des articles pesant moins de 0.03kg, la livraison par MR ne s'affiche pas pour le client.
Du coup, j'ai modifié includes/modules/shipping/mondialrelay.php ligne 56
//soap
if($shipping_weight>=0.1)

et je l'ai remplacé par
//soap
if($shipping_weight>=0.01)

mais ça ne marche toujours pas plus huh.gif
Le poids des articles doit être géré ailleurs mais où ? trouve pas...


2/ dans mon checkout-confirmation, j'ai par exemple :
Sous-Total TTC: 29.50€
Mondialrelay (PRESSING SAINT DIDIER à ST DIDIER AU MONT D OR 69370 détail): 5.02€
TVA: 5.66€
Total HT: 28.87€
Total TTC: 34.52€

et je voudrais enlever le point relay choisi (PRESSING SAINT DIDIER à ST DIDIER AU MONT D OR 69370 détail) pour ne garder que Mondialrelay.
Je n'arrive pas à faire la modif unsure.gif

Écrit par : sanjb 4 May 2012, 17:04

Bonjour,
Je reviens vers vous car je n'ai pas trouvé la solution pour mon souci de TVA non appliquées sur la page checkout_confirmation.php

Quand je choisi sur checkout_shipping.php, le prix des points relais est bien TTC, mais quand j'arrive sur checkout_confirmation le prix indiqué au dessus du total est en HT...

Des idées?

Merci!

Écrit par : chti_poupon 5 May 2012, 09:36

Bonjour
Vérifies d'abord:

et tiens nous au courant...

Chti poupon



Écrit par : sanjb 7 May 2012, 07:59

Bonjour chti_poupon!
Merci de ta réponse.
Tout est paramétré correctement. TVA appliquée au module, taux de TVA à 19.6% (pour le moment wink.gif
Les prix sont bons sur la page de choix des lieux de livraison, mais plus sur la confirmation de commande et sur les factures dans le paramétrage...
Ex:
LE LYS BLANC à LYON 69009 détail 6.90 € (sur checkout_shipping.php)
et
Mondialrelay (LE LYS BLANC à LYON 69009 détail): 5.77 € (sur checkout_confirmation.php)

En gros on perd l'application de la TVA...

As tu des idées?

Merci

Écrit par : naé 13 May 2012, 15:02

Bonjour,
qqn aurait une idée ou une piste pour adapter la contribution avec un pré-contrôle des commandes (contrib order check en l'ocurrence).
chrysalide, tu as bien mis une ligne à ce propos dans ta doc mais je ne sais pas par quel bout m'y attaquer.
en tous cas bravo, en lisant tout les messages on parvient à un truc vraiment bien alors que ça ne paraissait pas gagné au départ.

Écrit par : chti_poupon 13 May 2012, 15:58

Bonjour
Je ne pratique pas order check, mais il me semble qu'en ajoutant à la table holding les mêmes données que le fait la contrib mondialrelay pour orders (numéro relais), çà devrait aller.
Bien sûr il faut une modif pour les remplir et une autre pour les reporter dans orders quand la commande est validée.
Si cela peut te mettre sur la voie
Chti poupon

Écrit par : naé 13 May 2012, 21:05

merci chti poupon,
pour la contrib order_check
en fait, après avoir cherché un peu partout les lignes concernant holding_table et comparé avec d'autres modes de livraison, etc.. je me suis revenue aux sources et aperçue que ça fonctionne de base!

simple erreur d'inattention
au cas où ça servirait à qqn j'explique:
chez moi la ligne (dans checkout_process)

Code
$insert_id = tep_db_insert_id();

est "commenté" avec // et remplacée par une série de lignes qui la rempacent
je devais donc ajouter le code de cette contrib après la série et non juste après la ligne

j'ai aussi ajouté les champs de pointrelay et tracking dans la table holding mais je pense que ça n'était même pas utile, ça restera vide.

sinon j'ai eu le même problème qu'une personne 2-3 messages plus haut: quand le poids est trop petit, le relais n'apparait pas, j'ai fait la même modif que cette personne et chez moi ça a suffit. merci pour l'idée!
Code
if($shipping_weight>=0.01)


Écrit par : sanjb 14 May 2012, 08:02

Bonjour Chti-poupon,
aurai tu une idée d'où peut venir le "non report" de la TVA entre checkout_shipping et checkout_confirmation?

Merci

Écrit par : chti_poupon 14 May 2012, 11:45

Très probablement:
- d'une installation de la TVA non conforme aux règles édictées dans la FAQ
- d'un calcul omis dans checkout_confimation.php
Chti poupon

Écrit par : sanjb 14 May 2012, 14:21

Bonjour Chti Poupon,
tous les autres modules d'expéditions marchent et la TVA est bien appliquée sur les 2 pages.
Je pense que cela vient du module mondialrelay, mais je n'arrive pas à trouver ou.
Le module marche-t'il bien chez toi? Avec une TVA appliquée?
Merci

Écrit par : naé 16 May 2012, 21:27

Bonjour

Chez moi la TVA fonctionne bien, et ce depuis le début de mon installation il me semble.
Mais j'ai le vague souvenir d'être repassée par la FAQ au sujet TVA il y a un certain temps (peut-être quand j'installais socolissimo).

Je n'ai plus qu'un problème: impossible de générer le tracking et donc l'étiquette dès que je met autre chose que 'FR' dans la configuration du module.
Chez vous ça marche?
Et pourtant en front, ça fonctionne tout à fait correctement:
Si je mets "FR,BE", alors je peux commander dans un relai en belgique ou en france sans pb mais pas générer le lien du tracking: erreur "FR,BE74"
Si je ne mets que "FR" alors c'est bien bloqué pour les belges, la commande passe bien pour la france et le lien tracking est généré sans pb.
Si je mets que BE, idem ça marche pour la belgique, pas la france, mais j'ai l'erreur "BE74" quand j'essaie de générer le n° tracking.
Il vient d'où ce "74"? C'est affiché discrètement tout en haut à gauche de la page de gestion mondial relay.

Sinon j'ai bidouillé un truc pour faire un peu comme Socolissimo dans le panneau des commandes...
ça fonctionne bien, même si j'imagine que ce n'est pas très propre.
Donc pour avoir:
Mode de Paiement : Paiement par chèque
Mode de Livraison : Mondial Relay
N° du Point de Retrait : 005251BE (LIBRAIRIE PINOY PM25 à BRUXELLES 1160 détail)
N° du tracking généré : 10141213
Date d'achat : 16/05/2012
N° de commande : 45003

dans le fichier admin/orders.php:

après:

Code
  <tr>
            <td class="main"><b><?php echo ENTRY_PAYMENT_METHOD; ?></b></td>
            <td class="main"><?php echo $order->info['payment_method']; ?></td>
            </tr>


ou si on a colissimo, après:
Code
            <td class="main"><b><?php echo ENTRY_SHIPPING_MODE; ?></b></td>
            <td class="main"><?php echo $shipping_mode ?></td>
          </tr>

<?php
}
?>


ajouter:
Code
<?php
// mondial relay

     if ( preg_match('/Mondial Relay/', $order->info['shipping_method']) ){
          
    $relay_info_query = tep_db_query("select shipping_traking, shipping_pointrelay from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");
$relay_info = tep_db_fetch_array($relay_info_query);
        
        
         echo '          <tr>' . "\n" .
                           '<td align="left" class="Main"><strong>'.ENTRY_SHIPPING_METHOD.'</strong> </td>' . "\n" .
              '            <td align="left" class="Main">Mondial Relay</td>' . "\n" .
              '          </tr>' . "\n" .
                 '<td align="left" class="Main"><strong>'.ENTRY_SHIPPING_CODE.'</strong> </td>' . "\n" .    
                '              <td align="left" class="Main">' . $relay_info['shipping_pointrelay']. '&nbsp;'.  substr($order->info['shipping_method'],18,-1)  . '</td>' . "\n" .
              '          </tr>' . "\n".
              '          <tr>' . "\n" .
                 '<td align="left" class="Main"><strong>'.ENTRY_SHIPPING_TRAKING.'</strong> </td>' . "\n" .    
                '              <td align="left" class="Main"><font color="#484880">' . $relay_info['shipping_traking']. '</font></td>' . "\n" .
              '          </tr>' . "\n";
    
}
// EOF mondial
?>


et dans admin/includes/languages/french/orders.php, ajouter:
Code
define('ENTRY_SHIPPING_TRAKING', 'N&deg; du tracking généré :');
define('ENTRY_SHIPPING_METHOD', 'Mode de Livraison :');
define('ENTRY_SHIPPING_CODE', 'N&deg; du Point de Retrait :');
define('ENTRY_SHIPPING_MODE', 'M&eacute;thode de Livraison :');

Écrit par : naé 19 May 2012, 12:18

Comme l'espagne n'a pas les mêmes tarifs, je n'y applique pas de frais port gratuits.
j'ai modifié le code donné précédemment pour les francos comme ceci:

Code
// ajout livraison gratuite
if (($cart->show_total() >= $this->franco) && ($order->delivery['country']['iso_code_2']!='ES')){
$tarif=0;
// Fin ajout livraison gratuite*/

ça fonctionne

Écrit par : mouth56 13 Jun 2012, 15:10

Citation (telede @ 23 May 2011, 16:20) *
Citation (chrysalide @ 19 May 2011, 19:25) *
Le module Soap existe sous PHP 4 (pear:soap pas testé je suis sous PHP 5.2) a voir si les hébergeurs l'utilisent.....

Le module Soap existe sous PHP4 sous l'appelation nuSOAP téléchargeable sous forme de classe, librairie.

SOAP est natif sous PHP5 mais n'est pas supporté par certains hébergeurs, et pour malheureuse cible, Icodia, c'est vraiment navrant et il n'y a pas d'explication cohérente.

Merci pour cette contribution wink.gif



A noter que depuis, SOAP est fonctionnel sur plateforme Icodia mutualisée et dédiée smile.gif

Écrit par : chrysalide 21 Jun 2012, 13:13

Salut à tous,

j'ai eu une info importante de la part de MR.

Il semblerait que j'ai oublier un petit truc lors de la construction de cette contrib.

en effet certains colis ont du mal a être identifier par le point relais quand le client se présente pour le retrait en indiquant leurs noms de famille et du premier coup avec leurs prénoms. pourquoi ?

en fait , Oscommerce enregistre en table orders le champ customers_name sous la forme "prénom nom" alors que MR demande lors de la création du numero de tracking la variable Dest_Ad1 sous la forme "nom prénom".

C'est ballot, vous me direz !

Par conséquent, il faut modifier catalog/checkout_process.php comme suit :

remplacer

Code
'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],


par

Code
'customers_name' => $order->customer['lastname'] . ' ' . $order->customer['firstname'],


reporter également cette modif dans catalog/checkout_confirmation.php si vous utilisez un outils de pré-enregistrement de commande.

je porte la modif à la contrib dès que j'ai 5 minutes.

Egalement, la contrib utilise la fonction split qui est dépréciée en php 5.3 je modifierai la contrib pour la rendre compatible avec php 5.3 et +

Écrit par : speedy38 29 Jul 2012, 11:22

Salut, tout d'abord je m'excuse pour mon français, n'est pas bon.
J'ai installé la contribution "mondialrelay_for_2.2_RC1_v1.03" dans ma boutique oscommerce v2.2 RC2 (la version de PHP 5.2.11 et module SOAP installé) et semble tout simplement être le cas pour les autres utilisateurs, l'administration fonctionne bien, mais ne voyez pas une option de ce module sur le côté client, donc je ne peut pas offrir son utilisation.
Pourquoi est-ce?
J'ai lu dans le dernier poste plusieurs changements à apporter à cette contribution, mais je serait précisé dans une réponse unique façon de résoudre ce problème.
Je vous remercie, salutations.

Écrit par : chti_poupon 30 Jul 2012, 08:27

Bonjour !
Le réseau Mondial Relay couvre les pays où il a des points relais - voir http://www.mondialrelay.fr/public/mr_pointrelais.aspx(pour prendre ou déposer/ramasser les colis).
Allemagne, Belgique, Espagne, France, Luxembourg sont les pays d'utilisation de Mondial Relay.
Pays de l'expéditeur et pays du destinataire doivent donc être sur cette liste, sinon, rien ne s'affiche !!
Le module n'est donc pas en cause.
Belle journée !
Chti poupon
PS Il faut aussi, bien sûr, que les conditions de poids et de colis unique soient remplis.
Votre francais est plutôt meilleur que celui de certains... sans excuse d'extraterritorialité... biggrin.gif

Écrit par : speedy38 30 Jul 2012, 19:16

Bonjour à nouveau. Les tests effectués en citant le pays de destination l'Espagne et ma boutique est également situé en Espagne. En dépit d'être un seul paquet et essayer des valeurs de poids différentes, je ne peux pas faire quoi que ce soit dans la zone client!

Je commence à désespérer, parce que je ne sais pas quoi faire d'autre!

Faut-il faire des changements dans les paramètres des fichiers php de "Mondial Relay", à l'exception de ceux décrits dans le manuel d'installation pour travailler?

MERCI

Écrit par : chrysalide 30 Jul 2012, 21:10

as tu récupéré des identifiants de connexion de test et de production auprès de Mondial relay ceux fournis avec la contribution sont pour une boutique française

Écrit par : speedy38 30 Jul 2012, 21:29

Désolé, je ne comprends pas ce que je veux dire. -Je utiliser mon propre mot de passe, qui je l'ai dit Mondial Relay. Est-ce que cela signifie que vous avez à changer certains paramètres du fichier php pour travailler dans un magasin espagnol? Merci

Écrit par : chrysalide 30 Jul 2012, 22:29

ok ! as tu les documentations techniques pour du webservice de Mondial relay?
Mondial relay te les as normalement envoyé en pdf.

Écrit par : speedy38 31 Jul 2012, 10:40

Oui, j'ai des documents et est celui que j'utilise ... et comme je dis rien ne s'affiche sur l'espace client!
Quel pourrait être l'erreur?

Écrit par : chti_poupon 31 Jul 2012, 21:39

Vois http://www.oscommerce-fr.info/forum/index.php?showtopic=62806&view=findpost&p=356856
Un erreur dans les codes (répétés c'est vrai) et rien ne marche

Écrit par : chrysalide 31 Jul 2012, 22:53

Citation (speedy38 @ 31 Jul 2012, 11:40) *
Oui, j'ai des documents et est celui que j'utilise ... et comme je dis rien ne s'affiche sur l'espace client!
Quel pourrait être l'erreur?


peux tu me la faire passer afin de vérifier si le module est bien compatible ? c'est pas dis qu'en espagne le webservice soit le même ou que celui-ci soit disponible et qu'il n'y ai que l'EDI.

Écrit par : speedy38 1 Aug 2012, 17:49

J'ai installé la contribution "mondialrelay_for_2.2_RC1_v1.03" dans ma boutique oscommerce v2.2 RC2 (la version de PHP 5.2.11 et module SOAP installé), comme indiqué dans mon premier post.
Besoin d'autres informations pour voir si le module est compatible?
Si vous avez besoin de plus faites le moi savoir, s'il vous plaît.
Merci

Écrit par : chrysalide 1 Aug 2012, 21:29

blink.gif

tu as droit a un reset de cerveau ?

Écrit par : speedy38 1 Aug 2012, 22:38

Chrysalide Excusez-moi, mais je ne comprends pas ce que vous entendez par le «cerveau», le cerveau de quoi?

Écrit par : speedy38 7 Aug 2012, 08:46

Je réinitialiser le serveur si il voulait dire que cela le «cerveau» ... Je fais toujours ça marche. Pourquoi?
Merci

Écrit par : chrysalide 7 Aug 2012, 10:38

non en fait c'est une expression pour dire que tu répètes le message de ta demande initiale sans tenir compte des réponses qui te sont faites.

je répètes :

peux tu me transmettre les documentations techniques que t'a donné Mondial Relay afin de vérifier si le module est adapté à l'espagne ?

Écrit par : speedy38 7 Aug 2012, 10:44

Vous voulez dire que les codes d'accès (nom d'utilisateur et mot de passe)?

Écrit par : chrysalide 7 Aug 2012, 11:03

Non ! les pdf de documentation sur la mise en place du webservice et les identifiants de test.

Écrit par : speedy38 10 Aug 2012, 08:55

Avez-vous eu mon message? Une solution?
Merci

Écrit par : speedy38 2 Sep 2012, 18:51

Comment puis-je modifier les frais d'expédition en fonction du pays de destination? Certains pays sont plus chers que d'autres. Merci

Écrit par : chti_poupon 2 Sep 2012, 20:21

Bonjour
La contrib prévoit en effet un tarif unique, ce qui est vrai pour France et Belgique, mais pas pour l'Espagne par exemple.

Une amélioration de la contrib doit donc être envisagée, mais il est possible d'y pallier (lourdement) comme suit.
Il faut donc :

  1. créer un second module, copie du premier, avec le tarif différent en se guidant sur les indications de la FAQ http://www.oscommerce-fr.info/faq/qa_info.php?qID=145 idea.gif
  2. Modifier la ligne en tête de chacun des modules:
    Code
    $this->enabled = ((MODULE_SHIPPING_MONDIAL_RELAY_STATUS == 'true') ? true : false);
    en
    Code
    $this->enabled = ((MODULE_SHIPPING_MONDIAL_RELAY_STATUS == 'true' && $order->delivery['country']['iso_code_2'] == {[i]numéro du pays voulu dans ce module[/i]}) ? true : false);
Attention, ceci n'est pas testé.

Ultérieurement, la contrib devra évoluer, en effet

Bon code !

Chti poupon



Écrit par : speedy38 2 Sep 2012, 20:59

Merci pour votre réponse.
Une chose que je ne comprends pas ce que je dupliquer le module "Mondialrelay» ou «zones»?
Avez-vous de mélanger les modules? Ou ce que vous faire est de créer un module qui affiche les prix et les tarifs pour les zones où le module exécute la requête "Mondialrelay»?
Merci

Écrit par : chti_poupon 3 Sep 2012, 07:38

Zones est l'exemple, il faut créer mondialrelay1, strictement identique à mindialrelay, sauf le terme mondialrelay partout comme dit

Écrit par : virgilinfo 8 Sep 2012, 16:45

Bonjour à tous,
j’essaie à mon tour d'installer la contrib sur une version d'osc 2.3 modifiée mais aprés pas mal d'heure je ne m'en sors toujours pas sad.gif
pourriez-vous me confirmer que les identifiants de test fonctionnent toujours en semaine ?
Pour les comparaer, est ce que quelqu'un aurait les 2 scripts (mondial relay et checkout_shipping voire peut etre meme l'admin ?) de la version pour osc 2.3 aprés modification de la 1.03 (pour osc 2.2) ?
Quoique j'ai fais jusque l'à, j'ai toujours mon "Erreur: Votre adresse livraison ne doit pas être correcte." x.gif
merci d'avance pour votre aide, vg

Écrit par : chti_poupon 8 Sep 2012, 18:12

Bonjour
La contrib pour la 2.3 est l'origine. Elle devrait donc fonctionner d'emblée et ne devrait pas être mise en cause.
Je t'engage à relire les échanges à partir de http://www.oscommerce-fr.info/forum/index.php?showtopic=62806&view=findpost&p=357323 .
Vérifies plutôt que le SOAP est correctement activé (il semble, puisque tu as une réponse)
A contrario, ce genre de message peut être obtenu avec une adresse erronée pour cause de:
- accents dans les noms et adresses
- France métropolitaine
. ou / dans les n°de tél
et il y a aussi le problème d l'encodage du code qui donne des caractères bizarres à l'écran.http://www.oscommerce-fr.info/forum/index.php?showtopic=62806&view=findpost&p=359250

Prends garde ! toutes ces discussions sont autour de la version pour MS2.2

Ne peux tu faire un essai en distant (sauvegardes bine avant !)
Chti poupon

Écrit par : virgilinfo 10 Sep 2012, 14:13

Bonjour et merci pour ta réponse chti_poupon.
j'ai déjà parcouru le sujet dans tous les sens, la conclusion est en faite que les identifiants ne sont plus les memes, il y'a une nouvelle version 2012...
Il faut donc se rapprocher de mondialrelay pour les avoir.
Tout fonctionne bien finalement.
merci, vg

Écrit par : chti_poupon 10 Sep 2012, 14:21

OK ! Si tu as eu ces identifiants de test, ils sont publics: peux-tu les publier ici ?
Cela éviterait de déranger MR de nombreuses fois...
Merci d'avance !
Chti poupon

Écrit par : virgilinfo 11 Sep 2012, 16:06

Re,
comme je n'ai trouvé les identifiants nul part j'ai préféré rester discret mais bon, t'as pas tort, et c'est des identifiants test aprés tout.. ils sont là :
Enseigne : BDTEST12
Clé privée : MRT_2012
Clé privée (url) : MRT_2012
Marque(url) : BDTEST12
Marque : BD

Écrit par : dar 10 Nov 2012, 17:55

Bonsoir, j'ai lu tout le topic, j'aurais également voulu installer le module MondialRelay pour osCommerce 2.3, mais la version proposé du site se "cale" dans Clients/commandes au lieux de Modules avec bien sur un message d'erreur...
La version créée n'est-t-elle pas encore aboutie?

Écrit par : chti_poupon 10 Nov 2012, 19:29

Bonjour
Relis attentivement les indications de la contribution.
En effet, dans catalog/admin/mondialrelayadmin.php le code donné sert à obtenir un numéro d'expédition, puis à imprimer l'étiquette quand une commande a été passée avec expédition en MR.
Par contre, dans catalog/includes/modules/shipping/mondialrelay.php se trouve le module appelé par catalog/admin/modules.php et qui sert à régler les paramètres d'utilisation (activation, lieu d'expédition et mots de login, passe, etc...).
Mais comme tous les modules d'expédition(et de paiement) non installés d'origine, il faut cliquer sur "installer le module" dans admin - modules - livraison, choisir le module MR et cliquer sur "installer le module", puis paramétrer.
Bons essais !
Chti poupon
PS1: Inutile de mettre

Citation
avec bien sur un message d'erreur...
sans indiquer le type d'erreur, le message éventuel et les circonstances d'apparition.
PS2: Une signature renseignée est une bonne habitude

Écrit par : dar 22 Nov 2012, 16:49

Citation (chti_poupon @ 10 Nov 2012, 19:29) *
Bonjour
Relis attentivement les indications de la contribution.
En effet, dans catalog/admin/mondialrelayadmin.php le code donné sert à obtenir un numéro d'expédition, puis à imprimer l'étiquette quand une commande a été passée avec expédition en MR.
Par contre, dans catalog/includes/modules/shipping/mondialrelay.php se trouve le module appelé par catalog/admin/modules.php et qui sert à régler les paramètres d'utilisation (activation, lieu d'expédition et mots de login, passe, etc...).
Mais comme tous les modules d'expédition(et de paiement) non installés d'origine, il faut cliquer sur "installer le module" dans admin - modules - livraison, choisir le module MR et cliquer sur "installer le module", puis paramétrer.
Bons essais !
Chti poupon
PS1: Inutile de mettre
Citation
avec bien sur un message d'erreur...
sans indiquer le type d'erreur, le message éventuel et les circonstances d'apparition.
PS2: Une signature renseignée est une bonne habitude

Salut à toi chti_poupon, tu m'es d'une grande aide sur tous les posts!
J'ai retesté cet aprem et voici le message d'erreur lorsque je veux l'installer via le panel administration : "Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /homez.**/*****/www/includes/modules/shipping/mondialrelay.php on line 46"
Il faut configurer quelque chose à cette ligne? De plus, qu’appele-tu MR?

Écrit par : chti_poupon 22 Nov 2012, 17:19

Bonjour
MR=MondialRelay

Il semble que soap ne soit pas activé sur ton serveur : voir admin - outils - renseignements sur le serveur.
Il doit y avoir:

Citation
soap
Soap Client enabled
Soap Server enabled

En local, décommenter les commandes soap (pas les lignes d'explication qui précèdent.
En distant, s'adresser au gestionnaire du serveur.
Bons essais
Chti poupon

Écrit par : dar 22 Nov 2012, 17:35

Citation (chti_poupon @ 22 Nov 2012, 17:19) *
Il semble que soap ne soit pas activé sur ton serveur : voir admin - outils - renseignements sur le serveur.
Il doit y avoir:
Citation
soap
Soap Client enabled
Soap Server enabled

En distant, s'adresser au gestionnaire du serveur.
Bons essais
Chti poupon

Après vérification, j'ai bien ça :
Code
'. / Configure...« - with-gnu-ld '' - enable-soap[ '' - avec pspell-'' - with-pgsql = / usr '' - with-gmp '

En allant sur mon php admin, je ne peux pas l'activer? Ou je doit contacter un technicien qui gère mon serveur?
PS : je travaille à distant.
Merci smile.gif

Écrit par : chti_poupon 22 Nov 2012, 17:50

N'y-a-t-il pas le mot soap bien plus loin sur la page "renseignements sur le serveur"
La commande de configuration ne suffit pas.

Écrit par : dar 22 Nov 2012, 18:06

Citation (chti_poupon @ 22 Nov 2012, 17:50) *
N'y-a-t-il pas le mot soap bien plus loin sur la page "renseignements sur le serveur"
La commande de configuration ne suffit pas.

Ben écoute, en regardant sur le forum de chez OVH (je suis chez eux), j'ai vu un post :
Citation
SetEnv PHP_VER 5
à mettre dans le .htaccess
Et là, ça marche! Bizarre quand même, (si je dois enlever ça, dis le moi wink.gif ) maintenant je vais relire tous les posts à la recherche de la nouvelle erreur "erreur: Votre adresse livraison ne doit pas être correcte."

Écrit par : dar 23 Nov 2012, 00:53

Re, j'ai vérifié dans le panel administration sous outils, j'ai bien :

Citation
Directive Valeur locale Valeur Maître
soap.wsdl_cache 1 1
soap.wsdl_cache_dir / Tmp / Tmp
soap.wsdl_cache_enabled 1 1
soap.wsdl_cache_limit 5 5
soap.wsdl_cache_ttl 86400 86400

Donc, un problème en moins grâce à toi chti_poupon. Après avoir relu tout le topic, et avoir fait quelques modifs, j'attend demain pour pouvoir testé car j'ai toujours
Citation
Erreur: Votre adresse livraison ne doit pas être correcte.
, j'espère que ça va marcher...

Écrit par : dar 23 Nov 2012, 13:13

Bon ben je reviens à vous, ça ne marche pas sad.gif toujours "Erreur: Votre adresse livraison ne doit pas être correcte."
Si quelqu'un pourrait me guider...

Écrit par : chti_poupon 23 Nov 2012, 15:32

Citation
Mais comme tous les modules d'expédition(et de paiement) non installés d'origine, il faut cliquer sur "installer le module" dans admin - modules - livraison, choisir le module MR et cliquer sur "installer le module", puis paramétrer.

AS-tu vu les nouveaux paramètres d'essai http://www.oscommerce-fr.info/forum/index.php?showtopic=62806&view=findpost&p=364841?
Chti poupon
PS: pour soap, c'est OK !

Écrit par : dar 23 Nov 2012, 15:38

Citation (chti_poupon @ 23 Nov 2012, 15:32) *
Citation
Mais comme tous les modules d'expédition(et de paiement) non installés d'origine, il faut cliquer sur "installer le module" dans admin - modules - livraison, choisir le module MR et cliquer sur "installer le module", puis paramétrer.

AS-tu vu les nouveaux paramètres d'essai http://www.oscommerce-fr.info/forum/index.php?showtopic=62806&view=findpost&p=364841?
Chti poupon
PS: pour soap, c'est OK !

Oui, j'ai testé ceux là et les anciens, mais rien n'y fait.
J'ai regardé un de tes anciens posts :
Le module MR est activé = oui (petite indication : lorsque je désactive le module, le message "Erreur: Votre adresse livraison ne doit pas être correcte." est toujours présent lors d'une commande test)
l'échelle poids/prix est correctement remplie = j'ai
Citation
0.50:4.20,1.00:4.20,2.00:5.50,3.00:6.20,5.00:7.50,7.00:9.60,10.00:11.95,15.00:14
.35,20.00:17.95

les codes MR sont bons = oui
le module soap est actif = oui
le poids du colis (emballage inclus) est inférieur à 20 kg = oui
l'expéditeur et le destinataire sont dans un pays couvert par MR (F,E,B,D,L) = oui, j'ai plutôt ceci :
Citation
Pays d'expédition(Pays acceptées:'FR','BE','LU' et 'ES')
et j'ai donc mis "FR"
PS : pour soap, c'est grâce à toi biggrin.gif

Écrit par : chti_poupon 23 Nov 2012, 16:21

Restent accents dans les mots et points dans le numéro téléphonique.
Crysalide propose une fonction et des modifications: as-tu essayé ?
Chti poupon

Écrit par : dar 23 Nov 2012, 16:41

Citation (chti_poupon @ 23 Nov 2012, 16:21) *
Restent accents dans les mots et points dans le numéro téléphonique.
Crysalide propose une fonction et des modifications: as-tu essayé ?
Chti poupon

J'ai relu tout ses posts, je trouve cela :
Citation
Salut rizière !

encode utf 8 des fichiers + Tag bom UTF 8 sur fichier de langue.

Et ça :
Citation (chrysalide @ 30 May 2011, 18:18) *
Citation (chti_poupon @ 28 May 2011, 14:16) *
Bonjour,
L'erreur de masse du colis ne paraît pas excessivement grave, puisque s'il y a franchissement d'un seuil, Mondialrelay rectifie à la facturation, comme tous les autres (cf conditions).
Par contre, il me paraît utile de prévoir quelque chose en cas de port sans frais, quand un montant est atteind.
En effet, tant qu'il s'agit d'une livraison à domicile, c'est, pour le client, sans importance.
La mise à disposition en relais, avec quelques jours de plus - éventuellement - est autre chose:


l'erreur de masse est critique pour moi parce que j'aime bien savoir ce que l'on me facture et ca permet de savoir si il n'y a pas une erreur de saisie dans la base.

J'ai trouvé deux trucs a modifier :

1 - la gestion des accents lors d'une requête vers le webservice et là c'est le

Code
Fatal error: Uncaught SoapFault exception
de la mort

je vais corrigé ca (ah le uft8 et l'iso c'est le grand amour)

2 - le module ne peut traiter que les commande d'un poids max de 20 Kg car au dela c'est mal avec un code retour "20" (poids erroné).

Dans ma version de test j'ai déja ajouté l'envoie du poinds lors de la requête WSI2_RecherchePointRelais mais cette valeur seule ne permet pas de limiter la requete au point relais XL.
J'attends la réponse sur les paramètres a utiliser pour les colis de plus de 20 Kg.... donc Wait&See.

A mon avis ca doit se jouer sur le paramètre 'Action'.

Pour le franco :

perso je le gère niveau module par un enregistrement dans la table configuration modifiable depuis le module et une petite condition.

+ de détails demain car ce soir j'ai pas le temps..... et pas envie

On corrige ça via la base de donnée, je suppose?

Écrit par : chti_poupon 23 Nov 2012, 17:27

La fonction accents dont de laquelle je cause est dans catalog/includes/modules/shipping/mondialrelay.php en MS2.2
Avec des modifs dans la méthode quote.

Écrit par : dar 23 Nov 2012, 17:39

Tu parle surement de un de tes anciens post :

Citation
Bonjour,
En premier, remplaces :
Code
,'Pays' => $order->delivery['country']['iso_code_2']par :
Code
,'Pays' => accents($order->delivery['country']['iso_code_2']), à cause de la France Métropolitaine ou de België
Accessoirement, tu peux ôter la ligne Poids, ce n'est pas exploité ici.

En second, actualises ta version d'easy php par une version compatible avec celle de ton hébergeur, car s'il n'y a pas le mot soap dans ton php ini, rien n'est possible mais en plus, et ce n'est pas rien, tu iras de plantage en plantage en passant en distant, à cause (entre autres) du register gobal, des fonction deprecated (split, ereg, etc...)

Dans l'attente de tes nouvelles.

Chti poupon

Déjà testé, mais après, j'ai ceci :"Fatal error : Call to undefined function accents ". Peut être que ce n'est pas ça et que je me trompe.

Écrit par : dar 23 Nov 2012, 17:56

C'est à rien y comprendre, ça a l'air de marcher là ohmy.gif
Je n'ai pourtant rien fait, chti-poupon, tu fais de moi un homme heureux, car au bout de plusieurs jours, je commençais à désespérer...
Plus qu'à valider mon compte et tester ça avec une vraie clé!

Écrit par : dar 23 Nov 2012, 18:10

En allant au bout d'une commande, me voici avec "Parse error: syntax error, unexpected '.' in /homez.**/*****/www/checkout_process.php on line 127", ce qui correspond à :

Code
{
tep_db_query("update " . TABLE_ORDERS . " set shipping_pointrelay = '" . substr($shipping['id'],- . "' where orders_id = '".$insert_id."'");
}

Une idée?
Edit : solution trouvé, il fallait plutôt mettre :
Code
//DOF
      if(substr($shipping['id'],0,12)=="mondialrelay")
      {
        tep_db_query("update " . TABLE_ORDERS . " set shipping_pointrelay = '" . substr($shipping['id'],-8) . "' where  orders_id = '".$insert_id."'");
      }
    //EOF

biggrin.gif

Écrit par : skieur 15 Jan 2013, 22:45

Bonjour,

Citation
Bonjour a toutes et a tous!
j'ai installé le module sur mon site.
Par contre je me demandais comment faire pour que l'adresse du point relais soit l'adresse d'expédition du client et non l'adresse du client.
Je m'explique: lorsque l'on passe une commande dans le champ adresse d'expédition, j'ai toujours l'adresse du client et non pas l'adresse du point relais.
Savez-vous comment corriger cela?


Est ce quelqu'un à trouvé la solution a ce problème pour que ce soit l'adresse d’expédition choisie dans checkout_shipping.php lorsque il y a plusieurs adresses d expédition ?

Merci.

Écrit par : ame 24 Apr 2013, 21:44

Bonsoir
J'ai un petit problème J'ai bien la liste des points relais qui s'affiche mais la sélection n'est pas opérationnel c'est tjs le premier qui est mémorisé
Savez vous si il y a une solution a ce problème


Merci

[EDIT] La réponse est ici : http://www.oscommerce-fr.info/forum/index.php?showtopic=62806&view=findpost&p=359501

Écrit par : etuzien 8 May 2013, 11:48

bonjour
à tous ceux qui ont cette erreur :

Deprecated: Function split() is deprecated in /XXXXXX/XXXXX/www/includes/modules/shipping/mondialrelay.php on line 50

remplacer :

dans ce fichier (includes/modules/shipping/mondialrelay.php) à la ligne 50 :

$table = split("[:,]" , MODULE_SHIPPING_MONDIAL_RELAY_TARIF);

par :

$table = preg_split("/[:,]/" , MODULE_SHIPPING_MONDIAL_RELAY_TARIF);

et là plus de message d'erreur !
en espérant avoir fait gagner du temps à certains
hébergeur OVH

Écrit par : ame 13 May 2013, 20:53

Bonsoir avez vous une solution pour que le point relay soit enregistrer dans la BD si on utilise paypal IPN

J'ai bien un fonctionnement correct si le paiement est fait par chèque mais pas via paypal .

Merci


Écrit par : chti_poupon 28 Jun 2013, 18:02

Bonjour
Voir la bonne piste http://www.oscommerce-fr.info/forum/index.php?act=findpost&hl=Paypal&pid=356569
Ne connaissant pas les arcanes paypal, je ne puis en dire plus !
Chti Poupon

Écrit par : Mathos 5 Jul 2013, 18:02

Bonjour, y a t-il moyen de limiter un envoi par mondial relay à une certaine somme (objet + ports) car sur la trentaine de colis envoyés ils m'en ont déjà perdu 1, je voudrais donc limiter la casse. Merci

Écrit par : chti_poupon 7 Jul 2013, 21:13

Bonjour
Je te joins le code d'élimination du mode de transport dly3.php (livraison locale à partir d'un montant minimum):

Code
// class constructor
    function dly3() {
      global $order;

      $this->code = 'dly3';
      $this->title = MODULE_SHIPPING_DLY3_TEXT_TITLE;
      $this->description = MODULE_SHIPPING_DLY3_TEXT_DESCRIPTION;
      $this->tax_class = MODULE_SHIPPING_DLY3_TAX_CLASS;
      $this->sort_order = MODULE_SHIPPING_DLY3_SORT_ORDER;
      $this->icon = DIR_WS_ICONS . 'shipping_dly.gif'; // To remove icon change to: $this->icon = 'pixel_trans.gif';
      $this->enabled = MODULE_SHIPPING_DLY3_STATUS;
// Beg Minimum Order Total required to activate module
      $this->min_order = MODULE_SHIPPING_DLY3_MINIMUM_ORDER_TOTAL;

    if ( ($order->info['total']) < ($this->min_order) ) {
          $this->enabled = false;
    }
// End Minimum Order Total required to activate module

     // not nessary this code if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_DLY3_ZONE > 0) ) {

//modified code is below
if ($this->enabled == true) {
......................... (suite du code quand le minimum est atteint et fin du constructeur de classe)

A toi de l'adapter avec tes critères dans function mondialrelay en y intégrant le calcul du poids, puis le prix du port(tiré de la function quote de mondialrelay) et en y ajoutant le prix de la marchandise calculé comme ci dessus.
Le tout (bien sûr en inversant les critères et tests (Maxi et =<) ) dans catalog/includes/modules/shippins/mondialrelay.php.

Maintenant, il y a aussi indemnité et possibilité d'assurance non ?
Tarif ->
Citation
Garantie en cas de perte ou d’avarie de 25€ TTC par colis (hors frais de port).

Vois ton tarif 2013 pour plus de détails...

Mais ce n'est pas prévu dans ce module...
seulement en manuel !
Bon code!
CHti poupon

Écrit par : Mathos 8 Jul 2013, 15:03

Merci bcp, je vais essayer

OK chti'poupon, ça ne fonctionne pas, mais à mon avis c'est normal smile.gif
Je la rentre où la limite pour que ça désactive mondial relay ?

Mon code :

Code
     // class constructor
    function mondialrelay() {
      global $order;
      
     $this->code="mondialrelay";
$this->title = MODULE_SHIPPING_MONDIAL_RELAY_TEXT_TITLE;
$this->sort_order = MODULE_SHIPPING_MONDIAL_RELAY_SORT_ORDER;
$this->icon = '';
$this->description = MODULE_SHIPPING_MONDIAL_RELAY_DESCRIPTION;
$this->enabled = MODULE_SHIPPING_MONDIAL_RELAY_STATUS;
$this->tax_class = MODULE_SHIPPING_MONDIAL_RELAY_TABLE_TAX_CLASS;
$this->frais_fixes = MODULE_SHIPPING_MONDIAL_RELAY_FRAIS_FIXES;
// Beg Minimum Order Total required to activate module
      $this->min_order = MODULE_SHIPPING_MONDIAL_RELAY_MINIMUM_ORDER_TOTAL;

    if ( ($order->info['total']) > 45 ) {
          $this->enabled = false;
    }
  }
}  
// End Minimum Order Total required to activate module

Écrit par : FoxP2 8 Jul 2013, 21:29

MODULE_SHIPPING_MONDIAL_RELAY_MINIMUM_ORDER_TOTAL est une clé qui doit être enregistrée dans la table configuration.
elle doit être ajoutée et définie dans la méthode install() de ton module ainsi que dans la méthode keys()
quand à min_order c'est une variable de la classe, elle doit être ajoutée dans le constructeur.

maintenant, je vais te donner le fond de ma pensée :
il semble que tes connaissances en php soient quelque peu limitées, mais surtout que nous sommes ici à la limite de l'assistanat.
chti_poupon te donne des pistes plutôt pertinentes, il t'appartient de réfléchir un minimum pour modifier ton code.

c'est un forum d'entraide, pas un sav. on ne fera pas le travail à ta place.

merci d'en prendre bonne note et d'agir en conséquence avant que j'intervienne de manière plus catégorique.

je ne parle même pas du fait que tu squattes le sujet d'un autre pour exposer tes désidérata qui n'ont aucun rapport avec le sujet initial.

Écrit par : Mathos 9 Jul 2013, 16:01

On peut apprendre grâce aux expliquations, on ne peut pas deviner, surtout lorsqu'on apprend...

Écrit par : Team SPL 9 Sep 2013, 14:49

Citation (ame @ 13 May 2013, 20:53) *
Bonsoir avez vous une solution pour que le point relay soit enregistrer dans la BD si on utilise paypal IPN

J'ai bien un fonctionnement correct si le paiement est fait par chèque mais pas via paypal .

Merci


Bonjour,
Je sais pas si c'est propre mais ça marche.

Dans catalog/includes/modules/payment/paypal_ipn.php

ajouter après :
Code
$sql_data_array = array('customers_id' => $customer_id,

cette ligne ci :
Code
'shipping_pointrelay' => substr(strstr(htmlspecialchars($order->info['shipping_method']), 'num='),4,6) . '' . $order->delivery['country']['iso_code_2'], ////// Mondial Relay ////////


Ce qui vous donnera :
Code
$sql_data_array = array('customers_id' => $customer_id,
                        'shipping_pointrelay' => substr(strstr(htmlspecialchars($order->info['shipping_method']), 'num='),4,6) . '' . $order->delivery['country']['iso_code_2'], ////// Mondial Relay ////////
                        'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
                        'customers_company' => $order->customer['company'],


Enjoy !

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)