Development #50067
impossible d'imposer le paiement unitaire en cas de régie distance
0%
Description
Dans #46503 on a ajouté une erreur dans le clean du formulaire pour dire que Regie.can_pay_only_one_basket_item est incompatible avec la présence de Regie.webservice_url (régie distante).
Je ne sais pas trop pourquoi on a fait ça, mais en l’occurrence ça me bloque pour permettre l'envoi de la référence d'une facture venant d'une régie distante (et c'est un must have pour beaucoup de collectivités).
Fichiers
Révisions associées
Historique
Mis à jour par Thomas Noël il y a environ 3 ans
- Fichier 0001-lingo-support-can_pay_only_one-on-remote-regie-50067.patch 0001-lingo-support-can_pay_only_one-on-remote-regie-50067.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Ce patch retire la limite... je ne sais toujours pas trop pourquoi on l'avait mise... Si la personne qui relis en sait plus que moi, bienvenue.
Mis à jour par Valentin Deniaud il y a environ 3 ans
Fun fact, dans handle_payment, ce patch met des if en virant les assert qui avaient eux-mêmes virés les if, cf le 0002 de #47477#note-6. Pas de problème, par contre il ne faut pas lever PaymentException ici, ça fera une 500.
Mis à jour par Thomas Noël il y a environ 3 ans
- Fichier 0001-lingo-support-can_pay_only_one-on-remote-regie-50067.patch 0001-lingo-support-can_pay_only_one-on-remote-regie-50067.patch ajouté
Ah oui bien vu pour les raise, j'ai remplacé par des affichages à l'usager ; c'est mieux que des assert.
Mis à jour par Thomas Noël il y a environ 3 ans
Aussi, Benjamin disait sur le salon :
pour moi il y a un souci parce que c'est pas le même chemin de paiement dans les deux cas (sur les items et les remote_items), on voulait d'abord factoriser ça avant de le permettre
mais peut-être qu'effectivement ça marche maintenant
Et pour m'en convaincre j'ai testé un paiement d'un remote_item avec ce patch et ça tourne bien jusqu'au bout.
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
Je n'ai pas testé comme toi mais un truc m'intrigue, le code suivant dépend de la présence d'un paramètre request_data sur l'item :
# PayFiP/TIPI specific if regie.payment_backend.service in ('payfip_ws', 'tipi'): if item.request_data and item.request_data.get('exer') and item.request_data.get('refdet'): kwargs['exer'] = item.request_data['exer'] kwargs['refdet'] = item.request_data['refdet']
Je pense que comme tu as testé avec payzen, tu n'es pas passé par là. Je dirai qu'il faut au minimum mettre un hasattr(item, 'request_data') pour s'assurer qu'on puisse toujours payer des factures avec payfip/tipi. Plus simple même ça peut être déplacé deux lignes plus loin où il y a déjà un hasattr(item, 'request_data')
. Je pense qu'avec cett modification on est tout terrain.
Mis à jour par Thomas Noël il y a environ 3 ans
- Fichier 0001-lingo-support-can_pay_only_one-on-remote-regie-50067.patch 0001-lingo-support-can_pay_only_one-on-remote-regie-50067.patch ajouté
Benjamin Dauvergne a écrit :
Je n'ai pas testé comme toi mais un truc m'intrigue, le code suivant dépend de la présence d'un paramètre request_data sur l'item (...)
Yep, voilà, j'ai regroupé sous un getattr.
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
- Statut changé de Solution proposée à Solution validée
Goldorak go.
Mis à jour par Thomas Noël il y a environ 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 71aa546fec87781e3b84e35fe1032fe455a89eb5 Author: Thomas NOEL <tnoel@entrouvert.com> Date: Tue Jan 12 12:23:50 2021 +0100 lingo: support can_pay_only_one on remote regie (#50067)
Mis à jour par Frédéric Péters il y a environ 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
lingo: support can_pay_only_one on remote regie (#50067)