Jump to content

module multi produit en fonction d'une surface


Recommended Posts

Bonjour,

Pour une boutique, je dois faire dans la fiche produit un champ de saisie ou l'utilisateur rentrera une surface en mètre carrée.

En fonction de cette surface, il faut que dynamiquement, la quantité de produit soit modifié et si besoin un produit complémentaire soit ajouté afin de finaliser le total de la surface.

 

Tous cela doit bien sur fournir un prix et des quantités pour chaque produit utilisées dans le calcule.

 

je m'explique avec un exemple :

l'utilisateur saisi 100 m².

le produit1 permet 40 m²

il faut donc au moins 2 x produit1 (cela fait 80 m²)

donc il manque 20 m².

produit2 permet 20 m².

il faut donc au 1 x produit2 (cela fait 80 m² + 20 m² on a le compte)

En ajoutant au panier on aura donc :

produit1 quantité 2

produit2 quantité 1

 

Si vous connaissez un module ou si vous avez une solution je suis preneur.

 

Cordialement

 

Bobjo

Link to comment
Share on other sites

Bon alors j'ai commencer à faire des tests sans module car je trouve rien qui correspond....

 

J'ai créé un produit avec une caractéristique qui me donne la surface que peut faire le produit et une personnalisation de type texte obligatoire pour que les utilisateurs puissent entrer la surface qu'ils ont à couvrir.

 

Dans le fichier product.js, la ou se gère l’événement de la sauvegarde de la personnalisation, je récupère les différentes valeurs : surface possible pour le produit, surface voulu par l'utilisateur.

Je fais mes calcules et j’obtiens bien un nombre de produit en fonction de la surface et le reste de la surface (si il y en a).

Toujours en js je modifie la valeur dans le champs quantité.

Si j'ajoute au panier j'ai bien la bonne quantité.

 

Il me reste un problème (assez important), le reste de la surface.

Comment aller chercher un autre produit qui me permettra de compléter ma surface et qui sera ajouter au panier lorsque l'utilisateur cliquera sur le bouton ?

 

Si vous avez une solution ou des idée...

 

Cordialement

 

Bobjo

Link to comment
Share on other sites

Bon je continu à me répondre...

 

Finalement j'ai supprimer la personnalisation qui ajouté trop de problème et je l'ai remplacé par un champs text dans le fichier product.tpl.

 

J'ai enlevé le code de product.js pour le mettre également dans product.tpl.

 

Ensuit, j'ai créé un fichier override du controller ProductController.

En ajax j'envoie le reste de la surface et l'id du produit.

Je récupère après quelques requêtes, calcules et conditions toutes les infos dont j'ai besoin pour l'ajout au panier.

Puis je retourne ces infos. Malheureusement cela me met une erreur ajax. Je vous met le code javascript de ma requête ajax :

//Fonction pour trouver le produit complémentaire
	function getProductSurface(surface, idprod){
		$.ajax({
			type: 'POST',
			headers: { "cache-control": "no-cache" },
			url: baseUri + '?rand=' + new Date().getTime(),
			async: true,
			cache: false,
			dataType : "json",
			data: 'controller=product&ajax=true&prodsurf=1&surface='+surface+'&idprod='+idprod,
			success: function(jsonData,textStatus,jqXHR)
			{
				
				alert("test");
			},
			error: function(XMLHttpRequest, textStatus, errorThrown)
			{
				alert("product.tpl.\n\ntextStatus: '" + textStatus + "'\nerrorThrown: '" + errorThrown + "'\nresponseText:\n" + XMLHttpRequest.responseText);
				
				
			}
		});
	}

Donc ça me retourne la partie error. Dans firebug j'ai un 404 pour l'url.

 

Pour la partie php j'utilise ce que j'ai trouvé ici http://doc.prestashop.com/display/PS16/Using+jQuery+and+Ajax#UsingjQueryandAjax-MakingAjaxcallswithjQuery

Je vous met ma fonction :

public function displayAjax() {
	die(Tools::jsonEncode($this->productSurface));
}

Si vous avez une idée ou une solution.

 

Cordialement

 

Bobjo

Link to comment
Share on other sites

Bon toujours personne pour un coups de main...

 

Je continu.

 

A propos de l'erreur ajax, c'est donc une 404 Not Found. Ce qui indique qu'il ne trouve pas la page. Ce qui est étrange, c'est qu'il me retourne bien le résultat des requêtes et autres calcules que je fait dans mon fichier ProductController.php.

 

Donc pour avancer (bien que ce ne soit pas bien...) j'ai passer outre le error en remplaçant dans ma requête ajax success et error par complete et la j'ai bien l'alerte qui s’affiche.

Mais je n'arrive pas à récupérer les infos contenu dans jsonData.

 

Cordialement

 

Bobjo

Link to comment
Share on other sites

J'ai viré le complète car ça va pas....

 

Je vous met ce que me retourne error :

 

product.tpl. // texte de debug

textStatus: 'error' // valeur de textStatus
errorThrown: 'Not Found' // valeur de errorThrown
responseText:
{"idprod":"12","nom":"test 2","prixttc":5,"error":false} // valeur de XMLHttpRequest.responseText

 

Ce qui est étrange c'est que errorThrown me dit qu'il ne trouve pas la page et pourtant XMLHttpRequest.responseText me retourne bien les infos.

 

Cordialement

 

Bobjo

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...