Jump to content

Problématique : Achat par lot et déclinaison / Stock commun / Affichage sur product&product_list


Recommended Posts

Bonjour à tous !

 

Développeur HTML et CSS indépendant, je suis actuellement en train de me former sur le PhP/orienté objet/Smarty pour un projet prestashop.

 

De ce fait, bien qu'ayant des notions, je suis encore un peu perdu lorsque mon client actuel a des demandes particulières pour personnaliser son process BO et sa boutique.

 

Ayant bien compris que rien ne remplace la réflexion et la pratique, j'ai la volonté de m'auto-former et de ne pas abuser de vos compétences non-acquise dans des pochettes surprises.

Seulement, après avoir parcouru des centaines de posts sur le forum et tenté 1001 choses, deux de mes problèmes restent sans solution.

 

Ainsi je viens quérir quelques pistes auprès des Papaprestashop !   :blush:

 

Après cette présentation (1er message sur le fofo), passons au concret !

 

 

Contexte :

 

Multiboutique prestashop 1.6.1.5 + magasin physique synchronisé avec un logiciel de caisse (Kerawen (très prometteur si jamais !)).

 

 

Problèmatique :

 

L'une des e-boutiques vend par unité ou par lot des produits acheté en gros puis reconditionnés sur des quantités prédéfinies.

Nous souhaiterions donner la possibilité aux utilisateurs du site de choisir son conditionnement sur la fiche unique d'un produit.

Une fois commandé, nous souhaiterions que le choix du client impacte logiquement la décrémentation du stock en fonction du produit à l'unité.

 

Exemple :

 

Regis Robert commande chez ses fournisseurs 500 graines de Baobab.

Il souhaite proposer ces graines par unité, par pack de 3, par pack de 5 et par pack de 10 avec des prix dégressifs et le tout affiché sur la fiche produit  unique "Graines de Baobab" afin d'informer directement ses clients des prix de chaque conditionnement et de leur laisser la possibilité d'effectuer l'achat.

 

Comme ceci (o=Bouton radio.) :

 

Graines de baobab :

o Unité -  6€

o Pack de 3 - 12€

o Pack de 5 - 23€

o Pack de 10 - 40€

 

Lors de l'achat d'une unité, le stock avancé doit passer à 499. Si c'est un pack de 3 , le stock doit passer à 497, etc...

 

Ainsi, ne sachant pas d'avance le choix de l'utilisateur du site, cela paraît logique de vouloir paramétrer une quantité disponible du produit et décrémenter en fonction des commandes des utilisateurs.

 

 

Pistes explorées :

 

 

Déclinaisons :  

C'est la solution que nous utilisons actuellement.

Nous créons autant de déclinaisons que de conditionnements disponibles pour chaque produit (déclinaison par défaut à l'unité afin d'afficher en premier lieu le prix le plus bas en FO et de laisser la possibilité à l'utilisateur de naviguer entre les conditionnement(radio) avec l'affichage dynamique du prix. 

 

Comme ça c'est pas mal, ça me laisse espérer parvenir à afficher le prix de la déclinaison à coté de sa valeur (oui j'ai encore du mal avec le smarty toussa toussa  :ph34r: ).

Ne manque que la décrémentation logique du stock puisque la déclinaison par définition ne prend pas en compte le fait qu'on parle de de valeur en "quantité".

Ainsi, sur le stock, on a une quantité à définir par déclinaison et cela devient casse tête à gérer puisque peu cohérent avec le process du client.

 

Prix spécifique :

Là aussi je pense qu'il y a une piste, le problème étant la difficulté de proposer un bouton radio/quantité. 

L'affichage est moins cohérent également puisque la clientèle cible est habituée à commander par pack chez les concurrent. 

Cependant cela règle le problème de décrémentation du stock puisque le produit n'a qu'une référence.

 

Packs :

Nickel pour le stock encore une fois.

Cependant il y a obligation de créer un article par conditionnement et cela rend la navigation de l'utilisateur plus fastidieuse (catégorie remplie de doublons pour chaque conditionnement). C'est la solution la moins envisageable d'après moi tant il me parait difficile d'arriver au résultat visuel escompté.

 

Questions/Conclusion  :

 

.D'après votre expérience, savez-vous (l'aspect visuel > Logistique BO pour cet aspect de la boutique quelle piste je devrais continuer d'approfondir pour résoudre le problème de stock et permettre l'affichage/sélection des conditionnements sur la fiche produit?

 

Si je devais rester sur la solution "Déclinaisons" qui me paraît plus adapté à l'aspect visuel désiré :

