ColiPoste_La_Poste_So_Colissimo - Version 2.2.0

Version Notes

Compatible 1.7

Download this release

Release Info

Developer Berlioz
Extension ColiPoste_La_Poste_So_Colissimo
Version 2.2.0
Comparing to
See all releases


Code changes from version 2.1.0 to 2.2.0

Files changed (31) hide show
  1. app/code/community/LaPoste/SoColissimoSimplicite/Block/Form.php +46 -31
  2. app/code/community/LaPoste/SoColissimoSimplicite/Block/Onepage.php +30 -22
  3. app/code/community/LaPoste/SoColissimoSimplicite/Block/Onepage/Shipping/Method/Available.php +35 -56
  4. app/code/community/LaPoste/SoColissimoSimplicite/Block/Onepage/Shipping/Method/Available/Item.php +19 -12
  5. app/code/community/LaPoste/SoColissimoSimplicite/Helper/Data.php +342 -71
  6. app/code/community/LaPoste/SoColissimoSimplicite/Model/Carrier/ShippingMethod.php +135 -74
  7. app/code/community/LaPoste/SoColissimoSimplicite/Model/Mysql4/Transaction.php +13 -12
  8. app/code/community/LaPoste/SoColissimoSimplicite/Model/Mysql4/Transaction/Collection.php +14 -14
  9. app/code/community/LaPoste/SoColissimoSimplicite/Model/Observer.php +99 -93
  10. app/code/community/LaPoste/SoColissimoSimplicite/Model/System/Config/Source/Shipping/Amountbasetype.php +17 -14
  11. app/code/community/LaPoste/SoColissimoSimplicite/Model/Transaction.php +30 -85
  12. app/code/community/LaPoste/SoColissimoSimplicite/Test/Model/Carrier/ShippingMethodTest.php +28 -55
  13. app/code/community/LaPoste/SoColissimoSimplicite/controllers/FormController.php +72 -44
  14. app/code/community/LaPoste/SoColissimoSimplicite/controllers/OnepageController.php +0 -27
  15. app/code/community/LaPoste/SoColissimoSimplicite/etc/config.xml +68 -27
  16. app/code/community/LaPoste/SoColissimoSimplicite/etc/system.xml +147 -41
  17. app/code/community/LaPoste/SoColissimoSimplicite/sql/socolissimosimplicite_setup/mysql4-install-1.0.0.php +8 -10
  18. app/code/community/LaPoste/SoColissimoSimplicite/sql/socolissimosimplicite_setup/mysql4-uninstall-0.1.0.php +8 -2
  19. app/code/community/LaPoste/SoColissimoSimplicite/sql/socolissimosimplicite_setup/mysql4-upgrade-1.0.6-1.0.7.php +7 -8
  20. app/code/community/LaPoste/SoColissimoSimplicite/sql/socolissimosimplicite_setup/mysql4-upgrade-1.1.1-1.1.2.php +0 -23
  21. app/code/community/LaPoste/SoColissimoSimplicite/sql/socolissimosimplicite_setup/mysql4-upgrade-1.1.1-2.0.0.php +6 -8
  22. app/design/frontend/default/default/layout/socolissimosimplicite.xml +16 -26
  23. app/design/frontend/default/default/template/socolissimosimplicite/empty.phtml +5 -5
  24. app/design/frontend/default/default/template/socolissimosimplicite/form.phtml +25 -106
  25. app/design/frontend/default/default/template/socolissimosimplicite/form/failure.phtml +5 -5
  26. app/design/frontend/default/default/template/socolissimosimplicite/onepage/shipping_method.phtml +58 -45
  27. app/design/frontend/default/default/template/socolissimosimplicite/onepage/shipping_method/available.phtml +52 -149
  28. app/design/frontend/default/default/template/socolissimosimplicite/onepage/shipping_method/available/default.phtml +5 -5
  29. app/design/frontend/default/default/template/socolissimosimplicite/onepage/shipping_method/available/socolissimosimplicite.phtml +10 -6
  30. app/etc/modules/LaPoste_SoColissimoSimplicite.xml +5 -5
  31. package.xml +5 -5
app/code/community/LaPoste/SoColissimoSimplicite/Block/Form.php CHANGED
@@ -1,58 +1,70 @@
1
  <?php
2
  /**
3
- * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- */
11
-
12
- /**
13
- * Formulaire de soumission pour l'accès à l'interface SO Colissimo en front office.
14
  */
15
  class LaPoste_SoColissimoSimplicite_Block_Form extends Mage_Core_Block_Template
16
  {
17
  protected $_carrierInstance;
18
-
 
 
 
 
 
 
 
 
 
 
19
  /**
20
- * Retourne la ligne n° $line des informations (rue, étage, immeuble, etc.) de l'adresse
21
- * de livraison de la commande en cours.
22
- * @param int $line
 
 
 
 
 
 
 
 
 
23
  * @return string
24
  */
25
- public function getShippingAddressStreet($line = 1)
26
  {
27
- $arrayStreet = $this->getShippingAddress()->getStreet();
28
- $streetLine = '';
29
- if (0 < $line && $line <= count($arrayStreet)) {
30
- $streetLine = $arrayStreet[$line-1];
31
- }
32
- return $streetLine;
33
  }
34
-
35
  /**
36
- * Retourne le message à afficher lors de la redirection vers le front de
37
- * SO Colissimo Simplicité.
38
  * @return string
39
  */
40
  public function getRedirectMessage()
41
  {
42
  return $this->helper('socolissimosimplicite')->getRedirectMessage();
43
  }
44
-
45
  /**
46
- * Retourne l'identifiant FO d'accès à la plateforme SO Colissimo (front-office)
 
47
  * @return string
48
  */
49
  public function getAccountID()
50
  {
51
  return $this->helper('socolissimosimplicite')->getAccountId();
52
  }
53
-
54
  /**
55
- * Retourne la clé de cryptage pour l'accès à la plateforme SO Colissimo (front-office)
 
56
  * @return string
57
  */
58
  public function getEncryptionKey()
@@ -61,18 +73,21 @@ class LaPoste_SoColissimoSimplicite_Block_Form extends Mage_Core_Block_Template
61
  }
62
 
63
  /**
64
- * Retourne l'URL d'accès à la plateforme SO Colissimo (front-office)
 
65
  * @return string
66
  */
67
  public function getUrlFoWithReturnUrlKo()
68
  {
69
  $urlFo = $this->helper('socolissimosimplicite')->getUrlFo();
70
  $returnUrlKo = $this->helper('socolissimosimplicite')->getFailureUrl();
71
- return $urlFo.'?trReturnUrlKo='.$returnUrlKo;
 
72
  }
73
 
74
  /**
75
  * Retourne l'url complète appelée en cas de succès
 
76
  * @return string
77
  */
78
  public function getSuccessUrl()
1
  <?php
2
  /**
3
+ * Formulaire de soumission pour l'accès à l'interface So Colissimo en front office
4
+ *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
 
 
 
 
10
  */
11
  class LaPoste_SoColissimoSimplicite_Block_Form extends Mage_Core_Block_Template
12
  {
13
  protected $_carrierInstance;
14
+
15
+ /**
16
+ * Retourne l'adresse de livraison
17
+ *
18
+ * @return Mage_Sales_Model_Quote_Address
19
+ */
20
+ public function getShippingAddress()
21
+ {
22
+ return $this->getData('shipping_address');
23
+ }
24
+
25
  /**
26
+ * Retourne la transaction
27
+ *
28
+ * @return LaPoste_SoColissimoSimplicite_Model_Transaction
29
+ */
30
+ public function getTransaction()
31
+ {
32
+ return $this->getData('transaction');
33
+ }
34
+
35
+ /**
36
+ * Retourne l'url de redirection quand le service socolissimo est indisponible
37
+ *
38
  * @return string
39
  */
40
+ public function getServiceUnavailableRedirect()
41
  {
42
+ return $this->getData('service_unavailable_redirect');
 
 
 
 
 
43
  }
44
+
45
  /**
46
+ * Retourne le message à afficher lors de la redirection vers le front de So Colissimo Simplicité
47
+ *
48
  * @return string
49
  */
50
  public function getRedirectMessage()
51
  {
52
  return $this->helper('socolissimosimplicite')->getRedirectMessage();
53
  }
54
+
55
  /**
56
+ * Retourne l'identifiant FO d'accès à la plateforme So Colissimo (front-office)
57
+ *
58
  * @return string
59
  */
60
  public function getAccountID()
61
  {
62
  return $this->helper('socolissimosimplicite')->getAccountId();
63
  }
64
+
65
  /**
66
+ * Retourne la clé de cryptage pour l'accès à la plateforme So Colissimo (front-office)
67
+ *
68
  * @return string
69
  */
70
  public function getEncryptionKey()
73
  }
74
 
75
  /**
76
+ * Retourne l'URL d'accès à la plateforme So Colissimo (front-office)
77
+ *
78
  * @return string
79
  */
80
  public function getUrlFoWithReturnUrlKo()
81
  {
82
  $urlFo = $this->helper('socolissimosimplicite')->getUrlFo();
83
  $returnUrlKo = $this->helper('socolissimosimplicite')->getFailureUrl();
84
+
85
+ return $urlFo.'?trReturnUrlKo=' . $returnUrlKo;
86
  }
87
 
88
  /**
89
  * Retourne l'url complète appelée en cas de succès
90
+ *
91
  * @return string
92
  */
93
  public function getSuccessUrl()
app/code/community/LaPoste/SoColissimoSimplicite/Block/Onepage.php CHANGED
@@ -1,57 +1,64 @@
1
  <?php
2
  /**
3
- * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  class LaPoste_SoColissimoSimplicite_Block_Onepage extends Mage_Checkout_Block_Onepage
12
  {
 
 
 
 
 
13
  protected $_stepToActivate;
14
 
15
  /**
16
- * Met à jour les étapes précédentes lorsqu'une étape autre que la 1ère
17
- * étape est à afficher
 
18
  */
19
  protected function _beforeToHtml()
20
  {
21
  parent::_beforeToHtml();
22
-
23
- //on cherche en session si une étape est à afficher directement
24
  $checkout = Mage::getSingleton('checkout/session');
25
  $this->_stepToActivate = false;
26
-
27
  if ($checkout->getData('socolissimosimplicite_checkout_onepage_nextstep')) {
28
  $this->_stepToActivate = $checkout->getData('socolissimosimplicite_checkout_onepage_nextstep');
29
- //supprime la variable de session pour qu'un refresh réinitialise le onepage
30
  $checkout->unsetData('socolissimosimplicite_checkout_onepage_nextstep');
31
  }
 
32
  $steps = $this->getSteps();
33
 
34
- //on force l'activation des étapes précédant l'étape que l'on souhaite
35
- //afficher + de l'étape à afficher
36
  if ($this->_stepToActivate && array_key_exists($this->_stepToActivate, $steps)) {
37
-
38
  foreach ($steps as $key => $data) {
39
- //permet d'afficher le contenu de l'étape en cours et de revenir
40
- //sur les étapes précédentes
41
  $this->getCheckout()->setStepData($key, 'allow', true);
42
-
43
  if ($key == $this->_stepToActivate) {
44
  break;
45
  }
46
- //permet d'afficher la progression
 
47
  $this->getCheckout()->setStepData($key, 'complete', true);
48
  }
49
  }
 
50
  return $this;
51
  }
52
-
53
  /**
54
- * Retourne le code de l'étape à afficher dans le tunnel de commande.
 
55
  * @return string
56
  */
57
  public function getActiveStep()
@@ -63,6 +70,7 @@ class LaPoste_SoColissimoSimplicite_Block_Onepage extends Mage_Checkout_Block_On
63
  } else {
64
  $activeStep = 'login';
65
  }
 
66
  return $activeStep;
67
  }
68
  }
1
  <?php
2
  /**
3
+ * Réécriture du bloc gérant le tunnel de commande
4
+ *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  class LaPoste_SoColissimoSimplicite_Block_Onepage extends Mage_Checkout_Block_Onepage
12
  {
13
+ /**
14
+ * Etape du tunnel de commande à afficher
15
+ *
16
+ * @var string
17
+ */
18
  protected $_stepToActivate;
19
 
20
  /**
21
+ * Met à jour les étapes précédentes lorsqu'une étape autre que la 1ère étape est à afficher
22
+ *
23
+ * @return self
24
  */
25
  protected function _beforeToHtml()
26
  {
27
  parent::_beforeToHtml();
28
+
29
+ // on cherche en session si une étape est à afficher directement
30
  $checkout = Mage::getSingleton('checkout/session');
31
  $this->_stepToActivate = false;
32
+
33
  if ($checkout->getData('socolissimosimplicite_checkout_onepage_nextstep')) {
34
  $this->_stepToActivate = $checkout->getData('socolissimosimplicite_checkout_onepage_nextstep');
35
+ // supprime la variable de session pour qu'un refresh réinitialise le onepage
36
  $checkout->unsetData('socolissimosimplicite_checkout_onepage_nextstep');
37
  }
38
+
39
  $steps = $this->getSteps();
40
 
41
+ // on force l'activation des étapes précédant l'étape que l'on souhaite afficher + de l'étape à afficher
 
42
  if ($this->_stepToActivate && array_key_exists($this->_stepToActivate, $steps)) {
 
43
  foreach ($steps as $key => $data) {
44
+ // permet d'afficher le contenu de l'étape en cours et de revenir sur les étapes précédentes
 
45
  $this->getCheckout()->setStepData($key, 'allow', true);
46
+
47
  if ($key == $this->_stepToActivate) {
48
  break;
49
  }
50
+
51
+ // permet d'afficher la progression
52
  $this->getCheckout()->setStepData($key, 'complete', true);
53
  }
54
  }
55
+
56
  return $this;
57
  }
58
+
59
  /**
60
+ * Retourne le code de l'étape à afficher dans le tunnel de commande
61
+ *
62
  * @return string
63
  */
64
  public function getActiveStep()
70
  } else {
71
  $activeStep = 'login';
72
  }
73
+
74
  return $activeStep;
75
  }
76
  }
app/code/community/LaPoste/SoColissimoSimplicite/Block/Onepage/Shipping/Method/Available.php CHANGED
@@ -1,27 +1,25 @@
1
  <?php
2
- /**
3
- * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- */
11
-
12
  /**
13
  * Modes de livraison disponibles
 
 
 
 
 
 
14
  */
15
- class LaPoste_SoColissimoSimplicite_Block_Onepage_Shipping_Method_Available
16
- extends Mage_Checkout_Block_Onepage_Shipping_Method_Available
17
  {
18
  protected $_itemRenders = array();
19
 
20
- public function __construct()
 
 
 
 
 
21
  {
22
- parent::__construct();
23
-
24
- //Rendu par défaut
25
  $this->addItemRender(
26
  'default',
27
  'socolissimosimplicite/onepage_shipping_method_available',
@@ -30,13 +28,14 @@ class LaPoste_SoColissimoSimplicite_Block_Onepage_Shipping_Method_Available
30
  }
31
 
32
  /**
33
- * Ajoute une correspondance dans la table des rendus des modes de livraison.
34
- * Cela permet de personnaliser l'affichage d'un mode de livraison parmi la
35
- * liste des modes proposés lors du passage d'une commande.
36
- * @param string $type
37
- * @param string $block
38
- * @param string $template
39
- * @return LaPoste_SoColissimoSimplicite_Block_Onepage_Shipping_Method_Available
 
40
  */
41
  public function addItemRender($type, $block, $template)
42
  {
@@ -45,13 +44,15 @@ class LaPoste_SoColissimoSimplicite_Block_Onepage_Shipping_Method_Available
45
  'template' => $template,
46
  'blockInstance' => null
47
  );
 
48
  return $this;
49
  }
50
-
51
  /**
52
- * Retourne le renderer approprié selon le mode de livraison.
53
- * Le renderer par défaut est "default".
54
- * @param string $type exemples : default|socolissimosimplicite
 
55
  * @return array
56
  */
57
  public function getItemRenderer($type)
@@ -59,6 +60,7 @@ class LaPoste_SoColissimoSimplicite_Block_Onepage_Shipping_Method_Available
59
  if (!isset($this->_itemRenders[$type])) {
60
  $type = 'default';
61
  }
 
62
  if (is_null($this->_itemRenders[$type]['blockInstance'])) {
63
  $this->_itemRenders[$type]['blockInstance'] = $this->getLayout()
64
  ->createBlock($this->_itemRenders[$type]['block'])
@@ -68,41 +70,18 @@ class LaPoste_SoColissimoSimplicite_Block_Onepage_Shipping_Method_Available
68
 
69
  return $this->_itemRenders[$type]['blockInstance'];
70
  }
71
-
72
  /**
73
- * Retourne le code html du mode de livraison donné.
74
- * @param Mage_Shipping_Model_Carrier_Abstract $item
 
75
  * @return string
76
  */
77
  public function getItemHtml($item)
78
  {
79
- //le code html retourné dépend du mode de livraison
80
  $renderer = $this->getItemRenderer($item->getMethod())->setRate($item);
81
- return $renderer->toHtml();
82
- }
83
 
84
- /**
85
- * Vérifie si la plateforme socolissimo est disponible
86
- *
87
- * @return boolean
88
- */
89
- public function getServiceIsAvailable()
90
- {
91
- $helper = Mage::helper('socolissimosimplicite');
92
- if ($helper->getServiceIsAvailable() and $helper->getServiceIsAvailableUrl() != '') {
93
- return $helper->checkserviceAvailability();
94
- }
95
- return true;
96
- }
97
-
98
- /**
99
- * Retourne le message d'erreur si la plateforme socolissimo n'est pas disponible
100
- * @return string
101
- */
102
- public function getServiceNotAvailableMessage()
103
- {
104
- $helper = Mage::helper('socolissimosimplicite');
105
- return $helper->getServiceNotAvailableMessage();
106
  }
107
-
108
  }
1
  <?php
 
 
 
 
 
 
 
 
 
 
2
  /**
3
  * Modes de livraison disponibles
4
+ *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
+ class LaPoste_SoColissimoSimplicite_Block_Onepage_Shipping_Method_Available extends Mage_Checkout_Block_Onepage_Shipping_Method_Available
 
12
  {
13
  protected $_itemRenders = array();
14
 
15
+ /**
16
+ * Constructeur
17
+ *
18
+ * @return void
19
+ */
20
+ protected function _construct()
21
  {
22
+ // rendu par défaut
 
 
23
  $this->addItemRender(
24
  'default',
25
  'socolissimosimplicite/onepage_shipping_method_available',
28
  }
29
 
30
  /**
31
+ * Ajoute une correspondance dans la table des rendus des modes de livraison
32
+ * Cela permet de personnaliser l'affichage d'un mode de livraison parmi
33
+ * la liste des modes proposés lors du passage d'une commande
34
+ *
35
+ * @param string $type
36
+ * @param string $block
37
+ * @param string $template
38
+ * @return LaPoste_SoColissimoSimplicite_Block_Onepage_Shipping_Method_Available
39
  */
40
  public function addItemRender($type, $block, $template)
41
  {
44
  'template' => $template,
45
  'blockInstance' => null
46
  );
47
+
48
  return $this;
49
  }
50
+
51
  /**
52
+ * Retourne le renderer approprié selon le mode de livraison
53
+ * Le renderer par défaut est "default"
54
+ *
55
+ * @param string $type exemples : default|socolissimosimplicite
56
  * @return array
57
  */
58
  public function getItemRenderer($type)
60
  if (!isset($this->_itemRenders[$type])) {
61
  $type = 'default';
62
  }
63
+
64
  if (is_null($this->_itemRenders[$type]['blockInstance'])) {
65
  $this->_itemRenders[$type]['blockInstance'] = $this->getLayout()
66
  ->createBlock($this->_itemRenders[$type]['block'])
70
 
71
  return $this->_itemRenders[$type]['blockInstance'];
72
  }
73
+
74
  /**
75
+ * Retourne le code html du mode de livraison donné
76
+ *
77
+ * @param Mage_Shipping_Model_Carrier_Abstract $item
78
  * @return string
79
  */
80
  public function getItemHtml($item)
81
  {
82
+ // le code html retourné dépend du mode de livraison
83
  $renderer = $this->getItemRenderer($item->getMethod())->setRate($item);
 
 
84
 
85
+ return $renderer->toHtml();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
 
87
  }
app/code/community/LaPoste/SoColissimoSimplicite/Block/Onepage/Shipping/Method/Available/Item.php CHANGED
@@ -1,23 +1,30 @@
1
  <?php
2
- /**
3
- * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- */
11
-
12
  /**
13
  * Mode de livraison
 
 
 
 
 
 
14
  */
15
  class LaPoste_SoColissimoSimplicite_Block_Onepage_Shipping_Method_Available_Item
16
  extends Mage_Checkout_Block_Onepage_Shipping_Method_Available
17
  {
18
-
 
 
 
 
19
  protected $_shippingMethod;
20
-
 
 
 
 
 
 
 
21
  public function getShippingMethod($rate)
22
  {
23
  if (is_null($this->_shippingMethod)) {
1
  <?php
 
 
 
 
 
 
 
 
 
 
2
  /**
3
  * Mode de livraison
4
+ *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  class LaPoste_SoColissimoSimplicite_Block_Onepage_Shipping_Method_Available_Item
12
  extends Mage_Checkout_Block_Onepage_Shipping_Method_Available
13
  {
14
+ /**
15
+ * Méthode de livraison
16
+ *
17
+ * @var Mage_Shipping_Model_Carrier_Abstract
18
+ */
19
  protected $_shippingMethod;
20
+
21
+ /**
22
+ * Retourne la méthode de livraison
23
+ *
24
+ * @param Mage_Sales_Model_Quote_Address_Rate $rate
25
+ *
26
+ * @return Mage_Shipping_Model_Carrier_Abstract
27
+ */
28
  public function getShippingMethod($rate)
29
  {
30
  if (is_null($this->_shippingMethod)) {
app/code/community/LaPoste/SoColissimoSimplicite/Helper/Data.php CHANGED
@@ -2,39 +2,66 @@
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstract
12
  {
13
  /**
14
- * URL du formulaire de soumission à l'accès au front de SO Colissimo
 
15
  * @var string
16
  */
17
  const FORM_URL = 'socolissimosimplicite/form/send';
 
18
  /**
19
- * URL appelée en cas de succès suite à la sélection de la livraison
20
- * dans l'interface SO Colissimo
21
  * @var string
22
  */
23
  const SUCCESS_URL = 'socolissimosimplicite/form/success';
 
24
  /**
25
- * URL appelée en cas d'échec suite à l'accès au front de SO Colissimo
 
26
  * @var string
27
  */
28
  const FAILURE_URL = 'socolissimosimplicite/form/failure';
29
 
30
  /**
31
  * Numéro de version à envoyer obligatoirement à la plateforme
 
32
  * @var string
33
  */
34
- const NUM_VERSION = '3.0';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
  /**
37
  * Retourne le numéro de version à soumettre à la plateforme
 
38
  * @return string
39
  */
40
  public function getNumVersion()
@@ -43,8 +70,18 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
43
  }
44
 
45
  /**
46
- * Retourne l'url complète de la page contenant le formulaire à soumettre
47
- * pour l'accès au front de SO Colissimo
 
 
 
 
 
 
 
 
 
 
48
  * @return string
49
  */
50
  public function getFormUrl()
@@ -53,47 +90,107 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
53
  }
54
 
55
  /**
56
- * Retourne l'url complète appelée en cas de succès suite à la
57
- * sélection de la livraison dans l'interface SO Colissimo
58
  * @return string
59
  */
60
  public function getSuccessUrl()
61
  {
62
- //return 'http://magento-community-1-6.1.0.vm/index.php/socolissimosimplicite/form/success/';
63
  return Mage::getUrl(self::SUCCESS_URL);
64
  }
65
 
66
  /**
67
- * Retourne l'url complète appelée en cas d'échec suite à
68
- * l'accès au front de SO Colissimo
69
  * @return string
70
  */
71
  public function getFailureUrl()
72
  {
73
- //return 'http://magento-community-1-6.1.0.vm/index.php/socolissimosimplicite/form/failure/';
74
  return Mage::getUrl(self::FAILURE_URL);
75
  }
76
 
77
  /**
78
- * Retourne le code du mode de livraison tel qu'utilisé lors du passage
79
- * d'une commande (code transporteur + mode).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  * @return string
81
  */
82
  public function getRateCode()
83
  {
84
  $shippingMethod = new LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod();
85
 
86
- //le code du transporteur et le code du mode de livraison sont les mêmes
87
- //cf Mage_Shipping_Model_Carrier_Abstract : un seul attribut "code" utilisé dans les deux cas
88
- //les modes de livraison natifs sont également implémentés de cette manière
89
  $carrierCode = $shippingMethod->getCarrierCode();
90
  $methodCode = $shippingMethod->getCarrierCode();
91
 
92
- return $carrierCode.'_'.$methodCode;
93
  }
94
 
95
  /**
96
- * Retourne l'identifiant d'accès au FO de SO Colissimo Simplicité
 
97
  * @return string
98
  */
99
  public function getAccountId()
@@ -102,8 +199,8 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
102
  }
103
 
104
  /**
105
- * Retourne la clé de cryptage nécessaire à la génération de la signature
106
- * pour l'accès au FO de SO Colissimo Simplicité.
107
  * @return string
108
  */
109
  public function getEncryptionKey()
@@ -112,7 +209,8 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
112
  }
113
 
114
  /**
115
- * Retourne l'url du front de SO Colissimo Simplicité
 
116
  * @return string
117
  */
118
  public function getUrlFo()
@@ -121,8 +219,8 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
121
  }
122
 
123
  /**
124
- * Retourne le message à afficher lors du choix de mode de livraison,
125
- * sous le titre.
126
  * @return string
127
  */
128
  public function getSelectMessage()
@@ -131,8 +229,8 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
131
  }
132
 
133
  /**
134
- * Retourne le message à afficher lors de la redirection vers le front de
135
- * SO Colissimo Simplicité.
136
  * @return string
137
  */
138
  public function getRedirectMessage()
@@ -141,7 +239,8 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
141
  }
142
 
143
  /**
144
- * Retourne l'url de vérification de la disponibilité de SO Colissimo Simplicité.
 
145
  * @return string
146
  */
147
  public function getServiceIsAvailableUrl()
@@ -150,8 +249,9 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
150
  }
151
 
152
  /**
153
- * Retourne si la vérification de la disponibilité de SO Colissimo Simplicité doit être effectuée.
154
- * @return boolean
 
155
  */
156
  public function getServiceIsAvailable()
157
  {
@@ -160,6 +260,7 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
160
 
161
  /**
162
  * Retourne le message à afficher si le service n'est pas disponible
 
163
  * @return string
164
  */
165
  public function getServiceNotAvailableMessage()
@@ -168,21 +269,56 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
168
  }
169
 
170
  /**
171
- * Retourne le tableau associant les codes de civilité de SO Colissimo avec les
172
- * valeurs pouvant être définies dans Magento.
173
- * Dans la config, la correspondance est fournir en JSON, le tableau correspondant
174
- * est retourné.
 
 
 
 
 
 
 
 
 
 
175
  * @return array
176
  */
177
  public function getMapPrefix()
178
  {
179
  $map = Mage::getStoreConfig('carriers/socolissimosimplicite/mapprefix');
 
180
  return json_decode($map, true);
181
  }
182
 
