Project

General

Profile

Development #55876

lingo : créer le BasketItem représentant le paiement d'une facture quand elle est payée, pas quand l'application est notifiée

Added by Benjamin Dauvergne 2 months ago. Updated about 2 months ago.

Status:
Solution déployée
Priority:
Normal
Target version:
-
Start date:
27 Jul 2021
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

Description

Cf. https://git.entrouvert.org/combo.git/tree/combo/apps/lingo/models.py?id=f4615c506194cf4eace0af551f14f54552f09dc5#n882

L'utilisateur veut savoir qu'il a payé; le fait qu'on n'arrive pas à notifier l'application métier concerne le régisseur.


Files


Related issues

Related to Passerelle - Bug #55793: Caluire Axel : crash lingoSolution déployée23 Jul 2021

Actions

Associated revisions

Revision 050df6b0 (diff)
Added by Benjamin Dauvergne about 2 months ago

lingo: factorize basket item creation for paid remote invoices (#55876)

Revision ef770b45 (diff)
Added by Benjamin Dauvergne about 2 months ago

lingo: add remote_item_id field to BasketItem (#55876)

Revision 18e4d090 (diff)
Added by Benjamin Dauvergne about 2 months ago

lingo: make BasketItem creation idempotent for paid invoices (#55876)

Using get_or_create() based on the remote_item_id field inside a
transaction is idempotent, the self.items.add(...) operation also (if
the item is already linked it does nothing).

The new behaviour garantee that even if we cannot notify the regie's
web-service, a BasketItem is created to show the user its payment has
been recorded.

History

#1

Updated by Benjamin Dauvergne 2 months ago

  • Assignee set to Benjamin Dauvergne
#2

Updated by Benjamin Dauvergne 2 months ago

  • on ajoute un nouveau champ unique, remote_item_id, à BasketItem pour faire le lien avec les remote_item
  • à chaque tentative de notification du web-service des factures, on récupère le basket-item existant ou on le crée et on l'ajoute si nécessaire à la transaction traitée
#3

Updated by Benjamin Dauvergne 2 months ago

  • Related to Bug #55793: Caluire Axel : crash lingo added
#5

Updated by Nicolas Roche 2 months ago

créer le BasketItem représentant le paiement d'une facture quand elle est payée, pas quand l'application est notifiée

Ok, dans l'affichage en backoffice des transactions, on continue de ne pas afficher la facture liée à la transaction tant que l'application métier n'a pas été notifiée.
Et cependant, la facture est d'ors et déjà stockée en tant que BasketIem, donc nous n'aurons plus besoin d'aller la créer à la main en cas de défaillance du logiel métier. Surtout cela pouvait poser problème si la facture avait disparu du logiciel métier entre temps.

L'utilisateur veut savoir qu'il a payé; le fait qu'on n'arrive pas à notifier l'application métier concerne le régisseur.

Là je ne vois pas où ça intervient.
Pour moi la cellule "mes factures à payer", continuera à afficher ce que nous firni le logiciel métier.

#6

Updated by Benjamin Dauvergne about 2 months ago

Nicolas Roche a écrit :

créer le BasketItem représentant le paiement d'une facture quand elle est payée, pas quand l'application est notifiée

Ok, dans l'affichage en backoffice des transactions, on continue de ne pas afficher la facture liée à la transaction tant que l'application métier n'a pas été notifiée.
Et cependant, la facture est d'ors et déjà stockée en tant que BasketIem, donc nous n'aurons plus besoin d'aller la créer à la main en cas de défaillance du logiel métier. Surtout cela pouvait poser problème si la facture avait disparu du logiciel métier entre temps.

L'utilisateur veut savoir qu'il a payé; le fait qu'on n'arrive pas à notifier l'application métier concerne le régisseur.

Là je ne vois pas où ça intervient.

En fait ce BasketItem sert à deux endroits :
  • en backoffice pour afficher le montant et le sujet des items payés pour une transaction
  • en frontoffice dans la cellule LingoRecentTransactionsCell pour faire la même chose

Sans cela les gens voient un paiement mais ne savent pas (via l'interface) à quoi le rattacher.

Pour moi la cellule "mes factures à payer", continuera à afficher ce que nous firni le logiciel métier.

Oui, modulo le fait que désormais on croise Transaction et RemoteItem pour avoir le statut réel d'une facture et on exclut ensuite celles qui sont en fait déjà payées (même si le logiciel métier n'est pas au courant).

#7

Updated by Nicolas Roche about 2 months ago

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

Updated by Benjamin Dauvergne about 2 months ago

  • Status changed from Solution validée to Résolu (à déployer)
commit 18e4d09053917b5c7018d16d5cdec9d5d596a615
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Jul 30 11:11:19 2021 +0200

    lingo: make BasketItem creation idempotent for paid invoices (#55876)

    Using get_or_create() based on the remote_item_id field inside a
    transaction is idempotent, the @self.items.add(...)@ operation also (if
    the item is already linked it does nothing).

    The new behaviour garantee that even if we cannot notify the regie's
    web-service, a BasketItem is created to show the user its payment has
    been recorded.

commit ef770b457917940ae633014e1e9e02409b71c8bf
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Jul 30 11:04:31 2021 +0200

    lingo: add remote_item_id field to BasketItem (#55876)

commit 050df6b0a1abcc4df6289899b90e5a1505c00f4a
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Jul 30 11:00:00 2021 +0200

    lingo: factorize basket item creation for paid remote invoices (#55876)
#9

Updated by Frédéric Péters about 2 months ago

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

Also available in: Atom PDF