Project

General

Profile

Development #50067

impossible d'imposer le paiement unitaire en cas de régie distance

Added by Thomas Noël 14 days ago. Updated 7 days ago.

Status:
Solution déployée
Priority:
Normal
Assignee:
Target version:
-
Start date:
12 Jan 2021
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

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


Files

Associated revisions

Revision 71aa546f (diff)
Added by Thomas Noël 8 days ago

lingo: support can_pay_only_one on remote regie (#50067)

History

#1

Updated by Thomas Noël 14 days ago

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.

#2

Updated by Benjamin Dauvergne 14 days ago

Je relis.

#3

Updated by Valentin Deniaud 14 days ago

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.

#4

Updated by Thomas Noël 13 days ago

Ah oui bien vu pour les raise, j'ai remplacé par des affichages à l'usager ; c'est mieux que des assert.

#5

Updated by Thomas Noël 13 days ago

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.

#6

Updated by Benjamin Dauvergne 9 days ago

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.

#7

Updated by Lauréline Guerin 8 days ago

  • Assignee set to Thomas Noël
#8

Updated by Thomas Noël 8 days ago

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.

#9

Updated by Benjamin Dauvergne 8 days ago

  • Status changed from Solution proposée to Solution validée

Goldorak go.

#10

Updated by Thomas Noël 8 days ago

  • Status changed from Solution validée to 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)

#11

Updated by Frédéric Péters 7 days ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF