Documentation de l'extension Advanced Shipping 2.6.10 pour Magento 1.x par Owebia

Introduction

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.

Vous souhaitez faire plus avec Advanced Shipping ?

Venez découvrir nos plugins sur Owebia Store.

Plugin Unlimited Carriers

Créez des nouveaux transporteurs avec Advanced Shipping

Plugin Universal Setting

Cacher ou changer le prix des méthodes de tous les modules de livraison

Utilisez l'index pour vous retrouver plus facilement dans la documentation.

Exemples

Exemple simple : port offert

{ "__auto__":{"label":"Livraison gratuite","fees": 0} }

Frais relatifs à la destination

{ "__auto__":{"label":"France, Allemagne, Suisse, Espagne, Italie","shipto":"FR,DE,CH,ES,IT","fees":10}, "__auto__":{"label":"France sauf la Corse","shipto":"FR-(2A,2B)","fees":10}, "__auto__":{"label":"Corse","shipto":"FR(2A,2B)","fees":10}, "__auto__":{"label":"Monde entier sauf l'Allemagne et la Corse","shipto":"* - ( DE, FR(2A,2B) )","fees":10} }

Utiliser le caractère jocker * ou les expressions régulières

{ "__auto__":{"label":"Caractère jocker autorisant les codes postaux commençant par 25","shipto":"FR(25*)","fees":10}, "__auto__":{"label":"Expression régulière acceptant les codes postaux commençant par 'PO', 'po', 'Po' ou 'pO'","shipto":"GB(/^PO.*$/i)","fees":10} }

Bloquer la livraison vers la France mais avec un code postal DOM/TOM

Avec 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).

{ "__auto__":{"label":"Expression régulière refusant les codes postaux commençant par 97 et 98","shipto":"FR-(/^[0\\s]*9\\s*[78].*/)","fees":10} }

Utilisation des raccourcis address_filter

{ "__auto__":{"label":"Europe sauf la France","shipto":"({address_filter.EU-27}) - (FR)","fees":10} }

Frais relatifs au groupe client

On peut utiliser le nom ou l'ID des groupes client.

{ "__auto__":{"label":"Groupes NOT LOGGED IN et General","customer_groups":"NOT LOGGED IN,General","fees":10}, "__auto__":{"label":"Groupes NOT LOGGED IN et General par leur ID","customer_groups":"0,1","fees":10}, "__auto__":{"label":"Groupe Retailer","customer_groups":"Retailer","fees":10} }

Utiliser les formules

Les formules peuvent être utilisées dans les propriétés conditions et fees.

{ "__auto__":{"label":"Livraison","fees":"0.1 * {cart.price-tax+discount} + 10.00"} }

Copier la propriété d'un autre élément

{ "standard":{"label":"Livraison standard","conditions":"{cart.price-tax+discount} < 1000.00","fees":10}, "express":{"label":"Livraison express","conditions":"( {standard.conditions} ) && ( {cart.weight} < 10 )","fees":12} }

Utiliser la fonction min()

{ "__auto__":{"label":"Livraison","fees":"min({cart.weight}, {cart.price+tax+discount}, {cart.qty})"} }

Utiliser la fonction range()

{ "__auto__":{"label":"Livraison","conditions":"range({cart.weight}, 1.0, 3.0)","fees":10} }

Utiliser la fonction 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 }}.

{ "__auto__":{"label":"Sans utiliser l'auto-échappement","conditions":"substr('{cart.coupon_code}', 0, 5)=='free_'","fees":10}, "__auto__":{"label":"En utilisant l'auto-échappement","conditions":"substr({{cart.coupon_code}}, 0, 5)=='free_'","fees":10} }

Utiliser les fonctions spéciales

Utilisation de la fonction spéciale {table … in …}

{ "__auto__":{"label":"Livraison","fees":"{table {cart.weight} in 0.5:5.30, 1.0:6.50, 2.0:7.40, 3.0:8.30, 5.0:10.10}"} }

Dans une table, on peut inclure ou exclure une valeur limite avec les caractères [ et ] :

{ "__auto__":{"label":"Limite supérieure incluse","fees":"{table {cart.weight} in 1.0]:5.00}"}, "__auto__":{"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.
On peut aussi utiliser une formule afin de définir une autre variable de référence.

{ "__auto__":{"label":"Table avec poids du panier","fees":"{table {cart.weight} in 0.5:5.30, 1.0:6.50}"}, "__auto__":{"label":"Table avec quantité d'articles","fees":"{table {cart.qty} in 10:5.30, 20:6.50}"}, "__auto__":{"label":"Table avec prix TTC","fees":"{table {cart.price+tax+discount} in 15.00:5.30, 30.00:6.50, *:10.00}"}, "__auto__":{"label":"Table avec prix HT","fees":"{table {cart.price-tax+discount} in 15.00:5.30, 30.00:6.50, *:10.00}"}, "__auto__":{"label":"Table avec valeur personnalisée","fees":"{table ceil({cart.weight}/10) in 1:5.30, 2:6.50}"} }

Utilisation de la fonction spéciale {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.

{ "__auto__":{"label":"Switch avec code promo","fees":"{switch {{cart.coupon_code}} in 'coupon1':5.30, 'coupon2':6.50, null:10.00, *:7.50}"}, "__auto__":{"label":"Switch avec pays de livraison","fees":"{switch {{shipto.country_id}} in 'FR':5.30, 'BE':6.50, 'DE':10.00, *:7.50}"} }

Utiliser la fonction spéciale {count …}

{ "__auto__":{"label":"Si au moins un produit possède l'attribut 'color' égal à 'Bleu'","conditions":"{count items where product.attribute.color=='Bleu'} > 0","fees":10}, "__auto__":{"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} }

Si la propriété est de type Oui/Non, vous devez utiliser les valeurs true/false ou 1/0 sans les guillemets.

{ "__auto__":{"label":"Exemple propriété de type Oui/Non : 1","conditions":"{count items where product.attribute.colissimo_allowed==1}","fees":10}, "__auto__":{"label":"Exemple propriété de type Oui/Non : true","conditions":"{count items where product.attribute.colissimo_allowed==true}","fees":10} }

Utiliser la fonction spéciale {count distinct …}

{ "__auto__":{"label":"Nombre de SKU différents","conditions":"{count distinct product.attribute.sku}","fees":10} }

Utiliser la fonction spéciale {sum …}

{ "__auto__":{"label":"Somme de toutes les options 'size' est supérieure à 30","conditions":"{sum item.option.size} > 30","fees":10} }

Utiliser la fonction spéciale {min …}

{ "__auto__":{"label":"Prix HT sans remise minimum des articles dans le panier est supérieur à 10","conditions":"{min item.price-tax-discount} > 10","fees":10} }

Utiliser la fonction spéciale {max …}

{ "__auto__":{"label":"Valeur maximum de l'option 'size' des articles dans le panier est inférieure à 50","conditions":"{max item.option.size} < 50","fees":10} }

Utiliser les boucles {foreach …}

{ "__auto__":{"label":"Regroupement des produits par origine puis traitement des groupes séparémment","fees":"{foreach product.attribute.code_origin}{table {selection.weight} in 0.0:0.00, 1.0:11.00, 3.0:12.00, 5.0:13.00}{/foreach}"}, "__auto__":{"label":"Calcul des frais de port par produit","fees":"{foreach product.attribute.sku}{product.attribute.shipping}*{item.qty}{/foreach}"} }

Manipuler les tableaux

Utilisation de la fonction in_array()

{ "__auto__":{"label":"Livraison","conditions":"in_array({cart.qty}, array(10, 20, 30))","fees":10} }

Utilisation de la fonction in_array() avec des chaînes de caractères *

{ "__auto__":{"label":"Livraison","conditions":"in_array({{cart.coupon_code}}, array('free1', 'free2'))","fees":10} }

Utilisation de la fonction array_match_any()

{ "__auto__":{"label":"Livraison","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"} }

Utilisation de la fonction array_match_all()

{ "__auto__":{"label":"Livraison","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"} }

Autres exemples

Utiliser la catégorie des produits

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é.

{ "__auto__":{"label":"Boucle foreach dont l'itération se fait sur la catégorie","fees":"{foreach product.categories}{selection.weight}{/foreach}"}, "__auto__":{"label":"Utilisation de la catégorie à l'intérieur d'une boucle foreach","fees":"{foreach product.sku}({{product.category}}=='Test' ? 2.00 : 1.00)*{item.qty}{/foreach}"}, "__auto__":{"label":"Utilisation de l'id de la catégorie à l'intérieur d'une boucle foreach","fees":"{foreach product.sku}({product.category.id}==12 ? 2.00 : 1.00)*{item.qty}{/foreach}"}, "__auto__":{"about":"La fonction in_array() est utilisée car product.categories retourne un tableau","label":"Somme des attributs weight des produits de la catégorie 'Test'","fees":"{sum product.weight where in_array('Test', product.categories)}"}, "__auto__":{"about":"La fonction in_array() est utilisée car product.categories.id retourne un tableau","label":"Somme des attributs weight des produits de la catégorie dont l'id est 12","fees":"{sum product.weight where in_array(12, product.categories.id)}"}, "__auto__":{"about":"La fonction array_match_any() est utilisée car product.categories.id retourne un tableau","label":"Somme des attributs weight des produits qui se trouvent dans une des catégories #11 et #12","fees":"{sum product.weight where array_match_any(product.categories.id, array(11, 12))}"}, "__auto__":{"label":"Somme des poids des produits dont la première catégorie est 'Test'","fees":"{sum product.weight where product.category=='Test'}"}, "__auto__":{"label":"Somme des poids des produits dont l'id de la première catégorie est 12","fees":"{sum product.weight where product.category.id==12}"} }

Ajout et utilisation d'un élément data

Un élément de type data permet de spécifier des données utilisables dans les méthodes de livraison.

{ "mydata":{"type":"data","var1":"12"}, "__auto__":{"label":"Livraison","shipto":"FR","fees": "{mydata.var1}"}, "__auto__":{"label":"Livraison","shipto":"DE","fees": "{mydata.var1}*1.5"} }

Ajout d'un élément meta

Un élément de type meta permet d'ajouter des données informatives (auteur, date…).

{ "about":{"type":"meta","author":"Owebia","date":"15/07/2013","about":"Tarifs 2013"} }

Définitions

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).

Les éléments

Il existe trois différents types d'élément de configuration :

  • 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 (exemples)
  • meta : données informatives (exemples)

Les propriétés

Chaque élément possède plusieurs propriétés :

  • about : commentaire sur l'élément
  • type : 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 livraison
  • description : description (visible seulement si le template l'affiche)
  • enabled : méthode de livraison activée ou non
  • fees : frais de port
  • conditions : conditions d'activation
  • shipto : pays (régions, codes postaux) autorisés à la livraison
  • billto : pays (régions, codes postaux) autorisés à la facturation
  • origin : pays (régions, codes postaux) autorisés en origine
  • customer_groups : groupes de client autorisés
  • tracking_url : URL de suivi (plus d'informations)

Voir les exemples

Utiliser les propriétés de type adresse (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 /.
Vous pouvez utiliser l'option d'insensibilité à la casse (ex: "GB(/^PO.*$/i)").

Voir les exemples

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

Voir les exemples

L'identifiant unique

Chaque élément de configuration possède un identifiant unique. Cet identifiant 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…).

Les formules

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 :

  • 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}")

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.

Les variables

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.

  • Le panier :
    • {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)
  • Le bon de commande :
    • {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
  • Le group client :
    • {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})
  • 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})
  • L'adresse de livraison :
    • {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
  • 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} : 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
  • 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.

Variables utilisables dans les fonctions spéciales

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é.

  • 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.attribute.* : attribut
      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)
    • 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)
    • 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)
        Attributs intéressants :
        • is_active : catégorie activée ou non
        • name : nom
    • Toutes les catégories du produit (retourne un tableau, exemples) :
      • 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
      Attributs intéressants :
      • is_in_stock : disponibilité du produit
      • qty : stock du produit