183
  /**
184
- * Retourne les frais de livraison correctement formatés pour la soumission auprès
185
- * de SO Colissimo
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
  * @param float $shippingPrice
187
  * @param int $maxDecimalDigit
188
  * @return float
@@ -190,26 +326,29 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
190
  public function getFormatedShippingPrice($shippingPrice, $maxDecimalDigit = 2)
191
  {
192
  $formatedPrice = number_format($shippingPrice, $maxDecimalDigit, '.', '');
 
193
  return $formatedPrice;
194
  }
195
 
196
  /**
197
- * Retourne le poids total de la commande correctement formaté pour la soumission
198
- * auprès de SO Colissimo
199
  * @param float $weight
200
  * @return int
201
  */
202
  public function getFormatedWeight($weight)
203
  {
204
  $weight = str_replace(',', '.', $weight);
205
- $weight = $weight * 1000; //converti kg en g
 
206
  $formatedWeight = number_format($weight, 0, '.', '');
 
207
  return $formatedWeight;
208
  }
209
 
210
  /**
211
- * Retourne le code civilité de SO Colissimo correspondant au code
212
- * civilité donné.
213
  * @param string $prefixMagento
214
  * @return string
215
  */
@@ -220,12 +359,13 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
220
  if (in_array($prefixMagento, $mapPrefix)) {
221
  $prefixSoCo = array_search($prefixMagento, $mapPrefix);
222
  }
 
223
  return $prefixSoCo;
224
  }
225
 
226
  /**
227
- * Retourne la civilité correspondant au code civilité au format
228
- * SO Colissimo donné.
229
  * @param string $prefixSoCo
230
  * @return string
231
  */
@@ -236,43 +376,174 @@ class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstrac
236
  if (isset($mapPrefix[$prefixSoCo])) {
237
  $prefixMagento = $mapPrefix[$prefixSoCo];
238
  }
 
239
  return $prefixMagento;
240
  }
241
 
242
  /**
243
  * Vérifier que la plateforme socolissimo est disponible
244
  *
245
- * @return boolean
246
  */
247
  public function checkServiceAvailability()
248
  {
249
- // exécuter la requête GET et récupérer l'état du service
250
- $c = curl_init();
251
- curl_setopt($c, CURLOPT_URL, $this->getServiceIsAvailableUrl());
252
- curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
253
- curl_setopt($c, CURLOPT_HEADER, false);
254
- try {
255
- $output = curl_exec($c);
256
- $serviceAvailable = (trim($output) == '[OK]') ? true : false;
257
- } catch(Exception $e) {
258
- Mage::logException($e);
259
- $serviceAvailable = false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
260
  }
261
- curl_close($c);
262
- return $serviceAvailable;
263
  }
264
 
265
  /**
266
- * Vérifie si on est dans le cas du recalcul des frais de livraison
267
- * effectué par Magento à l'étape de vérification de la commande
268
- * dans les versions CE1.5 et EE1.10
269
- * @return boolean
 
270
  */
271
- public function hasToDebugModeRdv()
272
  {
273
- $rdvOK = Mage::getSingleton('checkout/session')->getData('socolissimosimplicite_mode_rdv');
274
- $stepOK = Mage::getSingleton('checkout/session')->getData('socolissimosimplicite_flag');
275
- $hasToDebug = $rdvOK && $stepOK;
276
- return $hasToDebug;
277
  }
278
  }
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  class LaPoste_SoColissimoSimplicite_Helper_Data extends Mage_Core_Helper_Abstract
12
  {
13
  /**
14
+ * URL du formulaire de soumission à l'accès au front de So Colissimo
15
+ *
16
  * @var string
17
  */
18
  const FORM_URL = 'socolissimosimplicite/form/send';
19
+
20
  /**
21
+ * URL appelée en cas de succès suite à la sélection de la livraison dans l'interface So Colissimo
22
+ *
23
  * @var string
24
  */
25
  const SUCCESS_URL = 'socolissimosimplicite/form/success';
26
+
27
  /**
28
+ * URL appelée en cas d'échec suite à l'accès au front de So Colissimo
29
+ *
30
  * @var string
31
  */
32
  const FAILURE_URL = 'socolissimosimplicite/form/failure';
33
 
34
  /**
35
  * Numéro de version à envoyer obligatoirement à la plateforme
36
+ *
37
  * @var string
38
  */
39
+ const NUM_VERSION = '4.0';
40
+
41
+ /**
42
+ * Encodage utilisé pour envoyer les données à la plateforme
43
+ *
44
+ * @var string
45
+ */
46
+ const ENCODING_TYPE = 'UTF-8';
47
+
48
+ /**
49
+ * Langue affichée par défaut dans l'interface So Colissimo
50
+ *
51
+ * @var string
52
+ */
53
+ const DEFAULT_LANG = 'FR';
54
+
55
+ /**
56
+ * Disponibilité de la plateforme
57
+ *
58
+ * @var bool
59
+ */
60
+ protected $_serviceAvailable;
61
 
62
  /**
63
  * Retourne le numéro de version à soumettre à la plateforme
64
+ *
65
  * @return string
66
  */
67
  public function getNumVersion()
70
  }
71
 
72
  /**
73
+ * Retourne l'encodage utilisé pour transmate les données à la plateforme
74
+ *
75
+ * @return string
76
+ */
77
+ public function getEncodingType()
78
+ {
79
+ return self::ENCODING_TYPE;
80
+ }
81
+
82
+ /**
83
+ * Retourne l'url complète de la page contenant le formulaire à soumettre pour l'accès au front de So Colissimo
84
+ *
85
  * @return string
86
  */
87
  public function getFormUrl()
90
  }
91
 
92
  /**
93
+ * Retourne l'url complète appelée en cas de succès suite à la sélection de la livraison dans l'interface So Colissimo
94
+ *
95
  * @return string
96
  */
97
  public function getSuccessUrl()
98
  {
 
99
  return Mage::getUrl(self::SUCCESS_URL);
100
  }
101
 
102
  /**
103
+ * Retourne l'url complète appelée en cas d'échec suite à l'accès au front de So Colissimo
104
+ *
105
  * @return string
106
  */
107
  public function getFailureUrl()
108
  {
 
109
  return Mage::getUrl(self::FAILURE_URL);
110
  }
111
 
112
  /**
113
+ * Retourne la langue à transmettre à la plateforme So Colissimo
114
+ *
115
+ * @return string
116
+ */
117
+ public function getLanguage()
118
+ {
119
+ $availableLangs = array_keys(Mage::getStoreConfig('carriers/socolissimosimplicite/available_languages'));
120
+
121
+ // transformation de "xx_XX" en "XX" (exemple : fr_FR -> FR)
122
+ $lang = substr(Mage::app()->getLocale()->getLocaleCode(), 3);
123
+
124
+ return in_array($lang, $availableLangs) ? $lang : self::DEFAULT_LANG;
125
+ }
126
+
127
+ /**
128
+ * Retourne le montant par défaut des frais d'expédition (calculé dans le carrier)
129
+ *
130
+ * @param Mage_Sales_Model_Quote_Address $shippingAddress
131
+ * @param string $shippingType
132
+ * @param bool $cleanSession
133
+ * @return float
134
+ */
135
+ public function getShippingAmount($shippingAddress, $shippingType, $cleanSession = false)
136
+ {
137
+ $amounts = Mage::getSingleton('checkout/session')->getData('socolissimosimplicite_available_shipping_amounts');
138
+
139
+ // supprime les frais d'expédition de la session si demandé
140
+ if ($cleanSession) {
141
+ Mage::getSingleton('checkout/session')->unsetData('socolissimosimplicite_available_shipping_amounts');
142
+ }
143
+
144
+ return $shippingAddress->getFreeShipping() === '1' ? 0 : $amounts[$shippingType];
145
+ }
146
+
147
+ /**
148
+ * Retourne le numéro de téléphone de l'utilisateur connecté
149
+ * Seuls les numéros de mobile sont acceptés, et la validation du numéro est différente selon le pays
150
+ *
151
+ * @param Mage_Sales_Model_Quote_Address $shippingAddress
152
+ * @return string
153
+ */
154
+ public function getPhoneNumber($shippingAddress)
155
+ {
156
+ $country = $shippingAddress->getCountryId();
157
+ $phone = $shippingAddress->getTelephone();
158
+ $isValid = true;
159
+
160
+ switch ($country) {
161
+ case 'FR':
162
+ $firstTwoNumbers = substr($phone, 0, 2);
163
+ $isValid = $firstTwoNumbers === '06' || $firstTwoNumbers === '07';
164
+ break;
165
+
166
+ case 'BE':
167
+ $firstFourNumbers = substr($phone, 0, 4);
168
+ $isValid = $firstFourNumbers === '+324';
169
+ break;
170
+ }
171
+
172
+ return $isValid ? $phone : '';
173
+ }
174
+
175
+ /**
176
+ * Retourne le code du mode de livraison tel qu'utilisé lors du passage d'une commande (code transporteur + mode)
177
+ *
178
  * @return string
179
  */
180
  public function getRateCode()
181
  {
182
  $shippingMethod = new LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod();
183
 
184
+ // le code du transporteur et le code du mode de livraison sont les mêmes
 
 
185
  $carrierCode = $shippingMethod->getCarrierCode();
186
  $methodCode = $shippingMethod->getCarrierCode();
187
 
188
+ return $carrierCode . '_' . $methodCode;
189
  }
190
 
191
  /**
192
+ * Retourne l'identifiant d'accès au FO de So Colissimo Simplicité
193
+ *
194
  * @return string
195
  */
196
  public function getAccountId()
199
  }
200
 
201
  /**
202
+ * Retourne la clé de cryptage nécessaire à la génération de la signature pour l'accès au FO de So Colissimo Simplicité
203
+ *
204
  * @return string
205
  */
206
  public function getEncryptionKey()
209
  }
210
 
211
  /**
212
+ * Retourne l'url du front de So Colissimo Simplicité
213
+ *
214
  * @return string
215
  */
216
  public function getUrlFo()
219
  }
220
 
221
  /**
222
+ * Retourne le message à afficher lors du choix de mode de livraison, sous le titre
223
+ *
224
  * @return string
225
  */
226
  public function getSelectMessage()
229
  }
230
 
231
  /**
232
+ * Retourne le message à afficher lors de la redirection vers le front de So Colissimo Simplicité
233
+ *
234
  * @return string
235
  */
236
  public function getRedirectMessage()
239
  }
240
 
241
  /**
242
+ * Retourne l'url de vérification de la disponibilité de So Colissimo Simplicité
243
+ *
244
  * @return string
245
  */
246
  public function getServiceIsAvailableUrl()
249
  }
250
 
251
  /**
252
+ * Retourne si la vérification de la disponibilité de So Colissimo Simplicité doit être effectuée
253
+ *
254
+ * @return bool
255
  */
256
  public function getServiceIsAvailable()
257
  {
260
 
261
  /**
262
  * Retourne le message à afficher si le service n'est pas disponible
263
+ *
264
  * @return string
265
  */
266
  public function getServiceNotAvailableMessage()
269
  }
270
 
271
  /**
272
+ * Retourne l'url vers laquelle l'internaute est redirigée lors d'une erreur
273
+ * (total quote incorrect, variable de session manquante...)
274
+ *
275
+ * @return string
276
+ */
277
+ public function getRedirectUrlOnError()
278
+ {
279
+ return Mage::getUrl(Mage::getStoreConfig('carriers/socolissimosimplicite/redirect_url_on_error'));
280
+ }
281
+
282
+ /**
283
+ * Retourne le tableau associant les codes de civilité de So Colissimo avec les valeurs pouvant être définies dans Magento
284
+ * Dans la config, la correspondance est fournir en JSON, le tableau correspondant est retourné
285
+ *
286
  * @return array
287
  */
288
  public function getMapPrefix()
289
  {
290
  $map = Mage::getStoreConfig('carriers/socolissimosimplicite/mapprefix');
291
+
292
  return json_decode($map, true);
293
  }
294
 
295
  /**
296
+ * Retourne les codes des points relais commerçants
297
+ *
298
+ * @return array
299
+ */
300
+ public function getPickupPointCodes()
301
+ {
302
+ $codes = Mage::getStoreConfig('carriers/socolissimosimplicite/pickup_codes');
303
+
304
+ return is_array($codes) ? array_keys($codes) : array();
305
+ }
306
+
307
+ /**
308
+ * Retourne les codes des bureaux de poste
309
+ *
310
+ * @return array
311
+ */
312
+ public function getPostOfficeCodes()
313
+ {
314
+ $codes = Mage::getStoreConfig('carriers/socolissimosimplicite/post_office_codes');
315
+
316
+ return is_array($codes) ? array_keys($codes) : array();
317
+ }
318
+
319
+ /**
320
+ * Retourne les frais de livraison correctement formatés pour la soumission auprès de So Colissimo
321
+ *
322
  * @param float $shippingPrice
323
  * @param int $maxDecimalDigit
324
  * @return float
326
  public function getFormatedShippingPrice($shippingPrice, $maxDecimalDigit = 2)
327
  {
328
  $formatedPrice = number_format($shippingPrice, $maxDecimalDigit, '.', '');
329
+
330
  return $formatedPrice;
331
  }
332
 
333
  /**
334
+ * Retourne le poids total de la commande correctement formaté pour la soumission auprès de So Colissimo
335
+ *
336
  * @param float $weight
337
  * @return int
338
  */
339
  public function getFormatedWeight($weight)
340
  {
341
  $weight = str_replace(',', '.', $weight);
342
+ // conversion des kg en g
343
+ $weight = $weight * 1000;
344
  $formatedWeight = number_format($weight, 0, '.', '');
345
+
346
  return $formatedWeight;
347
  }
348
 
349
  /**
350
+ * Retourne le code civilité de So Colissimo correspondant au code civilité donné
351
+ *
352
  * @param string $prefixMagento
353
  * @return string
354
  */
359
  if (in_array($prefixMagento, $mapPrefix)) {
360
  $prefixSoCo = array_search($prefixMagento, $mapPrefix);
361
  }
362
+
363
  return $prefixSoCo;
364
  }
365
 
366
  /**
367
+ * Retourne la civilité correspondant au code civilité au format So Colissimo donné
368
+ *
369
  * @param string $prefixSoCo
370
  * @return string
371
  */
376
  if (isset($mapPrefix[$prefixSoCo])) {
377
  $prefixMagento = $mapPrefix[$prefixSoCo];
378
  }
379
+
380
  return $prefixMagento;
381
  }
382
 
383
  /**
384
  * Vérifier que la plateforme socolissimo est disponible
385
  *
386
+ * @return bool
387
  */
388
  public function checkServiceAvailability()
389
  {
390
+ if ($this->_serviceAvailable === null) {
391
+ $available = true;
392
+
393
+ if ($this->getServiceIsAvailable() && $this->getServiceIsAvailableUrl() != '') {
394
+ // exécuter la requête GET et récupérer l'état du service
395
+ $c = curl_init();
396
+ curl_setopt($c, CURLOPT_URL, $this->getServiceIsAvailableUrl());
397
+ curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
398
+ curl_setopt($c, CURLOPT_HEADER, false);
399
+ try {
400
+ $output = curl_exec($c);
401
+ $available = (trim($output) === '[OK]');
402
+ } catch(Exception $e) {
403
+ Mage::logException($e);
404
+ $available = false;
405
+ }
406
+ curl_close($c);
407
+ }
408
+
409
+ $this->_serviceAvailable = $available;
410
+ }
411
+
412
+ return $this->_serviceAvailable;
413
+ }
414
+
415
+ /**
416
+ * Retourne les données à envoyer à So Colissimo
417
+ *
418
+ * @param string $orderId
419
+ * @param Mage_Sales_Model_Quote_Address $shippingAddress
420
+ * @return array
421
+ */
422
+ public function getFieldsToSend($orderId, $shippingAddress)
423
+ {
424
+ $defaultShippingAmount = $this->getShippingAmount($shippingAddress, 'default');
425
+ $pickupShippingAmount = $this->getShippingAmount($shippingAddress, 'pickup');
426
+
427
+ return array(
428
+ 'pudoFOId' => $this->getAccountId(),
429
+ 'ceName' => $shippingAddress->getLastname(),
430
+ 'dyForwardingCharges' => $this->getFormatedShippingPrice($defaultShippingAmount),
431
+ 'dyForwardingChargesCMT' => $this->getFormatedShippingPrice($pickupShippingAmount),
432
+ 'trClientNumber' => $shippingAddress->getCustomerId(),
433
+ 'trOrderNumber' => $shippingAddress->getQuoteId(),
434
+ 'orderId' => $orderId,
435
+ 'numVersion' => $this->getNumVersion(),
436
+ 'ceCivility' => $this->getPrefixForSoColissimo($shippingAddress->getPrefix()),
437
+ 'ceFirstName' => $shippingAddress->getFirstname(),
438
+ 'ceCompanyName' => $shippingAddress->getCompany(),
439
+ 'ceAdress1' => $this->_getShippingAddressStreet($shippingAddress, 2),
440
+ 'ceAdress2' => $this->_getShippingAddressStreet($shippingAddress, 3),
441
+ 'ceAdress3' => $this->_getShippingAddressStreet($shippingAddress, 1),
442
+ 'ceAdress4' => $this->_getShippingAddressStreet($shippingAddress, 4),
443
+ 'ceZipCode' => $shippingAddress->getPostcode(),
444
+ 'ceTown' => $shippingAddress->getCity(),
445
+ 'ceEmail' => $shippingAddress->getEmail(),
446
+ 'cePhoneNumber' => $this->getPhoneNumber($shippingAddress),
447
+ 'dyWeight' => $this->getFormatedWeight($shippingAddress->getWeight()),
448
+ 'trReturnUrlKo' => $this->getFailureUrl(),
449
+ 'trReturnUrlOk' => $this->getSuccessUrl(),
450
+ 'CHARSET' => $this->getEncodingType(),
451
+ 'cePays' => $shippingAddress->getCountryId(),
452
+ 'trInter' => $shippingAddress->getCountryId() === 'FR' ? '0' : '2',
453
+ 'ceLang' => $this->getLanguage(),
454
+ 'encryptionKey' => $this->getEncryptionKey(),
455
+ );
456
+ }
457
+
458
+ /**
459
+ * Retourne la ligne n° $line des informations (rue, étage, immeuble, etc.) de l'adresse de livraison de la commande en cours
460
+ *
461
+ * @param Mage_Sales_Model_Quote_Address $shippingAddress
462
+ * @param int $line
463
+ * @return string
464
+ */
465
+ protected function _getShippingAddressStreet($shippingAddress, $line = 1)
466
+ {
467
+ $arrayStreet = $shippingAddress->getStreet();
468
+ $streetLine = '';
469
+ if (0 < $line && $line <= count($arrayStreet)) {
470
+ $streetLine = $arrayStreet[$line - 1];
471
+ }
472
+
473
+ return $streetLine;
474
+ }
475
+
476
+ /**
477
+ * Vérifie si l'utilisateur est revenu de la plateforme So Colissimo
478
+ *
479
+ * @return bool
480
+ */
481
+ public function isSocoComplete()
482
+ {
483
+ $shippingPriceCalculations = Mage::getStoreConfig('carriers/socolissimosimplicite/shipping_price_calculations');
484
+ $hasChosenShippingAmount = Mage::getSingleton('checkout/session')->hasData('socolissimosimplicite_chosen_shipping_amount');
485
+ $isSocoComplete = false;
486
+
487
+ if ($hasChosenShippingAmount && is_array($shippingPriceCalculations)) {
488
+ $controllerName = Mage::app()->getRequest()->getControllerName();
489
+ $actionName = Mage::app()->getRequest()->getActionName();
490
+ foreach ($shippingPriceCalculations as $requestData) {
491
+ if (array_key_exists('controller', $requestData) && array_key_exists('action', $requestData)) {
492
+ if ($controllerName === $requestData['controller'] && $actionName === $requestData['action']) {
493
+ $isSocoComplete = true;
494
+ break;
495
+ }
496
+ }
497
+ }
498
+ }
499
+
500
+ return $isSocoComplete;
501
+ }
502
+
503
+ /**
504
+ * Nettoie la session du tunnel de commande
505
+ *
506
+ * @param bool $cleanAll
507
+ * @return void
508
+ */
509
+ public function clearCheckoutSession($cleanAll = true)
510
+ {
511
+ /* @var $checkoutSession Mage_Checkout_Model_Session */
512
+ $checkoutSession = Mage::getSingleton('checkout/session');
513
+
514
+ if ($checkoutSession) {
515
+ $checkoutSession->unsetData('socolissimosimplicite_checkout_onepage_nextstep');
516
+ $checkoutSession->unsetData('socolissimosimplicite_checkout_onepage_transactionid');
517
+ $checkoutSession->unsetData('socolissimosimplicite_shipping_data');
518
+ $checkoutSession->unsetData('socolissimosimplicite_from_socolissimo');
519
+ $checkoutSession->unsetData('socolissimosimplicite_new_address_from_socolissimo');
520
+ $checkoutSession->unsetData('socolissimosimplicite_billing_address');
521
+ $checkoutSession->unsetData('socolissimosimplicite_shipping_address');
522
+ // nettoie les variables servant à mémoriser le mode/prix choisi dans l'IFrame
523
+ $checkoutSession->unsetData('socolissimosimplicite_chosen_delivery_mode');
524
+ $checkoutSession->unsetData('socolissimosimplicite_chosen_shipping_amount');
525
+
526
+ if ($cleanAll) {
527
+ // nettoie le sous-total de la quote
528
+ $checkoutSession->unsetData('socolissimosimplicite_quote_subtotal');
529
+
530
+ // nettoie les frais d'expédition (en principe déjà fait par le formulaire d'envoi des données à la plateforme)
531
+ $checkoutSession->unsetData('socolissimosimplicite_available_shipping_amounts');
532
+ }
533
  }
 
 
534
  }
535
 
536
  /**
537
+ * Retourne le libellé du prix affiché à l'étape livraison du tunnel de commande
538
+ * pour la méthode de livraison So Colissimo
539
+ *
540
+ * @param string $formattedPrice
541
+ * @return string
542
  */
543
+ public function getShippingPriceLabel($formattedPrice)
544
  {
545
+ $format = Mage::getStoreConfig('carriers/socolissimosimplicite/price_format');
546
+
547
+ return empty($format) ? $formattedPrice : str_replace('%s', $formattedPrice, $format);
 
548
  }
549
  }
app/code/community/LaPoste/SoColissimoSimplicite/Model/Carrier/ShippingMethod.php CHANGED
@@ -1,80 +1,155 @@
1
  <?php
2
  /**
3
- * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- */
11
- /**
12
- *
13
- * Mode de livraison SO Colissimo Simplicité
14
  */
15
  class LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
16
- extends Mage_Shipping_Model_Carrier_Abstract
17
- implements Mage_Shipping_Model_Carrier_Interface
18
  {
19
  /**
20
  * Identifiant unique du mode de livraison
 
21
  * @var string
22
  */
23
  protected $_code = 'socolissimosimplicite';
24
 
25
  /**
26
- * Récolte et retourne les informations sur le mode de livraison utiles
27
- * pour le passage d'une commande.
28
  * @param Mage_Shipping_Model_Rate_Request $request
29
  * @return Mage_Shipping_Model_Rate_Result
30
  */
31
  public function collectRates(Mage_Shipping_Model_Rate_Request $request)
32
  {
33
- //on stoppe si le mode de livraison n'est pas activé dans la configuration
34
  if (!$this->getConfigFlag('active')) {
35
  return false;
36
  }
37
 
38
- //idem si la limite de poids ou la tranche de prix ne sont pas respectés
39
- $packageValue = $request->getPackageValue();
40
- $packageWeight = $request->getPackageWeight();
 
41
 
42
- $allow = ($this->getConfigData('min_order_total') == '' || $packageValue >= $this->getConfigData('min_order_total'))
43
- && ($this->getConfigData('max_order_total') == '' || $packageValue <= $this->getConfigData('max_order_total'))
44
- && ($this->getConfigData('max_weight') == '' || $packageWeight <= $this->getConfigData('max_weight'));
 
 
 
 
45
 
 
46
  $result = Mage::getModel('shipping/rate_result');
47
 
48
- if ($allow == true) {
49
- $method = Mage::getModel('shipping/rate_result_method');
 
 
 
 
50
 
51
- $method->setCarrier($this->_code);
52
- $method->setCarrierTitle($this->getConfigData('title'));
53
 
54
- $method->setMethod($this->_code);
55
- $method->setMethodTitle($this->getConfigData('name'));
56
 
57
- // vérifier si la livraison collisimo est offerte et à partir de quel montant
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  $minQuotePriceForFreeShipping = $this->getConfigData('minquotepriceforfree');
59
  $quotePriceWithDiscount = $request->getData('package_value_with_discount');
60
- if ($minQuotePriceForFreeShipping > 0 and $quotePriceWithDiscount >= $minQuotePriceForFreeShipping) {
61
- $method->setPrice(0);
 
 
 
 
62
  } else {
63
- $method->setPrice($this->getCalculatedPrice());
64
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
 
66
- // vérifier si la livraison collisimo est offerte via une règle de prix
67
- if ($request->getFreeShipping()) {
68
- $method->setPrice(0);
 
 
 
 
 
69
  }
70
 
71
- $result->append($method);
 
 
 
 
 
 
 
 
 
 
72
  }
 
 
 
 
 
 
 
 
 
 
 
73
  return $result;
74
  }
75
 
76
  /**
77
- * Retourne les modes de livraison authorisés.
 
78
  * @return array
79
  */
80
  public function getAllowedMethods()
@@ -83,53 +158,40 @@ class LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
83
  }
84
 
85
  /**
86
- * Retourne le montant des frais de livraison après éventuels calculs
87
- * selon le mode de tarification choisi dans l'administration.
 
 
 
88
  * @return float
89
  */
90
- public function getCalculatedPrice()
91
  {
92
- $amountBaseType = $this->getConfigData('amountbasetype');
93
- $amountCalculation = $this->getConfigData('amountcalculation');
94
  $helper = Mage::helper('socolissimosimplicite');
95
 
96
- // récupérer l'adresse
97
- $shippingAddress = Mage::getModel('checkout/cart')->getQuote()->getShippingAddress();
98
-
99
- // en mode rendez-vous, on utilise directement le prix transmis par socolissimo
100
- // on ne re-calcule pas (supplément de 4€)
101
- if ($shippingAddress->getData('soco_mode_rdv') == true
102
- and $shippingAddress->getData('base_shipping_amount') > 0) {
103
- return $shippingAddress->getData('base_shipping_amount');
104
- // sinon si bug des frais RDV non comptabilisés, on utilise le montant mémorisé en session
105
- // (versions CE1.5 et EE1.10, à l'étape savePayment du onepage)
106
- } elseif (Mage::helper('socolissimosimplicite')->hasToDebugModeRdv()) {
107
- return Mage::getSingleton('checkout/session')->getData('socolissimosimplicite_shipping_amount');
108
- }
109
-
110
  // sinon calcul en fonction de la configuration
111
  switch ($amountBaseType) {
112
  case 'fixed':
113
  if (is_numeric($amountCalculation)) {
114
  $calculatedPrice = $amountCalculation;
115
  } else {
116
- throw new Exception($helper->__('SoColissimo : la valeur de configuration "Calcul des frais de livraison" fournie "'.$amountCalculation.'" doit être un numérique de la forme 5.50'));
117
  }
118
  break;
119
  case 'per_weight':
120
  $rules = json_decode($amountCalculation, true);
121
- // si vide
122
- if (is_null($rules) or empty($rules)) {
123
- throw new Exception($helper->__('SoColissimo : la valeur de configuration "Calcul des frais de livraison" pour le type "tarif selon le poids" fournie "'.$amountCalculation.'" n\'est pas dans le bon format, exemple {"0":"2.90","0.5":"4.50","5":"8","10":"14"}'));
124
  } else {
125
  try {
126
- //tri par poids décroissant
127
  krsort($rules, SORT_NUMERIC);
128
 
129
- //récupération du poids total de la commande (en kilogrammes)
130
  $totalWeight = $shippingAddress->getWeight();
131
 
132
- //recherche du prix selon les fourchettes de tarifs données
133
  $calculatedPrice = false;
134
  foreach ($rules as $w => $p) {
135
  $calculatedPrice = $p;
@@ -138,24 +200,23 @@ class LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
138
  }
139
  }
140
  } catch (Exception $e) {
141
- throw new Exception($helper->__('SoColissimo : la valeur de configuration "Calcul des frais de livraison" pour le type "tarif selon le poids" fournie "'.$amountCalculation.'" n\'est pas dans le bon format, exemple {"0":"2.90","0.5":"4.50","5":"8","10":"14"}'));
142
  }
143
  }
144
  break;
145
  case 'per_amount':
146
  $rules = json_decode($amountCalculation, true);
147
- // si vide
148
- if (is_null($rules) or empty($rules)) {
149
- throw new Exception($helper->__('SoColissimo : la valeur de configuration "Calcul des frais de livraison" pour le type "tarif selon le sous-total" fournie "'.$amountCalculation.'" n\'est pas dans le bon format, exemple {"0":"3","50":"5","100":"8","250":"0"}'));
150
  } else {
151
  try {
152
- //tri par montant décroissant
153
  krsort($rules, SORT_NUMERIC);
154
 
155
- //recuperation du sous total HT du panier
156
  $totalAmount = $shippingAddress->getSubtotal();
157
 
158
- //recherche du prix selon les fourchettes de tarifs donnees
159
  $calculatedPrice = false;
160
  foreach ($rules as $w => $p) {
161
  $calculatedPrice = $p;
@@ -164,20 +225,20 @@ class LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
164
  }
165
  }
166
  } catch (Exception $e) {
167
- throw new Exception($helper->__('SoColissimo : la valeur de configuration "Calcul des frais de livraison" pour le type "tarif selon le sous-total" fournie "'.$amountCalculation.'" n\'est pas dans le bon format, exemple {"0":"3","50":"5","100":"8","250":"0"}'));
168
  }
169
  }
170
  break;
171
  default:
172
- throw new Exception($helper->__('SoColissimo : la valeur de configuration "Type des frais de livraison" fourni "'.$amountBaseType.'" n\'est pas disponible'));
173
  break;
174
  }
 
