THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline

#1 Incitation 0.2

(17-10-2009 01:07:35)


Une nouvelle version (0.2) d'incitation est en cours de parution sur les contrib

Les bugs remontés sont corrigés (merci à Ach notamment )

Et surtout, cette version vous permettra de créer autant d'incitations que vous souhaitez.
Vous pouvez ainsi prévoir des remises en pallier de type :

- pour une commande de +100€ : remise de 5%
- pour une commande de +200€ : remise de 10% etc.

Ou encore :
- pour l'achat de 3 produits A, l'accessoire A offert
- pour l'achat de 3 produits B, l'accessoire B offert etc.


Pas de mise à jour : vous devez d'abords désinstaller la version précédente (les tables sont différentes)


à tester avant mise en prod.

jb

Offline

#2 Re: Incitation 0.2

(17-10-2009 07:09:31)


Salut à toi Otto,

Bonne nouvelle que ton retour sur le forum, tu nous as fait défaut pour toutes les questions sur les déclinaisons, rabais, promos, j'en passe et des meilleures ....

Et tous cas, merci pour ton thélia book qui m'a bien servi pour me lancer dans les plugins.

Alfouine,

Last edited by alfouine (17-10-2009 07:09:44)


Au royaume des aveugles, les borgnes sont mal vus.

Offline

#3 Re: Incitation 0.2

(17-10-2009 10:07:28)


Salut Alfouine,

Ca me fait plaisir de trouver du temps pour venir vous prêter main forte... Depuis des mois je suis absent pourtant je me suis tenu au courant des posts d'ici presque tous les jours seulement j'avais trop de boulot pour intervenir.

J'ai livré plusieurs sites Thélia cet été et j'ai un camion entier de projets avec Thélia pour 2009/210 alors je vais être là souvent.

