Jump to content

[Résolu] Erreur Javascript avec So colissimo


Recommended Posts

Bonjour,

 

j'ai un gros soucis au moment de passer la commande, à l'étape frais de port où l'utilisateur choisit So Colissimo, lorsqu'il clique sur "suivant", un message apparaît :

 

Erreur Fatale : Veuillez vérifier que le JavaScript est activé et recommencer l’opération.

 

Après avoir contacté le support So Colissimo et enfin le support prestashop, personne a pu me venir en aide.

 

Quelqu'un aurait une idée d'où cela pourrait venir?

 

J'ai essayé quelques modifications :

 

 

1) Dans les fichiers tpl (error, redirect et fancybox), le code JS entre "$(document).ready(function() //" n'était pas pris en compte. En commentant les lignes, plus de soucis, cela fonctionnement correctement."

 

2) Dans le fichier Socolissimo.php

La ligne 410 est donc 'TRPARAMPLUS' => (int)($carrierSo->id),

 

Mais cela ne marche pas!

 

Merci beaucoup pour ceux ou celles qui me donneront des pistes pour résoudre ce problème, car je suis complètement coincé.

 

Cordialement.

Edited by EtapDesign (see edit history)
Link to comment
Share on other sites

D'après un opérateur de So Colissimo, l'erreur viendrait d'un conlit CSS à cause des modifications que j'ai faites...il a finalement peut-être raison étant donné qu'en mettant le site avec le thème par défaut de prestashop, cela marche parfaitement...Si quelqu'un pouvait m'aider..cordialement.

Edited by EtapDesign (see edit history)
Link to comment
Share on other sites

Il arrive que le JS ne soit plus correctement interprété lorsque vous essayez d'importer la librairy jquery alors que Prestashop la charge déjà (CF plusieurs sujets avec ce soucis dans ce même forum).

 

Sinon, si vous avez d'autres scripts sur la page qui agissent sur une balise avec une id donnée, alors il se peut en effet que le soucis vienne du CSS avec un conflit de nommage.

Link to comment
Share on other sites

Merci pour vos réponses mais grâce à Jeckyl, qui m'a aidé sur un autre forum mais qui est présent sur celui-ci, j'ai réussi à corriger le tir en transférant le dossier js/ du thème par défaut de prestashop par celui de mon thème.

 

En effet, c'est finalement les fichiers javascript de mon thème qui étaient compatibles seulement avec des versions antérieurs à celle de 1.4.8.

 

Merci pour vos remarques.

 

Cordialement.

Link to comment
Share on other sites

Bonjour, J'ai du me pencher d'avantage au problème étant donné que malgré que colisimmo fonctionne, d'autres développements que j'avais fais antérieurement ne marchent plus.

 

J'ai donc trouvé les deux fichiers qui permettaient le bon fonctionnement du site et celui de colisimo:

 

order-adress.js et tools .js dans le dossier js/ du thème.

 

 

Tout est parfait, mais il me reste tout de même un soucis...c'est lorsque je changer le fichier order-adress.js, en effet, lorsque je prend celui par défaut de Prestashop, à la 3ème étape "adresse" pendant la commande, les adresses de livraisons ne s'affichent pas...Ce qui est quand même assez grave pour celui qui veut commande.

 

Je me suis donc intéressé au fichier order-adress.js puisque tout vient de là, et je peux dire deux choses:

 

L'affichage des adresse se fait grâce à début de code :

 

$(document).ready(function()
{
updateAddressesDisplay(true);
});

 

Mais ne permets pas le fonctionnement de colisimo

 

Cet autre début de code:

$(document).ready(function()
{
if (typeof(formatedAddressFieldsValuesList) != 'undefined')
 updateAddressesDisplay(true);
resizeAddressesBox();
});

 

permet le fonctionnement de so colisimo mais pas de l'affichage des adresses...Pourriez-vous m'aider à y comprendre d'avantage?

 

Merci d'avance pour vos éventuelles réponses.

 

Cordialement.

Edited by EtapDesign (see edit history)
Link to comment
Share on other sites

En gros, ce fichier order-address.js permet l'affichage de colissimo sans erreur de javascript mais n'affiche pas les adresses:

 

