Jump to content

Afficher Mes avoirs , Mes réductions du compte client si / if


caly16

Recommended Posts

Bonjour, bonsoir,

 

 

Dans le compte du client connecté (le menu affichant des liens principaux), je souhaite que "Mes Avoirs" soit affiché uniquement si le client dispose d'un avoir .

 

Pareil pour "Mes bons de réductions", je souhaite que le lien soit disponible uniquement si le client possède un bon de réduction.

 

Ainsi par défaut les liens ne doivent pas être visibles si le client n'en possède pas.

 

Je suppose que la modification s'effectue dans le fichier my-account.tpl.

 

Pouvez-vous m'aider à créer une condition Smarty du type :

 

Afficher "bon de réduction" si active=1 de "$Discount"

 

J'essayerai de me débrouiller pour les autres.

 

Merci

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

Je me réponds....

 

J'ai trouvé ça

 

 

{if !$discount->active==1}

 

 

mais il prend en compte toute la table table ps_discount et pas uniquement le champ (ou les champs) du client connecté

 

Il faut que je rajoute une suite qui commence par && ...

 

Un avis , une idéée?

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

Pour les avoirs, le problème est que dans la page mon compte tu ne récupères pas les avoirs. En gros, cette page n'affiche pas la variable $ordersSlip. Celle-ci n'est récupérée que dans la page order-slip.tpl.

 

Tu dois donc éditer le fichier controllers/MyAccountController.php.

 

Après:

public function process()
{

 

Tu ajoutes:

global $cookie;
 $orderslip=OrderSlip::getOrdersSlip($cookie->id_customer);
 if(empty($orderslip)){$avoirs=0;}
 else{$avoirs=1;}
 self::$smarty->assign('avoirs',$avoirs);

 

Ensuite, on va insérer une condition dans le fichier TPL disant que si $avoirs différent de zéro c'est qu'il y a au moins un avoir.

 

Cette ligne là:

<li><a href="{$link->getPageLink('order-slip.php', true)}" title="{l s='Credit slips'}"><img src="{$img_dir}icon/slip.gif" alt="{l s='Credit slips'}" class="icon" /></a><a href="{$link->getPageLink('order-slip.php', true)}" title="{l s='Credit slips'}">{l s='My credit slips'}</a></li>

 

Tu l'entoures comme ça:

{if $avoirs!=0}la ligne ci-dessus...{/if}

 

Voilà pour les avoirs. Pour les bons de remise, tu peux utiliser la même méthode. Dans le même fichier controller PHP que l'on a modifié, à la suite tu rajoutes:

$discounts=Discount::getCustomerDiscounts($cookie->id_lang,$cookie->id_customer);
 if(empty($discounts)){$remise=0;}
 else{$remise=1;}
 self::$smarty->assign('remise',$remise);

 

Et tu fais la même condition dans le tpl sur la ligne du lien bons de réduction avec une condition cette fois sur $remise.

 

Testé sur 1.4.9

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

Amazing !

 

Vraiment MERCI.

 

Une réponse complète et parfaite!!

 

Je vais même l'adapter pour les retours.

 

Je t'invite à en faire un module car j'ai passé 2 jours à rechercher sur le forum mais aussi Google et autres sites, en ayant que des brides, sans aucun résultat concret.

 

Par expérience,

lorsque le client va plusieurs fois sur son compte pour suivre sa commande, il voit :

- Avoirs, :)

- Bon de réduction, :rolleyes:

- Retour :ph34r:

- (Liste cadeaux)... B)

Ce qui peut l'emmener à faire des déductions, plus particulièrement sur certains articles très élevés....

Link to comment
Share on other sites

Je ne sais pas pourquoi mais "Mes bons de réduction" refuse de s'enlever par la suite (Je suis sous 1.4.8.2)

 

Ça a fonctionné la première fois mais plus maintenant.

 

J'ai essayé en créant un bon de réduction pour un seul client puis supprimer dans le BO (et dans la table discount).

 

