Promotion
Permet la création, l'édition et l'utilisation de promotions
MCD
classDiagram
class Promotion {
+int id
+boolean auto_promo
+String code
+Hash conditions
+Date date_debut
+Date date_fin
+Text description
+DateTime discarded_at
+Hash effets
+String nom
+enum statut
+enum type_acces
+enum type_promotion
+int usages_max
+DateTime created_at
+DateTime updated_at
}
class Club {
+int id
}
class Panier {
+int id
}
class Commande {
+int id
}
Promotion "0..*" <--> "1" Club : club
Promotion "0..1" <--> "0..*" Panier : paniers
Promotion "0..1" <--> "0..*" Commande : commandes
Détail du MCD
Promotion
Une promotion permet d'offrir une remise sur un panier ou sur certains articles d'un panier (un effet). Une promotion ne s'applique que sur sa durée de validité (date_debut - date_fin) et si le panier, son contenu et le contact/client valident les conditions.
Le statut de la promotion détermine son état actuel. Une promotion à l'état brouillon peut être invalide.
type_promotion permet de différencier les promotions simple des promotions complexe dans les sous-modules
liés au formulaire.
Si une promotion de type_acces automatique est appliquable à un panier, elle l'est automatiquement (aucune ordre de priorité si plusieurs promotions possible). Il est possible de retirer une promotion du panier. Il est possible d'essayer d'appliquer une promotion via son code.
Les conditions et l'effet sont des Hash sérializés, au format: Nom de classe => options où options est un
Hash. Le Nom de classe doit être celui d'une classe du module promotions/effets ou promotions/conditions.
Les effets d'une promotion sont appliquées aux ligne_articles des articles du Panier ou de la Commande, sur
les champs de remise.
Club
Les promotions sont liées à un Club.
Panier
Un Panier peut se voir appliquer une(maximum) promotion.
Commande
Une Commande peut avoir une(maximum) promotion.