Page blanche checkout_shipping [RESOLU], pour certains prospects seulement |
Bienvenue invité ( Connexion | Inscription )
Page blanche checkout_shipping [RESOLU], pour certains prospects seulement |
15 Dec 2011, 20:40
Message
#1
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Bonjour,
Voici aujourd'hui deux fois que l'on me téléphone: "Rien à faire, quand je clique sur "commander", j'obtiens une page blanche" Cela s'est réglé par une prise de commande par téléphone, mais bon, tous ne téléphonent pas... Pourtant j'ai des commandes d'un autres client.avant et après ces incidents ! Pour votre information:
A vos petites cellules grises, ô maigrets d'osC Chti Poupon Ce message a été modifié par chti_poupon - 22 Feb 2012, 09:43.
Raison de l'édition : nouvelles informations
|
|
15 Dec 2011, 23:01
Message
#2
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
L'angoisse de la page blanche est pourtant propre aux écrivains pas aux vépécistes
Cela dit, quelques suggestions : As-tu reproduit le problème pour voir cette page de tes yeux ? Tu dis qu'il n'y a pas d'erreur, tu as regardé les logs php ? les pistes : 1/ si ton display_error est sur false, tu n'auras pas l'info en ligne et le script se bloque essaye ini_set('display_errors', 1); en début du script. 2/ si tu as du js ou de l'ajax dans ta page, cela peut éventuellement bloquer le navigateur du client A vérifier avec un autre navigateur quand l'erreur est localisée Réflexion : si la page est blanche c'est qu'elle n'est pas parsée par le PHP ou Apache ou encore que le navigateur reste bloqué Bon courage Chti' -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
16 Dec 2011, 10:56
Message
#3
|
|
Ceinture orange+ OSC Groupe : Membres Messages : 301 Inscrit : 9-December 09 Membre no 26687 |
Ne serait-il pas un script (Google GA, javascript, ...) qui fait planté la page ?
Vérifies les formulaires des clients-plantés, il est possible que le client provoque une erreur en remplissant (mal) le formulaire par exemple. Fais des tests avec différents façon de remplissage de formulaire (divers client fictifs/tests). peut-être une fiche-produit fait planté la page. ou alors la page d'avant ne renvoie pas correctement des données du formulaire à la page checkout_shipping le délais de session n'a pas expiré Voila quelques interrogations/pistes Bonne chance ! |
|
16 Dec 2011, 20:33
Message
#4
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Bonjour,
Merci de vos réponses. A cette heur e le mystère reste entier. @Gnidhal Citation Tu dis qu'il n'y a pas d'erreur, tu as regardé les logs php ? Mon htaccess est en error off avec un fichier erreur.txt aussi vide qu'après le derniier effacement, il uy a 5 mois... L'opérateur du serveur me signale 3 erreurs warning dans checkout_process: il me faut aller voir Citation si tu as du js ou de l'ajax dans ta page Pas mon rayon, que du js version de base Citation A vérifier avec un autre navigateur L'un des clients a eu la panne avec ET IE ET FireFox ! @Brouillard Citation un script (Google GA, J'ai pas Citation peut-être une fiche-produit fait planté la page. On vient du panier !? Citation Vérifies les formulaires des clients-plantés Normaux, désespérément ! A suivre... Je vais voir quoi et quand je saurais quoi, je vous dirai quoi ! Normal, quoi ! Chti poupon |
|
17 Dec 2011, 17:56
Message
#5
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Bonjour,
En définitive, le warning des logs concerne un / omis dans un ereg_replace. Rien à voir Sinon, deux erreurs d'un petit malin qui collectionne mes favicon, mais ne sait pas les trouver...! Par contre, la commande (standard) du bouton commander de shopping_cart et de header comporte un tep_hreflink paramétré avec SSL (Curieusement - Pourquoi d'ailleurs??). Or, j'avais (pour éviter de trop réfléchir) mis les mêmes renseignements dans configure.php pour HTTP_ et HTTPS_ Je me retrouve donc avec une adresse http:// dans une commande potentiellement HTTPS, bien que ENABLE_HTTPS Soit sur false. et soit tep_href_link m'a balancé sur die + message (que les clients auraient zappé) soit le navigateur qui est intransigeant (je ne vois pas comment) Bon, je mets "résolu...à suivre" (en attendant l'essai de ces clients là) Chti poupon |
|
12 Feb 2012, 18:11
Message
#6
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Bonjour
Nouvelles informations:
Chti poupon |
|
12 Feb 2012, 19:47
Message
#7
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Salut Chti'
Alors concernant l'OS que ce soit win, linux ou mac sur la machine du client cela ne doit avoir aucune incidence : ce qui est servi par le web reste dans le navigateur, sauf avec IE dans certains cas mais ça c'est une autre histoire et avec les applications flash, mais là aussi on sort du cadre. Bref, FF sous W7 ou FF sous Linux, si la version de FF est identique, la page est en principe la même à quelques variantes près d'interprétation de la version du navigateur (taille de polices,...). Le serveur envoie un code html complexe qui peut contenir du code actif (javascript) coté client. En raison des risques encourus d'infection virales, les navigateurs modernes et les antivirus font tout pour limiter l'étendu de ce code au navigateur uniquement. Cependant le javascript est un code interprété par le pc du client et si ce code n'est pas parfaitement académique, cela peut provoquer des erreurs variables selon la version de l'os en effet. Mais là il faut que ton code js soit complètement obsolète ou bancal ce qui fait que l'erreur peut être corrigée à la volée par certains navigateurs et pas d'autres. A creuser si nécessaire. Si le navigateur de ton testeur familial inclut certaines extensions pour FF, cela peut provoquer des variantes de comportement. Si l'affichage des erreurs ne te donne que des warnings (ce qui est relativement peu important) la voie à suivre n'est peut-être pas de ce coté. Je te suggère d'utiliser un outil comme Firebug pour FireFox qui offre des informations très étendues sur la page servie par un site. Le DOM et les outils de debuggage intégrés te donneront toutes les informations de structure de la page et peut-être la piste de ce qui provoque le bug. Évidemment, il est impératif de pouvoir reproduire le bug pour le fixer. Sinon la méthode Sherlock-Holmes : 1/ reprendre tes logs apache du jours où tu as eu le bug 2/ localiser les lignes concernées (adresse IP du client qui a bloqué) 3/ tenter de reproduire la même navigation avec le même panier 4/ pointer l'heure précise du problème (page de départ, page d'arrivée prévue) 5/ examiner les logs d'erreur PHP à ce moment précis C'est lourd et pas forcément couronné de succès. D'après ce que tu dis le client est dans le panier et clique sur "commander". Dans ce cas, s'il est enregistré, on passe à checkout_shipping sinon on est redirigé (tep_redirect) vers la page login. : dans checkout_shipping tu as en haut un truc du genre : Code if (!tep_session_is_registered('customer_id')) { $navigation->set_snapshot(); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } C'est donc du coté de cette redirection que ça semble problématique. en faisant un petit test dans ta page panier, j'ai découvert grâce à firebug un warning javascript qui concerne ce code : Code <script language="javascript" type="text/javascript"> document.write(' <a rel="nofollow" href="java script:session_win2();">'); </script> firebug dit : Citation Un arbre non équilibré a été écrit en utilisant document.write() provoquant une nouvelle analyse de données provenant du réseau. Pour plus d'informations, consultez https://developer.mozilla.org/en/Optimizing...ulative_Parsing http://www.ton_site.xxx/catalog/shopping_cart.php Line 45 Cela peut éventuellement être la cause du souci car cela semble concerner le navigateur mozilla justement, mais je n'ai pas cherché plus loin. Perso ça ne bloque pas pour moi, j'arrive bien sur login.php mais ma config n'est pas celle de Mr tout-le-monde donc il faut passer par le débug. Et je n'ai pas testé en étant enregistré. Bon courage... -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
17 Feb 2012, 18:11
Message
#8
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Bonjour,
J'ai avancé sur divers warnings qui ont disparu:
Mais la page blanche subsiste sur la cliente test distante, qui, connectée, panier plein, avec nom et adresse normaux n'arrive pas à afficher checkupt_shipping.php. A suivre ... Chti poupon |
|
21 Feb 2012, 15:48
Message
#9
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Bonjour
Suite de l'enquête: Après quelques recherches d'erreur, en passant par OPERA, mozilla me faisant part d'erreurs internes à lui même (genre variable container inexistante...) polluant les travaux, je suis passé ensuite sur W3C jusqu'à obtenir une page "sans tache". L'essai familial m'a enfin donné (sur W7 IE & FF) une erreur 500 persistante ( à l'instant le serveur donnait la même page chez moi). Recherche GG 500 + W7 m'a mené à une suspicion de time_out. Comme prévu, j'ai essuyé un refus de changer le max_execution_time apache assorti d'une demande de nettoyage de la BDD. Je veux bien, mais çà ne marcherait alors chez personne, le temps serveur étant indépendant du temps client. Enfin, je tiens le coupable: Un dernier essai familial me l'a confirmé: si je désactive mondial relay, la page fonctionne ! DONC: Quand l'internaute utilise Window 7 paramétré par défaut, la requête soap est incluse dans le temps machine qui disjoncte, alors que dans les autres systèmes, même windows, rien de tel ne se passe. Or, dans php Manual, je lis à la page "set_time_limit": Citation Note: La fonction set_time_limit() et la directive de configuration max_execution_time n'affectent que le temps d'exécution du script lui-même. Tout temps passé en dehors du script, comme un appel système utilisant system(), des opérations sur les flux, les requêtes sur base de données, etc. n'est pas pris en compte lors du calcul de la durée maximale d'exécution du script. Ceci est faux sous Windows où le temps mesuré est le temps réel. Y-a-t-il moyen de remettre le chrono à zéro juste avant l'appel soap , même sous W7 ?? Si la solution est correcte, il faudra implémenter les contrib MR, car je ne dois pas être le seul dans ce cas. Merci ! Chti poupon |
|
21 Feb 2012, 17:36
Message
#10
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Quelques secondes avec module MR sur false ...
C'est fini !! |
|
21 Feb 2012, 17:53
Message
#11
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
La maintenance du module mondial relay est prévenue et s'en occupe (aussi)
L'hypothèse d'un blocage antivirus/pare-feu est faite par mon support serveur. A suivre Chti poupon |
|
21 Feb 2012, 21:18
Message
#12
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
ah le coup de la page blanche quand $pointsRelais->STAT est different de 0.
c'est due a une erreur dans les infos transmisent au webservice via soap. adresse pas nettoyée (caracteres accentués) faute de frappe dans le code postal j'ai une nouvelle revision de la contrib qui attend d'être mise en ligne qui corrige cela et qui retourne le code erreur qui va bien au lieu de juste retourner une page blanche dans checkout_shipping. Par tester a la barbare le temps que je publie ça. inserts juste un Code echo $pointsRelais->STAT; avant Code if($pointsRelais->STAT==0) tu auras toujours ta page blanche mais tu dois récupérer le code erreur MR. Pour info voici les codes erreurs MR Citation 0 Opération effectuée avec succès
1 Enseigne invalide 2 Numéro d'enseigne vide ou inexistant 3 Numéro de compte enseigne invalide 4 5 Numéro de dossier enseigne invalide 6 7 Numéro de client enseigne invalide 8 Mot de passe ou hashage invalide 9 Ville non reconnu ou non unique 10 Type de collecte invalide 11 Numéro de Relais de Collecte invalide 12 Pays de Relais de collecte invalide 13 Type de livraison invalide 14 Numéro de Relais de livraison invalide 15 Pays de Relais de livraison invalide 16 Code pays invalide 17 Adresse invalide 18 Ville invalide 19 Code postal invalide 20 Poids du colis invalide 21 Taille (Longueur + Hauteur) du colis invalide 22 Taille du Colis invalide 23 24 Numéro d'expédition ou de suivi invalide 25 26 Temps de montage invalide 27 Mode de collecte ou de livraison invalide 28 Mode de collecte invalide 29 Mode de livraison invalide 30 Adresse (L1) de l'expéditeur invalide -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
22 Feb 2012, 09:42
Message
#13
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Bonjour !
Eh bien, MERCI à tous! Le pire est que la fonction accents était implantée aussi bien dans module/shipping que dans l'admin: les accents empêchaient l'édition des étiquettes. Mais côté module/shipping, elle n'étaiit tout simplement pas appelée !!! la méthode quote de la classe mondialrelay devient: Code 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' => accents($order->delivery['country']['iso_code_2']) ,'Ville' => accents($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; }else{ // Fin ajout livraison gratuite $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,40,42,'align="middle"'); return $this->quotes; }else{ $this->quotes = array('module' => $this->title, 'error' => MODULE_SHIPPING_MONDIAL_RELAY_ERROR . 'n° : '.$pointsRelais->STAT.' Contactez-nous. Merci !! '); return $this->quotes; } }else{ return; } } avec mes p'tites modifs perso (franco, nombre de colis) Chrysalide avait mis sous le coude, car le problème des n°de tél. avec / ou . était - je crois - pendant. Reste aussi la reprise des nombres de colis et poids avant l'édition de ou des étiquettes. D'solé pour cette fausse alerte W7 et merci à Gnidhal pour son "cours" sur la savonette ! Voilà un lavage de cerveau utile !! Chti poupon PS résolu ! |
|
22 Feb 2012, 12:49
Message
#14
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
Il y a une solution beaucoup plus simple.
j'ai gardé pour acquis le fait de passer lors de la requête les infos Ville et poids. je viens de tester et ces deux infos sont, semblerait il, facultative. NDLR : en reprenant la doc du webservice Ville est factultative si Code postal est renseigné et poids est facultatif Malgré la présence d'une fonction de nettoyage du nom de la ville, on n'est pas à l'abri d'une erreur. Plus on passe d'infos plus on a de chance d'avoir des erreurs. Perso je vire ville et poids de la requête de recherche des points relais dans le module. il faut donc remplacer Code $params = array('Enseigne' => MODULE_SHIPPING_MONDIAL_RELAY_ENSEIGNE ,'Pays' => $order->delivery['country']['iso_code_2'] ,'Ville' => accents($order->delivery['city']) ,'CP' => $order->delivery['postcode'] ,'Poids' => round($shipping_weight*1000)); par Code $params = array('Enseigne' => MODULE_SHIPPING_MONDIAL_RELAY_ENSEIGNE ,'Pays' => $order->delivery['country']['iso_code_2'] ,'CP' => $order->delivery['postcode']); et viré la fonction accent au début du module Tout simplement. Dans ton code chti_poupon Code $this->trop_lourd ca m'a bien fait rire -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
22 Feb 2012, 18:01
Message
#15
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
+1 @chrysalide
De fait, le code postal suffit pour avoir les points relais de la zone concernant le client. La suppression du poids est, par contre, plus discutable:
Code 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'] ,'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; }else{ // Fin ajout livraison gratuite $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,40,42,'align="middle"'); return $this->quotes; }else{ $this->quotes = array('module' => $this->title, 'error' => MODULE_SHIPPING_MONDIAL_RELAY_ERROR . mr_err_code($pointsRelais->STAT).' Contactez-nous. Merci !!' ); 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; } et la fonction accents est remplacée par : Code function mr_err_cod($code_mr) { $affiche_err_mr = array( "0" => "Opération effectuée avec succès", "1" => "Enseigne invalide", "2" => "Numéro d'enseigne vide ou inexistant", "3" => "Numéro de compte enseigne invalide", "4" => "Erreur MR 4", "5" => "Numéro de dossier enseigne invalide", "6" => "Erreur MR 6", "7" => "Numéro de client enseigne invalide", "8" => "Mot de passe ou hashage invalide", "9" => "Ville non reconnu ou non unique", "10" => "Type de collecte invalide", "11" => "Numéro de Relais de Collecte invalide", "12" => "Pays de Relais de collecte invalide", "13" => "Type de livraison invalide", "14" => "Numéro de Relais de livraison invalide", "15" => "Pays de Relais de livraison invalide", "16" => "Code pays invalide", "17" => "Adresse invalide", "18" => "Ville invalide", "19" => "Code postal invalide", "20" => "Poids du colis invalide", "21" => "Taille (Longueur + Hauteur) du colis invalide", "22" => "Taille du Colis invalide", "23" => "Erreur MR 23", "24" => "Numéro d'expédition ou de suivi invalide", "25" => "Erreur MR 25", "26" => "Temps de montage invalide", "27" => "Mode de collecte ou de livraison invalide", "28" => "Mode de collecte invalide", "29" => "Mode de livraison invalide", "30" => "Adresse (L1) de l'expéditeur invalide" ); return strtr($code_mr,$affiche_err_mr); } Grâce à tes données te pour répondre à Gnidhal peaufineur de srvice. Chti poupon PS en cas de publication d'un zip, penser à intégrer ce détail pour l'affichage correct du relais |
|
22 Feb 2012, 18:17
Message
#16
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Grâce à tes données te pour répondre à Gnidhal peaufineur de srvice. Good Job! En peaufineur extrême j'aurais bien proposé une version reliée à une bdd des communes de France et de Belgique avec le CP. Mais ça se passe plus dans la partie création de compte (en évitant les mauvaises communes et erreurs de CP) et ça implique de travailler en ajax si on veut que ça soit ergonomique. Donc intégration d'un framework jQuery sachant gérer l'ajax ou d'une bibliothèque ajax séparée. Un autre monde quoi. Un jour pour une autre version osC je tenterai de faire une contrib pour ça.... -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
22 Feb 2012, 18:36
Message
#17
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
Salut Chti_poupon,
Ce que je propose ne concerne que la requête SOAP RecherchePointRelais qui ne fait de sortir la liste des relais par rapport à une adresse donnée. le fait de ne pas transemettre le poids lors de la requete SOAP RecherchePointRelais ne change rien sur le reste de la mécanique du module. Le but n'est de transmettre que les infos utiles pour une proposition de relais. D'après mes souvenirs et surtout avoir échangé avec un dev de chez MR, j'avais dans l'espoir que MR puisse limiter ses propositions de relais aux seuls relais XL qui acceptent la délivrance des colis de plus de 20 Kg si la variable poids transmise lors de la equete SOAP RecherchePointRelais dépasse cette limite. Mais a l'heure actuelle c'est loin d'être le cas. -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
22 Feb 2012, 18:45
Message
#18
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
Grâce à tes données te pour répondre à Gnidhal peaufineur de srvice. Good Job! En peaufineur extrême j'aurais bien proposé une version reliée à une bdd des communes de France et de Belgique avec le CP. Mais ça se passe plus dans la partie création de compte (en évitant les mauvaises communes et erreurs de CP) et ça implique de travailler en ajax si on veut que ça soit ergonomique. Donc intégration d'un framework jQuery sachant gérer l'ajax ou d'une bibliothèque ajax séparée. Un autre monde quoi. Un jour pour une autre version osC je tenterai de faire une contrib pour ça.... je crois qu'il existe déja des trucs tout fait pour ça sur lesquels se reposer ou s'inspirer. Ca fait un moment que je me dis qu'il faut que je mis colle pour l'intégrer à mon usine a gaz. tu peux ajouter l'Espagne aussi, MR délivre aussi la péninsule ibérique et au même prix que la France. -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
22 Feb 2012, 20:27
Message
#19
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Citation D'après mes souvenirs et surtout avoir échangé avec un dev de chez MR, j'avais dans l'espoir que MR puisse limiter ses propositions de relais aux seuls relais XL qui acceptent la délivrance des colis de plus de 20 Kg si la variable poids transmise lors de la equete SOAP RecherchePointRelais dépasse cette limite. Mais a l'heure actuelle c'est loin d'être le cas. Pas d'accord ! Si tu parles des relais XL (je n'ai pas d'autres infos) le service de proximité s'envole pour le client : c'est comme si tu l'envoyais au centre de Tri pour la Poste. Sauf moins cher, je ne vois pas l'intérêt ni économique, ni écologique, ni en temps passé. Le but de l'ajustement d poids n'est pas tant de faire passer 2 colis de 18 kg, mais bel et bien de payer pour 14.6kg et non pas 15.2 kg (tranche supérieure) sous prétexte que le calcul de la tare dans osC est paramétré "à la louche". Il y a bien qqch à faire ds l'admin. A table ! |
|
22 Feb 2012, 21:48
Message
#20
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
oui mais a chacun sa problématique commerciale et de la nature du ou des produits expédiés.
Là c'est a chacun d'adapter le module en fonction de ses besoins et ses problématiques Par contre je crois que tu fais une confusion, la formulation définitive des conditions d'expédition ne se font pas au sein du module mais via l'interface de gestion MR de l'admin. Donc l'absence de poids lors de la requete SOAP RecherchePointRelais n'influence en rien les conditions tarifaires de tes envoies. cette requête ne fait que sortir un nb x de point relais correspondant a un code postal, il n'y a aucun engagement commercial. Pour les problématique de poids/tare. perso, j'ai ajouté un champs supplémentaire dans la table orders (weightmr) avec un champs a renseigner (si besoin) dans l'édition de la commande. Dans mondiarelayadmin j'ai conditionné l'utilisation de la valeur renseignée dans le champs weightmr en lieu et place du poids calculé par Osc pour la création du numéro de tracking. Ce qui me permet d'être sure d'être facturé systématiquement dans la tranche réelle correspondant au poids de mon colis. Personnellement, j'ai le poids de mes produits est renseigné "près a être expédié" avec suremballage, etc. Quand le client commande il est facturé en fonction du poids de commande calculé et je suis facturé en fonction du poids mesuré. Ce mode de fonctionnement me permet de facturé le client dans la bonne tranche dans 95% des cas (à la louche), les 5% restant sont souvent des frais de port surfacturés au client à cause de 100/200g de surévaluation du poids par Osc. Mais là c'est une façon qui convient a mon fonctionnement et a ma stratégie commerciale. Après chacun adapte en fonction de ses besoins. -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
23 Feb 2012, 13:03
Message
#21
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
@chrysalide
Citation Donc l'absence de poids lors de la requete SOAP RecherchePointRelais n'influence en rien les conditions tarifaires de tes envoies. je me serai mal exprimé. le client sait de toutes façons le poids osC de son colis Citation perso, j'ai ajouté un champs supplémentaire dans la table orders (weightmr) avec un champs a renseigner (si besoin) dans l'édition de la commande. Dans mondiarelayadmin j'ai conditionné l'utilisation de la valeur renseignée dans le champs weightmr en lieu et place du poids calculé par Osc pour la création du numéro de tracking. Ce qui me permet d'être sure d'être facturé systématiquement dans la tranche réelle correspondant au poids de mon colis. Ben c'est çà qu'on demande d'intégrer dans la contrib : un moyen de mettre le vrai poids avant la génération/impression de l'étiquette. Mais est-ce bien indispensable de le conserver en BDD ? L'étiquette émise, ce poids est conservé dans la base MR, et lisible, non? Citation il n'y a aucun engagement commercial. Ma digression ne voulait que dire que MR passe des contrats avec des clauses restrictives qu'elle n'applique que petit à petit, peut-être pour nous appâter ! Chti poupon |
|
23 Feb 2012, 15:31
Message
#22
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
Ben c'est çà qu'on demande d'intégrer dans la contrib : un moyen de mettre le vrai poids avant la génération/impression de l'étiquette. Fallait demander ! Mais est-ce bien indispensable de le conserver en BDD ? L'étiquette émise, ce poids est conservé dans la base MR, et lisible, non? Tracabilité ! je préfère garder ma trace que de me fier à la trace d'un autre ! <- elle est chelou cette phrase -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
24 Feb 2012, 18:51
Message
#23
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Citation Fallait demander ! :D :blink: Hum ! ici pour la sauvegarde çççççççççççççççççççççççççççççççççç :D Stock pour éviter le traçage de tes tracas |
|
Version bas débit | Nous sommes le : 29th March 2024 - 08:48 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |