THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Nouveau plugin : Combinaison

(01-12-2009 00:59:40)


Bonsoir,

Un nouveau plugin sera prochainement disponible dans les contributions : Combinaison.

Fruit d'une longue réflexion,  complexe (dans sa conception, sa mise en œuvre et sa manipulation) et destiné plutôt aux utilisateurs avancés/experts de Thélia, Combinaison ajoute une couche supplémentaire d'abstraction dans la gestion des déclinaisons pour corriger l'ensemble des limitations liées aux produits multi déclinés.

Il répond à une demande récurrente des utilisateurs de Thélia lorsque ces derniers commercialisent des produits munis de plusieurs déclinaisons.

Combinaison apporte :

- Une gestion exacte et cohérente des stocks des produits multidéclinés.
- une interdépendance des déclinaisons les unes par rapport aux autres : leurs valeurs sont restituées en cascade en fonction des valeurs sélectionnées pour le précédentes.

C'est le premier multi-plugin pour Thélia : pour fonctionner il vous sera nécessaire d'installer et d'activer :
- DECLIX 1.0
- QUANTIX 1.0
- COMBINAISON 0.1

Les 3 plugins sont fournis dans l'archive Combinaison.rar.

Notez que les versions de DECLIX et QUANTIX proposées dans le forum ne sont pas compatibles et devront être désinstallées. La bonne version de DECLIX (1.0) sortira en plugin complet en même temps, cette nouvelle version restant autonome.

La nouvelle version de QUANTIX est dépendante de Combinaison et ne sera dispo qu'avec lui. L'ancienne version est dépréciée.


Un mode opératoire complet est proposé en pdf dans l'archive. Il est aussi disponible ici :
http://monbovin.tacasa.fr/client/pdf/tu … naison.pdf