Derrière l'idée du Théliabook il y avait pile l'idée d'accélérer les capacités de développements de la communauté. Ma façon de participer à la diffusion de Thélia qui est et reste le meilleur projet Open Source Ecommerce que j 'ai pu trouver (et c'est pas prêt de finir)

En tout cas merci à toi de rendre ce forum vivant et vraiment super dynamique (ils nous envient tous avec notre forum...:p

otto

Offline

#4 Re: Incitation 0.2

(21-11-2009 02:12:06)


Bonsoir ottoroots,

J'ai installé ton nouveau plugin "incitation" que je trouve super au passage, en pensant qu'il conviendrait pour mon cas.
Mais je n'arrive pas à faire ce que je veux, à savoir -20% sur le 6 ième produit. J'arrive bien à faire ma réduction quand la commande atteint les 5 produits, mais elle s'applique sur l'ensemble de la commande et non sur le sixième.

Y a t-il une solution ?
Merci.

Oui oui ça peut pas fonctionner cette histoire, j'ai besoin d'appliquer un pourcentage de réduction sur le 6ième produit, qu'ils soient commandés en une fois ou en plusieurs fois à des dates différentes. Donc le plugin "Incitation" ne conviendrait pas.

En fait c'est un genre de carte de fidélité virtuelle qu'il faudrait.

Existe t-il un plugin pour ça ?

neofarm

Last edited by neofarm (21-11-2009 03:03:14)


Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4

Offline

#5 Re: Incitation 0.2

(21-11-2009 13:27:40)


Salut Neofarm,


Je vois ce que tu cherches à faire mais effectivement incitation n'est pas prévu pour cet usage. En revanche créer un nouveau plugin ou modifier Incitation devrait être possible assez simplement. Je vais y réfléchir ...

Pour bien comprendre : tu cherches à mettre en place une remise sur le prix d'un produit si le client achète ou a acheté dans le passé un nombre défini de ce même produit ? Sans limite de temps ?

Offline

#6 Re: Incitation 0.2

(21-11-2009 15:25:41)


Bonjour ottoroots,

Oui c'est ça, un genre de carte de fidélité. Sauf que ce n'est pas obligatoire de commander le même produit, juste par exemple 20% sur le 6iéme produit commandé quelque soit ces produits et la date de commande.

Je te remercie de ton intérêt à mon problème.

neofarm


Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4

Offline

#7 Re: Incitation 0.2

(22-11-2009 15:32:53)


Salut,

Voilà une première piste qui peut-être enrichie pour un plugin : FIDELIZZA, la carte de fidélité virtuelle façon pizza smile :

Pour être le moins intrusif possible (pas de nouvelles table, pas de nouvelle boucle...) j'utiliserais la session promo native de Thélia :

Dans cet exemple de test tu crées une promo Thélia avec le code promo suivant :
code : FIDELIZZA (tel quel)
valeur : 20
type : pourcentage (ta remise souhaitée : 20%)
mini : 6 (pour : le 6ième produit à -20%)

le plugin s'appelle fidelizza voici le code :

<?php

include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsClassiques.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Promo.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Article.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Commande.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Venteprod.class.php");

class Fidelizza extends PluginsClassiques {
	
	
	function Fidelizza(){
		$this->PluginsClassiques("fidelizza");	
	}
	
	
	function nb_venteprod($idclient){
		$nombre=0;
		$commande = new Commande();
		$venteprod = new Venteprod();
		$query = "select * from $commande->table where client='".$idclient."'";
		$resul = mysql_query($query, $commande->link);
		while($cmde = mysql_fetch_object($resul)){
		$query2 = "select * from $venteprod->table where commande='".$cmde->id."'";
		$resul2 = mysql_query($query2, $venteprod->link);
			while($vprod = mysql_fetch_object($resul2)){
			$nombre += $vprod->quantite;
			}		
		}
	return $nombre;		
	}
	
	function action(){
		if ($_REQUEST['action'] == 'ajouter' || $_REQUEST['action'] == 'modifier' || $_REQUEST['action'] == 'supprimer'){
		$fidel = 'FIDELIZZA';
		$promofidel = new Promo();
		$promofidel->charger($fidel);		
		$_SESSION['navig']->promo = new Promo;
		
			if ($_SESSION['navig']->client->id !==""){
			
				$nbre = $this->nb_venteprod($_SESSION['navig']->client->id);
					
				for($i=0; $i<$_SESSION['navig']->panier->nbart; $i++){
				
					for ($j=0; $j<$_SESSION['navig']->panier->tabarticle[$i]->quantite; $j++){
				
					$nbre += 1;
						
						if ($nbre % $promofidel->mini == 0) {
						$valeur = $_SESSION['navig']->panier->tabarticle[$i]->produit->prix * $promofidel->valeur/100;						
					
						$_SESSION['navig']->promo->id = $promofidel->id;
						$_SESSION['navig']->promo->code = $promofidel->code;
						$_SESSION['navig']->promo->valeur += $valeur;
						$_SESSION['navig']->promo->type = 1;
						$_SESSION['navig']->promo->mini = $promofidel->mini;
						$_SESSION['navig']->promo->utilise = $promofidel->utilise;
						$_SESSION['navig']->promo->illimite = $promofidel->illimite;
						$_SESSION['navig']->promo->datefin = $promofidel->datefin;		

						}						
					}				
				}
			}
		}
	}
}
?>

Voilà comment il doit fonctionner :
1°) il calcule le nombre de produits commandés précédemment par un client
2°) A chaque manipulation dans le panier (ajout, suppression, modification d'une quantité) il calcule le nombre de produits déjà commandé + les produits dans le panier. A chaque fois qu'il rencontre une occurrence "6" (dans ton cas) il applique la remise pour ce produit qu'il stocke dans la session promo de Thélia.

A finaliser :
- compatibilité avec les prix des produits en promotion (prix2)
- compatibilité avec les remises globales niveau client.
- compatibilité avec les codes promos personnalisés entrés sur commande.html
- Visualisation de la carte de fidélité côté client (sur la vue "compte du FO : prévoir une nouvelle boucle fidelizza) et éventuellement côté BO

A noter que ce plugin ne sera pas compatible avec incitation

A suivre...

Last edited by ottoroots (22-11-2009 15:42:01)

Offline

#8 Re: Incitation 0.2

(22-11-2009 16:06:04)


Bonjour ottoroots,

Où dois-je coller ton code, dans un nouveau fichier ?
Dois-je désinstaller "incitation" ou le désactiver suffit ?

Je suis désolé de t' embêter comme ça, mais je ne connais rien à PHP et je ne saurai pas faire de plugin, j'essaie bien de comprendre mais j'ai pas la bosse du php je crois.
Merci encore pour ton aide.

neofarm

Last edited by neofarm (22-11-2009 16:08:48)


Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4

Offline

#9 Re: Incitation 0.2

(22-11-2009 16:14:27)


Oui copie/colle ce code dans un fichier Fidelizza.class.php dans un dossier fidelizza du répertoire client/plugins....

Désactive Incitation et active fidelizza.

Puis testes au moins la mécanique à ce stade.

Offline

#10 Re: Incitation 0.2

(22-11-2009 17:01:32)


J'ai fais comme tu as dis mais je vois rien de changé pas de prix sur le 6 ième produit, j'ai du faire un truc de mal.

J'ai bien desactivé le plugin "incitation".
Puis coller ton code dans le fichier Fidelizza.class.php  qui est lui dans un dossier fidelizza que j'ai inséré dans client/plugins... et enfin activé dans le BO.

J'ai ensuite créé le code promo FIDELIZZA avec les valeurs :
     Code : FIDELIZZA
     Type : Pourcentage
     Montant du code promotion : 20
     Montant d'achat minimum : 6
     Code actif : oui
     Utilisation unique ou illimité : illimité
     Date d'expiration : //

voilà rien ne se passe, faut-il faire autre chose ?

merci


Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4

Offline

#11 Re: Incitation 0.2

(22-11-2009 17:12:03)


1°) Est-ce que le client est identifié à l'étape du panier ?

2°)As-tu bien les  substitutions #PANIER_REMISE et #PANIER_TOTREMISE sur panier.html ?

