Priorité
Conception du modèle PriorityItem
Une priorité :
- Est le modèle central du module
- Matérialise physiquement (en BDD) la priorité de vente d'un contact donné.
- Est toujours lié à un contact
- Peut être lié à une
PlaceLogique - Verrouille les
ArticlePlaceMatchen conséquence
classDiagram
class PriorityItem {
+bigint id
+bigint priority_id
+bigint contact_id
+bigint place_logique_id
}
PriorityItem "1" <--> "0..n" Priority
PriorityItem "0..1" <--> "0..n" PlaceLogique
PriorityItem "0..n" <--> "0..n" ArticlePlaceMatch
PriorityItem "0..n" <--> "0..1" Article
Articles
Les articles sont ceux ayant été achetés avec la priorité.
Place logique
La place logique (optionnelle) verrouillée par la priorité de vente.
Les ArticlePlaceMatch
Relation (ou vue) servant à verrouiller réellement les places.
Si une priorité de vente (PriorityItem) doit être générée sur des ArticlePlaceMatch déjà en lien avec une autre
priorité, il y a alors conflit.
Quand on détecte un conflit, la nouvelle priorité est généré en état de conflit, avec lien vers la ou les sources de conflit, afin de permettre au gestionnaire de régler le souci si besoin.
Fonctions
Accès aux ModeleArticle
Selon la configuration de la Priority,
le Contact peut avoir accès à des ModeleArticle en ignorant d'autres règles de disponibilité.
Verrouillage des places
Tant qu'un PriorityItem valide verrouille des ArticlePlaceMatch,
ces derniers ne sont disponibles QUE pour le Contact de cette dernière.
Pour la récupération des ArticlePlaceMatch :
On stocke ces derniers en BDD.
Les modifications de la portée de la Priority déclenchent un recalcul asynchrone des ArticlePlaceMatch, sur le
modèle de ce qui ai fait avec les articles liés à des formules.