175
  return $calculatedPrice;
176
  }
177
 
178
  /**
179
- * Getter for carrier code
180
- * needed for Magento version under 1.4
181
  *
182
  * @return string
183
  */
1
  <?php
2
  /**
3
+ * Mode de livraison So Colissimo Simplicité
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
 
 
 
 
10
  */
11
  class LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
12
+ extends Mage_Shipping_Model_Carrier_Abstract implements Mage_Shipping_Model_Carrier_Interface
 
13
  {
14
  /**
15
  * Identifiant unique du mode de livraison
16
+ *
17
  * @var string
18
  */
19
  protected $_code = 'socolissimosimplicite';
20
 
21
  /**
22
+ * Récolte et retourne les informations sur le mode de livraison utiles pour le passage d'une commande
23
+ *
24
  * @param Mage_Shipping_Model_Rate_Request $request
25
  * @return Mage_Shipping_Model_Rate_Result
26
  */
27
  public function collectRates(Mage_Shipping_Model_Rate_Request $request)
28
  {
29
+ // on stoppe si le mode de livraison n'est pas activé dans la configuration
30
  if (!$this->getConfigFlag('active')) {
31
  return false;
32
  }
33
 
34
+ // idem si la limite de poids ou la tranche de prix ne sont pas respectés
35
+ if (is_numeric($this->getConfigData('min_order_total')) && $request->getPackageValue() < $this->getConfigData('min_order_total')) {
36
+ return false;
37
+ }
38
 
39
+ if (is_numeric($this->getConfigData('max_order_total')) && $request->getPackageValue() > $this->getConfigData('max_order_total')) {
40
+ return false;
41
+ }
42
+
43
+ if (is_numeric($this->getConfigData('max_weight')) && $request->getPackageWeight() > $this->getConfigData('max_weight')) {
44
+ return false;
45
+ }
46
 
47
+ /* @var $result Mage_Shipping_Model_Rate_Result */
48
  $result = Mage::getModel('shipping/rate_result');
49
 
50
+ // ajout de la méthode qui sera affichée dans le tunnel de commande
51
+ /* @var $method Mage_Shipping_Model_Rate_Result_Method */
52
+ $method = Mage::getModel('shipping/rate_result_method');
53
+ $method->setCarrier($this->_code);
54
+ $method->setCarrierTitle($this->getConfigData('title'));
55
+ $method->setMethod($this->_code);
56
 
57
+ /* @var $checkoutSession Mage_Checkout_Model_Session */
58
+ $checkoutSession = Mage::getSingleton('checkout/session');
59
 
60
+ /* @var $helper LaPoste_SoColissimoSimplicite_Helper_Data */
61
+ $helper = Mage::helper('socolissimosimplicite');
62
 
63
+ if ($helper->isSocoComplete()) {
64
+ // après la sortie de la plateforme socolissimo (IFrame), on utilise le prix transmis par socolissimo
65
+ // on ne peut pas se baser sur le prix de l'adresse de livraison car son prix est réinitialisé
66
+ // à l'étape du paiement dans certaines versions de Magento
67
+ $price = $checkoutSession->getData('socolissimosimplicite_chosen_shipping_amount');
68
+
69
+ // mettre à jour le libellé de la méthode de livraison
70
+ $deliveryMode = $checkoutSession->getData('socolissimosimplicite_chosen_delivery_mode');
71
+ if ($deliveryMode === 'DOM') {
72
+ $methodTitle = $this->getConfigData('name_home');
73
+ } elseif ($deliveryMode === 'RDV') {
74
+ $methodTitle = $this->getConfigData('name_appointment');
75
+ } elseif (in_array($deliveryMode, $helper->getPickupPointCodes())) {
76
+ $methodTitle = $this->getConfigData('name_pickup');
77
+ } elseif (in_array($deliveryMode, $helper->getPostOfficeCodes())) {
78
+ $methodTitle = $this->getConfigData('name_post_office');
79
+ } else {
80
+ // mode de livraison incorrect, on affiche le libellé par défaut
81
+ // ce cas pourrait par exemple se produire dans le cas de l'ajout d'un nouveau pays alors que ses codes
82
+ // de point de retrait et de bureaux de poste ne sont pas renseigné dans le fichier config.xml
83
+ $methodTitle = $this->getConfigData('name');
84
+ }
85
+ } else {
86
+ // vérifier si la livraison So Colissimo est offerte et à partir de quel montant
87
  $minQuotePriceForFreeShipping = $this->getConfigData('minquotepriceforfree');
88
  $quotePriceWithDiscount = $request->getData('package_value_with_discount');
89
+
90
+ $isFreeShipping = $request->getFreeShipping()
91
+ || ($minQuotePriceForFreeShipping > 0 && $quotePriceWithDiscount >= $minQuotePriceForFreeShipping);
92
+
93
+ if ($isFreeShipping) {
94
+ $defaultPrice = $pickupPrice = $price = 0;
95
  } else {
96
+ // calcul des frais d'expéditions
97
+ $defaultPrice = $this->_getCalculatedPrice(
98
+ $checkoutSession->getQuote()->getShippingAddress(),
99
+ $this->getConfigData('amountbasetype'),
100
+ $this->getConfigData('amountcalculation')
101
+ );
102
+
103
+ // calcul des frais d'expédition commerçants (prend la valeur des frais par défaut si non renseignés
104
+ $pickupPrice = $defaultPrice;
105
+ $amountCalculationPickup = $this->getConfigData('amountcalculation_pickup');
106
+ if ($amountCalculationPickup !== null && $amountCalculationPickup !== '' && $amountCalculationPickup !== false) {
107
+ $pickupPrice = $this->_getCalculatedPrice(
108
+ $checkoutSession->getQuote()->getShippingAddress(),
109
+ $this->getConfigData('amountbasetype_pickup'),
110
+ $amountCalculationPickup
111
+ );
112
+ }
113
 
114
+ if ($helper->checkServiceAvailability()) {
115
+ // prendre le prix le plus bas
116
+ $price = ($pickupPrice < $defaultPrice) ? $pickupPrice : $defaultPrice;
117
+ } else {
118
+ // si la plateforme est indisponible, systématiquement prendre le prix normal
119
+ // il n'y aura pas d'affichage de l'IFrame, ce prix sera directement utilisé pour commander
120
+ $price = $defaultPrice;
121
+ }
122
  }
123
 
124
+ // sauvegarder les frais d'expédition dans la session (ils seront utilisés par la transaction et le form d'envoi)
125
+ $checkoutSession->setData(
126
+ 'socolissimosimplicite_available_shipping_amounts',
127
+ array(
128
+ 'default' => $defaultPrice,
129
+ 'pickup' => $pickupPrice,
130
+ )
131
+ );
132
+
133
+ // utiliser le nom de méthode par défaut
134
+ $methodTitle = $this->getConfigData('name');
135
  }
136
+
137
+ // mémoriser le sous-total de la quote, cela permettra de s'assurer que l'internaute
138
+ // ne l'ait pas modifié pendant qu'il était sur la plateforme So Colissimo
139
+ $checkoutSession->setData('socolissimosimplicite_quote_subtotal', $checkoutSession->getQuote()->getSubtotal());
140
+
141
+ // on attribue à la méthode les frais d'expédition les plus bas (c'est ce qui sera affiché dans le tunnel de commande)
142
+ $method->setMethodTitle($methodTitle);
143
+ $method->setPrice($price);
144
+ $method->setCost($price);
145
+ $result->append($method);
146
+
147
  return $result;
148
  }
149
 
150
  /**
151
+ * Retourne les modes de livraison authorisés
152
+ *
153
  * @return array
154
  */
155
  public function getAllowedMethods()
158
  }
159
 
160
  /**
161
+ * Retourne le montant des frais de livraison après éventuels calculs selon le mode de tarification choisi dans l'administration
162
+ *
163
+ * @param Mage_Sales_Model_Quote_Address $shippingAddress
164
+ * @param string $amountBaseType
165
+ * @param string $amountBaseCalculation
166
  * @return float
167
  */
168
+ protected function _getCalculatedPrice($shippingAddress, $amountBaseType, $amountCalculation)
169
  {
170
+ /* @var $helper LaPoste_SoColissimoSimplicite_Helper_Data */
 
171
  $helper = Mage::helper('socolissimosimplicite');
172
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  // sinon calcul en fonction de la configuration
174
  switch ($amountBaseType) {
175
  case 'fixed':
176
  if (is_numeric($amountCalculation)) {
177
  $calculatedPrice = $amountCalculation;
178
  } else {
179
+ throw new Exception($helper->__('SoColissimo : la valeur de configuration "Calcul des frais de livraison" fournie "' . $amountCalculation . '" doit être un numérique de la forme 5.50'));
180
  }
181
  break;
182
  case 'per_weight':
183
  $rules = json_decode($amountCalculation, true);
184
+ if (is_null($rules) || empty($rules)) {
185
+ throw new Exception($helper->__('SoColissimo : la valeur de configuration "Calcul des frais de livraison" pour le type "tarif selon le poids" fournie "' . $amountCalculation . '" n\'est pas dans le bon format, exemple {"0":"2.90","0.5":"4.50","5":"8","10":"14"}'));
 
186
  } else {
187
  try {
188
+ // tri par poids décroissant
189
  krsort($rules, SORT_NUMERIC);
190
 
191
+ // récupération du poids total de la commande (en kilogrammes)
192
  $totalWeight = $shippingAddress->getWeight();
193
 
194
+ // recherche du prix selon les fourchettes de tarifs données
195
  $calculatedPrice = false;
196
  foreach ($rules as $w => $p) {
197
  $calculatedPrice = $p;
200
  }
201
  }
202
  } catch (Exception $e) {
203
+ throw new Exception($helper->__('SoColissimo : la valeur de configuration "Calcul des frais de livraison" pour le type "tarif selon le poids" fournie "' . $amountCalculation . '" n\'est pas dans le bon format, exemple {"0":"2.90","0.5":"4.50","5":"8","10":"14"}'));
204
  }
205
  }
206
  break;
207
  case 'per_amount':
208
  $rules = json_decode($amountCalculation, true);
209
+ if (is_null($rules) || empty($rules)) {
210
+ throw new Exception($helper->__('SoColissimo : la valeur de configuration "Calcul des frais de livraison" pour le type "tarif selon le sous-total" fournie "' . $amountCalculation . '" n\'est pas dans le bon format, exemple {"0":"3","50":"5","100":"8","250":"0"}'));
 
211
  } else {
212
  try {
213
+ // tri par montant décroissant
214
  krsort($rules, SORT_NUMERIC);
215
 
216
+ // recuperation du sous total HT du panier
217
  $totalAmount = $shippingAddress->getSubtotal();
218
 
219
+ // recherche du prix selon les fourchettes de tarifs donnees
220
  $calculatedPrice = false;
221
  foreach ($rules as $w => $p) {
222
  $calculatedPrice = $p;
225
  }
226
  }
227
  } catch (Exception $e) {
228
+ throw new Exception($helper->__('SoColissimo : la valeur de configuration "Calcul des frais de livraison" pour le type "tarif selon le sous-total" fournie "' . $amountCalculation . '" n\'est pas dans le bon format, exemple {"0":"3","50":"5","100":"8","250":"0"}'));
229
  }
230
  }
231
  break;
232
  default:
233
+ throw new Exception($helper->__('SoColissimo : la valeur de configuration "Type des frais de livraison" fournie "' . $amountBaseType . '" n\'est pas disponible'));
234
  break;
235
  }
236
+
237
  return $calculatedPrice;
238
  }
239
 
240
  /**
241
+ * Retourne le code du mode de livraison (nécessaire pour les versions < 1.4)
 
242
  *
243
  * @return string
244
  */
app/code/community/LaPoste/SoColissimoSimplicite/Model/Mysql4/Transaction.php CHANGED
@@ -1,21 +1,22 @@
1
  <?php
2
  /**
3
- * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- */
11
- /**
12
  *
13
- * Transaction entre Magento et SO Colissimo
 
 
 
 
14
  */
15
  class LaPoste_SoColissimoSimplicite_Model_Mysql4_Transaction extends Mage_Core_Model_Mysql4_Abstract
16
  {
17
- public function _construct()
 
 
 
 
 
18
  {
19
  $this->_init('socolissimosimplicite/transaction', 'transaction_id');
20
  }
21
- }
1
  <?php
2
  /**
3
+ * Transaction entre Magento et So Colissimo
 
 
 
 
 
 
 
 
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  class LaPoste_SoColissimoSimplicite_Model_Mysql4_Transaction extends Mage_Core_Model_Mysql4_Abstract
12
  {
13
+ /**
14
+ * Constructeur
15
+ *
16
+ * @return void
17
+ */
18
+ protected function _construct()
19
  {
20
  $this->_init('socolissimosimplicite/transaction', 'transaction_id');
21
  }
22
+ }
app/code/community/LaPoste/SoColissimoSimplicite/Model/Mysql4/Transaction/Collection.php CHANGED
@@ -1,22 +1,22 @@
1
  <?php
2
  /**
3
- * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- */
11
- /**
12
  *
13
- * Collection des transactions entre Magento et SO Colissimo
 
 
 
 
14
  */
15
- class LaPoste_SoColissimoSimplicite_Model_Mysql4_Transaction_Collection
16
- extends Mage_Core_Model_Mysql4_Collection_Abstract
17
  {
18
- public function _construct()
 
 
 
 
 
19
  {
20
  $this->_init('socolissimosimplicite/transaction');
21
  }
22
- }
1
  <?php
2
  /**
3
+ * Collection des transactions entre Magento et So Colissimo
 
 
 
 
 
 
 
 
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
+ class LaPoste_SoColissimoSimplicite_Model_Mysql4_Transaction_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
 
12
  {
13
+ /**
14
+ * Constructeur
15
+ *
16
+ * @return void
17
+ */
18
+ protected function _construct()
19
  {
20
  $this->_init('socolissimosimplicite/transaction');
21
  }
22
+ }
app/code/community/LaPoste/SoColissimoSimplicite/Model/Observer.php CHANGED
@@ -1,107 +1,128 @@
1
  <?php
2
  /**
3
- * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- */
11
- /**
12
- *
13
- * Observer SO Colissimo
14
  */
15
  class LaPoste_SoColissimoSimplicite_Model_Observer