$(document).ready(function()
{
if (typeof(formatedAddressFieldsValuesList) != 'undefined')
 updateAddressesDisplay(true);
resizeAddressesBox();
});
//update the display of the addresses
function updateAddressesDisplay(first_view)
{
// update content of delivery address
updateAddressDisplay('delivery');
var txtInvoiceTitle = "";
try{
 var adrs_titles = getAddressesTitles();
 txtInvoiceTitle = adrs_titles.invoice;
}
catch (e)
{
}
// update content of invoice address
//if addresses have to be equals...
if ($('input[type=checkbox]#addressesAreEquals:checked').length == 1)
{
 $('#address_invoice_form:visible').hide('fast');
 $('ul#address_invoice').html($('ul#address_delivery').html());
 $('ul#address_invoice li.address_title').html(txtInvoiceTitle);
}
else
{
 $('#address_invoice_form:hidden').show('fast');
 if ($('select#id_address_invoice').val())
  updateAddressDisplay('invoice');
 else
 {
  $('ul#address_invoice').html($('ul#address_delivery').html());
  $('ul#address_invoice li.address_title').html(txtInvoiceTitle);
 }
}
if(!first_view)
{
 if (orderProcess == 'order')
  updateAddresses();
}
return true;
}
function updateAddressDisplay(addressType)
{
if (formatedAddressFieldsValuesList.length <= 0)
 return false;
var idAddress = $('select#id_address_' + addressType + '').val();
buildAddressBlock(idAddress, addressType, $('#address_'+ addressType));
// change update link
var link = $('ul#address_' + addressType + ' li.address_update a').attr('href');
var expression = /id_address=\d+/;
link = link.replace(expression, 'id_address='+idAddress);
$('ul#address_' + addressType + ' li.address_update a').attr('href', link);
}
function updateAddresses()
{
var idAddress_delivery = $('select#id_address_delivery').val();
var idAddress_invoice = $('input[type=checkbox]#addressesAreEquals:checked').length == 1 ? idAddress_delivery : $('select#id_address_invoice').val();

  $.ajax({
	   type: 'POST',
	   url: baseDir + 'order.php',
	   async: true,
	   cache: false,
	   dataType : "json",
	   data: 'processAddress=true&step=2&ajax=true&id_address_delivery=' + idAddress_delivery + '&id_address_invoice=' + idAddress_invoice+ '&token=' + static_token ,
	   success: function(jsonData)
		{
		 if (jsonData.hasError)
{
 var errors = '';
 for(error in jsonData.errors)
  //IE6 bug fix
  if(error != 'indexOf')
   errors += jsonData.errors[error] + "\n";
 alert(errors);
}
 },
	   error: function(XMLHttpRequest, textStatus, errorThrown) {alert("TECHNICAL ERROR: unable to save adresses \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);}
   });
  resizeAddressesBox();
}

 

 

Et l'autre fichier .js order-address qui permet l'affichage des adresse mais erreur de javascript avec so colisimo:

 

$(document).ready(function()
{
updateAddressesDisplay(true);
});
//update the display of the addresses
function updateAddressesDisplay(first_view)
{
// update content of delivery address
updateAddressDisplay('delivery');
// update content of invoice address
//if addresses have to be equals...
var txtInvoiceTitle = $('ul#address_invoice li.address_title').html();
if ($('input[type=checkbox]#addressesAreEquals:checked').length == 1)
{
 $('#address_invoice_form:visible').hide('fast');
 $('ul#address_invoice').html($('ul#address_delivery').html());
 $('ul#address_invoice li.address_title').html(txtInvoiceTitle);
}
else
{
 $('#address_invoice_form:hidden').show('fast');
 if ($('select#id_address_invoice').val())
  updateAddressDisplay('invoice');
 else
 {
  $('ul#address_invoice').html($('ul#address_delivery').html());
  $('ul#address_invoice li.address_title').html(txtInvoiceTitle);
 }
}

if(!first_view)
{
 if (orderProcess == 'order')
  updateAddresses();
}

return true;
}
function updateAddressDisplay(addressType)
{
if (addresses.length <= 0)
 return false;
var idAddress = $('select#id_address_' + addressType + '').val();
buildAddressBlock(idAddress, addressType, $('#address_'+ addressType));
// change update link
var link = $('ul#address_' + addressType + ' li.address_update a').attr('href');
var expression = /id_address=\d+/;
link = link.replace(expression, 'id_address='+idAddress);
$('ul#address_' + addressType + ' li.address_update a').attr('href', link);
}
function updateAddresses()
{
var idAddress_delivery = $('select#id_address_delivery').val();
var idAddress_invoice = $('input[type=checkbox]#addressesAreEquals:checked').length == 1 ? idAddress_delivery : $('select#id_address_invoice').val();

  $.ajax({
	   type: 'POST',
	   url: baseDir + 'order.php',
	   async: true,
	   cache: false,
	   dataType : "json",
	   data: 'processAddress=true&step=2&ajax=true&id_address_delivery=' + idAddress_delivery + '&id_address_invoice=' + idAddress_invoice+ '&token=' + static_token ,
	   success: function(jsonData)
		{
		 if (jsonData.hasError)
{
 var errors = '';
 for(error in jsonData.errors)
  //IE6 bug fix
  if(error != 'indexOf')
   errors += jsonData.errors[error] + "\n";
 alert(errors);
}
 },
	   error: function(XMLHttpRequest, textStatus, errorThrown) {alert("TECHNICAL ERROR: unable to save adresses \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);}
   });
}

 

 

Après je m'y connais pas trop en javascript...

 

 

Mais je crois bien que le gros soucis vient des premières lignes du code.

Edited by EtapDesign (see edit history)
Link to comment
Share on other sites

Rebonjour.

 

Vous avez un erreur un peu plus précise que celle-ci ?

Erreur Fatale : Veuillez vérifier que le JavaScript est activé et recommencer l’opération.

 

Là c'est pas forcément évident.

Vous pouvez aussi utiliser FireBug en fixant des points d'arrêts pour contrôler l’exécution du script.

Link to comment
Share on other sites

L'erreur dans la console juste avant que j'arrive sur la page qui indique "Erreur Fatale ...l'opération" est :

 

ReferenceError: addresses is not defined
[stopper sur une erreur]
if (addresses.length <= 0)

 

En effet, au début de mon code dans mon fichier thème :

 

$(document).ready(function()
{
updateAddressesDisplay(true);
});

 

Avec le thème par défaut prestashop :

 

$(document).ready(function()
{
if (typeof(formatedAddressFieldsValuesList) != 'undefined')
 updateAddressesDisplay(true);
resizeAddressesBox();
});

 

Cela marche, mais le soucis c'est qu'en plaçant ce code, l'affichage des adresse ne se fait plus comme je l'ai explicité plus haut..:/

Link to comment
Share on other sites

 

Ca donne quoi en supprimant le resize ?

 

$(document).ready(function()
{
if (typeof(formatedAddressFieldsValuesList) != 'undefined')
 updateAddressesDisplay(true);
});

 

Sinon il faudrait s"intéresser à la fonction resizeAddressesBox() qui agit peut-être sur une classe de votre CSS déjà utilisé par votre thème.

Edited by SiteProjet (see edit history)
Link to comment
Share on other sites

Bonjour.

 

En effet, on a très peu de précisions quant à l'erreur.

 

Pourriez-vous retrouver la fonction resizeAddressesBox() et coller son code ici ?

J'essaie de regarder cela ce soir pour voir si elle agit sur une classe en particulier.

 

Cordialement.

Link to comment
Share on other sites

Avant d'entamer des recherches plus lourdes, j'aimerais m'assurer avec vous d'avoir bien compris le problème. Corrigez-moi sur les points suivants si je me trompe :

 

_ 1 : le module n'a jamais marché sur votre thème actuel. Il n'a pas cessé de fonctionné suite à une modification de votre part.

_ 2 : avec me thème par défaut tout marche parfaitement.

_ 3 : Vous aviez essayé de supprimer le module pour le remplacer par la version suivante : http://addons.prestashop.com/en/shipping-logistics-delivery-prestashop-modules/1745-so-colissimo.html

_ 4 Vous arrivez soit à afficher le transporteur, soit les adresses mais pas les deux.

_ 5 Dans l'un des cas (lequel?) vous ne pouvez pas aller à l'étape suivante suite à une erreur javascript.

 

Désolé pour la lourdeur de ces questions, mais comme je suis plusieurs topics en meme temps, j'ai parfois besoin d'une petite synthèse...

De plus ça sera également fort utile à toute autre personne souhaitant vous aider.

 

Merci

Link to comment
Share on other sites

1- Le module n'a jamais marché sur le thème que j'ai actuellement, une erreur javascript est générée au moment d'arriver à la page des points relais. Par contre, l'affichage des adresse se fait correctement.

 

2- Non, avec le thème par défaut, le mdule colisimo marche parfaitement mais n'affiche pas les adresse à l'étape "adresse" lors de la commande.

 

3- Je n'ai pas supprimé le module, je l'ai installé directement dans le BO, étant donné que la dernière version était déjà disponible.

 

 

Avec le thème par défaut de prestashop:

Les adresses ne s'affichent pas mais le module so colisimo marche parfaitement

Avec le thème que j'ai actuellement:

les adresses s'affichent correctement mais le module so colisimo génère une erreur javascript au moment d'arriver à la page des points relais.

 

Désolé pour le retard, je ne pouvais pas répondre avant étant donné que je ne suis pas chez moi.

 

Merci pour votre aide.

 

Cordialement.

Link to comment
Share on other sites

Rebonjour, hier c'est justement ce que j'me disais,est ce que le thème par défaut de prestashop n'a pas moins d'étapes lors de la commande que le thème que j'utilises actuellement...Je n'arrive pas à trouver dans le BO > préférences et le choix du nombres d'étapes lors de la commande..

Link to comment
Share on other sites

J'ai bien la version 2.3 du module socolisimo oui et je ne trouve pas la fonction resizeAddressesBox dans les fichies de ce module non...en plus je viens de me renseigner mais il est préférable de faire le one page checkout comme vous me le suggériez au dessus que la commande en 5 étapes, c'est beaucoup trop long pour le client..

Link to comment
Share on other sites

Bonjour.

 

En effet, le One Page à me semble-t-il un taux de conversion supérieur à la version 5 étapes.

Maintenant concernant votre soucis de javascript, impossible de reproduire le bug en Labo. Je ne peux que vous conseiller de voir ceci avec la personne qui vous a vendu le thème.

 

Sinon vous pouvez aussi me joindre par MP et j'essaierais de regarder ça en accédant directement à votre boutique.

 

Cordialement,

SP.

Edited by SiteProjet (see edit history)
Link to comment
Share on other sites

Re-bonjour:

 

Récapitulatif de mes dernières manipulations:

 

1. Réinstallation du module So Colisimo sur Addons ( ne génère plus "Erreur Fatale de javascript...")

 

Cependant, ne redirige pas l'utilisateur vers les points relais et se retrouve directement au moyen de paiement, et un conflit est également généré --> le menu de gauche ne s'affiche plus, des liens du panier déroulant qui ne s'affichent plus, etc.

 

2. J'ai donc ensuite transférer les deux fichiers order-address.js et tools.js du dossier js/ du thème par défaut de prestashop vers le dossier js/ de mon thème.

 

Le menu réapparaît...le module so colisimo marche parfaitement, mais l'affichage des adresses lors de la commande à l'étape "adresses" ne se fait pas...j'ai tenté plusieurs modifications du fichier order-address.js mais elles ne s'affichent toujours pas.

Edited by EtapDesign (see edit history)
Link to comment
Share on other sites

Re le gens,

 

J'ai fini par réussir ce que je voulais en remplaçant également le fichier order-address.tpl du thème par défaut de prestashop par le fichier de mon thème.

 

Un dernier soucis, une erreur était générée lorsque l'utilisateur quittait le fancybox, j'ai alors modifié le fichier fancybox.tpl en désactivant la fermeture de celle-ci:

 

'showCloseButton' : false,

 

J'ai procédé de cette manière parce qu'il y a bien sûr un bouton "Retour" déjà présent sur le fancybox.

 

Je remercie également de l'aide apporté de SiteProjet qui a suivi mon problème depuis le début.

 

A bientôt.

 

Cordialement.

Edited by EtapDesign (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...