Version Notes
Changes to calculation of international freight - Correios Exporta Fácil
Download this release
Release Info
Developer | Frenet |
Extension | LithiumSoftware_Akhilleus |
Version | 1.0.4 |
Comparing to | |
See all releases |
Code changes from version 1.0.3 to 1.0.4
app/code/community/LithiumSoftware/Akhilleus/Model/Carrier/Akhilleus.php
CHANGED
@@ -27,11 +27,14 @@ class LithiumSoftware_Akhilleus_Model_Carrier_Akhilleus
|
|
27 |
protected $_title = NULL; // Título do método de envio
|
28 |
protected $_from = NULL; // CEP de origem
|
29 |
protected $_to = NULL; // CEP de destino
|
|
|
30 |
protected $_recipientDocument = NULL; // CPF / CNPJ do destinatario
|
31 |
protected $_packageWeight = NULL; // valor ajustado do pacote
|
32 |
protected $_showDelivery = NULL; // Determina exibição de prazo de entrega
|
33 |
protected $_addDeliveryDays = NULL; // Adiciona n dias ao prazo de entrega
|
34 |
|
|
|
|
|
35 |
|
36 |
/**
|
37 |
* Collect rates for this shipping method based on information in $request
|
@@ -149,12 +152,18 @@ class LithiumSoftware_Akhilleus_Model_Carrier_Akhilleus
|
|
149 |
// gerar o array de produtos
|
150 |
$shippingItemArray = array();
|
151 |
$count = 0;
|
152 |
-
|
153 |
-
|
154 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
|
156 |
$shippingItem = new stdClass();
|
157 |
-
$shippingItem->Weight = $this->_fixWeight($productObj->getWeight()) * $
|
158 |
if ($this->getConfigFlag('use_default'))
|
159 |
{
|
160 |
$shippingItem->Length = $this->getConfigData('default_length'); //16
|
@@ -191,8 +200,8 @@ class LithiumSoftware_Akhilleus_Model_Carrier_Akhilleus
|
|
191 |
|
192 |
$shippingItem->Category = $result;
|
193 |
|
194 |
-
if($
|
195 |
-
$shippingItem->isFragile = $
|
196 |
else
|
197 |
$shippingItem->isFragile=false;
|
198 |
|
@@ -206,6 +215,7 @@ class LithiumSoftware_Akhilleus_Model_Carrier_Akhilleus
|
|
206 |
'Password' => $this->getConfigData('password'),
|
207 |
'SellerCEP' => $this->_from,
|
208 |
'RecipientCEP' => $this->_to,
|
|
|
209 |
'RecipientDocument' => $this->_recipientDocument,
|
210 |
'ShipmentInvoiceValue' => $this->_value,
|
211 |
'ShippingItemArray' => $shippingItemArray
|
@@ -412,12 +422,20 @@ class LithiumSoftware_Akhilleus_Model_Carrier_Akhilleus
|
|
412 |
$this->_from = $this->_formatZip(Mage::getStoreConfig('shipping/origin/postcode', $this->getStore()));
|
413 |
$this->_to = $this->_formatZip($request->getDestPostcode());
|
414 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
415 |
if(!$this->_from){
|
416 |
$this->_log('Erro com CEP de origem');
|
417 |
return false;
|
418 |
}
|
419 |
|
420 |
-
if(!$this->_to){
|
421 |
$this->_log('Erro com CEP de destino');
|
422 |
$this->_throwError('zipcodeerror', 'CEP Inválido', __LINE__);
|
423 |
return false;
|
@@ -426,23 +444,6 @@ class LithiumSoftware_Akhilleus_Model_Carrier_Akhilleus
|
|
426 |
return true;
|
427 |
}
|
428 |
|
429 |
-
/**
|
430 |
-
* Verifica se o país está dentro da área atendida
|
431 |
-
*
|
432 |
-
* @param Mage_Shipping_Model_Rate_Request $request
|
433 |
-
* @return boolean
|
434 |
-
*/
|
435 |
-
protected function _checkCountry(Mage_Shipping_Model_Rate_Request $request) {
|
436 |
-
$from = Mage::getStoreConfig('shipping/origin/country_id', $this->getStore());
|
437 |
-
$to = $request->getDestCountryId();
|
438 |
-
if ($from != "BR" || $to != "BR"){
|
439 |
-
$this->_log('Fora da área de atendimento');
|
440 |
-
return false;
|
441 |
-
}
|
442 |
-
|
443 |
-
return true;
|
444 |
-
}
|
445 |
-
|
446 |
/**
|
447 |
* Corrige o peso informado com base na medida de peso configurada
|
448 |
* @param string|int|float $weight
|
@@ -604,5 +605,49 @@ class LithiumSoftware_Akhilleus_Model_Carrier_Akhilleus
|
|
604 |
}
|
605 |
}
|
606 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
607 |
|
608 |
}
|
27 |
protected $_title = NULL; // Título do método de envio
|
28 |
protected $_from = NULL; // CEP de origem
|
29 |
protected $_to = NULL; // CEP de destino
|
30 |
+
protected $_destCountry = NULL; // IATA do pais destino
|
31 |
protected $_recipientDocument = NULL; // CPF / CNPJ do destinatario
|
32 |
protected $_packageWeight = NULL; // valor ajustado do pacote
|
33 |
protected $_showDelivery = NULL; // Determina exibição de prazo de entrega
|
34 |
protected $_addDeliveryDays = NULL; // Adiciona n dias ao prazo de entrega
|
35 |
|
36 |
+
protected $_simpleProducts = array();
|
37 |
+
protected $_productsQty = array();
|
38 |
|
39 |
/**
|
40 |
* Collect rates for this shipping method based on information in $request
|
152 |
// gerar o array de produtos
|
153 |
$shippingItemArray = array();
|
154 |
$count = 0;
|
155 |
+
$this->getSimpleProducts($request->getAllItems());
|
156 |
+
$productsCount = count ($this->_simpleProducts);
|
157 |
+
$j = 0;
|
158 |
+
for ($i = 0; $i < $productsCount; $i ++)
|
159 |
+
{
|
160 |
+
$productObj = $this->_simpleProducts[$i];
|
161 |
+
|
162 |
+
//$this->_log(json_encode($productObj->getData()));
|
163 |
+
//$this->_log('Quantidade: ' . $this->_productsQty[$i]);
|
164 |
|
165 |
$shippingItem = new stdClass();
|
166 |
+
$shippingItem->Weight = $this->_fixWeight($productObj->getWeight()) * $this->_productsQty[$i];
|
167 |
if ($this->getConfigFlag('use_default'))
|
168 |
{
|
169 |
$shippingItem->Length = $this->getConfigData('default_length'); //16
|
200 |
|
201 |
$shippingItem->Category = $result;
|
202 |
|
203 |
+
if($productObj->getFragile())
|
204 |
+
$shippingItem->isFragile = $productObj->getFragile();
|
205 |
else
|
206 |
$shippingItem->isFragile=false;
|
207 |
|
215 |
'Password' => $this->getConfigData('password'),
|
216 |
'SellerCEP' => $this->_from,
|
217 |
'RecipientCEP' => $this->_to,
|
218 |
+
'RecipientCountry' => $this->_destCountry,
|
219 |
'RecipientDocument' => $this->_recipientDocument,
|
220 |
'ShipmentInvoiceValue' => $this->_value,
|
221 |
'ShippingItemArray' => $shippingItemArray
|
422 |
$this->_from = $this->_formatZip(Mage::getStoreConfig('shipping/origin/postcode', $this->getStore()));
|
423 |
$this->_to = $this->_formatZip($request->getDestPostcode());
|
424 |
|
425 |
+
if ($request->getDestCountryId()) {
|
426 |
+
$this->_destCountry = $request->getDestCountryId();
|
427 |
+
} else {
|
428 |
+
$this->_destCountry = 'BR';
|
429 |
+
}
|
430 |
+
|
431 |
+
$this->_log('Country ID ' . $this->_destCountry);
|
432 |
+
|
433 |
if(!$this->_from){
|
434 |
$this->_log('Erro com CEP de origem');
|
435 |
return false;
|
436 |
}
|
437 |
|
438 |
+
if(!$this->_to && $this->_destCountry == 'BR'){
|
439 |
$this->_log('Erro com CEP de destino');
|
440 |
$this->_throwError('zipcodeerror', 'CEP Inválido', __LINE__);
|
441 |
return false;
|
444 |
return true;
|
445 |
}
|
446 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
447 |
/**
|
448 |
* Corrige o peso informado com base na medida de peso configurada
|
449 |
* @param string|int|float $weight
|
605 |
}
|
606 |
}
|
607 |
|
608 |
+
private function getSimpleProducts($items)
|
609 |
+
{
|
610 |
+
$j = 0;
|
611 |
+
foreach ($items as $child)
|
612 |
+
{
|
613 |
+
$product_id = $child->getProductId ();
|
614 |
+
$product = Mage::getModel ('catalog/product')->load ($product_id);
|
615 |
+
$type_id = $product->getTypeId ();
|
616 |
+
if (strcmp ($type_id, 'simple')) continue;
|
617 |
+
|
618 |
+
$qty = $this->_getQty ($child);
|
619 |
+
|
620 |
+
$product = Mage::getModel ('catalog/product')->load ($child->getProductId());
|
621 |
+
|
622 |
+
$this->_simpleProducts [$j] = $product;
|
623 |
+
$this->_productsQty [$j] = (int)$qty;
|
624 |
+
$j = $j + 1;
|
625 |
+
}
|
626 |
+
|
627 |
+
return $this;
|
628 |
+
}
|
629 |
+
|
630 |
+
private function _getQty ($item)
|
631 |
+
{
|
632 |
+
$qty = 0;
|
633 |
+
|
634 |
+
$parentItem = $item->getParentItem ();
|
635 |
+
$targetItem = !empty ($parentItem) && $parentItem->getId () > 0 ? $parentItem : $item;
|
636 |
+
|
637 |
+
if ($targetItem instanceof Mage_Sales_Model_Quote_Item)
|
638 |
+
{
|
639 |
+
$qty = $targetItem->getQty ();
|
640 |
+
}
|
641 |
+
elseif ($targetItem instanceof Mage_Sales_Model_Order_Item)
|
642 |
+
{
|
643 |
+
$qty = $targetItem->getShipped () ? $targetItem->getShipped () : $targetItem->getQtyInvoiced ();
|
644 |
+
if ($qty == 0) {
|
645 |
+
$qty = $targetItem->getQtyOrdered();
|
646 |
+
}
|
647 |
+
}
|
648 |
+
|
649 |
+
return $qty;
|
650 |
+
}
|
651 |
+
|
652 |
|
653 |
}
|
app/code/community/LithiumSoftware/Akhilleus/etc/config.xml
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
<config>
|
15 |
<modules>
|
16 |
<LithiumSoftware_Akhilleus>
|
17 |
-
<version>1.0.
|
18 |
<depends>
|
19 |
<Mage_Shipping/>
|
20 |
</depends>
|
14 |
<config>
|
15 |
<modules>
|
16 |
<LithiumSoftware_Akhilleus>
|
17 |
+
<version>1.0.4</version>
|
18 |
<depends>
|
19 |
<Mage_Shipping/>
|
20 |
</depends>
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>LithiumSoftware_Akhilleus</name>
|
4 |
-
<version>1.0.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/MIT">MIT</license>
|
7 |
<channel>community</channel>
|
@@ -9,13 +9,11 @@
|
|
9 |
<summary>Frenet allows merchants to display freight options from multiple carriers, including brazilian Correios.</summary>
|
10 |
<description>The Frenet freight gateway is able to integrate and process tables of freight carriers and brazilian Correios. The freight calculation for the brazilian Correios services is done on-line (via Correios webservice) or in case of unavailability, uses database in the cloud highly available and regularly updated automatically, with the values of quotations. 
|
11 |
It provides to the store owners, major carriers in Brazil to transport large volumes as well as JadLog, TNT, Direct, Total Express, JAMEF among others.</description>
|
12 |
-
<notes>
|
13 |
-
- Weight - weightType == 'gr'
|
14 |
-
</notes>
|
15 |
<authors><author><name>Frenet</name><user>MAG002970201</user><email>contato@frenet.com.br</email></author></authors>
|
16 |
-
<date>2016-
|
17 |
-
<time>
|
18 |
-
<contents><target name="magecommunity"><dir name="LithiumSoftware"><dir name="Akhilleus"><dir name="Helper"><file name="Data.php" hash="fae99f78422836771d71873f253e8471"/></dir><dir name="Model"><dir name="Carrier"><file name="Akhilleus.php" hash="
|
19 |
<compatible/>
|
20 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
21 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>LithiumSoftware_Akhilleus</name>
|
4 |
+
<version>1.0.4</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/MIT">MIT</license>
|
7 |
<channel>community</channel>
|
9 |
<summary>Frenet allows merchants to display freight options from multiple carriers, including brazilian Correios.</summary>
|
10 |
<description>The Frenet freight gateway is able to integrate and process tables of freight carriers and brazilian Correios. The freight calculation for the brazilian Correios services is done on-line (via Correios webservice) or in case of unavailability, uses database in the cloud highly available and regularly updated automatically, with the values of quotations. 
|
11 |
It provides to the store owners, major carriers in Brazil to transport large volumes as well as JadLog, TNT, Direct, Total Express, JAMEF among others.</description>
|
12 |
+
<notes>Changes to calculation of international freight - Correios Exporta Fácil</notes>
|
|
|
|
|
13 |
<authors><author><name>Frenet</name><user>MAG002970201</user><email>contato@frenet.com.br</email></author></authors>
|
14 |
+
<date>2016-06-06</date>
|
15 |
+
<time>21:11:24</time>
|
16 |
+
<contents><target name="magecommunity"><dir name="LithiumSoftware"><dir name="Akhilleus"><dir name="Helper"><file name="Data.php" hash="fae99f78422836771d71873f253e8471"/></dir><dir name="Model"><dir name="Carrier"><file name="Akhilleus.php" hash="140fb55b0adc541a2031528c9b9fef19"/></dir><file name="Observer.php" hash="927d49b0b02ecfe36aa708a7f186422a"/><dir name="Source"><file name="WeightType.php" hash="90bd2253381d2c2094aa0183e3129eb7"/></dir></dir><dir name="etc"><file name="config.xml" hash="71710774ce6a68a2534b5a727cb3273b"/><file name="system.xml" hash="162638242c34a75a65091ec10b971741"/></dir><dir name="sql"><dir name="akhilleus_setup"><file name="install-1.0.0.php" hash="17104e4cf30a39bd0980837310ae940a"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="LithiumSoftware_Akhilleus.xml" hash="ad180127bc24251a43a18818f2a30c21"/></dir></target></contents>
|
17 |
<compatible/>
|
18 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
19 |
</package>
|