Version Notes
Calculs des frais de livraison à partir du montant remis du panier
Compatibilité du module avec la création de commandes en backoffice (mode domicile uniquement)
Download this release
Release Info
Developer | Berlioz |
Extension | ColiPoste_La_Poste_So_Colissimo |
Version | 2.3.5 |
Comparing to | |
See all releases |
Code changes from version 2.3.4 to 2.3.5
app/code/community/LaPoste/SoColissimoSimplicite/Model/Carrier/ShippingMethod.php
CHANGED
@@ -32,11 +32,11 @@ class LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
|
|
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->
|
36 |
return false;
|
37 |
}
|
38 |
|
39 |
-
if (is_numeric($this->getConfigData('max_order_total')) && $request->
|
40 |
return false;
|
41 |
}
|
42 |
|
@@ -54,89 +54,79 @@ class LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
|
|
54 |
$method->setCarrierTitle($this->getConfigData('title'));
|
55 |
$method->setMethod($this->_code);
|
56 |
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
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 |
-
|
87 |
-
$
|
88 |
-
$quotePriceWithDiscount = $request->getData('package_value_with_discount');
|
89 |
|
90 |
-
$
|
91 |
-
|
92 |
|
93 |
-
if ($
|
94 |
-
|
95 |
-
|
96 |
-
//
|
97 |
-
$
|
98 |
-
$checkoutSession->getQuote()->getShippingAddress(),
|
99 |
-
$this->getConfigData('amountbasetype'),
|
100 |
-
$this->getConfigData('amountcalculation')
|
101 |
-
);
|
102 |
|
103 |
-
//
|
104 |
-
$
|
105 |
-
$
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
|
|
|
|
|
|
|
|
111 |
);
|
112 |
-
}
|
113 |
|
114 |
-
|
115 |
-
|
116 |
-
$
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
}
|
122 |
-
}
|
123 |
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
|
137 |
-
|
138 |
-
|
139 |
-
|
|
|
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);
|
@@ -147,6 +137,48 @@ class LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
|
|
147 |
return $result;
|
148 |
}
|
149 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
/**
|
151 |
* Retourne les modes de livraison authorisés
|
152 |
*
|
@@ -160,12 +192,12 @@ class LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
|
|
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
|
164 |
-
* @param string
|
165 |
-
* @param string
|
166 |
* @return float
|
167 |
*/
|
168 |
-
protected function _getCalculatedPrice($
|
169 |
{
|
170 |
/* @var $helper LaPoste_SoColissimoSimplicite_Helper_Data */
|
171 |
$helper = Mage::helper('socolissimosimplicite');
|
@@ -189,7 +221,7 @@ class LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
|
|
189 |
krsort($rules, SORT_NUMERIC);
|
190 |
|
191 |
// récupération du poids total de la commande (en kilogrammes)
|
192 |
-
$totalWeight = $
|
193 |
|
194 |
// recherche du prix selon les fourchettes de tarifs données
|
195 |
$calculatedPrice = false;
|
@@ -214,7 +246,7 @@ class LaPoste_SoColissimoSimplicite_Model_Carrier_ShippingMethod
|
|
214 |
krsort($rules, SORT_NUMERIC);
|
215 |
|
216 |
// recuperation du sous total HT du panier
|
217 |
-
$totalAmount = $
|
218 |
|
219 |
// recherche du prix selon les fourchettes de tarifs donnees
|
220 |
$calculatedPrice = 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->getPackageValueWithDiscount() < $this->getConfigData('min_order_total')) {
|
36 |
return false;
|
37 |
}
|
38 |
|
39 |
+
if (is_numeric($this->getConfigData('max_order_total')) && $request->getPackageValueWithDiscount() > $this->getConfigData('max_order_total')) {
|
40 |
return false;
|
41 |
}
|
42 |
|
54 |
$method->setCarrierTitle($this->getConfigData('title'));
|
55 |
$method->setMethod($this->_code);
|
56 |
|
57 |
+
if (Mage::app()->getStore()->isAdmin()) {
|
58 |
+
// forcer la livraison à domicile dans la création de commande du backoffice
|
59 |
+
$methodTitle = $this->getConfigData('name_home');
|
60 |
+
$price = $this->_getCalculatedPrice(
|
61 |
+
$request,
|
62 |
+
$this->getConfigData('amountbasetype'),
|
63 |
+
$this->getConfigData('amountcalculation')
|
64 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
} else {
|
66 |
+
/* @var $checkoutSession Mage_Checkout_Model_Session */
|
67 |
+
$checkoutSession = Mage::getSingleton('checkout/session');
|
|
|
68 |
|
69 |
+
/* @var $helper LaPoste_SoColissimoSimplicite_Helper_Data */
|
70 |
+
$helper = Mage::helper('socolissimosimplicite');
|
71 |
|
72 |
+
if ($helper->isSocoComplete()) {
|
73 |
+
// après la sortie de la plateforme socolissimo (IFrame), on utilise le prix transmis par socolissimo
|
74 |
+
// on ne peut pas se baser sur le prix de l'adresse de livraison car son prix est réinitialisé
|
75 |
+
// à l'étape du paiement dans certaines versions de Magento
|
76 |
+
$price = $checkoutSession->getData('socolissimosimplicite_chosen_shipping_amount');
|
|
|
|
|
|
|
|
|
77 |
|
78 |
+
// mettre à jour le libellé de la méthode de livraison
|
79 |
+
$deliveryMode = $checkoutSession->getData('socolissimosimplicite_chosen_delivery_mode');
|
80 |
+
$methodTitle = $this->getMethodTitle($deliveryMode);
|
81 |
+
} else {
|
82 |
+
if ($this->isFreeShipping($request)) {
|
83 |
+
$defaultPrice = $pickupPrice = $price = 0;
|
84 |
+
} else {
|
85 |
+
// calcul des frais d'expéditions
|
86 |
+
$defaultPrice = $this->_getCalculatedPrice(
|
87 |
+
$request,
|
88 |
+
$this->getConfigData('amountbasetype'),
|
89 |
+
$this->getConfigData('amountcalculation')
|
90 |
);
|
|
|
91 |
|
92 |
+
// calcul des frais d'expédition commerçants (prend la valeur des frais par défaut si non renseignés
|
93 |
+
$pickupPrice = $defaultPrice;
|
94 |
+
$amountCalculationPickup = (string) $this->getConfigData('amountcalculation_pickup');
|
95 |
+
if ($amountCalculationPickup !== '') {
|
96 |
+
$pickupPrice = $this->_getCalculatedPrice(
|
97 |
+
$request,
|
98 |
+
$this->getConfigData('amountbasetype_pickup'),
|
99 |
+
$amountCalculationPickup
|
100 |
+
);
|
101 |
+
}
|
102 |
+
|
103 |
+
if ($helper->checkServiceAvailability()) {
|
104 |
+
// prendre le prix le plus bas
|
105 |
+
$price = min($defaultPrice, $pickupPrice);
|
106 |
+
} else {
|
107 |
+
// si la plateforme est indisponible, systématiquement prendre le prix normal
|
108 |
+
// il n'y aura pas d'affichage de l'IFrame, ce prix sera directement utilisé pour commander
|
109 |
+
$price = $defaultPrice;
|
110 |
+
}
|
111 |
}
|
|
|
112 |
|
113 |
+
// sauvegarder les frais d'expédition dans la session (ils seront utilisés par la transaction et le form d'envoi)
|
114 |
+
$checkoutSession->setData(
|
115 |
+
'socolissimosimplicite_available_shipping_amounts',
|
116 |
+
array(
|
117 |
+
'default' => $defaultPrice,
|
118 |
+
'pickup' => $pickupPrice,
|
119 |
+
)
|
120 |
+
);
|
121 |
|
122 |
+
// utiliser le nom de méthode par défaut
|
123 |
+
$methodTitle = $this->getConfigData('name');
|
124 |
+
}
|
125 |
|
126 |
+
// mémoriser le sous-total de la quote, cela permettra de s'assurer que l'internaute
|
127 |
+
// ne l'ait pas modifié pendant qu'il était sur la plateforme So Colissimo
|
128 |
+
$checkoutSession->setData('socolissimosimplicite_quote_subtotal', $checkoutSession->getQuote()->getSubtotal());
|
129 |
+
}
|
130 |
|
131 |
// on attribue à la méthode les frais d'expédition les plus bas (c'est ce qui sera affiché dans le tunnel de commande)
|
132 |
$method->setMethodTitle($methodTitle);
|
137 |
return $result;
|
138 |
}
|
139 |
|
140 |
+
/**
|
141 |
+
* Retourne le libellé de la méthode de livraison en fonction du mode choisi sur la plateforme So Colissimo
|
142 |
+
*
|
143 |
+
* @return string
|
144 |
+
*/
|
145 |
+
protected function getMethodTitle($deliveryMode)
|
146 |
+
{
|
147 |
+
/* @var $helper LaPoste_SoColissimoSimplicite_Helper_Data */
|
148 |
+
$helper = Mage::helper('socolissimosimplicite');
|
149 |
+
|
150 |
+
if ($deliveryMode === 'DOM') {
|
151 |
+
$methodTitle = $this->getConfigData('name_home');
|
152 |
+
} elseif ($deliveryMode === 'RDV') {
|
153 |
+
$methodTitle = $this->getConfigData('name_appointment');
|
154 |
+
} elseif (in_array($deliveryMode, $helper->getPickupPointCodes())) {
|
155 |
+
$methodTitle = $this->getConfigData('name_pickup');
|
156 |
+
} elseif (in_array($deliveryMode, $helper->getPostOfficeCodes())) {
|
157 |
+
$methodTitle = $this->getConfigData('name_post_office');
|
158 |
+
} else {
|
159 |
+
// mode de livraison incorrect, on affiche le libellé par défaut
|
160 |
+
// ce cas pourrait par exemple se produire dans le cas de l'ajout d'un nouveau pays alors que ses codes
|
161 |
+
// de point de retrait et de bureaux de poste ne sont pas renseigné dans le fichier config.xml
|
162 |
+
$methodTitle = $this->getConfigData('name');
|
163 |
+
}
|
164 |
+
|
165 |
+
return $methodTitle;
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Vérifie si la livraison So Colissimo est offerte
|
170 |
+
*
|
171 |
+
* @return bool
|
172 |
+
*/
|
173 |
+
protected function isFreeShipping(Mage_Shipping_Model_Rate_Request $request)
|
174 |
+
{
|
175 |
+
$minPriceForFreeShipping = $this->getConfigData('minquotepriceforfree');
|
176 |
+
$packageValue = $request->getPackageValueWithDiscount();
|
177 |
+
|
178 |
+
return $request->getFreeShipping()
|
179 |
+
|| ($minPriceForFreeShipping > 0 && $packageValue >= $minPriceForFreeShipping);
|
180 |
+
}
|
181 |
+
|
182 |
/**
|
183 |
* Retourne les modes de livraison authorisés
|
184 |
*
|
192 |
/**
|
193 |
* Retourne le montant des frais de livraison après éventuels calculs selon le mode de tarification choisi dans l'administration
|
194 |
*
|
195 |
+
* @param Mage_Shipping_Model_Rate_Request $request
|
196 |
+
* @param string $amountBaseType
|
197 |
+
* @param string $amountBaseCalculation
|
198 |
* @return float
|
199 |
*/
|
200 |
+
protected function _getCalculatedPrice(Mage_Shipping_Model_Rate_Request $request, $amountBaseType, $amountCalculation)
|
201 |
{
|
202 |
/* @var $helper LaPoste_SoColissimoSimplicite_Helper_Data */
|
203 |
$helper = Mage::helper('socolissimosimplicite');
|
221 |
krsort($rules, SORT_NUMERIC);
|
222 |
|
223 |
// récupération du poids total de la commande (en kilogrammes)
|
224 |
+
$totalWeight = $request->getPackageWeight();
|
225 |
|
226 |
// recherche du prix selon les fourchettes de tarifs données
|
227 |
$calculatedPrice = false;
|
246 |
krsort($rules, SORT_NUMERIC);
|
247 |
|
248 |
// recuperation du sous total HT du panier
|
249 |
+
$totalAmount = $request->getPackageValueWithDiscount();
|
250 |
|
251 |
// recherche du prix selon les fourchettes de tarifs donnees
|
252 |
$calculatedPrice = false;
|
app/code/community/LaPoste/SoColissimoSimplicite/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<!--
|
3 |
/**
|
4 |
* LaPoste_SoColissimoSimplicite
|
5 |
-
*
|
6 |
* @category LaPoste
|
7 |
* @package LaPoste_SoColissimoSimplicite
|
8 |
* @copyright Copyright (c) 2010 La Poste
|
@@ -13,7 +13,7 @@
|
|
13 |
<config>
|
14 |
<modules>
|
15 |
<LaPoste_SoColissimoSimplicite>
|
16 |
-
<version>2.3.
|
17 |
</LaPoste_SoColissimoSimplicite>
|
18 |
</modules>
|
19 |
|
@@ -110,7 +110,7 @@
|
|
110 |
</socolissimosimplicite>
|
111 |
</routers>
|
112 |
|
113 |
-
<events>
|
114 |
<controller_action_layout_load_before>
|
115 |
<observers>
|
116 |
<laposte_socolissimosimplicite_observer>
|
2 |
<!--
|
3 |
/**
|
4 |
* LaPoste_SoColissimoSimplicite
|
5 |
+
*
|
6 |
* @category LaPoste
|
7 |
* @package LaPoste_SoColissimoSimplicite
|
8 |
* @copyright Copyright (c) 2010 La Poste
|
13 |
<config>
|
14 |
<modules>
|
15 |
<LaPoste_SoColissimoSimplicite>
|
16 |
+
<version>2.3.5</version>
|
17 |
</LaPoste_SoColissimoSimplicite>
|
18 |
</modules>
|
19 |
|
110 |
</socolissimosimplicite>
|
111 |
</routers>
|
112 |
|
113 |
+
<events>
|
114 |
<controller_action_layout_load_before>
|
115 |
<observers>
|
116 |
<laposte_socolissimosimplicite_observer>
|
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.3.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
<channel>community</channel>
|
@@ -23,11 +23,12 @@ Testé et validé sur Magento :
|
|
23 |
- Enterprise : 1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.14
|
24 |

|
25 |
Réalisation par Smile.</description>
|
26 |
-
<notes>
|
|
|
27 |
<authors><author><name>Berlioz</name><user>Aline</user><email>Aline.BERLIOZ@laposte.fr</email></author></authors>
|
28 |
-
<date>
|
29 |
-
<time>
|
30 |
-
<contents><target name="
|
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.3.5</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>
|
23 |
- Enterprise : 1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.14
|
24 |

|
25 |
Réalisation par Smile.</description>
|
26 |
+
<notes>Calculs des frais de livraison à partir du montant remis du panier
|
27 |
+
Compatibilité du module avec la création de commandes en backoffice (mode domicile uniquement)</notes>
|
28 |
<authors><author><name>Berlioz</name><user>Aline</user><email>Aline.BERLIOZ@laposte.fr</email></author></authors>
|
29 |
+
<date>2017-05-23</date>
|
30 |
+
<time>07:37:55</time>
|
31 |
+
<contents><target name="mageetc"><dir name="modules"><file name="LaPoste_SoColissimoSimplicite.xml" hash="c7097370b5cc0e66fc2127df191740a6"/></dir></target><target name="magecommunity"><dir name="LaPoste"><dir name="SoColissimoSimplicite"><dir name="Block"><file name="Form.php" hash="df4d1dfbd6f8fbb6088b505b285ed7fa"/><file name="Iframe.php" hash="518d7af1a92e9feae96ac2982204dfd1"/><file name="Onepage.php" hash="81d36d830a778e83c0a8f22f3b90ee56"/></dir><dir name="Helper"><file name="Data.php" hash="37a71a81ddb2386672c76cb1475f3805"/></dir><dir name="Model"><dir name="Carrier"><file name="ShippingMethod.php" hash="9369c228cbade10047caab32631b1c6f"/></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="1fdd106d6ddd0554466701b18a35b7f0"/><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="controllers"><file name="FormController.php" hash="f4d0c4574c1ad127f680b38286d1bbcb"/></dir><dir name="etc"><file name="config.xml" hash="4bbe5f58166b9236349d5f79fc5407e0"/><file name="system.xml" hash="be505597ba2f1ddb7ad4a8623619aa74"/></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="03712141361b873740de91b7d0f721f0"/><file name="mysql4-upgrade-1.1.1-2.0.0.php" hash="bd7915ab8d3871491e496f33617d3754"/><file name="mysql4-upgrade-2.2.1-2.3.0.php" hash="c578ca0c71a7a6d53dbfd3daff5e594e"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="socolissimosimplicite.xml" hash="7cbeeb8095261ca622174d7ed447589f"/></dir><dir name="template"><dir name="socolissimosimplicite"><file name="empty.phtml" hash="5726ba2edea823965827685b3bdc3d95"/><dir name="form"><file name="failure.phtml" hash="259bc094879a81cc06b0672c31f2df1b"/></dir><file name="form.phtml" hash="f46decffe3510c59688c5925617e4d1c"/><file name="iframe.phtml" hash="48aabfc24e2cbe6845da1169c6576c10"/><dir name="onepage"><dir name="shipping_method"><file name="socolissimosimplicite.phtml" hash="c0ce496d1dc9369fb06db452aedd2167"/></dir></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir><dir name="fr_FR"><file name="LaPoste_SoColissimoSimplicite.csv" hash="c70f610f8160ec6415d10bc18ff0ab41"/></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="js"><dir name="socolissimosimplicite"><file name="shipping_method.js" hash="4f0c0754e221c8981537c82cc34d4324"/></dir></dir></dir></dir></dir></target></contents>
|
32 |
<compatible/>
|
33 |
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
34 |
</package>
|