Offline

#12 Re: Incitation 0.2

(22-11-2009 17:16:27)


voici mon code du fichier panier.html :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	#INCLURE "meta.html"

</head>
<body>
	
<div id="wrapper">
	<div id="subwrapper">
		#INCLURE "entete.html"
		
		<div id="chemin">Vous êtes ici :<a href="index.php">Accueil boutique</a> / Contenu de mon panier</div>
		
		#INCLURE"menu.html"
		
		<div id="contenu">
		
			<div id="etapesDeCommande">
				<ul>
					<li class="selection"><span class="chiffreSelection">1</span>Panier</li>
					<li><span>2</span>Facturation et livraison</li>
					<li><span>3</span>Je vérifie ma commande</li>
					<li><span>4</span>Paiement sécurisé</li>
				</ul>
			</div>	
						
			<h2>Contenu de mon panier</h2>
			
			<T_CONTENU_PANIER>
			<table width="100%" border="0" cellpadding="5" cellspacing="0">
                <tr>
                    <th colspan="2">Contenu de mon panier</th>
                    <th align="center">Taille</th>
                    <th align="center">Prix unitaire</th>
                  <th align="center">Quantité</th>
                  <th align="center">Total TTC</th>
                  <th align="center">Vider</th>
                </tr>
				<THELIA_CONTENU_PANIER type="PANIER">
				<tr>
					<td class="ligne">
                   	  <THELIA_IMAGE type="IMAGE" num="1" produit="#ID" largeur="50">
						<img src="#IMAGE" alt="#PRODTITRE " title="#PRODTITRE"/>
						</THELIA_IMAGE>
					</td>
                    <td class="ligne">#TITRE</td>
                      <td align="center" class="ligne">#DECVAL</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="QUANTITE" article="#ARTICLE">
                      <option value="#NUM" #SELECTED>#NUM</option>
                      </THELIA_quantite>
                      </select>
                      
                </form>
					</td>
				  <td align="center" class="ligne">#TOTAL €</td>
				  <td td class="ligne" align="center"><a href="#SUPPRURL">Supprimer</a></td>
				</tr>
                </THELIA_CONTENU_PANIER>
                <tr>
                	<th colspan="5"> </th>
					<th align="right">TOTAL DU PANIER :</th>
					<th align="center" class="total">#PANIER_TOTAL €</th>
					
				</tr>
			</table>
			<span class="avertir">Veuillez lire et accepter les CGV pour passer à l'étape suivante</span>

            <div class="queFaire">
                          
				<script type="text/javascript">
                    function ValideForm() {
                     if(document.getElementById('btnaccepte').checked == true) {document.getElementById('btmvalide').disabled = false }
                     if(document.getElementById('btnaccepte').checked == false) {document.getElementById('btmvalide').disabled = true }
                     }
                </script>
                 
                <form>
                  <span class="cgv">
                     <input type="checkbox" id="btnaccepte" value="valeur" onClick="ValideForm()"/>
                     En cochant cette case, j'accepte sans reserve et je reconnais avoir pris connaissance des <a href="cgv.php">Conditions générales de vente...</a>
                  </span>
                    <a class="bouton" href="index.php"><span><span>Continuer mes achats</span></span></a>
                    <input type="button" id="btmvalide" value="Finaliser ma commande" onClick="self.location='/creationcoiffure/adresse.php'" disabled />
               </form> 
              
                    
			</div>
			<div>
			
			</div>
			
			</T_CONTENU_PANIER>
			
			<h4>Votre panier est vide</h4>
            <div class="queFaire">
				<a class="bouton" href="index.php"><span><span>Retour à la boutique</span></span></a>
			</div>		
			<//T_CONTENU_PANIER>
		</div>
		#INCLURE "signature.html"
		#INCLURE "pied.html"
	</div>
</div>
<div><span>Copyright © 2009 Création coiffure.fr</span></div>
</body>
</html>

Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4

Offline

#13 Re: Incitation 0.2

(22-11-2009 17:18:54)


et celui de commande.html :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
	#INCLURE "meta.html"

</head>
<body>
	