Sauriez-vous me guider sur la procédure à suivre afin d'afficher le prix de la déclinaison  à coté de chaque valeur d'attribut (comme l'exemple plus haut) ?

 

J'ai des pistes mais je m'arrache un peu les cheveux.

J'imagine qu'il faut assign la variable du prix de la déclinaison si pas renseignée dans product.tpl pour l'intégrer ensuite dans la boucle qui rend visible les déclinaison en FO. 

Pour illustrer avec un pseudocode : "For each attribute : math equation(prix+price-impact) & display" ?

 

 

Voilà, désolé pour le pavé mais je voulais être clair et précis, j'espère que ça n'est pas raté.

 

Bien entendu je n'attend pas la solution clés en main et vous serais déjà très reconnaissant de me soumettre vos remarques quant à ma réflexion jusqu'ici. 

 

Je dois de toute façon continuer à m'exercer sur ces langages donc je suis prêt à en c*** mais j'ai parfois un peu peur de mal orienter mes recherches.

 

Merci à tous ! Et vive les spaghettis !  :P

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

Hello,

ce qui respecte le plus la logique de prestashop à mon sens c'est les pack.

Il te faudrait un produit "père" et des produits "enfant".

Le produit "père" est celui qui sera affiché (mais pas acheté) et les produits enfants sont ceux qui sont masqué mais acheté.

 

Sur la fiche du produit père il faut un élément qui permet de choisir le conditionnement et ce conditionnement choisi défini le produit enfant qui sera ajouté au panier.

 

J'avais fait un truc dans le genre pour un client il y a longtemps :)

Link to comment
Share on other sites

Bonjour !

Tout d'abord : OH MON DIEU QUELQU'UN S'EST TAPÉ TOUT MON PAVÉ !

J'ai l'impression de déjà vous connaître un peu tant vous êtes visible sur les mots clés fr presta !  :D 

 

Je vais de ce pas chercher dans cette direction et reviendrais vers la communauté si je bloque complet ! 

 

Seulement, je vous préviens qu'à chaud comme ça je ne sais pas du tout comment je vais m'y prendre pour adapter le code ! 

D'ailleurs je ne sais même pas si je dois plutôt toucher au .js ou au tpl, ni si je dois travailler sur un override (je n'en connais que le nom) ou sur le thème !

 

Mais cela me permet de mieux cibler le process pour me former ! Direction la base du smarty et de la POO avec en tête que le projet est faisable !

 

<?php
echo "Merci Olivier";

?>

 

C'est bon je sais tout du PHP ! :P 

Link to comment
Share on other sites

 

J'ai l'impression de déjà vous connaître un peu tant vous êtes visible sur les mots clés fr presta 

pas assez à mon gout :)

 

Le principe c'est en gros ça:

1. Dans la fiche prod du BO tu rajoute une case à cochée "je suis un produit père" (override class product)

2. Si on coche la case il faut qu'on puisse choisir des produits enfants (ou utiliser les accesssoires mais c'est moin clean)

3. en front lorsqu'on arrive sur la fiche produit on check si on est sur un produit père ou normal (override dun frontcontroller)

3.1 c'est un produit normal on utilise le tpl classique pas de changement

3.2 c'est un produit père on utilise un tpl spécifique qui contiendra les id des produits enfants 

 

 

<?php

echo "Merci Olivier";
?>

 

Avec un tel niveau en php tu va nous faire ça en 5 minutes :D

Link to comment
Share on other sites

Bonjour !

Après lecture de votre réponse je me suis pas mal documenté et je pense que je peux y arriver avec de la volonté et un peu de temps ! :)

Merci pour votre aide, je vous tiens au jus dès que j'ai réussi ! 

 

Afin que le verre de mon client soit au moins à moitié plein d'ici là, j'ai passé la mâtiné à tenter d'afficher le prix de chaque attribut à coté de la case radio en adaptant un bout de code trouvé sur le fofo et VICTOIRE !

 

__________________________________________________________________________________________________________________________________________

 

Donc pour les galériens qui tomberaient sur ce post (testé sur 1.6.1.5), si jamais vous aviez la même intention que moi mais que vous savez à l'avance combien de produits vous comptez vendre par unité/3/5/10/etc voici la procédure :

 

 

Dans le dossier "controllers\front" ouvrez "ProductController.php" remplacer :

 

 

$groups[$row['id_attribute_group']]['attributes'][$row['id_attribute']] = $row['attribute_name'] ;

 

Par:

 

 

         $idattrip = $row['id_attribute'];

             $idprod = $this->product->id;
              $prixattrib =round((Db::getInstance()->getValue("SELECT price FROM ps_attribute_impact WHERE id_product = $idprod AND id_attribute = $idattrip")*1.2) , PHP_ROUND_HALF_UP);
               $unitprice=round((Db::getInstance()->getValue("SELECT price FROM  ps_product WHERE id_product = $idprod ")*1.2), PHP_ROUND_HALF_UP);
 
                $bonprix = (($prixattrib + $unitprice)) ;             
               $groups[$row['id_attribute_group']]['attributes'][$row['id_attribute']] = $row['attribute_name'] ;
               $groups[$row['id_attribute_group']]['attributes'][$row['id_attribute']] .= ' - '.$bonprix.'€';

 

