-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TRA-14055] Modification des infos transporteur affichées sur BsdCard + leur mise à jour #3309
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
silto
added
ready for review
and removed
question
Further information is requested
labels
May 14, 2024
GaelFerrand
reviewed
May 21, 2024
GaelFerrand
reviewed
May 21, 2024
front/src/Apps/Dashboard/Components/TransporterInfoEditModal/TransporterInfoEditModal.tsx
Outdated
Show resolved
Hide resolved
GaelFerrand
reviewed
May 21, 2024
GaelFerrand
reviewed
May 21, 2024
GaelFerrand
approved these changes
May 21, 2024
benoitguigal
approved these changes
May 23, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bien joué
…d edit to make it possible for the current transporter to update it from the dashboard
…splaying/modifying transporter infos. Modify form update repository to reindex forwarding BSDD when updating forwardedIn BSDD.
…here the same transporter appears multiple times
…ransport mode is not the road + remove permission checking function as it didn't simplify the code and is now useless since it only checks the user permission. + add changelog entry
…conditions for transporter infos on BsdCard, remove commented out code
…o find the right current transporter
Quality Gate passedIssues Measures |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Objectif
Il faut afficher la bonne plaque d'immatriculation et champ libre sur les BsdCard dans les rubriques "A collecter" et "Collectés" d'un transporteur. Précédemment, seulement le premier transporteur concerné par le bordereau était affiché. C'est un problème avec l'ajout du multimodal ou avec l'entreposage temporaire.
En résumé
On veut donc:
Les modifications
Récupération des infos du transporteur
Les infos étaient auparavant récupérées depuis la propriété "transporter" des BSD, qui est générée par la backend en prenant le premier transporteur de la liste des transporteurs liés au bordereau. Cette propriété étant utilisée ailleurs dans le code, je ne pouvais pas modifier la façon dont elle était générée en back au risque de tout péter. Donc j'ai plutôt utilisé l'array "transporters", et ajouté une méthode "getCurrentTransporterInfos" pour en sortir les infos du bon transporteur.
BSDD et entreposage temporaire
Le cas du BSDD est particulier car le déchet peut être à collecter par un transporteur alors qu'il est entreposé temporairement, il faut donc aller aussi chercher le transporteur lié à cet entreposage temporaire (BSD forwardedIn). Pour ça, j'ai ajouté une condition sur le statut du bordereau pour déterminer où aller chercher les infos transporteur en fonction du statut.
BSDD/BSDA et transporteur récurrent
Il est possible qu'une même entreprise se charge de plusieurs portions du transport multimodal. Il n'est donc pas possible de faire un simple find du transporteur avec le SIRET. Il y a donc une logique qui est:
Affichage pour transport routier uniquement et conflit GraphQL
Même si ça ne rentre pas dans le scope du ticket de base, j'ai retiré l'affichage et la modification de la plaque d'immatriculation pour les transports autre que la route. Pour ce faire, il a fallut récupérer l'info transport.mode sur tous les types de bordereau dans la query des BSD du Dashboard. Cette query utilisant un union des différents types de bordereaux, il y a un conflit sur le type de transport.mode (qui est TransportMode! sur le BSDASRI et TransportMode (sans point d'exclamation) ailleurs.
Il y a 2 solutions à ce problème:
La propriété correspondant au mode de transport sur BSDASRI a cette définition Prisma:
et sa valeur peut donc être nulle (même si un default est utilisé, si un objet en db n'a pas été écrit en passant par Prisma ou avant que la propriété ait été rajoutée au schema, elle peut être nulle).
Donc j'ai choisi d'harmoniser les types GraphQL et de retirer le "!", ce qui est cohérent avec les modèles de db, plutôt que d'utiliser des alias. Je ne pense pas que ce soit un breaking change puisque ce n'est pas un type d'input.
Modification des infos
L'update du transporteur pour BSDA et BSDD se fait via une mutation spécifique (updateBsdaTransporter/updateFormTransporter), les autres bordereaux sont fait avec la mutation d'update du bordereau.
BSDD forwardedIn et indexation
Dans le cas de l'update du transporteur BSDD, si il s'agit du transporteur du bordereau forwardedIn (entreposage), il y avait un problème d'indexation: le resolver utilise l'update du repository pour réindexer le bordereau lié au transporteur, mais ça n'entraînait pas la réindexation du bordereau forwarding. J'ai donc modifié l'update pour récupérer l'info de si il y a un bordereau forwarding (en ajoutant un include à l'update, pas de requête DB supplémentaire), et si c'est le cas, réindexer le bordereau forwarding plutôt que le bordereau qui est updaté. La routine de réindexation va se charger de lancer l'index du bordereau forwardedIn.
Demo
Demo.BsdCard.mov