<div id="wrapper">
	<div id="subwrapper">
	#INCLURE "entete.html"
		<div id="chemin">Vous êtes ici :<a href="index.php">Accueil boutique</a> / Récapitulatif de ma commande</div>
		#INCLURE"menu.html"
		<div id="contenu">
			<div id="etapesDeCommande">
				<ul>
                    <li><span>1</span>Panier</li>
                    <li><span>2</span>Facturation et livraison</li>
                    <li class="selection"><span class="chiffreSelection">3</span>Je vérifie ma commande</li>
                    <li><span>4</span>Paiement sécurisé</li>
				</ul>
			</div>		 
			<h2>Récapitulatif de ma commande </h2>
            <form action="commande.php" id="formulaire">
            <input type="hidden" name="action" value="codepromo" />
            
            <table width="100%" border="0" cellspacing="0" cellpadding="5">
            	<tr>
            		<th colspan="2">Nom de l'article</th>
            		<th align="center">Prix unitaire </th>
           		  <th align="center">Quantité</th>
           		  <th align="center">Total</th>
           	    </tr>
           	  
            	<THELIA_panier type="PANIER">
            	<tr>
                    <td class="ligne">
                        <THELIA_IMAGE type="IMAGE" num="1" produit="#ID"  largeur="80">
                        <img src="#IMAGE" alt="#PRODTITRE" title="#PRODTITRE"/>
                        </THELIA_IMAGE>
                    </td>
                    <td class="ligne">#TITRE - #REF - #DECVAL</td>
                    <td align="center" class="ligne">#PRIXU €</td>
                  <td align="center" class="ligne">#QUANTITE</td>
                  <td align="center" class="ligne">#TOTAL €</td>
                </tr>

                </THELIA_panier>

                    <tr>
                   	#FILTRE_different(#PANIER_REMISE||0||
                   	<th colspan="3"> </th>
                    <th  class="totalremise" align="right"> Bon de réduction </th>
            	    <th align="center">#PANIER_REMISE €</th>
                    </tr>)
                    
                  <tr>
                  <th colspan="3"> </th>
            	    <th align="right">Frais de livraison </th>
            	    <th align="center">#PANIER_PORT €</th>
                  </tr>
                             
                  <tr>
                  <th colspan="3"> </th>
            	    <th align="right">TOTAL</th>
            	    <th align="center" class="total">#PANIER_TOTPORT €</th>
                  </tr>
           </table>
           
           <table class="blocreduction"  border="0" cellspacing="0" cellpadding="5">
                    <th  class="FondBlocreduction">
                    <span >
				       <h4 class="derniereLigne"><label class="codeDeReduction">Saisissez un code réduction</label><br />
				       <input name="code" type="text" class="codeDeReduction"/>
				       <button type="submit" class="boutonMemeLigneQuInput"><span><span>OK</span></span></button>
				       </h4>
                    </span>
                    </th>
           </table>

         </form>
        
            <div class="adresseDeLivraisonRecap">
            
           
            #FILTRE_different(#COMMANDE_TRANSPORT||1||				
				<h3>Vérifier votre adresse de livraison</h3>
				<div class="contenu">
            		<THELIA_adrcours type="ADRESSE" adresse="#ADRESSE_ACTIVE">
            		#RAISON #PRENOM #NOM	<br />
            		#ADRESSE1 #ADRESSE2 #ADRESSE3<br />
            		#CPOSTAL #VILLE<br/>
            		<THELIA_pays type="PAYS" id="#PAYS">
            		#TITRE	
            		</THELIA_pays>
            		</THELIA_adrcours>  
				</div>
				<a href="#URLPREC" class="modifierOuAjouter">Modifier cette adresse</a>)
				</div>
				
			    <div>
			    #FILTRE_egalite(#COMMANDE_TRANSPORT||1||
			    <h4>Vous avez choisis de retirer vos produits au salon de coiffure à l'adresse suivante:</h4><br />
			    <h3 class="AdresseVendeur">CRÉATION COIFFURE<br />
			    4 grande rue<br />
			    70100 AUTREY LES GRAY</h3>)
			    </div>

			            		     
		</div>		  	
		<div id="contenu">
			<h2>Choisissez un mode de paiement : </h2>
			<div class="choixDuReglement">
            	
					<THELIA_PAIEMENT type="PAIEMENT">
					<a href="#URLPAYER"><span class="choisir"><img class="logopaiement" src="#LOGO" alt="#NOM"/></span></a>
				    </THELIA_PAIEMENT>
               
			</div>
		</div>
		
		#INCLURE "pied.html"
	</div>
</div>
<div><span>Copyright © 2009 Création coiffure.fr.Tous droits réservés.</span></div>
</body>
</html>

Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4

Offline

#14 Re: Incitation 0.2

(22-11-2009 17:19:21)


