PedroTeixeira_Correios - Version 4.2.0

Version Notes

Módulo de cálculo de PAC, Sedex, E-Sedex, Sedex 10, Sedex Hoje e Sedex a Cobrar.

Download this release

Release Info

Developer Magento Core Team
Extension PedroTeixeira_Correios
Version 4.2.0
Comparing to
See all releases


Code changes from version 4.1.0 to 4.2.0

app/code/community/PedroTeixeira/Correios/Helper/Data.php CHANGED
@@ -1,18 +1,18 @@
1
- <?php
2
- /**
3
- * Pedro Teixeira
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL).
8
- * It is also available through the world-wide-web at this URL:
9
- * http://opensource.org/licenses/osl-3.0.php
10
- *
11
- * @category PedroTeixeira
12
- * @package PedroTeixeira_Correios
13
- * @copyright Copyright (c) 2010 Pedro Teixeira (http://www.pteixeira.com.br)
14
- * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
16
- */
17
-
18
- class PedroTeixeira_Correios_Helper_Data extends Mage_Core_Helper_Abstract { }
1
+ <?php
2
+ /**
3
+ * Pedro Teixeira
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the New BSD License.
8
+ * It is also available through the world-wide-web at this URL:
9
+ * http://www.pteixeira.com.br/new-bsd-license/
10
+ *
11
+ * @category PedroTeixeira
12
+ * @package PedroTeixeira_Correios
13
+ * @copyright Copyright (c) 2011 Pedro Teixeira (http://www.pteixeira.com.br)
14
+ * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
+ * @license http://www.pteixeira.com.br/new-bsd-license/ New BSD License
16
+ */
17
+
18
+ class PedroTeixeira_Correios_Helper_Data extends Mage_Core_Helper_Abstract { }
app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php CHANGED
@@ -1,782 +1,694 @@
1
- <?php
2
- /**
3
- * Pedro Teixeira
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL).
8
- * It is also available through the world-wide-web at this URL:
9
- * http://opensource.org/licenses/osl-3.0.php
10
- *
11
- * @category PedroTeixeira
12
- * @package PedroTeixeira_Correios
13
- * @copyright Copyright (c) 2010 Pedro Teixeira (http://www.pteixeira.com.br)
14
- * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
16
- */
17
-
18
- /**
19
- * PedroTeixeira_Correios_Model_Carrier_CorreiosMethod
20
- *
21
- * @category PedroTeixeira
22
- * @package PedroTeixeira_Correios
23
- * @author Pedro Teixeira <pedro@pteixeira.com.br>
24
- */
25
-
26
- class PedroTeixeira_Correios_Model_Carrier_CorreiosMethod
27
- extends Mage_Shipping_Model_Carrier_Abstract
28
- implements Mage_Shipping_Model_Carrier_Interface
29
- {
30
-
31
- /**
32
- * _code property
33
- *
34
- * @var string
35
- */
36
- protected $_code = 'pedroteixeira_correios';
37
-
38
- /**
39
- * _result property
40
- *
41
- * @var Mage_Shipping_Model_Rate_Result / Mage_Shipping_Model_Tracking_Result
42
- */
43
- protected $_result = null;
44
-
45
- /**
46
- * ZIP code vars
47
- */
48
- protected $_fromZip = null;
49
- protected $_toZip = null;
50
-
51
- /**
52
- * Value and Weight
53
- */
54
- protected $_packageValue = null;
55
- protected $_packageWeight = null;
56
- protected $_pacWeight = null;
57
- protected $_freeMethodWeight = null;
58
-
59
- /**
60
- * Post methods
61
- */
62
- protected $_postMethods = null;
63
- protected $_postMethodsFixed = null;
64
- protected $_postMethodsExplode = null;
65
-
66
- /**
67
- * Free method request
68
- */
69
- protected $_freeMethodRequest = false;
70
- protected $_freeMethodRequestResult = null;
71
-
72
- /**
73
- * Collect Rates
74
- *
75
- * @param Mage_Shipping_Model_Rate_Request $request
76
- * @return Mage_Shipping_Model_Rate_Result
77
- */
78
- public function collectRates(Mage_Shipping_Model_Rate_Request $request)
79
- {
80
- // Do initial check
81
- if($this->_inicialCheck($request) === false)
82
- {
83
- return false;
84
- }
85
-
86
- // Check package value
87
- if($this->_packageValue < $this->getConfigData('min_order_value') || $this->_packageValue > $this->getConfigData('max_order_value'))
88
- {
89
- //Value limits
90
- $this->_throwError('valueerror', 'Value limits', __LINE__);
91
- return $this->_result;
92
- }
93
-
94
- // Check ZIP Code
95
- if(!preg_match("/^([0-9]{8})$/", $this->_toZip))
96
- {
97
- //Invalid Zip Code
98
- $this->_throwError('zipcodeerror', 'Invalid Zip Code', __LINE__);
99
- return $this->_result;
100
- }
101
-
102
- // Fix weight
103
- $weightCompare = $this->getConfigData('maxweight');
104
- if($this->getConfigData('weight_type') == 'gr')
105
- {
106
- $this->_packageWeight = number_format($this->_packageWeight/1000, 2, '.', '');
107
- $weightCompare = number_format($weightCompare/1000, 2, '.', '');
108
- }
109
-
110
- // Check weght
111
- if ($this->_packageWeight > $weightCompare)
112
- {
113
- //Weight exceeded limit
114
- $this->_throwError('maxweighterror', 'Weight exceeded limit', __LINE__);
115
- return $this->_result;
116
- }
117
-
118
- // Check weight zero
119
- if ($this->_packageWeight <= 0)
120
- {
121
- //Weight zero
122
- $this->_throwError('weightzeroerror', 'Weight zero', __LINE__);
123
- return $this->_result;
124
- }
125
-
126
- // Generate PAC Weight
127
- $this->_generatePacWeight();
128
-
129
- // Get post methods
130
- $this->_postMethods = $this->getConfigData('postmethods');
131
- $this->_postMethodsFixed = $this->_postMethods;
132
- $this->_postMethodsExplode = explode(",", $this->getConfigData('postmethods'));
133
-
134
- // Get quotes
135
- if($this->_getQuotes()->getError()) {
136
- return $this->_result;
137
- }
138
-
139
- // Use descont codes
140
- $this->_updateFreeMethodQuote($request);
141
-
142
- // Return rates / errors
143
- return $this->_result;
144
-
145
- }
146
-
147
- /**
148
- * Get shipping quote
149
- *
150
- * @return bool
151
- */
152
- protected function _getQuotes(){
153
-
154
- $pacCodes = explode(",", $this->getConfigData('pac_codes'));
155
- $contratoCodes = explode(",", $this->getConfigData('contrato_codes'));
156
- $dieErrors = explode(",", $this->getConfigData('die_errors'));
157
-
158
-
159
- //Define URL method
160
- switch ($this->getConfigData('urlmethod')){
161
-
162
- //Locaweb
163
- case 1:
164
-
165
- foreach ($this->_postMethodsExplode as $postmethod){
166
-
167
- try{
168
- $soap = new SoapClient($this->getConfigData('url_ws_locaweb'), array(
169
- 'trace' => true,
170
- 'exceptions' => true,
171
- 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP,
172
- 'connection_timeout' => $this->getConfigData('ws_timeout')
173
- ));
174
-
175
- // Postagem dos parâmetros
176
- $parms = new Varien_Object();
177
- $parms->cepOrigem = utf8_encode($this->_fromZip);
178
- $parms->cepDestino = utf8_encode($this->_toZip);
179
-
180
- // If PAC use PAC weight
181
- if(in_array($postmethod, $pacCodes) && $this->_pacWeight > $this->_packageWeight){
182
- $parms->peso = utf8_encode(str_replace(".",",",$this->_pacWeight));
183
- }else{
184
- $parms->peso = utf8_encode(str_replace(".",",",$this->_packageWeight));
185
- }
186
-
187
- $parms->volume = utf8_encode(1);
188
- $parms->codigo = utf8_encode($postmethod);
189
-
190
- // Resgata o valor calculado
191
- $resposta = $soap->Correios($parms);
192
-
193
- $shippingPrice = floatval(str_replace(",",".",$resposta->CorreiosResult));
194
-
195
- }catch(Exception $e){
196
- //URL Error
197
- $this->_throwError('urlerror', 'URL Error - ' . $e->getMessage(), __LINE__);
198
- return $this->_result;
199
- }
200
-
201
- //URL Error
202
- if($shippingPrice == 0){
203
- //URL Error
204
- $this->_throwError('urlerror', 'URL Error', __LINE__);
205
- return $this->_result;
206
- }
207
-
208
- $this->_apendShippingReturn($postmethod, $shippingPrice);
209
-
210
- }
211
- break;
212
-
213
- //Correios
214
- case 0:
215
-
216
- $correiosReturn = $this->_getCorreiosReturn();
217
- if($correiosReturn !== false){
218
-
219
- // Check if exist return from Correios
220
- $existReturn = false;
221
-
222
- foreach($correiosReturn as $servicos){
223
-
224
- // Get Correios error
225
- $errorId = $this->_cleanCorreiosError((string)$servicos->Erro);
226
-
227
- if($errorId != 0){
228
- // Error, throw error message
229
- if(in_array($errorId, $dieErrors)){
230
- $this->_throwError('correioserror', 'Correios Error: ' . (string)$servicos->MsgErro . ' [Cod. ' . $errorId . '] [Serv. ' . (string)$servicos->Codigo . ']' , __LINE__, (string)$servicos->MsgErro . ' (Cod. ' . $errorId . ')');
231
- return $this->_result;
232
- }else{
233
- continue;
234
- }
235
- }
236
-
237
- // If PAC, make a new call to WS
238
- if(in_array((string)$servicos->Codigo, $pacCodes) && $this->_pacWeight > $this->_packageWeight && !in_array($this->_postMethodsFixed, $pacCodes)){
239
-
240
- $this->_postMethods = (string)$servicos->Codigo;
241
- $this->_postMethodsExplode = array((string)$servicos->Codigo);
242
-
243
- $correiosReturnPac = $this->_getCorreiosReturn();
244
- if($correiosReturnPac !== false){
245
-
246
- foreach($correiosReturnPac as $servicosPac){
247
-
248
- // Get Correios error
249
- $errorId = $this->_cleanCorreiosError((string)$servicosPac->Erro);
250
-
251
- if($errorId != 0){
252
- // Error, throw error message
253
- if(in_array($errorId, $dieErrors)){
254
- $this->_throwError('correioserror', 'Correios Error: ' . (string)$servicosPac->MsgErro . ' (Cod. ' . $errorId . ')', __LINE__, (string)$servicosPac->MsgErro . ' (Cod. ' . $errorId . ')');
255
- return $this->_result;
256
- }else{
257
- continue;
258
- }
259
- }
260
-
261
- $shippingPrice = floatval(str_replace(",",".",(string)$servicosPac->Valor));
262
- $shippingDelivery = (int)$servicosPac->PrazoEntrega;
263
-
264
- }
265
-
266
- }else{
267
- return $this->_result;
268
- }
269
- }else{
270
-
271
- $shippingPrice = floatval(str_replace(",",".",(string)$servicos->Valor));
272
- $shippingDelivery = (int)$servicos->PrazoEntrega;
273
-
274
- }
275
-
276
- if($shippingPrice <= 0){
277
- continue;
278
- }
279
-
280
- // Apend shipping
281
- $this->_apendShippingReturn((string)$servicos->Codigo, $shippingPrice, $shippingDelivery);
282
- $existReturn = true;
283
-
284
- }
285
-
286
- // All services are ignored
287
- if($existReturn === false){
288
- $this->_throwError('urlerror', 'URL Error, all services return with error', __LINE__);
289
- return $this->_result;
290
- }
291
-
292
- }else{
293
- // Error on HTTP Correios
294
- return $this->_result;
295
-
296
- }
297
-
298
- break;
299
-
300
- }
301
-
302
- // Success
303
- if($this->_freeMethodRequest === true){
304
- return $this->_freeMethodRequestResult;
305
- }else{
306
- return $this->_result;
307
- }
308
- }
309
-
310
-
311
- /**
312
- * Make initial checks and iniciate module variables
313
- *
314
- * @param Mage_Shipping_Model_Rate_Request $request
315
- * @return boolean
316
- */
317
- protected function _inicialCheck(Mage_Shipping_Model_Rate_Request $request){
318
-
319
- if (!$this->getConfigFlag('active'))
320
- {
321
- //Disabled
322
- Mage::log('PedroTeixeira_Correios: Disabled');
323
- return false;
324
- }
325
-
326
-
327
- $origCountry = Mage::getStoreConfig('shipping/origin/country_id', $this->getStore());
328
- $destCountry = $request->getDestCountryId();
329
- if ($origCountry != "BR" || $destCountry != "BR"){
330
- //Out of delivery area
331
- Mage::log('PedroTeixeira_Correios: Out of delivery area');
332
- return false;
333
- }
334
-
335
- // ZIP Code
336
- $this->_fromZip = Mage::getStoreConfig('shipping/origin/postcode', $this->getStore());
337
- $this->_toZip = $request->getDestPostcode();
338
-
339
- //Fix Zip Code
340
- $this->_fromZip = str_replace('-', '', trim($this->_fromZip));
341
- $this->_toZip = str_replace('-', '', trim($this->_toZip));
342
-
343
- if(!preg_match("/^([0-9]{8})$/", $this->_fromZip)){
344
- //From zip code error
345
- Mage::log('PedroTeixeira_Correios: From ZIP Code Error');
346
- return false;
347
- }
348
-
349
- // Result model
350
- $this->_result = Mage::getModel('shipping/rate_result');
351
-
352
- // Value
353
- $this->_packageValue = $request->getBaseCurrency()->convert($request->getPackageValue(), $request->getPackageCurrency());
354
-
355
- // Weight
356
- $this->_packageWeight = number_format($request->getPackageWeight(), 2, '.', '');
357
-
358
- // Free method weight
359
- $this->_freeMethodWeight = number_format($request->getFreeMethodWeight(), 2, '.', '');
360
-
361
- }
362
-
363
- /**
364
- * Get Correios return
365
- *
366
- * @return bool
367
- */
368
- protected function _getCorreiosReturn(){
369
-
370
- $filename = $this->getConfigData('url_ws_correios');
371
-
372
- $pacCodes = explode(",", $this->getConfigData('pac_codes'));
373
- $contratoCodes = explode(",", $this->getConfigData('contrato_codes'));
374
-
375
- try {
376
- $client = new Zend_Http_Client($filename);
377
- $client->setConfig(array(
378
- 'timeout' => $this->getConfigData('ws_timeout')
379
- ));
380
-
381
- $client->setParameterGet('StrRetorno', 'xml');
382
- $client->setParameterGet('nCdServico', $this->_postMethods);
383
-
384
- if(in_array($this->_postMethods, $pacCodes) && $this->_pacWeight > $this->_packageWeight){
385
- $client->setParameterGet('nVlPeso', $this->_pacWeight);
386
- }else{
387
- $client->setParameterGet('nVlPeso', $this->_packageWeight);
388
- }
389
-
390
- $client->setParameterGet('sCepOrigem', $this->_fromZip);
391
- $client->setParameterGet('sCepDestino', $this->_toZip);
392
- $client->setParameterGet('nCdFormato',1);
393
- $client->setParameterGet('nVlComprimento',$this->getConfigData('comprimento_sent'));
394
- $client->setParameterGet('nVlAltura',$this->getConfigData('altura_sent'));
395
- $client->setParameterGet('nVlLargura',$this->getConfigData('largura_sent'));
396
-
397
- if($this->getConfigData('mao_propria')){
398
- $client->setParameterGet('sCdMaoPropria','S');
399
- }else{
400
- $client->setParameterGet('sCdMaoPropria','N');
401
- }
402
-
403
- if($this->getConfigData('aviso_recebimento')){
404
- $client->setParameterGet('sCdAvisoRecebimento','S');
405
- }else{
406
- $client->setParameterGet('sCdAvisoRecebimento','N');
407
- }
408
-
409
- if($this->getConfigData('valor_declarado') || in_array($this->getConfigData('acobrar_code'), $this->_postMethodsExplode)){
410
- $client->setParameterGet('nVlValorDeclarado',number_format($this->_packageValue, 2, ',', '.'));
411
- }else{
412
- $client->setParameterGet('nVlValorDeclarado',0);
413
- }
414
-
415
- $contrato = false;
416
- foreach($contratoCodes as $contratoEach){
417
- if(in_array($contratoEach, $this->_postMethodsExplode)){
418
- $contrato = true;
419
- }
420
- }
421
-
422
- if($contrato){
423
- if($this->getConfigData('cod_admin') == '' || $this->getConfigData('senha_admin') == ''){
424
- // Need correios admin data
425
- $this->_throwError('coderror', 'Need correios admin data', __LINE__);
426
- return false;
427
- }else{
428
- $client->setParameterGet('nCdEmpresa',$this->getConfigData('cod_admin'));
429
- $client->setParameterGet('sDsSenha',$this->getConfigData('senha_admin'));
430
- }
431
- }
432
-
433
- $content = $client->request();
434
- $conteudo = $content->getBody();
435
-
436
- if ($conteudo == ""){
437
- throw new Exception("No XML returned [" . __LINE__ . "]");
438
- }
439
-
440
- libxml_use_internal_errors(true);
441
- $sxe = simplexml_load_string($conteudo);
442
- if (!$sxe) {
443
- throw new Exception("Bad XML [" . __LINE__ . "]");
444
- }
445
-
446
- // Load XML
447
- $xml = new SimpleXMLElement($conteudo);
448
-
449
- if(count($xml->cServico) <= 0){
450
- throw new Exception("No tag cServico in Correios XML [" . __LINE__ . "]");
451
- }
452
-
453
- return $xml->cServico;
454
-
455
-
456
- } catch (Exception $e) {
457
- //URL Error
458
- $this->_throwError('urlerror', 'URL Error - ' . $e->getMessage(), __LINE__);
459
- return false;
460
- };
461
-
462
-
463
- }
464
-
465
- /**
466
- * Apend shipping value to return
467
- *
468
- * @param $shipping_method string
469
- * @param $shippingPrice float
470
- * @param $correiosReturn array
471
- */
472
- protected function _apendShippingReturn($shipping_method, $shippingPrice = 0, $correiosDelivery = 0){
473
-
474
- $method = Mage::getModel('shipping/rate_result_method');
475
- $method->setCarrier($this->_code);
476
- $method->setCarrierTitle($this->getConfigData('title'));
477
- $method->setMethod($shipping_method);
478
-
479
- $shippingCost = $shippingPrice;
480
- $shippingPrice = $shippingPrice + $this->getConfigData('handling_fee');
481
-
482
- $shipping_data = explode(',', $this->getConfigData('serv_' . $shipping_method));
483
-
484
- if($shipping_method == $this->getConfigData('acobrar_code')){
485
- $shipping_data[0] = $shipping_data[0] . ' ( R$' . number_format($shippingPrice, 2, ',', '.') . ' )';
486
- $shippingPrice = 0;
487
- }
488
-
489
-
490
- // Show delivery days
491
- if ($this->getConfigFlag('prazo_entrega')){
492
-
493
- // Delivery days from WS
494
- if($correiosDelivery > 0){
495
- $method->setMethodTitle(sprintf($this->getConfigData('msgprazo'), $shipping_data[0], (int)($correiosDelivery + $this->getConfigData('add_prazo'))));
496
- }else{
497
- $method->setMethodTitle(sprintf($this->getConfigData('msgprazo'), $shipping_data[0], (int)($shipping_data[1] + $this->getConfigData('add_prazo'))));
498
- }
499
-
500
-
501
- }else{
502
- $method->setMethodTitle($shipping_data[0]);
503
- }
504
-
505
- $method->setPrice($shippingPrice);
506
- $method->setCost($shippingCost);
507
-
508
- if($this->_freeMethodRequest === true){
509
- $this->_freeMethodRequestResult->append($method);
510
- }else{
511
- $this->_result->append($method);
512
- }
513
- }
514
-
515
- /**
516
- * Throw error
517
- *
518
- * @param $message string
519
- * @param $log string
520
- * @param $line int
521
- * @param $custom string
522
- */
523
- protected function _throwError($message, $log = null, $line = 'NO LINE', $custom = null){
524
-
525
- $this->_result = null;
526
- $this->_result = Mage::getModel('shipping/rate_result');
527
-
528
- // Get error model
529
- $error = Mage::getModel('shipping/rate_result_error');
530
- $error->setCarrier($this->_code);
531
- $error->setCarrierTitle($this->getConfigData('title'));
532
-
533
- if(is_null($custom)){
534
- //Log error
535
- Mage::log($this->_code . ' [' . $line . ']: ' . $log);
536
- $error->setErrorMessage($this->getConfigData($message));
537
- }else{
538
- //Log error
539
- Mage::log($this->_code . ' [' . $line . ']: ' . $log);
540
- $error->setErrorMessage(sprintf($this->getConfigData($message), $custom));
541
- }
542
-
543
- // Apend error
544
- $this->_result->append($error);
545
- }
546
-
547
- /**
548
- * Generate PAC weight
549
- */
550
- protected function _generatePacWeight(){
551
- //Create PAC weight
552
- $pesoCubicoTotal = 0;
553
-
554
- // Get all visible itens from quote
555
- $items = Mage::getModel('checkout/cart')->getQuote()->getAllVisibleItems();
556
-
557
- foreach($items as $item){
558
-
559
- $while = 0;
560
- $itemAltura= 0;
561
- $itemLargura = 0;
562
- $itemComprimento = 0;
563
-
564
- $_product = $item->getProduct();
565
-
566
- if($_product->getData('volume_altura') == '' || (int)$_product->getData('volume_altura') == 0)
567
- $itemAltura = $this->getConfigData('altura_padrao');
568
- else
569
- $itemAltura = $_product->getData('volume_altura');
570
-
571
- if($_product->getData('volume_largura') == '' || (int)$_product->getData('volume_largura') == 0)
572
- $itemLargura = $this->getConfigData('largura_padrao');
573
- else
574
- $itemLargura = $_product->getData('volume_largura');
575
-
576
- if($_product->getData('volume_comprimento') == '' || (int)$_product->getData('volume_comprimento') == 0)
577
- $itemComprimento = $this->getConfigData('comprimento_padrao');
578
- else
579
- $itemComprimento = $_product->getData('volume_comprimento');
580
-
581
- while($while < $item->getQty()){
582
- $itemPesoCubico = 0;
583
- $itemPesoCubico = ($itemAltura * $itemLargura * $itemComprimento)/4800;
584
- $pesoCubicoTotal = $pesoCubicoTotal + $itemPesoCubico;
585
- $while ++;
586
- }
587
- }
588
-
589
- $this->_pacWeight = number_format($pesoCubicoTotal, 2, '.', '');
590
- }
591
-
592
- /**
593
- * Generate free shipping for a product
594
- *
595
- * @param string $freeMethod
596
- */
597
- protected function _setFreeMethodRequest($freeMethod)
598
- {
599
- // Set request as free method request
600
- $this->_freeMethodRequest = true;
601
- $this->_freeMethodRequestResult = Mage::getModel('shipping/rate_result');
602
-
603
- $this->_postMethods = $freeMethod;
604
- $this->_postMethodsExplode = array($freeMethod);
605
-
606
- // Tranform free shipping weight
607
- if($this->getConfigData('weight_type') == 'gr')
608
- {
609
- $this->_freeMethodWeight = number_format($this->_freeMethodWeight/1000, 2, '.', '');
610
- }
611
-
612
- $this->_packageWeight = $this->_freeMethodWeight;
613
- $this->_pacWeight = $this->_freeMethodWeight;
614
- }
615
-
616
- /**
617
- * Clean correios error code, usualy with "-" before the code
618
- *
619
- * @param string $error
620
- * @return int
621
- */
622
- protected function _cleanCorreiosError($error){
623
- $error = str_replace('-', '', $error);
624
- $error = (int)$error;
625
- return $error;
626
- }
627
-
628
-
629
- /**
630
- * Check if current carrier offer support to tracking
631
- *
632
- * @return boolean true
633
- */
634
- public function isTrackingAvailable() {
635
- return true;
636
- }
637
-
638
- /**
639
- * Get Tracking Info
640
- *
641
- * @param mixed $tracking
642
- * @return mixed
643
- */
644
- public function getTrackingInfo($tracking) {
645
- $result = $this->getTracking($tracking);
646
- if ($result instanceof Mage_Shipping_Model_Tracking_Result){
647
- if ($trackings = $result->getAllTrackings()) {
648
- return $trackings[0];
649
- }
650
- } elseif (is_string($result) && !empty($result)) {
651
- return $result;
652
- }
653
- return false;
654
- }
655
-
656
- /**
657
- * Get Tracking
658
- *
659
- * @param array $trackings
660
- * @return Mage_Shipping_Model_Tracking_Result
661
- */
662
- public function getTracking($trackings) {
663
- $this->_result = Mage::getModel('shipping/tracking_result');
664
- foreach ((array) $trackings as $code) {
665
- $this->_getTracking($code);
666
- }
667
- return $this->_result;
668
- }
669
-
670
- /**
671
- * Protected Get Tracking, opens the request to Correios
672
- *
673
- * @param string $code
674
- * @return boolean
675
- */
676
- protected function _getTracking($code) {
677
- $error = Mage::getModel('shipping/tracking_result_error');
678
- $error->setTracking($code);
679
- $error->setCarrier($this->_code);
680
- $error->setCarrierTitle($this->getConfigData('title'));
681
- $error->setErrorMessage($this->getConfigData('urlerror'));
682
-
683
- $url = 'http://websro.correios.com.br/sro_bin/txect01$.QueryList';
684
- $url .= '?P_LINGUA=001&P_TIPO=001&P_COD_UNI=' . $code;
685
- try {
686
- $client = new Zend_Http_Client();
687
- $client->setUri($url);
688
- $content = $client->request();
689
- $body = $content->getBody();
690
- } catch (Exception $e) {
691
- $this->_result->append($error);
692
- return false;
693
- }
694
-
695
- if (!preg_match('#<table ([^>]+)>(.*?)</table>#is', $body, $matches)) {
696
- $this->_result->append($error);
697
- return false;
698
- }
699
- $table = $matches[2];
700
-
701
- if (!preg_match_all('/<tr>(.*)<\/tr>/i', $table, $columns, PREG_SET_ORDER)) {
702
- $this->_result->append($error);
703
- return false;
704
- }
705
-
706
- $progress = array();
707
- for ($i = 0; $i < count($columns); $i++) {
708
- $column = $columns[$i][1];
709
-
710
- $description = '';
711
- $found = false;
712
- if (preg_match('/<td rowspan="?2"?/i', $column) && preg_match('/<td rowspan="?2"?>(.*)<\/td><td>(.*)<\/td><td><font color="[A-Z0-9]{6}">(.*)<\/font><\/td>/i', $column, $matches)) {
713
- if (preg_match('/<td colspan="?2"?>(.*)<\/td>/i', $columns[$i+1][1], $matchesDescription)) {
714
- $description = str_replace(' ', '', $matchesDescription[1]);
715
- }
716
-
717
- $found = true;
718
- } elseif (preg_match('/<td rowspan="?1"?>(.*)<\/td><td>(.*)<\/td><td><font color="[A-Z0-9]{6}">(.*)<\/font><\/td>/i', $column, $matches)) {
719
- $found = true;
720
- }
721
-
722
- if ($found) {
723
- $datetime = explode(' ', $matches[1]);
724
- $locale = new Zend_Locale('pt_BR');
725
- $date='';
726
- $date = new Zend_Date($datetime[0], 'dd/MM/YYYY', $locale);
727
-
728
- $track = array(
729
- 'deliverydate' => $date->toString('YYYY-MM-dd'),
730
- 'deliverytime' => $datetime[1] . ':00',
731
- 'deliverylocation' => htmlentities($matches[2]),
732
- 'status' => htmlentities($matches[3]),
733
- 'activity' => htmlentities($matches[3])
734
- );
735
-
736
- if ($description !== '') {
737
- $track['activity'] = $matches[3] . ' - ' . htmlentities($description);
738
- }
739
-
740
- $progress[] = $track;
741
- }
742
- }
743
-
744
- if (!empty($progress)) {
745
- $track = $progress[0];
746
- $track['progressdetail'] = $progress;
747
-
748
- $tracking = Mage::getModel('shipping/tracking_result_status');
749
- $tracking->setTracking($code);
750
- $tracking->setCarrier('correios');
751
- $tracking->setCarrierTitle($this->getConfigData('title'));
752
- $tracking->addData($track);
753
-
754
- $this->_result->append($tracking);
755
- return true;
756
- } else {
757
- $this->_result->append($error);
758
- return false;
759
- }
760
- }
761
-
762
- /**
763
- * Returns the allowed carrier methods
764
- *
765
- * @return array
766
- */
767
- public function getAllowedMethods()
768
- {
769
- return array($this->_code => $this->getConfigData('title'));
770
- }
771
-
772
- /**
773
- * Define ZIP Code as required
774
- *
775
- * @return boolean
776
- */
777
- public function isZipCodeRequired()
778
- {
779
- return true;
780
- }
781
-
782
- }
1
+ <?php
2
+ /**
3
+ * Pedro Teixeira
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the New BSD License.
8
+ * It is also available through the world-wide-web at this URL:
9
+ * http://www.pteixeira.com.br/new-bsd-license/
10
+ *
11
+ * @category PedroTeixeira
12
+ * @package PedroTeixeira_Correios
13
+ * @copyright Copyright (c) 2011 Pedro Teixeira (http://www.pteixeira.com.br)
14
+ * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
+ * @license http://www.pteixeira.com.br/new-bsd-license/ New BSD License
16
+ */
17
+
18
+ /**
19
+ * PedroTeixeira_Correios_Model_Carrier_CorreiosMethod
20
+ *
21
+ * @category PedroTeixeira
22
+ * @package PedroTeixeira_Correios
23
+ * @author Pedro Teixeira <pedro@pteixeira.com.br>
24
+ */
25
+
26
+ class PedroTeixeira_Correios_Model_Carrier_CorreiosMethod
27
+ extends Mage_Shipping_Model_Carrier_Abstract
28
+ implements Mage_Shipping_Model_Carrier_Interface
29
+ {
30
+
31
+ /**
32
+ * _code property
33
+ *
34
+ * @var string
35
+ */
36
+ protected $_code = 'pedroteixeira_correios';
37
+
38
+ /**
39
+ * _result property
40
+ *
41
+ * @var Mage_Shipping_Model_Rate_Result / Mage_Shipping_Model_Tracking_Result
42
+ */
43
+ protected $_result = null;
44
+
45
+ /**
46
+ * ZIP code vars
47
+ */
48
+ protected $_fromZip = null;
49
+ protected $_toZip = null;
50
+
51
+ /**
52
+ * Value and Weight
53
+ */
54
+ protected $_packageValue = null;
55
+ protected $_packageWeight = null;
56
+ protected $_volumeWeight = null;
57
+ protected $_freeMethodWeight = null;
58
+
59
+ /**
60
+ * Post methods
61
+ */
62
+ protected $_postMethods = null;
63
+ protected $_postMethodsFixed = null;
64
+ protected $_postMethodsExplode = null;
65
+
66
+ /**
67
+ * Free method request
68
+ */
69
+ protected $_freeMethodRequest = false;
70
+ protected $_freeMethodRequestResult = null;
71
+
72
+ /**
73
+ * Collect Rates
74
+ *
75
+ * @param Mage_Shipping_Model_Rate_Request $request
76
+ * @return Mage_Shipping_Model_Rate_Result
77
+ */
78
+ public function collectRates(Mage_Shipping_Model_Rate_Request $request)
79
+ {
80
+ // Do initial check
81
+ if($this->_inicialCheck($request) === false)
82
+ {
83
+ return false;
84
+ }
85
+
86
+ // Check package value
87
+ if($this->_packageValue < $this->getConfigData('min_order_value') || $this->_packageValue > $this->getConfigData('max_order_value'))
88
+ {
89
+ // Value limits
90
+ $this->_throwError('valueerror', 'Value limits', __LINE__);
91
+ return $this->_result;
92
+ }
93
+
94
+ // Check ZIP Code
95
+ if(!preg_match("/^([0-9]{8})$/", $this->_toZip))
96
+ {
97
+ // Invalid Zip Code
98
+ $this->_throwError('zipcodeerror', 'Invalid Zip Code', __LINE__);
99
+ return $this->_result;
100
+ }
101
+
102
+ // Fix weight
103
+ $weightCompare = $this->getConfigData('maxweight');
104
+ if($this->getConfigData('weight_type') == 'gr')
105
+ {
106
+ $this->_packageWeight = number_format($this->_packageWeight/1000, 2, '.', '');
107
+ $weightCompare = number_format($weightCompare/1000, 2, '.', '');
108
+ }
109
+
110
+ // Check weght
111
+ if ($this->_packageWeight > $weightCompare)
112
+ {
113
+ //Weight exceeded limit
114
+ $this->_throwError('maxweighterror', 'Weight exceeded limit', __LINE__);
115
+ return $this->_result;
116
+ }
117
+
118
+ // Check weight zero
119
+ if ($this->_packageWeight <= 0)
120
+ {
121
+ // Weight zero
122
+ $this->_throwError('weightzeroerror', 'Weight zero', __LINE__);
123
+ return $this->_result;
124
+ }
125
+
126
+ // Generate Volume Weight
127
+ if($this->_generateVolumeWeight() === false)
128
+ {
129
+ // Dimension error
130
+ $this->_throwError('dimensionerror', 'Dimension error', __LINE__);
131
+ return $this->_result;
132
+ }
133
+
134
+ // Get post methods
135
+ $this->_postMethods = $this->getConfigData('postmethods');
136
+ $this->_postMethodsFixed = $this->_postMethods;
137
+ $this->_postMethodsExplode = explode(",", $this->getConfigData('postmethods'));
138
+
139
+ // Get quotes
140
+ if($this->_getQuotes()->getError()) {
141
+ return $this->_result;
142
+ }
143
+
144
+ // Use descont codes
145
+ $this->_updateFreeMethodQuote($request);
146
+
147
+ // Return rates / errors
148
+ return $this->_result;
149
+
150
+ }
151
+
152
+ /**
153
+ * Get shipping quote
154
+ *
155
+ * @return object
156
+ */
157
+ protected function _getQuotes(){
158
+
159
+ $dieErrors = explode(",", $this->getConfigData('die_errors'));
160
+
161
+ // Call Correios
162
+ $correiosReturn = $this->_getCorreiosReturn();
163
+
164
+ if($correiosReturn !== false){
165
+
166
+ // Check if exist return from Correios
167
+ $existReturn = false;
168
+
169
+ foreach($correiosReturn as $servicos){
170
+
171
+ // Get Correios error
172
+ $errorId = $this->_cleanCorreiosError((string)$servicos->Erro);
173
+
174
+ if($errorId != 0){
175
+ // Error, throw error message
176
+ if(in_array($errorId, $dieErrors)){
177
+ $this->_throwError('correioserror', 'Correios Error: ' . (string)$servicos->MsgErro . ' [Cod. ' . $errorId . '] [Serv. ' . (string)$servicos->Codigo . ']' , __LINE__, (string)$servicos->MsgErro . ' (Cod. ' . $errorId . ')');
178
+ return $this->_result;
179
+ }else{
180
+ continue;
181
+ }
182
+ }
183
+
184
+ $shippingPrice = floatval(str_replace(",",".",(string)$servicos->Valor));
185
+ $shippingDelivery = (int)$servicos->PrazoEntrega;
186
+
187
+ if($shippingPrice <= 0){
188
+ continue;
189
+ }
190
+
191
+ // Apend shipping
192
+ $this->_apendShippingReturn((string)$servicos->Codigo, $shippingPrice, $shippingDelivery);
193
+ $existReturn = true;
194
+ }
195
+
196
+ // All services are ignored
197
+ if($existReturn === false){
198
+ $this->_throwError('urlerror', 'URL Error, all services return with error', __LINE__);
199
+ return $this->_result;
200
+ }
201
+
202
+ }else{
203
+ // Error on HTTP Correios
204
+ return $this->_result;
205
+ }
206
+
207
+ // Success
208
+ if($this->_freeMethodRequest === true){
209
+ return $this->_freeMethodRequestResult;
210
+ }else{
211
+ return $this->_result;
212
+ }
213
+ }
214
+
215
+
216
+ /**
217
+ * Make initial checks and iniciate module variables
218
+ *
219
+ * @param Mage_Shipping_Model_Rate_Request $request
220
+ * @return boolean
221
+ */
222
+ protected function _inicialCheck(Mage_Shipping_Model_Rate_Request $request){
223
+
224
+ if (!$this->getConfigFlag('active'))
225
+ {
226
+ //Disabled
227
+ Mage::log('PedroTeixeira_Correios: Disabled');
228
+ return false;
229
+ }
230
+
231
+
232
+ $origCountry = Mage::getStoreConfig('shipping/origin/country_id', $this->getStore());
233
+ $destCountry = $request->getDestCountryId();
234
+ if ($origCountry != "BR" || $destCountry != "BR"){
235
+ //Out of delivery area
236
+ Mage::log('PedroTeixeira_Correios: Out of delivery area');
237
+ return false;
238
+ }
239
+
240
+ // ZIP Code
241
+ $this->_fromZip = Mage::getStoreConfig('shipping/origin/postcode', $this->getStore());
242
+ $this->_toZip = $request->getDestPostcode();
243
+
244
+ //Fix Zip Code
245
+ $this->_fromZip = str_replace(array('-','.'), '', trim($this->_fromZip));
246
+ $this->_toZip = str_replace(array('-','.'), '', trim($this->_toZip));
247
+
248
+ if(!preg_match("/^([0-9]{8})$/", $this->_fromZip)){
249
+ //From zip code error
250
+ Mage::log('PedroTeixeira_Correios: From ZIP Code Error');
251
+ return false;
252
+ }
253
+
254
+ // Result model
255
+ $this->_result = Mage::getModel('shipping/rate_result');
256
+
257
+ // Value
258
+ $this->_packageValue = $request->getBaseCurrency()->convert(
259
+ $request->getPackageValue(),
260
+ $request->getPackageCurrency()
261
+ );
262
+
263
+ // Weight
264
+ $this->_packageWeight = number_format($request->getPackageWeight(), 2, '.', '');
265
+
266
+ // Free method weight
267
+ $this->_freeMethodWeight = number_format($request->getFreeMethodWeight(), 2, '.', '');
268
+
269
+ }
270
+
271
+ /**
272
+ * Get Correios return
273
+ *
274
+ * @return bool
275
+ */
276
+ protected function _getCorreiosReturn(){
277
+
278
+ $filename = $this->getConfigData('url_ws_correios');
279
+ $contratoCodes = explode(",", $this->getConfigData('contrato_codes'));
280
+
281
+ try {
282
+ $client = new Zend_Http_Client($filename);
283
+ $client->setConfig(array(
284
+ 'timeout' => $this->getConfigData('ws_timeout')
285
+ ));
286
+
287
+ $client->setParameterGet('StrRetorno', 'xml');
288
+ $client->setParameterGet('nCdServico', $this->_postMethods);
289
+
290
+ if($this->_volumeWeight > $this->getConfigData('volume_weight_min') && $this->_volumeWeight > $this->_packageWeight){
291
+ $client->setParameterGet('nVlPeso', $this->_volumeWeight);
292
+ }else{
293
+ $client->setParameterGet('nVlPeso', $this->_packageWeight);
294
+ }
295
+
296
+ $client->setParameterGet('sCepOrigem', $this->_fromZip);
297
+ $client->setParameterGet('sCepDestino', $this->_toZip);
298
+ $client->setParameterGet('nCdFormato',1);
299
+ $client->setParameterGet('nVlComprimento',$this->getConfigData('comprimento_sent'));
300
+ $client->setParameterGet('nVlAltura',$this->getConfigData('altura_sent'));
301
+ $client->setParameterGet('nVlLargura',$this->getConfigData('largura_sent'));
302
+
303
+ if($this->getConfigData('mao_propria')){
304
+ $client->setParameterGet('sCdMaoPropria','S');
305
+ }else{
306
+ $client->setParameterGet('sCdMaoPropria','N');
307
+ }
308
+
309
+ if($this->getConfigData('aviso_recebimento')){
310
+ $client->setParameterGet('sCdAvisoRecebimento','S');
311
+ }else{
312
+ $client->setParameterGet('sCdAvisoRecebimento','N');
313
+ }
314
+
315
+ if($this->getConfigData('valor_declarado') || in_array($this->getConfigData('acobrar_code'), $this->_postMethodsExplode)){
316
+ $client->setParameterGet('nVlValorDeclarado',number_format($this->_packageValue, 2, ',', '.'));
317
+ }else{
318
+ $client->setParameterGet('nVlValorDeclarado',0);
319
+ }
320
+
321
+ $contrato = false;
322
+ foreach($contratoCodes as $contratoEach){
323
+ if(in_array($contratoEach, $this->_postMethodsExplode)){
324
+ $contrato = true;
325
+ }
326
+ }
327
+
328
+ if($contrato){
329
+ if($this->getConfigData('cod_admin') == '' || $this->getConfigData('senha_admin') == ''){
330
+ // Need correios admin data
331
+ $this->_throwError('coderror', 'Need correios admin data', __LINE__);
332
+ return false;
333
+ }else{
334
+ $client->setParameterGet('nCdEmpresa',$this->getConfigData('cod_admin'));
335
+ $client->setParameterGet('sDsSenha',$this->getConfigData('senha_admin'));
336
+ }
337
+ }
338
+
339
+ $content = $client->request()->getBody();
340
+
341
+ if ($content == ""){
342
+ throw new Exception("No XML returned [" . __LINE__ . "]");
343
+ }
344
+
345
+ libxml_use_internal_errors(true);
346
+ $sxe = simplexml_load_string($content);
347
+ if (!$sxe) {
348
+ throw new Exception("Bad XML [" . __LINE__ . "]");
349
+ }
350
+
351
+ // Load XML
352
+ $xml = new SimpleXMLElement($content);
353
+
354
+ if(count($xml->cServico) <= 0){
355
+ throw new Exception("No tag cServico in Correios XML [" . __LINE__ . "]");
356
+ }
357
+
358
+ return $xml->cServico;
359
+
360
+ } catch (Exception $e) {
361
+ //URL Error
362
+ $this->_throwError('urlerror', 'URL Error - ' . $e->getMessage(), __LINE__);
363
+ return false;
364
+ };
365
+ }
366
+
367
+ /**
368
+ * Apend shipping value to return
369
+ *
370
+ * @param $shipping_method string
371
+ * @param $shippingPrice float
372
+ * @param $correiosReturn array
373
+ * @return void
374
+ */
375
+ protected function _apendShippingReturn($shipping_method, $shippingPrice = 0, $correiosDelivery = 0){
376
+
377
+ $method = Mage::getModel('shipping/rate_result_method');
378
+ $method->setCarrier($this->_code);
379
+ $method->setCarrierTitle($this->getConfigData('title'));
380
+ $method->setMethod($shipping_method);
381
+
382
+ $shippingCost = $shippingPrice;
383
+ $shippingPrice = $shippingPrice + $this->getConfigData('handling_fee');
384
+
385
+ $shipping_data = explode(',', $this->getConfigData('serv_' . $shipping_method));
386
+
387
+ if($shipping_method == $this->getConfigData('acobrar_code')){
388
+ $shipping_data[0] = $shipping_data[0] . ' ( R$' . number_format($shippingPrice, 2, ',', '.') . ' )';
389
+ $shippingPrice = 0;
390
+ }
391
+
392
+ // Show delivery days
393
+ if ($this->getConfigFlag('prazo_entrega')){
394
+ // Delivery days from WS
395
+ if($correiosDelivery > 0){
396
+ $method->setMethodTitle(sprintf($this->getConfigData('msgprazo'), $shipping_data[0], (int)($correiosDelivery + $this->getConfigData('add_prazo'))));
397
+ }else{
398
+ $method->setMethodTitle(sprintf($this->getConfigData('msgprazo'), $shipping_data[0], (int)($shipping_data[1] + $this->getConfigData('add_prazo'))));
399
+ }
400
+ }else{
401
+ $method->setMethodTitle($shipping_data[0]);
402
+ }
403
+
404
+ $method->setPrice($shippingPrice);
405
+ $method->setCost($shippingCost);
406
+
407
+ if($this->_freeMethodRequest === true){
408
+ $this->_freeMethodRequestResult->append($method);
409
+ }else{
410
+ $this->_result->append($method);
411
+ }
412
+ }
413
+
414
+ /**
415
+ * Throw error
416
+ *
417
+ * @param $message string
418
+ * @param $log string
419
+ * @param $line int
420
+ * @param $custom string
421
+ * @return void
422
+ */
423
+ protected function _throwError($message, $log = null, $line = 'NO LINE', $custom = null){
424
+
425
+ $this->_result = null;
426
+ $this->_result = Mage::getModel('shipping/rate_result');
427
+
428
+ // Get error model
429
+ $error = Mage::getModel('shipping/rate_result_error');
430
+ $error->setCarrier($this->_code);
431
+ $error->setCarrierTitle($this->getConfigData('title'));
432
+
433
+ if(is_null($custom) || $this->getConfigData($message) == ''){
434
+ //Log error
435
+ Mage::log($this->_code . ' [' . $line . ']: ' . $log);
436
+ $error->setErrorMessage($this->getConfigData($message));
437
+ }else{
438
+ //Log error
439
+ Mage::log($this->_code . ' [' . $line . ']: ' . $log);
440
+ $error->setErrorMessage(sprintf($this->getConfigData($message), $custom));
441
+ }
442
+
443
+ // Apend error
444
+ $this->_result->append($error);
445
+ }
446
+
447
+ /**
448
+ * Generate Volume weight
449
+ *
450
+ * @return bool
451
+ */
452
+ protected function _generateVolumeWeight(){
453
+ //Create volume weight
454
+ $pesoCubicoTotal = 0;
455
+
456
+ // Get all visible itens from quote
457
+ $items = Mage::getModel('checkout/cart')->getQuote()->getAllVisibleItems();
458
+
459
+ foreach($items as $item){
460
+
461
+ $itemAltura= 0;
462
+ $itemLargura = 0;
463
+ $itemComprimento = 0;
464
+
465
+ $_product = $item->getProduct();
466
+
467
+ if($_product->getData('volume_altura') == '' || (int)$_product->getData('volume_altura') == 0)
468
+ $itemAltura = $this->getConfigData('altura_padrao');
469
+ else
470
+ $itemAltura = $_product->getData('volume_altura');
471
+
472
+ if($_product->getData('volume_largura') == '' || (int)$_product->getData('volume_largura') == 0)
473
+ $itemLargura = $this->getConfigData('largura_padrao');
474
+ else
475
+ $itemLargura = $_product->getData('volume_largura');
476
+
477
+ if($_product->getData('volume_comprimento') == '' || (int)$_product->getData('volume_comprimento') == 0)
478
+ $itemComprimento = $this->getConfigData('comprimento_padrao');
479
+ else
480
+ $itemComprimento = $_product->getData('volume_comprimento');
481
+
482
+ if($this->getConfigFlag('check_dimensions')){
483
+ if(
484
+ $itemAltura > $this->getConfigData('volume_validation/altura_max')
485
+ || $itemAltura < $this->getConfigData('volume_validation/altura_min')
486
+ || $itemLargura > $this->getConfigData('volume_validation/largura_max')
487
+ || $itemLargura < $this->getConfigData('volume_validation/largura_min')
488
+ || $itemComprimento > $this->getConfigData('volume_validation/comprimento_max')
489
+ || $itemComprimento < $this->getConfigData('volume_validation/comprimento_min')
490
+ || ($itemAltura+$itemLargura+$itemComprimento) > $this->getConfigData('volume_validation/sum_max')
491
+ ){
492
+ return false;
493
+ }
494
+ }
495
+
496
+ $pesoCubicoTotal += (($itemAltura*$itemLargura*$itemComprimento)*$item->getQty())/$this->getConfigData('coeficiente_volume');
497
+ }
498
+
499
+ $this->_volumeWeight = number_format($pesoCubicoTotal, 2, '.', '');
500
+
501
+ return true;
502
+ }
503
+
504
+ /**
505
+ * Generate free shipping for a product
506
+ *
507
+ * @param string $freeMethod
508
+ * @return void
509
+ */
510
+ protected function _setFreeMethodRequest($freeMethod)
511
+ {
512
+ // Set request as free method request
513
+ $this->_freeMethodRequest = true;
514
+ $this->_freeMethodRequestResult = Mage::getModel('shipping/rate_result');
515
+
516
+ $this->_postMethods = $freeMethod;
517
+ $this->_postMethodsExplode = array($freeMethod);
518
+
519
+ // Tranform free shipping weight
520
+ if($this->getConfigData('weight_type') == 'gr')
521
+ {
522
+ $this->_freeMethodWeight = number_format($this->_freeMethodWeight/1000, 2, '.', '');
523
+ }
524
+
525
+ $this->_packageWeight = $this->_freeMethodWeight;
526
+ $this->_pacWeight = $this->_freeMethodWeight;
527
+ }
528
+
529
+ /**
530
+ * Clean correios error code, usualy with "-" before the code
531
+ *
532
+ * @param string $error
533
+ * @return int
534
+ */
535
+ protected function _cleanCorreiosError($error){
536
+ $error = str_replace('-', '', $error);
537
+ $error = (int)$error;
538
+ return $error;
539
+ }
540
+
541
+
542
+ /**
543
+ * Check if current carrier offer support to tracking
544
+ *
545
+ * @return boolean true
546
+ */
547
+ public function isTrackingAvailable() {
548
+ return true;
549
+ }
550
+
551
+ /**
552
+ * Get Tracking Info
553
+ *
554
+ * @param mixed $tracking
555
+ * @return mixed
556
+ */
557
+ public function getTrackingInfo($tracking) {
558
+ $result = $this->getTracking($tracking);
559
+ if ($result instanceof Mage_Shipping_Model_Tracking_Result){
560
+ if ($trackings = $result->getAllTrackings()) {
561
+ return $trackings[0];
562
+ }
563
+ } elseif (is_string($result) && !empty($result)) {
564
+ return $result;
565
+ }
566
+ return false;
567
+ }
568
+
569
+ /**
570
+ * Get Tracking
571
+ *
572
+ * @param array $trackings
573
+ * @return Mage_Shipping_Model_Tracking_Result
574
+ */
575
+ public function getTracking($trackings) {
576
+ $this->_result = Mage::getModel('shipping/tracking_result');
577
+ foreach ((array) $trackings as $code) {
578
+ $this->_getTracking($code);
579
+ }
580
+ return $this->_result;
581
+ }
582
+
583
+ /**
584
+ * Protected Get Tracking, opens the request to Correios
585
+ *
586
+ * @param string $code
587
+ * @return boolean
588
+ */
589
+ protected function _getTracking($code) {
590
+ $error = Mage::getModel('shipping/tracking_result_error');
591
+ $error->setTracking($code);
592
+ $error->setCarrier($this->_code);
593
+ $error->setCarrierTitle($this->getConfigData('title'));
594
+ $error->setErrorMessage($this->getConfigData('urlerror'));
595
+
596
+ $url = 'http://websro.correios.com.br/sro_bin/txect01$.QueryList';
597
+ $url .= '?P_LINGUA=001&P_TIPO=001&P_COD_UNI=' . $code;
598
+ try {
599
+ $client = new Zend_Http_Client();
600
+ $client->setUri($url);
601
+ $content = $client->request();
602
+ $body = $content->getBody();
603
+ } catch (Exception $e) {
604
+ $this->_result->append($error);
605
+ return false;
606
+ }
607
+
608
+ if (!preg_match('#<table ([^>]+)>(.*?)</table>#is', $body, $matches)) {
609
+ $this->_result->append($error);
610
+ return false;
611
+ }
612
+ $table = $matches[2];
613
+
614
+ if (!preg_match_all('/<tr>(.*)<\/tr>/i', $table, $columns, PREG_SET_ORDER)) {
615
+ $this->_result->append($error);
616
+ return false;
617
+ }
618
+
619
+ $progress = array();
620
+ for ($i = 0; $i < count($columns); $i++) {
621
+ $column = $columns[$i][1];
622
+
623
+ $description = '';
624
+ $found = false;
625
+ if (preg_match('/<td rowspan="?2"?/i', $column) && preg_match('/<td rowspan="?2"?>(.*)<\/td><td>(.*)<\/td><td><font color="[A-Z0-9]{6}">(.*)<\/font><\/td>/i', $column, $matches)) {
626
+ if (preg_match('/<td colspan="?2"?>(.*)<\/td>/i', $columns[$i+1][1], $matchesDescription)) {
627
+ $description = str_replace(' ', '', $matchesDescription[1]);
628
+ }
629
+
630
+ $found = true;
631
+ } elseif (preg_match('/<td rowspan="?1"?>(.*)<\/td><td>(.*)<\/td><td><font color="[A-Z0-9]{6}">(.*)<\/font><\/td>/i', $column, $matches)) {
632
+ $found = true;
633
+ }
634
+
635
+ if ($found) {
636
+ $datetime = explode(' ', $matches[1]);
637
+ $locale = new Zend_Locale('pt_BR');
638
+ $date='';
639
+ $date = new Zend_Date($datetime[0], 'dd/MM/YYYY', $locale);
640
+
641
+ $track = array(
642
+ 'deliverydate' => $date->toString('YYYY-MM-dd'),
643
+ 'deliverytime' => $datetime[1] . ':00',
644
+ 'deliverylocation' => htmlentities($matches[2]),
645
+ 'status' => htmlentities($matches[3]),
646
+ 'activity' => htmlentities($matches[3])
647
+ );
648
+
649
+ if ($description !== '') {
650
+ $track['activity'] = $matches[3] . ' - ' . htmlentities($description);
651
+ }
652
+
653
+ $progress[] = $track;
654
+ }
655
+ }
656
+
657
+ if (!empty($progress)) {
658
+ $track = $progress[0];
659
+ $track['progressdetail'] = $progress;
660
+
661
+ $tracking = Mage::getModel('shipping/tracking_result_status');
662
+ $tracking->setTracking($code);
663
+ $tracking->setCarrier('correios');
664
+ $tracking->setCarrierTitle($this->getConfigData('title'));
665
+ $tracking->addData($track);
666
+
667
+ $this->_result->append($tracking);
668
+ return true;
669
+ } else {
670
+ $this->_result->append($error);
671
+ return false;
672
+ }
673
+ }
674
+
675
+ /**
676
+ * Returns the allowed carrier methods
677
+ *
678
+ * @return array
679
+ */
680
+ public function getAllowedMethods()
681
+ {
682
+ return array($this->_code => $this->getConfigData('title'));
683
+ }
684
+
685
+ /**
686
+ * Define ZIP Code as required
687
+ *
688
+ * @return boolean
689
+ */
690
+ public function isZipCodeRequired()
691
+ {
692
+ return true;
693
+ }
694
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PedroTeixeira/Correios/Model/Source/PostMethods.php CHANGED
@@ -1,36 +1,35 @@
1
- <?php
2
- /**
3
- * Pedro Teixeira
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL).
8
- * It is also available through the world-wide-web at this URL:
9
- * http://opensource.org/licenses/osl-3.0.php
10
- *
11
- * @category PedroTeixeira
12
- * @package PedroTeixeira_Correios
13
- * @copyright Copyright (c) 2010 Pedro Teixeira (http://www.pteixeira.com.br)
14
- * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
16
- */
17
-
18
- class PedroTeixeira_Correios_Model_Source_PostMethods
19
- {
20
-
21
- public function toOptionArray()
22
- {
23
- return array(
24
- array('value'=>40010, 'label'=>Mage::helper('adminhtml')->__('Sedex Sem Contrato (Correios)')),
25
- array('value'=>40096, 'label'=>Mage::helper('adminhtml')->__('Sedex Com Contrato (Correios/Locaweb)')),
26
- array('value'=>81019, 'label'=>Mage::helper('adminhtml')->__('E-Sedex Com Contrato (Correios/Locaweb)')),
27
- array('value'=>41025, 'label'=>Mage::helper('adminhtml')->__('PAC Normal (Locaweb)')),
28
- array('value'=>41106, 'label'=>Mage::helper('adminhtml')->__('PAC Sem Contrato (Correios)')),
29
- array('value'=>41068, 'label'=>Mage::helper('adminhtml')->__('PAC Com Contrato (Correios/Locaweb)')),
30
- array('value'=>40215, 'label'=>Mage::helper('adminhtml')->__('Sedex 10 (Correios)')),
31
- array('value'=>40290, 'label'=>Mage::helper('adminhtml')->__('Sedex HOJE (Correios)')),
32
- array('value'=>40045, 'label'=>Mage::helper('adminhtml')->__('Sedex a Cobrar (Correios)')),
33
- );
34
- }
35
-
36
- }
1
+ <?php
2
+ /**
3
+ * Pedro Teixeira
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the New BSD License.
8
+ * It is also available through the world-wide-web at this URL:
9
+ * http://www.pteixeira.com.br/new-bsd-license/
10
+ *
11
+ * @category PedroTeixeira
12
+ * @package PedroTeixeira_Correios
13
+ * @copyright Copyright (c) 2011 Pedro Teixeira (http://www.pteixeira.com.br)
14
+ * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
+ * @license http://www.pteixeira.com.br/new-bsd-license/ New BSD License
16
+ */
17
+
18
+ class PedroTeixeira_Correios_Model_Source_PostMethods
19
+ {
20
+
21
+ public function toOptionArray()
22
+ {
23
+ return array(
24
+ array('value'=>40010, 'label'=>Mage::helper('adminhtml')->__('Sedex Sem Contrato (40010)')),
25
+ array('value'=>40096, 'label'=>Mage::helper('adminhtml')->__('Sedex Com Contrato (40096)')),
26
+ array('value'=>81019, 'label'=>Mage::helper('adminhtml')->__('E-Sedex Com Contrato (81019)')),
27
+ array('value'=>41106, 'label'=>Mage::helper('adminhtml')->__('PAC Sem Contrato (41106)')),
28
+ array('value'=>41068, 'label'=>Mage::helper('adminhtml')->__('PAC Com Contrato (41068)')),
29
+ array('value'=>40215, 'label'=>Mage::helper('adminhtml')->__('Sedex 10 (40215)')),
30
+ array('value'=>40290, 'label'=>Mage::helper('adminhtml')->__('Sedex HOJE (40290)')),
31
+ array('value'=>40045, 'label'=>Mage::helper('adminhtml')->__('Sedex a Cobrar (40045)')),
32
+ );
33
+ }
34
+
35
+ }
 
app/code/community/PedroTeixeira/Correios/Model/Source/UrlMethods.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
- /**
3
- * Pedro Teixeira
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL).
8
- * It is also available through the world-wide-web at this URL:
9
- * http://opensource.org/licenses/osl-3.0.php
10
- *
11
- * @category PedroTeixeira
12
- * @package PedroTeixeira_Correios
13
- * @copyright Copyright (c) 2010 Pedro Teixeira (http://www.pteixeira.com.br)
14
- * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
16
- */
17
-
18
- class PedroTeixeira_Correios_Model_Source_UrlMethods
19
- {
20
-
21
- public function toOptionArray()
22
- {
23
- return array(
24
- array('value'=>1, 'label'=>Mage::helper('adminhtml')->__('Locaweb')),
25
- array('value'=>0, 'label'=>Mage::helper('adminhtml')->__('Correios')),
26
- );
27
- }
28
-
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PedroTeixeira/Correios/Model/Source/WeightType.php CHANGED
@@ -1,29 +1,29 @@
1
- <?php
2
- /**
3
- * Pedro Teixeira
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL).
8
- * It is also available through the world-wide-web at this URL:
9
- * http://opensource.org/licenses/osl-3.0.php
10
- *
11
- * @category PedroTeixeira
12
- * @package PedroTeixeira_Correios
13
- * @copyright Copyright (c) 2010 Pedro Teixeira (http://www.pteixeira.com.br)
14
- * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
16
- */
17
-
18
- class PedroTeixeira_Correios_Model_Source_WeightType
19
- {
20
-
21
- public function toOptionArray()
22
- {
23
- return array(
24
- array('value'=>'gr', 'label'=>Mage::helper('adminhtml')->__('Gramas')),
25
- array('value'=>'kg', 'label'=>Mage::helper('adminhtml')->__('Kilos')),
26
- );
27
- }
28
-
29
- }
1
+ <?php
2
+ /**
3
+ * Pedro Teixeira
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the New BSD License.
8
+ * It is also available through the world-wide-web at this URL:
9
+ * http://www.pteixeira.com.br/new-bsd-license/
10
+ *
11
+ * @category PedroTeixeira
12
+ * @package PedroTeixeira_Correios
13
+ * @copyright Copyright (c) 2011 Pedro Teixeira (http://www.pteixeira.com.br)
14
+ * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
+ * @license http://www.pteixeira.com.br/new-bsd-license/ New BSD License
16
+ */
17
+
18
+ class PedroTeixeira_Correios_Model_Source_WeightType
19
+ {
20
+
21
+ public function toOptionArray()
22
+ {
23
+ return array(
24
+ array('value'=>'gr', 'label'=>Mage::helper('adminhtml')->__('Gramas')),
25
+ array('value'=>'kg', 'label'=>Mage::helper('adminhtml')->__('Kilos')),
26
+ );
27
+ }
28
+
29
+ }
app/code/community/PedroTeixeira/Correios/etc/config.xml CHANGED
@@ -1,138 +1,146 @@
1
- <?xml version="1.0"?>
2
- <!--
3
- /**
4
- * Pedro Teixeira
5
- *
6
- * NOTICE OF LICENSE
7
- *
8
- * This source file is subject to the Open Software License (OSL).
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- *
12
- * @category PedroTeixeira
13
- * @package PedroTeixeira_Correios
14
- * @copyright Copyright (c) 2010 Pedro Teixeira (http://www.pteixeira.com.br)
15
- * @author Pedro Teixeira <pedro@pteixeira.com.br>
16
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
17
- */
18
- -->
19
- <config>
20
- <modules>
21
- <PedroTeixeira_Correios>
22
- <version>4.1.0</version>
23
- <depends>
24
- <Mage_Shipping />
25
- </depends>
26
- </PedroTeixeira_Correios>
27
- </modules>
28
- <global>
29
- <sales>
30
- <quote>
31
- <item>
32
- <product_attributes>
33
- <volume_altura/>
34
- <volume_comprimento/>
35
- <volume_largura/>
36
- </product_attributes>
37
- </item>
38
- </quote>
39
- </sales>
40
- <models>
41
- <pedroteixeira_correios>
42
- <class>PedroTeixeira_Correios_Model</class>
43
- </pedroteixeira_correios>
44
- </models>
45
- <resources>
46
- <pedroteixeira_correios_setup>
47
- <setup>
48
- <module>PedroTeixeira_Correios</module>
49
- </setup>
50
- <connection>
51
- <use>directory_setup</use>
52
- </connection>
53
- </pedroteixeira_correios_setup>
54
- </resources>
55
- <helpers>
56
- <pedroteixeira_correios>
57
- <class>PedroTeixeira_Correios_Helper</class>
58
- </pedroteixeira_correios>
59
- </helpers>
60
- <sales>
61
- <shipping>
62
- <carriers>
63
- <pedroteixeira_correios>
64
- <class>PedroTeixeira_Correios_Model_Carrier_CorreiosMethod</class>
65
- </pedroteixeira_correios>
66
- </carriers>
67
- </shipping>
68
- </sales>
69
- </global>
70
-
71
- <default>
72
- <carriers>
73
- <pedroteixeira_correios>
74
- <!-- GENERAL -->
75
- <active>1</active>
76
- <model>PedroTeixeira_Correios_Model_Carrier_CorreiosMethod</model>
77
- <title>Correios</title>
78
- <postmethods>40010</postmethods>
79
- <die_errors>1,2,3,4,5,33,34,35,36,37,38,888,7,99</die_errors>
80
- <prazo_entrega>0</prazo_entrega>
81
- <min_order_value>0</min_order_value>
82
- <max_order_value>10000</max_order_value>
83
- <maxweight>30</maxweight>
84
- <handling_fee>0</handling_fee>
85
- <ws_timeout>30</ws_timeout>
86
-
87
- <!-- OPTIONS -->
88
- <mao_propria>0</mao_propria>
89
- <aviso_recebimento>0</aviso_recebimento>
90
- <valor_declarado>0</valor_declarado>
91
-
92
- <!-- PAC -->
93
- <altura_padrao>2</altura_padrao>
94
- <comprimento_padrao>16</comprimento_padrao>
95
- <largura_padrao>11</largura_padrao>
96
- <altura_sent>2</altura_sent>
97
- <comprimento_sent>16</comprimento_sent>
98
- <largura_sent>11</largura_sent>
99
-
100
- <!-- CONFIG -->
101
- <urlmethod>0</urlmethod>
102
- <free_method>40010</free_method>
103
- <weight_type>kg</weight_type>
104
- <add_prazo>0</add_prazo>
105
- <showmethod>1</showmethod>
106
-
107
- <!-- MESSAGES -->
108
- <msgprazo>%s - Em média %d dia(s)</msgprazo>
109
- <correioserror>Houve um erro inesperado, por favor entre em contato. %s</correioserror>
110
- <valueerror>Valor de compra fora do permitido pelos Correios. Por favor entre em contato conosco.</valueerror>
111
- <zipcodeerror>Por favor, corrija o CEP digitado, ele não está correto.</zipcodeerror>
112
- <maxweighterror>Peso dos produtos acima do permitido pelos Correios. Por favor entre em contato conosco.</maxweighterror>
113
- <weightzeroerror>Lojista: O peso do produto deverá ser maior que zero. Se você está usando a media de peso como gramas, o peso mínimo é de 10 gramas.</weightzeroerror>
114
- <coderror>Lojista: Para calcular esse serviço você precisa ter contrato com os Correios.</coderror>
115
- <urlerror>Esse método de envio está fora do ar. Por favor entre em contato conosco.</urlerror>
116
-
117
- <!-- SYSTEM -->
118
- <serv_40010>Sedex,3</serv_40010>
119
- <serv_40096>Sedex,3</serv_40096>
120
- <serv_81019>E-Sedex,3</serv_81019>
121
- <serv_41025>PAC,3</serv_41025>
122
- <serv_41106>PAC,3</serv_41106>
123
- <serv_41068>PAC,3</serv_41068>
124
- <serv_40215>Sedex 10,1</serv_40215>
125
- <serv_40290>Sedex HOJE,1</serv_40290>
126
- <serv_40045>Sedex a Cobrar,5</serv_40045>
127
-
128
- <pac_codes>41025,41106,41068</pac_codes>
129
- <acobrar_code>40045</acobrar_code>
130
- <contrato_codes>40096,81019,41068</contrato_codes>
131
-
132
- <url_ws_correios>http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx</url_ws_correios>
133
- <url_ws_locaweb>http://comercio.locaweb.com.br/correios/frete.asmx?WSDL</url_ws_locaweb>
134
-
135
- </pedroteixeira_correios>
136
- </carriers>
137
- </default>
138
- </config>
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Pedro Teixeira
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the New BSD License.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://www.pteixeira.com.br/new-bsd-license/
11
+ *
12
+ * @category PedroTeixeira
13
+ * @package PedroTeixeira_Correios
14
+ * @copyright Copyright (c) 2011 Pedro Teixeira (http://www.pteixeira.com.br)
15
+ * @author Pedro Teixeira <pedro@pteixeira.com.br>
16
+ * @license http://www.pteixeira.com.br/new-bsd-license/ New BSD License
17
+ */
18
+ -->
19
+ <config>
20
+ <modules>
21
+ <PedroTeixeira_Correios>
22
+ <version>4.2.0</version>
23
+ <depends>
24
+ <Mage_Shipping />
25
+ </depends>
26
+ </PedroTeixeira_Correios>
27
+ </modules>
28
+ <global>
29
+ <sales>
30
+ <quote>
31
+ <item>
32
+ <product_attributes>
33
+ <volume_altura/>
34
+ <volume_comprimento/>
35
+ <volume_largura/>
36
+ </product_attributes>
37
+ </item>
38
+ </quote>
39
+ </sales>
40
+ <models>
41
+ <pedroteixeira_correios>
42
+ <class>PedroTeixeira_Correios_Model</class>
43
+ </pedroteixeira_correios>
44
+ </models>
45
+ <resources>
46
+ <pedroteixeira_correios_setup>
47
+ <setup>
48
+ <module>PedroTeixeira_Correios</module>
49
+ </setup>
50
+ <connection>
51
+ <use>directory_setup</use>
52
+ </connection>
53
+ </pedroteixeira_correios_setup>
54
+ </resources>
55
+ <helpers>
56
+ <pedroteixeira_correios>
57
+ <class>PedroTeixeira_Correios_Helper</class>
58
+ </pedroteixeira_correios>
59
+ </helpers>
60
+ <sales>
61
+ <shipping>
62
+ <carriers>
63
+ <pedroteixeira_correios>
64
+ <class>PedroTeixeira_Correios_Model_Carrier_CorreiosMethod</class>
65
+ </pedroteixeira_correios>
66
+ </carriers>
67
+ </shipping>
68
+ </sales>
69
+ </global>
70
+
71
+ <default>
72
+ <carriers>
73
+ <pedroteixeira_correios>
74
+ <!-- GENERAL -->
75
+ <active>1</active>
76
+ <model>PedroTeixeira_Correios_Model_Carrier_CorreiosMethod</model>
77
+ <title>Correios</title>
78
+ <postmethods>40010</postmethods>
79
+ <die_errors>1,2,3,4,5,33,34,35,36,37,38,888,7,99</die_errors>
80
+ <prazo_entrega>0</prazo_entrega>
81
+ <check_dimensions>1</check_dimensions>
82
+ <min_order_value>0</min_order_value>
83
+ <max_order_value>10000</max_order_value>
84
+ <maxweight>30</maxweight>
85
+ <handling_fee>0</handling_fee>
86
+ <ws_timeout>20</ws_timeout>
87
+
88
+ <!-- OPTIONS -->
89
+ <mao_propria>0</mao_propria>
90
+ <aviso_recebimento>0</aviso_recebimento>
91
+ <valor_declarado>0</valor_declarado>
92
+
93
+ <!-- VOLUME -->
94
+ <altura_padrao>2</altura_padrao>
95
+ <comprimento_padrao>16</comprimento_padrao>
96
+ <largura_padrao>11</largura_padrao>
97
+ <altura_sent>2</altura_sent>
98
+ <comprimento_sent>16</comprimento_sent>
99
+ <largura_sent>11</largura_sent>
100
+
101
+ <!-- http://www.correios.com.br/encomendas/prazo/Formato.cfm -->
102
+ <volume_validation>
103
+ <altura_max>90</altura_max>
104
+ <altura_min>2</altura_min>
105
+ <comprimento_max>90</comprimento_max>
106
+ <comprimento_min>16</comprimento_min>
107
+ <largura_max>90</largura_max>
108
+ <largura_min>11</largura_min>
109
+ <sum_max>160</sum_max>
110
+ </volume_validation>
111
+
112
+ <!-- CONFIG -->
113
+ <free_method>40010</free_method>
114
+ <weight_type>kg</weight_type>
115
+ <add_prazo>0</add_prazo>
116
+ <showmethod>1</showmethod>
117
+
118
+ <!-- MESSAGES -->
119
+ <msgprazo>%s - Em média %d dia(s)</msgprazo>
120
+ <correioserror>Houve um erro inesperado, por favor entre em contato. %s</correioserror>
121
+ <valueerror>Valor de compra fora do permitido pelos Correios. Por favor entre em contato conosco.</valueerror>
122
+ <zipcodeerror>Por favor, corrija o CEP digitado, ele não está correto.</zipcodeerror>
123
+ <maxweighterror>Peso dos produtos acima do permitido pelos Correios. Por favor entre em contato conosco.</maxweighterror>
124
+ <weightzeroerror>Lojista: O peso do produto deverá ser maior que zero. Se você está usando a media de peso como gramas, o peso mínimo é de 10 gramas.</weightzeroerror>
125
+ <coderror>Lojista: Para calcular esse serviço você precisa ter contrato com os Correios.</coderror>
126
+ <urlerror>Esse método de envio está fora do ar. Por favor entre em contato conosco.</urlerror>
127
+ <dimensionerror>Dimensões dos produtos fora do permitido pelos Correios.</dimensionerror>
128
+
129
+ <!-- SYSTEM -->
130
+ <serv_40010>Sedex,3</serv_40010>
131
+ <serv_40096>Sedex,3</serv_40096>
132
+ <serv_81019>E-Sedex,3</serv_81019>
133
+ <serv_41106>PAC,3</serv_41106>
134
+ <serv_41068>PAC,3</serv_41068>
135
+ <serv_40215>Sedex 10,1</serv_40215>
136
+ <serv_40290>Sedex HOJE,1</serv_40290>
137
+ <serv_40045>Sedex a Cobrar,5</serv_40045>
138
+ <volume_weight_min>5</volume_weight_min>
139
+ <coeficiente_volume>6000</coeficiente_volume>
140
+ <acobrar_code>40045</acobrar_code>
141
+ <contrato_codes>40096,81019,41068</contrato_codes>
142
+ <url_ws_correios>http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx</url_ws_correios>
143
+ </pedroteixeira_correios>
144
+ </carriers>
145
+ </default>
146
+ </config>
app/code/community/PedroTeixeira/Correios/etc/system.xml CHANGED
@@ -1,318 +1,331 @@
1
- <?xml version="1.0"?>
2
- <!--
3
- /**
4
- * Pedro Teixeira
5
- *
6
- * NOTICE OF LICENSE
7
- *
8
- * This source file is subject to the Open Software License (OSL).
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- *
12
- * @category PedroTeixeira
13
- * @package PedroTeixeira_Correios
14
- * @copyright Copyright (c) 2010 Pedro Teixeira (http://www.pteixeira.com.br)
15
- * @author Pedro Teixeira <pedro@pteixeira.com.br>
16
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
17
- */
18
- -->
19
- <config>
20
- <sections>
21
- <carriers>
22
- <groups>
23
- <pedroteixeira_correios translate="label" module="pedroteixeira_correios">
24
- <label>Correios - Pedro Teixeira</label>
25
- <frontend_type>text</frontend_type>
26
- <sort_order>1</sort_order>
27
- <show_in_default>1</show_in_default>
28
- <show_in_website>1</show_in_website>
29
- <show_in_store>1</show_in_store>
30
- <comment>
31
- <![CDATA[
32
- <div>
33
- <br />
34
- <strong style="font-size:14px">Informações Importantes</strong><br /><br />
35
- Você pode tirar dúvidas ou sugerir melhorias do módulo através do site <a href="http://www.pteixeira.com.br/" target="_blank">www.pteixeira.com.br</a>.<br /><br />
36
- Na versão <b>4.1.0</b> o módulo de cálculo de frete conta com chamada única ao WebService dos Correios para cálculo de todos os serviços, novos filtros para evitar erros no frontend, nomes dos serviços e prazos de entrega configuráveis por xml, integração total com as regras de desconto, novos logs de erros mais completos, desconsiderando duplicidade de produtos configuráveis dentre várias outras modificações.<br /><br />
37
- Para um bom funcionamento do módulo, é necessário que você configure os serviços que deseja disponibilizar em sua loja e escolher a fonte de cálculo de acordo com os serviços habilitados.
38
- Por exemplo, se você habilitar "Sedex Com Contrato (Correios)" lembre-se de configurar a fonte de cálculo como Correios, se habilitar "PAC Normal (Locaweb)"
39
- lembre-se de configurar a fonte como "Locaweb".<br /><br />
40
- Lembre-se de configurar as "Definições de Envio" no menu ao lado esquerdo.<br /><br />
41
- Para serviços que tenham em seu nome "Com Contrato", é necessário configurar o "Código Administrativo dos Correios" e "Senha Administrativa dos Correios".<br /><br />
42
- A lista completa de códigos de erros está disponibilizada no site do desenvolvedor.<br /><br />
43
- Para utilizar as regras de desconto de frete, você deve configurar o "Serviço para entrega gratuita", lembre-se de habilitar o serviço.<br /><br />
44
- <b>Importante:</b> Para utilização da função de tracking é necessário corrigir alguns erros do próprio Magento, veja mais informações no site do desenvolvedor.
45
- <br /><br /><hr /><br /><br />
46
- </div>
47
- ]]>
48
- </comment>
49
- <fields>
50
- <active translate="label">
51
- <label>Habilitar</label>
52
- <frontend_type>select</frontend_type>
53
- <source_model>adminhtml/system_config_source_yesno</source_model>
54
- <sort_order>10</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
- </active>
59
- <title translate="label">
60
- <label>Nome do Meio de Entrega</label>
61
- <frontend_type>text</frontend_type>
62
- <sort_order>15</sort_order>
63
- <show_in_default>1</show_in_default>
64
- <show_in_website>1</show_in_website>
65
- <show_in_store>1</show_in_store>
66
- </title>
67
- <postmethods translate="label">
68
- <label>Serviços</label>
69
- <frontend_type>multiselect</frontend_type>
70
- <source_model>PedroTeixeira_Correios_Model_Source_PostMethods</source_model>
71
- <sort_order>20</sort_order>
72
- <show_in_default>1</show_in_default>
73
- <show_in_website>1</show_in_website>
74
- <show_in_store>1</show_in_store>
75
- <comment>Serviços que estarão disponíveis, lembre-se de usar os serviços correspondentes a fonte configurada.</comment>
76
- </postmethods>
77
- <free_method translate="label">
78
- <label>Serviço para entrega gratuita</label>
79
- <frontend_type>select</frontend_type>
80
- <frontend_class>free-method</frontend_class>
81
- <source_model>PedroTeixeira_Correios_Model_Source_PostMethods</source_model>
82
- <sort_order>21</sort_order>
83
- <show_in_default>1</show_in_default>
84
- <show_in_website>1</show_in_website>
85
- <show_in_store>1</show_in_store>
86
- <comment>Quando usar um cupom oferecendo frete gratuito, qual serviço será gratuito. Lembre-se de habilitar o serviço.</comment>
87
- </free_method>
88
- <urlmethod translate="label">
89
- <label>Fonte de Cálculo</label>
90
- <frontend_type>select</frontend_type>
91
- <source_model>PedroTeixeira_Correios_Model_Source_UrlMethods</source_model>
92
- <sort_order>30</sort_order>
93
- <show_in_default>1</show_in_default>
94
- <show_in_website>1</show_in_website>
95
- <show_in_store>1</show_in_store>
96
- <comment>Ative apenas os serviços relativos a fonte.</comment>
97
- </urlmethod>
98
- <weight_type translate="label">
99
- <label>Formato do Peso</label>
100
- <frontend_type>select</frontend_type>
101
- <source_model>PedroTeixeira_Correios_Model_Source_WeightType</source_model>
102
- <sort_order>30</sort_order>
103
- <show_in_default>1</show_in_default>
104
- <show_in_website>1</show_in_website>
105
- <show_in_store>1</show_in_store>
106
- <comment>Formato do peso dos produtos.</comment>
107
- </weight_type>
108
- <prazo_entrega translate="label">
109
- <label>Exibir Prazo de Entrega</label>
110
- <frontend_type>select</frontend_type>
111
- <source_model>adminhtml/system_config_source_yesno</source_model>
112
- <sort_order>40</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
- </prazo_entrega>
117
- <cod_admin translate="label">
118
- <label>Código Administrativo dos Correios (Serviços Com Contrato)</label>
119
- <frontend_type>text</frontend_type>
120
- <sort_order>61</sort_order>
121
- <show_in_default>1</show_in_default>
122
- <show_in_website>1</show_in_website>
123
- <show_in_store>1</show_in_store>
124
- </cod_admin>
125
- <senha_admin translate="label">
126
- <label>Senha Administrativa dos Correios (Serviços Com Contrato)</label>
127
- <frontend_type>text</frontend_type>
128
- <sort_order>62</sort_order>
129
- <show_in_default>1</show_in_default>
130
- <show_in_website>1</show_in_website>
131
- <show_in_store>1</show_in_store>
132
- <comment>O padrão de senha são os 8 primeiros dígitos do CNPJ</comment>
133
- </senha_admin>
134
- <mao_propria translate="label">
135
- <label>Utilizar Serviço de Mão Própria</label>
136
- <frontend_type>select</frontend_type>
137
- <source_model>adminhtml/system_config_source_yesno</source_model>
138
- <sort_order>63</sort_order>
139
- <show_in_default>1</show_in_default>
140
- <show_in_website>1</show_in_website>
141
- <show_in_store>1</show_in_store>
142
- </mao_propria>
143
- <aviso_recebimento translate="label">
144
- <label>Utilizar Serviço de Aviso de Recebimento</label>
145
- <frontend_type>select</frontend_type>
146
- <source_model>adminhtml/system_config_source_yesno</source_model>
147
- <sort_order>64</sort_order>
148
- <show_in_default>1</show_in_default>
149
- <show_in_website>1</show_in_website>
150
- <show_in_store>1</show_in_store>
151
- </aviso_recebimento>
152
- <valor_declarado translate="label">
153
- <label>Utilizar Serviço de Valor Declarado</label>
154
- <frontend_type>select</frontend_type>
155
- <source_model>adminhtml/system_config_source_yesno</source_model>
156
- <sort_order>65</sort_order>
157
- <show_in_default>1</show_in_default>
158
- <show_in_website>1</show_in_website>
159
- <show_in_store>1</show_in_store>
160
- </valor_declarado>
161
- <altura_padrao translate="label">
162
- <label>Altura Padrão (cm)</label>
163
- <frontend_type>text</frontend_type>
164
- <sort_order>70</sort_order>
165
- <show_in_default>1</show_in_default>
166
- <show_in_website>1</show_in_website>
167
- <show_in_store>1</show_in_store>
168
- <comment><![CDATA[Quando não configurada no produto será usada.<br />Mínimo de 2 cm.]]></comment>
169
- </altura_padrao>
170
- <comprimento_padrao translate="label">
171
- <label>Comprimento Padrão (cm)</label>
172
- <frontend_type>text</frontend_type>
173
- <sort_order>80</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
- <comment><![CDATA[Quando não configurado no produto será usado.<br />Mínimo de 16 cm.]]></comment>
178
- </comprimento_padrao>
179
- <largura_padrao translate="label">
180
- <label>Largura Padrão (cm)</label>
181
- <frontend_type>text</frontend_type>
182
- <sort_order>90</sort_order>
183
- <show_in_default>1</show_in_default>
184
- <show_in_website>1</show_in_website>
185
- <show_in_store>1</show_in_store>
186
- <comment><![CDATA[Quando não configurada no produto será usada.<br />Mínimo de 11 cm.]]></comment>
187
- </largura_padrao>
188
- <min_order_value translate="label">
189
- <label>Valor Mínimo de Compra</label>
190
- <frontend_type>text</frontend_type>
191
- <sort_order>100</sort_order>
192
- <show_in_default>1</show_in_default>
193
- <show_in_website>1</show_in_website>
194
- <show_in_store>1</show_in_store>
195
- </min_order_value>
196
- <max_order_value translate="label">
197
- <label>Valor Máximo de Compra</label>
198
- <frontend_type>text</frontend_type>
199
- <sort_order>110</sort_order>
200
- <show_in_default>1</show_in_default>
201
- <show_in_website>1</show_in_website>
202
- <show_in_store>1</show_in_store>
203
- </max_order_value>
204
- <maxweight translate="label">
205
- <label>Peso Máximo Permitido Pelos Correios</label>
206
- <frontend_type>text</frontend_type>
207
- <sort_order>120</sort_order>
208
- <show_in_default>1</show_in_default>
209
- <show_in_website>1</show_in_website>
210
- <show_in_store>1</show_in_store>
211
- <comment>Utilize o mesmo formato de peso configurado no módulo, kilos ou gramas.</comment>
212
- </maxweight>
213
- <handling_fee translate="label">
214
- <label>Taxa de Postagem</label>
215
- <frontend_type>text</frontend_type>
216
- <sort_order>130</sort_order>
217
- <show_in_default>1</show_in_default>
218
- <show_in_website>1</show_in_website>
219
- <show_in_store>1</show_in_store>
220
- <comment>Essa taxa será adicionada ao valor do frete.</comment>
221
- </handling_fee>
222
- <add_prazo translate="label">
223
- <label>Adicionar ao prazo dos Correios (dias)</label>
224
- <frontend_type>text</frontend_type>
225
- <sort_order>131</sort_order>
226
- <show_in_default>1</show_in_default>
227
- <show_in_website>1</show_in_website>
228
- <show_in_store>1</show_in_store>
229
- <comment>Adicionará mais dias aos prazos fornecidos pelos Correios.</comment>
230
- </add_prazo>
231
- <correioserror translate="label">
232
- <label>Mensagem que exibe os erros dos Correios</label>
233
- <frontend_type>text</frontend_type>
234
- <sort_order>135</sort_order>
235
- <show_in_default>1</show_in_default>
236
- <show_in_website>1</show_in_website>
237
- <show_in_store>1</show_in_store>
238
- </correioserror>
239
- <msgprazo translate="label">
240
- <label>Mensagem que exibe o prazo de entrega</label>
241
- <frontend_type>text</frontend_type>
242
- <sort_order>140</sort_order>
243
- <show_in_default>1</show_in_default>
244
- <show_in_website>1</show_in_website>
245
- <show_in_store>1</show_in_store>
246
- </msgprazo>
247
- <valueerror translate="label">
248
- <label>Mensagem de valor fora do permitido</label>
249
- <frontend_type>textarea</frontend_type>
250
- <sort_order>160</sort_order>
251
- <show_in_default>1</show_in_default>
252
- <show_in_website>1</show_in_website>
253
- <show_in_store>1</show_in_store>
254
- </valueerror>
255
- <zipcodeerror translate="label">
256
- <label>Mensagem de CEP incorreto</label>
257
- <frontend_type>textarea</frontend_type>
258
- <sort_order>170</sort_order>
259
- <show_in_default>1</show_in_default>
260
- <show_in_website>1</show_in_website>
261
- <show_in_store>1</show_in_store>
262
- </zipcodeerror>
263
- <maxweighterror translate="label">
264
- <label>Mensagem de peso fora do permitido</label>
265
- <frontend_type>textarea</frontend_type>
266
- <sort_order>180</sort_order>
267
- <show_in_default>1</show_in_default>
268
- <show_in_website>1</show_in_website>
269
- <show_in_store>1</show_in_store>
270
- </maxweighterror>
271
- <weightzeroerror translate="label">
272
- <label>Mensagem de peso zero</label>
273
- <frontend_type>textarea</frontend_type>
274
- <sort_order>185</sort_order>
275
- <show_in_default>1</show_in_default>
276
- <show_in_website>1</show_in_website>
277
- <show_in_store>1</show_in_store>
278
- </weightzeroerror>
279
- <urlerror translate="label">
280
- <label>Mensagem de URL fora do ar ou fonte não selecionada</label>
281
- <frontend_type>textarea</frontend_type>
282
- <sort_order>190</sort_order>
283
- <show_in_default>1</show_in_default>
284
- <show_in_website>1</show_in_website>
285
- <show_in_store>1</show_in_store>
286
- </urlerror>
287
- <coderror translate="label">
288
- <label>Mensagem de falta de Código Administrativo</label>
289
- <frontend_type>textarea</frontend_type>
290
- <sort_order>191</sort_order>
291
- <show_in_default>1</show_in_default>
292
- <show_in_website>1</show_in_website>
293
- <show_in_store>1</show_in_store>
294
- </coderror>
295
- <showmethod translate="label">
296
- <label>Mostrar método mesmo se não aplicável</label>
297
- <frontend_type>select</frontend_type>
298
- <sort_order>200</sort_order>
299
- <source_model>adminhtml/system_config_source_yesno</source_model>
300
- <show_in_default>1</show_in_default>
301
- <show_in_website>1</show_in_website>
302
- <show_in_store>1</show_in_store>
303
- <comment>Se houver um erro ou o método não for aplicável naquela situação, mesmo assim mostrar as mensagens de erro?</comment>
304
- </showmethod>
305
- <sort_order translate="label">
306
- <label>Ordenar por</label>
307
- <frontend_type>text</frontend_type>
308
- <sort_order>230</sort_order>
309
- <show_in_default>1</show_in_default>
310
- <show_in_website>1</show_in_website>
311
- <show_in_store>1</show_in_store>
312
- </sort_order>
313
- </fields>
314
- </pedroteixeira_correios>
315
- </groups>
316
- </carriers>
317
- </sections>
318
- </config>
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Pedro Teixeira
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the New BSD License.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://www.pteixeira.com.br/new-bsd-license/
11
+ *
12
+ * @category PedroTeixeira
13
+ * @package PedroTeixeira_Correios
14
+ * @copyright Copyright (c) 2011 Pedro Teixeira (http://www.pteixeira.com.br)
15
+ * @author Pedro Teixeira <pedro@pteixeira.com.br>
16
+ * @license http://www.pteixeira.com.br/new-bsd-license/ New BSD License
17
+ */
18
+ -->
19
+ <config>
20
+ <sections>
21
+ <carriers>
22
+ <groups>
23
+ <pedroteixeira_correios translate="label" module="pedroteixeira_correios">
24
+ <label>Correios - Pedro Teixeira</label>
25
+ <frontend_type>text</frontend_type>
26
+ <sort_order>1</sort_order>
27
+ <show_in_default>1</show_in_default>
28
+ <show_in_website>1</show_in_website>
29
+ <show_in_store>1</show_in_store>
30
+ <comment>
31
+ <![CDATA[
32
+ <div>
33
+ <br />
34
+ <strong style="font-size:14px">Informações Importantes</strong><br /><br />
35
+ Você pode tirar dúvidas ou sugerir melhorias do módulo através do site
36
+ <a href="http://www.pteixeira.com.br/" target="_blank">www.pteixeira.com.br</a>.<br /><br />
37
+ Na versão <b>4.2.0</b> o módulo de cálculo de frete foi atualizado para utilizar a nova
38
+ lógica de cálculo de peso volumétrico para todos os serviços, teve sua licença
39
+ alterada para <a href="http://www.pteixeira.com.br/new-bsd-license/" target="_blank">New BSD</a>,
40
+ possibilidade de utilizar limites de dimensões dos Correios, retirada da URL de cálculo da
41
+ Locaweb além de outras correções e melhorias.<br /><br />
42
+ Lembre-se de configurar as "Definições de Envio" no menu ao lado esquerdo.<br /><br />
43
+ Para serviços que tenham em seu nome "Com Contrato", é necessário configurar o "Código
44
+ Administrativo dos Correios" e "Senha Administrativa dos Correios".<br /><br />
45
+ Para utilizar as regras de desconto de frete, você deve configurar o "Serviço para entrega gratuita",
46
+ lembre-se de habilitar o serviço.<br /><br />
47
+ <hr /><br /><br />
48
+ </div>
49
+ ]]>
50
+ </comment>
51
+ <fields>
52
+ <active translate="label">
53
+ <label>Habilitar</label>
54
+ <frontend_type>select</frontend_type>
55
+ <source_model>adminhtml/system_config_source_yesno</source_model>
56
+ <sort_order>10</sort_order>
57
+ <show_in_default>1</show_in_default>
58
+ <show_in_website>1</show_in_website>
59
+ <show_in_store>1</show_in_store>
60
+ </active>
61
+ <title translate="label">
62
+ <label>Nome do Meio de Entrega</label>
63
+ <frontend_type>text</frontend_type>
64
+ <sort_order>15</sort_order>
65
+ <show_in_default>1</show_in_default>
66
+ <show_in_website>1</show_in_website>
67
+ <show_in_store>1</show_in_store>
68
+ </title>
69
+ <weight_type translate="label">
70
+ <label>Formato do Peso</label>
71
+ <frontend_type>select</frontend_type>
72
+ <source_model>PedroTeixeira_Correios_Model_Source_WeightType</source_model>
73
+ <sort_order>20</sort_order>
74
+ <show_in_default>1</show_in_default>
75
+ <show_in_website>1</show_in_website>
76
+ <show_in_store>1</show_in_store>
77
+ <comment>Formato do peso dos produtos.</comment>
78
+ <tooltip>O formato do peso irá implicar na maneira como o mesmo é cadastrado no produto, por exemplo, 1 Kg no formato "Kilo" será "1.000", já em "Gramas" será "1000.000".</tooltip>
79
+ </weight_type>
80
+ <postmethods translate="label">
81
+ <label>Serviços</label>
82
+ <frontend_type>multiselect</frontend_type>
83
+ <source_model>PedroTeixeira_Correios_Model_Source_PostMethods</source_model>
84
+ <sort_order>25</sort_order>
85
+ <show_in_default>1</show_in_default>
86
+ <show_in_website>1</show_in_website>
87
+ <show_in_store>1</show_in_store>
88
+ <comment>Serviços que estarão disponíveis, lembre-se de usar os serviços correspondentes a fonte configurada.</comment>
89
+ </postmethods>
90
+ <free_method translate="label">
91
+ <label>Serviço Para Entrega Gratuita</label>
92
+ <frontend_type>select</frontend_type>
93
+ <frontend_class>free-method</frontend_class>
94
+ <source_model>PedroTeixeira_Correios_Model_Source_PostMethods</source_model>
95
+ <sort_order>30</sort_order>
96
+ <show_in_default>1</show_in_default>
97
+ <show_in_website>1</show_in_website>
98
+ <show_in_store>1</show_in_store>
99
+ <comment>Quando usar um cupom oferecendo frete gratuito, qual serviço será gratuito. Lembre-se de habilitar o serviço.</comment>
100
+ </free_method>
101
+ <cod_admin translate="label">
102
+ <label>Código Administrativo dos Correios (Serviços Com Contrato)</label>
103
+ <frontend_type>text</frontend_type>
104
+ <sort_order>35</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>
108
+ </cod_admin>
109
+ <senha_admin translate="label">
110
+ <label>Senha Administrativa dos Correios (Serviços Com Contrato)</label>
111
+ <frontend_type>text</frontend_type>
112
+ <sort_order>40</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
+ <comment>O padrão de senha são os 8 primeiros dígitos do CNPJ</comment>
117
+ </senha_admin>
118
+ <prazo_entrega translate="label">
119
+ <label>Exibir Prazo de Entrega</label>
120
+ <frontend_type>select</frontend_type>
121
+ <source_model>adminhtml/system_config_source_yesno</source_model>
122
+ <sort_order>45</sort_order>
123
+ <show_in_default>1</show_in_default>
124
+ <show_in_website>1</show_in_website>
125
+ <show_in_store>1</show_in_store>
126
+ </prazo_entrega>
127
+ <msgprazo translate="label">
128
+ <label>Mensagem que Exibe o Prazo de Entrega</label>
129
+ <frontend_type>text</frontend_type>
130
+ <sort_order>50</sort_order>
131
+ <show_in_default>1</show_in_default>
132
+ <show_in_website>1</show_in_website>
133
+ <show_in_store>1</show_in_store>
134
+ <tooltip>"%s" para o nome do serviço, por exemplo "Sedex", "%d" para o número de dias.</tooltip>
135
+ <depends><prazo_entrega>1</prazo_entrega></depends>
136
+ </msgprazo>
137
+ <mao_propria translate="label">
138
+ <label>Utilizar Serviço de Mão Própria</label>
139
+ <frontend_type>select</frontend_type>
140
+ <source_model>adminhtml/system_config_source_yesno</source_model>
141
+ <sort_order>60</sort_order>
142
+ <show_in_default>1</show_in_default>
143
+ <show_in_website>1</show_in_website>
144
+ <show_in_store>1</show_in_store>
145
+ </mao_propria>
146
+ <aviso_recebimento translate="label">
147
+ <label>Utilizar Serviço de Aviso de Recebimento</label>
148
+ <frontend_type>select</frontend_type>
149
+ <source_model>adminhtml/system_config_source_yesno</source_model>
150
+ <sort_order>70</sort_order>
151
+ <show_in_default>1</show_in_default>
152
+ <show_in_website>1</show_in_website>
153
+ <show_in_store>1</show_in_store>
154
+ </aviso_recebimento>
155
+ <valor_declarado translate="label">
156
+ <label>Utilizar Serviço de Valor Declarado</label>
157
+ <frontend_type>select</frontend_type>
158
+ <source_model>adminhtml/system_config_source_yesno</source_model>
159
+ <sort_order>80</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>
163
+ </valor_declarado>
164
+ <check_dimensions>
165
+ <label>Validar Dimensões dos Produtos</label>
166
+ <frontend_type>select</frontend_type>
167
+ <source_model>adminhtml/system_config_source_yesno</source_model>
168
+ <sort_order>90</sort_order>
169
+ <show_in_default>1</show_in_default>
170
+ <show_in_website>1</show_in_website>
171
+ <show_in_store>1</show_in_store>
172
+ <comment><![CDATA[Ao habilitar essa funcionalidade cada produto será validado seguindo a regra de dimensões dos Correios.<br />A regra pode ser encontrada <a href="http://www.correios.com.br/encomendas/prazo/Formato.cfm" target="_blank">nesse link</a>.]]></comment>
173
+ </check_dimensions>
174
+ <altura_padrao translate="label">
175
+ <label>Altura Padrão (cm)</label>
176
+ <frontend_type>text</frontend_type>
177
+ <sort_order>100</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><![CDATA[Quando não configurada no produto será usada.<br />Mínimo de 2 cm.]]></comment>
182
+ </altura_padrao>
183
+ <comprimento_padrao translate="label">
184
+ <label>Comprimento Padrão (cm)</label>
185
+ <frontend_type>text</frontend_type>
186
+ <sort_order>110</sort_order>
187
+ <show_in_default>1</show_in_default>
188
+ <show_in_website>1</show_in_website>
189
+ <show_in_store>1</show_in_store>
190
+ <comment><![CDATA[Quando não configurado no produto será usado.<br />Mínimo de 16 cm.]]></comment>
191
+ </comprimento_padrao>
192
+ <largura_padrao translate="label">
193
+ <label>Largura Padrão (cm)</label>
194
+ <frontend_type>text</frontend_type>
195
+ <sort_order>120</sort_order>
196
+ <show_in_default>1</show_in_default>
197
+ <show_in_website>1</show_in_website>
198
+ <show_in_store>1</show_in_store>
199
+ <comment><![CDATA[Quando não configurada no produto será usada.<br />Mínimo de 11 cm.]]></comment>
200
+ </largura_padrao>
201
+ <min_order_value translate="label">
202
+ <label>Valor Mínimo de Compra</label>
203
+ <frontend_type>text</frontend_type>
204
+ <sort_order>130</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
+ </min_order_value>
209
+ <max_order_value translate="label">
210
+ <label>Valor Máximo de Compra</label>
211
+ <frontend_type>text</frontend_type>
212
+ <sort_order>140</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
+ </max_order_value>
217
+ <maxweight translate="label">
218
+ <label>Peso Máximo Permitido Pelos Correios</label>
219
+ <frontend_type>text</frontend_type>
220
+ <sort_order>150</sort_order>
221
+ <show_in_default>1</show_in_default>
222
+ <show_in_website>1</show_in_website>
223
+ <show_in_store>1</show_in_store>
224
+ <comment>Utilize o mesmo formato de peso configurado no módulo, kilos ou gramas.</comment>
225
+ </maxweight>
226
+ <handling_fee translate="label">
227
+ <label>Taxa de Postagem</label>
228
+ <frontend_type>text</frontend_type>
229
+ <sort_order>160</sort_order>
230
+ <show_in_default>1</show_in_default>
231
+ <show_in_website>1</show_in_website>
232
+ <show_in_store>1</show_in_store>
233
+ <comment>Essa taxa será adicionada ao valor do frete.</comment>
234
+ </handling_fee>
235
+ <add_prazo translate="label">
236
+ <label>Adicionar ao prazo dos Correios (dias)</label>
237
+ <frontend_type>text</frontend_type>
238
+ <sort_order>170</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>Adicionará mais dias aos prazos fornecidos pelos Correios.</comment>
243
+ </add_prazo>
244
+ <correioserror translate="label">
245
+ <label>Mensagem que Exibe os Erros dos Correios</label>
246
+ <frontend_type>text</frontend_type>
247
+ <sort_order>180</sort_order>
248
+ <show_in_default>1</show_in_default>
249
+ <show_in_website>1</show_in_website>
250
+ <show_in_store>1</show_in_store>
251
+ </correioserror>
252
+ <dimensionerror translate="label">
253
+ <label>Mensagem de Dimensões Fora do Permitido</label>
254
+ <frontend_type>textarea</frontend_type>
255
+ <sort_order>190</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>
259
+ </dimensionerror>
260
+ <valueerror translate="label">
261
+ <label>Mensagem de Valor Fora do Permitido</label>
262
+ <frontend_type>textarea</frontend_type>
263
+ <sort_order>200</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
+ </valueerror>
268
+ <zipcodeerror translate="label">
269
+ <label>Mensagem de CEP Incorreto</label>
270
+ <frontend_type>textarea</frontend_type>
271
+ <sort_order>210</sort_order>
272
+ <show_in_default>1</show_in_default>
273
+ <show_in_website>1</show_in_website>
274
+ <show_in_store>1</show_in_store>
275
+ </zipcodeerror>
276
+ <maxweighterror translate="label">
277
+ <label>Mensagem de Peso Fora do Permitido</label>
278
+ <frontend_type>textarea</frontend_type>
279
+ <sort_order>220</sort_order>
280
+ <show_in_default>1</show_in_default>
281
+ <show_in_website>1</show_in_website>
282
+ <show_in_store>1</show_in_store>
283
+ </maxweighterror>
284
+ <weightzeroerror translate="label">
285
+ <label>Mensagem de Peso Zero</label>
286
+ <frontend_type>textarea</frontend_type>
287
+ <sort_order>230</sort_order>
288
+ <show_in_default>1</show_in_default>
289
+ <show_in_website>1</show_in_website>
290
+ <show_in_store>1</show_in_store>
291
+ </weightzeroerror>
292
+ <urlerror translate="label">
293
+ <label>Mensagem de URL Fora do Ar</label>
294
+ <frontend_type>textarea</frontend_type>
295
+ <sort_order>240</sort_order>
296
+ <show_in_default>1</show_in_default>
297
+ <show_in_website>1</show_in_website>
298
+ <show_in_store>1</show_in_store>
299
+ </urlerror>
300
+ <coderror translate="label">
301
+ <label>Mensagem de Falta de Código Administrativo</label>
302
+ <frontend_type>textarea</frontend_type>
303
+ <sort_order>250</sort_order>
304
+ <show_in_default>1</show_in_default>
305
+ <show_in_website>1</show_in_website>
306
+ <show_in_store>1</show_in_store>
307
+ </coderror>
308
+ <showmethod translate="label">
309
+ <label>Mostrar Método Mesmo se Não Aplicável</label>
310
+ <frontend_type>select</frontend_type>
311
+ <sort_order>260</sort_order>
312
+ <source_model>adminhtml/system_config_source_yesno</source_model>
313
+ <show_in_default>1</show_in_default>
314
+ <show_in_website>1</show_in_website>
315
+ <show_in_store>1</show_in_store>
316
+ <comment>Se houver um erro ou o método não for aplicável naquela situação, mesmo assim mostrar as mensagens de erro?</comment>
317
+ </showmethod>
318
+ <sort_order translate="label">
319
+ <label>Ordenar Por</label>
320
+ <frontend_type>text</frontend_type>
321
+ <sort_order>270</sort_order>
322
+ <show_in_default>1</show_in_default>
323
+ <show_in_website>1</show_in_website>
324
+ <show_in_store>1</show_in_store>
325
+ </sort_order>
326
+ </fields>
327
+ </pedroteixeira_correios>
328
+ </groups>
329
+ </carriers>
330
+ </sections>
331
+ </config>
app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/mysql4-install-4.0.0.php CHANGED
@@ -4,15 +4,15 @@
4
  *
5
  * NOTICE OF LICENSE
6
  *
7
- * This source file is subject to the Open Software License (OSL).
8
  * It is also available through the world-wide-web at this URL:
9
- * http://opensource.org/licenses/osl-3.0.php
10
  *
11
  * @category PedroTeixeira
12
  * @package PedroTeixeira_Correios
13
- * @copyright Copyright (c) 2010 Pedro Teixeira (http://www.pteixeira.com.br)
14
  * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
16
  */
17
 
18
  $installer = $this;
@@ -65,4 +65,3 @@ $config = array(
65
  $setup->addAttribute('catalog_product', $codigo , $config);
66
 
67
  $installer->endSetup();
68
- ?>
4
  *
5
  * NOTICE OF LICENSE
6
  *
7
+ * This source file is subject to the New BSD License.
8
  * It is also available through the world-wide-web at this URL:
9
+ * http://www.pteixeira.com.br/new-bsd-license/
10
  *
11
  * @category PedroTeixeira
12
  * @package PedroTeixeira_Correios
13
+ * @copyright Copyright (c) 2011 Pedro Teixeira (http://www.pteixeira.com.br)
14
  * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
+ * @license http://www.pteixeira.com.br/new-bsd-license/ New BSD License
16
  */
17
 
18
  $installer = $this;
65
  $setup->addAttribute('catalog_product', $codigo , $config);
66
 
67
  $installer->endSetup();
 
app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/mysql4-upgrade-4.0.0-4.1.0.php CHANGED
@@ -4,15 +4,15 @@
4
  *
5
  * NOTICE OF LICENSE
6
  *
7
- * This source file is subject to the Open Software License (OSL).
8
  * It is also available through the world-wide-web at this URL:
9
- * http://opensource.org/licenses/osl-3.0.php
10
  *
11
  * @category PedroTeixeira
12
  * @package PedroTeixeira_Correios
13
- * @copyright Copyright (c) 2010 Pedro Teixeira (http://www.pteixeira.com.br)
14
  * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
16
  */
17
 
18
  $installer = $this;
@@ -26,4 +26,3 @@ $installer->deleteConfigData('carriers/pedroteixeira_correios/valueerror');
26
  $installer->deleteConfigData('carriers/pedroteixeira_correios/showmethod');
27
 
28
  $installer->endSetup();
29
- ?>
4
  *
5
  * NOTICE OF LICENSE
6
  *
7
+ * This source file is subject to the New BSD License.
8
  * It is also available through the world-wide-web at this URL:
9
+ * http://www.pteixeira.com.br/new-bsd-license/
10
  *
11
  * @category PedroTeixeira
12
  * @package PedroTeixeira_Correios
13
+ * @copyright Copyright (c) 2011 Pedro Teixeira (http://www.pteixeira.com.br)
14
  * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
+ * @license http://www.pteixeira.com.br/new-bsd-license/ New BSD License
16
  */
17
 
18
  $installer = $this;
26
  $installer->deleteConfigData('carriers/pedroteixeira_correios/showmethod');
27
 
28
  $installer->endSetup();
 
app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/mysql4-upgrade-4.1.0-4.2.0.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Pedro Teixeira
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the New BSD License.
8
+ * It is also available through the world-wide-web at this URL:
9
+ * http://www.pteixeira.com.br/new-bsd-license/
10
+ *
11
+ * @category PedroTeixeira
12
+ * @package PedroTeixeira_Correios
13
+ * @copyright Copyright (c) 2011 Pedro Teixeira (http://www.pteixeira.com.br)
14
+ * @author Pedro Teixeira <pedro@pteixeira.com.br>
15
+ * @license http://www.pteixeira.com.br/new-bsd-license/ New BSD License
16
+ */
17
+
18
+ $installer = $this;
19
+ $installer->startSetup();
20
+ $connection = $installer->getConnection();
21
+
22
+ $installer->deleteConfigData('carriers/pedroteixeira_correios/urlmethod');
23
+
24
+ $sql = "select value from ".$installer->getTable('core/config_data')." where path='carriers/pedroteixeira_correios/postmethods'";
25
+ $methods = explode(',', $connection->fetchOne($sql));
26
+ foreach($methods as $key => $method){
27
+ if($method == '41025'){
28
+ unset($methods[$key]);
29
+ }
30
+ }
31
+ if(count($methods) <= 0){
32
+ $methods[] = '41106';
33
+ }
34
+ $installer->setConfigData('carriers/pedroteixeira_correios/postmethods', implode(',', $methods));
35
+
36
+ $sql = "select value from ".$installer->getTable('core/config_data')." where path='carriers/pedroteixeira_correios/free_method'";
37
+ if($connection->fetchOne($sql) == '41025'){
38
+ $installer->setConfigData('carriers/pedroteixeira_correios/free_method', '41106');
39
+ }
40
+
41
+ $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
42
+ $setup->updateAttribute('catalog_product', 'volume_comprimento', 'note', 'Comprimento da embalagem do produto (Para cálculo dos Correios)');
43
+ $setup->updateAttribute('catalog_product', 'volume_altura', 'note', 'Altura da embalagem do produto (Para cálculo dos Correios)');
44
+ $setup->updateAttribute('catalog_product', 'volume_largura', 'note', 'Largura da embalagem do produto (Para cálculo dos Correios)');
45
+
46
+ $installer->endSetup();
app/etc/modules/PedroTeixeira_Correios.xml CHANGED
@@ -1,26 +1,26 @@
1
- <?xml version="1.0"?>
2
- <!--
3
- /**
4
- * Pedro Teixeira
5
- *
6
- * NOTICE OF LICENSE
7
- *
8
- * This source file is subject to the Open Software License (OSL).
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- *
12
- * @category PedroTeixeira
13
- * @package PedroTeixeira_Correios
14
- * @copyright Copyright (c) 2010 Pedro Teixeira (http://www.pteixeira.com.br)
15
- * @author Pedro Teixeira <pedro@pteixeira.com.br>
16
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
17
- */
18
- -->
19
- <config>
20
- <modules>
21
- <PedroTeixeira_Correios>
22
- <active>true</active>
23
- <codePool>community</codePool>
24
- </PedroTeixeira_Correios>
25
- </modules>
26
- </config>
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Pedro Teixeira
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the New BSD License.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://www.pteixeira.com.br/new-bsd-license/
11
+ *
12
+ * @category PedroTeixeira
13
+ * @package PedroTeixeira_Correios
14
+ * @copyright Copyright (c) 2011 Pedro Teixeira (http://www.pteixeira.com.br)
15
+ * @author Pedro Teixeira <pedro@pteixeira.com.br>
16
+ * @license http://www.pteixeira.com.br/new-bsd-license/ New BSD License
17
+ */
18
+ -->
19
+ <config>
20
+ <modules>
21
+ <PedroTeixeira_Correios>
22
+ <active>true</active>
23
+ <codePool>community</codePool>
24
+ </PedroTeixeira_Correios>
25
+ </modules>
26
+ </config>
package.xml CHANGED
@@ -1,17 +1,17 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>PedroTeixeira_Correios</name>
4
- <version>4.1.0</version>
5
  <stability>stable</stability>
6
- <license>GNU General Public License (GPL)</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>M&#xF3;dulo de c&#xE1;lculo de PAC, Sedex, E-Sedex, Sedex 10, Sedex Hoje e Sedex a Cobrar.</summary>
10
- <description>Vers&#xE3;o 4.1.0 do m&#xF3;dulo de c&#xE1;lculo de frete para Magento.
11
 
12
- M&#xF3;dulo totalmente compat&#xED;vel com o novo WebService dos Correios e agora realizando apenas uma consulta para todos os servi&#xE7;os.
13
 
14
- Tamb&#xE9;m &#xE9; integrado com o WebService de c&#xE1;lculo de frete da Locaweb e hoje conta com os seguintes servi&#xE7;os:
15
 
16
  - Sedex Sem Contrato
17
  - Sedex Com Contrato
@@ -24,14 +24,12 @@ Tamb&#xE9;m &#xE9; integrado com o WebService de c&#xE1;lculo de frete da Locawe
24
 
25
  Conta com identifica&#xE7;&#xE3;o de erros dos Correios, m&#xE3;o pr&#xF3;pria, aviso de recebimento, valor declarado, captura do prazo de entrega dos Correios, adicionar mais dias ao prazo dos Correios, identifica o volume dos produtos por atributo e Tracking em tempo real.
26
 
27
- Na nova vers&#xE3;o conta com apenas uma chamada para todos os servi&#xE7;os, integra&#xE7;&#xE3;o total com as regras de desconto, integra&#xE7;&#xE3;o com a nova vers&#xE3;o do Magento e corre&#xE7;&#xE3;o de alguns bugs.
28
-
29
  Mais informa&#xE7;&#xF5;es em http://www.pteixeira.com.br&#xFEFF;.</description>
30
  <notes>M&#xF3;dulo de c&#xE1;lculo de PAC, Sedex, E-Sedex, Sedex 10, Sedex Hoje e Sedex a Cobrar.</notes>
31
  <authors><author><name>Pedro Teixeira</name><user>auto-converted</user><email>teixeira.pedro@gmail.com</email></author></authors>
32
- <date>2010-08-11</date>
33
- <time>02:40:07</time>
34
- <contents><target name="mage"><dir name="app"><dir name="etc"><dir name="modules"><file name="PedroTeixeira_Correios.xml" hash="f00c1a1ffcf9a08f67dbbdbd96da4eaf"/></dir></dir></dir></target><target name="magecommunity"><dir name="PedroTeixeira"><dir name="Correios"><dir name="etc"><file name="config.xml" hash="65b33aa38fb1ad4441127db3a369ffb2"/><file name="system.xml" hash="a80c16dc09de838f4036a501abd09550"/></dir><dir name="Helper"><file name="Data.php" hash="ce1c4fba4a0accdd6b1210ba63734ef7"/></dir><dir name="Model"><dir name="Carrier"><file name="CorreiosMethod.php" hash="38ff7aac6b0bc65c89a0f318138dffe9"/></dir><dir name="Source"><file name="PostMethods.php" hash="6e23f605ca7eca17dc277f0b9d83467f"/><file name="UrlMethods.php" hash="02bf735b441af7bf9266632a978b0e62"/><file name="WeightType.php" hash="e77ee1d2fed0c623064dfc539e2ab8fe"/></dir></dir><dir name="sql"><dir name="pedroteixeira_correios_setup"><file name="mysql4-install-4.0.0.php" hash="0641513355706a69c50e5ff1a253aa16"/><file name="mysql4-upgrade-4.0.0-4.1.0.php" hash="d2b1492e4019a296029fdea05a89b891"/></dir></dir></dir></dir></target></contents>
35
  <compatible/>
36
  <dependencies/>
37
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>PedroTeixeira_Correios</name>
4
+ <version>4.2.0</version>
5
  <stability>stable</stability>
6
+ <license uri="http://www.pteixeira.com.br/new-bsd-license/">New BSD License</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>M&#xF3;dulo de c&#xE1;lculo de PAC, Sedex, E-Sedex, Sedex 10, Sedex Hoje e Sedex a Cobrar.</summary>
10
+ <description>Vers&#xE3;o 4.2.0 do m&#xF3;dulo de c&#xE1;lculo de frete para Magento.
11
 
12
+ Utilizando peso volum&#xE9;trico para c&#xE1;lculo de todos os servi&#xE7;os e compat&#xED;vel com a valida&#xE7;&#xE3;o de dimens&#xF5;es dos Correios
13
 
14
+ Contando com os seguintes servi&#xE7;os:
15
 
16
  - Sedex Sem Contrato
17
  - Sedex Com Contrato
24
 
25
  Conta com identifica&#xE7;&#xE3;o de erros dos Correios, m&#xE3;o pr&#xF3;pria, aviso de recebimento, valor declarado, captura do prazo de entrega dos Correios, adicionar mais dias ao prazo dos Correios, identifica o volume dos produtos por atributo e Tracking em tempo real.
26
 
 
 
27
  Mais informa&#xE7;&#xF5;es em http://www.pteixeira.com.br&#xFEFF;.</description>
28
  <notes>M&#xF3;dulo de c&#xE1;lculo de PAC, Sedex, E-Sedex, Sedex 10, Sedex Hoje e Sedex a Cobrar.</notes>
29
  <authors><author><name>Pedro Teixeira</name><user>auto-converted</user><email>teixeira.pedro@gmail.com</email></author></authors>
30
+ <date>2011-07-04</date>
31
+ <time>02:30:37</time>
32
+ <contents><target name="mage"><dir name="app"><dir name="etc"><dir name="modules"><file name="PedroTeixeira_Correios.xml" hash="3635fbd879b39f8d43c7c0ac7cfec8d1"/></dir></dir></dir></target><target name="magecommunity"><dir name="PedroTeixeira"><dir name="Correios"><dir name="etc"><file name="config.xml" hash="e2a5bc3aac7846f7592350b8cee3da4d"/><file name="system.xml" hash="f0d50a77f911775a2062dfb45f96795c"/></dir><dir name="Helper"><file name="Data.php" hash="69f95ad2744670a734b87b01ce6c3f09"/></dir><dir name="Model"><dir name="Carrier"><file name="CorreiosMethod.php" hash="b2e8f086db7d977d46f1939b82c7d5a6"/></dir><dir name="Source"><file name="PostMethods.php" hash="ec95386783928b1c648a3e93009decfd"/><file name="WeightType.php" hash="05d4aa67a8090940da5322037bb46e5d"/></dir></dir><dir name="sql"><dir name="pedroteixeira_correios_setup"><file name="mysql4-install-4.0.0.php" hash="ef33ba860a1a8650ce4fb1e3f020d4b7"/><file name="mysql4-upgrade-4.0.0-4.1.0.php" hash="7f37848c7673647f0376c0dd6d8399d4"/><file name="mysql4-upgrade-4.1.0-4.2.0.php" hash="5f087b0de8174e6b014ef5aabac844b4"/></dir></dir></dir></dir></target></contents>
33
  <compatible/>
34
  <dependencies/>
35
  </package>