Jump to content

[Résolu] Le hook "PaymentConfirm" est-il enfin appelé dans la RC4 ?


Recommended Posts

  • 3 weeks later...

le hook est appelé quand la commande passe en "Validée" (logable) alors qu'elle ne l'était pas avant. Ceci indépendemment du mode de paiement.
Ce n'est pas parfait mais c'est la seule information fournie par prestashop.

Dans la configuration par défaut le hook est appelé quand une commande passe de "En attente de paiement" à "Paiement accepté" ou "Préparation en cours" ou "En cours de livraison" ou "Livré" ou "Produit(s) indisponibles". Logiquement seul la première possibilité est possible mais dans les autres le paiement est implicite.

le hook est aussi appelé si la commande est directement créée dans un état "Validée".

Par contre comme il n'y a pas de hiérarchie dans le statut de commande il peut être appelé plusieurs fois par commande si on fait n'importe quoi.
Par exemple si on passe de "En attente de paiement" -> "Paiement accepté" (appel) -> "Annulé" -> "Livré" (re-appel) parce qu'une commande annulée n'est pas validée, logique.

Autre problème, les commandes gratuites. Pas testé mais le hook doit être appelé aussi. En même temps c'est pas illogique.

Link to comment
Share on other sites

J'en profite pour apporter quelques précisions.

PaymentConfirm = lorsque le paiement est confirmé, et uniquement cela.

Donc ce hook ne devrait pas être appelé juste en fonction du statut logable, mais uniquement lorsque la commande passe en statut "Paiement validée".
Ce qui évite donc les problèmes de doublons (“En attente de paiement” -> “Paiement accepté” (appel) -> “Annulé” -> “Livré”).

En ce qui concerne les commandes gratuites, le hook ne devrait logiquement pas être appelé : ce hook, comme son nom le décrit bien, est appelé lorsqu'un paiement est validé. Une commande gratuite n'a donc pas de paiement.

shagshag, je pense que tu as reproduit ici le principe du hook updateOrderStatus en affinant la sélection seulement lorsque la commande est validée (logable). Or, la nuance, même minime, reste importante : il s'agit de la validation du paiement, et non de la commande.

Je vais inclure ce hook pour la prochaine release :)

Merci tout de même d'avoir pris l'initiative d'inclure ce hook, cela fait plusieurs release que nous aurions du le faire !!

Link to comment
Share on other sites

Bonjour,

C'est vrai que j'aurais pu faire comme cela, c'est plus simple. Juste vérifier que la commande passe en état 2 (id du statuts "Paiement accepté" chez moi).

Mais ça ne peut pas être aussi simple parce que :
* comment être sur que c'est celui qui a l'id 2 partout ? on ne peut évidemment pas se fier au nom puisque c'est en fonction des langues activées.
* si on décide que c'est 2 que ce passe t il si quelqu'un efface ce statut et le recréé ? il n'aura plus l'id 2.
* que faire si on décide d'avoir 2 statuts de validation de paiement ? je ne sais pas pourquoi mais on peut le faire.

bref actuellement c'est pas possible de faire simplement.

Link to comment
Share on other sites

Il y a une série de define dans config.inc.php :

define('_PS_OS_CHEQUE_', 1);
define('_PS_OS_PAYMENT_', 2);
define('_PS_OS_PREPARATION_', 3);
define('_PS_OS_SHIPPING_', 4);
define('_PS_OS_DELIVERED_', 5);
define('_PS_OS_CANCELED_', 6);
define('_PS_OS_REFUND_', 7);
define('_PS_OS_ERROR_', 8);
define('_PS_OS_OUTOFSTOCK_', 9);
define('_PS_OS_BANKWIRE_', 10);

On se base dessus partout dans la solution, maintenant il est vrai que ces 10 status devrait être "bloqués".
Donc si on part de ton hypothèse, plus rien ne marche xD

Link to comment
Share on other sites

!http://trevorcook.typepad.com/photos/uncategorized/homer.jpg!

J'y avais même pas pensé, je corrige de suite. Maintenant le hook est appelé que quand on passe en paiement accepté et s'il y a des manipulations dans les statuts des commandes c'est un bug de prestashop :) (pas ma faute na!)

Pour info les parties modifiées commencent lignes 81, 95 et 105.

Hook.php.zip

Link to comment
Share on other sites

Haha, j'ai placé la barre super haut du coup !

On a pas le droit à l'erreur :P

Sinon, non pas d'autre RC de prévue, en espérant qu'il n'y pas de nouveaux bugs qui se soient glissés depuis.
De toute façon on va faire une phase de tests intensifs pour être sûrs.

Link to comment
Share on other sites


Voici le fichier classes/Hook.php modifié. à priori ça fonctionne mais faudrait des testeur :)


Ben je vais tester ça de suite !

Merci pour tout : j'allais finir par faire la modif moi même mais
j'ai été retenu par autre chose donc c'est super que tu es mis
ton nez dans le code et surtout que tu partages ta modification.
Link to comment
Share on other sites

Alors pour interrompre le suspense insoutenable,
je confirme : ça marche ! Merci, merci et encore
merci.

J'ai tout d'abords cru que ça ne marchait pas mais
comme un (censuré) j'avais oublié de dés installer
et de réinstaller mon module afin de le greffer à
un nouveau hook !

Comme on dit chez moi : ça roxe du poney :)

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