Conseil rapide accepter plusieurs coupons dans OpenCart 2.0

OpenCart est une solution open source de commerce électronique en ligne basée sur PHP qui vous permet d'accepter des commandes en ligne. Il permet aux clients de faire des achats en utilisant des bons d'achat, mais un seul à la fois par défaut. Si vous souhaitez autoriser vos clients à utiliser plusieurs coupons à la fois, vous devez modifier le code. Je vais vous montrer exactement comment faire cela dans ce tutoriel.

Comment créons-nous un chèque-cadeau??

Seuls les administrateurs et les utilisateurs finaux autorisés peuvent générer des chèques-cadeaux. OpenCart est livré avec un module par défaut pour le faire. La capture d'écran suivante montre l'endroit où un utilisateur back-end peut générer des bons.

Quel est le problème?

Si nous avons un système de coupon implémenté dans OpenCart par défaut, quel est le problème? Comprenons-le à l'aide d'un exemple:

Récemment, un de mes amis a voulu acheter quelques articles à OpenCart qui coûtaient 800 USD, mais elle ne disposait que de 500 USD et de deux chèques-cadeaux d’une valeur de 250 USD chacun. Alors elle m'a appelé et a demandé une solution. Parce qu'OpenCart ne vous permet d'utiliser qu'un seul bon pour faire vos achats à la fois, elle n'a pas pu acheter les articles..

Une solution

Pour résoudre ce problème, nous devons ajouter une option permettant d’utiliser plusieurs coupons afin que les clients puissent faire leurs achats facilement et sans difficulté. Voici la solution, dans laquelle nous allons modifier quelques lignes de code et aider à résoudre ce problème. 

Ce tutoriel est divisé en trois étapes principales:

  1. Changement de contrôleur
  2. Changement de modèle
  3. Changer de vue

1. Fichier du contrôleur

  1. Aller vers catalogue / contrôleur / caisse / cart.php.
  2. Trouvez le code suivant: 
If (isset ($ this-> request-> post ['voucher'])) && $ this-> voucher valide ()) $ this-> session-> data ['voucher'] = $ this-> request-> poster ['voucher']; 

Changez le code ci-dessus en:

If (isset ($ this-> request-> post ['voucher'])) && $ this-> voucher valide ()) $ this-> session-> data ['voucher'] [$ this-> request-> post ['voucher']] = $ this-> request-> post ['voucher']; // crée un tableau pour plusieurs coupons 

2. Fichier de modèle

  1. Aller vers catalogue / modèle / total / voucher.php.
  2. Recherchez les lignes de code suivantes:
$ this-> load-> model ('caisse / bon'); $ voucher_info = $ this-> model_checkout_voucher-> getVoucher ($ this-> session-> data ['voucher']); if ($ voucher_info) if ($ voucher_info ['montant']> $ total) $ montant = $ total;  else $ montant = $ voucher_info ['montant'];  $ total_data [] = array ('code' => 'voucher', 'title' => sprintf ($ this-> language-> get ('text_voucher'), $ this-> session-> data ['voucher' ]), 'text' => $ this-> devise-> format (- $ montant), 'valeur' ​​=> - $ montant, 'sort_order' => $ this-> config-> get ('voucher_sort_order')) ; $ total - = $ montant;  

Nous devons exécuter une boucle externe pour récupérer toutes nos pièces justificatives que nous avons conservées en tant que tableau à l'étape 1. Nous allons donc placer une boucle externe après $ this-> load-> model ('caisse / bon');.

Nous allons donc mettre en boucle notre tableau de bons de session pour récupérer tous les bons que nous avons appliqués, et le code sera comme indiqué ci-dessous. Notez que le code suivant est commenté pour le rendre plus facile à comprendre..

foreach (array_unique ($ this-> session-> data ['voucher']) comme $ voucher) // la boucle foreach sélectionnera chaque tableau et extraira le voucher unique $ voucher_info = $ this-> model_checkout_voucher-> getVoucher ($ voucher ) // récupère les détails de la commande // Chèque 1: Si le voucher existe si ($ voucher_info) // Chèque 2: si le montant du voucher est supérieur au montant de votre commande, le solde du voucher sera conservé si ($ voucher_info ['montant'] > $ total) $ montant = $ total;  else $ montant = $ voucher_info ['montant'];  // Fin du contrôle 2 // Tableau à retourner Totaux mis à jour $ total_data [] = array ('code' => 'voucher', 'title' => sprintf ($ this-> language-> get ('text_voucher'), $ voucher), 'text' => $ this-> devise-> format (- $ montant), 'valeur' ​​=> - $ montant, 'sort_order' => $ this-> config-> get ('voucher_sort_order') ) // End Array $ total - = $ montant; // Soustrait le montant avec le total de nos commandes // Fin du contrôle 1 // Fin de la boucle Foreach

3. Voir le fichier

  1. Aller vers catalogue / vue / thème / défaut / modèle / checkout / voucher.tpl.
  2. Recherchez la ligne de code suivante:

Remplacez-le par ceci:

Nous avons fini avec notre problème! En fait, nous venons de faire quelques piratages de code simples pour résoudre ce gros problème, nous n’avions donc pas à développer de nouveau module ou extension. Nous venons de modifier quelques lignes de codes pour le faire.

Conclusion

Dans cet article, nous avons fourni une solution efficace pour ajouter plusieurs coupons dans notre boutique en ligne. Etant donné qu'OpenCart n'autorisait pas les acheteurs à utiliser plusieurs bons par défaut, nous avons modifié le code afin qu'ils puissent désormais utiliser autant de bons qu'ils le souhaitent. Cela aidera les clients à faire leurs achats facilement sans aucun problème. 

Dans nos prochains articles, nous allons implémenter des outils métier du monde réel dans notre système OpenCart, alors inscrivez-vous et apportez vos précieux commentaires. Merci!