Jump to content
Sign in to follow this  
Samuel MONTAGNE

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

Recommended Posts

Bonjour,

Le terme "PaymentConfirm" n'apparaissant pas dans les fichiers de la RC4 je dirais que non.
désolé.

Share this post


Link to post
Share on other sites
Bon marre d'attendre :)


+1, j'attends la version un pour tout modifier et retravailler la base :-p

Share this post


Link to post
Share on other sites

Shagshag, des précisions ? Par exemple en quelles circonstances ce hook est appelé ? Ou alors sers-t-il pour l'ensemble des moyens de paiements ou juste Paypal ou les CB ?
Merci de tes éclaircissements ;)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
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 !!

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
Share on other sites
Je vais inclure ce hook pour la prochaine release :)


Philippe, tu m'fais peur!! RC6 ??
Ben, pourtant je l'avais annoncé... on a prévu une vingtaine de RC pour être sûr de la finale.

Share this post


Link to post
Share on other sites
Ben, pourtant je l'avais annoncé... on a prévu une vingtaine de RC pour être sûr de la finale.

Ouai, c'est vrai, on le constate ;-P

Share this post


Link to post
Share on other sites
on a prévu une vingtaine de RC pour être sûr de la finale.

Arf, ça en fait un paquet !
la version finale devrait donc être un produit à hauteur des espérances de nombre de (futurs) commerçants alors ;)

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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 :)

Share this post


Link to post
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
Sign in to follow this  

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More