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 :
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)