Je suis très heureux de vous proposer ce plugin aujourd'hui : c'est l'aboutissement d'un long travail de plusieurs mois qui m'a permis de fortement progresser dans l'art de la programmation (fonctions récursives multiples, tableau à n dimensions, variables variables, passages par références et autres joyeusetés PHP ont été massivement sollicitées pour parvenir à l'objectif).


Conseil : à n'utiliser que si vous êtes à l'aise avec les déclinaisons dans Thélia.

BETA

Jean-Baptiste

Offline


même si je ne vais pas l'utiliser de suite, félicitation pour ce travail !

Last edited by UNi (01-12-2009 21:51:59)

Offline


La mise en oeuvre semble un peu complexe... Pourquoi diable faut-il activer la gestion des combinaisons produit par produit ? Normalement :

- Si zéro ou une seule déclinaison, alors ça se gère
- Si plusieurs déclis, alors ça devrait être actif de toute façon

Moins ce genre de plugin nécessite l'intervention de l'utilisateur, moins ça fait de support technique genre "mes stocks marchent pas tout le temps comme il faut"...

Sinon ça semble intéressant... Hâte de voir le code smile

-m

Offline


Bonsoir,

C'est une bonne question smile   Il aurait été plus simple de synchroniser automatiquement les combinaisons en fonction des déclinaisons créées/modifiées et c'est d'ailleurs la cinématique que j'avais développé dans un premier temps.

Malheureusement cela rend vite le plugin ingérable dans le temps parce qu'entre une modification/création/suppression d'une déclinaison ou d'une declidisp dans Thélia et les combinaisons dans un produit, il y a l'étape des déclinaisons et des declidisp au niveau du produit qu'il faut paramétrer au niveau de chaque produit.

Je m'explique : tu créées tes déclinaisons tes declidisp tes combinaisons et tu mets ton site en prod. 1 mois plus tard tu commercialises une nouvelle référence qui dispose d'une nouvelle couleur que tu n'avais pas prévu initialement.

Tu créées donc ta nouvelle declidisp (par exemple : noir) dans ta déclinaison "couleur"....
Si la synchronisation était automatique TOUTES les combinaisons de tous les produits disposant de la déclinaison couleur seraient ré initialisées au moment où tu validerais la nouvelle couleur dans la gestion des déclinaisons... Si tu as 1000 produits déclinés en couleur dans ton catalogue, tu vas paniquer parce qu'il faudra repasser sur tous ces produits pour ré enregistrer et re-paramétrer leurs combinaisons... Tout ça pour une nouvelle couleur qui impacte un seul produit....

Je ne sais pas si c'est très clair, ça le deviendra à l'usage.

Quoi qu'il en soit je reconnais que c'est un plugin complexe qui ne conviendra pas à tous... Il est tout jeune et perfectible, je compte bien l'optimiser en fonction de vos retours.

jb

Offline


Je vois en effet le problème... ! Pas évident (enfin gérer l'ajout direct d'une déclidisp est trivial : tu ajoutes les combinaisons dans ta table de gestion avec un stock à 0). Mais pour l'ajout de nouvelles déclinaisons c'est plus compliqué : peut-être faudrait-il alors imaginer une extension à la phase "ajout de déclinaison dans une rubrique" qui répartirait le stock dans les sous-ensembles :

Si par exemple je vends des t-shirts qui ont une déclinaison "couleur" : jaune et rose.

J'ai jaune => 2
rose => 3

Maintenant je leur rajoute une déclinaison "Taille" avec S, M, L.

Ca me génèrerait :

jaune + S => 1
jaune + M => 1
jaune + L => 0
rose + S => 1
rose + M => 1
rose + L => 1

Le stock total est toujours le même mais a été réparti sur les produits automatiquements. On peut sinon imaginer de balancer tout le stock sur la première déclidisp de la nouvelle déclinaison... C'est vrai que ça nécessite pour le commerçant de revenir gérer ses stocks.

Et puis le cas inverse peut se produire : j'ai envie de supprimer une déclinaison. Je décide de vendre mes T-shirts que par taille en supprimant la couleur... Dans ce cas il suffit d'additionner les valeurs de stocks des déclidisp restantes pour retrouver un stock complet.

Dans notre cas ça donnerait :

S => 2
M => 2
L => 1

Le tout est de conserver le stock total, qui est de 5 T-shirts.

Hmm... Je crois que j'ai besoin d'une aspirine big_smile

Offline


Salut,

je vais essayer de pousser ton raisonnement jusqu'au bout et voir si il est possible d'identifier un algorithme qui permettrait de se passer des phases d'activation manuelle au niveau de chaque produit mais cela impose à fortiori de se passer aussi  des re-synchornisations manuelles : du coup le plugin doit gérer tout seul et dans tous les cas de figure la synchronisation de la table Combinaison pour tous les produits en fonction des modifications effectuées au niveau des déclinaisons/declidisp... Ça va être costaud car les possibilités sont presques infinies.

Comme tu dis, le tout est effectivement de garder un stock identique lorsqu'on rajoute ou modifie quelquechose au niveau des déclinaisons et des declidisp.
Mais....
mais il faut également garder un stock correctement réparti entre les différentes combinaisons :

- Dans l'état actuel le plugin impose une synchro manuelle pour tous les produits impactés par une modification de déclinaison/declidisp

- Dans ton exemple, à ce stade, on arrive, au prix d'un alourdissement significatif du plugin, à automatiser certaines phases (suppression déclinaison, ajout/suppression declidisp) mais d'autres restent manuelles (ajout déclinaison, modif classement déclinaison, modification declidisp) : je ne sais pas si cette situation simplifie réellement l'utilisation. J'aurais même tendance à penser que ça embrouillera le marchand néophyte mais je me trompe peut-être.

- Il faut creuser pour chercher à automatiser 100% : si on y arrive, la charge supplémentaire de calcul se justifiera pleinement.

A mon tour d'aller chercher de l'aspirine.

A suivre.
jb

Offline


Alors là, moi je dis BRAVO l'artiste smile

Super utile !!!

++

Offline


Bonjour,

Pour commencer..BRAVO !

Petite question : quand est-ce que ce plugin doit arriver ? Je suis censé mettre en place une boutique d'ici peu (demain si possible ^^) de produits avec multi-déclinaisons mais dont une seule déclinaison change le prix du produit (les autres décli ne sont pas obligatoires et sont juste là pour renseigner la taille, la pointure...) .

Vous avez une idée pour me débrouiller sans ce plugin au cas où il arriverait un peu tard ?

D'avance merci !


La Cave De Guy
Terre De Haut

Offline


Salut,

En attendant sa mise à dispo dans les contributions je peux te l'envoyer par mail.

C'est vraiment la toute première mouture du plugin et il est peut-être un peu risqué de le mettre en prod : je n'ai aucun retour d'expérience à ce stade (dans mon jargon, il manque une recette utilisateur...) mais pourquoi pas allons-y je serais attentif à tes retours dans les prochains jours si il y a un souci.

envoie moi un mail :
ottoroots@gmail.com

Last edited by ottoroots (03-12-2009 15:18:13)

Offline


Bonjour!

Y a-t-il la possibilité de faire marcher ce plugin au niveau des produits et non du panier? 
Car QUANTIX peut fonctionner en indiquant la quantité commandée au niveau du produit, mais  DECLIX doit être modifié en profondeur pour fonctionner dans produit.php.

Merci d'avance


www.cascadefleurie.com

Offline


Bonjour,

Combinaison et declix  fonctionnent au niveau du produit.
La boucle QUANTIX (celle du plugin pas celle du forum) fonctionne au niveau du panier.

Elle sera compatible pour la page produit dans quelques jours (faudrait déjà que le plugin soit disponible)

Offline


Bonjour,

Une nouvelle version 0.2 est disponible :

-Correction d'un bug : fiabilisation de la restitution des déclinaisons en fonction de leur classement.

- Mais surtout Quantix est désormais utilisable aussi sur la fiche produit selon ce modèle :

 <form action="produit.php" method="get" name="panix"  id="panix">
            <input type="hidden" name="ref" value="#REF" />  
            <input type="hidden" name="append" value="1" />      
            <THELIA_DECLI type="DECLIX" rubrique="#RUBRIQUE" produit="#ID" ref="#REF">
            #CHAPO
            <select name="declinaison#CLASSEMENT" onchange="submit()" >
            <THELIA_DECLI2 type="COMBINAISON" ref="#REF" classement="#CLASSEMENT">
            <option value="#DECDECLI" #SELECTED >#DECDECLI</option>
            </THELIA_DECLI2>                
            </select>
            <br />
            <br />
            </THELIA_DECLI>
            Choisir une quantité :
            <select name="quantite" size="1">
            <THELIA_quantite type="QUANTIX" produit="#ID">
            <option value="#NUM" #SELECTED>#NUM</option>
            </THELIA_quantite>
            </select>
            </form>
			<p><a class="acheter" onclick="combine()"><span><span>Ajouter au panier</span></span></a></p>

Ainsi conçu, le formulaire de la page produit restitue la quantité disponible dynamiquement selon les declidisp sélectionnées dans les autres champs du formulaire. La quantité sélectionnée ici par le client est transmise au panier lors de l'utilisation du lien "ajouter".

otto

Last edited by ottoroots (12-12-2009 11:41:06)

Offline


Précision :

La version 0.1 est à désinstaller manuellement préalablement depuis le BO (les 3 plugins). La table combinaison (et vos enregistrements) ne seront pas effacés.

Last edited by ottoroots (12-12-2009 13:28:59)

Offline


Quand tu dis qu'elle est disponible pour la fiche produit, est ce que tu entends aussi  par là alors que l'on peut utiliser quantix seul, sans combinaison  sur la fiche produit ?

Offline


Salut,

Non elle ne fonctionne qu'avec les combinaisons, précision utile en effet.

Offline


bonsoir, juste une petite question:
Dans le PDF d'instruction:

Ajout d’un script dans le header :
<script type=»text/javascript»>
function combine() {
var param ="";
for (var i=1; i<window.document.panix.elements.length; i++) {
param += ‘&’ +window.document.panix.elements[i].name +’=’ +window.document.panix. elements[i].value;
}
location=’panier.php?action=ajouter_combi&ref=’ +window.document.panix.elements[0]. value + param;
}
</script>
Ce script manipule le formulaire nommé "panix" lors de l’envoi du produit au panier.

J'ai une erreur script dans dreamweaver au niveau de la ligne :
param += ‘&’ +window.document.panix.elements[i].name +’=’

Est ce que quelqu'un aurait une idée, car du coup je n'ais aucun envoi dans le panier des différentes declinaisons: tailles couleur .

Merci d'avance pour vos réponses.

arlekin

Offline


Bonjour,

Peut-être est-ce dû au tutoriel si tu as copié /collé le code depuis le pdf : je vois des apostrophes et des guillemets mal représentés : j'avais déjà eu ce phénomène quand je colle du code dans InDesign....

Peux-tu remplacer le script par celui-ci :

<script type="text/javascript">
	
	function combine() {
		var param ="";
		for (var i=1; i<window.document.panix.elements.length; i++) {
		param += '&' +window.document.panix.elements[i].name +'=' +window.document.panix.elements[i].value;
		}
		location='panier.php?action=ajouter_combi&ref=' +window.document.panix.elements[0].value + param;
	}	
	</script>

Offline


Merci à toi, effectivement, j'avais fait du copié/collé wink
Je n'ais plus d'erreur dreamweaver.

Par contre, je pense que j'ai du merdé quelque part.
Dans le front produit, j'ai bien les choix taille couleur quantité et quand je valides
Opera%203.png
cela envoi bien dans mon panier, mais sans les declinaisons.
Opera%204.png

J'ai juste la quantité totale.

Dans le panier.html, j'ai suivi le pdf et mis ceci:

<form action="#URLPANIER" method="post" name="formpanier#ARTICLE" id="formpanier#ARTICLE">
                      <input type="hidden" name="article" value="#ARTICLE" />
                      <input type="hidden" name="action" value="modifier" />
                      <select name="quantite" size="1" onchange="document.formpanier#ARTICLE.submit()">
                      <THELIA_quantite type="QUANTIX" article="#ARTICLE" produit="#ID">
                      <option value="#NUM" #SELECTED>#NUM</option>
                      </THELIA_quantite>
                      </select>
                </form>

Si quelqu'un a une idée de mon erreur, merci d'avance pour votre aide

arlekin

Last edited by arlekin (14-12-2009 14:31:29)

Offline


As-tu rajouté #DECTEXTE sur ton panier.html ?

Offline


ottoroots wrote:

As-tu rajouté #DECTEXTE sur ton panier.html ?

heu... non

Je viens de le rajouter juste après le code, mais même résultat....
Désolé d'être newbie....

J'ai du zappé quelque chose, je vais bientôt rentrer en mode kojak a m'azrracher les cheveux avec cela wink

arlekin

Offline


non rajoutes juste #DECTEXTE comme spécifié dans le wiki, après la balise #TITRE dans ta boucle "panier" sur panier.html.

Offline


ottoroots wrote:

non rajoutes juste #DECTEXTE comme spécifié dans le wiki, après la balise #TITRE dans ta boucle "panier" sur panier.html.

Je l'ais mis, mais c'est bizarre il veut pas l'afficher, j'ai fait le test egalement avec le produit HT cela s'affiche sans problèmes.

<td class="ligne">#TITRE #DECTEXTE</td>
                    
                    <td align="center" class="ligne">#PRIXU €</td>
		    <td align="center" class="ligne">
            <form action="#URLPANIER" method="post" name="formpanier#ARTICLE" id="formpanier#ARTICLE">
                      <input type="hidden" name="article" value="#ARTICLE" />
                      <input type="hidden" name="action" value="modifier" />
                      <select name="quantite" size="1" onchange="document.formpanier#ARTICLE.submit()">
                      <THELIA_quantite type="QUANTIX" article="#ARTICLE" produit="#ID">
                      <option value="#NUM" #SELECTED>#NUM</option>
                      </THELIA_quantite>
                      </select>
                </form>

Y a t'il autre chose a ajouter dans panier.html que j'aurais zappé ?

arlekin

Offline


J'ai une autre petite question concernant cet excellent plugin:
Voilà, j'essaye d'avoir la même logique au niveau des rubriques, notemment pour les promos ou nouveautés au niveau des miniatures:
Opera%205.png
J'ai essayé avec la même logique que pour le fichier produit.html
En modifiant rubrique.html, J'ai réussi a avoir la config de l'image.

Mais l'ajout au panier ne fonctionne pas avec la commande combine()

voici le code que j'ai mis, en pensant a remplacer produit.php par rubrique.php:

                    <THELIA_stock type="PRODUIT" ref="#REF" stockmini="1">
                	<form action="rubrique.php" method="get" name="panix"  id="panix">
            <input type="hidden" name="ref" value="#REF" />  
            <input type="hidden" name="append" value="1" />      
            <THELIA_DECLI type="DECLIX" rubrique="#RUBRIQUE" produit="#ID" ref="#REF">
            <select name="declinaison#CLASSEMENT" onchange="submit()" >
            <THELIA_DECLI2 type="COMBINAISON" ref="#REF" classement="#CLASSEMENT">
            <option value="#DECDECLI" #SELECTED >#DECDECLI</option>
            </THELIA_DECLI2>                
            </select>
            </THELIA_DECLI>
            <select name="quantite" size="1">
            <THELIA_quantite type="QUANTIX" produit="#ID">
            <option value="#NUM" #SELECTED>#NUM</option>
            </THELIA_quantite>
            </select>
            </form>
        
                    <p><a class="acheter" onclick="combine()"><span><span>Ajouter au panier</span></span></a></p>
                	<p><a class="acheter" href="#URL"><span><span>En savoir +</span></span></a></p>
                    </THELIA_stock>

Et au niveau du script entre les balises head:

<script type="text/javascript">
    
    function combine() {
        var param ="";
        for (var i=1; i<window.document.panix.elements.length; i++) {
        param += '&' +window.document.panix.elements[i].name +'=' +window.document.panix.elements[i].value;
        }
        location='panier.php?action=ajouter_combi&ref=' +window.document.panix.elements[0].value + param;
    }    
    </script>

Je penses qu'il doit y avoir une astuce, pour que cela fonctionne.
j'ai fait des tests, si un seul produit est dans la rubrique nouveauté ou promotion, cela fonctionne.
En fait cela bugue, si j'ai 2 produits ou plus dans ces rubriques....


Je penses également que d'autre serait également intéressé par ce complément du plugin wink

Merci d'avance

Last edited by arlekin (18-12-2009 14:37:39)

Offline


Salut,

C'est normal que ça bug avec 2 produits ou plus : du coup tu as une page rubrique.html avec plusieurs form qui ont le même ID : "panix" (pas bon). Donc au niveau du script ça ne marche plus parce qu'il ne sait plus identifier à quel formulaire se référer. Il s'agit donc bien d'adapter le javascript pour qu'il fonctionne au niveau rubrique ainsi que le nommage des formulaire (leur identification doit être dynamique et non plus "panix" puisqu'il y en aura plusieurs...)

Offline


Merci de ta réponse ottoroots,
Je pense pourtant que cela serait très utile comme dévellopement de ce plugin.
Il est vrai également que mes compétences en la matière sont quasi nul voit totalement.
Est ce que tu as en projet, en fonction bien sur du temps que tu disposes de développer ce scrypt dans cette voie , pour pouvoir l'adapter au rubriques ?
Merci à toi, en tout cas au moins je sais pourquoi cela marche pas wink

arlekin