Advanced Shipping est une extension pour la solution de e-commerce Magento.
Grace à sa syntaxe au format JSON, cette extension permet une grande souplesse dans le paramétrage des frais de livraison.
Cette documentation explique comment créer une configuration pour l'un des modes de livraison proposé par l'extension.
Venez découvrir nos plugins sur Owebia Store.
Utilisez l'index pour vous retrouver plus facilement dans la documentation.
* ou les expressions régulièresAvec l'expression régulière suivante, vous bloquez les codes postaux commançant par 97 ou 98 (avec ou sans zéros et espaces intercalés).
address_filterOn peut utiliser le nom ou l'ID des groupes client.
Les formules peuvent être utilisées dans les propriétés conditions et fees.
min()range()substr()Une variable de type chaîne de caractères doit être entourée par des guillemets simples sauf si on utilise l'auto-échappement avec les caractères {{ et }}.
{table … in …}
Dans une table, on peut inclure ou exclure une valeur limite avec les caractères [ et ] :
Dans une table, on doit spécifier la valeur de référence. Pour cela, on peut utiliser une des variables disponibles.
On peut aussi utiliser une formule afin de définir une autre variable de référence.
{switch … in …} (table de correspondance)
Dans un switch, on doit spécifier la valeur de référence. Pour cela, on peut utiliser une des variables disponibles.
On peut aussi utiliser une formule afin de définir une autre variable de référence.
{count …}
Si la propriété est de type Oui/Non, vous devez utiliser les valeurs true/false ou 1/0 sans les guillemets.
{count distinct …}{sum …}{min …}{max …}{foreach …}in_array()in_array() avec des chaînes de caractères *array_match_any()array_match_all()Attention, il est à noter que dans Magento, un produit peut être dans plusieurs catégories. Faites donc particulièrement attention à la façon dont vous utilisez cette propriété.
dataUn élément de type data permet de spécifier des données utilisables dans les méthodes de livraison.
metaUn élément de type meta permet d'ajouter des données informatives (auteur, date…).
La configuration d'un mode de livraison 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).
Il existe trois différents types d'élément de configuration :
Chaque élément possède plusieurs propriétés :
about : commentaire sur l'élémenttype : type de l'élément (method, meta ou data)
Propriétés spécifiques à un élément de type method :
label : nom de la méthode de livraisondescription : description (visible seulement si le template l'affiche)enabled : méthode de livraison activée ou nonfees : frais de portconditions : conditions d'activationshipto : pays (régions, codes postaux) autorisés à la livraisonbillto : pays (régions, codes postaux) autorisés à la facturationorigin : pays (régions, codes postaux) autorisés en originecustomer_groups : groupes de client autoriséstracking_url : URL de suivi (plus d'informations)shipto, billto et 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)").
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çaisesChaque élément de configuration possède un identifiant unique. Cet identifiant permet ensuite de faire référence à l'élément.
Exemple :
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…).
Les propriétés fees et conditions sont spécifiées sous la forme de formules.
Une formule utilise des variables, des fonctions, des fonctions spéciales et des opérateurs mathématiques.
Opérateurs mathématiques disponibles :
*, /, + et -%( et )&&, and, ||, or, ==, <, >, <=, >=& et |C ? X : Y (ex: "{cart.price_exluding_tax}>100 ? 15*{cart.weight} : 20*{cart.weight}")Vous avez la possibilité de mettre des espaces et des retours à la ligne dans les formules (pour aérer).
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.
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 {{ }}.
Les variables suivantes peuvent être utilisées dans les formules.
{cart.weight} : poids des marchandises{cart.qty} : la quantité d'articles{cart.price-tax+discount} : prix HT avec remise{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_code} : coupon de réduction{cart.free_shipping} : frais de port offert (par une règle dans Magento) [true/false]{cart.weight_unit} : l'unité de poids{cart.weight_for_charge} : poids des marchandises dont la livraison n'est pas offerte (par les règles de prix panier de Magento){quote.subtotal}: sous-total HT{quote.subtotal_with_discount}: sous-total HT avec remise{quote.grand_total}: total TTC avec remise{quote.base_subtotal}: sous-total HT dans la devise de base{quote.base_subtotal_with_discount}: sous-total HT avec remise dans la devise de base{quote.base_grand_total}: total TTC avec remise dans la devise de base{customer_group.id} : id du groupe client{customer_group.code} : nom du groupe client{customer_group.*} : propriété du groupe client (ex: {customer_group.tax_class_id}){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){customvar.*} : variable personnalisée de Magento (ex: {customvar.my_var}){shipto.country_name} : le nom du pays{shipto.country_id} : le code du pays{shipto.region_id} : l'id de la région{shipto.region_code} : le code de la région{shipto.street} : la rue{shipto.city} : la ville{shipto.postcode} : le code postal{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}){origin.country_name} : le nom du pays{origin.country_id} : le code du pays{origin.region_id} : l'id de la région{origin.city} : la ville{origin.postcode} : le code postal{store.id} {store.code} {store.name} {store.address} {store.phone} : id, code, nom, adresse et téléphone du magasin{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)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.Les variables suivantes peuvent être utilisées dans les fonctions spéciales.
Contrairement à ailleurs, les variables suivantes ne doivent pas être entourées par les caractères { et }.
Un item est une déclinaison d'un product auquel on a ajouté d'éventuelles options. Chaque item a une quantité.
item) :
item.qty : quantité dans le panieritem.price-tax+discount : le prix HT avec remiseitem.price-tax-discount : le prix HT sans remiseitem.price+tax+discount : le prix TTC avec remiseitem.price+tax-discount : le prix TTC sans remiseitem.option.* : option (la liste des options disponibles dépendra des produits)product) :
product.attribute.* : attributsku : la référencename : le nomweight : le poidsprice : 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)product.attribute.*.value : valeur de l'attributproduct.attribute.* retourne l'id. Pour obtenir la valeur, il faut utiliser product.attribute.*.valueproduct.* : identique à product.attribute.* sauf si la variable est définie (ex: product.category)product.category : nom de la catégorieproduct.category.id : id de la catégorieproduct.category.* : attribut de la catégorie (ex: product.category.is_active)is_active : catégorie activée ou nonname : nomproduct.categories : tableau du nom des catégoriesproduct.categories.id : tableau de l'id des catégoriesproduct.attribute_set : nom du jeu d'attributsproduct.attribute_set.id : id du jeu d'attributsproduct.attribute_set.* : attribut du jeu d'attributs (ex: product.attribute_set.attribute_set_name)product.stock.* : attribut du stock du produitis_in_stock : disponibilité du produitqty : stock du produitforeachLes variables suivantes peuvent être utilisées dans les boucles foreach.
{selection.weight} : poids de la sélection{selection.qty} : nombre d'articles dans la sélectionLorsque la sélection se fait sur le sku, chaque sélection est composée d'un seul article. On peut donc utiliser les variables article et produit.
{item.*} : propriété de l'article{product.*} : propriété du produit
Les variables article et produit sont identiques aux variables utilisables dans les fonctions spéciales à la seule différence qu'elles doivent être entourées par les caractères { et }.
abs(x) : valeur absolueceil(x) : arrondi supérieurexp(x) : exponentielfloor(x) : arrondi inférieurlog(x) : logarithme népérienlog(x, base) : logarithmemax(x, y, …) : maximum, valeurs nulles ignoréesmin(x, y, …) : minimum, valeurs nulles ignoréespi() : nombre PIpow(x, puissance) : puissance rand(min, max) : entier aléatoireround(x) : arrondisqrt(x) : racine carréesubstr(string, start, length) : retourne un segment de chaîne de caractères.in_array(value, array(value1, value2, …)) : retourne vrai si la valeur se trouve dans le tableau.array_match_any(array(value1, value2, …), array(value1, value2, …)) : retourne vrai si au moins une valeur est présente dans les deux tableaux.array_match_all(array(value1, value2, …), array(value1, value2, …)) : retourne vrai si le contenu des tableaux est identique.range(value, min, max, include_min, include_max) : retourne vrai si value est comprise entre min et max. Par défaut, include_min et include_max sont égales à true.{table … in …} : définit des valeurs en fonction de seuils (exemples){switch … in …} : définit une table de correspondance (exemples)
Le premier paramètre … des fonctions table et switch est la valeur de référence, il peut s'agir soit d'une variable, soit d'une formule.
{count items[ where …]} : compte les articles remplissant les conditions (exemples){count distinct …[ where …]} : compte les différentes valeurs d'une propriété pour les articles remplissant les conditions (exemples){sum …[ where …]} : calcule la somme des valeurs d'une propriété pour les articles remplissant les conditions (exemples){min …[ where …]} : retourne la valeur minimum d'une propriété pour les articles remplissant les conditions (exemples){max …[ where …]} : retourne la valeur maximum d'une propriété pour les articles remplissant les conditions (exemples)
Le premier paramètre … des fonctions count distinct, sum, min et max doit être une propriété (ex: product.attribute.weight).
La condition where est facultative. Si elle est spécifiée, elle le sera sous la forme d'une formule.
foreach
Les boucles foreach permettent d'effectuer un calcul sur des groupes de produits plutôt que de tenir compte de tous les produits du panier.
Le résultat global d'une boucle foreach est la somme des résultats de chaque passage dans la boucle.
A l'intérieur d'une boucle foreach, il est possible d'utiliser de nouvelles variables.
Les variables suivantes doivent être remplacées par leur équivalente.
{cart.coupon} {cart.coupon_code}{cart.quantity} {cart.qty}{cart.price_excluding_tax} {cart.price-tax+discount}{cart.price_including_tax} {cart.price+tax+discount}{cart.weight.for-charge} {cart.weight_for_charge}{cart.weight.unit} {cart.weight_unit}{customer.group.code} {customer_group.code}{customer.group.id} {customer_group.id}{{customVar code=*}} {customvar.*}{destination.country.code} {shipto.country_id}{destination.country.name} {shipto.country_name}{destination.postcode} {shipto.postcode}{destination.region.code} {shipto.region_code}{free_shipping} {cart.free_shipping}{origin.country.code} {origin.country_id}{origin.country.name} {origin.country_name}{origin.region.code} {origin.region_id}{selection.quantity} {selection.qty}tracking_url
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 Advanced 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}.
Magento ne gère pas les liens de tracking mais un statut de tracking. L'extension Advanced Shipping 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 Advanced Shipping 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.
about : propriétéenabledoriginbilltoshiptoaddress_filter : raccourci, exemplesproduct.attribute.*cart : variablesaboutconditions : propriétécount : fonction spécialecount distinct : fonction spécialecustomer : variablescustomer_group : variablescustomer_groups : propriétécustomvar : variablesdata : type d'élément, exemplesdate : variablesenableddescription : propriétéshiptoenabled : propriétéshiptocustomer_groupsitem : variablesitem.option.* : variableslabel : propriétémax :
meta : type d'élément, exemplesmethod : type d'élémentmin :
cartproduct : variablesproduct.attribute.* : variablesproduct.categories : variables, exemplesquote : variablesrequest : variablesshipto :
store : variablessum : fonction spécialeswitch : fonction spéciale, exemplestable : fonction spéciale, exemplesswitchlabeltracking_url : propriété, plus d'informationstype : propriététracking_urlcustomvar