Sommaire
Introduction : syntaxe JSON, éléments et propriétés
Si vous souhaitez poser une question, utilisez le sujet suivant sur le forum Magento : http://www.magentocommerce.com/boards/viewthread/38223/
La syntaxe de configuration est une syntaxe proche de la syntaxe JSON.
Depuis la version 2.5, la syntaxe de configuration est 100% JSON.
Exemple :
"ex0": {
"about": "National",
"label": "National",
"shipto": "AD,FR,MC",
"conditions": "{cart.price-tax+discount}<1000.00",
"fees": "1.30 + {table {cart.weight} in 0.5:5.30, 1.0:6.50, 2.0:7.40, 3.0:8.30, 5.0:10.10}"
}
}
La configuration est un objet JSON contenant plusieurs propriétés.
Comme imposé par JSON, chaque propriété a un nom unique, qui servira d'identifiant unique.
Chaque propriété constitue un élément de configuration (qui est également un objet JSON).
Les éléments possèdent tous une propriété type. Celle-ci permet de définir le type de l'élément :
L'identifiant unique
Chaque élément de configuration possède un identifiant unique. Cet identifiant unique permet ensuite de faire référence à l'élément.
Exemple :
"europe": {
"label": "Livraison Europe",
"fees": 10
},
"us": {
"label": "Livraison US",
"fees": "{europe.fees}+20"
}
}
Attention : pour éviter les conflicts, n'utiliser que les caractères a-z, A-Z, 0-9, - et _ pour former l'identifiant unique.
Vous devez également éviter les identifiants qui correspondent déjà à des noms de variable (cart, product, item...).
Élément de type method
Un élément de type method permet de spécifier une méthode de livraison.
Exemple minimal avec uniquement les propriétés obligatoires :
"ex0": {
"label": "Port offert",
"fees": 0
}
}
Exemple complet :
"ex0": {
"about": "Colissimo National",
"type": "method",
"label": "Colissimo",
"description": "Livraison sous 24/48h",
"enabled": true,
"conditions": "range({cart.weight},0.2,1.0)",
"shipto": "FR(01,02,39600,/^25[0-9]{3}$/),CH,DE",
"billto": "FR",
"origin": "DE",
"customer_groups": "NOT LOGGED IN,Retailer",
"fees": "{table {cart.weight} in 0.5:5.30, 1.0:6.50}"
}
}
Élément de type data
Un élément de type data permet de spécifier des données utilisables dans les méthodes de livraison.
Exemple d'élément de type data :
"mydata": {
"type": "data",
"reference": "100"
}
}
Exemple d'utilisation des données :
"ex0": {
"type": "method",
"label": "Colissimo",
"fees": "{mydata.reference}*1.5"
}
}
Élément de type meta
Un élément de type meta permet d'ajouter des données informatives (auteur, date...).
Exemple :
"about":
}
type : le type de l'élément
Il permet de spécifier le type de l'élément :
- method : méthode de livraison (par défaut si non spécifié)
- data : données pouvant être utilisées dans une ou plusieurs méthodes de livraison
- meta : données informatives
"about": ,
"mydata": {
"type": "data",
"reference": "100"
},
"ex0": {
"type": "method",
"label": "Colissimo",
"fees": "{mydata.reference}*1.5"
}
}
about : commentaire sur l'élément
Vous pouvez ajouter un commentaire à un élément de configuration.
"ex0": {
"about": "Mon commentaire",
"label": "Exemple avec commentaire",
"fees": 10
}
}
label : le libellé
Il s'agit du nom qui sera donné à la méthode de livraison.
On peut insérer certains éléments comme le poids des marchandises dans le libellé.
Pour ce faire, utiliser les variables suivantes :
- L'adresse de livraison :
{destination.country.name}{shipto.country_name} : le nom du pays{destination.country.code}{shipto.country_id} : le code du pays{destination.region.code}{shipto.region_code} : le code de la région{destination.postcode}{shipto.postcode} : le code postal
- {cart.weight} : poids des marchandises
{cart.weight.unit}{cart.weight_unit} : l'unité de poids- Voir la liste complète des variables
"ex0": {
"label": "Colissimo ({cart.weight} / {shipto.country_name})",
"fees": 10
}
}
La ligne ci-dessus affichera par exemple "Colissimo (3.0kg / France)".
description : la description
Il s'agit de la description de la méthode de livraison.
Le fonctionnement est identique à la propriété label.
conditions : les conditions
La propriété conditions se spécifie sous la forme d'une formule (voir l'initiation aux formules) qui doit retourner une valeur booléenne (true ou false).
"ex0": {
"label": "Prix de 0 à 70 TTC",
"conditions": "{cart.price+tax+discount}<=70",
"fees": 10
},
"ex1": {
"label": "Prix de 0 à 70 HT",
"conditions": "{cart.price-tax+discount}<=70",
"fees": 10
},
"ex2": {
"label": "Prix de 20 exclu à 70 inclu",
"conditions": "range({cart.price-tax+discount},20,70,false,true)",
"fees": 10
},
"ex3": {
"label": "Prix de 10 inclu à 50 exclu",
"conditions": "range({cart.price-tax+discount},10,50,true,false)",
"fees": 10
},
"ex4": {
"label": "Poids de 0.5 exclu à 3 inclu",
"conditions": "range({cart.weight},0.5,3.0,false,true)",
"fees": 10
},
"ex5": {
"label": "Poids de 1 inclu à 5 exclu",
"conditions": "range({cart.weight},1.0,5.0,true,false)",
"fees": 10
},
"ex6": {
"label": "Seulement si port offert",
"conditions": "{cart.free_shipping}",
"fees": 10
},
"ex7": {
"label": "Seulement si port non offert",
"conditions": "!{cart.free_shipping}",
"fees": 10
},
"ex8": {
"label": "Si au moins un produit possède l'attribut 'color' égal à 'Bleu'",
"conditions": "{count items where product.attribute.color=='Bleu'}>1",
"fees": 10
},
"ex9": {
"label": "Si tous les produits possèdent l'option 'size' supérieure ou égal à '1'",
"conditions": "{count items where product.option.size>='1'}=={cart.qty}",
"fees": 10
}
}
Les adresses : shipto, billto et origin
L'extension permet de filtrer plusieurs adresses :
- L'adresse de livraison
destinationshipto. - L'adresse de facturation billto
- L'adresse d'origine origin
Les codes pays utilisés sont ceux de Magento (à priori ils sont les mêmes que les codes ISO 3166-1 alpha-2).
Il est possible de spécifier les codes régions (uniquement avec shipto) ou les codes postaux que l'on veut filtrer ou exclure.
Vous pouvez utiliser le caractère jocker * ou les expressions régulières pour les codes postaux.
Une expression régulière doit commencer et se terminer par le caractère /. Si vous souhaitez utiliser les caractères (, ) ou ,, vous devez les échapper avec le caractère \ (ex: "FR(/^25\([0-9]{3}\)$/)").
Vous pouvez utiliser l'option d'insensibilité à la casse (ex: "GB(/^PO.*$/i)").
"ex0": {
"label": "France, Allemagne, Suisse, Espagne, Italie",
"shipto": "FR,DE,CH,ES,IT",
"fees": 10
},
"ex1": {
"label": "France sauf la Corse",
"shipto": "FR-(2A,2B)",
"fees": 10
},
"ex2": {
"label": "Corse",
"shipto": "FR(2A,2B)",
"fees": 10
},
"ex3": {
"label": "Monde entier sauf l'Allemagne et la Corse",
"shipto": "* - ( DE, FR(2A,2B) )",
"fees": 10
},
"ex4": {
"label": "Codes postaux commençant par 25 en utilisant le caractère jocker",
"shipto": "FR(25*)",
"fees": 10
},
"ex5": {
"label": "Codes postaux commençant par 25 en utilisant une expression régulière",
"shipto": "FR(/^25[0-9]{3}$/)",
"fees": 10
}
}
Astuce
Pour raccourcir la saisie des pays, vous pouvez utiliser les variables suivantes :
- {address_filter.AF} : pays d'Afrique
- {address_filter.AS} : pays d'Asie
- {address_filter.EU} : pays d'Europe
- {address_filter.NA} : pays d'Amérique du Nord
- {address_filter.SA} : pays d'Amérique du Sud
- {address_filter.OC} : pays d'Océanie
- {address_filter.AN} : pays d'Antartique
- {address_filter.EU-27} : pays de l'Union Européenne
- {address_filter.DOM} : codes pays des département d'Outre-Mer Français
- {address_filter.COM} : codes pays des Collectivités d'Outre-Mer Françaises
"ex0": {
"label": "Europe sauf la France",
"shipto": "({address_filter.EU-27}) - (FR)",
"fees": 10
}
}
customer_groups : les groupes client
On peut utiliser le nom ou l'ID des groupes client.
"ex0": {
"label": "Groupes NOT LOGGED IN et General",
"customer_groups": "NOT LOGGED IN,General",
"fees": 10
},
"ex1": {
"label": "Groupes NOT LOGGED IN et General par leur ID",
"customer_groups": "0,1",
"fees": 10
},
"ex2": {
"label": "Groupe Retailer",
"customer_groups": "Retailer",
"fees": 10
}
}
fees : les frais de port
La propriété fees se spécifie sous la forme d'une formule (voir l'initiation aux formules).
"ex0": {
"label": "Frais fixes",
"fees": 10
},
"ex1": {
"label": "Table de prix",
"fees": "{table {cart.weight} in 0.5:5.30, 1.0:6.50}"
},
"ex2": {
"label": "Formule",
"fees": "0.1 * {cart.price-tax+discount} + 10.00"
},
"ex3": {
"label": "Combinaison",
"fees": "0.1 * {cart.price-tax+discount} + {table {cart.weight} in 0.5:5.30, 1.0:6.50} + 10.00"
}
}
tracking_url : l'URL de suivi
L'utilisation de la propriété tracking_url est réservée aux utilisateurs expérimentés. Si vous ne comprenez pas les indications ci-dessous, il est préférable que vous évitiez d'utiliser cette fonctionnalité.
La propriété tracking_url permet de surcharger le champ "URL de suivi" d'un mode de livraison Owebia Shipping et ainsi de spécifier une URL de suivi par méthode de livraison plutôt qu'une pour tout le mode de livraison.
Pour insérer automatiquement le numéro de colis dans l'URL de suivi, vous devez utiliser {tracking_number}.
"ex0": {
"label": "Exemple avec URL de suivi pour le transporteur Colissimo",
"fees": 10,
"tracking_url": "http://www.coliposte.net/particulier/suivi_particulier.jsp?colispart={tracking_number}"
}
}
Magento ne gère pas les liens de tracking mais un statut de tracking. L'extension Owebia Shipping 2 fournit un lien HTML à la place du statut, lien qui permet d'aller sur le site du transporteur et de suivre l'avancement de la livraison du colis.
Lorsque l'URL de suivi est construite par l'extension, la seule information disponible est le numéro de colis et on n'a nul part accès à la méthode de livraison sélectionnée. Afin de pouvoir retrouver l'url de suivi dans la configuration, il faut spécifier la méthode de livraison dans le numéro de tracking, par exemple : colissimo:8Lxxxxxxxxxxx où colissimo est le code de la méthode de livraison sélectionnée.
Si aucun code n'est spécifié (si vous saisissez uniquement le numéro de tracking), l'url utilisée sera celle globale au mode de livraison.
Pour répondre à une question récurrente, Magento affiche le statut de livraison depuis le back office ou le front office. Si vous souhaitez insérer l'URL de suivi dans les mails d'expédition, vous devrez développer vous même la récupération de l'URL de suivi et son insertion dans le mail, en effet, l'extension Owebia Shipping 2 se contente de fournir des modes de livraison paramétrables sans apporter de grande modification au coeur de Magento afin de réduire les problèmes d'incompatibilité et de mise à jour.
Si vous obtenez un popup vide lorsque vous cliquez sur le lien de suivi, votre problème est très certainement lié au fait que vous n'avez pas spécifié le code de la méthode de livraison dans le numéro de suivi (voir indications plus haut) et que votre champ global "URL de suivi" est vide.
Il n'est actuellement pas prévu de modifier les fonctionnalitées de l'extension liées à l'URL de suivi.
enabled : l'activation/désactivation
Permet d'activer ou de désactiver la méthode de livraison.
La valeur doit être booléenne.
"ex0": {
"enabled": true,
"label": "Exemple avec activation",
"fees": 10
}
}
Initiation aux formules
Les propriétés fees et conditions sont spécifiées sous la forme de formules.
Signes mathématiques disponibles :
- opérateurs : *, /, + et -
- modulo : %
- parenthèses : ( et )
- les opérateurs booléens &&, and, ||, or, ==, <, >, <=, >=
- les opérateurs binaires & et |
- le groupe d'opérateur C ? X : Y (ex: "{cart.price_exluding_tax}>100 ? 15*{cart.weight} : 20*{cart.weight}")
Variables disponibles :
- {cart.weight} : poids des marchandises
{cart.quantity}{cart.qty} : nombre d'articles dans le panier{cart.price_excluding_tax}{cart.price-tax+discount} : prix HT après remise{cart.price_including_tax}{cart.price+tax+discount} : prix TTC après remise- {cart.price-tax-discount} : prix HT avant remise
- {cart.price+tax-discount} : prix TTC avant remise
- Voir la liste complète des variables
Vous avez la possibilité de mettre des espaces et des retours à la ligne dans les formules (pour aérer).
Fonctions disponibles :
- arrondis : round(x), floor(x), ceil(x)
- valeur absolue : abs(x)
- maximum : max(x,y)
- minimum : min(x,y)
- entier aléatoire : rand(min,max)
- puissance : pow(x,puissance)
- nombre PI : pi()
- racine carrée : sqrt(x)
- logarithme : log(x) pour le logarithme népérien ou log(x,base)
- exponentiel : exp(x)
Possibilité d'utiliser les fonctionnalités avancées suivantes : casting en entier (int) ou en nombre flottant (float), comparaison avec la valeur null ou les valeurs booléennes true et false.
Vous pouvez également utiliser des fonctionnalités avancées telles que les tables de tarifs, la copie d'une propriété d'une autre méthode, les fonctions spéciales, l'utilisation des attributs et des options des produits ou encore l'utilisation des variables personnalisées.
Lorsque vous utilisez des variables qui ne sont pas numériques ou booléennes, vous devez les échapper avec des guillemets simples ou utiliser la syntaxe d'auto-échappement {{ }}.
"ex0": {
"label": "Échappement avec des guillemets",
"conditions": "'{cart.coupon_code}'=='test'",
"fees": 10
},
"ex1": {
"about": "Depuis la version 2.4.5, {{cart.coupon_code}} sera remplacé par 'moncoupon' ou par null en fonction de sa valeur",
"label": "Auto-échappement",
"conditions": "{{cart.coupon_code}}!='test'",
"fees": 10
}
}
Les variables disponibles
Les variables suivantes peuvent être utilisées dans les différents propriétés des méthodes de livraison (en particulier les propriétés conditions et fees).
- Le panier :
- {cart.weight} : poids des marchandises
{cart.quantity}{cart.qty} : la quantité d'articles{cart.price_excluding_tax}{cart.price-tax+discount} : prix HT avec remise{cart.price_including_tax}{cart.price+tax+discount} : prix TTC avec remise- {cart.price-tax-discount} : prix HT sans remise
- {cart.price+tax-discount} : prix TTC sans remise
{cart.coupon}{cart.coupon_code} : coupon de réduction{free_shipping}{cart.free_shipping} : frais de port offert (par une règle dans Magento) [true/false]{cart.weight.unit}{cart.weight_unit} : l'unité de poids{cart.weight.for-charge}{cart.weight_for_charge} : poids des marchandises dont la livraison n'est pas offerte (par les règles de prix panier de Magento)
- Le group client :
{customer.group.id}{customer_group.id} : id du groupe client{customer.group.code}{customer_group.code} : nom du groupe client- {customer_group.*} : propriété du groupe client (ex: {customer_group.tax_class_id})
- Le client :
- {customer.id} : id du client
- {customer.attribute.*} : attribut du client (ex: lastname, firstname, group_id...)
- {customer.attribute.*.value} : dans le cas des attributs de type liste de sélection, {customer.attribute.*} retourne l'id, pour obtenir la valeur il faut utiliser {customer.attribute.*.value}
- {customer.*} : identique à {customer.attribute.*}, sauf si la variable est déjà définie (ex: {customer.id} est déjà définie)
- Les variables personnalisées ou `Custom Variables` (depuis la version 1.4.0.1 de Magento) :
- {customvar.*} : variable personnalisée de Magento (ex: {customvar.my_var})
{{customVar code=*}}: utiliser la syntaxe ci-dessus
- L'adresse de livraison :
{destination.country.name}{shipto.country_name} : le nom du pays{destination.country.code}{shipto.country_id} : le code du pays- {shipto.region_id} : l'id de la région
{destination.region.code}{shipto.region_code} : le code de la région- {shipto.street} : la rue
- {shipto.city} : la ville
{destination.postcode}{shipto.postcode} : le code postal
- L'adresse de facturation :
- {billto.country_name} : le nom du pays
- {billto.country_id} : le code du pays
- {billto.postcode} : le code postal
- {billto.*} : propriété de l'adresse de facturation (ex: {billto.city})
- L'adresse d'envoi :
{origin.country.name}{origin.country_name} : le nom du pays{origin.country.code}{origin.country_id} : le code du pays{origin.region.code}{origin.region_id} : l'id de la région- {origin.city} : la ville
- {origin.postcode} : le code postal
- Le magasin :
- {store.id} {store.code} {store.name} {store.address} {store.phone} : id, code, nom, adresse et téléphone du magasin
- La date courante :
- {date.timestamp} : timestamp UNIX de la date actuelle
- {date.year} {date.month} {date.day} {date.hour} {date.minute} {date.second} : année, mois, jour, heure, minute et seconde de la date actuelle
- {date.weekday} : jour de la semaine de la date actuelle de 0 (dimanche) à 6 (samedi)
- L'objet request :
- {request.*} : propriété de l'objet request (Mage_Shipping_Model_Rate_Request) passé en paramètre par Magento (ex: {request.package_qty}). Utiliser l'option "Déboguage" pour obtenir plus de détail sur les propriétés disponibles.
Fonctions spéciales dans les formules
Vous pouvez utiliser dans les formules des fonctions spéciales.
Liste des fonctions spéciales :
- min(x, y, ...) : calcule le minimum entre plusieurs valeurs (éventuellement plus de deux valeurs). Si l'une des valeurs est nulle, elle est ignorée.
- max(x, y, ...) : calcule le maximum entre plusieurs valeurs (éventuellement plus de deux valeurs). Si l'une des valeurs est nulle, elle est ignorée.
- range(value, min, max, include_min, include_max) : retourne true si value est comprise entre min et max. Par défaut, include_min et include_max sont égales à true.
- substr(string, start, length) : retourne un segment de chaîne de caractères.
- in_array(value, array(value1, value2, ...)) : indique si une valeur appartient à un tableau.
- array_match_any(array(value1, value2, ...), array(value1, value2, ...)) : indique si au moins une valeur est présente dans les deux tableaux.
- array_match_all(array(value1, value2, ...), array(value1, value2, ...)) : indique si le contenu des tableaux est identique.
"ex0": {
"label": "Exemple avec fonction min",
"fees": "min({cart.weight},{cart.price+tax+discount},{cart.qty})"
},
"ex1": {
"label": "Exemple avec fonction range",
"conditions": "range({cart.weight},1.0,3.0)",
"fees": 10
},
"ex2": {
"label": "Exemple avec fonction substr *",
"conditions": "substr('{cart.coupon_code}', 0, 5)=='free_'",
"fees": 10
},
"ex3": {
"label": "Exemple avec fonction in_array avec des chaînes de caractères *",
"conditions": "in_array({{cart.coupon_code}}, array('free1', 'free2'))",
"fees": 10
},
"ex4": {
"label": "Exemple avec fonction in_array avec des nombres",
"conditions": "in_array({cart.qty}, array(10,20,30))",
"fees": 10
},
"ex5": {
"label": "Exemple avec fonction array_match_any",
"about": "5 x poids des produits qui se trouvent dans la catégorie 2 ou 3",
"fees": "{sum product.weight where array_match_any(product.categories.id, array(2, 3))}*5.0"
},
"ex6": {
"label": "Exemple avec fonction array_match_all",
"about": "5 x poids des produits qui se trouvent à la fois dans la catégorie 2 et dans la catégorie 3",
"fees": "{sum product.weight where array_match_all(product.categories.id, array(2, 3))}*5.0"
}
}
* Concernant l'échappement des chaînes de caractères, se référer à l'initiation aux formules.
Faire une copie d'une propriété d'un autre élément
Il est possible de faire une copie d'une propriété dans un autre élément à l'aide de la syntaxe ci-dessous.
Vous pouvez utiliser cette technique dans toutes les propriétés (conditions, fees, ...).
"colissimo": {
"label": "Colissimo",
"shipto": "AD,FR,MC",
"conditions": "{cart.price-tax+discount}<1000.00",
"fees": "1.30 + {table {cart.weight} in 0.5:5.30, 1.0:6.50, 2.0:7.40, 3.0:8.30, 5.0:10.10}"
},
"ex1": {
"label": "Copie des conditions d'une autre méthode",
"conditions": "({colissimo.conditions}) and ({cart.weight}>=0)",
"fees": 10
},
"ex2": {
"label": "Copie des frais de port d'une autre méthode",
"fees": "({colissimo.fees}) + 15.00"
}
}
Utilisation des tables table
Dans une table, on peut inclure ou exclure une valeur limite avec les caractères [ et ] :
"f0": {
"label": "Limite supérieure incluse",
"fees": "{table {cart.weight} in 1.0]:5.00}"
},
"f1": {
"label": "Limite supérieure exclue",
"fees": "{table {cart.weight} in 1.0[:5.00}"
}
}
Dans une table, on doit spécifier la valeur de référence. Pour cela, on peut utiliser une des variables disponibles.
Vous pouvez aussi utiliser une formule afin de définir une autre variable de référence.
"ex0": {
"label": "Table avec poids du panier",
"fees": "{table {cart.weight} in 0.5:5.30, 1.0:6.50}"
},
"ex1": {
"label": "Table avec quantité d'articles",
"fees": "{table {cart.qty} in 10:5.30, 20:6.50}"
},
"ex2": {
"label": "Table avec prix TTC",
"fees": "{table {cart.price+tax+discount} in 15.00:5.30, 30.00:6.50, *:10.00}"
},
"ex3": {
"label": "Table avec prix HT",
"fees": "{table {cart.price-tax+discount} in 15.00:5.30, 30.00:6.50, *:10.00}"
},
"ex4": {
"label": "Table avec valeur personnalisée",
"fees": "{table ceil({cart.weight}/10) in 1:5.30, 2:6.50}"
}
}
Utilisation des tables de correspondance switch
Dans un switch, on doit spécifier la valeur de référence. Pour cela, on peut utiliser une des variables disponibles.
Vous pouvez aussi utiliser une formule afin de définir une autre variable de référence.
"ex0": {
"label": "Table de correspondance avec le coupon",
"fees": "{switch {{cart.coupon_code}} in 'coupon1':5.30, 'coupon2':6.50, null:10.00, *:7.50}"
},
"ex1": {
"label": "Table de correspondance avec le pays de livraison",
"fees": "{switch {{shipto.country_id}} in 'FR':5.30, 'BE':6.50, 'DE':10.00, *:7.50}"
}
}
Utilisation des propriétés des produits
Afin de mieux correspondre aux Models de Magento, la version 2.4.8 de l'extension introduit la séparation entre les objects item et product. Un item est une déclinaison d'un product auquel on a ajouté d'éventuelles options. Chaque item a une quantité.
Liste des propriétés disponibles :
- L'article (ou item) :
- item.qty : quantité dans le panier
- item.price-tax+discount : le prix HT avec remise
- item.price-tax-discount : le prix HT sans remise
- item.price+tax+discount : le prix TTC avec remise
- item.price+tax-discount : le prix TTC sans remise
- item.option.* : option (la liste des options disponibles dépendra des produits)
- Le produit (ou product) :
product.quantity: utiliser item.qty- product.attribute.* : attribut
Liste d'attributs intéressants :- sku : la référence
- name : le nom
- weight : le poids
- price : le prix (tel qu'il a été saisi sur la fiche du produit)
- special_price : le prix promotionnel (tel qu'il a été saisi sur la fiche du produit)
price-tax+discount: utiliser item.price-tax+discountprice-tax-discount: utiliser item.price-tax-discountprice+tax+discount: utiliser item.price+tax+discountprice+tax-discount: utiliser item.price+tax-discount
- product.attribute.*.value : valeur de l'attribut
Dans le cas des attributs de type liste de sélection, product.attribute.* retourne l'id. Pour obtenir la valeur, il faut utiliser product.attribute.*.value - product.* : identique à product.attribute.* sauf si la variable est définie (ex: product.category)
product.option.*: utiliser les propriétés item.option.*- Première catégorie du produit :
- product.category : nom de la catégorie
- product.category.id : id de la catégorie
- product.category.* : attribut de la catégorie (ex: product.category.is_active)
Liste d'attributs intéressants :- is_active : catégorie activée ou non
- name : nom
- ...
- Toutes les catégories du produit (retourne un tableau, rubrique explicative) :
- product.categories : tableau du nom des catégories
- product.categories.id : tableau de l'id des catégories
- Le jeu d'attributs du produit :
- product.attribute_set : nom du jeu d'attributs
- product.attribute_set.id : id du jeu d'attributs
- product.attribute_set.* : attribut du jeu d'attributs (ex: product.attribute_set.attribute_set_name)
- product.stock.* : attribut du stock du produit
Liste d'attributs intéressants :- is_in_stock : disponibilité du produit
- qty : stock du produit
- ...
"ex0": {
"label": "Si au moins un produit possède l'attribut 'color' égal à 'Bleu'",
"conditions": "{count items where product.color=='Bleu'}>0",
"fees": 10
},
"ex1": {
"label": "Si tous les produits possèdent l'option 'size' supérieure ou égal à '1'",
"conditions": "{count items where item.option.size>='1'}=={cart.qty}",
"fees": 10
},
"ex2": {
"label": "Nombre de SKU différents",
"conditions": "{count distinct product.sku}",
"fees": 10
},
"ex3": {
"label": "Somme de toutes les options 'size' est supérieure à 30",
"conditions": "{sum item.option.size}>30",
"fees": 10
},
"ex4": {
"label": "Prix HT sans remise minimum des produits dans le panier est supérieur à 10",
"conditions": "{min item.price-tax-discount}>10",
"fees": 10
},
"ex5": {
"label": "Valeur maximum de l'option 'size' des produits dans le panier est inférieure à 50",
"conditions": "{max item.option.size}<50",
"fees": 10
},
"ex6": {
"label": "Nombre de produits en stock",
"conditions": "{count items where product.stock.is_in_stock==true}",
"fees": 10
}
}
Liste des préfixes possibles :
- count : nombre (toujours suivi de items)
- count distinct : nombre distinct (toujours suivi d'une propriété)
- sum : somme (toujours suivi d'une propriété)
- min : minimum (toujours suivi d'une propriété)
- max : maximum (toujours suivi d'une propriété)
Il est possible de spécifier des conditions que doivent remplir les produits pour être pris en compte. Pour cela, il suffit d'ajouter where suivi d'une formule.
Si la propriété est de type Oui/Non, vous devez utiliser les valeurs true/false ou 1/0 sans les guillemets.
"ex0": {
"label": "Exemple propriété de type Oui/Non : 0",
"conditions": "{count items where product.attribute.colissimo_allowed==0}",
"fees": 10
},
"ex1": {
"label": "Exemple propriété de type Oui/Non : false",
"conditions": "{count items where product.attribute.colissimo_allowed==false}",
"fees": 10
}
}
Si la propriété est de type Liste de sélection et que vous souhaitez faire une comparaison avec l'id la valeur plutôt qu'avec la valeur l'id, vous devez utiliser la syntaxe suivante :
"ex0": {
"label": "Si l'attribut 'color' est égale à la valeur dont l'id différente de 1",
"conditions": "{count items where product.color.id!=1}",
"fees": 10
}
}
"ex0": {
"label": "Si la valeur de l'attribut 'color' est différente de 'Bleu'",
"conditions": "{count items where product.color.value!='Bleu'}",
"fees": 10
}
}