Au niveau du panier, tu affiches seulement le total sans prendre en compte la remise (#PANIER_TOTAL).  Adaptes ton squelette pour afficher la remise (#PANIER_REMISE) et le total remise comprise (#PANIER_TOTREMISE).

Offline

#15 Re: Incitation 0.2

(22-11-2009 18:08:03)


Apparement ça fonctionne qu'il y ai commande en une fois ou en plusieurs fois, merci.

Par contre si je peux encore t'embêter, Le pourcentage accordé et valable uniquement sur le 6 ieme produit mais la réduction s'affiche avant le total , j'aimerais qu'elle soit affichée dans la ligne du produit concerné. Est-ce possible ?

Dans commande.html la remise est affichée dans la ligne Remise est si je tape un code promo, la remise FIDELIZZA n'est plus pris en compte, est-il possible que la remise (-20%) soit ajoutée aux autres codes promos et affichée dans une autre ligne.

Merci encore


Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4

Offline

#16 Re: Incitation 0.2

(22-11-2009 18:21:59)


1/ Non : pour rester simple j'utilise la promo qui calcule au niveau du total pas au niveau d'un produit. J'ai vite fait essayé d'implémenter quelque chose au niveau du produit mais c'est très vite beaucoup plus compliqué et nécessite plus de temps que je ne peux pas libérer aujourd'hui.

2/ En revanche si tu lis bien les premiers posts tu verras que je réponds aux autres questions : si la mécanique que je te propose ici, pour tester, convient, je peux développer ce plugin complet avec les bons contrôles de cohérence très simplement.

Offline

#17 Re: Incitation 0.2

(22-11-2009 18:44:51)


Oui OUi ottoroots la mécanique me convient trés bien et en modifiant un peu le fichier panier finalement j'arrive à quelque chose de pas mal, un petit filtre et hop la ligne des -20% ne s'affiche qu'au moment de l'ajout du 6 ieme produit.

J'attend ton plugin avec impatience !!!!

Pour faire au mieux dois-je tout enlever ce que j'ai mis jusque là ?

Merci beaucoup c'est super d'avoir des pros comme toi pour ce genre de problème, pour moi tellement nuls en php.

neofarm


Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4

Offline

#18 Re: Incitation 0.2

(23-11-2009 19:52:24)


Salut,

J'ai avancé sur le plugin, il est maintenant compatible avec les prix promos, les remises globales et les codes promos.


Il crée un système de fidélité pour les clients de type : pour X produits achetés, le suivant bénéficie de y% de réduction. Les commandes précédentes sont prises en compte.


Il reste incompatible avec Incitation.
Comme lui, il utilise les codes promos Thélia mais il détourne la valeur "achat mini" du code FIDELIZZA à créer : cette valeur stockera dans ce cas l'occurrence attendue (tous les "x" produits achetés...)
La remise de FIDELIZZA doit être en pourcentage et de type illimité

Il y a maintenant une mini-boucle pour la page moncompte.html.
<THELIA_fid type=’’FIDELIZZA’’>
#POINT
</THELIA_fid>

pour générer graphiquement la carte de fidélité pour le client.

Voilà le rendu par défaut :

fide.png

Il faut créer un répertoire image dans le dossier fidelizza et 2 images :
1 image "point_plein.png"
1 image "point_vide.png"


Il faut enfin ajouter la variable :

$fidelizza_active=1;
sur la page panier.php et sur commande.php

Le nouveau script :

<?php

include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsClassiques.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Promo.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Article.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Commande.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Venteprod.class.php");

class Fidelizza extends PluginsClassiques {
	
	
	function Fidelizza(){
		$this->PluginsClassiques("fidelizza");	
	}
	
	
	function nb_venteprod($idclient){
		$nombre=0;
		$commande = new Commande();
		$venteprod = new Venteprod();
		$query = "select * from $commande->table where client='".$idclient."'";
		$resul = mysql_query($query, $commande->link);
		while($cmde = mysql_fetch_object($resul)){
		$query2 = "select * from $venteprod->table where commande='".$cmde->id."'";
		$resul2 = mysql_query($query2, $venteprod->link);
			while($vprod = mysql_fetch_object($resul2)){
			$nombre += $vprod->quantite;
			}		
		}
	return $nombre;		
	}
	
	function action(){
		if ($fidelizza_active == 1 || $_REQUEST['action'] == 'codepromo'){
		$fidel = 'FIDELIZZA';
		$promofidel = new Promo();
		$promofidel->charger($fidel);
		$session_promo=0;
			
			if ($_REQUEST['action']== "codepromo" && $_REQUEST['code']!=='' && $_REQUEST['code']== $_SESSION['navig']->promo->code){	
				$session_promo = 1;
				if ($_SESSION['navig']->promo->type == 2){
				$total = $_SESSION['navig']->panier->total();
				$total -= $total* $_SESSION['navig']->client->pourcentage / 100;
				$_SESSION['navig']->promo->valeur = round ($_SESSION['navig']->promo->valeur*$total/100, 2); 
				}
			}
			
			else {			
			$_SESSION['navig']->promo = new Promo;
			}
		
			if (isset($_SESSION['navig']->client->id)){
			
				$nbre = $this->nb_venteprod($_SESSION['navig']->client->id);
					
				for($i=0; $i<$_SESSION['navig']->panier->nbart; $i++){
				
					for ($j=0; $j<$_SESSION['navig']->panier->tabarticle[$i]->quantite; $j++){
				
					$nbre += 1;
						
						if ($nbre % $promofidel->mini == 0) {
							if ($_SESSION['navig']->panier->tabarticle[$i]->produit->promo == 1) $valeur = $_SESSION['navig']->panier->tabarticle[$i]->produit->prix2 * $promofidel->valeur/100;
							else $valeur = $_SESSION['navig']->panier->tabarticle[$i]->produit->prix * $promofidel->valeur/100;
							
							$valeur -= $valeur* $_SESSION['navig']->client->pourcentage / 100;
							
							if ($session_promo == 1){
							$_SESSION['navig']->promo->valeur += $valeur;
							$_SESSION['navig']->promo->type = 1;
							}
							
							else {								
							$_SESSION['navig']->promo->id = $promofidel->id;
							$_SESSION['navig']->promo->code = $promofidel->code;
							$_SESSION['navig']->promo->valeur += $valeur;
							$_SESSION['navig']->promo->type = 1;
							$_SESSION['navig']->promo->mini = $promofidel->mini;
							$_SESSION['navig']->promo->utilise = $promofidel->utilise;
							$_SESSION['navig']->promo->illimite = $promofidel->illimite;
							$_SESSION['navig']->promo->datefin = $promofidel->datefin;		
							}
						}						
					}				
				}
			}
		}
	}
	
	function boucle($texte, $args){
		$search ="";
		$res="";
		
		$client = $_SESSION['navig']->client->id;

		if($client =="") return;
		
		$fidel = 'FIDELIZZA';
		$promofidel = new Promo();
		$promofidel->charger($fidel);
			
		$nbre = $this->nb_venteprod($client);
		$point = 0;	
		for ($i=0; $i<$promofidel->mini;$i++) {
			
		if ($nbre % $promofidel->mini == 0) $point = 1;	
		$nbre--;	
		if ($point ==1) $x = '<img src="client/plugins/fidelizza/image/point_vide.png" />';
		else  $x = '<img src="client/plugins/fidelizza/image/point_plein.png" />';			
		$temp = str_replace("#POINT", "$x", $texte);       
		if(trim($temp) !="") $res .= $temp;    
		}    
	return $res;        
	}
}
?>

Si tout va bien, il peut-être finalisé pour la fin de la semaine et dispo sur les contrib.

@+

Last edited by ottoroots (23-11-2009 19:54:24)

Offline

#19 Re: Incitation 0.2

(23-11-2009 20:41:10)


Merci, merci, beaucoup ottoroots. C'est génial, Je vais essayer tout ceci.


Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4

Offline

#20 Re: Incitation 0.2

(24-11-2009 02:41:00)


J'ai testé ton plugin, la remise FIDELIZZA n'est pas pris en compte dans le panier, j'ai pourtant bien le code qui fonctionnait avant la mise à jour.
J'ai bien inséré le variable $fidelizza_active=1; dans commande.php et panier.php, et tout vérifié mais rien ne se passe au niveau du panier quand on commande le 6 ieme produit.

Faut-il modifier quelque chose au code panier.html :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	#INCLURE "meta.html"

</head>
<body>
	
<div id="wrapper">
	<div id="subwrapper">
		#INCLURE "entete.html"
		
		<div id="chemin">Vous êtes ici :<a href="index.php">Accueil boutique</a> / Contenu de mon panier</div>
		
		#INCLURE"menu.html"
		
		<div id="contenu">
		
			<div id="etapesDeCommande">
				<ul>
					<li class="selection"><span class="chiffreSelection">1</span>Panier</li>
					<li><span>2</span>Facturation et livraison</li>
					<li><span>3</span>Je vérifie ma commande</li>
					<li><span>4</span>Paiement sécurisé</li>
				</ul>
			</div>	
						
			<h2>Contenu de mon panier</h2>
			
			<T_CONTENU_PANIER>
			<table width="100%" border="0" cellpadding="5" cellspacing="0">
                <tr>
                    <th colspan="2">Contenu de mon panier</th>
                    <th align="center">Taille</th>
                    <th align="center">Prix unitaire</th>
                  <th align="center">Quantité</th>
                  <th align="center">Total TTC</th>
                  <th align="center">Vider</th>
                </tr>
				<THELIA_CONTENU_PANIER type="PANIER">
				<tr>
					<td class="ligne">
                   	  <THELIA_IMAGE type="IMAGE" num="1" produit="#ID" largeur="50">
						<img src="#IMAGE" alt="#PRODTITRE " title="#PRODTITRE"/>
						</THELIA_IMAGE>
					</td>
                    <td class="ligne">#TITRE</td>
                      <td align="center" class="ligne">#DECVAL</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="QUANTITE" article="#ARTICLE">
                      <option value="#NUM" #SELECTED>#NUM</option>
                      </THELIA_quantite>
                      </select>
                      
                </form>
					</td>
				  <td align="center" class="ligne">#TOTAL €</td>
				  <td td class="ligne" align="center"><a href="#SUPPRURL">Supprimer</a></td>
				</tr>
                </THELIA_CONTENU_PANIER>
                
                <tr>
                	<th colspan="5"> </th>
					<th align="right">TOTAL :</th>
					<th align="center" class="total">#PANIER_TOTAL €</th>
				</tr>
				
				<tr>
                	<th colspan="5" align="center" class="total">Vous bénéficiez de l'avantage ”Carte Fidélité” sur votre 6 <sup>iéme</sup> produit acheté</th>
					<th align="right" class="total">-20 % :</th>
					<th align="center" class="total">- #PANIER_REMISE €</th>
					
				</tr>
				<tr>
                	<th colspan="5"> </th>
					<th align="right">TOTAL :</th>
					<th align="center" class="total">#PANIER_TOTREMISE €</th>
					
				</tr>

				</table>
			<span class="avertir">Veuillez lire et accepter les CGV pour passer à l'étape suivante</span>

            <div class="queFaire">
                          
				<script type="text/javascript">
                    function ValideForm() {
                     if(document.getElementById('btnaccepte').checked == true) {document.getElementById('btmvalide').disabled = false }
                     if(document.getElementById('btnaccepte').checked == false) {document.getElementById('btmvalide').disabled = true }
                     }
                </script>
                 
                <form>
                  <span class="cgv">
                     <input type="checkbox" id="btnaccepte" value="valeur" onClick="ValideForm()"/>
                     En cochant cette case, j'accepte sans reserve et je reconnais avoir pris connaissance des <a href="cgv.php">Conditions générales de vente...</a>
                  </span>
                    <a class="bouton" href="index.php"><span><span>Continuer mes achats</span></span></a>
                    <input type="button" id="btmvalide" value="Finaliser ma commande" onClick="self.location='/creationcoiffure/adresse.php'" disabled />
               </form> 
              
                    
			</div>
			<div>
			
			</div>
			
			</T_CONTENU_PANIER>
			
			<h4>Votre panier est vide</h4>
            <div class="queFaire">
				<a class="bouton" href="index.php"><span><span>Retour à la boutique</span></span></a>
			</div>		
			<//T_CONTENU_PANIER>
		</div>
		#INCLURE "signature.html"
		#INCLURE "pied.html"
	</div>
</div>
<div><span>Copyright © 2009 Création coiffure.fr</span></div>
</body>
</html>

Dans commande.html les points sont bien là et sont ajoutés à chaque produit commandé.

Les points sont toujours validés si le client annule la commande.
1) Est-il possible qu'ils ne soient validés que si la commande est payé, ou annuler les points  en même temps que la commande annulée ?


