Intelipost - Version 1.0.0

Version Notes

---

Download this release

Release Info

Developer Intelipost
Extension Intelipost
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

app/code/local/Intelipost/Shipping/Helper/Data.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+
3
+ class Intelipost_Shipping_Helper_Data
4
+ extends Mage_Core_Helper_Abstract {}
app/code/local/Intelipost/Shipping/Model/Carrier/Category.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Intelipost_Shipping_Model_Carrier_Category {
4
+ public function toOptionArray() {
5
+ return array(
6
+ array('value' => '2', 'label' => Mage::helper('catalog')->__('Machinery and/or parts')),
7
+ array('value' => '5', 'label' => Mage::helper('catalog')->__('Eletronics')),
8
+ array('value' => '6', 'label' => Mage::helper('catalog')->__('Fragile products')),
9
+ array('value' => '7', 'label' => Mage::helper('catalog')->__('Cosmetics')),
10
+ array('value' => '10', 'label' => Mage::helper('catalog')->__('Office supplies and furniture')),
11
+ array('value' => '12', 'label' => Mage::helper('catalog')->__('Pharmacy')),
12
+ array('value' => '13', 'label' => Mage::helper('catalog')->__('Books and/or graphical material')),
13
+ array('value' => '14', 'label' => Mage::helper('catalog')->__('Floriculture')),
14
+ array('value' => '19', 'label' => Mage::helper('catalog')->__('Beverages')),
15
+ array('value' => '20', 'label' => Mage::helper('catalog')->__('Alcoholic')),
16
+ array('value' => '25', 'label' => Mage::helper('catalog')->__('Toys')),
17
+ array('value' => '22', 'label' => Mage::helper('catalog')->__('Food')),
18
+ array('value' => '26', 'label' => Mage::helper('catalog')->__('Documents')),
19
+ array('value' => '23', 'label' => Mage::helper('catalog')->__('High value products')),
20
+ array('value' => '24', 'label' => Mage::helper('catalog')->__('Clothing'))
21
+ );
22
+ }
23
+ }
app/code/local/Intelipost/Shipping/Model/Carrier/Intelipost.php ADDED
@@ -0,0 +1,212 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once Mage::getBaseDir('code') . '/local/Intelipost/Shipping/Model/Resource/Quote.php';
4
+ require_once Mage::getBaseDir('code') . '/local/Intelipost/Shipping/Model/Resource/Volume.php';
5
+
6
+ class Intelipost_Shipping_Model_Carrier_Intelipost
7
+ extends Mage_Shipping_Model_Carrier_Abstract
8
+ implements Mage_Shipping_Model_Carrier_Interface
9
+ {
10
+ protected $_code = 'intelipost';
11
+ protected $_helper = null;
12
+
13
+ private $_zipCodeRegex = '/[0-9]{2}\.?[0-9]{3}-?[0-9]{3}/';
14
+
15
+ public function collectRates(Mage_Shipping_Model_Rate_Request $request) {
16
+ $this->_helper = Mage::helper('intelipost');
17
+
18
+ if (!$this->getConfigFlag('active')) {
19
+ Mage::log('Intelipost is inactive', null, 'intelipost.log');
20
+ return false;
21
+ }
22
+
23
+ $originZipCode = $this->getConfigData('zipcode');
24
+ $destinationZipCode = $request->getDestPostcode();
25
+
26
+ if (!preg_match($this->_zipCodeRegex, $originZipCode) || !preg_match($this->_zipCodeRegex, $destinationZipCode)) {
27
+ Mage::log('Invalid zip code ' . $originZipCode . ' or ' . $destinationZipCode, null, 'intelipost.log');
28
+ return false;
29
+ }
30
+
31
+ // only numbers allowed
32
+ $originZipCode = preg_replace('/[^0-9]/', '', $originZipCode);
33
+ $destinationZipCode = preg_replace('/[^0-9]/', '', $destinationZipCode);
34
+
35
+ $weight = $request->getPackageWeight();
36
+ if ($weight <= 0) {
37
+ $this->_throwError('weightzeroerror', 'Weight zero', __LINE__);
38
+ }
39
+
40
+ // weight must be in Kg
41
+ if($this->getConfigData('weight_type') == 'gr') {
42
+ $weight = number_format($weight/1000, 2, '.', '');
43
+ }else{
44
+ // TODO: do the weight defaults to Kg if it is not gr?
45
+ $weight = number_format($weight, 2, '.', '');
46
+ }
47
+
48
+ $price = $request->getPackageValue();
49
+
50
+ $encryption = Mage::getSingleton('core/encryption');
51
+ $account = $encryption->decrypt($this->getConfigData('account'));
52
+ $password = $encryption->decrypt($this->getConfigData('password'));
53
+ $api_key = $encryption->decrypt($this->getConfigData('apikey'));
54
+ // $token = $encryption->decrypt($this->getConfigData('token'));
55
+
56
+ if(!isset($api_key)/* || !isset($token) ||*/
57
+ || !is_string($api_key)/* || !is_string($token)*/
58
+ ){
59
+ Mage::log('Intelipost not configured', null, 'intelipost.log');
60
+ Mage::log('account: ' . $account, null, 'intelipost.log');
61
+ // take care to not log the password
62
+ Mage::log('password length: ' . strlen($password) , null, 'intelipost.log');
63
+ return false;
64
+ }
65
+
66
+ $item_list = Mage::getModel('checkout/cart')->getQuote()->getAllVisibleItems();
67
+ $productsCount = count($item_list);
68
+
69
+ $quote = new Intelipost_Model_Request_Quote();
70
+ $quote->origin_zip_code = $originZipCode;
71
+ $quote->destination_zip_code = $destinationZipCode;
72
+
73
+ if (!$request->getAllItems()) {
74
+ Mage::log('Cart is empty', null, 'intelipost.log');
75
+ return false;
76
+ }
77
+
78
+ // if notification is disabled we send the request anyways (changed on version 0.0.2)
79
+ $dimension_check = $this->getConfigData('notification');
80
+
81
+ $i=0;
82
+ foreach ($item_list as $item) {
83
+ $product = $item->getProduct();
84
+
85
+ $volume = new Intelipost_Model_Request_Volume();
86
+ $volume->volume_type = 'BOX';
87
+
88
+ if (!$this->isDimensionSet($product)) {
89
+ Mage::log('Product does not have dimensions set', null, 'intelipost.log');
90
+
91
+ if ($dimension_check) {
92
+ $this->notifyProductsDimension($item_list);
93
+ return false;
94
+ }
95
+ }else{
96
+ $volume->width = $product->getVolumeLargura();
97
+ $volume->height = $product->getVolumeAltura();
98
+ $volume->length = $product->getVolumeComprimento();
99
+ }
100
+
101
+ $volume->weight = number_format(floatval($item->getWeight()), 2, ',', '') * $item->getQty();
102
+ $volume->cost_of_goods = number_format(floatval($item->getPrice()), 2, ',', '') * $item->getQty();
103
+
104
+ array_push($quote->volumes, $volume);
105
+ }
106
+
107
+ $body = json_encode($quote);
108
+
109
+ $s = curl_init();
110
+ curl_setopt($s, CURLOPT_TIMEOUT, 5000);
111
+ curl_setopt($s, CURLOPT_URL, "https://api.intelipost.com.br/api/v1/quote");
112
+ if ($username != null && $password != null) {
113
+ curl_setopt($s, CURLOPT_USERPWD, $username . ":" . $password);
114
+ }
115
+ curl_setopt($s, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Accept: application/json", "api_key: $api_key"/*, "token: $token"*/));
116
+ curl_setopt($s, CURLOPT_POST, true);
117
+ curl_setopt($s, CURLOPT_ENCODING , "");
118
+ curl_setopt($s, CURLOPT_RETURNTRANSFER, 1);
119
+ curl_setopt($s, CURLOPT_POSTFIELDS, $body);
120
+ $responseBody = curl_exec($s);
121
+
122
+ $response = json_decode($responseBody);
123
+ // echo $responseBody;
124
+ curl_close($s);
125
+
126
+ $result = Mage::getModel('shipping/rate_result');
127
+
128
+ foreach ($response->content->delivery_options as $deliveryOption) {
129
+ $method = Mage::getModel('shipping/rate_result_method');
130
+
131
+ $method->setCarrier ('intelipost');
132
+ $method->setCarrierTitle('Intelipost');
133
+ $method->setMethod ($deliveryOption->description);
134
+ $method->setMethodTitle ($deliveryOption->description);
135
+ $method->setPrice ($deliveryOption->final_shipping_cost);
136
+ $method->setCost ($deliveryOption->provider_shipping_cost);
137
+
138
+ $result->append($method);
139
+ }
140
+
141
+ return $result;
142
+ }
143
+
144
+ public function getAllowedMethods() {
145
+ return array($this->_code => $this->getConfigData('name'));
146
+ }
147
+
148
+ private function isDimensionSet($product) {
149
+ $volume_altura = $product->getData('volume_altura');
150
+ $volume_largura = $product->getData('volume_largura');
151
+ $volume_comprimento = $product->getData('volume_comprimento');
152
+
153
+ if ($volume_comprimento == '' || (int)$volume_comprimento == 0
154
+ || $volume_largura == '' || (int)$volume_largura == 0
155
+ || $volume_altura == '' || (int)$volume_altura == 0
156
+ ) {
157
+ return false;
158
+ }
159
+
160
+ return true;
161
+ }
162
+
163
+ private function notifyProductsDimension($item_list) {
164
+ $notification = Mage::getSingleton('adminnotification/inbox');
165
+ $message = $this->_helper->__('The following products do not have dimension set:');
166
+
167
+ $message .= '<ul>';
168
+ foreach ($item_list as $item) {
169
+ $product = $item->getProduct();
170
+
171
+ if (!$this->isDimensionSet($product)) {
172
+ $message .= '<li>';
173
+ $message .= sprintf(
174
+ '<a href="%s">',
175
+ Mage::helper('adminhtml')->getUrl(
176
+ 'adminhtml/catalog_product/edit',
177
+ array( 'id' => $product->getId())
178
+ )
179
+ );
180
+ $message .= $item->getName();
181
+ $message .= '</a>';
182
+ $message .= '</li>';
183
+ }
184
+ }
185
+ $message .= '</ul>';
186
+
187
+ $message .= $this->_helper->__('<small>Disable these notifications in System > Settings > Carriers > Intelipost</small>');
188
+
189
+ $notification->add(
190
+ Mage_AdminNotification_Model_Inbox::SEVERITY_MINOR,
191
+ $this->_helper->__('Product missing dimensions'),
192
+ $message
193
+ );
194
+ }
195
+
196
+ private function formatDeadline($days) {
197
+ if ($days == 0) {
198
+ return $this->_helper->__('(same day)');
199
+ }
200
+
201
+ if ($days == 1) {
202
+ return $this->_helper->__('(1 day)');
203
+ }
204
+
205
+ if ($days == 101) {
206
+ return $this->_helper->__('(On acknowledgment)');
207
+ }
208
+
209
+ return sprintf($this->_helper->__('(%s days)'), $days);
210
+ }
211
+ }
212
+
app/code/local/Intelipost/Shipping/Model/Carrier/Intelipost.php~ ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once Mage::getBaseDir('code') . '/local/Intelipost/Shipping/Model/Resource/Quote.php';
4
+ require_once Mage::getBaseDir('code') . '/local/Intelipost/Shipping/Model/Resource/Volume.php';
5
+
6
+ class Intelipost_Shipping_Model_Carrier_Intelipost
7
+ extends Mage_Shipping_Model_Carrier_Abstract
8
+ implements Mage_Shipping_Model_Carrier_Interface
9
+ {
10
+ protected $_code = 'intelipost';
11
+ protected $_helper = null;
12
+
13
+ private $_zipCodeRegex = '/[0-9]{2}\.?[0-9]{3}-?[0-9]{3}/';
14
+
15
+ public function collectRates(Mage_Shipping_Model_Rate_Request $request) {
16
+ $this->_helper = Mage::helper('intelipost');
17
+
18
+ if (!$this->getConfigFlag('active')) {
19
+ Mage::log('Intelipost is inactive', null, 'intelipost.log');
20
+ return false;
21
+ }
22
+
23
+ $originZipCode = $this->getConfigData('zipcode');
24
+ $destinationZipCode = $request->getDestPostcode();
25
+
26
+ if (!preg_match($this->_zipCodeRegex, $originZipCode) || !preg_match($this->_zipCodeRegex, $destinationZipCode)) {
27
+ Mage::log('Invalid zip code ' . $originZipCode . ' or ' . $destinationZipCode, null, 'intelipost.log');
28
+ return false;
29
+ }
30
+
31
+ // only numbers allowed
32
+ $originZipCode = preg_replace('/[^0-9]/', '', $originZipCode);
33
+ $destinationZipCode = preg_replace('/[^0-9]/', '', $destinationZipCode);
34
+
35
+ $weight = $request->getPackageWeight();
36
+ if ($weight <= 0) {
37
+ $this->_throwError('weightzeroerror', 'Weight zero', __LINE__);
38
+ }
39
+
40
+ // weight must be in Kg
41
+ if($this->getConfigData('weight_type') == 'gr') {
42
+ $weight = number_format($weight/1000, 2, '.', '');
43
+ }else{
44
+ // TODO: do the weight defaults to Kg if it is not gr?
45
+ $weight = number_format($weight, 2, '.', '');
46
+ }
47
+
48
+ $price = $request->getPackageValue();
49
+
50
+ $encryption = Mage::getSingleton('core/encryption');
51
+ // $account = $encryption->decrypt($this->getConfigData('account'));
52
+ // $password = $encryption->decrypt($this->getConfigData('password'));
53
+ $api_key = $encryption->decrypt($this->getConfigData('apikey'));
54
+ // $token = $encryption->decrypt($this->getConfigData('token'));
55
+
56
+ if(!isset($account) || !isset($password) || !isset($api_key) || !isset($token) ||
57
+ !is_string($account) || !is_string($password) || !is_string($api_key) || !is_string($token)
58
+ ){
59
+ Mage::log('Intelipost not configured', null, 'intelipost.log');
60
+ Mage::log('account: ' . $account, null, 'intelipost.log');
61
+ // take care to not log the password
62
+ Mage::log('password length: ' . strlen($password) , null, 'intelipost.log');
63
+ return false;
64
+ }
65
+
66
+ $item_list = Mage::getModel('checkout/cart')->getQuote()->getAllVisibleItems();
67
+ $productsCount = count($item_list);
68
+
69
+ $quote = new Intelipost_Model_Request_Quote();
70
+ $quote->origin_zip_code = $originZipCode;
71
+ $quote->destination_zip_code = $destinationZipCode;
72
+
73
+ if (!$request->getAllItems()) {
74
+ Mage::log('Cart is empty', null, 'intelipost.log');
75
+ return false;
76
+ }
77
+
78
+ // if notification is disabled we send the request anyways (changed on version 0.0.2)
79
+ $dimension_check = $this->getConfigData('notification');
80
+
81
+ $i=0;
82
+ foreach ($item_list as $item) {
83
+ $product = $item->getProduct();
84
+
85
+ $volume = new Intelipost_Model_Request_Volume();
86
+ $volume->volume_type = 'BOX';
87
+
88
+ if (!$this->isDimensionSet($product)) {
89
+ Mage::log('Product does not have dimensions set', null, 'intelipost.log');
90
+
91
+ if ($dimension_check) {
92
+ $this->notifyProductsDimension($item_list);
93
+ return false;
94
+ }
95
+ }else{
96
+ $volume->width = $product->getVolumeLargura();
97
+ $volume->height = $product->getVolumeAltura();
98
+ $volume->length = $product->getVolumeComprimento();
99
+ }
100
+
101
+ $volume->weight = number_format(floatval($item->getWeight()), 2, ',', '') * $item->getQty();
102
+ $volume->cost_of_goods = number_format(floatval($item->getPrice()), 2, ',', '') * $item->getQty();
103
+
104
+ array_push($quote->volumes, $volume);
105
+ }
106
+
107
+ $body = json_encode($quote);
108
+
109
+ $s = curl_init();
110
+ curl_setopt($s, CURLOPT_TIMEOUT, 5000);
111
+ curl_setopt($s, CURLOPT_URL, "https://api.intelipost.com.br/api/v1/quote");
112
+ /*if ($username != null && $password != null) {
113
+ curl_setopt($s, CURLOPT_USERPWD, $username . ":" . $password);
114
+ }*/
115
+ curl_setopt($s, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Accept: application/json", "api_key: $api_key"/*, "token: $token"*/));
116
+ curl_setopt($s, CURLOPT_POST, true);
117
+ curl_setopt($s, CURLOPT_ENCODING , "");
118
+ curl_setopt($s, CURLOPT_RETURNTRANSFER, 1);
119
+ curl_setopt($s, CURLOPT_POSTFIELDS, $body);
120
+ $responseBody = curl_exec($s);
121
+
122
+ $response = json_decode($responseBody);
123
+ // echo $responseBody;
124
+ curl_close($s);
125
+
126
+ $result = Mage::getModel('shipping/rate_result');
127
+
128
+ foreach ($response->content->delivery_options as $deliveryOption) {
129
+ $method = Mage::getModel('shipping/rate_result_method');
130
+
131
+ $method->setCarrier ('intelipost');
132
+ $method->setCarrierTitle('Intelipost');
133
+ $method->setMethod ($deliveryOption->description);
134
+ $method->setMethodTitle ($deliveryOption->description);
135
+ $method->setPrice ($deliveryOption->final_shipping_cost);
136
+ $method->setCost ($deliveryOption->provider_shipping_cost);
137
+
138
+ $result->append($method);
139
+ }
140
+
141
+ return $result;
142
+ }
143
+
144
+ public function getAllowedMethods() {
145
+ return array($this->_code => $this->getConfigData('name'));
146
+ }
147
+
148
+ private function isDimensionSet($product) {
149
+ $volume_altura = $product->getData('volume_altura');
150
+ $volume_largura = $product->getData('volume_largura');
151
+ $volume_comprimento = $product->getData('volume_comprimento');
152
+
153
+ if ($volume_comprimento == '' || (int)$volume_comprimento == 0
154
+ || $volume_largura == '' || (int)$volume_largura == 0
155
+ || $volume_altura == '' || (int)$volume_altura == 0
156
+ ) {
157
+ return false;
158
+ }
159
+
160
+ return true;
161
+ }
162
+
163
+ private function notifyProductsDimension($item_list) {
164
+ $notification = Mage::getSingleton('adminnotification/inbox');
165
+ $message = $this->_helper->__('The following products do not have dimension set:');
166
+
167
+ $message .= '<ul>';
168
+ foreach ($item_list as $item) {
169
+ $product = $item->getProduct();
170
+
171
+ if (!$this->isDimensionSet($product)) {
172
+ $message .= '<li>';
173
+ $message .= sprintf(
174
+ '<a href="%s">',
175
+ Mage::helper('adminhtml')->getUrl(
176
+ 'adminhtml/catalog_product/edit',
177
+ array( 'id' => $product->getId())
178
+ )
179
+ );
180
+ $message .= $item->getName();
181
+ $message .= '</a>';
182
+ $message .= '</li>';
183
+ }
184
+ }
185
+ $message .= '</ul>';
186
+
187
+ $message .= $this->_helper->__('<small>Disable these notifications in System > Settings > Carriers > Intelipost</small>');
188
+
189
+ $notification->add(
190
+ Mage_AdminNotification_Model_Inbox::SEVERITY_MINOR,
191
+ $this->_helper->__('Product missing dimensions'),
192
+ $message
193
+ );
194
+ }
195
+
196
+ private function formatDeadline($days) {
197
+ if ($days == 0) {
198
+ return $this->_helper->__('(same day)');
199
+ }
200
+
201
+ if ($days == 1) {
202
+ return $this->_helper->__('(1 day)');
203
+ }
204
+
205
+ if ($days == 101) {
206
+ return $this->_helper->__('(On acknowledgment)');
207
+ }
208
+
209
+ return sprintf($this->_helper->__('(%s days)'), $days);
210
+ }
211
+ }
app/code/local/Intelipost/Shipping/Model/Config/Apikey.php ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once Mage::getBaseDir('code') . '/local/Intelipost/Shipping/Model/Resource/Quote.php';
4
+ require_once Mage::getBaseDir('code') . '/local/Intelipost/Shipping/Model/Resource/Volume.php';
5
+
6
+ class Intelipost_Shipping_Model_Config_Apikey
7
+ extends Mage_Adminhtml_Model_System_Config_Backend_Encrypted
8
+ {
9
+
10
+ public function save() {
11
+ $api_key = $this->getValue();
12
+ $token = $this->getData('groups/intelipost/fields/token/value');
13
+ $password = $this->getData('groups/intelipost/fields/password/value');
14
+ // $username = $this->getData('groups/intelipost/fields/account/value');
15
+ $password = 'mate20mg';
16
+ $username = 'projecta';
17
+ $helper = Mage::helper('intelipost');
18
+
19
+ $volume = new Intelipost_Model_Request_Volume();
20
+ $volume->weight = 10;
21
+ $volume->volume_type = 'BOX';
22
+ $volume->cost_of_goods = "10";
23
+ $volume->width = 1;
24
+ $volume->height = 1;
25
+ $volume->length = 1;
26
+
27
+ $quote = new Intelipost_Model_Request_Quote();
28
+ $quote->origin_zip_code = "04037-002";
29
+ $quote->destination_zip_code = "04037-002";
30
+ array_push($quote->volumes, $volume);
31
+
32
+ $body = json_encode($quote);
33
+ $s = curl_init();
34
+ curl_setopt($s, CURLOPT_TIMEOUT, 5000);
35
+ curl_setopt($s, CURLOPT_URL, "https://api.intelipost.com.br/api/v1/quote");
36
+ if ($username != null && $password != null) {
37
+ curl_setopt($s, CURLOPT_USERPWD, $username . ":" . $password);
38
+ }
39
+ curl_setopt($s, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Accept: application/json", "api_key: $api_key"/*, "token: testtoken"*/));
40
+ curl_setopt($s, CURLOPT_POST, true);
41
+ curl_setopt($s, CURLOPT_ENCODING , "");
42
+ curl_setopt($s, CURLOPT_RETURNTRANSFER, 1);
43
+ curl_setopt($s, CURLOPT_POSTFIELDS, $body);
44
+
45
+ $responseBody = curl_exec($s);
46
+
47
+ $response = json_decode($responseBody);
48
+ curl_close($s);
49
+
50
+ if (!isset($response->status)) {
51
+ // Mage::getSingleton('core/session')->addWarning($helper->__('Could not validate username and password!'));
52
+ Mage::throwException($helper->__('Invalid ApiKey!'));
53
+ }
54
+
55
+ parent::save();
56
+ }
57
+ }
58
+
app/code/local/Intelipost/Shipping/Model/Config/Apikey.php~ ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once Mage::getBaseDir('code') . '/local/Intelipost/Shipping/Model/Resource/Quote.php';
4
+ require_once Mage::getBaseDir('code') . '/local/Intelipost/Shipping/Model/Resource/Volume.php';
5
+
6
+ class Intelipost_Shipping_Model_Config_Apikey
7
+ extends Mage_Adminhtml_Model_System_Config_Backend_Encrypted
8
+ {
9
+
10
+ public function save() {
11
+ $api_key = $this->getValue();
12
+ // $token = $this->getData('groups/intelipost/fields/token/value');
13
+ // $password = $this->getData('groups/intelipost/fields/password/value');
14
+ // $username = $this->getData('groups/intelipost/fields/account/value');
15
+ $helper = Mage::helper('intelipost');
16
+
17
+ $volume = new Intelipost_Model_Request_Volume();
18
+ $volume->weight = 10;
19
+ $volume->volume_type = 'BOX';
20
+ $volume->cost_of_goods = "10";
21
+ $volume->width = 1;
22
+ $volume->height = 1;
23
+ $volume->length = 1;
24
+
25
+ $quote = new Intelipost_Model_Request_Quote();
26
+ $quote->origin_zip_code = "04037-002";
27
+ $quote->destination_zip_code = "04037-002";
28
+ array_push($quote->volumes, $volume);
29
+
30
+ $body = json_encode($quote);
31
+ $s = curl_init();
32
+ curl_setopt($s, CURLOPT_TIMEOUT, 5000);
33
+ curl_setopt($s, CURLOPT_URL, "https://api.intelipost.com.br/api/v1/quote");
34
+ // if ($this->username != null && $this->password != null) {
35
+ // curl_setopt($s, CURLOPT_USERPWD, $username . ":" . $password);
36
+ // }
37
+ curl_setopt($s, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Accept: application/json", "api_key: $api_key"/*, "token: $token"*/));
38
+ curl_setopt($s, CURLOPT_POST, true);
39
+ curl_setopt($s, CURLOPT_ENCODING , "");
40
+ curl_setopt($s, CURLOPT_RETURNTRANSFER, 1);
41
+ curl_setopt($s, CURLOPT_POSTFIELDS, $body);
42
+
43
+ $responseBody = curl_exec($s);
44
+ Mage::log(var_dump($responseBody, true), null, intelipost.log);
45
+ $responseBody = curl_exec($s);
46
+ Mage::log(var_dump($responseBody, true), null, intelipost.log);
47
+
48
+ $response = json_decode($responseBody);
49
+ curl_close($s);
50
+
51
+ if (!isset($response->status)) {
52
+ // Mage::getSingleton('core/session')->addWarning($helper->__('Could not validate username and password!'));
53
+ Mage::throwException($helper->__('Invalid ApiKey!'));
54
+ }
55
+
56
+ parent::save();
57
+ }
58
+ }
app/code/local/Intelipost/Shipping/Model/Config/Password.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Intelipost_Shipping_Model_Config_Password
4
+ extends Mage_Adminhtml_Model_System_Config_Backend_Encrypted
5
+ {
6
+
7
+ public function save() {
8
+
9
+ $password = $this->getValue();
10
+ parent::save();
11
+
12
+ }
13
+
14
+
15
+ }
app/code/local/Intelipost/Shipping/Model/Config/Token.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Intelipost_Shipping_Model_Config_Token
4
+ extends Mage_Adminhtml_Model_System_Config_Backend_Encrypted
5
+ {
6
+
7
+ public function save() {
8
+
9
+ $token = $this->getValue();
10
+ parent::save();
11
+
12
+ }
13
+ }
app/code/local/Intelipost/Shipping/Model/Config/Useraccount.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Intelipost_Shipping_Model_Config_Useraccount
4
+ extends Mage_Adminhtml_Model_System_Config_Backend_Encrypted
5
+ {
6
+
7
+ public function save() {
8
+
9
+ $useraccount = $this->getValue();
10
+ parent::save();
11
+
12
+ }
13
+ }
app/code/local/Intelipost/Shipping/Model/Resource/Quote.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @author eSprinter (it@e-sprinter.com.br)
5
+ */
6
+ class Intelipost_Model_Request_Quote {
7
+ public $origin_zip_code;
8
+ public $destination_zip_code;
9
+ /**
10
+ * @var ESprinter_Model_Request_Volume[]
11
+ */
12
+ public $volumes = array();
13
+ }
app/code/local/Intelipost/Shipping/Model/Resource/Setup.php ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class Intelipost_Shipping_Model_Resource_Setup
5
+ extends Mage_Eav_Model_Entity_Setup
6
+ {
7
+ public function getDefaultEntities() {
8
+ return array(
9
+ // 'catalog_product' => array(
10
+ // 'catalog/product' => array(
11
+ Mage_Catalog_Model_Product::ENTITY => array(
12
+ 'entity_model' => 'catalog/product',
13
+ 'attribute_model' => 'catalog/resource_eav_attribute',
14
+ 'table' => 'catalog/product',
15
+
16
+ // INFO: these two entries bellow are needed for magento 1.4, they do not exist on magento 1.3!
17
+ 'additional_attribute_table' => 'catalog/eav_attribute',
18
+ 'entity_attribute_collection' => 'catalog/product_attribute_collection',
19
+
20
+ // this seems to break the shopping cart (http://www.magentocommerce.com/boards/viewthread/176130/#t232548)
21
+ // 'entity_attribute_collection' => 'catalog/category_attribute_collection',
22
+
23
+ // 'frontend_prefix' => '',
24
+ // 'backend_prefix' => '',
25
+ // 'source_prefix' => '',
26
+
27
+ 'attributes' => array(
28
+ // attributes are called 'volume_altura', 'volume_largura', and 'volume_comprimento' so that this plugin is compatible with
29
+ // the Correios plugin
30
+ // 'height' => array(
31
+ 'volume_altura' => array(
32
+ 'group' => 'General', // tab
33
+ 'type' => 'int', // magento attribute type
34
+ 'backend' => '',
35
+ 'frontend' => '',
36
+ 'label' => 'Height',
37
+ 'input' => 'text',
38
+ 'class' => '', // input validation class
39
+ 'source' => '', // options for the select
40
+ 'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
41
+ 'visible' => true,
42
+ 'required' => false,
43
+ 'user_defined' => false, // true => user attribute, false => system attribute
44
+ 'default' => '',
45
+ 'searchable' => false,
46
+ 'filterable' => false,
47
+ 'comparable' => false,
48
+ 'visible_on_front' => false,
49
+ 'used_in_product_listing' => true, // needed to load this EAV attribute on collectRates()
50
+ 'unique' => false,
51
+ 'apply_to' => array('bundle,simple'), //array('bundle,virtual,simple'),
52
+ 'is_configurable' => false
53
+ ),
54
+ // 'width' => array(
55
+ 'volume_largura' => array(
56
+ 'group' => 'General', // tab
57
+ 'type' => 'int', // magento attribute type
58
+ 'backend' => '',
59
+ 'frontend' => '',
60
+ 'label' => 'Width',
61
+ 'input' => 'text',
62
+ 'class' => '', // input validation class
63
+ 'source' => '', // options for the select
64
+ 'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
65
+ 'visible' => true,
66
+ 'required' => false,
67
+ 'user_defined' => false, // true => user attribute, false => system attribute
68
+ 'default' => '',
69
+ 'searchable' => false,
70
+ 'filterable' => false,
71
+ 'comparable' => false,
72
+ 'visible_on_front' => false,
73
+ 'used_in_product_listing' => true, // needed to load this EAV attribute on collectRates()
74
+ 'unique' => false,
75
+ 'apply_to' => array('bundle,simple'), //array('bundle,virtual,simple'),
76
+ 'is_configurable' => false
77
+ ),
78
+ // 'length' => array(
79
+ 'volume_comprimento' => array(
80
+ 'group' => 'General', // tab
81
+ 'type' => 'int', // magento attribute type
82
+ 'backend' => '',
83
+ 'frontend' => '',
84
+ 'label' => 'Length',
85
+ 'input' => 'text',
86
+ 'class' => '', // input validation class
87
+ 'source' => '', // options for the select
88
+ 'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
89
+ 'visible' => true,
90
+ 'required' => false,
91
+ 'user_defined' => false, // true => user attribute, false => system attribute
92
+ 'default' => '',
93
+ 'searchable' => false,
94
+ 'filterable' => false,
95
+ 'comparable' => false,
96
+ 'visible_on_front' => false,
97
+ 'used_in_product_listing' => true, // needed to load this EAV attribute on collectRates()
98
+ 'unique' => false,
99
+ 'apply_to' => array('bundle,simple'), //array('bundle,virtual,simple'),
100
+ 'is_configurable' => false
101
+ )
102
+ )
103
+ )
104
+ );
105
+ }
106
+ }
app/code/local/Intelipost/Shipping/Model/Resource/Volume.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author eSprinter (it@e-sprinter.com.br)
4
+ */
5
+
6
+ class Intelipost_Model_Request_Volume {
7
+ /**
8
+ * @var double
9
+ */
10
+ public $weight;
11
+ /**
12
+ * @var string[BOX|ENVELOPE]
13
+ */
14
+ public $volume_type;
15
+ /**
16
+ * @var double
17
+ */
18
+ public $cost_of_goods;
19
+ /**
20
+ * @var double
21
+ */
22
+ public $width;
23
+ /**
24
+ * @var double
25
+ */
26
+ public $height;
27
+ /**
28
+ * @var double
29
+ */
30
+ public $length;
31
+
32
+ }
app/code/local/Intelipost/Shipping/etc/config.xml ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+
3
+ <config>
4
+ <modules>
5
+ <Intelipost_Shipping>
6
+ <version>0.0.1</version>
7
+ </Intelipost_Shipping>
8
+ </modules>
9
+
10
+ <global>
11
+ <models>
12
+ <intelipost_shipping>
13
+ <class>Intelipost_Shipping_Model</class>
14
+ </intelipost_shipping>
15
+ </models>
16
+
17
+ <helpers>
18
+ <intelipost>
19
+ <class>Intelipost_Shipping_Helper</class>
20
+ </intelipost>
21
+ </helpers>
22
+
23
+ <resources>
24
+ <intelipost_setup>
25
+ <setup>
26
+ <module>Intelipost_Shipping</module>
27
+ <class>Intelipost_Shipping_Model_Resource_Setup</class>
28
+ </setup>
29
+ </intelipost_setup>
30
+ </resources>
31
+
32
+ <sales>
33
+ <quote>
34
+ <item>
35
+ <product_attributes>
36
+ <volume_altura />
37
+ <volume_largura />
38
+ <volume_comprimento />
39
+ </product_attributes>
40
+ </item>
41
+ </quote>
42
+ </sales>
43
+ </global>
44
+
45
+ <adminhtml>
46
+ <translate>
47
+ <modules>
48
+ <Intelipost_Shipping>
49
+ <files>
50
+ <default>Intelipost_Shipping.csv</default>
51
+ </files>
52
+ </Intelipost_Shipping>
53
+ </modules>
54
+ </translate>
55
+ </adminhtml>
56
+
57
+ <frontend>
58
+ <translate>
59
+ <modules>
60
+ <Intelipost_Shipping>
61
+ <files>
62
+ <default>Intelipost_Shipping.csv</default>
63
+ </files>
64
+ </Intelipost_Shipping>
65
+ </modules>
66
+ </translate>
67
+ </frontend>
68
+
69
+ <default>
70
+ <carriers>
71
+ <intelipost>
72
+ <active>1</active>
73
+ <model>intelipost_shipping/carrier_intelipost</model>
74
+ <name>Intelipost</name>
75
+ <title>Intelipost</title>
76
+ <notification>1</notification>
77
+ </intelipost>
78
+ </carriers>
79
+ </default>
80
+
81
+ </config>
app/code/local/Intelipost/Shipping/etc/system.xml ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+
3
+ <config>
4
+ <sections>
5
+ <carriers>
6
+ <groups>
7
+ <intelipost translate="label" module="shipping">
8
+ <label>Intelipost Shipping</label>
9
+ <frontend_type>text</frontend_type>
10
+ <sort_order>5</sort_order>
11
+ <show_in_default>1</show_in_default>
12
+ <show_in_website>1</show_in_website>
13
+ <show_in_store>1</show_in_store>
14
+
15
+ <fields>
16
+ <active translate="label">
17
+ <label>Enabled</label>
18
+ <frontend_type>select</frontend_type>
19
+ <source_model>adminhtml/system_config_source_yesno</source_model>
20
+ <sort_order>1</sort_order>
21
+ <show_in_default>1</show_in_default>
22
+ <show_in_website>1</show_in_website>
23
+ <show_in_store>1</show_in_store>
24
+ </active>
25
+
26
+ <!-- <account translate="label">
27
+ <label>User Account</label>
28
+ <frontend_type>text</frontend_type>
29
+ <backend_model>intelipost_shipping/config_useraccount</backend_model>
30
+ <validate>required-entry</validate>
31
+ <sort_order>2</sort_order>
32
+ <show_in_default>1</show_in_default>
33
+ <show_in_website>1</show_in_website>
34
+ <show_in_store>1</show_in_store>
35
+ </account> -->
36
+
37
+ <!-- Model/Config/Password depends on this tag name + hierarchy -->
38
+ <!-- <password translate="label">
39
+ <label>Password</label>
40
+ <frontend_type>text</frontend_type>
41
+ <backend_model>intelipost_shipping/config_password</backend_model>
42
+ <validate>required-entry</validate>
43
+ <sort_order>3</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
+ </password> -->
48
+
49
+ <apikey translate="label">
50
+ <label>API Key</label>
51
+ <frontend_type>text</frontend_type>
52
+ <backend_model>intelipost_shipping/config_apikey</backend_model>
53
+ <validate>required-entry</validate>
54
+ <sort_order>4</sort_order>
55
+ <show_in_default>1</show_in_default>
56
+ <show_in_website>1</show_in_website>
57
+ <show_in_store>1</show_in_store>
58
+ </apikey>
59
+
60
+ <!-- <token translate="label">
61
+ <label>Token</label>
62
+ <frontend_type>text</frontend_type>
63
+ <backend_model>intelipost_shipping/config_token</backend_model>
64
+ <validate>required-entry</validate>
65
+ <sort_order>5</sort_order>
66
+ <show_in_default>1</show_in_default>
67
+ <show_in_website>1</show_in_website>
68
+ <show_in_store>1</show_in_store>
69
+ </token> -->
70
+
71
+ <zipcode translate="label">
72
+ <label>Postal Code</label>
73
+ <frontend_type>text</frontend_type>
74
+ <!--<validate>validate-zip-international required-entry</validate>-->
75
+ <validate>required-entry</validate>
76
+ <sort_order>6</sort_order>
77
+ <show_in_default>1</show_in_default>
78
+ <show_in_website>1</show_in_website>
79
+ <show_in_store>1</show_in_store>
80
+ </zipcode>
81
+
82
+ <!-- <category translate="label">
83
+ <label>Choose the best fitting category for your products</label>
84
+ <frontend_type>select</frontend_type>
85
+ <source_model>intelipost_shipping/carrier_category</source_model>
86
+ <sort_order>7</sort_order>
87
+ <show_in_default>1</show_in_default>
88
+ <show_in_website>1</show_in_website>
89
+ <show_in_store>1</show_in_store>
90
+ </category>-->
91
+
92
+ <notification translate="label">
93
+ <label>Enable dimension check and notifications</label>
94
+ <frontend_type>select</frontend_type>
95
+ <source_model>adminhtml/system_config_source_yesno</source_model>
96
+ <sort_order>8</sort_order>
97
+ <show_in_default>1</show_in_default>
98
+ <show_in_website>1</show_in_website>
99
+ <show_in_store>1</show_in_store>
100
+ </notification>
101
+
102
+ <!-- <webservice_url translate="label">
103
+ <label>Axado's webservice url</label>
104
+ <frontend_type>text</frontend_type>
105
+ <sort_order>10</sort_order>
106
+ <show_in_default>1</show_in_default>
107
+ <show_in_website>1</show_in_website>
108
+ <show_in_store>1</show_in_store>
109
+ </webservice_url> -->
110
+ </fields>
111
+
112
+ </intelipost>
113
+ </groups>
114
+ </carriers>
115
+ </sections>
116
+ </config>
app/code/local/Intelipost/Shipping/sql/intelipost_setup/mysql4-install-0.0.1.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // EIntelipost_Shipping_Model_Resource_Setup
4
+ $installer = $this;
5
+
6
+ $installer->startSetup();
7
+ $installer->installEntities();
8
+ $installer->endSetup();
app/etc/modules/Intelipost_Shipping.xml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+
3
+ <config>
4
+ <modules>
5
+ <Intelipost_Shipping>
6
+ <active>true</active>
7
+ <codePool>local</codePool>
8
+ <depends>
9
+ <Mage_Shipping />
10
+ </depends>
11
+ </Intelipost_Shipping>
12
+ </modules>
13
+ <global>
14
+ <sales>
15
+ <quote>
16
+ <item>
17
+ <product_attributes>
18
+ <height />
19
+ <length />
20
+ <width />
21
+ </product_attributes>
22
+ </item>
23
+ </quote>
24
+ </sales>
25
+ </global>
26
+ </config>
app/locale/pt_BR/Intelipost_Shipping.csv ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "User Account","Usuário"
2
+ "Postal Code","CEP"
3
+ "Choose the best fitting category for your products","Escolha a melhor categoria para os seus produtos"
4
+ "Enable notification","Habilitar notificações"
5
+ "Enable notification and dimension check","Habilitar notificações e validação de dimensões"
6
+ "Enable dimension check and notifications","Habilitar validação de dimensões e notificações"
7
+ "Alcoholic","Bebidas"
8
+ "Beverages","Líquidos Diversos"
9
+ "Books and/or graphical material","Livros ou Materiais gráficos"
10
+ "Clothing","Roupas e vestuários"
11
+ "Cosmetics","Cosméticos"
12
+ "Documents","Documentos"
13
+ "Eletronics","Eletrônicos e informática"
14
+ "Floriculture","Floricultura"
15
+ "Food","Alimentos"
16
+ "Fragile products","Produto Frágil"
17
+ "High value products","Objetos de alto valor"
18
+ "Machinery and/or parts","Máquinas ou Peças em geral"
19
+ "Office supplies and furniture","Móveis ou Objetos de escritório"
20
+ "Pharmacy","Produto Farmacêutico"
21
+ "Toys","Brinquedos"
22
+ "The following products do not have dimension set:","Os seguintes produtos não tem as dimensões definidas:"
23
+ "<small>Disable these notifications in System > Settings > Carriers > Intelipost</small>","<small>Desabilite as notifações em Sistema > Configuração > Métodos de envio > Intelipost</small>"
24
+ "Product missing dimensions","Produto sem dimensões"
25
+ "(same day)","(mesmo dia)"
26
+ "(1 day)","(1 dia útil)"
27
+ "(On acknowledgment)","(Sob consulta)"
28
+ "(%s days)","(%s dias úteis)"
29
+ "User account has the wrong size!","Usuário/Senha não número certo de caracteres!"
30
+ "Invalid username or password!","Usuário e/ou senha inválidos!"
31
+ "Could not validate username and password!","Erro ao validar usuário e senha"
package.xml ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Intelipost</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License Version 2 (GPLv2)</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Intelipost</summary>
10
+ <description>Extens&amp;#xE3;o para utilizar o servi&amp;#xE7;o de cota&amp;#xE7;&amp;#xE3;o do intelipost.com.br . &#xD;
11
+ Gateway de log&#xED;stica para o e-commerce</description>
12
+ <notes>---</notes>
13
+ <authors><author><name>Intelipost</name><user>Intelipost</user><email>info@intelipost.com.br</email></author></authors>
14
+ <date>2014-03-27</date>
15
+ <time>11:14:30</time>
16
+ <contents><target name="magelocal"><dir><dir name="Intelipost"><dir name="Shipping"><dir name="Helper"><file name="Data.php" hash="7523e254d75d8ec6413164bdfc9484ce"/></dir><dir name="Model"><dir name="Carrier"><file name="Category.php" hash="9e3f8a5013f819dc65c9b84848182c8a"/><file name="Intelipost.php" hash="ed0b097f70db82ca33e0f2107fe2f34d"/><file name="Intelipost.php~" hash="fc48f350e774fae6523449efedbccf62"/></dir><dir name="Config"><file name="Apikey.php" hash="b74ed350e2aad08f58f56caaa2b6f7a4"/><file name="Apikey.php~" hash="9df9c5ccba568dfc991586151894b6b5"/><file name="Password.php" hash="a3b0f867850520e637ed6d1561047093"/><file name="Token.php" hash="ae2ef4b4527f06c17061d6c984fa0a28"/><file name="Useraccount.php" hash="89a67edacda5169a4f58590e6ac24006"/></dir><dir name="Resource"><file name="Quote.php" hash="1f02542b8f6c4a16400da34e723c0541"/><file name="Setup.php" hash="8f10c3277be3454dbf61abb1fb0b06f4"/><file name="Volume.php" hash="e1e8de42eeb5d1e02e7ebc4a2dff6dd0"/></dir></dir><dir name="etc"><file name="config.xml" hash="5e5cf688524df28ee306b11424804363"/><file name="system.xml" hash="ff6564d28de2203c67379147d24fdea7"/></dir><dir name="sql"><dir name="intelipost_setup"><file name="mysql4-install-0.0.1.php" hash="7cbddb7bad3e35cba43d14d8e2308900"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Intelipost_Shipping.xml" hash="285e60144ae15077910cb9200038adb9"/></dir></target><target name="magelocale"><dir><dir name="pt_BR"><file name="Intelipost_Shipping.csv" hash="ae1e673344d004666d04b254556685c5"/></dir></dir></target></contents>
17
+ <compatible/>
18
+ <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
19
+ </package>