Cela affiche le total du prix de la déclinaison dans la liste de la page produit sous cette forme :  O Pack de 3 - 27€

 

 

Ps: Il se peut qu'il soit plus propre de créer un fichier "ProductController.php" dans "override\controllers\front".

     Il se peut également qu'il ne faille surtout pas faire ce que je viens de faire, c'est encore un peu l'aventure. :P

 

Donc faites des sauvegardes !

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

 

 

Ps: Il se peut qu'il soit plus propre de créer un fichier "ProductController.php" dans "override\controllers\front"

 

Alors oui complètement !

La moindre mise à jour de Prestashop fera sauter toutes tes modifs ... donc c'est nettement préférable de faire ça en override !

Link to comment
Share on other sites

  • 4 weeks later...

Bonjour, je cherche également a faire la meme chose, mais pas avec la meme experience (Beaucoup beaucoup ... beaucoup moindre lol)

Mon souci particulier est le stock .. Je vend sur plusieurs plateformes (Ebay amazon etc...) et le stock est relié a mon site, jusqu'a la ca va :) 

 

Mais j'aimerai admettons, vendre un lot de 5 accessoires (actuellement tout est vendu a l'unité).

J'ai pensé au variations mais avec les quantités ce n'est pas possible (a mon niveau)

Préstashop propose de créer des pack d'objet, mais je ne pense pas que ce soit adéquat, les quantités c'est bon, mais sur le site ce sera un peu fouilli nan ? 

 

 

 

 

Cordialement 

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour Christophe !

 

Oui en effet mon client ne veut absolument pas voir 4 produits pour 4 conditionnement (et on le comprend), niveau marketing c'est 0.

Maintenant je vais surement devoir tout changer et fonctionner avec les prix spécifiques par quantité en modifiant le thème pour les sélectionner avec des boutons radio... :(

Ceci du fait que je ne parviens pas à coder quelque chose de fonctionnel pour la gestion des stocks avancés.

 

Afin d'éviter à d'autres de galérer pour rien en essayant d'utiliser les déclinaisons dans ce but, voici le problème qui pourrait se poser selon votre cas :

 

Les clients ont la possibilité de sélectionner le produit à l'unité, par 3, par 5 ou par 10 (il s'agit de graines à semer) en tant que déclinaisons.

 

Tout le process se passe très bien, le prix des packs est renseigné via le générateur, tout est correct coté client.

 

Cependant coté BO, il est impossible de dire à prestashop que avez reçu 100 graines de votre fournisseur. (stock global)

Il faudra définir une quantité pour chaque déclinaison même si vous ne savez pas à l'avance quel conditionnement les client désireront acheter.

Pour un client exigeant qui veut en faire le moins possible c'est impossible de proposer cela.

 

Il faudrait donc parvenir à modifier "StockAvailable.php" pour qu'il sache que tel attribut doit diminuer de telle quantité le stock de la déclinaison par défaut.

Et là sans connaissances suffisantes je me retrouve face à un mur d'incertitudes.

 

Je pense qu'une fonction qui une fois la commande validée va décrémenter le stock global fonction de le l'id de l'attribut sélectionné pourrait fonctionner.

Par exemple très grossièrement dans le cas ou on a un attribut "Pack de 3" ayant pour id=4:

 

if (id_attribute=4) update stock_available - 1*3(id_product) 

 

 

En résumé il faudrait :

Demander au stock de décrémenter une certaine quantité du stock global du produit en fonction de l'attribut commandé.

 

Avec autant de "il faudrait" vous comprenez bien que même en sachant par avance combien de conditionnements sont proposés je n'y parviens pas. :(

Si vous avez déjà touché à "StockAvailable.php" et que vous avez des pistes je vous en serai très reconnaissant ! ;)

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

  • 1 year later...

Bonjour à tous,

Ayant un problème (ou besoin) similaire, je me permets de rejoindre cette conversation qui semble avoir eu bien plus de réponses que les autres sujets équivalents que j'ai pu voir sur le forum...

Mon besoin est le suivant, j'ai des produits (prêt à porter) qui sont pour certains d'entre eux mixtes. Je souhaite donc les présenter dans 2 catégories différentes (homme et femme). Dans PS, ça sera 2 produits distincts car je vais mettre des visuels et une présentation différents pour mieux présenter le produit.

Par contre, j'aimerai avoir un stock commun pour une meilleure gestion.

Je n'ai pas trouvé de module répondant à ce besoin, et je ne connaissais pas la notion de produit père/fils. Mais je ne sais pas si cela conviendra dans ce cas de figure.

 

Auriez-vous une idée / solution ?

 

Merci d'avance !

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