THELIA Forum

Welcome to the THELIA support and discusssion forum

Offline

#1 Nouveau statut pour CmCIC

(26-06-2020 14:33:38)


Bonjour,

J'ai installé le module CmCIC pour le paiement via Monetico.
Lorsque le paiement est refusé ou abandonné, la commande est quand même créée.
Or nous avons aussi des commandes arrivant avec le statut non payé pour les paiements hors ligne, donc j'ai peur qu'il y ait confusion pour les employés.
Je souhaiterai du coup mettre un statut "Paiement refusé" pour ces commandes.
J'ai créé le statut depuis le panneau de configuration de la zone d'administration, mais je n'ai pas trouvé où changer ce paramètre dans le module CmCIC.
Quelqu'un aurait-il une idée ?

D'autre part, j'ai ajouté des modules pour l'ajout d'un commentaire, d'une date et d'une heure de livraison. Mais si le client abandonne le paiement, il tombe sur une page lui proposant de ré-essayer le paiement, mais là on perd ces 3 paramètres, comment faire pour les conserver ?

Merci pour votre aide

Offline


Bonjour,

je ne suis pas certain que ça soit spécifique au module CmCIC puisqu'il y a le même comportement avec le module Paybox

Ne m'étant pas penché encore sur ce problème, je ne peux malheureusement pas t'en dire plus pour l'instant.


v2.4.0

Offline


Bonjour Nadelo,
Effectivement, je suis en train de travailler dessus.
En fait, il faudrait plutôt faire une modification au moment de l'enregistrement de la commande : si paiement via CmCIC (ou ton module Paybox), mettre le statut "Paiement en cours ou non effectué", plutôt que "Non payé".
J'ai donc ajouté le nouveau statut dans la zone d'administration > configuration > order_statut
Puis mis à jour les fichiers suivants avec mon nouveau statut :
- www/core/lib/Thelia/Model/OrderStatus.php
- www/core/lib/Thelia/Model/OrderStatusQuery.php
Puis je suis en train de modifier l'enregistrement de la commande dans le fichier www/core/lib/Thelia/Action/Order.php vers la ligne 250 :
$id_module_paiement = $placedOrder->getPaymentModule();
        if($id_module_paiement == 45) {
            $placedOrder->setStatusId(
                OrderStatusQuery::getRefusedStatus()->getId()
            );
        } else {
            $placedOrder->setStatusId(
                OrderStatusQuery::getNotPaidStatus()->getId()
            );
        }
La première ligne de mon code affiche une erreur : Call to undefined method
Je ne suis pas une pro du php, je n'arrive à récupérer l'id du module de paiement...

Offline


Problème résolu.

Pour récupérer l'id du module de paiement :
$id_module_paiement = $placedOrder->getPaymentModuleId();

Offline


La stratégie habituelle est d'annuler la commande si le paiement échoue ou est annulé par le client.


OpenStudio Toulouse

Offline


ce qui demande un suivi humain quotidien et ça peut encombrer le suivi des commandes en cas de multiples tentatives, non ?

L'idéal, à mon sens, serait qu'une commande dont le paiement n'a pas été validé (avec saisie client validée dans le cas de la CB) n'existe pas.

Last edited by nadelo (30-06-2020 10:36:10)


v2.4.0

Offline


Une commande est créée au chaque fois que le client clique le bouton "Payer", c'est une contrainte technique incontournable.

Tu peux si tu veux supprimer la commande dans la base si son paiement échoue, mais tu en perdra définitivement la trace. Mais un statut "Annulé" peut te permettre de détecter un problème de paiement avec un client, de le contacter et de finaliser une vente qui aurait autrement échoué.


OpenStudio Toulouse