Prise en charge d’une propriété de panier personnalisée dans les conditions des règles de prix panier de Magento

Le backoffice de Magento permet d’aisément créer des règles de prix via les menus Promotions > Règles de prix catalogue et Promotions > règles de prix panier. Nous allons nous intéresser aux règles de prix panier qui sont celles qui permettent d’appliquer des promotions en fonction des propriétés du panier d’un client (comme son montant, poids, mode de livraison…). Nous allons voir comment nous pouvons étendre cette fonctionnalité afin d’y ajouter le support d’une nouvelle propriété.

Créer une application Grails

Logo Grails

Grails est un framework basé sur le langage Groovy créé en 2005 et développé par Graeme Rocher, Guillaume Laforge, Marc Palmer, Dierk Koenig et Steven Devijver sous licence Apache 2.0. Il tend à répondre aux contraintes de développement agile d’application web et s’intègre à l’univers Java/JEE (via Spring) puisqu’il tourne sur une JVM.

L’intérêt de Grails est qu’il permet de générer, à partir d’un modèle de données bien définis, une application web en respectant de manière implicite des méthodes de développement agile. Du modèle à la vue en passant par la récupération des différentes librairies jusqu’au lancement de l’application sur serveur tomcat. Son langage de programmation (Groovy) est aussi très flexible.

Nous allons voir comment créer une application simple avec ce framework.

NanoTime, ou une erreur de jeunesse

Pourquoi faut-il faire attention lorsqu’on utilise la méthode nanoTime de l’API Java (System.nanoTime() ) ?

Car le résultat n’est qu’un écart (en nanosecondes) entre maintenant et un point du temps variable !

Ce point de « départ » dépend de chaque instance de la JVM : Donc vous pouvez obtenir des résultats très variables en cluster ou suite à un redémarrage par exemple. Autre cas – un changement de version des VMWARE Tools…

Il ne faut donc JAMAIS se servir du System.nanoTime() comme numéro de séquence, ou comme clé de tri.