16
  {
17
- const modRDV = 'RDV';
18
- const modDOM = 'DOM';
 
 
 
 
 
19
 
20
  /**
21
  * Tableau de correspondance les champs simples retournés par SO COlissimo
22
- * et les champs d'une adresse de livraison dans Magento.
 
23
  * @var array
24
  */
25
- protected $_mapFields = array (
26
  'CENAME' => 'lastname',
27
  'CEFIRSTNAME' => 'firstname',
28
  'CETOWN' => 'city',
29
  'CEZIPCODE' => 'postcode',
30
  'CEEMAIL' => 'email',
 
31
  'CEPHONENUMBER' => 'telephone',
32
  'CECOMPANYNAME' => 'company',
33
- 'DYFORWARDINGCHARGES' => 'base_shipping_amount',
34
  'PRZIPCODE' => 'postcode',
35
- 'PRTOWN' => 'city'
 
36
  );
37
 
38
  /**
39
- * Met à jour les données de livraison à partir des infos récupérées depuis
40
- * SO Colissimo.
41
- * L'adresse de livraison est automatiquement réinitialisée avec celle par défaut
42
- * du client dès qu'il est sur le tunnel de commande, c'est pourquoi cette mise
43
- * a jour est effectué APRÈS cette réinitialisation.
44
  * @param Varien_Event_Observer $observer
 
45
  */
46
  public function setShippingAddressWithSoColissimoAddress($observer)
47
  {
 
48
  $checkoutSession = Mage::getSingleton('checkout/session');
49
 
50
  $transactionId = $checkoutSession->getData('socolissimosimplicite_checkout_onepage_transactionid');
51
  $nextStep = $checkoutSession->getData('socolissimosimplicite_checkout_onepage_nextstep');
 
52
 
53
- //on regarde s'il existe une transaction avec SO Colissimo en session et si on cherche à afficher
54
- //le choix du mode de paiement
55
  if ($transactionId && $nextStep == 'payment') {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
 
57
- //on regarde s'il s'agit d'une adresse de livraison
58
- $shippingAddress = Mage::getModel('checkout/cart')
59
- ->getQuote()->getShippingAddress();
60
-
61
- if ($shippingAddress) {
62
- //les données de l'adresse de livraison sont réinitialisées avec l'adresse par défaut
63
- //du client automatiquement lorsque l'on est sur le tunnel de commande,
64
- //il faut donc mettre à jour les informations de livraison récupérées
65
- //depuis SO Colissimo
66
- $shippingData = $checkoutSession->getData('socolissimosimplicite_shipping_data');
67
-
68
- $this->_updateQuoteAndShippingAddress($shippingAddress, $shippingData);
 
 
69
  }
70
  }
71
  }
72
 
 
 
 
 
 
 
73
  public function clearCheckoutSession($observer)
74
  {
75
- $checkoutSession = Mage::getSingleton('checkout/session');
76
-
77
- if ($checkoutSession) {
78
- $checkoutSession->unsetData('socolissimosimplicite_checkout_onepage_nextstep');
79
- $checkoutSession->unsetData('socolissimosimplicite_checkout_onepage_transactionid');
80
- $checkoutSession->unsetData('socolissimosimplicite_shipping_data');
81
- $checkoutSession->unsetData('socolissimosimplicite_from_socolissimo');
82
- $checkoutSession->unsetData('socolissimosimplicite_new_address_from_socolissimo');
83
- // nettoie les variables servant à corriger le bug de frais de livraison sur rdv
84
- $checkoutSession->unsetData('socolissimosimplicite_mode_rdv');
85
- $checkoutSession->unsetData('socolissimosimplicite_flag');
86
- $checkoutSession->unsetData('socolissimosimplicite_shipping_amount');
87
- }
88
  }
89
 
90
  /**
91
- *
92
  * Sauvegarde les donnees de la commande propre a So Colissimo
93
- * @param $observer
 
 
94
  */
95
-
96
  public function addSocoAttributesToOrder($observer)
97
  {
98
  try {
 
99
  $checkoutSession = Mage::getSingleton('checkout/session');
100
  $shippingData = $checkoutSession->getData('socolissimosimplicite_shipping_data');
101
 
102
- //on ne fait le traitement que si le mode d'expedition est socolissimo (et donc qu'on a recupere les donnees de socolissimo)
 
103
  if (isset($shippingData) && count($shippingData) > 0) {
104
-
105
  if (isset($shippingData['DELIVERYMODE'])) {
106
  $observer->getEvent()->getOrder()->setSocoProductCode($shippingData['DELIVERYMODE']);
107
  }
@@ -144,22 +165,25 @@ class LaPoste_SoColissimoSimplicite_Model_Observer
144
  }
145
 
146
  /**
147
- * Met à jour les données sur l'adresse de livraison à partir des
148
- * informations retournées par SO Colissimo.
 
149
  * @param Mage_Sales_Model_Quote_Address $shippingAddress
150
- * @param array $shippingData
151
- * @todo replace this cause it's executed at each request !
152
  */
153
  protected function _updateQuoteAndShippingAddress($shippingAddress, $shippingData)
154
  {
 
155
  $checkoutSession = Mage::getSingleton('checkout/session');
 
156
  if ($checkoutSession->hasData('socolissimosimplicite_new_address_from_socolissimo')) {
 
 
157
 
158
- // on traite la nouvelle addresse une seule fois
159
  $checkoutSession->unsetData('socolissimosimplicite_new_address_from_socolissimo');
160
 
161
- $helper = Mage::helper('socolissimosimplicite');
162
-
163
  $arrayData = array();
164
  $arrayData['customer_address_id'] = null;
165
 
@@ -169,18 +193,17 @@ class LaPoste_SoColissimoSimplicite_Model_Observer
169
  foreach ($shippingData as $fieldSoCo => $valueSoCo) {
170
  if (array_key_exists($fieldSoCo, $this->_mapFields)) {
171
  $fieldMagento = $this->_mapFields[$fieldSoCo];
172
- // SoCo renvoie de l'iso8859-1, on encode en utf8
173
- $arrayData[$fieldMagento] = utf8_encode($valueSoCo);
174
  } elseif ($valueSoCo) {
175
- $shippingValue = utf8_encode($shippingData[$fieldSoCo]);
176
  switch ($fieldSoCo) {
 
177
  case 'CECIVILITY':
178
  $arrayData['prefix'] = $helper->getPrefixForMagento($shippingValue);
179
  break;
180
 
181
- //cas particulier des informations de rue, complément d'adresse etc.
182
-
183
- //cas livraison à domicile
184
  case 'CEADRESS3':
185
  $street['0'] = $shippingValue; //mis en 1er car numéro de rue obligatoire côté SoCo
186
  break;
@@ -194,7 +217,7 @@ class LaPoste_SoColissimoSimplicite_Model_Observer
194
  $street['3'] = $shippingValue;
195
  break;
196
 
197
- //cas livraison en point relai
198
  case 'PRNAME':
199
  $street['0'] = $shippingValue;
200
  break;
@@ -208,7 +231,7 @@ class LaPoste_SoColissimoSimplicite_Model_Observer
208
  $street['3'] = $shippingValue;
209
  break;
210
 
211
- //autres informations sur la livraison
212
  case 'CEENTRYPHONE':
213
  $customerNotesArray['0'] = $helper->__('Interphone').' : '.$shippingValue;
214
  break;
@@ -228,47 +251,30 @@ class LaPoste_SoColissimoSimplicite_Model_Observer
228
  }
229
  }
230
 
231
- if (! empty($customerNotesArray)) {
232
  $arrayData['customer_notes'] = implode("\n", $customerNotesArray);
233
  }
234
 
235
- //recuperation du mode de livraison choisi
236
- $deliveryMode = isset($shippingData['DELIVERYMODE'])? $shippingData['DELIVERYMODE'] : null;
237
 
238
  // sauvegarde dans le carnet d'adresse seulement pour le mode domicile
239
- if ($deliveryMode != self::modDOM) {
240
  $arrayData['save_in_address_book'] = 0;
241
  }
242
 
243
- //en mode RDV, on ajoute dans l'adresse la notion de rendez-vous
244
- if ($deliveryMode == self::modRDV) {
245
- if (isset($street['3'])) {
246
- $street['3'] .= ' '.$helper->__('livraison sur rendez-vous');
247
- } else {
248
- $street['3'] = $helper->__('livraison sur rendez-vous');
249
- }
250
-
251
- // marquer le mode RDV au niveau de l'adresse (calcul dépend du mode)
252
- $arrayData['soco_mode_rdv'] = true;
253
- } else {
254
- // marquer le mode normal au niveau de l'adresse (calcul dépend du mode)
255
- $arrayData['soco_mode_rdv'] = false;
256
- }
257
 
258
  // sauvegarder l'adresse
259
  $shippingAddress->addData($arrayData);
260
  $shippingAddress->setStreet($street);
261
 
262
- // relancer le calcul du prix (modification du shipping amount via socolissimo)
263
  // voir getCalculatedPrice() de ShippingMethod
264
  $shippingAddress->setCollectShippingRates(true);
265
  $shippingAddress->collectShippingRates();
266
-
267
- $shippingAddress->save();
268
-
269
- // sauvegarde rdv et montant livraison dans la session
270
- $checkoutSession->setData('socolissimosimplicite_shipping_amount', $shippingData['DYFORWARDINGCHARGES']);
271
- $checkoutSession->setData('socolissimosimplicite_mode_rdv', self::modRDV);
272
  }
273
  }
274
  }
1
  <?php
2
  /**
3
+ * Observer So Colissimo
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
 
 
 
 
10
  */
11
  class LaPoste_SoColissimoSimplicite_Model_Observer
12
  {
13
+ /**
14
+ * Modes de livraisons
15
+ *
16
+ * @var string
17
+ */
18
+ const MODE_RDV = 'RDV';
19
+ const MODE_DOM = 'DOM';
20
 
21
  /**
22
  * Tableau de correspondance les champs simples retournés par SO COlissimo
23
+ * et les champs d'une adresse de livraison dans Magento
24
+ *
25
  * @var array
26
  */
27
+ protected $_mapFields = array(
28
  'CENAME' => 'lastname',
29
  'CEFIRSTNAME' => 'firstname',
30
  'CETOWN' => 'city',
31
  'CEZIPCODE' => 'postcode',
32
  'CEEMAIL' => 'email',
33
+ 'CEPAYS' => 'country_id',
34
  'CEPHONENUMBER' => 'telephone',
35
  'CECOMPANYNAME' => 'company',
 
36
  'PRZIPCODE' => 'postcode',
37
+ 'PRTOWN' => 'city',
38
+
39
  );
40
 
41
  /**
42
+ * Met à jour les données de livraison à partir des infos récupérées depuis So Colissimo
43
+ * L'adresse de livraison est automatiquement réinitialisée avec celle par défaut du client
44
+ * dès qu'il est sur le tunnel de commande, c'est pourquoi cette mise à jour est effectué APRÈS cette réinitialisation
45
+ *
 
46
  * @param Varien_Event_Observer $observer
47
+ * @return void
48
  */
49
  public function setShippingAddressWithSoColissimoAddress($observer)
50
  {
51
+ /* @var $checkoutSession Mage_Checkout_Model_Session */
52
  $checkoutSession = Mage::getSingleton('checkout/session');
53
 
54
  $transactionId = $checkoutSession->getData('socolissimosimplicite_checkout_onepage_transactionid');
55
  $nextStep = $checkoutSession->getData('socolissimosimplicite_checkout_onepage_nextstep');
56
+ $quoteTotalBeforeRedirection = $checkoutSession->getData('socolissimosimplicite_quote_subtotal');
57
 
58
+ // on regarde s'il existe une transaction avec So Colissimo en session
59
+ // et si on cherche à afficher le choix du mode de paiement
60
  if ($transactionId && $nextStep == 'payment') {
61
+ // si l'utilisateur a modifié le total de la quote pendant qu'il était dans la plateforme So Colissimo
62
+ // (via un autre onglet par exemple), on recharge le tunnel de commande (comportement natif de l'onglet paiement)
63
+ if (!$checkoutSession->hasData('socolissimosimplicite_available_shipping_amounts')
64
+ || !$checkoutSession->hasData('socolissimosimplicite_quote_subtotal')
65
+ || $checkoutSession->getQuote()->getSubtotal() != $quoteTotalBeforeRedirection) {
66
+
67
+ /* @var $helper LaPoste_SoColissimoSimplicite_Helper_Data */
68
+ $helper = Mage::helper('socolissimosimplicite');
69
+ $helper->clearCheckoutSession();
70
+ Mage::app()->getFrontController()->getResponse()->setRedirect($helper->getRedirectUrlOnError());
71
+ } else {
72
+ /* @var $billingAddress Mage_Sales_Model_Quote_Address */
73
+ $billingAddress = $checkoutSession->getQuote()->getBillingAddress();
74
+ if ($billingAddress) {
75
+ // restaurer l'adresse de facturation qui a été réinitialisée à cause du rechargement de la page
76
+ $billingAddress->setData($checkoutSession->getData('socolissimosimplicite_billing_address'));
77
+ $checkoutSession->unsetData('socolissimosimplicite_billing_address');
78
+ $billingAddress->save();
79
+ }
80
 
81
+ /* @var $shippingAddress Mage_Sales_Model_Quote_Address */
82
+ $shippingAddress = $checkoutSession->getQuote()->getShippingAddress();
83
+
84
+ if ($shippingAddress) {
85
+ // restaurer l'adresse de livraison qui a été réinitialisée à cause du rechargement de la page
86
+ $shippingAddress->setData($checkoutSession->getData('socolissimosimplicite_shipping_address'));
87
+ $checkoutSession->unsetData('socolissimosimplicite_shipping_address');
88
+ // les données de l'adresse de livraison sont réinitialisées avec l'adresse par défaut du client
89
+ // lorsque l'on est sur le tunnel de commande, il faut donc mettre à jour les informations
90
+ // de livraison récupérées depuis So Colissimo
91
+ $shippingData = $checkoutSession->getData('socolissimosimplicite_shipping_data');
92
+ $this->_updateQuoteAndShippingAddress($shippingAddress, $shippingData);
93
+ $shippingAddress->save();
94
+ }
95
  }
96
  }
97
  }
98
 
99
+ /**
100
+ * Nettoie la session du tunnel de commande
101
+ *
102
+ * @param Varien_Event_Observer $observer
103
+ * @return void
104
+ */
105
  public function clearCheckoutSession($observer)
106
  {
107
+ Mage::helper('socolissimosimplicite')->clearCheckoutSession();
 
 
 
 
 
 
 
 
 
 
 
 
108
  }
109
 
110
  /**
 
111
  * Sauvegarde les donnees de la commande propre a So Colissimo
112
+ *
113
+ * @param Varien_Event_Observer $observer
114
+ * @return void
115
  */
 
116
  public function addSocoAttributesToOrder($observer)
117
  {
118
  try {
119
+ /* @var $checkoutSession Mage_Checkout_Model_Session */
120
  $checkoutSession = Mage::getSingleton('checkout/session');
121
  $shippingData = $checkoutSession->getData('socolissimosimplicite_shipping_data');
122
 
123
+ // on ne fait le traitement que si le mode d'expedition est socolissimo
124
+ // (et donc qu'on a recupere les donnees de socolissimo)
125
  if (isset($shippingData) && count($shippingData) > 0) {
 
126
  if (isset($shippingData['DELIVERYMODE'])) {
127
  $observer->getEvent()->getOrder()->setSocoProductCode($shippingData['DELIVERYMODE']);
128
  }
165
  }
166
 
167
  /**
168
+ * Met à jour les données sur l'adresse de livraison à partir des informations retournées par So Colissimo
169
+ *
170
+ * @todo à remplacer car c'est exécuté à chaque requête
171
  * @param Mage_Sales_Model_Quote_Address $shippingAddress
172
+ * @param array $shippingData
173
+ * @return void
174
  */
175
  protected function _updateQuoteAndShippingAddress($shippingAddress, $shippingData)
176
  {
177
+ /* @var $checkoutSession Mage_Checkout_Model_Session */
178
  $checkoutSession = Mage::getSingleton('checkout/session');
179
+
180
  if ($checkoutSession->hasData('socolissimosimplicite_new_address_from_socolissimo')) {
181
+ /* @var $helper LaPoste_SoColissimoSimplicite_Helper_Data */
182
+ $helper = Mage::helper('socolissimosimplicite');
183
 
184
+ // on traite la nouvelle addresse une seule fois
185
  $checkoutSession->unsetData('socolissimosimplicite_new_address_from_socolissimo');
186
 
 
 
187
  $arrayData = array();
188
  $arrayData['customer_address_id'] = null;
189
 
193
  foreach ($shippingData as $fieldSoCo => $valueSoCo) {
194
  if (array_key_exists($fieldSoCo, $this->_mapFields)) {
195
  $fieldMagento = $this->_mapFields[$fieldSoCo];
196
+ // So Colissimo renvoie de l'iso8859-1, on encode en utf8
197
+ $arrayData[$fieldMagento] = $valueSoCo;
198
  } elseif ($valueSoCo) {
199
+ $shippingValue = $shippingData[$fieldSoCo];
200
  switch ($fieldSoCo) {
201
+ // cas civilité
202
  case 'CECIVILITY':
203
  $arrayData['prefix'] = $helper->getPrefixForMagento($shippingValue);
204
  break;
205
 
206
+ // cas livraison à domicile
 
 
207
  case 'CEADRESS3':
208
  $street['0'] = $shippingValue; //mis en 1er car numéro de rue obligatoire côté SoCo
209
  break;
217
  $street['3'] = $shippingValue;
218
  break;
219
 
220
+ // cas livraison en point relais
221
  case 'PRNAME':
222
  $street['0'] = $shippingValue;
223
  break;
231
  $street['3'] = $shippingValue;
232
  break;
233
 
234
+ // autres informations sur la livraison
235
  case 'CEENTRYPHONE':
236
  $customerNotesArray['0'] = $helper->__('Interphone').' : '.$shippingValue;
237
  break;
251
  }
252
  }
253
 
254
+ if (!empty($customerNotesArray)) {
255
  $arrayData['customer_notes'] = implode("\n", $customerNotesArray);
256
  }
257
 
258
+ // récuperation du mode de livraison choisi
259
+ $deliveryMode = isset($shippingData['DELIVERYMODE'])? $shippingData['DELIVERYMODE'] : self::MODE_DOM;
260
 
261
  // sauvegarde dans le carnet d'adresse seulement pour le mode domicile
262
+ if ($deliveryMode !== self::MODE_DOM) {
263
  $arrayData['save_in_address_book'] = 0;
264
  }
265
 
266
+ // sauvegarde du mode et du montant de livraison dans la session
267
+ $checkoutSession->setData('socolissimosimplicite_chosen_delivery_mode', $deliveryMode);
268
+ $checkoutSession->setData('socolissimosimplicite_chosen_shipping_amount', $shippingData['DYFORWARDINGCHARGES']);
 
 
 
 
 
 
 
 
 
 
 
269
 
270
  // sauvegarder l'adresse
271
  $shippingAddress->addData($arrayData);
272
  $shippingAddress->setStreet($street);
273
 
274
+ // relancer le calcul du prix (puisqu'il a pu changé depuis le retour de la plateforme So Colissimo)
275
  // voir getCalculatedPrice() de ShippingMethod
276
  $shippingAddress->setCollectShippingRates(true);
277
  $shippingAddress->collectShippingRates();
 
 
 
 
 
 
278
  }
279
  }
280
  }
app/code/community/LaPoste/SoColissimoSimplicite/Model/System/Config/Source/Shipping/Amountbasetype.php CHANGED
@@ -1,29 +1,32 @@
1
  <?php
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
-
12
-
13
  class LaPoste_SoColissimoSimplicite_Model_System_Config_Source_Shipping_Amountbasetype
14
  {
 
 
 
 
 
15
  public function toOptionArray()
16
  {
17
  return array(
18
  array(
19
- 'value'=>'fixed',
20
- 'label'=>Mage::helper('socolissimosimplicite')->__('Tarif unique')),
21
  array(
22
- 'value'=>'per_weight',
23
- 'label'=>Mage::helper('socolissimosimplicite')->__('Tarif selon poids')),
24
  array(
25
- 'value'=>'per_amount',
26
- 'label'=>Mage::helper('socolissimosimplicite')->__('Tarif selon sous-total du panier')),
27
  );
28
  }
29
  }
1
  <?php
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
+ *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
 
 
11
  class LaPoste_SoColissimoSimplicite_Model_System_Config_Source_Shipping_Amountbasetype
12
  {
13
+ /**
14
+ * Valorise les options de la liste déroulante
15
+ *
16
+ * @return array
17
+ */
18
  public function toOptionArray()
19
  {
20
  return array(
21
  array(
22
+ 'value' => 'fixed',
23
+ 'label' => Mage::helper('socolissimosimplicite')->__('Tarif unique')),
24
  array(
25
+ 'value' => 'per_weight',
26
+ 'label' => Mage::helper('socolissimosimplicite')->__('Tarif selon poids')),
27
  array(
28
+ 'value' => 'per_amount',
29
+ 'label' => Mage::helper('socolissimosimplicite')->__('Tarif selon sous-total du panier')),
30
  );
31
  }
32
  }
app/code/community/LaPoste/SoColissimoSimplicite/Model/Transaction.php CHANGED
@@ -1,24 +1,26 @@
1
  <?php
2
  /**
3
- * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- */
11
- /**
12
- *
13
- * Transaction entre Magento et SO Colissimo
14
  */
15
  class LaPoste_SoColissimoSimplicite_Model_Transaction extends Mage_Core_Model_Abstract
16
  {
 
 
 
 
 
17
  protected $_helper;
18
 
19
  /**
20
  * Constructeur par défaut
21
- * @return LaPoste_SoColissimoSimplicite_Model_Transaction
 
22
  */
23
  public function _construct()
24
  {
@@ -27,7 +29,8 @@ class LaPoste_SoColissimoSimplicite_Model_Transaction extends Mage_Core_Model_Ab
27
  }
28
 
29
  /**
30
- * Retourne le helper principal du module.
 
31
  * @return LaPoste_SoColissimoSimplicite_Helper_Data
32
  */
33
  public function helper()
@@ -35,12 +38,13 @@ class LaPoste_SoColissimoSimplicite_Model_Transaction extends Mage_Core_Model_Ab
35
  if (is_null($this->_helper)) {
36
  $this->_helper = Mage::helper('socolissimosimplicite');
37
  }
 
38
  return $this->_helper;
39
  }
40
 
41
  /**
42
- * Crée et sauvegarde les données de la transaction avec SO Colissimo
43
- * (avant l'accès à la plateforme).
44
  * @param Mage_Sales_Model_Quote_Address $shippingAddress
45
  * @return LaPoste_SoColissimoSimplicite_Model_Transaction
46
  */
@@ -52,19 +56,19 @@ class LaPoste_SoColissimoSimplicite_Model_Transaction extends Mage_Core_Model_Ab
52
 
53
  try {
54
  $this->setQuoteId($shippingAddress->getQuoteId());
55
- $this->save(); //1ère sauvegarde pour récupérer le transaction_id pour la signature
56
 
57
  $this->setSignature($this->_getGeneratedSignature($shippingAddress));
58
  $this->save();
59
-
60
  } catch (Exception $e) {
61
  throw new Exception($e);
62
  }
 
63
  return $this;
64
  }
65
 
66
  /**
67
- * Génère la signature requise pour l'accès à la plateforme SO Colissimo (front-office).
68
  *
69
  * SPECIFICATIONS FOURNIES PAR LA POSTE :
70
  *
@@ -82,88 +86,29 @@ class LaPoste_SoColissimoSimplicite_Model_Transaction extends Mage_Core_Model_Ab
82
  * autorisé. L’internaute sera redirigé vers l'url retour Echec. Un code erreur sera
83
  * transmis.
84
  *
85
- * Il s’agit d’appliquer l’algorithme SHA sur la concaténation des champs inclus dans
86
- * le tableau $data. La clé SHA doit être également concaténée à la fin de la chaîne.
87
  *
88
- * Certains des champs ci-dessus ne sont pas obligatoires. S’ils ne sont pas transmis
89
- * par le site web, ils ne doivent pas être pris en compte dans le calcul de la
90
- * signature.
91
  * FIN SPECIFICATIONS
92
  *
93
  * @param LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod $method
94
  * @param Mage_Sales_Model_Quote_Address $shippingAddress
95
- * @todo when signature is calculated with strtolower($stringToConvert),
96
- * access to colissimo is forbidden (error code 007 signature invalide)
97
  * @return string signature de 160 bits (40 caractères)
98
  */
99
  protected function _getGeneratedSignature($shippingAddress)
100
  {
101
- // transfer phone number only if its a cell phone
102
- // Same code is used in form.phtml
103
- $phone = $shippingAddress->getTelephone();
104
- $phone = substr($phone, 0, 2);
105
- if (($phone == '06') || ($phone == '07')) {
106
- $phone = $shippingAddress->getTelephone();
107
- } else {
108
- $phone = '';
109
- }
110
-
111
  $stringToConvert = '';
112
 
113
- $shippingPrice = ($shippingAddress->getFreeShipping() === '1') ? 0 : $shippingAddress->getShippingAmount();
114
- $data = array(
115
- 'pudoFOId'=>$this->helper()->getAccountId(),
116
- 'ceName'=>$shippingAddress->getLastname(),
117
- 'dyForwardingCharges'=>$this->helper()->getFormatedShippingPrice($shippingPrice),
118
- 'trClientNumber'=>$shippingAddress->getCustomerId(),
119
- 'trOrderNumber'=>$shippingAddress->getQuoteId(),
120
- 'orderId'=>$this->getId(),
121
- 'numVersion'=>$this->helper()->getNumVersion(),
122
- 'ceCivility'=>$this->helper()->getPrefixForSoColissimo($shippingAddress->getPrefix()),
123
- 'ceFirstName'=>$shippingAddress->getFirstname(),
124
- 'ceCompanyName'=>$shippingAddress->getCompany(),
125
- 'ceAdress1'=>$this->getShippingAddressStreet($shippingAddress, 2),
126
- 'ceAdress2'=>$this->getShippingAddressStreet($shippingAddress, 3),
127
- 'ceAdress3'=>$this->getShippingAddressStreet($shippingAddress, 1),
128
- 'ceAdress4'=>$this->getShippingAddressStreet($shippingAddress, 4),
129
- 'ceZipCode'=>$shippingAddress->getPostcode(),
130
- 'ceTown'=>$shippingAddress->getCity(),
131
- 'ceEmail'=>$shippingAddress->getEmail(),
132
- 'cePhoneNumber'=>$phone,
133
- 'trReturnUrlKo'=>$this->helper()->getFailureUrl(),
134
- 'trReturnUrlOk'=>$this->helper()->getSuccessUrl(),
135
- 'encryptionKey'=>$this->helper()->getEncryptionKey(),
136
- );
137
-
138
- // Ne renseigner le poids que s'il est supérieur à 0 (pour éviter un problème de signature invalide)
139
- // On l'insère après cePhoneNumber, à la 19e position (la position est importante pour le calcul de la signature)
140
- if ((float)$shippingAddress->getWeight() > 0) {
141
- $calculatedWeight = $this->helper()->getFormatedWeight($shippingAddress->getWeight());
142
- $data = array_slice($data, 0, 18, true) + array('dyWeight' => $calculatedWeight) + array_slice($data, 18, null, true);
143
- }
144
-
145
- foreach ($data as $field=>$value) {
146
- if (!empty($value)) {
147
  $stringToConvert .= utf8_decode($value);
148
  }
149
  }
150
 
151
  return sha1($stringToConvert);
152
  }
153
-
154
- /**
155
- * Retourne la ligne n° $line des informations (rue, étage, immeuble, etc.) de l'adresse
156
- * de livraison de la commande en cours.
157
- * @param int $line
158
- * @return string
159
- */
160
- public function getShippingAddressStreet($shippingAddress, $line = 1)
161
- {
162
- $arrayStreet = $shippingAddress->getStreet();
163
- $streetLine = '';
164
- if (0 < $line && $line <= count($arrayStreet)) {
165
- $streetLine = $arrayStreet[$line-1];
166
- }
167
- return $streetLine;
168
- }
169
- }
1
  <?php
2
  /**
3
+ * Transaction entre Magento et So Colissimo
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
 
 
 
 
10
  */
11
  class LaPoste_SoColissimoSimplicite_Model_Transaction extends Mage_Core_Model_Abstract
12
  {
13
+ /**
14
+ * Module helper
15
+ *
16
+ * @var LaPoste_SoColissimoSimplicite_Helper_Data
17
+ */
18
  protected $_helper;
19
 
20
  /**
21
  * Constructeur par défaut
22
+ *
23
+ * @return void
24
  */
25
  public function _construct()
26
  {
29
  }
30
 
31
  /**
32
+ * Retourne le helper principal du module
33
+ *
34
  * @return LaPoste_SoColissimoSimplicite_Helper_Data
35
  */
36
  public function helper()
38
  if (is_null($this->_helper)) {
39
  $this->_helper = Mage::helper('socolissimosimplicite');
40
  }
41
+
42
  return $this->_helper;
43
  }
44
 
45
  /**
46
+ * Crée et sauvegarde les données de la transaction avec So Colissimo (avant l'accès à la plateforme)
47
+ *
48
  * @param Mage_Sales_Model_Quote_Address $shippingAddress
49
  * @return LaPoste_SoColissimoSimplicite_Model_Transaction
50
  */
56
 
57
  try {
58
  $this->setQuoteId($shippingAddress->getQuoteId());
59
+ $this->save(); // 1ère sauvegarde pour récupérer le transaction_id pour la signature
60
 
61
  $this->setSignature($this->_getGeneratedSignature($shippingAddress));
62
  $this->save();
 
63
  } catch (Exception $e) {
64
  throw new Exception($e);
65
  }
66
+
67
  return $this;
68
  }
69
 
70
  /**
71
+ * Génère la signature requise pour l'accès à la plateforme So Colissimo (front-office).
72
  *
73
  * SPECIFICATIONS FOURNIES PAR LA POSTE :
74
  *
86
  * autorisé. L’internaute sera redirigé vers l'url retour Echec. Un code erreur sera
87
  * transmis.
88
  *
89
+ * Il s’agit d’appliquer l’algorithme SHA sur la concaténation des champs composant
90
+ * la signature. La clé SHA doit être également concaténée à la fin de la chaîne.
91
  *
92
+ * Certains des champs ci-dessous ne sont pas obligatoires. S’ils ne sont pas transmis
93
+ * par le formulaire d'envoi des données à la plateforme, ils ne doivent pas être pris
94
+ * en compte dans le calcul de la signature.
95
  * FIN SPECIFICATIONS
96
  *
97
  * @param LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod $method
98
  * @param Mage_Sales_Model_Quote_Address $shippingAddress
 
 
99
  * @return string signature de 160 bits (40 caractères)
100
  */
101
  protected function _getGeneratedSignature($shippingAddress)
102
  {
 
 
 
 
 
 
 
 
 
 
103
  $stringToConvert = '';
104
 
105
+ foreach ($this->helper()->getFieldsToSend($this->getId(), $shippingAddress) as $value) {
106
+ // on ignore les champs vides (pas obligatoire mais cela permet d'envoyer moins de données dans le form)
107
+ if ($value !== null && $value !== '' && $value !== false) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  $stringToConvert .= utf8_decode($value);
109
  }
110
  }
111
 
112
  return sha1($stringToConvert);
113
  }
114
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/LaPoste/SoColissimoSimplicite/Test/Model/Carrier/ShippingMethodTest.php CHANGED
@@ -2,34 +2,36 @@
2
  require_once 'PHPUnit/Framework.php';
3
  require_once 'app/Mage.php';
4
  /**
5
- * Aims to test shipping method calculated price
6
  *
7
- * @category LaPoste
8
- * @package LaPoste_SoColissimoSimplicite
9
- * @see LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
10
- * @author nicolas.dupont@smile.fr
 
11
  */
12
  class LaPoste_SoColissimoSimplicite_Test_Model_Carrier_ShippingMethodTest extends PHPUnit_Framework_TestCase
13
  {
14
-
15
  private $_setup;
16
 
17
  /**
18
- * Constructor
 
 
19
  */
20
  public function __construct()
21
  {
22
  Mage::app('default');
23
- // initialize setup
24
  if (version_compare(Mage::getVersion(), '1.3.2.4', '>')) {
25
  $this->_setup = Mage::getModel('core/resource_setup');
26
- } else {
27
- // TODO: how to initialize setup for v1.3 ?
28
  }
29
  }
30
 
31
  /**
32
- * Prepare test methods
 
 
33
  */
34
  public function setUp()
35
  {
@@ -47,14 +49,14 @@ class LaPoste_SoColissimoSimplicite_Test_Model_Carrier_ShippingMethodTest extend
47
  $this->setConfigData('carriers/socolissimosimplicite/sallowspecific', '1');
48
  $this->setConfigData('carriers/socolissimosimplicite/specificcountry', 'FR');
49
  $this->setConfigData('carriers/socolissimosimplicite/sort_order', '1');
50
-
51
- // Mage::app('default')->cleanCache();
52
- // Mage::app('default')->getStore()->resetConfig();
53
-
54
  }
55
 
56
  /**
57
- * Utility function which aims to set up config data depends on Magento version
 
 
 
 
58
  */
59
  private function setConfigData($path, $value)
60
  {
@@ -62,16 +64,17 @@ class LaPoste_SoColissimoSimplicite_Test_Model_Carrier_ShippingMethodTest extend
62
  }
63
 
64
  /**
65
- * Test collect rates method
 
 
66
  */
67
  public function testCollectRatesPerAmount()
68
  {
69
- // set up per_amount
70
  $this->setConfigData('carriers/socolissimosimplicite/minquotepriceforfree', '200');
71
  $this->setConfigData('carriers/socolissimosimplicite/amountbasetype', 'per_amount');
72
  $this->setConfigData('carriers/socolissimosimplicite/amountcalculation', '{"0":"3","50":"5","100":"8","250":"0"}');
73
 
74
- // price < 50€ -> 3
75
  $total = 35.99;
76
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
77
  $request = new Mage_Shipping_Model_Rate_Request();
@@ -85,7 +88,7 @@ class LaPoste_SoColissimoSimplicite_Test_Model_Carrier_ShippingMethodTest extend
85
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
86
  $this->assertEquals($rate->getData('price'), 3);
87
 
88
- // 50€ < price < 100€ -> 5
89
  $total = 99.99;
90
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
91
  $request = new Mage_Shipping_Model_Rate_Request();
@@ -99,7 +102,7 @@ class LaPoste_SoColissimoSimplicite_Test_Model_Carrier_ShippingMethodTest extend
99
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
100
  $this->assertEquals($rate->getData('price'), 5);
101
 
102
- // 100€ < price < 250€ -> 8
103
  $total = 125.99;
104
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
105
  $request = new Mage_Shipping_Model_Rate_Request();
@@ -113,7 +116,7 @@ class LaPoste_SoColissimoSimplicite_Test_Model_Carrier_ShippingMethodTest extend
113
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
114
  $this->assertEquals($rate->getData('price'), 8);
115
 
116
- // 250€ < price
117
  $total = 250.01;
118
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
119
  $request = new Mage_Shipping_Model_Rate_Request();
@@ -127,7 +130,7 @@ class LaPoste_SoColissimoSimplicite_Test_Model_Carrier_ShippingMethodTest extend
127
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
128
  $this->assertEquals($rate->getData('price'), 0);
129
 
130
- // free shipping if total > 200 -> false, 8
131
  $total = 115.50;
132
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
133
  $request = new Mage_Shipping_Model_Rate_Request();
@@ -141,7 +144,7 @@ class LaPoste_SoColissimoSimplicite_Test_Model_Carrier_ShippingMethodTest extend
141
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
142
  $this->assertEquals($rate->getData('price'), 8);
143
 
144
- // free shipping if total > 200 -> true, 0
145
  $total = 201;
146
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
147
  $request = new Mage_Shipping_Model_Rate_Request();
@@ -155,7 +158,7 @@ class LaPoste_SoColissimoSimplicite_Test_Model_Carrier_ShippingMethodTest extend
155
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
156
  $this->assertEquals($rate->getData('price'), 0);
157
 
158
- // free shipping by cart rule (free_shipping param in $request)
159
  $total = 25;
160
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
161
  $request = new Mage_Shipping_Model_Rate_Request();
@@ -169,34 +172,4 @@ class LaPoste_SoColissimoSimplicite_Test_Model_Carrier_ShippingMethodTest extend
169
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
170
  $this->assertEquals($rate->getData('price'), 0);
171
  }
172
-
173
- /**
174
- * Test collect rates method
175
- * TODO: set up problem to fix !!
176
- *
177
- public function testCollectRatesPerWeight()
178
- {
179
- // set up per_amount
180
- $this->setConfigData('carriers/socolissimosimplicite/minquotepriceforfree', '200');
181
- $this->setConfigData('carriers/socolissimosimplicite/amountbasetype', 'per_weight');
182
- $this->setConfigData('carriers/socolissimosimplicite/amountcalculation', '{"0":"2.90","0.5":"4.50","5":"8","10":"14"}');
183
- //Mage::app('default')->cleanCache();
184
-
185
- // price < 0.5Kg -> 2.90€
186
- $weight = 0.3;
187
- $total = 35.99;
188
- Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
189
- Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('weight', $weight);
190
- $request = new Mage_Shipping_Model_Rate_Request();
191
- $request->setData(array('package_value_with_discount' => $total));
192
- $carrier = new LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod();
193
- $result = $carrier->collectRates($request);
194
- $rates = $result->getAllRates();
195
- $this->assertEquals(count($rates), 1);
196
- $rate = current($rates);
197
- $this->assertNotNull($rate);
198
- $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
199
- $this->assertEquals($rate->getData('price'), 2.90);
200
- }*/
201
-
202
  }
2
  require_once 'PHPUnit/Framework.php';
3
  require_once 'app/Mage.php';
4
  /**
5
+ * Test de la méthode de calcul des prix
6
  *
7
+ * @category LaPoste
8
+ * @package LaPoste_SoColissimoSimplicite
9
+ * @copyright Copyright (c) 2010 La Poste
10
+ * @author Smile (http://www.smile.fr)
11
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
12
  */
13
  class LaPoste_SoColissimoSimplicite_Test_Model_Carrier_ShippingMethodTest extends PHPUnit_Framework_TestCase
14
  {
 
15
  private $_setup;
16
 
17
  /**
18
+ * Constructeur
19
+ *
20
+ * @return void
21
  */
22
  public function __construct()
23
  {
24
  Mage::app('default');
25
+ // initialisation du setup
26
  if (version_compare(Mage::getVersion(), '1.3.2.4', '>')) {
27
  $this->_setup = Mage::getModel('core/resource_setup');
 
 
28
  }
29
  }
30
 
31
  /**
32
+ * Préparation des tests
33
+ *
34
+ * @return void
35
  */
36
  public function setUp()
37
  {
49
  $this->setConfigData('carriers/socolissimosimplicite/sallowspecific', '1');
50
  $this->setConfigData('carriers/socolissimosimplicite/specificcountry', 'FR');
51
  $this->setConfigData('carriers/socolissimosimplicite/sort_order', '1');
 
 
 
 
52
  }
53
 
54
  /**
55
+ * Valorise la configuration en fonction de la version de Magento
56
+ *
57
+ * @param string $path
58
+ * @param string $value
59
+ * @return void
60
  */
61
  private function setConfigData($path, $value)
62
  {
64
  }
65
 
66
  /**
67
+ * Test de la méthode de calcul des montants de livraison
68
+ *
69
+ * @return void
70
  */
71
  public function testCollectRatesPerAmount()
72
  {
 
73
  $this->setConfigData('carriers/socolissimosimplicite/minquotepriceforfree', '200');
74
  $this->setConfigData('carriers/socolissimosimplicite/amountbasetype', 'per_amount');
75
  $this->setConfigData('carriers/socolissimosimplicite/amountcalculation', '{"0":"3","50":"5","100":"8","250":"0"}');
76
 
77
+ // total < 50€ -> 3
78
  $total = 35.99;
79
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
80
  $request = new Mage_Shipping_Model_Rate_Request();
88
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
89
  $this->assertEquals($rate->getData('price'), 3);
90
 
91
+ // 50€ < total < 100€ -> 5
92
  $total = 99.99;
93
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
94
  $request = new Mage_Shipping_Model_Rate_Request();
102
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
103
  $this->assertEquals($rate->getData('price'), 5);
104
 
105
+ // 100€ < total < 250€ -> 8
106
  $total = 125.99;
107
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
108
  $request = new Mage_Shipping_Model_Rate_Request();
116
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
117
  $this->assertEquals($rate->getData('price'), 8);
118
 
119
+ // 250€ < total
120
  $total = 250.01;
121
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
122
  $request = new Mage_Shipping_Model_Rate_Request();
130
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
131
  $this->assertEquals($rate->getData('price'), 0);
132
 
133
+ // frais de livraison gratuit si total > 200 -> false, 8
134
  $total = 115.50;
135
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
136
  $request = new Mage_Shipping_Model_Rate_Request();
144
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
145
  $this->assertEquals($rate->getData('price'), 8);
146
 
147
+ // frais de livraison gratuit si total > 200 -> true, 0
148
  $total = 201;
149
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
150
  $request = new Mage_Shipping_Model_Rate_Request();
158
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
159
  $this->assertEquals($rate->getData('price'), 0);
160
 
161
+ // frais de livraison par règle panier
162
  $total = 25;
163
  Mage::getModel('checkout/cart')->getQuote()->getShippingAddress()->setData('subtotal', $total);
164
  $request = new Mage_Shipping_Model_Rate_Request();
172
  $this->assertEquals($rate->getData('carrier'), 'socolissimosimplicite');
173
  $this->assertEquals($rate->getData('price'), 0);
174
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  }
app/code/community/LaPoste/SoColissimoSimplicite/controllers/FormController.php CHANGED
@@ -1,32 +1,36 @@
1
  <?php
2
  /**
3
- * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- */
11
- /**
12
- * Contrôleur pour les échanges avec l'interface SO Colissimo en front office.
13
  */
14
  class LaPoste_SoColissimoSimplicite_FormController extends Mage_Core_Controller_Front_Action
15
  {
16
  /**
17
- * Soumet le formulaire pour l'accès à SO Colissimo
 
18
  * @todo check postal code and country before send (only France, Monaco et Andorre)
 
19
  */
20
  public function sendAction()
21
  {
 
22
  $checkoutSession = Mage::getSingleton('checkout/session');
23
 
24
- // vérifier la disponibilité de la plateforme, si ce n'est pas le cas,
25
- // sélectionner la livraison à domicile et passer à l'étape suivante
26
  /* @var $helper LaPoste_SoColissimoSimplicite_Helper_Data */
27
- $serviceUnavailableRedirect = null;
28
  $helper = Mage::helper('socolissimosimplicite');
29
- if ($helper->getServiceIsAvailable() and $helper->getServiceIsAvailableUrl() != '') {
 
 
 
 
 
 
 
30
  $serviceAvailable = $helper->checkServiceAvailability();
31
  // passer à l'étape suivante avec le mode livraison à domicile
32
  if (!$serviceAvailable) {
@@ -35,22 +39,24 @@ class LaPoste_SoColissimoSimplicite_FormController extends Mage_Core_Controller_
35
  }
36
  }
37
 
38
- //récupération de l'adresse de livraison de la commande en cours
39
  $shippingAddress = $this->getShippingAddress();
40
 
41
- // on relance le calcul du prix de livraison pour gérer le cas du choix
42
- // du mode RDV puis du retour en arrière et du choix du mode classique
 
 
 
43
  $shippingAddress->setCollectShippingRates(true);
44
  $shippingAddress->collectShippingRates();
45
 
46
- //création d'une nouvelle transaction à partir de l'adresse de livraison.
47
- $transaction = Mage::getModel('socolissimosimplicite/transaction')
48
- ->create($shippingAddress);
49
  $checkoutSession->setData('socolissimosimplicite_checkout_onepage_transactionid', $transaction->getId());
50
 
51
  $this->loadLayout();
52
 
53
- //passage de données à la vue
54
  $this->getLayout()->getBlock('form.socolissimosimplicite')
55
  ->setShippingAddress($shippingAddress)
56
  ->setTransaction($transaction)
@@ -60,20 +66,24 @@ class LaPoste_SoColissimoSimplicite_FormController extends Mage_Core_Controller_
60
  }
61
 
62
  /**
63
- * Succès suite au retour de SO Colissimo
 
64
  * @todo use TRPARAMPLUS to pass / get "payment" ?
65
  * @todo deal with "error code" on validation (data truncation and others)
 
66
  */
67
  public function successAction()
68
  {
69
- // permettre de revenir en arrière pour change le mode de livraison
70
  $checkoutSession = Mage::getSingleton('checkout/session');
 
 
71
  $checkoutSession->unsetData('socolissimosimplicite_from_socolissimo');
72
 
73
  // si l'adresse de livraison a changée, mettre à jour la signature
74
  $this->_updateSignature();
75
 
76
- // sauvegarde des données retournées par SO Colissimo en session (choix du mode de paiement)
77
  $this->_saveSoColissimoData($checkoutSession);
78
 
79
  // sauvegarde de l'étape suivante en session
@@ -83,12 +93,18 @@ class LaPoste_SoColissimoSimplicite_FormController extends Mage_Core_Controller_
83
  }
84
 
85
  /**
86
- * Échec lors de la soumission du formulaire d'accès à SO Colissimo
 
 
87
  */
88
  public function failureAction()
89
  {
90
- // permettre de revenir en arrière pour change le mode de livraison
 
 
91
  $checkoutSession = Mage::getSingleton('checkout/session');
 
 
92
  $checkoutSession->unsetData('socolissimosimplicite_from_socolissimo');
93
 
94
  // sauvegarde de l'étape suivante en session (choix de la méthode de livraison)
@@ -96,7 +112,6 @@ class LaPoste_SoColissimoSimplicite_FormController extends Mage_Core_Controller_
96
 
97
  // récupérer le code erreur et afficher le message correspondant
98
  $errCode = trim($this->getRequest()->getPost('ERRORCODE'));
99
- $helper = Mage::helper('socolissimosimplicite');
100
  $errCodeToLabel = array(
101
  '001' => $helper->__('Identifiant FO manquant'),
102
  '002' => $helper->__('Identifiant FO incorrect'),
@@ -112,32 +127,40 @@ class LaPoste_SoColissimoSimplicite_FormController extends Mage_Core_Controller_
112
  '015' => $helper->__('Serveur applicatif non disponible'),
113
  '016' => $helper->__('SGBD non disponible')
114
  );
115
- // add error message on checkout
116
- if (array_key_exists($errCode, $errCodeToLabel)) {
117
- $msg = $errCodeToLabel[$errCode];
118
- } else {
119
- $msg = $helper->__('Erreur non identifiée');
120
- }
121
  $checkoutSession->addError($msg);
 
122
  $this->_redirect('checkout/cart');
123
- return;
124
  }
125
 
126
  /**
127
- * Retourne l'adresse de livraison de la commande en cours.
128
- * @todo to deal with session lost
 
129
  * @return Mage_Sales_Model_Quote_Address
130
  */
131
  public function getShippingAddress($quoteId = false)
132
  {
133
- $shippingAddress = Mage::getModel('checkout/cart')
134
- ->getQuote()->getShippingAddress();
135
- return $shippingAddress;
136
  }
137
 
138
  /**
139
- * Vérifie si la signature a changée (ie l'adresse de livraison a changée),
140
- * dans ce cas mettre à jour la signature
 
 
 
 
 
 
 
 
 
 
 
 
141
  */
142
  protected function _updateSignature()
143
  {
@@ -146,10 +169,12 @@ class LaPoste_SoColissimoSimplicite_FormController extends Mage_Core_Controller_
146
  if (empty($newSignature)) {
147
  throw new Exception(Mage::helper('socolissimosimplicite')->__("SoColissimo : la signature retournée par colissimo est vide"));
148
  }
 
149
  $transactionId = $this->getRequest()->getParam('ORDERID');
150
  $transactions = Mage::getModel('socolissimosimplicite/transaction')
151
  ->getCollection()
152
  ->addFieldToFilter('transaction_id', $transactionId);
 
153
  // transaction inexistante
154
  if ($transactions->getSize() == 0) {
155
  throw new Exception(Mage::helper('socolissimosimplicite')->__("SoColissimo : la transaction avec colissimo (id=".$transactionId.") n'est pas valide car inconnue de Magento"));
@@ -164,9 +189,11 @@ class LaPoste_SoColissimoSimplicite_FormController extends Mage_Core_Controller_
164
  }
165
 
166
  /**
167
- * Enregistre les données retournées par SO Colissimo en session,
168
- * afin de mettre à jour les données de livraison ultérieurement.
 
169
  * @param Mage_Checkout_Model_Session $checkoutSession
 
170
  */
171
  protected function _saveSoColissimoData($checkoutSession)
172
  {
@@ -182,6 +209,7 @@ class LaPoste_SoColissimoSimplicite_FormController extends Mage_Core_Controller_
182
  'SIGNATURE',
183
  )
184
  );
 
185
  $shippingData = array_diff_key($allParams, $paramKeysToNotSave);
186
  $checkoutSession->setData('socolissimosimplicite_shipping_data', $shippingData);
187
 
@@ -192,4 +220,4 @@ class LaPoste_SoColissimoSimplicite_FormController extends Mage_Core_Controller_
192
  // indique que l'adresse vient de socolissimo
193
  $checkoutSession->setData('socolissimosimplicite_new_address_from_socolissimo', true);
194
  }
195
- }
1
  <?php
2
  /**
3
+ * Contrôleur pour les échanges avec l'interface So Colissimo en front office.
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
 
 
 
10
  */
11
  class LaPoste_SoColissimoSimplicite_FormController extends Mage_Core_Controller_Front_Action
12
  {
13
  /**
14
+ * Soumet le formulaire pour l'accès à So Colissimo
15
+ *
16
  * @todo check postal code and country before send (only France, Monaco et Andorre)
17
+ * @return void
18
  */
19
  public function sendAction()
20
  {
21
+ /* @var $checkoutSession Mage_Checkout_Model_Session */
22
  $checkoutSession = Mage::getSingleton('checkout/session');
23
 
 
 
24
  /* @var $helper LaPoste_SoColissimoSimplicite_Helper_Data */
 
25
  $helper = Mage::helper('socolissimosimplicite');
26
+
27
+ // nettoyer la session
28
+ $helper->clearCheckoutSession(false);
29
+
30
+ // vérifier la disponibilité de la plateforme, si ce n'est pas le cas
31
+ // sélectionner la livraison à domicile et passer à l'étape suivante
32
+ $serviceUnavailableRedirect = null;
33
+ if ($helper->getServiceIsAvailable() && $helper->getServiceIsAvailableUrl() != '') {
34
  $serviceAvailable = $helper->checkServiceAvailability();
35
  // passer à l'étape suivante avec le mode livraison à domicile
36
  if (!$serviceAvailable) {
39
  }
40
  }
41
 
42
+ // récupération de l'adresse de livraison de la commande en cours
43
  $shippingAddress = $this->getShippingAddress();
44
 
45
+ // sauvegarde des adressses choisies dans la session car les données seront réinitialisées au rechargement du tunnel
46
+ $checkoutSession->setData('socolissimosimplicite_shipping_address', $shippingAddress->getData());
47
+ $checkoutSession->setData('socolissimosimplicite_billing_address', $this->getBillingAddress()->getData());
48
+
49
+ // on relance le calcul du prix de livraison pour gérer le cas du du retour en arrière et du choix du mode classique
50
  $shippingAddress->setCollectShippingRates(true);
51
  $shippingAddress->collectShippingRates();
52
 
53
+ // création d'une nouvelle transaction à partir de l'adresse de livraison.
54
+ $transaction = Mage::getModel('socolissimosimplicite/transaction')->create($shippingAddress);
 
55
  $checkoutSession->setData('socolissimosimplicite_checkout_onepage_transactionid', $transaction->getId());
56
 
57
  $this->loadLayout();
58
 
59
+ // passage de données à la vue
60
  $this->getLayout()->getBlock('form.socolissimosimplicite')
61
  ->setShippingAddress($shippingAddress)
62
  ->setTransaction($transaction)
66
  }
67
 
68
  /**
69
+ * Succès suite au retour de So Colissimo
70
+ *
71
  * @todo use TRPARAMPLUS to pass / get "payment" ?
72
  * @todo deal with "error code" on validation (data truncation and others)
73
+ * @return void
74
  */
75
  public function successAction()
76
  {
77
+ /* @var $checkoutSession Mage_Checkout_Model_Session */
78
  $checkoutSession = Mage::getSingleton('checkout/session');
79
+
80
+ // permettre de revenir en arrière pour change le mode de livraison
81
  $checkoutSession->unsetData('socolissimosimplicite_from_socolissimo');
82
 
83
  // si l'adresse de livraison a changée, mettre à jour la signature
84
  $this->_updateSignature();
85
 
86
+ // sauvegarde des données retournées par So Colissimo en session (choix du mode de paiement)
87
  $this->_saveSoColissimoData($checkoutSession);
88
 
89
  // sauvegarde de l'étape suivante en session
93
  }
94
 
95
  /**
96
+ * Échec lors de la soumission du formulaire d'accès à So Colissimo
97
+ *
98
+ * @return void
99
  */
100
  public function failureAction()
101
  {
102
+ /* @var $helper LaPoste_SoColissimoSimplicite_Helper_Data */
103
+ $helper = Mage::helper('socolissimosimplicite');
104
+ /* @var $checkoutSession Mage_Checkout_Model_Session */
105
  $checkoutSession = Mage::getSingleton('checkout/session');
106
+
107
+ // permettre de revenir en arrière pour change le mode de livraison
108
  $checkoutSession->unsetData('socolissimosimplicite_from_socolissimo');
109
 
110
  // sauvegarde de l'étape suivante en session (choix de la méthode de livraison)
112
 
113
  // récupérer le code erreur et afficher le message correspondant
114
  $errCode = trim($this->getRequest()->getPost('ERRORCODE'));
 
115
  $errCodeToLabel = array(
116
  '001' => $helper->__('Identifiant FO manquant'),
117
  '002' => $helper->__('Identifiant FO incorrect'),
127
  '015' => $helper->__('Serveur applicatif non disponible'),
128
  '016' => $helper->__('SGBD non disponible')
129
  );
130
+
131
+ // ajout d'un message d'erreur dans la session du tunnel de commande
132
+ $msg = array_key_exists($errCode, $errCodeToLabel) ? $errCodeToLabel[$errCode] : $helper->__('Erreur non identifiée');
 
 
 
133
  $checkoutSession->addError($msg);
134
+
135
  $this->_redirect('checkout/cart');
 
136
  }
137
 
138
  /**
139
+ * Retourne l'adresse de livraison de la commande en cours
140
+ *
141
+ * @param string $quoteId
142
  * @return Mage_Sales_Model_Quote_Address
143
  */
144
  public function getShippingAddress($quoteId = false)
145
  {
146
+ return Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress();
 
 
147
  }
148
 
149
  /**
150
+ * Retourne l'adresse de facturation de la commande en cours
151
+ *
152
+ * @param string $quoteId
153
+ * @return Mage_Sales_Model_Quote_Address
154
+ */
155
+ public function getBillingAddress($quoteId = false)
156
+ {
157
+ return Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress();
158
+ }
159
+
160
+ /**
161
+ * Vérifie si la signature a changée (ie l'adresse de livraison a changée), dans ce cas mettre à jour la signature
162
+ *
163
+ * @return void
164
  */
165
  protected function _updateSignature()
166
  {
169
  if (empty($newSignature)) {
170
  throw new Exception(Mage::helper('socolissimosimplicite')->__("SoColissimo : la signature retournée par colissimo est vide"));
171
  }
172
+
173
  $transactionId = $this->getRequest()->getParam('ORDERID');
174
  $transactions = Mage::getModel('socolissimosimplicite/transaction')
175
  ->getCollection()
176
  ->addFieldToFilter('transaction_id', $transactionId);
177
+
178
  // transaction inexistante
179
  if ($transactions->getSize() == 0) {
180
  throw new Exception(Mage::helper('socolissimosimplicite')->__("SoColissimo : la transaction avec colissimo (id=".$transactionId.") n'est pas valide car inconnue de Magento"));
189
  }
190
 
191
  /**
192
+ * Enregistre les données retournées par So Colissimo en session,
193
+ * afin de mettre à jour les données de livraison ultérieurement
194
+ *
195
  * @param Mage_Checkout_Model_Session $checkoutSession
196
+ * @return void
197
  */
198
  protected function _saveSoColissimoData($checkoutSession)
199
  {
209
  'SIGNATURE',
210
  )
211
  );
212
+
213
  $shippingData = array_diff_key($allParams, $paramKeysToNotSave);
214
  $checkoutSession->setData('socolissimosimplicite_shipping_data', $shippingData);
215
 
220
  // indique que l'adresse vient de socolissimo
221
  $checkoutSession->setData('socolissimosimplicite_new_address_from_socolissimo', true);
222
  }
223
+ }
app/code/community/LaPoste/SoColissimoSimplicite/controllers/OnepageController.php DELETED
@@ -1,27 +0,0 @@
1
- <?php
2
- /**
3
- * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- */
11
- /**
12
- * Surcharge du onepageController pour régler le bug des frais de livraison RDV en version 1.5 / 1.10
13
- */
14
- require_once 'Mage/Checkout/controllers/OnepageController.php';
15
- class LaPoste_SoColissimoSimplicite_OnepageController extends Mage_Checkout_OnepageController
16
- {
17
- /**
18
- * Valorise un flag dans la session pour que la méthode ShippingMethod->getCalculatedPrice
19
- * utilise les variables de session plutôt que celles du shipping_address
20
- */
21
- public function savePaymentAction()
22
- {
23
- Mage::getSingleton('checkout/session')->setData('socolissimosimplicite_flag', true);
24
- parent::savePaymentAction();
25
- Mage::getSingleton('checkout/session')->setData('socolissimosimplicite_flag', false);
26
- }
27
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/LaPoste/SoColissimoSimplicite/etc/config.xml CHANGED
@@ -3,25 +3,25 @@
3
  /**
4
  * LaPoste_SoColissimoSimplicite
5
  *
6
- * @category LaPoste
7
- * @package LaPoste_SoColissimoSimplicite
8
- * @copyright Copyright (c) 2010 La Poste
9
- * @author Smile (http://www.smile.fr)
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  */
12
  -->
13
  <config>
14
  <modules>
15
  <LaPoste_SoColissimoSimplicite>
16
- <version>2.1.0</version>
17
  </LaPoste_SoColissimoSimplicite>
18
  </modules>
19
-
20
  <global>
21
  <blocks>
22
  <socolissimosimplicite><class>LaPoste_SoColissimoSimplicite_Block</class></socolissimosimplicite>
23
  </blocks>
24
-
25
  <models>
26
  <socolissimosimplicite>
27
  <class>LaPoste_SoColissimoSimplicite_Model</class>
@@ -36,14 +36,14 @@
36
  </transaction>
37
  </entities>
38
  </socolissimosimplicite_mysql4>
39
- </models>
40
-
41
  <helpers>
42
  <socolissimosimplicite>
43
  <class>LaPoste_SoColissimoSimplicite_Helper</class>
44
  </socolissimosimplicite>
45
  </helpers>
46
-
47
  <resources>
48
  <socolissimosimplicite_setup>
49
  <setup>
@@ -54,20 +54,20 @@
54
  <use>core_setup</use>
55
  </connection>
56
  </socolissimosimplicite_setup>
57
-
58
  <socolissimosimplicite_read>
59
  <connection>
60
  <use>core_read</use>
61
  </connection>
62
  </socolissimosimplicite_read>
63
-
64
  <socolissimosimplicite_write>
65
  <connection>
66
  <use>core_write</use>
67
  </connection>
68
  </socolissimosimplicite_write>
69
  </resources>
70
-
71
  <translate>
72
  <modules>
73
  <LaPoste_SoColissimoSimplicite>
@@ -77,16 +77,14 @@
77
  </LaPoste_SoColissimoSimplicite>
78
  </modules>
79
  </translate>
80
-
81
- <rewrite>
82
- <socolissimosimplicite_onepage>
83
- <from><![CDATA[#^/checkout/onepage/savePayment#]]></from>
84
- <to>socolissimosimplicite/onepage/savePayment</to>
85
- </socolissimosimplicite_onepage>
86
- </rewrite>
87
  </global>
88
-
89
  <frontend>
 
 
 
 
 
90
  <layout>
91
  <updates>
92
  <socolissimosimplicite module="LaPoste_SoColissimoSimplicite">
@@ -94,7 +92,7 @@
94
  </socolissimosimplicite>
95
  </updates>
96
  </layout>
97
-
98
  <routers>
99
  <socolissimosimplicite>
100
  <use>standard</use>
@@ -104,7 +102,7 @@
104
  </args>
105
  </socolissimosimplicite>
106
  </routers>
107
-
108
  <events>
109
  <controller_action_layout_load_before>
110
  <observers>
@@ -135,14 +133,18 @@
135
  </checkout_type_onepage_save_order>
136
  </events>
137
  </frontend>
138
-
139
  <default>
140
  <carriers>
141
  <socolissimosimplicite>
142
  <active>0</active>
143
  <title>La Poste</title>
144
  <name>So Colissimo</name>
145
- <selectmessage>En cliquant sur Poursuivre, vous pourrez choisir votre mode de livraison.</selectmessage>
 
 
 
 
146
  <redirectmessage>Vous allez voir apparaitre les options So Colissimo dans un instant...</redirectmessage>
147
  <account></account>
148
  <encryption_key></encryption_key>
@@ -150,10 +152,13 @@
150
  <active_service_is_available>1</active_service_is_available>
151
  <url_service_is_available>http://ws.colissimo.fr/supervision-pudo-frame/supervision.jsp</url_service_is_available>
152
  <not_available_message>La plateforme technique So Colissimo est temporairement indisponible. Votre commande sera livrée à l'adresse de livraison que vous venez d'indiquer.</not_available_message>
 
 
153
  <max_weight>30</max_weight>
154
  <specificcountry>FR</specificcountry>
155
  <sallowspecific>1</sallowspecific>
156
- <model>LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod</model>
 
157
  <mapprefix>
158
  <![CDATA[
159
  {
@@ -163,6 +168,42 @@
163
  }
164
  ]]>
165
  </mapprefix>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  </socolissimosimplicite>
167
  </carriers>
168
  </default>
3
  /**
4
  * LaPoste_SoColissimoSimplicite
5
  *
6
+ * @category LaPoste
7
+ * @package LaPoste_SoColissimoSimplicite
8
+ * @copyright Copyright (c) 2010 La Poste
9
+ * @author Smile (http://www.smile.fr)
10
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  */
12
  -->
13
  <config>
14
  <modules>
15
  <LaPoste_SoColissimoSimplicite>
16
+ <version>2.2.0</version>
17
  </LaPoste_SoColissimoSimplicite>
18
  </modules>
19
+
20
  <global>
21
  <blocks>
22
  <socolissimosimplicite><class>LaPoste_SoColissimoSimplicite_Block</class></socolissimosimplicite>
23
  </blocks>
24
+
25
  <models>
26
  <socolissimosimplicite>
27
  <class>LaPoste_SoColissimoSimplicite_Model</class>
36
  </transaction>
37
  </entities>
38
  </socolissimosimplicite_mysql4>
39
+ </models>
40
+
41
  <helpers>
42
  <socolissimosimplicite>
43
  <class>LaPoste_SoColissimoSimplicite_Helper</class>
44
  </socolissimosimplicite>
45
  </helpers>
46
+
47
  <resources>
48
  <socolissimosimplicite_setup>
49
  <setup>
54
  <use>core_setup</use>
55
  </connection>
56
  </socolissimosimplicite_setup>
57
+
58
  <socolissimosimplicite_read>
59
  <connection>
60
  <use>core_read</use>
61
  </connection>
62
  </socolissimosimplicite_read>
63
+
64
  <socolissimosimplicite_write>
65
  <connection>
66
  <use>core_write</use>
67
  </connection>
68
  </socolissimosimplicite_write>
69
  </resources>
70
+
71
  <translate>
72
  <modules>
73
  <LaPoste_SoColissimoSimplicite>
77
  </LaPoste_SoColissimoSimplicite>
78
  </modules>
79
  </translate>
 
 
 
 
 
 
 
80
  </global>
81
+
82
  <frontend>
83
+ <!-- à décommenter pour les sites utilisant un tunnel de commande https -->
84
+ <!--<secure_url>
85
+ <socolissimosimplicite>/socolissimosimplicite/</socolissimosimplicite>
86
+ </secure_url>-->
87
+
88
  <layout>
89
  <updates>
90
  <socolissimosimplicite module="LaPoste_SoColissimoSimplicite">
92
  </socolissimosimplicite>
93
  </updates>
94
  </layout>
95
+
96
  <routers>
97
  <socolissimosimplicite>
98
  <use>standard</use>
102
  </args>
103
  </socolissimosimplicite>
104
  </routers>
105
+
106
  <events>
107
  <controller_action_layout_load_before>
108
  <observers>
133
  </checkout_type_onepage_save_order>
134
  </events>
135
  </frontend>
136
+
137
  <default>
138
  <carriers>
139
  <socolissimosimplicite>
140
  <active>0</active>
141
  <title>La Poste</title>
142
  <name>So Colissimo</name>
143
+ <name_home>So Colissimo</name_home>
144
+ <name_appointment>So Colissimo - Sur rendez-vous</name_appointment>
145
+ <name_pickup>So Colissimo - Point retrait</name_pickup>
146
+ <name_post_office>So Colissimo - Point retrait</name_post_office>
147
+ <selectmessage>Avec So Colissimo, choisissez votre mode de livraison préféré !</selectmessage>
148
  <redirectmessage>Vous allez voir apparaitre les options So Colissimo dans un instant...</redirectmessage>
149
  <account></account>
150
  <encryption_key></encryption_key>
152
  <active_service_is_available>1</active_service_is_available>
153
  <url_service_is_available>http://ws.colissimo.fr/supervision-pudo-frame/supervision.jsp</url_service_is_available>
154
  <not_available_message>La plateforme technique So Colissimo est temporairement indisponible. Votre commande sera livrée à l'adresse de livraison que vous venez d'indiquer.</not_available_message>
155
+ <amountbasetype>fixed</amountbasetype>
156
+ <amountbasetype_pickup>fixed</amountbasetype_pickup>
157
  <max_weight>30</max_weight>
158
  <specificcountry>FR</specificcountry>
159
  <sallowspecific>1</sallowspecific>
160
+ <model>LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod</model>
161
+ <!-- association entre les civilités utilisées dans Magento et celles utilisées dans So Colissimo -->
162
  <mapprefix>
163
  <![CDATA[
164
  {
168
  }
169
  ]]>
170
  </mapprefix>
171
+ <!-- langues disponibles dans l'interface So Colissimo -->
172
+ <!-- l'IFrame So Colissimo utilisera la même langue que Magento si celle-ci fait partie de la liste ci-dessous -->
173
+ <!-- n'intégrer dans cette liste que les langues connues de So Colissimo (pour l'instant, uniquement le français) -->
174
+ <available_languages>
175
+ <FR/>
176
+ </available_languages>
177
+ <!-- actions et contrôleurs où il y a recalcul des frais d'expédition après l'utilisation de l'IFrame -->
178
+ <shipping_price_calculations>
179
+ <onepage_index>
180
+ <controller>onepage</controller>
181
+ <action>index</action>
182
+ </onepage_index>
183
+ <onepage_payment>
184
+ <controller>onepage</controller>
185
+ <action>savePayment</action>
186
+ </onepage_payment>
187
+ <onepage_order>
188
+ <controller>onepage</controller>
189
+ <action>saveOrder</action>
190
+ </onepage_order>
191
+ </shipping_price_calculations>
192
+ <!-- url vers laquelle l'internaute est redirigé lors d'une erreur -->
193
+ <redirect_url_on_error>checkout/onepage</redirect_url_on_error>
194
+ <!-- codes des points de retrait commerçants (utilisé pour détecter si l'internaute en a sélectionné un) -->
195
+ <pickup_codes>
196
+ <A2P /> <!-- FR -->
197
+ <CMT /> <!-- BE -->
198
+ </pickup_codes>
199
+ <!-- codes des points de retrait de type bureau de poste (idem) -->
200
+ <post_office_codes>
201
+ <BPR /> <!-- FR -->
202
+ <CIT /> <!-- BE -->
203
+ <ACP /> <!-- BE -->
204
+ <CDI /> <!-- BE -->
205
+ <BDP /> <!-- BE -->
206
+ </post_office_codes>
207
  </socolissimosimplicite>
208
  </carriers>
209
  </default>
app/code/community/LaPoste/SoColissimoSimplicite/etc/system.xml CHANGED
@@ -3,11 +3,11 @@
3
  /**
4
  * LaPoste_SoColissimoSimplicite
5
  *
6
- * @category LaPoste
7
- * @package LaPoste_SoColissimoSimplicite
8
- * @copyright Copyright (c) 2010 La Poste
9
  * @author Smile (http://www.smile.fr)
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  */
12
  -->
13
  <config>
@@ -38,17 +38,70 @@
38
  <show_in_website>1</show_in_website>
39
  <show_in_store>1</show_in_store>
40
  </title>
41
- <name translate="label">
42
  <label>Nom du mode de livraison</label>
43
  <sort_order>30</sort_order>
44
  <show_in_default>1</show_in_default>
45
  <show_in_website>1</show_in_website>
46
  <show_in_store>1</show_in_store>
 
 
 
 
 
47
  </name>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  <selectmessage translate="label">
49
  <label>Message lors de la sélection du mode de livraison</label>
50
  <frontend_type>textarea</frontend_type>
51
- <sort_order>31</sort_order>
52
  <show_in_default>1</show_in_default>
53
  <show_in_website>1</show_in_website>
54
  <show_in_store>1</show_in_store>
@@ -56,14 +109,14 @@
56
  <redirectmessage translate="label">
57
  <label>Message lors de la redirection vers So Colissimo</label>
58
  <frontend_type>textarea</frontend_type>
59
- <sort_order>32</sort_order>
60
  <show_in_default>1</show_in_default>
61
  <show_in_website>1</show_in_website>
62
  <show_in_store>1</show_in_store>
63
  </redirectmessage>
64
  <account translate="label">
65
  <label>Identifiant FO</label>
66
- <sort_order>40</sort_order>
67
  <show_in_default>1</show_in_default>
68
  <show_in_website>1</show_in_website>
69
  <show_in_store>1</show_in_store>
@@ -71,14 +124,14 @@
71
  <encryption_key translate="label">
72
  <label>Clé de cryptage</label>
73
  <frontend_type>text</frontend_type>
74
- <sort_order>50</sort_order>
75
  <show_in_default>1</show_in_default>
76
  <show_in_website>1</show_in_website>
77
  <show_in_store>1</show_in_store>
78
  </encryption_key>
79
  <url_fo translate="label">
80
  <label>URL de passerelle</label>
81
- <sort_order>60</sort_order>
82
  <show_in_default>1</show_in_default>
83
  <show_in_website>1</show_in_website>
84
  <show_in_store>1</show_in_store>
@@ -88,14 +141,14 @@
88
  <label>Activer la vérification de la disponibilité</label>
89
  <frontend_type>select</frontend_type>
90
  <source_model>adminhtml/system_config_source_yesno</source_model>
91
- <sort_order>61</sort_order>
92
  <show_in_default>1</show_in_default>
93
  <show_in_website>1</show_in_website>
94
  <show_in_store>1</show_in_store>
95
  </active_service_is_available>
96
  <url_service_is_available translate="label">
97
  <label>URL de vérification de la disponibilité</label>
98
- <sort_order>62</sort_order>
99
  <show_in_default>1</show_in_default>
100
  <show_in_website>1</show_in_website>
101
  <show_in_store>1</show_in_store>
@@ -103,7 +156,7 @@
103
  <not_available_message translate="label">
104
  <label>Message en cas d'indisponibilité de la plateforme</label>
105
  <frontend_type>textarea</frontend_type>
106
- <sort_order>63</sort_order>
107
  <show_in_default>1</show_in_default>
108
  <show_in_website>1</show_in_website>
109
  <show_in_store>1</show_in_store>
@@ -113,56 +166,93 @@
113
  <frontend_type>select</frontend_type>
114
  <source_model>socolissimosimplicite/system_config_source_shipping_amountbasetype
115
  </source_model>
116
- <sort_order>70</sort_order>
117
  <show_in_default>1</show_in_default>
118
  <show_in_website>1</show_in_website>
119
  <show_in_store>1</show_in_store>
120
  </amountbasetype>
121
- <amountcalculation translate="label">
122
  <label>Calcul des frais de livraison</label>
123
  <frontend_type>textarea</frontend_type>
124
- <sort_order>80</sort_order>
125
  <show_in_default>1</show_in_default>
126
  <show_in_website>1</show_in_website>
127
  <show_in_store>1</show_in_store>
128
  <comment>
129
  <![CDATA[
 
130
  Si <strong>tarif unique</strong>, indiquer le montant (sans devise) ;<br />
131
- Si <strong>tarif selon le poids</strong>,
132
- indiquer :<br />
133
- <code>{"</code>poids en kg<code>":"</code>tarif1<code>","</code>poids en kg<code>":"</code>tarif2<code>",</code>...<code>}</code><br />
134
  Le tarif est appliqué pour un poids supérieur ou égal au poids correspondant.<br />
135
- Exemple de conditions tarifaires selon le poids : <pre>{"0":"2.90","0.5":"4.50","5":"8","10":"14"}</pre>
 
136
  Si <strong>tarif selon le sous-total du panier</strong>,
137
  indiquer :<br />
138
- <code>{"</code>montant<code>":"</code>tarif1<code>","</code>montant<code>":"</code>tarif2<code>",</code>...<code>}</code><br />
139
  Le tarif est appliqué pour un montant supérieur ou égal au montant correspondant.<br />
140
- Exemple de conditions tarifaires selon le montant : <pre>{"0":"3","50":"5","100":"8","250":"0"}</pre>
 
141
  ]]>
142
  </comment>
143
  </amountcalculation>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  <minquotepriceforfree translate="label">
145
  <label>Livraison offerte à partir de (en €)</label>
146
- <sort_order>90</sort_order>
147
  <show_in_default>1</show_in_default>
148
  <show_in_website>1</show_in_website>
149
  <show_in_store>1</show_in_store>
150
- <comment>Laisser vide pour ne pas offrir les frais de livraison
 
 
 
151
  </comment>
152
  </minquotepriceforfree>
153
- <max_weight translate="label">
154
- <label>Limite de poids</label>
155
- <sort_order>95</sort_order>
156
  <show_in_default>1</show_in_default>
157
  <show_in_website>1</show_in_website>
158
  <show_in_store>1</show_in_store>
159
- <comment>So Colissimo ne sera pas proposé si le poids dépasse le montant saisi
 
 
 
 
 
 
 
160
  </comment>
161
- </max_weight>
162
  <min_order_total translate="label">
163
  <label>Minimum Order Total</label>
164
  <frontend_type>text</frontend_type>
165
- <sort_order>97</sort_order>
166
  <show_in_default>1</show_in_default>
167
  <show_in_website>1</show_in_website>
168
  <show_in_store>1</show_in_store>
@@ -170,23 +260,27 @@
170
  <max_order_total translate="label">
171
  <label>Maximum Order Total</label>
172
  <frontend_type>text</frontend_type>
173
- <sort_order>99</sort_order>
174
  <show_in_default>1</show_in_default>
175
  <show_in_website>1</show_in_website>
176
  <show_in_store>1</show_in_store>
177
  </max_order_total>
178
- <sort_order translate="label">
179
- <label>Sort Order</label>
180
- <frontend_type>text</frontend_type>
181
- <sort_order>200</sort_order>
182
  <show_in_default>1</show_in_default>
183
  <show_in_website>1</show_in_website>
184
- <show_in_store>0</show_in_store>
185
- </sort_order>
 
 
 
 
 
186
  <sallowspecific translate="label">
187
  <label>Ship to Applicable Countries</label>
188
  <frontend_type>select</frontend_type>
189
- <sort_order>190</sort_order>
190
  <frontend_class>shipping-applicable-country</frontend_class>
191
  <source_model>adminhtml/system_config_source_shipping_allspecificcountries
192
  </source_model>
@@ -194,18 +288,30 @@
194
  <show_in_website>1</show_in_website>
195
  <show_in_store>0</show_in_store>
196
  </sallowspecific>
197
- <specificcountry translate="label">
198
  <label>Ship to Specific Countries</label>
199
  <frontend_type>multiselect</frontend_type>
200
- <sort_order>191</sort_order>
201
  <source_model>adminhtml/system_config_source_country
202
  </source_model>
203
  <show_in_default>1</show_in_default>
204
  <show_in_website>1</show_in_website>
205
  <show_in_store>0</show_in_store>
 
 
 
 
 
206
  <can_be_empty>1</can_be_empty>
207
  </specificcountry>
208
-
 
 
 
 
 
 
 
209
  </fields>
210
  </socolissimosimplicite>
211
  </groups>
3
  /**
4
  * LaPoste_SoColissimoSimplicite
5
  *
6
+ * @category LaPoste
7
+ * @package LaPoste_SoColissimoSimplicite
8
+ * @copyright Copyright (c) 2010 La Poste
9
  * @author Smile (http://www.smile.fr)
10
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  */
12
  -->
13
  <config>
38
  <show_in_website>1</show_in_website>
39
  <show_in_store>1</show_in_store>
40
  </title>
41
+ <name translate="label comment">
42
  <label>Nom du mode de livraison</label>
43
  <sort_order>30</sort_order>
44
  <show_in_default>1</show_in_default>
45
  <show_in_website>1</show_in_website>
46
  <show_in_store>1</show_in_store>
47
+ <comment>
48
+ <![CDATA[
49
+ Nom du mode de livraison affiché dans le tunnel de commande à l'étape "Mode de livraison".
50
+ ]]>
51
+ </comment>
52
  </name>
53
+ <name_home translate="label comment">
54
+ <label>Nom du mode de livraison (domicile)</label>
55
+ <sort_order>40</sort_order>
56
+ <show_in_default>1</show_in_default>
57
+ <show_in_website>1</show_in_website>
58
+ <show_in_store>1</show_in_store>
59
+ <comment>
60
+ <![CDATA[
61
+ Nom du mode de livraison une fois que l'internaute a choisi la livraison à domicile dans l'interface de So Colissimo.
62
+ ]]>
63
+ </comment>
64
+ </name_home>
65
+ <name_appointment translate="label comment">
66
+ <label>Nom du mode de livraison (rendez-vous)</label>
67
+ <sort_order>50</sort_order>
68
+ <show_in_default>1</show_in_default>
69
+ <show_in_website>1</show_in_website>
70
+ <show_in_store>1</show_in_store>
71
+ <comment>
72
+ <![CDATA[
73
+ Nom du mode de livraison une fois que l'internaute a choisi la livraison sur rendez-vous dans l'interface de So Colissimo.
74
+ ]]>
75
+ </comment>
76
+ </name_appointment>
77
+ <name_pickup translate="label comment">
78
+ <label>Nom du mode de livraison (point de retrait commerçant)</label>
79
+ <sort_order>60</sort_order>
80
+ <show_in_default>1</show_in_default>
81
+ <show_in_website>1</show_in_website>
82
+ <show_in_store>1</show_in_store>
83
+ <comment>
84
+ <![CDATA[
85
+ Nom du mode de livraison une fois que l'internaute a choisi la livraison en point de retrait commerçant dans l'interface de So Colissimo.
86
+ ]]>
87
+ </comment>
88
+ </name_pickup>
89
+ <name_post_office translate="label comment">
90
+ <label>Nom du mode de livraison (bureau de poste)</label>
91
+ <sort_order>70</sort_order>
92
+ <show_in_default>1</show_in_default>
93
+ <show_in_website>1</show_in_website>
94
+ <show_in_store>1</show_in_store>
95
+ <comment>
96
+ <![CDATA[
97
+ Nom du mode de livraison une fois que l'internaute a choisi la livraison en bureau de poste dans l'interface de So Colissimo.
98
+ ]]>
99
+ </comment>
100
+ </name_post_office>
101
  <selectmessage translate="label">
102
  <label>Message lors de la sélection du mode de livraison</label>
103
  <frontend_type>textarea</frontend_type>
104
+ <sort_order>80</sort_order>
105
  <show_in_default>1</show_in_default>
106
  <show_in_website>1</show_in_website>
107
  <show_in_store>1</show_in_store>
109
  <redirectmessage translate="label">
110
  <label>Message lors de la redirection vers So Colissimo</label>
111
  <frontend_type>textarea</frontend_type>
112
+ <sort_order>90</sort_order>
113
  <show_in_default>1</show_in_default>
114
  <show_in_website>1</show_in_website>
115
  <show_in_store>1</show_in_store>
116
  </redirectmessage>
117
  <account translate="label">
118
  <label>Identifiant FO</label>
119
+ <sort_order>100</sort_order>
120
  <show_in_default>1</show_in_default>
121
  <show_in_website>1</show_in_website>
122
  <show_in_store>1</show_in_store>
124
  <encryption_key translate="label">
125
  <label>Clé de cryptage</label>
126
  <frontend_type>text</frontend_type>
127
+ <sort_order>110</sort_order>
128
  <show_in_default>1</show_in_default>
129
  <show_in_website>1</show_in_website>
130
  <show_in_store>1</show_in_store>
131
  </encryption_key>
132
  <url_fo translate="label">
133
  <label>URL de passerelle</label>
134
+ <sort_order>120</sort_order>
135
  <show_in_default>1</show_in_default>
136
  <show_in_website>1</show_in_website>
137
  <show_in_store>1</show_in_store>
141
  <label>Activer la vérification de la disponibilité</label>
142
  <frontend_type>select</frontend_type>
143
  <source_model>adminhtml/system_config_source_yesno</source_model>
144
+ <sort_order>130</sort_order>
145
  <show_in_default>1</show_in_default>
146
  <show_in_website>1</show_in_website>
147
  <show_in_store>1</show_in_store>
148
  </active_service_is_available>
149
  <url_service_is_available translate="label">
150
  <label>URL de vérification de la disponibilité</label>
151
+ <sort_order>140</sort_order>
152
  <show_in_default>1</show_in_default>
153
  <show_in_website>1</show_in_website>
154
  <show_in_store>1</show_in_store>
156
  <not_available_message translate="label">
157
  <label>Message en cas d'indisponibilité de la plateforme</label>
158
  <frontend_type>textarea</frontend_type>
159
+ <sort_order>150</sort_order>
160
  <show_in_default>1</show_in_default>
161
  <show_in_website>1</show_in_website>
162
  <show_in_store>1</show_in_store>
166
  <frontend_type>select</frontend_type>
167
  <source_model>socolissimosimplicite/system_config_source_shipping_amountbasetype
168
  </source_model>
169
+ <sort_order>160</sort_order>
170
  <show_in_default>1</show_in_default>
171
  <show_in_website>1</show_in_website>
172
  <show_in_store>1</show_in_store>
173
  </amountbasetype>
174
+ <amountcalculation translate="label comment">
175
  <label>Calcul des frais de livraison</label>
176
  <frontend_type>textarea</frontend_type>
177
+ <sort_order>170</sort_order>
178
  <show_in_default>1</show_in_default>
179
  <show_in_website>1</show_in_website>
180
  <show_in_store>1</show_in_store>
181
  <comment>
182
  <![CDATA[
183
+ Il s’agit des frais d’expédition appliqués par défaut pour tous les modes de livraison en France.<br/>
184
  Si <strong>tarif unique</strong>, indiquer le montant (sans devise) ;<br />
185
+ Si <strong>tarif selon le poids</strong>, indiquer :<br />
186
+ {"poids en kg": "tarif1", "poids en kg": "tarif2", ...}<br />
 
187
  Le tarif est appliqué pour un poids supérieur ou égal au poids correspondant.<br />
188
+ Exemple de conditions tarifaires selon le poids :<br/>
189
+ {"0": "2.90", "0.5": "4.50", "5": "8", "10": "14"}<br/>
190
  Si <strong>tarif selon le sous-total du panier</strong>,
191
  indiquer :<br />
192
+ {"montant": "tarif1", "montant": "tarif2", ...}<br />
193
  Le tarif est appliqué pour un montant supérieur ou égal au montant correspondant.<br />
194
+ Exemple de conditions tarifaires selon le montant :<br />
195
+ {"0": "3", "50": "5", "100": "8", "250": "0"}
196
  ]]>
197
  </comment>
198
  </amountcalculation>
199
+ <amountbasetype_pickup translate="label">
200
+ <label>Type des frais de livraison commerçants</label>
201
+ <frontend_type>select</frontend_type>
202
+ <source_model>socolissimosimplicite/system_config_source_shipping_amountbasetype
203
+ </source_model>
204
+ <sort_order>180</sort_order>
205
+ <show_in_default>1</show_in_default>
206
+ <show_in_website>1</show_in_website>
207
+ <show_in_store>1</show_in_store>
208
+ </amountbasetype_pickup>
209
+ <amountcalculation_pickup translate="label comment">
210
+ <label>Calcul des frais de livraison commerçants</label>
211
+ <frontend_type>textarea</frontend_type>
212
+ <sort_order>190</sort_order>
213
+ <show_in_default>1</show_in_default>
214
+ <show_in_website>1</show_in_website>
215
+ <show_in_store>1</show_in_store>
216
+ <comment>
217
+ <![CDATA[
218
+ Il s'agit des frais d'expédition appliqués pour la livraison en point de retrait commerçant.<br />
219
+ Le fonctionnement est identique au paramètre "Calcul des frais de livraison".<br />
220
+ Laisser vide pour ne pas appliquer de tarif spécifique à la livraison en point de retrait commerçant.
221
+ ]]>
222
+ </comment>
223
+ </amountcalculation_pickup>
224
  <minquotepriceforfree translate="label">
225
  <label>Livraison offerte à partir de (en €)</label>
226
+ <sort_order>200</sort_order>
227
  <show_in_default>1</show_in_default>
228
  <show_in_website>1</show_in_website>
229
  <show_in_store>1</show_in_store>
230
+ <comment>
231
+ <![CDATA[
232
+ Laisser vide pour ne pas offrir les frais de livraison
233
+ ]]>
234
  </comment>
235
  </minquotepriceforfree>
236
+ <price_format translate="label comment">
237
+ <label>Format des frais de livraison</label>
238
+ <sort_order>210</sort_order>
239
  <show_in_default>1</show_in_default>
240
  <show_in_website>1</show_in_website>
241
  <show_in_store>1</show_in_store>
242
+ <comment>
243
+ <![CDATA[
244
+ Format du tarif du mode de livraison So Colissimo, à l'étape de livraison du tunnel de commande.<br />
245
+ Laisser vide pour garder l'affichage natif de Magento.<br />
246
+ Le tarif est représenté par "%s".<br />
247
+ Exemple : avec une valeur "(à partir de %s)" et des frais de livraison de 10€, le prix affiché dans
248
+ le tunnel de commande sera "(à partir de 10€)".
249
+ ]]>
250
  </comment>
251
+ </price_format>
252
  <min_order_total translate="label">
253
  <label>Minimum Order Total</label>
254
  <frontend_type>text</frontend_type>
255
+ <sort_order>220</sort_order>
256
  <show_in_default>1</show_in_default>
257
  <show_in_website>1</show_in_website>
258
  <show_in_store>1</show_in_store>
260
  <max_order_total translate="label">
261
  <label>Maximum Order Total</label>
262
  <frontend_type>text</frontend_type>
263
+ <sort_order>230</sort_order>
264
  <show_in_default>1</show_in_default>
265
  <show_in_website>1</show_in_website>
266
  <show_in_store>1</show_in_store>
267
  </max_order_total>
268
+ <max_weight translate="label comment">
269
+ <label>Limite de poids</label>
270
+ <sort_order>240</sort_order>
 
271
  <show_in_default>1</show_in_default>
272
  <show_in_website>1</show_in_website>
273
+ <show_in_store>1</show_in_store>
274
+ <comment>
275
+ <![CDATA[
276
+ So Colissimo ne sera pas proposé si le poids dépasse le montant saisi.
277
+ ]]>
278
+ </comment>
279
+ </max_weight>
280
  <sallowspecific translate="label">
281
  <label>Ship to Applicable Countries</label>
282
  <frontend_type>select</frontend_type>
283
+ <sort_order>250</sort_order>
284
  <frontend_class>shipping-applicable-country</frontend_class>
285
  <source_model>adminhtml/system_config_source_shipping_allspecificcountries
286
  </source_model>
288
  <show_in_website>1</show_in_website>
289
  <show_in_store>0</show_in_store>
290
  </sallowspecific>
291
+ <specificcountry translate="label comment">
292
  <label>Ship to Specific Countries</label>
293
  <frontend_type>multiselect</frontend_type>
294
+ <sort_order>260</sort_order>
295
  <source_model>adminhtml/system_config_source_country
296
  </source_model>
297
  <show_in_default>1</show_in_default>
298
  <show_in_website>1</show_in_website>
299
  <show_in_store>0</show_in_store>
300
+ <comment>
301
+ <![CDATA[
302
+ Les pays compatibles sont la France et la Belgique.
303
+ ]]>
304
+ </comment>
305
  <can_be_empty>1</can_be_empty>
306
  </specificcountry>
307
+ <sort_order translate="label">
308
+ <label>Sort Order</label>
309
+ <frontend_type>text</frontend_type>
310
+ <sort_order>270</sort_order>
311
+ <show_in_default>1</show_in_default>
312
+ <show_in_website>1</show_in_website>
313
+ <show_in_store>0</show_in_store>
314
+ </sort_order>
315
  </fields>
316
  </socolissimosimplicite>
317
  </groups>
app/code/community/LaPoste/SoColissimoSimplicite/sql/socolissimosimplicite_setup/mysql4-install-1.0.0.php CHANGED
@@ -1,20 +1,18 @@
1
  <?php
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
-
12
  $installer = $this;
13
-
14
  $installer->startSetup();
15
 
16
  if (!$installer->tableExists($installer->getTable('laposte_socolissimosimplicite_transaction'))) {
17
-
18
  $installer->run(
19
  "-- DROP TABLE IF EXISTS {$this->getTable('laposte_socolissimosimplicite_transaction')};
20
  CREATE TABLE {$this->getTable('laposte_socolissimosimplicite_transaction')} (
@@ -26,7 +24,7 @@ if (!$installer->tableExists($installer->getTable('laposte_socolissimosimplicite
26
  KEY `FK_laposte_socolissimosimplicite_transaction_QUOTE_ID` (`quote_id`),
27
  CONSTRAINT `FK_laposte_socolissimosimplicite_transaction_QUOTE_ID` FOREIGN KEY (`quote_id`) REFERENCES `{$this->getTable('sales_flat_quote')}` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE
28
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT = 10000 COMMENT='colissimo transations';
29
-
30
  -- transaction_id doit contenir entre 5 et 16 caractères
31
  ALTER TABLE {$this->getTable('laposte_socolissimosimplicite_transaction')} AUTO_INCREMENT = 10000;"
32
  );
1
  <?php
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
+ *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
 
11
  $installer = $this;
 
12
  $installer->startSetup();
13
 
14
  if (!$installer->tableExists($installer->getTable('laposte_socolissimosimplicite_transaction'))) {
15
+
16
  $installer->run(
17
  "-- DROP TABLE IF EXISTS {$this->getTable('laposte_socolissimosimplicite_transaction')};
18
  CREATE TABLE {$this->getTable('laposte_socolissimosimplicite_transaction')} (
24
  KEY `FK_laposte_socolissimosimplicite_transaction_QUOTE_ID` (`quote_id`),
25
  CONSTRAINT `FK_laposte_socolissimosimplicite_transaction_QUOTE_ID` FOREIGN KEY (`quote_id`) REFERENCES `{$this->getTable('sales_flat_quote')}` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE
26
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT = 10000 COMMENT='colissimo transations';
27
+
28
  -- transaction_id doit contenir entre 5 et 16 caractères
29
  ALTER TABLE {$this->getTable('laposte_socolissimosimplicite_transaction')} AUTO_INCREMENT = 10000;"
30
  );
app/code/community/LaPoste/SoColissimoSimplicite/sql/socolissimosimplicite_setup/mysql4-uninstall-0.1.0.php CHANGED
@@ -1,6 +1,12 @@
1
  <?php
2
  /**
3
- * Aims to uninstall module
 
 
 
 
 
 
4
  */
5
  $installer = $this;
6
  $installer->startSetup();
@@ -11,4 +17,4 @@ $installer->run(
11
  WHERE path LIKE 'carriers/socolissimosimplicite/%';"
12
  );
13
 
14
- $installer->endSetup();
1
  <?php
2
  /**
3
+ * LaPoste_SoColissimoSimplicite
4
+ *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  $installer = $this;
12
  $installer->startSetup();
17
  WHERE path LIKE 'carriers/socolissimosimplicite/%';"
18
  );
19
 
20
+ $installer->endSetup();
app/code/community/LaPoste/SoColissimoSimplicite/sql/socolissimosimplicite_setup/mysql4-upgrade-1.0.6-1.0.7.php CHANGED
@@ -1,14 +1,13 @@
1
  <?php
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
-
12
  $installer = $this;
13
  $installer->startSetup();
14
 
@@ -128,4 +127,4 @@ $this->addAttribute(
128
  )
129
  );
130
 
131
- $installer->endSetup();
1
  <?php
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
+ *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
 
11
  $installer = $this;
12
  $installer->startSetup();
13
 
127
  )
128
  );
129
 
130
+ $installer->endSetup();
app/code/community/LaPoste/SoColissimoSimplicite/sql/socolissimosimplicite_setup/mysql4-upgrade-1.1.1-1.1.2.php DELETED
@@ -1,23 +0,0 @@
1
- <?php
2
- /**
3
- * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
- */
11
-
12
- $installer = $this;
13
-
14
- $installer->startSetup();
15
-
16
- if ($installer->tableExists($installer->getTable('laposte_socolissimosimplicite_transaction'))) {
17
- $installer->run(
18
- // transaction_id doit contenir entre 5 et 16 caractères
19
- "ALTER TABLE {$this->getTable('laposte_socolissimosimplicite_transaction')} AUTO_INCREMENT = 10000;"
20
- );
21
- }
22
-
23
- $installer->endSetup();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/LaPoste/SoColissimoSimplicite/sql/socolissimosimplicite_setup/mysql4-upgrade-1.1.1-2.0.0.php CHANGED
@@ -2,15 +2,13 @@
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
-
12
  $installer = $this;
13
-
14
  $installer->startSetup();
15
 
16
  if ($installer->tableExists($installer->getTable('laposte_socolissimosimplicite_transaction'))) {
@@ -20,4 +18,4 @@ if ($installer->tableExists($installer->getTable('laposte_socolissimosimplicite_
20
  );
21
  }
22
 
23
- $installer->endSetup();
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
 
11
  $installer = $this;
 
12
  $installer->startSetup();
13
 
14
  if ($installer->tableExists($installer->getTable('laposte_socolissimosimplicite_transaction'))) {
18
  );
19
  }
20
 
21
+ $installer->endSetup();
app/design/frontend/default/default/layout/socolissimosimplicite.xml CHANGED
@@ -3,20 +3,17 @@
3
  /**
4
  * LaPoste_SoColissimoSimplicite
5
  *
6
- * @category LaPoste
7
- * @package LaPoste_SoColissimoSimplicite
8
- * @copyright Copyright (c) 2010 La Poste
9
- * @author Smile (http://www.smile.fr)
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  */
12
-
13
  -->
14
  <layout version="0.1.0">
15
-
16
- <checkout_onepage_index translate="label">
17
  <reference name="content">
18
- <action method="unsetChild"><name>checkout.onepage</name></action>
19
-
20
  <block type="socolissimosimplicite/onepage" name="checkout.onepage" template="checkout/onepage.phtml">
21
  <block type="checkout/onepage_login" name="checkout.onepage.login" as="login" template="checkout/onepage/login.phtml">
22
  <block type="page/html_wrapper" name="checkout.onepage.login.before" as="login_before">
@@ -27,8 +24,8 @@
27
  <block type="checkout/onepage_shipping" name="checkout.onepage.shipping" as="shipping" template="checkout/onepage/shipping.phtml"/>
28
  <block type="checkout/onepage_shipping_method" name="checkout.onepage.shipping_method" as="shipping_method" template="socolissimosimplicite/onepage/shipping_method.phtml">
29
  <block type="socolissimosimplicite/onepage_shipping_method_available" name="checkout.onepage.shipping_method.available" as="available" template="socolissimosimplicite/onepage/shipping_method/available.phtml">
30
- <action method="addItemRender"><type>default</type><block>socolissimosimplicite/onepage_shipping_method_available_item</block><template>socolissimosimplicite/onepage/shipping_method/available/default.phtml</template></action>
31
- <action method="addItemRender"><type>socolissimosimplicite</type><block>socolissimosimplicite/onepage_shipping_method_available_item</block><template>socolissimosimplicite/onepage/shipping_method/available/socolissimosimplicite.phtml</template></action>
32
  </block>
33
  <block type="checkout/onepage_shipping_method_additional" name="checkout.onepage.shipping_method.additional" as="additional" template="checkout/onepage/shipping_method/additional.phtml"/>
34
  </block>
@@ -46,30 +43,23 @@
46
 
47
  <checkout_onepage_shippingmethod>
48
  <block type="socolissimosimplicite/onepage_shipping_method_available" name="root" output="toHtml" template="socolissimosimplicite/onepage/shipping_method/available.phtml">
49
- <action method="addItemRender"><type>default</type><block>socolissimosimplicite/onepage_shipping_method_available_item</block><template>socolissimosimplicite/onepage/shipping_method/available/default.phtml</template></action>
50
- <action method="addItemRender"><type>socolissimosimplicite</type><block>socolissimosimplicite/onepage_shipping_method_available_item</block><template>socolissimosimplicite/onepage/shipping_method/available/socolissimosimplicite.phtml</template></action>
51
  </block>
52
  </checkout_onepage_shippingmethod>
53
-
54
  <socolissimosimplicite_form_send>
55
- <reference name="root">
56
  <action method="setTemplate"><template>socolissimosimplicite/empty.phtml</template></action>
57
  </reference>
58
- <reference name="content">
59
  <block type="socolissimosimplicite/form" name="form.socolissimosimplicite" template="socolissimosimplicite/form.phtml" />
60
  </reference>
61
  </socolissimosimplicite_form_send>
62
-
63
- <socolissimosimplicite_form_success />
64
-
65
  <socolissimosimplicite_form_failure>
66
- <reference name="content">
67
  <block type="core/template" template="socolissimosimplicite/form/failure.phtml" />
68
  </reference>
69
  </socolissimosimplicite_form_failure>
70
-
71
  </layout>
72
-
73
-
74
-
75
-
3
  /**
4
  * LaPoste_SoColissimoSimplicite
5
  *
6
+ * @category LaPoste
7
+ * @package LaPoste_SoColissimoSimplicite
8
+ * @copyright Copyright (c) 2010 La Poste
9
+ * @author Smile (http://www.smile.fr)
10
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  */
 
12
  -->
13
  <layout version="0.1.0">
14
+ <checkout_onepage_index translate="label">
 
15
  <reference name="content">
16
+ <action method="unsetChild"><name>checkout.onepage</name></action>
 
17
  <block type="socolissimosimplicite/onepage" name="checkout.onepage" template="checkout/onepage.phtml">
18
  <block type="checkout/onepage_login" name="checkout.onepage.login" as="login" template="checkout/onepage/login.phtml">
19
  <block type="page/html_wrapper" name="checkout.onepage.login.before" as="login_before">
24
  <block type="checkout/onepage_shipping" name="checkout.onepage.shipping" as="shipping" template="checkout/onepage/shipping.phtml"/>
25
  <block type="checkout/onepage_shipping_method" name="checkout.onepage.shipping_method" as="shipping_method" template="socolissimosimplicite/onepage/shipping_method.phtml">
26
  <block type="socolissimosimplicite/onepage_shipping_method_available" name="checkout.onepage.shipping_method.available" as="available" template="socolissimosimplicite/onepage/shipping_method/available.phtml">
27
+ <action method="addItemRender"><type>default</type><block>socolissimosimplicite/onepage_shipping_method_available_item</block><template>socolissimosimplicite/onepage/shipping_method/available/default.phtml</template></action>
28
+ <action method="addItemRender"><type>socolissimosimplicite</type><block>socolissimosimplicite/onepage_shipping_method_available_item</block><template>socolissimosimplicite/onepage/shipping_method/available/socolissimosimplicite.phtml</template></action>
29
  </block>
30
  <block type="checkout/onepage_shipping_method_additional" name="checkout.onepage.shipping_method.additional" as="additional" template="checkout/onepage/shipping_method/additional.phtml"/>
31
  </block>
43
 
44
  <checkout_onepage_shippingmethod>
45
  <block type="socolissimosimplicite/onepage_shipping_method_available" name="root" output="toHtml" template="socolissimosimplicite/onepage/shipping_method/available.phtml">
46
+ <action method="addItemRender"><type>default</type><block>socolissimosimplicite/onepage_shipping_method_available_item</block><template>socolissimosimplicite/onepage/shipping_method/available/default.phtml</template></action>
47
+ <action method="addItemRender"><type>socolissimosimplicite</type><block>socolissimosimplicite/onepage_shipping_method_available_item</block><template>socolissimosimplicite/onepage/shipping_method/available/socolissimosimplicite.phtml</template></action>
48
  </block>
49
  </checkout_onepage_shippingmethod>
50
+
51
  <socolissimosimplicite_form_send>
52
+ <reference name="root">
53
  <action method="setTemplate"><template>socolissimosimplicite/empty.phtml</template></action>
54
  </reference>
55
+ <reference name="content">
56
  <block type="socolissimosimplicite/form" name="form.socolissimosimplicite" template="socolissimosimplicite/form.phtml" />
57
  </reference>
58
  </socolissimosimplicite_form_send>
59
+
 
 
60
  <socolissimosimplicite_form_failure>
61
+ <reference name="content">
62
  <block type="core/template" template="socolissimosimplicite/form/failure.phtml" />
63
  </reference>
64
  </socolissimosimplicite_form_failure>
 
65
  </layout>
 
 
 
 
app/design/frontend/default/default/template/socolissimosimplicite/empty.phtml CHANGED
@@ -2,11 +2,11 @@
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
app/design/frontend/default/default/template/socolissimosimplicite/form.phtml CHANGED
@@ -2,129 +2,48 @@
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
- ?>
12
  <?php
13
  $_address = $this->getShippingAddress();
14
  $_serviceUnavailableRedirect = $this->getServiceUnavailableRedirect();
15
-
16
  /* @var $_helper LaPoste_SoColissimoSimplicite_Helper_Data */
17
  $_helper = $this->helper('socolissimosimplicite');
18
- ?>
19
 
20
  <?php if (!empty($_serviceUnavailableRedirect)): ?>
21
  <h3><?php echo $this->__("Les options du lieu de livraison ne sont pas disponibles.<br />Le colis sera livré à votre adresse de livraison.") ?></h3>
22
  <p><?php echo $this->__("La page va se mettre à jour à l'étape suivante.") ?></p>
23
  <form name="socolissimosimpliciteform" action="<?php echo $_serviceUnavailableRedirect ?>" target="_parent" method="get"></form>
24
  <?php else: ?>
25
-
26
- <?php // header au format ISO , So Colissimo ne gèrant pas l'UTF-8 ?>
27
- <?php Mage::app()->getResponse()->setHeader("Content-Type", "text/html; charset=ISO-8859-1",true); ?>
28
-
29
  <?php if($this->getRedirectMessage()): ?>
30
- <h3><?php echo utf8_decode($this->getRedirectMessage()); ?></h3>
31
  <?php endif; ?>
32
- <form name="socolissimosimpliciteform" action="<?php echo utf8_decode($this->getUrlFoWithReturnUrlKo()); ?>" method="post">
33
-
34
- <input type="hidden" name="pudoFOId" value="<?php echo utf8_decode($this->getAccountID()); ?>" />
35
-
36
- <?php if ($_address->getPrefix()): ?>
37
- <input type="hidden" name="ceCivility" value="<?php echo utf8_decode($_helper->getPrefixForSoColissimo($_address->getPrefix())); ?>" />
38
- <?php endif; ?>
39
-
40
- <?php if ($_address->getLastname()): ?>
41
- <input type="hidden" name="ceName" value="<?php echo utf8_decode($_address->getLastname()); ?>" />
42
- <?php endif; ?>
43
-
44
- <?php if ($_address->getFirstname()): ?>
45
- <input type="hidden" name="ceFirstName" value="<?php echo utf8_decode($_address->getFirstname()); ?>" />
46
- <?php endif; ?>
47
-
48
- <?php if ($_address->getCompany()): ?>
49
- <input type="hidden" name="ceCompanyName" value="<?php echo utf8_decode($_address->getCompany()); ?>" />
50
- <?php endif; ?>
51
-
52
- <?php if ($this->getShippingAddressStreet(1)): //1ère ligne de l'adresse dans Magento = 3ème champ adresse dans SoCo ?>
53
- <input type="hidden" name="ceAdress3" value="<?php echo utf8_decode($this->getShippingAddressStreet(1)); ?>" />
54
- <?php endif; ?>
55
-
56
- <?php if ($this->getShippingAddressStreet(2)): ?>
57
- <input type="hidden" name="ceAdress1" value="<?php echo utf8_decode($this->getShippingAddressStreet(2)); ?>" />
58
- <?php endif; ?>
59
-
60
- <?php if ($this->getShippingAddressStreet(3)): ?>
61
- <input type="hidden" name="ceAdress2" value="<?php echo utf8_decode($this->getShippingAddressStreet(3)); ?>" />
62
- <?php endif; ?>
63
-
64
- <?php if ($this->getShippingAddressStreet(4)): ?>
65
- <input type="hidden" name="ceAdress4" value="<?php echo utf8_decode($this->getShippingAddressStreet(4)); ?>" />
66
- <?php endif; ?>
67
-
68
- <?php if ($_address->getPostcode()): ?>
69
- <input type="hidden" name="ceZipCode" value="<?php echo utf8_decode($_address->getPostcode()); ?>" />
70
- <?php endif; ?>
71
-
72
- <?php if ($_address->getCity()): ?>
73
- <input type="hidden" name="ceTown" value="<?php echo utf8_decode($_address->getCity()); ?>" />
74
- <?php endif; ?>
75
-
76
- <?php if ($_address->getEmail()): ?>
77
- <input type="hidden" name="ceEmail" value="<?php echo utf8_decode($_address->getEmail()); ?>" />
78
- <?php endif; ?>
79
-
80
- <?php if ($_address->getTelephone()): ?>
81
- <?php // transfer phone number only if its a cell phone ?>
82
- <?php // Same code is used LaPoste_SoColissimoSimplicite_Model_Transaction::_getGeneratedSignature()
83
- $phone = $_address->getTelephone();
84
- $phone = substr($phone, 0, 2);
85
- ?>
86
- <?php if (($phone == '06') || ($phone == '07')): ?>
87
- <input type="hidden" name="cePhoneNumber" value="<?php echo utf8_decode($_address->getTelephone()); ?>" />
88
- <?php else: ?>
89
- <input type="hidden" name="cePhoneNumber" value="" />
90
- <?php endif; ?>
91
- <?php endif; ?>
92
-
93
- <?php if ((float)$_address->getWeight() > 0): ?>
94
- <input type="hidden" name="dyWeight" value="<?php echo utf8_decode($_helper->getFormatedWeight($_address->getWeight())); ?>" />
95
- <?php endif; ?>
96
-
97
- <?php // suits with free shipping which can be set up by cart rules ?>
98
- <?php $forwardingCharges = ($_address->getFreeShipping() === '1') ? 0 : $_address->getShippingAmount(); ?>
99
- <input type="hidden" name="dyForwardingCharges" value="<?php echo utf8_decode($_helper->getFormatedShippingPrice($forwardingCharges)); ?>" />
100
-
101
- <?php if ($_address->getCustomerId()): ?>
102
- <input type="hidden" name="trClientNumber" value="<?php echo utf8_decode($_address->getCustomerId()); ?>" />
103
- <?php endif; ?>
104
-
105
- <?php if ($_address->getQuoteId()): ?>
106
- <input type="hidden" name="trOrderNumber" value="<?php echo utf8_decode($_address->getQuoteId()); ?>" />
107
- <?php endif; ?>
108
-
109
- <input type="hidden" name="numVersion" value="<?php echo utf8_decode($_helper->getNumVersion()) ?>" />
110
-
111
- <?php
112
- /* donnée spécifique transmis au service, non interprétée par celui-ci et retournée
113
- * en paramètre en cas de succès ou d'échec, non utilisée ici
114
- * <input type="hidden" name="trParamPlus" value="" />
115
- */
116
- ?>
117
-
118
- <input type="hidden" name="trReturnUrlOk" value="<?php echo utf8_decode($_helper->getSuccessUrl()); ?>" />
119
-
120
- <input type="hidden" name="orderId" value="<?php echo utf8_decode($this->getTransaction()->getId()); ?>" />
121
-
122
- <input type="hidden" name="signature" value="<?php echo utf8_decode($this->getTransaction()->getSignature()); ?>" />
123
  </form>
124
-
125
  <?php endif ?>
126
  <script type="text/javascript">
127
  //<![CDATA[
128
  document.socolissimosimpliciteform.submit();
129
  //]]>
130
- </script>
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
+ ?>
12
  <?php
13
  $_address = $this->getShippingAddress();
14
  $_serviceUnavailableRedirect = $this->getServiceUnavailableRedirect();
 
15
  /* @var $_helper LaPoste_SoColissimoSimplicite_Helper_Data */
16
  $_helper = $this->helper('socolissimosimplicite');
17
+ ?>
18
 
19
  <?php if (!empty($_serviceUnavailableRedirect)): ?>
20
  <h3><?php echo $this->__("Les options du lieu de livraison ne sont pas disponibles.<br />Le colis sera livré à votre adresse de livraison.") ?></h3>
21
  <p><?php echo $this->__("La page va se mettre à jour à l'étape suivante.") ?></p>
22
  <form name="socolissimosimpliciteform" action="<?php echo $_serviceUnavailableRedirect ?>" target="_parent" method="get"></form>
23
  <?php else: ?>
 
 
 
 
24
  <?php if($this->getRedirectMessage()): ?>
25
+ <h3><?php echo $this->getRedirectMessage(); ?></h3>
26
  <?php endif; ?>
27
+ <form name="socolissimosimpliciteform" action="<?php echo $this->getUrlFoWithReturnUrlKo(); ?>" method="post">
28
+ <?php // account id ?>
29
+ <input type="hidden" name="pudoFOId" value="<?php echo $this->getAccountID(); ?>" />
30
+
31
+ <?php // champs de la transaction ?>
32
+ <?php $_fields = $_helper->getFieldsToSend($this->getTransaction()->getId(), $_address); ?>
33
+ <?php unset($_fields['trReturnUrlKo']); ?>
34
+ <?php foreach ($_fields as $_field => $_value): ?>
35
+ <?php // on ignore les champs vides (pas obligatoire mais cela permet d'envoyer moins de données) ?>
36
+ <?php if ($_value !== null && $_value !== '' && $_value !== false): ?>
37
+ <input type="hidden" name="<?php echo $_field; ?>" value="<?php echo $_value; ?>" />
38
+ <?php endif; ?>
39
+ <?php endforeach; ?>
40
+
41
+ <?php // signature de la transaction ?>
42
+ <input type="hidden" name="signature" value="<?php echo $this->getTransaction()->getSignature(); ?>" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  </form>
 
44
  <?php endif ?>
45
  <script type="text/javascript">
46
  //<![CDATA[
47
  document.socolissimosimpliciteform.submit();
48
  //]]>
49
+ </script>
app/design/frontend/default/default/template/socolissimosimplicite/form/failure.phtml CHANGED
@@ -2,11 +2,11 @@
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <h1><?php echo $this->__('Une erreur technique a été rencontrée') ?></h1>
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <h1><?php echo $this->__('Une erreur technique a été rencontrée') ?></h1>
app/design/frontend/default/default/template/socolissimosimplicite/onepage/shipping_method.phtml CHANGED
@@ -2,11 +2,11 @@
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <?php
@@ -19,7 +19,7 @@ $_helper = $this->helper('socolissimosimplicite');
19
  </div>
20
  <script type="text/javascript">
21
  //<![CDATA[
22
- // Socolissimo helper
23
  ShippingMethod.prototype.isSocolissimoSelected = function() {
24
  var rateCodeSoColissimoSimplicite = '<?php echo $_helper->getRateCode()?>';
25
  var methods = document.getElementsByName('shipping_method');
@@ -31,21 +31,27 @@ $_helper = $this->helper('socolissimosimplicite');
31
  }
32
  };
33
 
34
- // update method save to redirect onSuccess to method which deals with colissimo choice
35
  ShippingMethod.prototype.saveWithColissimo = function() {
36
- if (checkout.loadWaiting!=false) return;
37
- if (this.validate()) {
38
- checkout.setLoadWaiting('shipping-method');
39
- var request = new Ajax.Request(
40
- this.saveUrl,
41
- {
42
- method:'post',
43
- onComplete: this.onCompleteSaveWithColissimo.bind(this), // preserves context when calling these methods
44
- onSuccess: this.redirectToColissimo.bind(this),
45
- onFailure: checkout.ajaxFailure.bind(checkout),
46
- parameters: Form.serialize(this.form)
47
- }
48
- );
 
 
 
 
 
 
49
  }
50
  };
51
 
@@ -61,7 +67,7 @@ $_helper = $this->helper('socolissimosimplicite');
61
  this.savedAllowedSteps = [];
62
 
63
  var steps = document.getElementById('checkoutSteps').children;
64
- for (i=0; i<steps.length; i++) {
65
  if (steps[i].hasClassName('allow')) {
66
  this.savedAllowedSteps[i] = true;
67
  steps[i].removeClassName('allow');
@@ -71,32 +77,40 @@ $_helper = $this->helper('socolissimosimplicite');
71
  }
72
  };
73
 
74
- // Hack to allow checkout unfreez after a call to freezSteps
75
  ShippingMethod.prototype.unfreezSteps = function() {
76
- if (this.savedAllowedSteps != undefined) {
77
- var steps = document.getElementById('checkoutSteps').children;
78
- for (i=0; i<steps.length; i++) {
79
- if (this.savedAllowedSteps[i] == true) {
80
- steps[i].addClassName('allow');
81
  }
82
  }
83
  }
84
- }
85
 
86
- // check if colissimo is selected, then redirect on form which post data on this platform
87
  ShippingMethod.prototype.redirectToColissimo = function(transport) {
88
  var urlFormSoColissimoSimplicite = '<?php echo $_helper->getFormUrl()?>';
89
  var methods = document.getElementsByName('shipping_method');
90
 
91
  if (this.isSocolissimoSelected()) {
92
- // Remove ending slash for iframe src
93
  urlFormSoColissimoSimplicite = urlFormSoColissimoSimplicite.replace(/\/$/, '');
94
 
95
- var socoIframe= document.getElementById('socolissimosimplicite_iframe');
96
- socoIframe.src = urlFormSoColissimoSimplicite;
97
- socoIframe.style.display = 'block';
 
 
 
 
 
98
 
99
- // Disabling all methods during iframe validation
 
 
 
100
  for (var j=0; j<methods.length; j++) {
101
  methods[j].disabled = 'disabled';
102
  }
@@ -106,24 +120,23 @@ $_helper = $this->helper('socolissimosimplicite');
106
 
107
  document.getElementById('cancel_soco_shipping_button').style.display = 'block';
108
  checkout.setLoadWaiting('shipping-method');
109
-
110
- return;
 
111
  }
112
-
113
- // pass to next step (= default onSave binding)
114
- ShippingMethod.prototype.nextStep(transport);
115
  };
116
 
117
- // Cancel socolissimo iframe and reenable disbaled checkout feature
118
  ShippingMethod.prototype.cancelSocollisimo = function() {
119
  var methods = document.getElementsByName('shipping_method');
120
  for (var i=0; i<methods.length; i++) {
121
  methods[i].disabled = '';
122
  }
123
 
124
- var socoIframe= document.getElementById('socolissimosimplicite_iframe');
125
- socoIframe.src = 'about:blank';
126
- socoIframe.style.display = 'none';
 
127
 
128
  this.resetLoadWaiting();
129
  document.getElementById('cancel_soco_shipping_button').style.display = 'none';
@@ -140,10 +153,10 @@ $_helper = $this->helper('socolissimosimplicite');
140
  <?php echo $this->getChildHtml('additional') ?>
141
  </div>
142
  <div class="buttons-set">
143
- <button id="cancel_soco_shipping_button" type="button" class="button" onclick="shippingMethod.cancelSocollisimo();" style="display:none;"><span><span><?php echo $this->__('Annuler SoCollissimo') ?></span></span></button>
144
  </div>
145
  <div class="buttons-set" id="shipping-method-buttons-container">
146
- <p class="back-link"><a href="#" onclick="checkout.back(); return false;"><small>&laquo; </small><?php echo $this->__('Back') ?></a></p>
147
  <button type="button" class="button" onclick="shippingMethod.saveWithColissimo();"><span><span><?php echo $this->__('Continue') ?></span></span></button>
148
  <span id="shipping-method-please-wait" class="please-wait" style="display:none;">
149
  <img src="<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif') ?>" alt="<?php echo $this->__('Loading next step...') ?>" title="<?php echo $this->__('Loading next step...') ?>" class="v-middle" /> <?php echo $this->__('Loading next step...') ?>
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <?php
19
  </div>
20
  <script type="text/javascript">
21
  //<![CDATA[
22
+ // So Colissimo helper
23
  ShippingMethod.prototype.isSocolissimoSelected = function() {
24
  var rateCodeSoColissimoSimplicite = '<?php echo $_helper->getRateCode()?>';
25
  var methods = document.getElementsByName('shipping_method');
31
  }
32
  };
33
 
34
+ // Update method save to redirect onSuccess to method which deals with colissimo choice
35
  ShippingMethod.prototype.saveWithColissimo = function() {
36
+ if (document.getElementById('socolissimo-error') !== null) {
37
+ // Skip IFrame if So Colissimo platform is unavailable
38
+ return this.save();
39
+ } else if (checkout.loadWaiting != false) {
40
+ return;
41
+ } else {
42
+ if (this.validate()) {
43
+ checkout.setLoadWaiting('shipping-method');
44
+ var request = new Ajax.Request(
45
+ this.saveUrl,
46
+ {
47
+ method:'post',
48
+ onComplete: this.onCompleteSaveWithColissimo.bind(this), // preserves context when calling these methods
49
+ onSuccess: this.redirectToColissimo.bind(this),
50
+ onFailure: checkout.ajaxFailure.bind(checkout),
51
+ parameters: Form.serialize(this.form)
52
+ }
53
+ );
54
+ }
55
  }
56
  };
57
 
67
  this.savedAllowedSteps = [];
68
 
69
  var steps = document.getElementById('checkoutSteps').children;
70
+ for (var i=0; i<steps.length; i++) {
71
  if (steps[i].hasClassName('allow')) {
72
  this.savedAllowedSteps[i] = true;
73
  steps[i].removeClassName('allow');
77
  }
78
  };
79
 
80
+ // Hack to allow checkout unfreeze after a call to freezSteps
81
  ShippingMethod.prototype.unfreezSteps = function() {
82
+ if (typeof(this.savedAllowedSteps) !== 'undefined') {
83
+ var steps = document.getElementById('checkoutSteps').children;
84
+ for (var i=0; i<steps.length; i++) {
85
+ if (this.savedAllowedSteps[i] === true) {
86
+ steps[i].addClassName('allow');
87
  }
88
  }
89
  }
90
+ };
91
 
92
+ // Check if So Colissimo is selected, then redirect on form which post data on this platform
93
  ShippingMethod.prototype.redirectToColissimo = function(transport) {
94
  var urlFormSoColissimoSimplicite = '<?php echo $_helper->getFormUrl()?>';
95
  var methods = document.getElementsByName('shipping_method');
96
 
97
  if (this.isSocolissimoSelected()) {
98
+ // Remove ending slash for IFrame src
99
  urlFormSoColissimoSimplicite = urlFormSoColissimoSimplicite.replace(/\/$/, '');
100
 
101
+ var socoIFrameContainer = document.getElementById('socolissimosimplicite_iframe_wrapper');
102
+
103
+ var socoIFrame = document.createElement('iframe');
104
+ socoIFrame.id = 'socolissimosimplicite_iframe';
105
+ socoIFrame.frameBorder = 0;
106
+ socoIFrame.width = '572px';
107
+ socoIFrame.height = '1100px';
108
+ socoIFrame.setAttribute('src', urlFormSoColissimoSimplicite);
109
 
110
+ // Append the IFrame to the wrapper
111
+ socoIFrameContainer.appendChild(socoIFrame);
112
+
113
+ // Disabling all methods during IFrame validation
114
  for (var j=0; j<methods.length; j++) {
115
  methods[j].disabled = 'disabled';
116
  }
120
 
121
  document.getElementById('cancel_soco_shipping_button').style.display = 'block';
122
  checkout.setLoadWaiting('shipping-method');
123
+ } else {
124
+ // Go to next step (= default onSave binding)
125
+ ShippingMethod.prototype.nextStep(transport);
126
  }
 
 
 
127
  };
128
 
129
+ // Cancel So Cocolissimo IFrame and reenable disabled checkout feature
130
  ShippingMethod.prototype.cancelSocollisimo = function() {
131
  var methods = document.getElementsByName('shipping_method');
132
  for (var i=0; i<methods.length; i++) {
133
  methods[i].disabled = '';
134
  }
135
 
136
+ var socoIframeContainer = document.getElementById('socolissimosimplicite_iframe_wrapper');
137
+ while (socoIframeContainer.firstChild) {
138
+ socoIframeContainer.removeChild(socoIframeContainer.firstChild);
139
+ }
140
 
141
  this.resetLoadWaiting();
142
  document.getElementById('cancel_soco_shipping_button').style.display = 'none';
153
  <?php echo $this->getChildHtml('additional') ?>
154
  </div>
155
  <div class="buttons-set">
156
+ <button id="cancel_soco_shipping_button" type="button" class="button" onclick="shippingMethod.cancelSocollisimo();" style="display:none;"><span><span><?php echo $this->__('Annuler So Colissimo') ?></span></span></button>
157
  </div>
158
  <div class="buttons-set" id="shipping-method-buttons-container">
159
+ <p class="back-link"><a href="#" onclick="checkout.back();return false;"><small>&laquo; </small><?php echo $this->__('Back') ?></a></p>
160
  <button type="button" class="button" onclick="shippingMethod.saveWithColissimo();"><span><span><?php echo $this->__('Continue') ?></span></span></button>
161
  <span id="shipping-method-please-wait" class="please-wait" style="display:none;">
162
  <img src="<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif') ?>" alt="<?php echo $this->__('Loading next step...') ?>" title="<?php echo $this->__('Loading next step...') ?>" class="v-middle" /> <?php echo $this->__('Loading next step...') ?>
app/design/frontend/default/default/template/socolissimosimplicite/onepage/shipping_method/available.phtml CHANGED
@@ -2,11 +2,11 @@
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <?php
@@ -14,157 +14,60 @@
14
  $_socoHelper = $this->helper('socolissimosimplicite');
15
  ?>
16
 
17
- <?php if (version_compare(Mage::getVersion(), '1.4.2.0', '<=')
18
- or (version_compare(Mage::getVersion(), '1.6.0.0', '>=') and version_compare(Mage::getVersion(), '1.10.0.0', '<'))): ?>
19
-
20
- <?php if (!($_shippingRateGroups = $this->getShippingRates())): ?>
21
- <p><?php echo $this->__('Sorry, no quotes are available for this order at this time.') ?></p>
22
- <?php else: ?>
23
- <dl class="sp-methods">
24
- <?php $_sole = count($_shippingRateGroups) == 1; foreach ($_shippingRateGroups as $code => $_rates): ?>
25
- <dt><?php echo $this->getCarrierName($code) ?></dt>
26
- <dd>
27
- <ul>
28
- <?php $_sole = $_sole && count($_rates) == 1; foreach ($_rates as $_rate): ?>
29
- <li>
30
- <?php if ($_rate->getErrorMessage()): ?>
31
- <ul class="messages"><li class="error-msg"><ul><li><?php echo $_rate->getErrorMessage() ?></li></ul></li></ul>
32
- <?php else: ?>
33
- <?php if ($_sole) : ?>
34
- <span class="no-display"><input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>" checked="checked" /></span>
35
- <?php else: ?>
36
- <input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>"<?php if($_rate->getCode()===$this->getAddressShippingMethod()) echo ' checked="checked"' ?> class="radio" />
37
- <?php endif; ?>
38
- <?php echo $this->getItemHtml($_rate) ?>
39
-
40
- <?php // disponibilité de la plateforme soco ?>
41
- <?php if ($_rate->getCode() == $_socoHelper->getRateCode() and !$this->getServiceIsAvailable()): ?>
42
- <ul class="messages"><li class="error-msg"><ul><li><?php echo $this->getServiceNotAvailableMessage() ?></li></ul></li></ul>
43
- <?php endif ?>
44
-
45
- <?php if ($_rate->getCode() == $_socoHelper->getRateCode() and $this->getServiceIsAvailable()): ?>
46
- <iframe id="socolissimosimplicite_iframe" src="about:blank" style="width:572px; height:1100px; border: 0 none; display:none;"></iframe>
47
- <?php endif ?>
48
- <?php endif ?>
49
- </li>
50
- <?php endforeach; ?>
51
- </ul>
52
- </dd>
53
- <?php endforeach; ?>
54
- </dl>
55
- <?php endif; ?>
56
-
57
- <?php // Magento >= 1.5 ?>
58
  <?php else: ?>
59
-
60
- <?php if (!($_shippingRateGroups = $this->getShippingRates())): ?>
61
- <p><?php echo $this->__('Sorry, no quotes are available for this order at this time.') ?></p>
62
- <?php else: ?>
63
-
 
 
 
 
 
64
  <dl class="sp-methods">
65
 
66
- <?php // fix javascript bug on community 1.5 ?>
67
- <?php if (version_compare(Mage::getVersion(), '1.5.0.0', '>=') and version_compare(Mage::getVersion(), '1.6.0.0', '<')): ?>
68
- <script type="text/javascript">
69
- //<![CDATA[
70
- var quoteBaseGrandTotal = <?php echo (float)$this->getQuoteBaseGrandTotal(); ?>;
71
- var checkQuoteBaseGrandTotal = quoteBaseGrandTotal;
72
- var lastPrice;
73
- //]]>
74
- </script>
75
- <?php endif; ?>
76
-
77
- <?php $shippingMe = array(); ?>
78
- <?php $_sole = count($_shippingRateGroups) == 1; foreach ($_shippingRateGroups as $code => $_rates): ?>
79
-
80
- <dt><?php echo $this->getCarrierName($code) ?></dt>
81
- <dd>
82
- <ul>
83
- <?php $_sole = $_sole && count($_rates) == 1; foreach ($_rates as $_rate): ?>
84
- <?php $shippingMe[] = "'".$_rate->getCode()."':".(float)$_rate->getPrice(); ?>
85
- <li>
86
- <?php if ($_rate->getErrorMessage()): ?>
87
- <ul class="messages"><li class="error-msg"><ul><li><?php echo $_rate->getErrorMessage() ?></li></ul></li></ul>
88
- <?php else: ?>
89
- <?php if ($_sole) : ?>
90
- <span class="no-display"><input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>" checked="checked" /></span>
91
- <?php else: ?>
92
- <input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>"<?php if($_rate->getCode()===$this->getAddressShippingMethod()) echo ' checked="checked"' ?> class="radio" onchange="return includingShipping('<?php echo $_rate->getCode();?>');"/>
93
 
94
- <script type="text/javascript">
 
95
  //<![CDATA[
96
- <?php if ($_rate->getCode()===$this->getAddressShippingMethod()): ?>
97
- lastPrice = <?php echo (float)$_rate->getPrice(); ?>;
98
- <?php endif; ?>
99
  //]]>
100
- </script>
101
-
102
- <?php endif; ?>
103
-
104
- <?php // socolissimo ?>
105
- <?php if ($_rate->getCode() == $_socoHelper->getRateCode()): ?>
106
-
107
- <?php // disponibilité de la plateforme soco ?>
108
- <?php if ($_rate->getCode() == $_socoHelper->getRateCode() and !$this->getServiceIsAvailable()): ?>
109
- <ul class="messages"><li class="error-msg"><ul><li><?php echo $this->getServiceNotAvailableMessage() ?></li></ul></li></ul>
110
- <?php else: ?>
111
- <?php
112
- $_helper = $this->helper('socolissimosimplicite');
113
- $_excl = $this->getShippingPrice($_rate->getPrice(), $this->helper('tax')->displayShippingPriceIncludingTax());
114
- ?>
115
- <label for="s_method_<?php echo $_rate->getCode() ?>"><?php echo $_rate->getMethodTitle() ?> <?php echo $_excl; ?></label>
116
- <br />
117
- <?php echo $_helper->getSelectMessage() ?>
118
- <?php endif; ?>
119
-
120
- <?php if ($_rate->getCode() == $_socoHelper->getRateCode() and $this->getServiceIsAvailable()): ?>
121
- <iframe id="socolissimosimplicite_iframe" src="about:blank" style="width:572px; height:1100px; border: 0 none; display:none;"></iframe>
122
- <?php endif ?>
123
 
124
- <?php // others methods ?>
125
- <?php else: ?>
126
- <label for="s_method_<?php echo $_rate->getCode() ?>"><?php echo $_rate->getMethodTitle() ?>
127
- <?php $_excl = $this->getShippingPrice($_rate->getPrice(), $this->helper('tax')->displayShippingPriceIncludingTax()); ?>
128
- <?php $_incl = $this->getShippingPrice($_rate->getPrice(), true); ?>
129
- <?php echo $_excl; ?>
130
- <?php if ($this->helper('tax')->displayShippingBothPrices() && $_incl != $_excl): ?>
131
- (<?php echo $this->__('Incl. Tax'); ?> <?php echo $_incl; ?>)
132
- <?php endif; ?>
133
- </label>
134
- <?php endif; ?>
135
 
136
- <?php endif ?>
137
- </li>
138
- <?php endforeach; ?>
139
- </ul>
140
- </dd>
141
- <?php endforeach; ?>
 
 
 
 
 
 
 
 
142
  </dl>
143
- <script type="text/javascript">
144
- //<![CDATA[
145
- <?php if (!empty($shippingMe)): ?>
146
- var shippingMe = {<?php echo implode(',',$shippingMe); ?>};
147
- <?php endif; ?>
148
-
149
- function includingShipping(getShippingCode)
150
- {
151
- <?php if (!empty($shippingMe)): ?>
152
- var newPrice = shippingMe[getShippingCode];
153
- if (!lastPrice) {
154
- lastPrice = newPrice;
155
- quoteBaseGrandTotal += newPrice;
156
- }
157
- if (newPrice != lastPrice) {
158
- quoteBaseGrandTotal += (newPrice-lastPrice);
159
- lastPrice = newPrice;
160
-
161
- }
162
- <?php endif; ?>
163
- checkQuoteBaseGrandTotal = quoteBaseGrandTotal;
164
- return false;
165
- }
166
- //]]>
167
- </script>
168
- <?php endif; ?>
169
-
170
  <?php endif; ?>
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <?php
14
  $_socoHelper = $this->helper('socolissimosimplicite');
15
  ?>
16
 
17
+ <?php if (!($_shippingRateGroups = $this->getShippingRates())): ?>
18
+ <p><?php echo $this->__('Sorry, no quotes are available for this order at this time.'); ?></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  <?php else: ?>
20
+ <?php // fix javascript bug on community 1.5 ?>
21
+ <?php if (version_compare(Mage::getVersion(), '1.5.0.0', '>=') and version_compare(Mage::getVersion(), '1.6.0.0', '<')): ?>
22
+ <script type="text/javascript">
23
+ //<![CDATA[
24
+ var lastPrice = null;
25
+ var quoteBaseGrandTotal = <?php echo (float)$this->getQuoteBaseGrandTotal() ?>;
26
+ var checkQuoteBaseGrandTotal = quoteBaseGrandTotal;
27
+ //]]>
28
+ </script>
29
+ <?php endif; ?>
30
  <dl class="sp-methods">
31
 
32
+ <?php $_sole = count($_shippingRateGroups) == 1; foreach ($_shippingRateGroups as $code => $_rates): ?>
33
+ <dt><?php echo $this->getCarrierName($code) ?></dt>
34
+ <dd>
35
+ <ul>
36
+ <?php foreach ($_rates as $_rate): ?>
37
+ <?php $shippingCodePrice[] = "'".$_rate->getCode()."':".(float)$_rate->getPrice(); ?>
38
+ <li>
39
+ <?php if ($_rate->getErrorMessage()): ?>
40
+ <ul class="messages"><li class="error-msg"><ul><li><?php echo $_rate->getErrorMessage() ?></li></ul></li></ul>
41
+ <?php else: ?>
42
+ <?php if ($_sole) : ?>
43
+ <span class="no-display"><input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>" checked="checked" /></span>
44
+ <?php else: ?>
45
+ <input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>"<?php if($_rate->getCode()===$this->getAddressShippingMethod()) echo ' checked="checked"' ?> class="radio"/>
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
+ <?php if ($_rate->getCode() === $this->getAddressShippingMethod()): ?>
48
+ <script type="text/javascript">
49
  //<![CDATA[
50
+ lastPrice = <?php echo (float)$_rate->getPrice() ?>;
 
 
51
  //]]>
52
+ </script>
53
+ <?php endif ?>
54
+ <?php endif ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
+ <?php echo $this->getItemHtml($_rate); ?>
 
 
 
 
 
 
 
 
 
 
57
 
58
+ <?php // disponibilité de la plateforme soco ?>
59
+ <?php if ($_rate->getCode() == $_socoHelper->getRateCode()): ?>
60
+ <?php if ($_socoHelper->checkServiceAvailability()): ?>
61
+ <div id="socolissimosimplicite_iframe_wrapper"></div>
62
+ <?php else: ?>
63
+ <ul class="messages" id="socolissimo-error"><li class="error-msg"><ul><li><?php echo $_socoHelper->getServiceNotAvailableMessage(); ?></li></ul></li></ul>
64
+ <?php endif; ?>
65
+ <?php endif; ?>
66
+ <?php endif ?>
67
+ </li>
68
+ <?php endforeach ?>
69
+ </ul>
70
+ </dd>
71
+ <?php endforeach; ?>
72
  </dl>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  <?php endif; ?>
app/design/frontend/default/default/template/socolissimosimplicite/onepage/shipping_method/available/default.phtml CHANGED
@@ -2,11 +2,11 @@
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <?php $_rate = $this->getRate() ?>
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
  *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <?php $_rate = $this->getRate() ?>
app/design/frontend/default/default/template/socolissimosimplicite/onepage/shipping_method/available/socolissimosimplicite.phtml CHANGED
@@ -1,18 +1,22 @@
1
  <?php
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
- *
5
- * @category LaPoste
6
- * @package LaPoste_SoColissimoSimplicite
7
- * @copyright Copyright (c) 2010 La Poste
8
- * @author Smile (http://www.smile.fr)
9
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <?php
13
  $_rate = $this->getRate();
 
14
  $_helper = $this->helper('socolissimosimplicite');
 
15
  $_excl = $this->getShippingPrice($_rate->getPrice(), $this->helper('tax')->displayShippingPriceIncludingTax());
 
 
16
  ?>
17
  <label for="s_method_<?php echo $_rate->getCode() ?>"><?php echo $_rate->getMethodTitle() ?> <?php echo $_excl; ?></label>
18
  <br />
1
  <?php
2
  /**
3
  * LaPoste_SoColissimoSimplicite
4
+ *
5
+ * @category LaPoste
6
+ * @package LaPoste_SoColissimoSimplicite
7
+ * @copyright Copyright (c) 2010 La Poste
8
+ * @author Smile (http://www.smile.fr)
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
  */
11
  ?>
12
  <?php
13
  $_rate = $this->getRate();
14
+ /* @var $_helper LaPoste_SocolissimoSimplicite_Helper_Data */
15
  $_helper = $this->helper('socolissimosimplicite');
16
+ // get the shipping price
17
  $_excl = $this->getShippingPrice($_rate->getPrice(), $this->helper('tax')->displayShippingPriceIncludingTax());
18
+ // convert the shipping price to a formatted label
19
+ $_excl = Mage::helper('socolissimosimplicite')->getShippingPriceLabel($_excl);
20
  ?>
21
  <label for="s_method_<?php echo $_rate->getCode() ?>"><?php echo $_rate->getMethodTitle() ?> <?php echo $_excl; ?></label>
22
  <br />
app/etc/modules/LaPoste_SoColissimoSimplicite.xml CHANGED
@@ -3,11 +3,11 @@
3
  /**
4
  * LaPoste_SoColissimoSimplicite
5
  *
6
- * @category LaPoste
7
- * @package LaPoste_SoColissimoSimplicite
8
- * @copyright Copyright (c) 2010 La Poste
9
- * @author Smile (http://www.smile.fr)
10
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  */
12
  -->
13
  <config>
3
  /**
4
  * LaPoste_SoColissimoSimplicite
5
  *
6
+ * @category LaPoste
7
+ * @package LaPoste_SoColissimoSimplicite
8
+ * @copyright Copyright (c) 2010 La Poste
9
+ * @author Smile (http://www.smile.fr)
10
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
11
  */
12
  -->
13
  <config>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>ColiPoste_La_Poste_So_Colissimo</name>
4
- <version>2.1.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
@@ -18,16 +18,16 @@ So Colissimo offre le choix parmi 5 solutions de livraison et un grand r&#xE9;se
18
  * mon commer&#xE7;ant : livraison chez l'un des nombreux commer&#xE7;ants de notre r&#xE9;seau partenaire.&#xD;
19
  &#xD;
20
  Test&#xE9; et valid&#xE9; sur Magento :&#xD;
21
- - CE 1.3.2.4, CE 1.4, CE 1.5.0.1, CE 1.6.1.0, CE 1.7&#xD;
22
  - PE 1.8&#xD;
23
  - EE 1.8, EE 1.9, EE 1.10, EE 1.11, EE 1.12&#xD;
24
  &#xD;
25
  R&#xE9;alisation par Smile.</description>
26
  <notes>Compatible 1.7</notes>
27
  <authors><author><name>Berlioz</name><user>Aline</user><email>Aline.BERLIOZ@laposte.fr</email></author></authors>
28
- <date>2012-10-12</date>
29
- <time>15:33:12</time>
30
- <contents><target name="magedesign"><dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="template"><dir name="socolissimosimplicite"><file name="empty.phtml" hash="01e4359097f904f0caa50d7175d1fa3c"/><dir name="form"><file name="failure.phtml" hash="b0692966e1ed1e32d31ad676ccd3dcba"/></dir><file name="form.phtml" hash="6a8101230247b7884c4ba82b0a58eadb"/><dir name="onepage"><dir name="shipping_method"><dir name="available"><file name="default.phtml" hash="2f84bc01d0599cfe27ef03a4c2813795"/><file name="socolissimosimplicite.phtml" hash="642ba70f2faa328f7e3afc10ab3876ec"/></dir><file name="available.phtml" hash="42e537691ecb402760428b4927c4f63c"/></dir><file name="shipping_method.phtml" hash="883c521ba33b25bf19aef748bcd51713"/></dir></dir></dir><dir name="layout"><file name="socolissimosimplicite.xml" hash="ecb0d6e12eec4606a54b12e421e9ff72"/></dir></dir></dir></dir></dir></target><target name="magelocale"><dir><dir name="fr_FR"><file name="LaPoste_SoColissimoSimplicite.csv" hash="ddc252df7c3ca35cc4bf5bbe7fdb9433"/></dir></dir></target><target name="magecommunity"><dir><dir name="LaPoste"><dir name="SoColissimoSimplicite"><dir name="Block"><file name="Form.php" hash="6bf92465fc24a46184653cb93156ef06"/><dir name="Onepage"><dir name="Shipping"><dir name="Method"><dir name="Available"><file name="Item.php" hash="f53ff832b868363db948d30d66d317bc"/></dir><file name="Available.php" hash="934af40303dc2217111d2b0bae90a0c2"/></dir></dir></dir><file name="Onepage.php" hash="79b4d36b3bff494f04605b860b2a73b0"/></dir><dir name="Helper"><file name="Data.php" hash="140ab1f630c88d52ab087a657b3d8373"/></dir><dir name="Model"><dir name="Carrier"><file name="ShippingMethod.php" hash="ddf5335367e2b73f702c59571caeb208"/></dir><dir name="Mysql4"><dir name="Transaction"><file name="Collection.php" hash="dc2f61004ac7acd0af8f10574ec41880"/></dir><file name="Transaction.php" hash="0f5a3d0c1b36f3702c737bdec5b6a4cb"/></dir><file name="Observer.php" hash="134b79e2c399ff66842a802df0a1c0c4"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Shipping"><file name="Amountbasetype.php" hash="bca2ac197de8909cfe622b05c2f89cca"/></dir></dir></dir></dir><file name="Transaction.php" hash="b5e23e1d5dde9b79b58fca524efaa766"/></dir><dir name="Test"><dir name="Model"><dir name="Carrier"><file name="ShippingMethodTest.php" hash="ae2232a65e04ecbd92e17741d26c87da"/></dir></dir></dir><dir name="controllers"><file name="FormController.php" hash="f970c2ed436c81dc3a342931d6041f1c"/><file name="OnepageController.php" hash="f0758f5e2c0873ba517ab675672b2892"/></dir><dir name="etc"><file name="config.xml" hash="fe346d1b075b255a3ba84054a7ab3455"/><file name="system.xml" hash="0250e51f18b510fc093054ae524ff0ff"/></dir><dir name="sql"><dir name="socolissimosimplicite_setup"><file name="mysql4-install-1.0.0.php" hash="52761c955270d44c5a0ca4b28b86d70d"/><file name="mysql4-uninstall-0.1.0.php" hash="a0907ec1437960b6587d87827ad2ba24"/><file name="mysql4-upgrade-1.0.6-1.0.7.php" hash="829fcd5f192109ec0722a3269e8737c5"/><file name="mysql4-upgrade-1.1.1-1.1.2.php" hash="c650fe23e6361546e3c8cc26b071cbf7"/><file name="mysql4-upgrade-1.1.1-2.0.0.php" hash="c650fe23e6361546e3c8cc26b071cbf7"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir><dir name="modules"><file name="LaPoste_SoColissimoSimplicite.xml" hash="b95ad07dda6ce0fb25d6ece5750d0f0d"/></dir></dir></target></contents>
31
  <compatible/>
32
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
33
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>ColiPoste_La_Poste_So_Colissimo</name>
4
+ <version>2.2.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
18
  * mon commer&#xE7;ant : livraison chez l'un des nombreux commer&#xE7;ants de notre r&#xE9;seau partenaire.&#xD;
19
  &#xD;
20
  Test&#xE9; et valid&#xE9; sur Magento :&#xD;
21
+ - CE 1.3.2.4, CE 1.4.1.1, CE 1.4.2.0, CE 1.5.1.0, CE 1.6.1.0, CE 1.6.2.0, CE 1.7.0.0, CE 1.7.0.2&#xD;
22
  - PE 1.8&#xD;
23
  - EE 1.8, EE 1.9, EE 1.10, EE 1.11, EE 1.12&#xD;
24
  &#xD;
25
  R&#xE9;alisation par Smile.</description>
26
  <notes>Compatible 1.7</notes>
27
  <authors><author><name>Berlioz</name><user>Aline</user><email>Aline.BERLIOZ@laposte.fr</email></author></authors>
28
+ <date>2013-05-14</date>
29
+ <time>15:49:24</time>
30
+ <contents><target name="magedesign"><dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="template"><dir name="socolissimosimplicite"><file name="empty.phtml" hash="e23b28c9dc36e8e3fae4a71a504ced16"/><dir name="form"><file name="failure.phtml" hash="6899294fef95e8ba97e923a95ce6e800"/></dir><file name="form.phtml" hash="25e9ef6a8adea89c8a85554d06102da3"/><dir name="onepage"><dir name="shipping_method"><dir name="available"><file name="default.phtml" hash="abd730520d57a1eaf53f9b1e145c9496"/><file name="socolissimosimplicite.phtml" hash="b3f9065c10b7f6aee499e8a25ef210e8"/></dir><file name="available.phtml" hash="caa8262a0d3f5dd3d12e7714843fa8f3"/></dir><file name="shipping_method.phtml" hash="2084ca8fe9c3b38f98b76b16dd5e753b"/></dir></dir></dir><dir name="layout"><file name="socolissimosimplicite.xml" hash="9ac746d2644eae5c257290e6845421cb"/></dir></dir></dir></dir></dir></target><target name="magelocale"><dir><dir name="fr_FR"><file name="LaPoste_SoColissimoSimplicite.csv" hash="ddc252df7c3ca35cc4bf5bbe7fdb9433"/></dir></dir></target><target name="magecommunity"><dir><dir name="LaPoste"><dir name="SoColissimoSimplicite"><dir name="Block"><file name="Form.php" hash="df4d1dfbd6f8fbb6088b505b285ed7fa"/><dir name="Onepage"><dir name="Shipping"><dir name="Method"><dir name="Available"><file name="Item.php" hash="28d54a8b59dfff7365e3de0db158ac72"/></dir><file name="Available.php" hash="87903ab9334a817c6970d5225ff4129d"/></dir></dir></dir><file name="Onepage.php" hash="9c479fb9298c513ecc5b1473b6366391"/></dir><dir name="Helper"><file name="Data.php" hash="83b0fc3ee84ccaf4e21bbf4759960502"/></dir><dir name="Model"><dir name="Carrier"><file name="ShippingMethod.php" hash="a824ef65678448f9e38e49a659546297"/></dir><dir name="Mysql4"><dir name="Transaction"><file name="Collection.php" hash="af31dc43455baed304eb087a1f5a022b"/></dir><file name="Transaction.php" hash="8cf12de5f6a6a50cf69e42e6da77d2f9"/></dir><file name="Observer.php" hash="563e26117a0cc90affcad28a503cef5d"/><dir name="System"><dir name="Config"><dir name="Source"><dir name="Shipping"><file name="Amountbasetype.php" hash="210a1f9bd6c9daac92fb213d3b4d662b"/></dir></dir></dir></dir><file name="Transaction.php" hash="023d0f47d98584520dad99f2b06ed681"/></dir><dir name="Test"><dir name="Model"><dir name="Carrier"><file name="ShippingMethodTest.php" hash="09e08117c7f70ca3304f3c0002f62e0f"/></dir></dir></dir><dir name="controllers"><file name="FormController.php" hash="aeeb7dcc7ce076d8f13ff136bd49dd6d"/></dir><dir name="etc"><file name="config.xml" hash="26f3d2ccbb9634de3184b3bec24dfe12"/><file name="system.xml" hash="2b6391525f70bbb55b9c5c53db301f87"/></dir><dir name="sql"><dir name="socolissimosimplicite_setup"><file name="mysql4-install-1.0.0.php" hash="39d84d2cee2d8c2c0633c17891e045aa"/><file name="mysql4-uninstall-0.1.0.php" hash="471abbb64f1a962e8cc09d7bf48fe46c"/><file name="mysql4-upgrade-1.0.6-1.0.7.php" hash="b7939e9bd64cadbdc9ccd77b52d19d16"/><file name="mysql4-upgrade-1.1.1-2.0.0.php" hash="bd7915ab8d3871491e496f33617d3754"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir><dir name="modules"><file name="LaPoste_SoColissimoSimplicite.xml" hash="154dd96df1089ac29e87eaa8677693c3"/></dir></dir></target></contents>
31
  <compatible/>
32
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
33
  </package>