Summary
The english version of the documentation is not up to date. If you can read french, please use the french version.
I have not enough time to translate the documentation in english. If somebody wants to translate the documentation in english or in an other language, please contact owebia.
- Introduction
- The label : `label`
- Shipping fees : `fees`
- Introduction to formulas
- Use of rate tables
- Make a copy of a property of another method
- Special functions in formulas
- Usage of product's attributes or options (stock data added in version 2.3.2)
- Usage of foreach loops (added in version 2.1.7)
- Usage of Magento's custom variables (added in version 2.2.7)
- The conditions : `conditions`
- The destination : `destination`
- The code : `code`
- The description : `description`
- The origin : `origin`
- Customer groups : `customer_groups`
- Tracking URL : `tracking_url`
- Comments
- Changelog
Introduction
If you have a question, use the following topic : http://www.magentocommerce.com/boards/viewthread/38223/
The configuration syntax is similar to JSON syntax.
Example :
{
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}",
}
The character `#` at the beginning of a line indicates a comment.
A configuration element begins with the character `{` and ends with `}`.
A configuration element contains several properties associated with values.
The properties are alphanumeric (a-z0-9_), the separator property/value is the character `:`, values are numeric, boolean or string delimited by quotation marks. At the end of a line, a comma is the separator between the various properties.
List of properties:
- label: name (label)
- description: description (only visible if template show it)
- code: shipping method's code (optional but if specified it must be unique)
- enabled: configuration bloc activated or not (ex: true or false)
- fees: shipping fees (ex: "15.00" or "{table {cart.weight} in 0.5:5.30, 1.0:6.50}" or "100 * {cart.weight}")
- conditions: activation conditions (ex: "{cart.weight}>=1.0" or "{cart.price_excluding_tax}<100.00" or "({cart.weight}<=1.0) and ({cart.weight}>3.0) and {free_shipping}" or "{count products where product.attribute.color=='Bleu'}>1 or {count products where product.option.size=='2m'}>2")
- destination: countries (possibly regions) authorized in destination (ex: "FR,DE,US" or "FR(2A,2B,25000)" or "FR-(2A,2B)" or "FR(01,02,39600),CH,DE")
- origin: countries (possibly regions) authorized in origin (ex: "FR,DE,US" or "FR(2A,2B,25000)" or "FR-(2A,2B)" or "FR(01,02,39600),CH,DE")
- customer_groups: customer groups authorized (ex: "NOT LOGGED IN,Retailer" or "0,3")
The label : `label`
This will be the name given to the shipping method.
Elements such as the weight of goods can be inserted in the label.
To do this, use the following variables:
- {destination.country.name}: destination country name
- {destination.country.code}: destination country code
- {destination.region.code}: destination region code
- {destination.postcode}: destination postcode
- {origin.country.name}: origin country name
- {origin.country.code}: origin country code
- {origin.region.code}: origin region code
- {origin.postcode}: origin postcode
- {cart.weight}: weight of goods
- {cart.weight.unit}: weight unit
- {cart.quantity}: products quantity
- {cart.price_including_tax}: price including tax
- {cart.price_excluding_tax}: price excluding tax
- {store.code}: store code
- {store.name}: store name
- {store.address}: store address
- {store.phone}: store phone
- {date.timestamp}: UNIX timestamp of current date
- {date.year}: year of current date
- {date.month}: month of current date
- {date.day}: day of current date
- {date.hour}: hour of current date
- {date.minute}: minute of current date
- {date.second}: second of current date
This line will display for example "Colissimo (3.0kg / France)".
Shipping fees : `fees`
The property `fees` is specified as a formula (see introduction to formulas).
fees: 10.00,
# Rates table
fees: "{table {cart.weight} in 0.5:5.30, 1.0:6.50}",
# Formula
fees: "0.1 * {cart.price_excluding_tax} + 10.00",
# Combination
fees: "0.1 * {cart.price_excluding_tax} + {table {cart.weight} in 0.5:5.30, 1.0:6.50} + 10.00",
Introduction to formulas
Properties `fees` and `conditions` are specified as formulas.
Mathematical signs available:
- operators: *, /, + et -
- modulo: %
- brackets: ( et )
- boolean operators &&, and, ||, or, ==, <, >, <=, >=
- binary operators & et |
- operators group C ? X : Y (ex: "{cart.price_exluding_tax}>100 ? 15*{cart.weight} : 20*{cart.weight}")
Functions available:
- rounds: round(x), floor(x), ceil(x)
- absolute value: abs(x)
- maximum: max(x,y)
- minimum: min(x,y)
- random integer: rand(min,max)
- power: pow(x,puissance)
- PI number: pi()
- square root: sqrt(x)
- logarithm: log(x) for the natural logarithm or log(x,base)
- exponential: exp(x)
Ability to use advanced features like: casting to integer (int) casting to floating number (float), comparison with null or boolean values true and false.
Variables available:
- {cart.weight}: full package weight
- {cart.price_including_tax}: price including tax
- {cart.price_excluding_tax}: price excluding tax
- {cart.quantity}: items count in cart
- {date.timestamp}: UNIX timestamp of current date
- {date.year}: year of current date
- {date.month}: month of current date
- {date.day}: day of current date
- {date.hour}: hour of current date
- {date.minute}: minute of current date
- {date.second}: second of current date
- {free_shipping}: free shipping (offered by a Magento rule) [true/false]
You can put spaces and line returns in formulas (to air).
You can also use advanced features such as rates tables, copy of a property of another method, special functions, usage of product's attributes and options or usage of custom variables.
Usage of rates tables
In a table, you can include or exclude a limit value with characters '[' and ']' :
fees: "{table {cart.weight} in 1.0]:5.00}",
# Upper limit 1.0 excluded
fees: "{table {cart.weight} in 1.0[:5.00}",
In a table, you must specify the reference value. For this, we can use one of the available variables.
You can also use a formula to define another reference variable.
fees: "{table {cart.weight} in 0.5:5.30, 1.0:6.50}",
# Limit values are compared to the items count
fees: "{table {cart.quantity} in 10:5.30, 20:6.50}",
# Limit values are compared to the prixe including tax
fees: "{table {cart.price_including_tax} in 15.00:5.30, 30.00:6.50}",
# Limit values are compared to the prixe excluding tax
fees: "{table {cart.price_excluding_tax} in 15.00:5.30, 30.00:6.50}",
# Limit values are compared to an user defined reference value
fees: "{table ceil({cart.weight}/10) in 1:5.30, 2:6.50}",
Make a copy of a property of another method
It is possible to make a copy of a property in another using the syntax below.
You can use this technique in the properties 'conditions', 'fees', 'enabled', 'label', 'description', 'destination', 'origin', 'customer_groups' and 'tracking_url' but not in property '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}",
}
...
# Copy conditions of another method
conditions: "({colissimo.conditions}) and ({cart.weight}>10.0)",
...
# Copy shipping fees of another method
fees: "({colissimo.fees}) + 15.00",
...
Special functions in formulas
You can use special functions in formulas.
List of special functions :
- min(x,y) : calculate the minimum of several values (possibly more than two values). If one value is null, it is ignored.
- max(x,y) : calculate the maximum of several values (possibly more than two values). If one value is null, it is ignored.
# and supplements for faster shipping methods
{
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: "Free shipping - 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: "Free shipping - 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: "Lettre Recommandée supplement",
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: "Free shipping - 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: "Colissimo supplement",
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: "Free shipping - 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: "Chronopost supplement",
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})",
}
Usage of product's attributes or options
It is possible to use product's attributes or options with the syntax below.
You can use this technique in the properties 'conditions' and 'fees'.
conditions: "{count products where product.attribute.color=='Bleu'}>0",
...
# If all products have the option 'size' greater or equal to '1'
conditions: "{count products where product.option.size>='1'}=={cart.quantity}",
...
# Different SKU count
conditions: "{count distinct product.attribute.sku}",
...
# The sum of all options 'size' is greater than '1'
conditions: "{sum product.option.size}>30",
...
# Count of products in stock
conditions: "{count products where product.stock.is_in_stock==true}",
...
Available prefixes list:
- count: count (always followed by 'products')
- count distinct: distinct count (always followed by a property)
- sum: sum (always followed by a property)
Available properties list:
- product.attribute.* : attribute
Interesting attributes:- sku : the sku
- name : the name
- weight : the weight
- price : the price (as filled in product's card)
- special_price : the special price (as filled in product's card)
- product.option.* : option
- product.stock.is_in_stock : product availability
- product.stock.quantity : stock quantity of the product
It's possible to specify conditions that must be met by products to be taken into account. To do this, simply add where followed by a formula.
If the property type is Yes/No, you should use true/false or 1/0 without quotes.
conditions: "{count products where product.attribute.colissimo_allowed==1}",
# or
conditions: "{count products where product.attribute.colissimo_allowed==true}",
If the property type is Drop-down and you want to make a comparison with the id rather than with the value, you must use the following syntax:
conditions: "{count products where product.attribute.color.id==1}",
Usage of foreach loops
Foreach loops can perform calculations on groups of products rather than consider all the products in the basket.
The overall result of a foreach loop is the sum of the results of each pass through the loop.
Inside a foreach loop, it is possible to use new variables:
- {selection.weight}: selection weight
- {selection.quantity}: items count in the selection
When the selection is done on the sku, each selection is composed of a single article. We can use other variables:
- {product.weight}: weight of selected product
- {product.quantity}: quantity of selected product
- {product.attribute.*}: attribute of the selected product
- {product.option.*}: option of the selected product
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}",
# Individual calculation of shipping fees
fees: "{foreach product.attribute.sku}{product.attribute.shipping}*{product.quantity}{/foreach}",
Usage of Magento's Custom Variables
Since version 1.4.0.1 of Magento, it is possible to define custom variables.
Version 2.2.7 of Owebia Shipping allows you to use these custom variables using the following syntax:
fees: "{customvar.my_var}*5.00",
...
# The same using the standard syntax of Magento
fees: "{{customVar code=my_var}}*5.00",
...
The conditions : `conditions`
The property `conditions` is specified as a formula (see introduction to formulas) that must return a boolean value (true or false).
# From 0 to 70 including tax
conditions: "{cart.price_including_tax}<=70",
# From 0 to 70 excluding tax
conditions: "{cart.price_excluding_tax}<=70",
# From 20 excluded to 70 included
conditions: "({cart.price_excluding_tax} > 20) and ({cart.price_excluding_tax} <= 70)",
# From 10 included to 50 excluded
conditions: "({cart.price_excluding_tax} >= 10) and ({cart.price_excluding_tax} < 50)",
# Weights range
# From 0.5 excluded to 3 included
conditions: "({cart.weight} > 0.5) and ({cart.weight} <= 3.0)",
# From 1 included to 5 excluded
conditions: "({cart.weight} >= 1.0) and ({cart.weight} < 5.0)",
# Frais de port offerts
# Uniquement si frais de port offerts
conditions: "{free_shipping}",
# Uniquement si frais de port non offerts
conditions: "!{free_shipping}",
# Product's attribute or option
# If at least one product has the attribute 'color' equal to 'Blue'
conditions: "{count products where product.attribute.color=='Bleu'}>1",
# If all products have the option 'size' greater or equal to '1'
conditions: "{count products where product.option.size>='1'}=={cart.quantity}",
The destination : `destination`
The country codes used are those of Magento (it seem that they are the same as the codes ISO 3166-1 alpha-2).
It is possible to specify region codes or postcodes that you want to filter or exclude.
destination: "FR,DE,CH,ES,IT",
# France without Corsica
destination: "FR-(2A,2B)",
# Corsica
destination: "FR(2A,2B)",
# World without Germany and Corsica
destination: "* - ( DE, FR(2A,2B) )",
Tip
In the editor, you can use countries codes but countries names and shortcuts to insert a group of countries too.
- UE or Union Européenne : adds the European Union countries.
- DOM : adds French Overseas Departments.
- COM : adds French Overseas Communities.
- Outre-Mer : adds the whole French Overseas.
- Corse : adds Corsica ("FR(2A,2B)").
You can interract with countries in the Preview. If you click on one of them, a menu gives you the possibility to perform some operations.
The code : `code`
This is the identifier of the shipping method.
It must be unique. If not unique, it will be changed.
The description : `description`
This will be the description given to the shipping method.
The usage is the same as the property label.
See the property destination.
The origin : `origin`
Same than destination but to filter shipping origin.
The syntax is the same as for destination filtering.
Customer groups : `customer_groups`
You can use the name or the ID of customer groups.
customer_groups: "NOT LOGGED IN,General",
# Groups NOT LOGGED IN and General by ID
customer_groups: "0,1",
# Group Retailer
customer_groups: "Retailer",
Comments
You can add a comment on the shipping method. It will not be shown anywhere but you can put annotations.
Changelog (in french)
[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