Sommaire

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 :

# National
{
   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 :

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 :

label: "Colissimo ({cart.weight} / {destination.country.name})",

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

# Frais fixes
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 :

Fonctions disponibles :

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 :

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.

Utilisation des tables de tarifs

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

# Limite supérieure 1.0 incluse
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.

# Les valeurs limites sont comparées au poids du panier
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}",

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

# Colissimo
{
   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 :

# Exemple d'utilisation de la fonction min pour proposé des frais de port gratuits
# et un supplément pour les méthodes de transport plus rapides

{
   code: "courrier_suivi",
   label: "Courrier suivi",
   destination: "FR",
   conditions: "{cart.price_including_tax}<80",
   fees: "{table {cart.weight} in 0.050:2.21, 0.100:2.77, 0.500:4.60}",
}

{
   code: "courrier_suivi_offert",
   label: "Frais de port offerts - Courrier suivi",
   destination: "{courrier_suivi.destination}",
   conditions: "{cart.price_including_tax}>=80 and {cart.weight}<=0.500",
   fees: 0.00,
}

{
   code: "lettre_recommandee",
   label: "Lettre Recommandée",
   destination: "FR",
   conditions: "{cart.price_including_tax}<80",
   fees: "{TABLE {cart.weight} IN 0.050:4.3,0.100:4.75,0.250:5.62,0.500:6.42,1.000:7.32,2.000:8.56,10.000:10.30}",
}

{
   code: "lettre_recommandee_offert",
   label: "Frais de port offerts - Lettre Recommandée",
   destination: "{lettre_recommandee.destination}",
   conditions: "{cart.price_including_tax}>=80 and {cart.weight}>0.500 and {cart.weight}<=10.000",
   fees: 0.00,
}

{
   code: "supplement_lettre_recommandee",
   label: "Supplément Lettre Recommandée",
   destination: "{lettre_recommandee.destination}",
   conditions: "{courrier_suivi_offert.conditions}",
   fees: "{lettre_recommandee.fees} - {courrier_suivi.fees}",
}

{
   code: "colissimo",
   label: "Colissimo",
   destination: "FR",
   conditions: "{cart.price_including_tax}<80",
   fees: "{table {cart.weight} in 0.3:8.7,0.8:9.9,1.8:10.85,2.8:11.8,4.8:13.7,6.8:15.6,9.8:18.45,14.8:20.45,29.8:26.45}",
}

{
   code: "colissimo_offert",
   label: "Frais de port offerts - Colissimo",
   destination: "{colissimo.destination}",
   conditions: "{cart.price_including_tax}>=80 and {cart.weight}>10 and {cart.weight}<=29.8",
   fees: 0.00,
}

{
   code: "supplement_colissimo",
   label: "Supplément Colissimo",
   destination: "{colissimo.destination}",
   conditions: "{courrier_suivi_offert.conditions} or {lettre_recommandee_offert.conditions}",
   fees: "{colissimo.fees} - min({courrier_suivi.fees},{lettre_recommandee.fees})",
}

{
   code: "chronopost",
   label: "Chronopost",
   destination: "FR",
   conditions: "{cart.price_including_tax}<80",
   fees: "{TABLE {cart.weight} IN 1:13.29, 2:13.99, 3:18.4, 4:19.24, 5:20.08, 6:20.92, 7:21.76, 8:22.6, 9:23.44, 10:24.28, 15:28.48, 20:32.68, 25:36.88, 30:41.08}",
}

{
   code: "chronopost_offert",
   label: "Frais de port offerts - Chronopost",
   destination: "FR",
   conditions: "{cart.price_including_tax}<80 and {cart.weight}>29.8 and {cart.weight}<=30",
   fees: 0.00,
}

{
   code: "supplement_chronopost",
   label: "Supplément Chronopost",
   destination: "{chronopost.destination}",
   conditions: "{courrier_suivi_offert.conditions} or {lettre_recommandee_offert.conditions} or {colissimo_offert.conditions}",
   fees: "{chronopost.fees} - min({courrier_suivi.fees},{lettre_recommandee.fees},{colissimo.fees})",
}

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.

Vous pouvez utiliser cette technique dans les propriétés 'conditions' et 'fees'.

# Si au moins un produit possède l'attribut 'color' égal à 'Bleu'
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 nombre de produits en stock
conditions: "{count products where product.stock.is_in_stock==true}",
...

Liste des préfixes possibles :

Liste des propriétés possibles :

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.

# Propriété de type Oui/Non
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 :

# Condition validée si l'attribut 'color' est égale à la valeur dont l'id est 1
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.

A l'intérieur d'une boucle foreach, il est possible d'utiliser de nouvelles variables :

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 :

# 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}",

# Calcul individuel des frais de port
fees: "{foreach product.attribute.sku}{product.attribute.shipping}*{product.quantity}{/foreach}",

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 :

# Utilisation de la variable personnalisée my_var
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).

# Tranches de prix

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

# France, Belgique
destination: "FR,BE",

# 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) )",

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.

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

Voir également la propriété label.

Sommaire

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.

Sommaire

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.

# Groupes NOT LOGGED IN et General
customer_groups: "NOT LOGGED IN,General",

# Groupes NOT LOGGED IN et General par leur ID
customer_groups: "0,1",

# Groupe Retailer
customer_groups: "Retailer",

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.