Jump to content

Offrir une remise à ceux qui paient par virement bancaire


Recommended Posts

Vous pouvez également utiliser la fonction de remplacement. Vous avez une idée rapide pour le faire facilement.

 

Créez le fichier

/override/classes/Cart.php

<?php
class Cart extends CartCore
{
    public function getOrderTotal($withTaxes = true, $type = Cart::BOTH, $products = null, $id_carrier = null, $use_cache = true)
    {
        // Nous facturons le prix normal.
        $total = parent::getOrderTotal($withTaxes, $type, $products, $id_carrier, $use_cache);

        // Vérifiez si le client a déjà choisi le paiement par virement bancaire.
        if ($this->id && Context::getContext()->controller) {
            $controller = Context::getContext()->controller;

            if ($controller->php_self === 'order' || $controller->php_self === 'orderopc') {
                // si le mode de paiement est défini
                if (isset($controller->checkoutPaymentStep)) {
                    if (Tools::getValue('payment-option') === 'ps_wirepayment') {
                        // Remise de 5 %
                        $total = $total * 0.95;
                    }
                }
            }
        }

        return $total;
    }
}
Link to comment
Share on other sites

Citation

Un simple module accroché sur le hookValidateOrder qui suivant le mode de paiement ajoute une règle panier ou non à la commande.

Sinon, à la mano, éditez la commande en ajoutant une remise en BO.

Ce serait bien mais les règle panier PS ne permettent pas une segmentation par mode de paiement 

Link to comment
Share on other sites

Le module crée la règle automatique (newCartRule()) et lui force d'id_cart et l'id_customer avec quantité à 1 expirable à aujourd'hui + délai de paiement.

C'est exactement le même fonctionnement quand vous créez/éditez une commande en BO et que vous ajoutez une réduction.

Link to comment
Share on other sites

il y a 47 minutes, cocos.codes a dit :

Vous pouvez également utiliser la fonction de remplacement. Vous avez une idée rapide pour le faire facilement.

 

Créez le fichier

/override/classes/Cart.php

<?php
class Cart extends CartCore
{
    public function getOrderTotal($withTaxes = true, $type = Cart::BOTH, $products = null, $id_carrier = null, $use_cache = true)
    {
        // Nous facturons le prix normal.
        $total = parent::getOrderTotal($withTaxes, $type, $products, $id_carrier, $use_cache);

        // Vérifiez si le client a déjà choisi le paiement par virement bancaire.
        if ($this->id && Context::getContext()->controller) {
            $controller = Context::getContext()->controller;

            if ($controller->php_self === 'order' || $controller->php_self === 'orderopc') {
                // si le mode de paiement est défini
                if (isset($controller->checkoutPaymentStep)) {
                    if (Tools::getValue('payment-option') === 'ps_wirepayment') {
                        // Remise de 5 %
                        $total = $total * 0.95;
                    }
                }
            }
        }

        return $total;
    }
}

J'ai tenté de mettre un fichier cart.php dans le fichier override/classes/.... mais rien ne se passe 

Link to comment
Share on other sites

il y a 10 minutes, cocos.codes a dit :

Vous devez encore vider le cache et l'index des classes pour que l'écrasement puisse commencer.

Il faut donc supprimer les dossiers :

/var/cache/prod/

/var/cache/dev/

 

ou cliquer sur « Vider le cache » dans le panneau d'administration :

obraz.thumb.png.8dadc487e806c9dabdb1e61a3df118f2.png

 

Ca ne fonctionne toujours pas

Link to comment
Share on other sites

Ok, c'est prêt. Je t'ai envoyé le code complet dans un message privé (si je poste le code sur le forum, certaines personnes le considéreront comme du SPAM...). Tout a été testé et fonctionne. Je poste des captures d'écran - si vous êtes intéressé, n'hésitez pas à me contacter.

Faites-moi savoir si tout fonctionne chez vous.

 

Screenshots:

cc_ps_auto_cart_rule_3.thumb.png.f5b9f62304d2d7ebd50c36a8319c3c41.png

 

cc_ps_auto_cart_rule_2.thumb.png.7eb356bf48253f0ef2d2999210354978.png

 

cc_ps_auto_cart_rule_1.thumb.png.18c5435874f29e3e9e1a5fbb3ba258dc.png

Edited by cocos.codes
I forgot to upload the screenshots. (see edit history)
Link to comment
Share on other sites

C'est vrai, le module s'intègre dans le hook après la passation de la commande, alors que les e-mails ont déjà été envoyés. Nous allons corriger cela afin que l'intégration se fasse avant l'envoi des e-mails, et le problème sera résolu.

Nous nous en occuperons demain, car aujourd'hui, nous n'avons malheureusement plus le temps !

 

Link to comment
Share on other sites

Modification apportée. Je t'ai envoyé le code mis à jour dans un message privé. À partir de maintenant, le module gère correctement les calculs dans les e-mails que je reçois après la passation d'une commande par le client !

Link to comment
Share on other sites

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