2) Sur le dernier point, donc ici le 6 ième est-il possible d'inscrire "-20%" ou même de choisir une autre image si possible, comme la réduction ce fait sur le dernier point, mais ceci est un détail.

Je viens de m'apercevoir que depuis la mise en place du plugin, j'ai un A accent circonflexe juste après le montant (entre le montant et le signe euros) des commandes du client. Je ne sais pas d'où cela peut venir, rien dans le code ne permet l'affichage de ce A. Cela vient-il du plugin ?

Merci ottoroots.

Last edited by neofarm (24-11-2009 18:42:42)


Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4

Offline

#21 Re: Incitation 0.2

(24-11-2009 17:49:51)


Salut Neofarm,


Petite boulette :

rajoute juste cette ligne :

global $fidelizza_active;

après function action() (ligne 33)

et avant

if ($fidelizza_active == 1...


Tout devrait rentrer dans l'ordre.

Offline

#22 Re: Incitation 0.2

(24-11-2009 18:08:57)


Re.

Pour répondre à tes questions :

1°) Bonne question. Je vais faire en sorte.

2°) OK Je vais prévoir la possibilité d'une 3ième image.

3°) Où ça précisément ?

Offline

#23 Re: Incitation 0.2

(24-11-2009 18:29:09)


En fait le A ce trouve sur la page moncompte dans "Mes commandes" où le client peut voir ses commandes, donc dans chaque ligne des commandes dans la colonne Montant
entre le prix et la devise il y a ce A accent circonflexe.

