Projet

Général

Profil

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

Ajouté par Benjamin Dauvergne il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
27 juillet 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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.


Fichiers


Demandes liées

Lié à Passerelle - Bug #55793: Caluire Axel : crash lingoFermé23 juillet 2021

Actions

Révisions associées

Révision 050df6b0 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 2 ans

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

Révision ef770b45 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 2 ans

lingo: add remote_item_id field to BasketItem (#55876)

Révision 18e4d090 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 2 ans

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.

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Assigné à mis à Benjamin Dauvergne
#2

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • 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

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Lié à Bug #55793: Caluire Axel : crash lingo ajouté
#5

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 2 ans

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

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

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

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#8

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution validée à 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

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF