Sommaire
- Introduction
- Le libellé : `label`
- Les frais de port : `fees`
- Initiation aux formules (utilisation des chaînes de caractères avec la version 2.4.5)
- Fonctions spéciales dans les formules (min, max, substr, in_array) (substr et in_array depuis la version 2.4.5)
- Faire une copie d'une propriété d'une autre méthode
- Utilisation des tables de tarifs
- Utilisation des "switch" (tables de correspondance) (depuis la version 2.4.5)
- Utilisation des attributs ou des options des produits (sum, count, min, max) (support des jeux d'attributs depuis la version 2.4.6)
- Utilisation des boucles foreach (support des jeux d'attributs depuis la version 2.4.6)
- Utilisation des catégories dans les boucles foreach ou dans les fonctions spéciales (depuis la version 2.4.2)
- Utilisation des variables personnalisées de Magento (Custom Variables)
- Initiation aux formules (utilisation des chaînes de caractères avec la version 2.4.5)
- Les conditions : `conditions`
- La destination : `destination` (expressions régulières depuis la version 2.4.0)
- L'activation : `enabled`
- Le code : `code`
- La description : `description`
- L'origine : `origin`
- Les groupes client : `customer_groups`
- L'URL de suivi : `tracking_url` (documentation plus complète depuis la version 2.4.0)
- Commentaires
- Changelog
Introduction
Si vous souhaitez poser une question, utilisez le sujet suivant : http://www.magentocommerce.com/boards/viewthread/38223/
La syntaxe de configuration est une syntaxe proche de la syntaxe JSON.
Exemple :
{
label: "National",
destination: "AD,FR,MC",
conditions: "{cart.price_excluding_tax}<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}",
}
Le caractère `#` en début de ligne indique un commentaire.
Un élément de configuration débute par le caractère `{` et se termine par `}`.
Un élément de configuration contient plusieurs propriétés associées à des valeurs.
Les propriétés sont alphanumériques (a-z0-9_), le séparateur propriété/valeur est le caractère `:`, les valeurs sont numériques, booléennes ou des chaînes de caractères délimitées par des guillemets. En fin de ligne, une virgule sert de séparateur entre les différentes propriétés.
Liste des propriétés :
- label: nom (libellé)
- description: description (visible seulement si le template l'affiche)
- code: code de la méthode de livraison (facultatif mais s'il est spécifié il doit être unique)
- enabled: bloc de configuration activé ou non (ex: true ou false)
- fees: frais de port (ex: "15.00" ou "{table {cart.weight} in 0.5:5.30, 1.0:6.50}" ou "100 * {cart.weight}")
- conditions: conditions d'activation (ex: "{cart.weight}>=1.0" ou "{cart.price_excluding_tax}<100.00" ou "({cart.weight}<=1.0) and ({cart.weight}>3.0) and {free_shipping}" ou "{count products where product.attribute.color=='Bleu'}>1 or {count products where product.option.size=='2m'}>2")
- destination: pays (éventuellement régions) autorisés en destination (ex: "FR,DE,US" ou "FR(2A,2B,25000)" ou "FR-(2A,2B)" ou "FR(01,02,39600),CH,DE")
- origin: pays (éventuellement régions) autorisés en origine (ex: "FR,DE,US" ou "FR(2A,2B,25000)" ou "FR-(2A,2B)" ou "FR(01,02,39600),CH,DE")
- customer_groups: groupes de client autorisés (ex: "NOT LOGGED IN,Retailer" ou "0,3")
Le libellé : `label`
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 :
- {destination.country.name}: le pays de destination
- {destination.country.code}: le code du pays de destination
- {destination.region.code}: le code de la région de destination
- {destination.postcode}: le code postal de destination
- {origin.country.name}: le pays d'envoi
- {origin.country.code}: le code du pays d'envoi
- {origin.region.code}: le code de la région d'envoi
- {origin.postcode}: le code postal d'envoi
- {cart.weight}: poids des marchandises
- {cart.weight.unit}: l'unité de poids
- {cart.quantity}: la quantité d'articles
- {cart.price_excluding_tax}: prix HT (équivaut à {cart.price-tax+discount})
- {cart.price_including_tax}: prix TTC (équivaut à {cart.price+tax+discount})
- {cart.price-tax+discount}: prix HT avec remise
- {cart.price-tax-discount}: prix HT sans remise
- {cart.price+tax+discount}: prix TTC avec remise
- {cart.price+tax-discount}: prix TTC sans remise
- {cart.coupon}: coupon de réduction
- {store.code}: code du magasin
- {store.name}: nom du magasin
- {store.address}: adresse du magasin
- {store.phone}: téléphone du magasin
- {date.timestamp}: timestamp UNIX de la date actuelle
- {date.year}: année de la date actuelle
- {date.month}: mois de la date actuelle
- {date.day}: jour de la date actuelle
- {date.hour}: heure de la date actuelle
- {date.minute}: minute de la date actuelle
- {date.second}: seconde de la date actuelle
La ligne ci-dessus affichera par exemple "Colissimo (3.0kg / France)".
Les frais de port : `fees`
La propriété `fees` se spécifie sous la forme d'une formule (voir l'initiation aux formules).
fees: 10.00,
# Table de prix
fees: "{table {cart.weight} in 0.5:5.30, 1.0:6.50}",
# Formule
fees: "0.1 * {cart.price_excluding_tax} + 10.00",
# Combinaison
fees: "0.1 * {cart.price_excluding_tax} + {table {cart.weight} in 0.5:5.30, 1.0:6.50} + 10.00",
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}")
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.
Variables disponibles :
- {cart.weight}: poids des marchandises
- {cart.weight.for-charge}: poids des marchandises dont la livraison n'est pas offerte (par les règles de prix panier de Magento)
- {cart.quantity}: nombre d'articles dans le panier
- {cart.coupon}: coupon de réduction (chaîne de caractère)
- Prix :
- {cart.price_excluding_tax}: prix HT (équivaut à {cart.price-tax+discount})
- {cart.price_including_tax}: prix TTC (équivaut à {cart.price+tax+discount})
- {cart.price-tax+discount} : prix HT après remise
- {cart.price-tax-discount} : prix HT avant remise
- {cart.price+tax+discount} : prix TTC après remise
- {cart.price+tax-discount}: prix TTC avant remise
- 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
- Destination :
- {destination.country.code}: code du pays de destination
- {destination.country.name}: nom du pays de destination
- {destination.region.code}: code de la région de destination
- {destination.postcode}: code postal de destination
- Origine (idem destination) : {origin.country.code}, {origin.country.name}, {origin.region.code}, {origin.postcode}
- {free_shipping}: frais de port offert (par une règle dans Magento) [true/false]
- Autres variables en vrac : {cart.weight.unit}, {customer.group.id}, {customer.group.code}, {store.id}, {store.code}, {store.name}, {store.address}, {store.phone}
Vous avez la possibilité de mettre des espaces et des retours à la ligne dans les formules (pour aérer).
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 {{ }}.
conditions: "'{cart.coupon}'=='test'",
# Auto-échappement (depuis la version 2.4.5), {{cart.coupon}} sera remplacé par 'moncoupon' ou par null en fonction de sa valeur
conditions: "{{cart.coupon}}=='test'",
Utilisation des tables de tarifs
Dans une table, on peut inclure ou exclure une valeur limite avec les caractères '[' et ']' :
fees: "{table {cart.weight} in 1.0]:5.00}",
# Limite supérieure 1.0 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.
fees: "{table {cart.weight} in 0.5:5.30, 1.0:6.50}",
# Les valeurs limites sont comparées à la quantité d'articles
fees: "{table {cart.quantity} in 10:5.30, 20:6.50}",
# Les valeurs limites sont comparées au prix TTC
fees: "{table {cart.price_including_tax} in 15.00:5.30, 30.00:6.50}",
# Les valeurs limites sont comparées au prix HT
fees: "{table {cart.price_excluding_tax} in 15.00:5.30, 30.00:6.50}",
# Les valeurs limites sont comparées à une valeur de référence définie par l'utilisateur
fees: "{table ceil({cart.weight}/10) in 1:5.30, 2:6.50}",
Utilisation des "switch" (tables de correspondances)
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.
fees: "{switch {{cart.coupon}} in 'coupon1':5.30, 'coupon2':6.50, null:10.00, *:7.50}",
# Table de correpondance avec le pays de destination
fees: "{switch {{destination.country.code}} in 'FR':5.30, 'BE':6.50, 'DE':10.00, *:7.50}",
Faire une copie d'une propriété d'une autre méthode
Il est possible de faire une copie d'une propriété dans une autre à l'aide de la syntaxe ci-dessous.
Vous pouvez utiliser cette technique dans les propriétés 'conditions', 'fees', 'enabled', 'label', 'description', 'destination', 'origin', 'customer_groups' et 'tracking_url' mais pas dans la propriété 'code'.
{
code: "colissimo",
label: "Colissimo",
destination: "AD,FR,MC",
conditions: "{cart.price_excluding_tax}<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}",
}
...
# Copie des conditions d'une autre méthode
conditions: "({colissimo.conditions}) and ({cart.weight}>10.0)",
...
# Copie des frais de port d'une autre méthode
fees: "({colissimo.fees}) + 15.00",
...
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.
- 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.
[...]
{
code: "exemple",
label: "Exemple",
destination: "{chronopost.destination}",
fees: "min({cart.weight},{cart.price},{cart.quantity})",
}
# Exemple d'utilisation de la fonction substr *
{
code: "free_shipping",
label: "Port offert",
destination: "FR",
conditions: "substr('{cart.coupon}', 0, 5)=='free_'",
fees: "0",
}
# Exemple d'utilisation de la fonction in_array avec des chaînes de caractères *
{
code: "free_shipping",
label: "Port offert",
destination: "FR",
conditions: "in_array({{cart.coupon}}, array('free1', 'free2'))",
fees: "0",
}
# Exemple d'utilisation de la fonction in_array avec des nombres
{
code: "free_shipping",
label: "Port offert",
destination: "FR",
conditions: "in_array({cart.quantity}, array(10,20,30))",
fees: "0",
}
* Concernant l'échappement des chaînes de caractères, se référer à l'inititation aux formules.
Utilisation des attributs ou des options des produits
Il est possible d'utiliser les attributs ou les options des produits à l'aide de la syntaxe ci-dessous.
Pour utiliser les catégories des produits dans les conditions, voir la rubrique explicative.
Vous pouvez utiliser cette technique dans les propriétés 'conditions' et 'fees'.
conditions: "{count products where product.attribute.color=='Bleu'}>0",
...
# Si tous les produits possèdent l'option 'size' supérieure ou égal à '1'
conditions: "{count products where product.option.size>='1'}=={cart.quantity}",
...
# Le nombre de SKU différents
conditions: "{count distinct product.attribute.sku}",
...
# La somme de toutes les options 'size' est supérieure à 30
conditions: "{sum product.option.size}>30",
...
# Le prix HT sans remise minimum des produits dans le panier est supérieur à 10
conditions: "{min product.attribute.price-tax-discount}>10",
...
# La valeur maximum de l'option 'size' des produits dans le panier est inférieure à 50
conditions: "{max product.option.size}<50",
...
# Le nombre de produits en stock
conditions: "{count products where product.stock.is_in_stock==true}",
...
Liste des préfixes possibles :
- count : nombre (toujours suivi de 'products')
- 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é)
Liste des propriétés possibles :
- product.quantity : quantité de l'article dans le panier
- product.category : nom de la première catégorie du produit
- product.category.id : id de la première catégorie du produit
- product.attribute_set : nom du jeu d'attributs
- product.attribute_set.id : id du jeu d'attributs
- 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 : le prix HT avec remise
- price-tax-discount : le prix HT sans remise
- price+tax+discount : le prix TTC avec remise
- price+tax-discount : le prix TTC sans remise
- product.option.* : option
- product.stock.is_in_stock : disponibilité du produit
- product.stock.quantity : stock du produit
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.
conditions: "{count products where product.attribute.colissimo_allowed==1}",
# ou
conditions: "{count products where product.attribute.colissimo_allowed==true}",
Si la propriété est de type Liste de sélection et que vous souhaitez faire une comparaison avec l'id plutôt qu'avec la valeur, vous devez utiliser la syntaxe suivante :
conditions: "{count products where product.attribute.color.id==1}",
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.
Pour utiliser les catégories des produits comme itération ou à l'intérieur des boucles foreach, voir la rubrique explicative.
A l'intérieur d'une boucle foreach, il est possible d'utiliser de nouvelles variables :
- {selection.weight}: poids de la sélection
- {selection.quantity}: 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 d'autres variables :
- {product.weight}: poids de l'article sélectionné
- {product.quantity}: quantité de l'article sélectionné
- {product.category}: nom de la première catégorie du produit
- {product.category.id}: id de la première catégorie du produit
- {product.attribute_set}: nom du jeu d'attributs
- {product.attribute_set.id}: id du jeu d'attributs
- {product.attribute.*}: attribut de l'article sélectionné
Quelques pseudos-attributs sont également disponibles pour faciliter certains calculs :- price-tax+discount : le prix HT avec remise
- price-tax-discount : le prix HT sans remise
- price+tax+discount : le prix TTC avec remise
- price+tax-discount : le prix TTC sans remise
- {product.option.*}: option de l'article sélectionné
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}",
# Calcul individuel des frais de port
fees: "{foreach product.attribute.sku}{product.attribute.shipping}*{product.quantity}{/foreach}",
Utilisation des catégories dans les boucles foreach ou dans les fonctions spéciales
Depuis la version 2.4.2, il est possible d'utiliser les catégories des produits dans les formules.
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é.
Voici quelques exemples d'utilisation :
fees: "{foreach product.categories}{selection.weight}{/foreach}",
# Utilisation de la catégorie à l'intérieur d'une boucle foreach
fees: "{foreach product.attribute.sku}({product.category}=='Test' ? 2.00 : 1.00)*{product.quantity}{/foreach}",
# Utilisation de l'id de la catégorie à l'intérieur d'une boucle foreach
fees: "{foreach product.attribute.sku}({product.category.id}==12 ? 2.00 : 1.00)*{product.quantity}{/foreach}",
# Somme des attributs weight des produits de la catégorie 'Test',
# La fonction in_array() est utilisée car product.categories retourne un tableau
fees: "{sum product.attribute.weight where in_array('Test', product.categories)}",
# Somme des attributs weight des produits de la catégorie dont l'id est 12,
# La fonction in_array() est utilisée car product.categories.id retourne un tableau
fees: "{sum product.attribute.weight where in_array(12, product.categories.id)}",
# Somme des attributs weight des produits dont la première catégorie est 'Test'
# (préférez la solution ci-dessus si vos produits sont dans plusieurs catégories)
fees: "{sum product.attribute.weight where product.category=='Test'}",
# Somme des attributs weight des produits dont l'id de la première catégorie est 12
# (préférez la solution ci-dessus si vos produits sont dans plusieurs catégories)
fees: "{sum product.attribute.weight where product.category.id==12}",
Utilisation des variables personnalisées de Magento (Custom Variables)
Depuis la version 1.4.0.1 de Magento, il est possible de définir des variables personnalisées.
La version 2.2.7 d'Owebia Shipping vous permet d'utiliser ces variables personnalisées grâce à la syntaxe suivante :
fees: "{customvar.my_var}*5.00",
...
# Idem en utilisant la syntaxe standard de Magento
fees: "{{customVar code=my_var}}*5.00",
...
Les conditions : `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).
# De 0 à 70 TTC
conditions: "{cart.price_including_tax}<=70",
# De 0 à 70 HT
conditions: "{cart.price_excluding_tax}<=70",
# De 20 exclu à 70 inclu
conditions: "({cart.price_excluding_tax} > 20) and ({cart.price_excluding_tax} <= 70)",
# De 10 inclu à 50 exclu
conditions: "({cart.price_excluding_tax} >= 10) and ({cart.price_excluding_tax} < 50)",
# Tranches de poids
# De 0.5 exclu à 3 inclu
conditions: "({cart.weight} > 0.5) and ({cart.weight} <= 3.0)",
# De 1 inclu à 5 exclu
conditions: "({cart.weight} >= 1.0) and ({cart.weight} < 5.0)",
# Free shipping
# Only when free shipping
conditions: "{free_shipping}",
# Only when no free shipping
conditions: "!{free_shipping}",
# Attribut ou option des produits
# Si au moins un produit possède l'attribut 'color' égal à 'Bleu'
conditions: "{count products where product.attribute.color=='Bleu'}>1",
# Si tous les produits possèdent l'option 'size' supérieure ou égal à '1'
conditions: "{count products where product.option.size>='1'}=={cart.quantity}",
La destination : `destination`
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 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}\)$/)").
destination: "FR,DE,CH,ES,IT",
# France sauf la Corse
destination: "FR-(2A,2B)",
# Corse
destination: "FR(2A,2B)",
# Le monde entier sauf l'Allemagne et la Corse
destination: "* - ( DE, FR(2A,2B) )",
# Tous les codes postaux commençant par 25 en utilisant le caractère jocker
destination: "FR(25*)",
# Tous les codes postaux commençant par 25 en utilisant une expression régulière
destination: "FR(/^25[0-9]{3}$/)",
Astuce
Dans l'éditeur, vous pouvez utiliser les code pays mais aussi les noms des pays ainsi que des raccourcis pour insérer des groupes de pays.
- UE ou Union Européenne : ajoute les pays de l'Union Européenne.
- DOM : ajoute les Départements d'Outre-Mer Français.
- COM : ajoute les Collectivités d'Outre-Mer Françaises.
- Outre-Mer : ajoute tout l'Outre-Mer Français.
- Corse : ajoute la corse ("FR(2A,2B)").
Vous pouvez interragir avec les pays se trouvant dans l'Aperçu. Si vous cliquez sur l'un d'eux, un menu vous offre la possibilité d'effectuer certaines actions.
L'activation : `enabled`
Permet d'activer ou de désactiver la méthode de livraison.
La valeur doit être booléenne.
Le code : `code`
C'est l'identifiant de la méthode de livraison.
Il doit être unique. S'il n'est pas unique, il sera modifié.
La description : `description`
Il s'agit de la description de la méthode de livraison.
Le fonctionnement est identique à la propriété label.
Voir également la propriété destination.
L'origine : `origin`
Idem que la destination mais pour filtrer l'origine de livraison.
La syntaxe est identique au filtrage de la destination.
Les groupes client : `customer_groups`
On peut utiliser le nom ou l'ID des groupes client.
customer_groups: "NOT LOGGED IN,General",
# Groupes NOT LOGGED IN et General par leur ID
customer_groups: "0,1",
# Groupe Retailer
customer_groups: "Retailer",
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 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}.
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.
Commentaires
Vous pouvez ajouter un commentaire sur la méthode de livraison. Celui-ci ne sera affiché nul part mais vous pouvez y mettre des annotations.
Changelog
[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: http://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 http://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