J'ai aussi essayé avec un autre utilisateur (sans crée de bon pour lui), "Mes bons de réduction" reste affiché.

 

Voici mon code dans MyaccountController.php

 

global $cookie;

$orderReturn=OrderReturn::getOrdersReturn($cookie->id_customer);
  if(empty($orderReturn)){$retours=0;}
  else{$retours=1;}
  self::$smarty->assign('retours',$retours);

  $discounts=Discount::getCustomerDiscounts($cookie->id_lang,$cookie->id_customer);
  if(empty($discounts)){$remise=0;}
  else{$remise=1;}
  self::$smarty->assign('remise',$remise);

  $orderslip=OrderSlip::getOrdersSlip($cookie->id_customer);
  if(empty($orderslip)){$avoirs=0;}
  else{$avoirs=1;}
  self::$smarty->assign('avoirs',$avoirs);

	  parent::process()

 

et dans my-account.php

 

(if $returnAllowed && $retours!=0}........
{/if}

{if $voucherAllowed && $remise!=0}.......
{/if}

{if $avoirs!=0}.........
{/if}

 

 

De même si le client en dispose plusieurs (que se soit des réductions, des retours ou des avoirs) faut-il pas mieux remplacer

"=1"

par des

">=1"

dans les "else" de chaque?

 

else{$retours=1;}  else{$remise=1;} else{$avoirs=1;}

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

C'est bizarre parce que je viens d'essayer à nouveau et ça fonctionne. Si je créé un bon de réduction pour un client, la ligne apparaît dans mon compte. Dès que je le supprime, la ligne disparaît.

 

En fait les else avec le 1 ne sert...à rien. La condition qui nous intéresse c'est quand la variable vaut 0. C'est sur cette valeur qu'on fait le test. J'ai mis le 1 pour être sûr qu'a ce moment la variable ne puisse pas prendre la valeur 0 (valeur gardée en mémoire notamment).

 

Tu es sûr que le les accolades entourent le bon code (la bonne liste <li>) ?

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

{if $voucherAllowed && $remise!=0}  
	<li><a href="{$link->getPageLink('discount.php', true)}" title="{l s='Vouchers'}"><img src="{$img_dir}icon/voucher.gif" alt="{l s='Vouchers'}" class="icon" /> {l s='My vouchers'}</a></li>{/if}

 

Je mets l'extrait de my-account.tpl

 

</li>
 {if $returnAllowed && $retours!=0}
	<li><a href="{$link->getPageLink('order-follow.php', true)}" title="{l s='Merchandise returns'}"><img src="{$img_dir}icon/return.gif" alt="{l s='Merchandise returns'}" class="icon" /> {l s='My merchandise returns'}</a></li>
{/if}
{if $voucherAllowed && $remise!=0}  
	<li><a href="{$link->getPageLink('discount.php', true)}" title="{l s='Vouchers'}"><img src="{$img_dir}icon/voucher.gif" alt="{l s='Vouchers'}" class="icon" /> {l s='My vouchers'}</a></li>
{/if}
{if $avoirs!=0}
<li><a href="{$link->getPageLink('order-slip.php', true)}" title="{l s='Credit slips'}"><img src="{$img_dir}icon/slip.gif" alt="{l s='Credit slips'}" class="icon" /> {l s='My credit slips'}</a></li>
{/if}
{$HOOK_CUSTOMER_ACCOUNT}

 

Je vide bien mon cache à chaque essai et force la compilation (je suis en local).

 

J'ai d'autres bons de réduction désactivés et périmés (date de validité dépassée). Lorsque je clique sur "Bon de réduction" j'obtiens bien "Vous ne possédez pas de bon de réduction."

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

C'est bon j'ai trouvé !!! (j'ai passé toute la soirée et la journée car mes connaissances sont très faibles)

 

j'ai rajouter en plus :

 

$customer->id

 

J'ai réimporté certaines de mes tables de la version 1.2.5 sur la nouvelle ce qui à peut-être causé plus de difficultés

Link to comment
Share on other sites

  • 1 year later...

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