Ben je viens de voir qu'il n'y est plus ce A, c'est bizarre quand même. Est-ce que ça peut venir de la ligne supplémentaire ? Enfin bon il n'est plus là.

Pour la ligne supplémentaire ça fonctionne génial, Merci !!

Last edited by neofarm (25-11-2009 04:17:57)


Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4

Offline

#24 Re: Incitation 0.2

(24-11-2009 19:19:45)


On avance, on avance...

Voilà une troisième version qui ne prend en compte que les commandes payées et qui prévoit un affichage spécifique pour le point offrant la réduction (prévoir une 3ième image : point_cible.png).

<?php

include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsClassiques.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Promo.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Article.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Commande.class.php");
include_once(realpath(dirname(__FILE__)) . "/../../../classes/Venteprod.class.php");

class Fidelizza extends PluginsClassiques {
	
	
	function Fidelizza(){
		$this->PluginsClassiques("fidelizza");	
	}
	
	
	function nb_venteprod($idclient){
		$nombre=0;
		$commande = new Commande();
		$venteprod = new Venteprod();
		$query = "select * from $commande->table where client='".$idclient."' and statut=2";
		$resul = mysql_query($query, $commande->link);
		while($cmde = mysql_fetch_object($resul)){
		$query2 = "select * from $venteprod->table where commande='".$cmde->id."'";
		$resul2 = mysql_query($query2, $venteprod->link);
			while($vprod = mysql_fetch_object($resul2)){
			$nombre += $vprod->quantite;
			}		
		}
	return $nombre;		
	}
	