Variables utilisables dans les boucles foreach

Les 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élection

Lorsque 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 }.

Les fonctions

Les fonctions numériques

  • abs(x) : valeur absolue
  • ceil(x) : arrondi supérieur
  • exp(x) : exponentiel
  • floor(x) : arrondi inférieur
  • log(x) : logarithme népérien
  • log(x, base) : logarithme
  • max(x, y, …) : maximum, valeurs nulles ignorées
  • min(x, y, …) : minimum, valeurs nulles ignorées
  • pi() : nombre PI
  • pow(x, puissance) : puissance
  • rand(min, max) : entier aléatoire
  • round(x) : arrondi
  • sqrt(x) : racine carrée

Les fonctions pour manipuler des chaînes de caractères

  • substr(string, start, length) : retourne un segment de chaîne de caractères.

Les fonctions pour manipuler des tableaux

  • 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.

Fonctions diverses

  • 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.

Les fonctions spéciales

  • {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.

Utilisation des boucles 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.

Exemples

Astuces

Afficher la description d'une méthode

Le template par défaut n'affiche pas la description de la méthode.

Pour afficher la description, ajouter <?php echo $_rate->getMethodDescription() ?> dans le template checkout/onepage/shipping_method/available.phtml

Divers

L'URL de suivi 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}.

{ "__auto__":{"label":"Exemple avec URL de suivi pour le transporteur Colissimo","fees":10,"tracking_url":"https://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 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:8Lxxxxxxxxxxxcolissimo 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.

Changelog

[2.6.10 - December 24, 2020]
Fix HTML error in the documentation

[2.6.9 - December 24, 2020]
Add tips section in the documentation
Fix error in documentation about using regular expression
Fix issue #13: fatal error when PhpParser is already loaded (e.g. in n98-magerun.phar)

[2.6.8 - May 13, 2019]
Fix issue with Unlimited Carriers and Advanced Shipping Pro (<resource/> tag must be the last child of <global/> tag)

[2.6.7 - April 29, 2019]
Remove useless $process variable (thanks to Vincent M.)
Get quote from $request object instead of getting it from session (avoid issue with REST API access)

[2.6.6 - April 11, 2019]
Fix issue with numerical fees values (no formula)
Remove debug causing PHP error

[2.6.5 - March 26, 2019]
Use Abstract Syntax Tree instead of code evaluation (https://github.com/nikic/PHP-Parser/)

[2.6.4 - February 4, 2019]
Remove obsolete file package.xml
Update README.md

[2.6.3 - December 28, 2017]
Fix issue #9: invalid value of {cart.price+tax+discount} on a quote with a coupon code
Fix timezone issue with date functions

[2.6.2 - June 19, 2017]
Fix issue when cart item has no id defined, thanks to @doctea
Fix 'A non well formed numeric value encountered' notice with PHP 7 in ConfigParser, thanks to @adrian3d
Fix issue with bundle products and "item processing on self" setting

[2.6.1 - April 19, 2017]
Rename module to "Advanced Shipping"
Update copyright notice
Clarification of a sentence in the documentation
Fix an incorrect sentence in the file README.md: only one shipping mode available

[2.6.0 - October 24, 2016]
Refactor code to comply to Magento coding standards
Remove compress functionality
Only one carrier available for new installations

[2.5.24 - September 07, 2016]
Update documentation

[2.5.23 - August 18, 2016]
Fix special functions call issue: missing opening parenthesis

[2.5.22 - July 18, 2016]
Add composer.json and modman files

[2.5.21 - May 9, 2016]
Fix replacement of special functions, thanks to Sébastien L.

[2.5.20 - 25 avril 2016]
Fix code indentation
Fix version number
Add readme file in package

[2.5.19 - 09 novembre 2015]
Note: the extension is not affected by the patch SUPEE-6788 since it uses the new admin url routing syntax for 3 years (version 2.4.8.0)
Fix bug: deactivation of auto-escaping by default since it can cause some bugs (ex: impossible to use {address_filter.EU-27} in shipto)
Fix bug: fix auto-escaping of properties like {{shipto.country_name}}
Fix bug: variable replacements in labels (variables {cart.price-tax-discount}, {cart.price-tax+discount}, {cart.price+tax-discount} and {cart.price+tax+discount})
Fix bug: use items and not quote to retrieve values {cart.price-tax-discount}, {cart.price-tax+discount}, {cart.price+tax-discount} and {cart.price+tax+discount} (quote totals are not available at this time, calculating them causes duplications of addresses and a false grand_total value)
Fix bug: retrieve customer in backoffice order
Fix unicode accented chars in json_encode for PHP < 5.4
Fix bug: usage of regular expressions inside {count ...}, {sum ...}, {min ...} and {max ...}
Allow usage of php functions date and strtotime (ex: "label": "'Your package will be delivered between ' . date('d/m', strtotime('+5 days')) . ' and ' . date('d/m Y', strtotime('+7 days'))",

[2.5.18 - 24 juillet 2014]
Pas de modification, nouvelle version pour Magento Connect

[2.5.17 - 24 juillet 2014]
Correction d'un bug d'affichage des totaux dans le panier suite au correctif 2.5.16 : annulation de la modification faite dans la version 2.5.14 (récupération de la session avec Mage::getModel('checkout/session') et non avec Mage::getSingleton('checkout/session'), avec getSingleton, $session->getQuote() ne contient pas les totaux calculés et si on appelle $quote->collectTotals(), les totaux sont doublés)

[2.5.16 - 24 juillet 2014]
Correction d'un bug dans le montant du panier suite à la modification de la récupération de la session dans la version 2.5.14 : appel de $quote->collectTotals();

[2.5.15 - 07 juin 2014]
Remplacement de static:: par self:: pour une rétro-compatibilité avec PHP < 5.3

[2.5.14 - 26 mai 2014]
Correction des retours lignes dans 3 fichiers : CR => CRLF (merci à Christophe S.)
Correction d'un bug avec l'utilisation des expressions régulières et des caractères joker dans le filtrage des adresses (merci à Alexis A., Morgan R., Maxime L.)
Correction d'un bug dans le calcul de la valeur {cart.price+tax+discount}
Correction d'un bug dans la récupération de la session (merci à Gabriel F.)
Support des nombres au format 2.04e2 avec le e en minuscule (merci à Morgan R.)
Ajout de la possibilité d'avoir des espaces, des virgules et des tirets dans le nom des codes région en entourant les valeurs par des guillemets (ne pas oublier de les échapper si nécessaire)

[2.5.13 - 5 novembre 2013]
Correction d'un bug avec l'auto-escaping des chaînes de caractères dans les tableaux (merci à Sylvain P.)
Correction d'un bug dans le calcul des variables {car.price+tax+discount} et {cart.price+tax-discount} lorsque le panier contenait des produits packagés (merci à Nematis)
Suppression des caractères &gt; et &lt; restés dans les exemples de configuration JSON dans la documentation
Correction d'un bug avec {cart.free_shipping}
Correction d'un bug dans Owebia_Shipping2_Model_Os2_Data_Cart qui posait problème lorsque les classes Mage_Sales_Model_Quote_Address_Item et Mage_Sales_Model_Quote_Item étaient redéfinies (merci à Franck T.)
Suppression de la configuration Colissimo dans le 1er mode de livraison : la configuration est téléchargeable sur le site owebia.com
Modification de l'origine des montants du panier (merci à carouze et Mathieu, voir https://www.magentocommerce.com/boards/viewthread/274340/P15/#t382192)
Ajout de nouvelles variables {quote.*}
Ajout d'une option pour réaliser l'auto-échappement systématique des variables

[2.5.12 - 21 février 2013]
Suppression des tarifs Chronopost et Export 3J périmés (modification 2.5.10 beta non effective)
Passage en mode Stable
Rappel : depuis la version 2.5.01 beta, la syntaxe de la configuration a changée pour devenir compatible à 100% JSON. Cela permet de meilleures performances (à condition que le JSON soit correct) car le travail de parsing de la configuration est réalisé par les fonctions natives ou celles du framework Zend. Cela permet également à d'autres scripts de venir créer des configurations car le format JSON est un format d'échange standard.

[2.5.11 beta - 10 janvier 2013]
Compatibilité avec PHP < 5.3.0 (json_last_error)

[2.5.10 beta - 09 janvier 2013]
Suppression des tarifs Chronopost et Export 3J périmés
Ajout d'un lien "Télécharger des modèles de configuration" sous les champs "Configuration"
Correction d'un problème avec les customvar : récupération de la valeur store plutôt que la valeur par défaut
Ajout de l'option case insensitive dans les expressions régulières des adresses
Correction d'une variable indéfinie $get_by_id dans Owebia_Shipping2_Model_Os2_Data_AbstractWithAttributes
Modification du traitement des produits bundle (correction de la valeur de {cart.qty}, possibilité de traiter soit le produit bundle, soit les produits enfants)

[2.5.09 beta - 07 janvier 2013]
Interception des erreurs résultant de l'utilisation de json_decode()
Utilisation de la propriété "code" pour définir l'ID du nouvel object lors de la correction automatique de la configuration (sinon deux passes étaient nécessaires)
Attribution d'un ID prévisible (incrémental) pour les blocks meta d'autocorrection afin de pouvoir les éditer
Échappement des backslashes dans la fonction jsonEncode
Correction d'un bug avec l'utilisation des sum, min, max et count
Correction d'un bug d'affichage du champ d'édition lorsque plusieurs pages étaient ouvertes dans l'éditeur
Correction d'un problème rencontré lorsque la compression des javascript et css était activée
Mise à jour des tarifs Colissimo (1/03/2012)

[2.5.08 beta - 20 décembre 2012]
Correction d'un problème lié à un bug d'IE : la propriété CSS white-space: nowrap ne fonctionne pas sous IE (utilisée sur le textarea source de l'éditeur)
Correction d'un bug lorsque foreach est utilisé, les items du cart étaient écrasés, ce qui pouvait poser problème pour la suite des calculs (merci à David G.)

[2.5.07 beta - 14 décembre 2012]
Correction d'un problème d'incompatibilité avec la compilation de Magento

[2.5.06 beta - 10 décembre 2012]
Correction d'un bug dans OwebiaShippingHelper->_processProduct lorsqu'il n'y a pas de produit dans le panier
Petites corrections de la documentation
Traduction de la documentation en anglais

[2.5.05 beta - 27 novembre 2012]
Ajout de la variable {date.weekday}
Correction d'un bug dans OwebiaShippingHelper->processRow (merci à Rod)

[2.5.04 beta - 27 novembre 2012]
Correction du code PHP pour supprimer des erreurs E_STRICT (merci à Cyril R.)
Suppression du répertoire "development-bundle" de jQuery UI (-1.43 Mo)

[2.5.03 beta - 22 novembre 2012]
Rétrocompatibilité du code avec la version 5.2 de PHP

[2.5.02 beta - 22 novembre 2012]
Correction d'un problème de packaging
Réorganisation de la documentation
Ajout du numéro de version dans l'onglet "Modes de livraison"
Mise à jour de la syntaxe de la configuration par défaut

[2.5.01 beta - 21 novembre 2012]
Modification de la syntaxe de la configuration pour la rendre 100% compatible JSON
Refonte complète de l'éditeur
Suppression de la compatibilité avec les propriétés dépréciées suivantes :
    'fees_table', 'fees_formula', 'fixed_fees', 'reference_value', 'prices_range', 'weights_range', 'product_properties',
    'free_shipping__fees_table', 'free_shipping__fees_formula', 'free_shipping__fixed_fees', 'free_shipping__label',
Suppression de la compatibilité avec la désactivation d'une méthode de livraison à l'aide du caractère #
Suppression de la compatibilité avec les mots réservés en majuscule : TABLE, SUM, COUNT, DISTINCT et IN
Ajout des fonctions array_match_any et array_match_all
Correction de product.categories et product.categories.id qui ne marchait plus depuis la version 2.4.8
Mise à jour de la documentation en Français

[2.4.8 beta - 28 août 2012]
Modification du controller utilisé pour l'éditeur afin que cela fonctionne toujours lorsque l'url du backoffice de celle du frontoffice ne sont pas sur le même sous-domaine (ex: admin.example.org et www.example.org) (merci à Brice C.)
Restructuration complète des variables afin d'optimiser le chargement des données (uniquement si elles sont utilisées)
Ajout de nouvelles variables {customer_group.*}, {customer.*}, {request.*}, {item.*}, {billto.*}
Renommage de certaines variables ({destination.*} => {shipto.*}, {free_shipping} => {cart.free_shipping}, {cart.quantity} => {cart.qty}, ...)
Ajout de l'option "auto correction" qui permet de désactiver les corrections automatiques de compatibilité de la configuration afin d'avoir de meilleures performances
Ajout de la fonction spéciale range()
Renommage de l'onglet "Owebia" en "Owebia Shipping 2"
Gestion des Bundle Product et des Configurable Product (possibilité de choisir où récupérer les données depuis l'onglet "Owebia Shipping 2")
Mise à jour de la documentation

[2.4.7 - 20 mars 2012]
Correction du code PHP pour supprimer des erreurs E_STRICT

[2.4.6 - 19 janvier 2012]
Correction d'un bug dans l'utilisation de la fonction {table ... in ...} : lorsque la variable de référence est indéfinie, le résultat était invalide (valeur précédente de la variable $replacement)
Correction d'un problème avec les produits packagés (bundle product) : les produits 'bundle' et les produits 'simple' étaient tous deux récupérés ce qui faussait les résultats
Support des sets d'attributs
    product.attribute_set dans les conditions de boucle foreach
    {product.attribute_set} et {product.attribute_set.id} comme variables dans les boucles foreach
    product.attribute_set, product.attribute_set.id dans les conditions des opérations sum, count, min et max
Optimisation du chargement de certaines valeurs (catégories, attribute set, ...)
Correction d'un problème avec les castings successifs (string), (float) qui posent problème lorsque la locale utilise la virgule comme séparateur de décimales

[2.4.5 - 12 janvier 2012]
Ajout de la fonction switch
Ajout d'une syntaxe pour auto-échapper les chaînes de caractères (ex: {{cart.coupon}} donnera null ou 'test' en fonction de la valeur de la variable)
Dans le cas d'un produit configurable avec option personnalisable, on récupère les options du produit parent et pas celles du produit enfant
Mise à jour de la documentation

[2.4.4 - 30 novembre 2011]
Correction d'un bug avec l'utilisation de product.category.id
Ajout des valeurs memory_limit et memory_usage dans le debug

[2.4.3 - 11 octobre 2011]
Support de la variable {cart.coupon} depuis le backoffice de Magento (merci à mfoillard, CF: https://www.magentocommerce.com/boards/viewthread/262907/)
Correction d'un bug dans les opérations sum, count, min et max ($properties = array(); écrasait plusieurs fois les valeurs précédentes)

[2.4.2 - 07 octobre 2011]
Support des nombres décimaux représentés sous la forme 5.3290705182E-15
Modification de la licence du code source (MIT au lieu de OSL 3.0)
Mise à jour des mentions de copyright et de licence
Nettoyage du code source (suppression de lignes de code en commentaire)
Initialisation des formules sum et count à 0 au lieu de null (pour éviter les erreurs de formule si aucun produit ne correpond)
Ajout des alias "a" et "attr" pour "attribute", "o" et "opt" pour "option", "p" pour "product", "c" pour "cart", "s" pour "selection"
Correction de la récupération des variables personnalisées : getValue('text') au lieu de getValue('plain')
Support des catégories
    product.categories dans les conditions de boucle foreach
    {product.category} et {product.category.id} comme variables dans les boucles foreach
    product.category, product.category.id, product.categories, product.categories.id dans les conditions des opérations sum, count, min et max
Amélioration du debug

[2.4.1 - 24 août 2011]
Modification légère du code php pour éviter un plantage avec certaines versions d'eAccelerator (cache php)
        $row = null;
        $this->addMessage('info',$row,null,'Ignored lines %s','<div class="code">'.trim($config_string).'</div>');
    au lieu de ;
        $this->addMessage('info',$row=null,null,'Ignored lines %s','<div class="code">'.trim($config_string).'</div>');
    (cf https://www.magentocommerce.com/boards/viewthread/233202/)
Ajout des variables de debug "info.server.os" et "info.server.software"
Ajout de la possibilité de récupérer la valeur minimum ou maximum de la quantité (ex: "{max product.quantity}")

[2.4.0 - 27 juin 2011]
Correction d'un bug lorsque plusieurs produits identiques avec des options différentes sont présents dans le panier (la valeur de l'option était toujours égale à celle du premier produit)
Ajout de la possibilité d'utiliser les expressions régulières dans les champs "destination" et "origin"
Ajout de la variable {car.weight.for-charge}
Mise à jour de la documentation en français
Mise à jour de l'éditeur
Correction d'un bug de l'éditeur lorsqu'on éditait une destination puis qu'on cliquait sur Annuler

[2.3.11 - 28 avril 2011]
Correction d'un problème d'encodage/décodage entre le javascript et le php via ajax (les signes "+" disparaissaient)
Surcharge du fichier Mage/Checkout/controllers/CartController.php pour corriger un problème avec Magento : les champs Mage_Sales_Quote_Item->_data['tax_amount'] n'étaient pas mis à jour correctement, ce qui créait un décalage et faussait la variable {cart.price+tax+discount}

[2.3.10 - 12 avril 2011]
Correction d'un problème dans AjaxController.php : passage direct d'un tableau par référence, il faut d'abord créer le tableau dans une variable puis passer la variable par référence
Ajout de la variable {cart.coupon}
Ajout des variables {cart.price-tax+discount}, {cart.price-tax-discount}, {cart.price+tax+discount}, {cart.price+tax-discount} qui permettent d'avoir le montant que l'on désire, avec ou sans prise en compte des taxes et des remises
Gestion semblable pour les attributs des produits : product.attribute.price-tax+discount utilisable dans une structure {sum} par exemple
Ajout de la possibilité de récupérer la valeur minimum ou maximum d'un attribut ou d'une option (utilisation identique à sum)

[2.3.9 - 20 janvier 2011]
Correction d'un problème avec le fichier adminhtml.xml (il y avait un commentaire avant l'en-tête XML)

[2.3.8 - 14 janvier 2011]
Correction d'un bug avec la propriété "customer_groups" lorsqu'on utilisait les id's (is_int remplacé par ctype_digit)
Modifications des champs de configuration :
- Le champ "debug" devient de type Oui/Non
- Le champ "auto-compression" devient "compression" de type Oui/Non
Implémentation d'une compression efficace :
- La configuration est compressée à l'aide de la fonction gzcompress() puis encodée en base 64 afin d'être facilement placée dans un champ textarea
- La longueur de configuration peut être divisée par 4 grâce à la compression
- La compression peut être utile sur certaines configurations où la longueur des champs est limitée
Amélioration de l'éditeur :
- Récupération des groupes utilisateurs de Magento et création d'un bouton pour chacun d'eux
- Ajout d'un bouton "Aide" (qui ouvre l'aide de l'éditeur) à droite du bouton "Ouvrir l'éditeur"
- Centralisation du changelog dans un fichier app/code/community/Owebia/Shipping2/changelog plutôt que dans les fichiers de langue
- L'éditeur compresse/décompresse la configuration (si la compression est activée)
Amélioration du debug
- Ajout des versions de PHP et de Magento
- Correction du chemin du fichier OwebiaShippingHelper.php
- Affichage du debug par la commande Mage::getSingleton('core/session')->addNotice() afin d'avoir un affichage plus propre (à l'intérieur des balises html)
- Affichage du debug seulement sur la page checkout/cart/index
Création d'un fichier app/code/community/Owebia/Shipping2/etc/adminhtml.xml (pour résoudre les problèmes d'accès à la section de configuration Owebia)
Mise à jour des tarifs par défaut avec les tarifs Colissimo Particuliers 2010 et Chronopost web 2010

[2.3.7 - 11 janvier 2011]
Modification de la récupération du timestamp courant en tenant compte du fuseau horaire sélectionné
Modification du CSS de l'éditeur pour palier à une modification du CSS du backoffice (sur les balises legend)
Ajout de contrôles isset dans le fichier app/code/community/Owebia/Shipping2/controllersAjaxController.php (merci à Damien C.)
Échappement des guillemets doubles dans la méthode _getConfig() dans le fichier js/owebia/shipping2/os2editor.js (merci à Damien C.)
Ajout de la méthode getRates() dans la classe Owebia_Shipping2_Model_Carrier_AbstractOwebiaShipping qui permet de récupérer les frais de port en injectant les données que l'on souhaite en paramètre
Réécriture de la méthode collectRates()

[2.3.6 - 23 novembre 2010]
Ajout d'un fichier app/etc/modules/Owebia_Shipping_2.xml vide pour écraser celui des versions précédentes à la 2.3.0 afin d'éviter une cohabitation de deux versions
Amélioration du traitement des commentaires avec l'éditeur (gestion des caractères #)

[2.3.5 - 08 novembre 2010]
Correction d'un problème chez les utilisateurs ayant une version de PHP antérieure à 5.3.0

[2.3.4 - 06 novembre 2010]
Correction d'un bug introduit dans la version 2.3.2 lors de l'utilisation des attributs et options avec les fonctions sum, count et count distinct

[2.3.3 - 05 novembre 2010]
Possibilité de faire des copie de propriétés de façon récursive avec contrôle de boucle infinie

[2.3.2 - 05 novembre 2010]
Amélioration de l'éditeur :
- Ajout de l'aide en langue anglais
- Ajout d'informations dans l'aide
- Ajout des messages d'erreur de la configuration, avec possibilité de correction rapide
- Ajout de champs pour les lignes ignorées : on peut ainsi les modifier et appliquer les modifications
Ajout de la possibilité d'accéder aux informations sur le stock d'un produit grâce aux variables {product.stock.is_in_stock} et {product.stock.quantity}
Suppression de l'affichage du message d'erreur ""Correspondance non trouvée""
Correction d'un bug avec les groupes utilisateur ($id==null retournait true lorsque $id était égal à 0)
Correction d'une erreur de récupération de l'unité de poids
Améliorations diverses

[2.3.1 - 29 octobre 2010]
Correction d'un bug dans le fichier AjaxController : une variable n'était pas définie, ce qui générait une erreur avec certaines configurations PHP

[2.3.0 - 28 octobre 2010]
Correction d'un bug avec le caractère * dans les champs ""destination"" et ""origin"" comme jocker
Ajout d'un éditeur pour faciliter la modification des configurations Owebia Shipping
L'éditeur contient également une aide
Déplacement de certains fichiers pour mieux correspondre à la structure de Magento

[2.2.8 - 20 octobre 2010]
Correction d'une erreur dans l'include d'OwebiaShippingHelper lorsqu'on utilise le Compiler
Correction d'un bug de calcul du prix TTC dans certains cas ('row_total_with_discount' est égal à 0)
Ajout de la possibilité d'utiliser le caractère * dans les champs ""destination"" et ""origin"" comme jocker (par exemple ""FR(25*)"" retournera vrai pour tous les codes postaux du département du Doubs)
Ajout d'un bouton pour fermer la console de debug
Ajout d'informations dans le debug (tests sur la destination et l'origine, liste des variables passées en paramètre)
Affichage du debug uniquement sur la page panier (pas sur les pages en ajax)
Récupération du bon customer group lors d'une commande créée depuis le backoffice de Magento

[2.2.7 - 27 août 2010]
Possibilité d'utiliser les variables personnalisées (custom variables) de Magento grâce à la syntaxe {customvar.my_var} ou à la syntaxe standard {{customVar code=my_var}}

[2.2.6 - 25 août 2010]
Correction d'un bug avec la fonction getRowProperty() : utilisation de preg_match_all() à la place de while(preg_match()) et utilisation de continue à la place de break

[2.2.5 - 22 août 2010]
Correction d'un bug avec les propriétés de type booléenne spécifiées sans les guillemets (comme la propriété enabled)
Correction d'un bug avec la propriété customer_groups

[2.2.4 - 10 août 2010]
Utilisation de Mage::getModel('directory/country')->load($country_code)->getName() à la place de Mage::getModel('core/locale')->getLocale()->getTranslationList('territory',null,2) pour récupérer le nom d'un pays dans la langue courante (la première solution semble retourner le nom du pays dans la langue principale de la boutique), merci à coolshop pour la solution proposée
Remplacement de la valeur de configuration ""Afficher quand indisponible"" par la valeur ""Debug"" car la solution précédente posait des problèmes avec Magento 1.4.0
Amélioration de la clarté du debug (utilisation de couleurs et d'indentations)
Correction de bugs légers
Mise à jour de la syntaxe de la configuration proposée par défaut

[2.2.3 - 29 juillet 2010]
Correction d'un bug avec le traitement de formules dont le résultat est false

[2.2.2 - 29 juillet 2010]
Amélioration du système de cache des formules

[2.2.1 - 27 juillet 2010]
Correction de petits bugs

[2.2.0 - 22 juillet 2010]
Possibilité de compression/décompression de la configuration
Modification de certaines propriétés ({weight} => {cart.weight}, {price_excluding_tax} => {cart.price_excluding_tax}, {price_including_tax} => {cart.price_including_tax}, {products_quantity} => {cart.quantity},{contry} => {destination.country.name})
Syntaxe légèrement modifié pour {product.attribute.xxx} et {product.option.xxx} (pas de s)
Ajout de nouvelles propriétés utilisables dans le foreach : {selection.weight}, {selection.quantity}, {product.weight}, {product.quantity}
Possibilité d'utiliser {product.attribute.xxx} et {product.option.xxx} dans le foreach

[2.1.9 - 20 juillet 2010]
Évaluation des formules contenues dans les propriétés ""label"" et ""description""

[2.1.8 - 20 juillet 2010]
Correction d'une erreur dans le foreach (l'attribut était toujours ""name"")

[2.1.7 - 19 juillet 2010]
Ajout de la syntaxe foreach product.attribute.xxx

[2.1.6 - 28 décembre 2009]
Correction d'une erreur dans le nom d'une variable qui entrainait un plantage dans certaines situations

[2.1.5 - 28 décembre 2009]
Modification de la syntaxe des tables (pour offrir plus de souplesse)

[2.1.4 - 24 décembre 2009]
Modification de la syntaxe d'utilisation des propriétés des produits (pour offrir beaucoup plus de souplesse)
Possibilité de filtrer les produits dont on veut utiliser les propriétés.
Ajout de 'COUNT DISTINCT'

[2.1.3 - 17 décembre 2009]
Correction du calcul du nombre de produits dont les propriétés correspondent ""{count ..."" : prise en compte de la quantité
Simplification de la syntaxe de copie de propriété

[2.1.2 - 27 novembre 2009]
Correction d'un problème de priorité entre l'opérateur ""="" et l'opérateur ""and"" dans l'évaluation des formules : ajout de parenthèses autour de la formule

[2.1.1 - 26 novembre 2009]
Suppression de la propriété 'product_properties' qui doit être utilisée dans la propriété 'conditions'
Améliorations diverses

[2.1.0 - 24 novembre 2009]
Regroupement des propriétés 'fees_table', 'fees_formula' et 'fixed_fees' dans une unique propriété 'fees'
Regroupement des propriétés 'prices_range' et 'weights_range' dans une unique propriété 'conditions'
Suppression de la propriété 'reference_value'
Suppression des propriétés 'free_shipping__fees_table', 'free_shipping__fees_formula' et 'free_shipping__fixed_fees' (utiliser '{free_shipping}' dans la propriété 'conditions' à la place)
Ajout d'un analyseur de syntaxe de la configuration pour indiquer l'utilisation de propriétés non reconnues ou de propriétés obsolètes, les valeurs non reconnues, les virgules manquantes en fin de ligne, les doublons des propriétés 'code'
Utilisation des valeurs des propriétés obsolètes dans leur nouvel équivalent
Possibilité de copier une propriété avec la syntaxe ""{copy 'colissimo'.'fees'}""
Nouvelle syntaxe pour les tables (ancienne propriété 'fees_table') : ""{table 'weight' 1.0:2.50, 2.0:3.00}"" qui peuvent désormais être intégrées dans des formules
Séparation des méthodes publique, privées génériques (préfixe '_'), privées spécifiques à Magento (préfixe '__') pour faciliter le portage du module vers un autre système de boutique en ligne que Magento

[2.0.12 - 19 novembre 2009]
Amélioration de la transmission des variables entre les méthodes de la classe

[2.0.11 - 19 novembre 2009]
Correction du filtrage en fonction des options et des attributs des produits en présence de produits configurables

[2.0.10 - 13 novembre 2009]
Amélioration du filtrage en fonction des options et des attributs des produits
Correction du filtrage en fonction des options des produits

[2.0.9 - 12 novembre 2009]
Correction du filtrage en fonction des options des produits

[2.0.8 - 12 novembre 2009]
Possibilité de filtrer en fonction des options des produits

[2.0.7 - 04 novembre 2009]
Possibilité de filtrer en fonction de l'origine de livraison
Possibilité de filtrer en fonction des attributs de produits
Possibilité de spécifier un code postal dans le filtrage de la destination
Compatibilité avec Magento 1.4.* : utilisation de la fonction getTranslationList au lieu de getCountryTranslationList qui est dépréciée

[2.0.6 - 02 octobre 2009]
Possibilité de spécifier des groupes de clients

[2.0.5 - 18 août 2009]
Ajout de la possibilité de spécifier dans la destination le monde entier sauf certains pays
Correction d'un problème de parsing de la destination lorsqu'il n'y avait qu'un seul code région entre parenthèses
Possibilité d'avoir des codes région comprenant des espaces

[2.0.4 - 28 juillet 2009]
Suppression des options ""Unité de poids"" et ""Utiliser le montant TTC"" de chaque mode de livraison
Possibilité d'inclure ou d'exclure les valeurs limites dans les champs 'prices_range', 'weights_range' et 'fees_table' grâce aux caractères '[' et ']'
Possibilité de spécifier dans les champs 'prices_range' et 'fees_table' si on utilise le montant HT ou TTC
Ajout du champ 'enabled' et suppression de la possibilité de désactiver un bloc de configuration avec le caractère '#'
Modification du message d'erreur par défaut
Ajout d'un message d'erreur en cas d'erreur d'interprétation d'une formule de calcul de frais

[2.0.3 - 27 juillet 2009]
Correction d'une erreur dans l'interprétation des formules avec des fonctions à arguments multiples (min, max, rand)

[2.0.2 - 27 juin 2009]
Correction d'une erreur d'expression régulière

[2.0.1 - 25 juin 2009]
Uniformisation du nom des variables dans les valeurs de référence : 'price_excluding_tax' et 'price_including_tax' à la place de la valeur 'price'
Correction d'un problème de Magento qui ne semble pas retourner la bonne valeur lors de l'appel à la méthode $request->getFreeShipping()
Ajout du champ 'description' qui permet d'ajouter une description à une méthode de livraison qui peut être récupérée grâce à la méthode $_rate->getMethodDescription()
Corrections de bugs

[2.0 - 3 avril 2009]
Création de la version 2.0 du module Owebia Shipping qui n'est plus compatible avec les anciennes versions

                

Index

A

  • about : propriété
  • activation : voir enabled
  • adresse d'envoi : voir origin
  • adresse de facturation : voir billto
  • adresse de livraison : voir shipto
  • address_filter : raccourci, exemples
  • attribut produit : voir product.attribute.*

B

C

D

E

F

G

  • gratuit : voir "port offert"
  • groupes client : voir customer_groups

I

L

M

O

P

Q

R

S

T

U

  • URL de suivi : voir tracking_url

V