	function action(){
		global $fidelizza_active;
		if ($fidelizza_active == 1 || $_REQUEST['action'] == 'codepromo'){
		$fidel = 'FIDELIZZA';
		$promofidel = new Promo();
		$promofidel->charger($fidel);
		$session_promo=0;
			
			if ($_REQUEST['action']== "codepromo" && $_REQUEST['code']!=='' && $_REQUEST['code']== $_SESSION['navig']->promo->code){	
				$session_promo = 1;
				if ($_SESSION['navig']->promo->type == 2){
				$total = $_SESSION['navig']->panier->total();
				$total -= $total* $_SESSION['navig']->client->pourcentage / 100;
				$_SESSION['navig']->promo->valeur = round ($_SESSION['navig']->promo->valeur*$total/100, 2); 
				}
			}
			
			else $_SESSION['navig']->promo = new Promo;
		
			if (isset($_SESSION['navig']->client->id)){
			
				$nbre = $this->nb_venteprod($_SESSION['navig']->client->id);
					print_r($nbre);
				for($i=0; $i<$_SESSION['navig']->panier->nbart; $i++){
				
					for ($j=0; $j<$_SESSION['navig']->panier->tabarticle[$i]->quantite; $j++){
				
					$nbre += 1;
						
						if ($nbre % $promofidel->mini == 0) {
							if ($_SESSION['navig']->panier->tabarticle[$i]->produit->promo == 1) $valeur = $_SESSION['navig']->panier->tabarticle[$i]->produit->prix2 * $promofidel->valeur/100;
							else $valeur = $_SESSION['navig']->panier->tabarticle[$i]->produit->prix * $promofidel->valeur/100;
							
							$valeur -= $valeur* $_SESSION['navig']->client->pourcentage / 100;
							
							if ($session_promo == 1){
							$_SESSION['navig']->promo->valeur += $valeur;
							$_SESSION['navig']->promo->type = 1;
							}
							
							else {								
							$_SESSION['navig']->promo->id = $promofidel->id;
							$_SESSION['navig']->promo->code = $promofidel->code;
							$_SESSION['navig']->promo->valeur += $valeur;
							$_SESSION['navig']->promo->type = 1;
							$_SESSION['navig']->promo->mini = $promofidel->mini;
							$_SESSION['navig']->promo->utilise = $promofidel->utilise;
							$_SESSION['navig']->promo->illimite = $promofidel->illimite;
							$_SESSION['navig']->promo->datefin = $promofidel->datefin;		
							}
						}						
					}				
				}
			}
		}
	}
	
	function boucle($texte, $args){
		$search ="";
		$res="";
		
		$client = $_SESSION['navig']->client->id;

		if($client =="") return;
		
		$fidel = 'FIDELIZZA';
		$promofidel = new Promo();
		$promofidel->charger($fidel);
		$nbre = $this->nb_venteprod($client);
		
		$point = 0;	
		$cible=0;
		
		for ($i=0; $i<$promofidel->mini;$i++) {
		$cible++;
		if ($nbre % $promofidel->mini == 0) $point = 1;	
		$nbre--;	
		if ($point ==1 && $cible !== $promofidel->mini) $x = '<img src="client/plugins/fidelizza/image/point_vide.png" />';
		if ($point ==1 && $cible == $promofidel->mini) $x = '<img src="client/plugins/fidelizza/image/point_cible.png" />';
		if ($point ==0)  $x = '<img src="client/plugins/fidelizza/image/point_plein.png" />';			
		$temp = str_replace("#POINT", "$x", $texte);       
		if(trim($temp) !="") $res .= $temp;    
		}    
	return $res;        
	}
}
?>

Offline

#25 Re: Incitation 0.2

(24-11-2009 23:01:01)


Super Merci !!!!!

Dans le cas où le vendeur voudrait changer le nombre de produit à acheter pour avoir droit à la réduction, ce que j'ai essayé, les points des commandes payés ayant déjà bénéficié de la réduction sont apparemment revalidés.

Encore merci, ottoroots.


Mac OS 10.5 Léopard - Mamp - Thelia versions 1.4.4 - 1.5.1 - 1.5.3.4