PedroTeixeira_Correios - Version 4.0.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.0.0
Comparing to
See all releases


Version 4.0.0

app/code/community/PedroTeixeira/Correios/Helper/Data.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
19
+ {
20
+
21
+ }
app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php ADDED
@@ -0,0 +1,565 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_CorreioMethod
20
+ *
21
+ * @category PedroTeixeira
22
+ * @package PedroTeixeira_Correios
23
+ * @author Pedro Teixeira <pedro@pteixeira.com.br>
24
+ */
25
+
26
+ class ParametersLocaweb { }
27
+
28
+ class PedroTeixeira_Correios_Model_Carrier_CorreiosMethod
29
+ extends Mage_Shipping_Model_Carrier_Abstract
30
+ implements Mage_Shipping_Model_Carrier_Interface
31
+ {
32
+
33
+ /**
34
+ * _code property
35
+ *
36
+ * @var string
37
+ */
38
+ protected $_code = 'pedroteixeira_correios';
39
+
40
+ /**
41
+ * _result property
42
+ *
43
+ * @var Mage_Shipping_Model_Rate_Result / Mage_Shipping_Model_Tracking_Result
44
+ */
45
+ protected $_result = null;
46
+
47
+ /**
48
+ * Check if current carrier offer support to tracking
49
+ *
50
+ * @return boolean true
51
+ */
52
+ public function isTrackingAvailable() {
53
+ return true;
54
+ }
55
+
56
+ /**
57
+ * Collect Rates
58
+ *
59
+ * @param Mage_Shipping_Model_Rate_Request $request
60
+ * @return Mage_Shipping_Model_Rate_Result
61
+ */
62
+ public function collectRates(Mage_Shipping_Model_Rate_Request $request)
63
+ {
64
+ if (!$this->getConfigFlag('active'))
65
+ {
66
+ //Disabled
67
+ Mage::log('PedroTeixeira_Correios: Disabled');
68
+ return false;
69
+ }
70
+
71
+
72
+ $origCountry = Mage::getStoreConfig('shipping/origin/country_id', $this->getStore());
73
+ $destCountry = $request->getDestCountryId();
74
+ if ($origCountry != "BR" || $destCountry != "BR"){
75
+ //Out of delivery area
76
+ Mage::log('PedroTeixeira_Correios: Out of delivery area');
77
+ return false;
78
+ }
79
+
80
+
81
+
82
+ $result = Mage::getModel('shipping/rate_result');
83
+ $error = Mage::getModel('shipping/rate_result_error');
84
+
85
+ $error->setCarrier($this->_code);
86
+ $error->setCarrierTitle($this->getConfigData('title'));
87
+
88
+
89
+ $packagevalue = $request->getBaseCurrency()->convert($request->getPackageValue(), $request->getPackageCurrency());
90
+ $minorderval = $this->getConfigData('min_order_value');
91
+ $maxorderval = $this->getConfigData('max_order_value');
92
+ if($packagevalue <= $minorderval || $packagevalue >= $maxorderval){
93
+ //Value limits
94
+ Mage::log('PedroTeixeira_Correios: Value limits');
95
+ $error->setErrorMessage($this->getConfigData('valueerror'));
96
+ $result->append($error);
97
+ return $result;
98
+ }
99
+
100
+ $frompcode = Mage::getStoreConfig('shipping/origin/postcode', $this->getStore());
101
+ $topcode = $request->getDestPostcode();
102
+
103
+ //Fix Zip Code
104
+ $frompcode = str_replace('-', '', trim($frompcode));
105
+ $topcode = str_replace('-', '', trim($topcode));
106
+
107
+ if(!preg_match("/^([0-9]{8})$/", $topcode))
108
+ {
109
+ //Invalid Zip Code
110
+ Mage::log('PedroTeixeira_Correios: Invalid Zip Code');
111
+ $error->setErrorMessage($this->getConfigData('zipcodeerror'));
112
+ $result->append($error);
113
+ Mage::helper('customer')->__('Invalid ZIP CODE');
114
+ return $result;
115
+ }
116
+
117
+
118
+ $sweight = $request->getPackageWeight();
119
+ $weightCompare = $this->getConfigData('maxweight');
120
+
121
+ if($this->getConfigData('weight_type') == 'gr'){
122
+ $sweight = number_format($sweight/1000, 2, '.', '');
123
+ $weightCompare = number_format($weightCompare/1000, 2, '.', '');
124
+ }
125
+
126
+
127
+ if ($sweight > $weightCompare){
128
+ //Weight exceeded limit
129
+ Mage::log('PedroTeixeira_Correios: Weight exceeded limit');
130
+ $error->setErrorMessage($this->getConfigData('maxweighterror'));
131
+ $result->append($error);
132
+ return $result;
133
+ }
134
+
135
+
136
+ if ($sweight == 0){
137
+ //Weight zero
138
+ Mage::log('PedroTeixeira_Correios: Weight zero');
139
+ $error->setErrorMessage($this->getConfigData('weightzeroerror'));
140
+ $result->append($error);
141
+ return $result;
142
+ }
143
+
144
+
145
+ //Create the volume of the cart
146
+
147
+ $pesoCubicoTotal = 0;
148
+ $volumeTotal = 0;
149
+
150
+ $items = Mage::getModel('checkout/cart')->getQuote()->getAllItems();
151
+
152
+ foreach($items as $item){
153
+
154
+ $while = 0;
155
+ $_product = $item->getProduct();
156
+
157
+ if($_product->getData('volume_altura') == '' || (int)$_product->getData('volume_altura') == 0)
158
+ $itemAltura = $this->getConfigData('altura_padrao');
159
+ else
160
+ $itemAltura = $_product->getData('volume_altura');
161
+
162
+ if($_product->getData('volume_largura') == '' || (int)$_product->getData('volume_largura') == 0)
163
+ $itemLargura = $this->getConfigData('largura_padrao');
164
+ else
165
+ $itemLargura = $_product->getData('volume_largura');
166
+
167
+ if($_product->getData('volume_comprimento') == '' || (int)$_product->getData('volume_comprimento') == 0)
168
+ $itemComprimento = $this->getConfigData('comprimento_padrao');
169
+ else
170
+ $itemComprimento = $_product->getData('volume_comprimento');
171
+
172
+ while($while < $item->getQty()){
173
+ $itemPesoCubico = ($itemAltura * $itemLargura * $itemComprimento)/4800;
174
+ $pesoCubicoTotal = $pesoCubicoTotal + $itemPesoCubico;
175
+ $volumeTotal = $volumeTotal + ($itemPesoCubico * 4800);
176
+
177
+ $while ++;
178
+ }
179
+ }
180
+
181
+ if($pesoCubicoTotal > $sweight){
182
+ $mediaMedidas = round(pow((int)$volumeTotal, (1/3)));
183
+ $volumeComprimento = (($mediaMedidas < 16) ? 16 : $mediaMedidas);
184
+ $volumeAltura = (($mediaMedidas < 2) ? 2 : $mediaMedidas);
185
+ $volumeLargura = (($mediaMedidas < 11) ? 11 : $mediaMedidas);
186
+ }else{
187
+ $volumeComprimento = 16;
188
+ $volumeAltura = 2;
189
+ $volumeLargura = 11;
190
+ }
191
+
192
+ //Define post method
193
+ $shipping_methods = array();
194
+
195
+ $postmethods = explode(",", $this->getConfigData('postmethods'));
196
+
197
+ foreach($postmethods as $methods)
198
+ {
199
+
200
+ switch ($methods){
201
+ case 0:
202
+ $shipping_methods["40010"] = array ("Sedex", "3");
203
+ break;
204
+ case 1:
205
+ $shipping_methods["40096"] = array ("Sedex", "3");
206
+ break;
207
+ case 2:
208
+ $shipping_methods["81019"] = array ("E-Sedex", "3");
209
+ break;
210
+ case 3:
211
+ $shipping_methods["41025"] = array ("PAC", "3");
212
+ break;
213
+ case 4:
214
+ $shipping_methods["41106"] = array ("PAC", "3");
215
+ break;
216
+ case 5:
217
+ $shipping_methods["41068"] = array ("PAC", "3");
218
+ break;
219
+ case 6:
220
+ $shipping_methods["40215"] = array ("Sedex 10", "1");
221
+ break;
222
+ case 7:
223
+ $shipping_methods["40290"] = array ("Sedex HOJE", "1");
224
+ break;
225
+ case 8:
226
+ $shipping_methods["40045"] = array ("Sedex a Cobrar", "5");
227
+ break;
228
+ }
229
+ }
230
+
231
+ foreach($shipping_methods as $shipping_method => $shipping_values){
232
+
233
+ //Define URL method
234
+ switch ($this->getConfigData('urlmethod')){
235
+
236
+ case 1:
237
+
238
+ $correiosWSLocaWeb = "http://comercio.locaweb.com.br/correios/frete.asmx?WSDL";
239
+
240
+ $soap = @new SoapClient($correiosWSLocaWeb, array(
241
+ 'trace' => true,
242
+ 'exceptions' => true,
243
+ 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP,
244
+ 'connection_timeout' => 1000
245
+ ));
246
+
247
+ // Postagem dos parâmetros
248
+ $parms = new ParametersLocaweb();
249
+ $parms->cepOrigem = utf8_encode($frompcode);
250
+ $parms->cepDestino = utf8_encode($topcode);
251
+ $parms->peso = utf8_encode(str_replace(".",",",$sweight));
252
+ $parms->volume = utf8_encode($volumeTotal);
253
+ $parms->codigo = utf8_encode($shipping_method);
254
+
255
+ // Resgata o valor calculado
256
+ $resposta = $soap->Correios($parms);
257
+
258
+ $shippingPrice = floatval(str_replace(",",".",$resposta->CorreiosResult));
259
+
260
+ break;
261
+
262
+ case 0:
263
+
264
+ $filename = "http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx";
265
+
266
+ try {
267
+ $client = new Zend_Http_Client($filename);
268
+
269
+ $client->setParameterGet('StrRetorno', 'xml');
270
+ $client->setParameterGet('nCdServico', $shipping_method);
271
+ $client->setParameterGet('nVlPeso', $sweight);
272
+ $client->setParameterGet('sCepOrigem', $frompcode);
273
+ $client->setParameterGet('sCepDestino', $topcode);
274
+ $client->setParameterGet('nCdFormato',1);
275
+ $client->setParameterGet('nVlComprimento',$volumeComprimento);
276
+ $client->setParameterGet('nVlAltura',$volumeAltura);
277
+ $client->setParameterGet('nVlLargura',$volumeLargura);
278
+ if($this->getConfigData('mao_propria'))
279
+ $client->setParameterGet('sCdMaoPropria','S');
280
+ else
281
+ $client->setParameterGet('sCdMaoPropria','N');
282
+
283
+ if($this->getConfigData('aviso_recebimento'))
284
+ $client->setParameterGet('sCdAvisoRecebimento','S');
285
+ else
286
+ $client->setParameterGet('sCdAvisoRecebimento','N');
287
+
288
+ if($this->getConfigData('valor_declarado') || $shipping_method == 40045)
289
+ $client->setParameterGet('nVlValorDeclarado',number_format($packagevalue, 2, ',', '.'));
290
+ else
291
+ $client->setParameterGet('nVlValorDeclarado',0);
292
+
293
+
294
+
295
+ if($shipping_method == 40096 || $shipping_method == 81019 || $shipping_method == 41068){
296
+ if($this->getConfigData('cod_admin') == '' || $this->getConfigData('senha_admin') == ''){
297
+ // Need correios admin data
298
+ Mage::log('PedroTeixeira_Correios: Need correios admin data');
299
+ $error->setErrorMessage($this->getConfigData('coderror'));
300
+ $result->append($error);
301
+ return $result;
302
+ }else{
303
+ $client->setParameterGet('nCdEmpresa',$this->getConfigData('cod_admin'));
304
+ $client->setParameterGet('sDsSenha',$this->getConfigData('senha_admin'));
305
+ }
306
+ }
307
+
308
+ $content = $client->request();
309
+ $conteudo = $content->getBody();
310
+
311
+ if (!stristr($conteudo, "<?xml")){
312
+ throw new Exception("Not XML returned.");
313
+ }
314
+
315
+ } catch (Exception $e) {
316
+ //URL Error
317
+ Mage::log('PedroTeixeira_Correios: URL Error');
318
+ $error = Mage::getModel('shipping/rate_result_error');
319
+ $error->setCarrier($this->_code);
320
+ $error->setCarrierTitle($this->getConfigData('title'));
321
+ $error->setMethod($shipping_method);
322
+ $error->setErrorMessage($this->getConfigData('urlerror'));
323
+ $result->append($error);
324
+ $shippingPrice = 0;
325
+
326
+ continue;
327
+ };
328
+
329
+ preg_match_all("/<Codigo>(.+)<\/Codigo>/", $conteudo, $xml_servico);
330
+ preg_match_all("/<Valor>(.+)<\/Valor>/", $conteudo, $preco_postal);
331
+ preg_match_all("/<PrazoEntrega>(.+)<\/PrazoEntrega>/", $conteudo, $prazo_postal);
332
+ preg_match_all("/<Erro>(.+)<\/Erro>/", $conteudo, $err_id);
333
+ $err_id = str_replace('-', '', $err_id[1][0]);
334
+ $err_id = (int)$err_id;
335
+ preg_match_all("/<MsgErro>(.+)<\/MsgErro>/", $conteudo, $err_msg);
336
+
337
+
338
+ $correiosReturn = array(
339
+ "prazo" => $prazo_postal[1][0]
340
+ );
341
+
342
+ if(trim($err_id) == "0"){
343
+ $shippingPrice = floatval(str_replace(",",".",$preco_postal[1][0]));
344
+ }else{
345
+
346
+ $ignorar = explode(',',$this->getConfigData('ignorar_erro'));
347
+ $ignorar = array_flip($ignorar);
348
+ if(!array_key_exists($err_id, $ignorar)){
349
+ //Error
350
+ $error = Mage::getModel('shipping/rate_result_error');
351
+ $error->setCarrier($this->_code);
352
+ $error->setCarrierTitle($this->getConfigData('title'));
353
+ $error->setMethod($shipping_method);
354
+
355
+ // Correios Error
356
+ Mage::log('PedroTeixeira_Correios: Correios Error');
357
+ $error->setErrorMessage(sprintf($this->getConfigData('correioserror'), $shipping_values[0], $err_msg[1][0], $err_id));
358
+ $result->append($error);
359
+ $shippingPrice = 0;
360
+ }else{
361
+ $shippingPrice = 0;
362
+ }
363
+ }
364
+
365
+
366
+ break;
367
+ default:
368
+ //URL method undefined
369
+ Mage::log('PedroTeixeira_Correios: URL method undefined');
370
+ $error->setErrorMessage($this->getConfigData('urlerror'));
371
+ $result->append($error);
372
+ return $result;
373
+ }
374
+
375
+ if($shippingPrice <= 0){
376
+ continue;
377
+ }
378
+
379
+ $method = Mage::getModel('shipping/rate_result_method');
380
+
381
+ $method->setCarrier($this->_code);
382
+ $method->setCarrierTitle($this->getConfigData('title'));
383
+
384
+ $method->setMethod($shipping_method);
385
+
386
+ if ($this->getConfigFlag('prazo_entrega')){
387
+
388
+ if(isset($correiosReturn)){
389
+ if($correiosReturn['prazo'] > 0){
390
+ $method->setMethodTitle(sprintf($this->getConfigData('msgprazo'), $shipping_values[0], (int)$correiosReturn['prazo'] + $this->getConfigData('add_prazo')));
391
+ }else{
392
+ $method->setMethodTitle(sprintf($this->getConfigData('msgprazo'), $shipping_values[0], $shipping_values[1] + $this->getConfigData('add_prazo')));
393
+ }
394
+ }else{
395
+ $method->setMethodTitle(sprintf($this->getConfigData('msgprazo'), $shipping_values[0], $shipping_values[1] + $this->getConfigData('add_prazo')));
396
+ }
397
+
398
+ }else{
399
+ $method->setMethodTitle($shipping_values[0]);
400
+ }
401
+
402
+ $method->setPrice($shippingPrice + $this->getConfigData('handling_fee'));
403
+
404
+ $method->setCost($shippingPrice);
405
+
406
+ $result->append($method);
407
+
408
+ $shippingPrice = null;
409
+
410
+ }
411
+
412
+ $this->_result = $result;
413
+
414
+ $this->_updateFreeMethodQuote($request);
415
+
416
+ return $this->_result;
417
+ }
418
+
419
+ /**
420
+ * Get Tracking Info
421
+ *
422
+ * @param mixed $tracking
423
+ * @return mixed
424
+ */
425
+ public function getTrackingInfo($tracking) {
426
+ $result = $this->getTracking($tracking);
427
+ if ($result instanceof Mage_Shipping_Model_Tracking_Result){
428
+ if ($trackings = $result->getAllTrackings()) {
429
+ return $trackings[0];
430
+ }
431
+ } elseif (is_string($result) && !empty($result)) {
432
+ return $result;
433
+ }
434
+
435
+ return false;
436
+ }
437
+
438
+ /**
439
+ * Get Tracking
440
+ *
441
+ * @param array $trackings
442
+ * @return Mage_Shipping_Model_Tracking_Result
443
+ */
444
+ public function getTracking($trackings) {
445
+ $this->_result = Mage::getModel('shipping/tracking_result');
446
+ foreach ((array) $trackings as $code) {
447
+ $this->_getTracking($code);
448
+ }
449
+ return $this->_result;
450
+ }
451
+
452
+ /**
453
+ * Protected Get Tracking, opens the request to Correios
454
+ *
455
+ * @param string $code
456
+ * @return boolean
457
+ */
458
+ protected function _getTracking($code) {
459
+ $error = Mage::getModel('shipping/tracking_result_error');
460
+ $error->setTracking($code);
461
+ $error->setCarrier($this->_code);
462
+ $error->setCarrierTitle($this->getConfigData('title'));
463
+ $error->setErrorMessage($this->getConfigData('urlerror'));
464
+
465
+ $url = 'http://websro.correios.com.br/sro_bin/txect01$.QueryList';
466
+ $url .= '?P_LINGUA=001&P_TIPO=001&P_COD_UNI=' . $code;
467
+ try {
468
+ $client = new Zend_Http_Client();
469
+ $client->setUri($url);
470
+ $content = $client->request();
471
+ $body = $content->getBody();
472
+ } catch (Exception $e) {
473
+ $this->_result->append($error);
474
+ return false;
475
+ }
476
+
477
+ if (!preg_match('#<table ([^>]+)>(.*?)</table>#is', $body, $matches)) {
478
+ $this->_result->append($error);
479
+ return false;
480
+ }
481
+ $table = $matches[2];
482
+
483
+ if (!preg_match_all('/<tr>(.*)<\/tr>/i', $table, $columns, PREG_SET_ORDER)) {
484
+ $this->_result->append($error);
485
+ return false;
486
+ }
487
+
488
+ $progress = array();
489
+ for ($i = 0; $i < count($columns); $i++) {
490
+ $column = $columns[$i][1];
491
+
492
+ $description = '';
493
+ $found = false;
494
+ 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)) {
495
+ if (preg_match('/<td colspan="?2"?>(.*)<\/td>/i', $columns[$i+1][1], $matchesDescription)) {
496
+ $description = str_replace(' ', '', $matchesDescription[1]);
497
+ }
498
+
499
+ $found = true;
500
+ } elseif (preg_match('/<td rowspan="?1"?>(.*)<\/td><td>(.*)<\/td><td><font color="[A-Z0-9]{6}">(.*)<\/font><\/td>/i', $column, $matches)) {
501
+ $found = true;
502
+ }
503
+
504
+ if ($found) {
505
+ $datetime = split(' ', $matches[1]);
506
+
507
+ $locale = new Zend_Locale('pt_BR');
508
+ $date='';
509
+ $date = new Zend_Date($datetime[0], 'dd/MM/YYYY', $locale);
510
+
511
+ $track = array(
512
+ 'deliverydate' => $date->toString('YYYY-MM-dd'),
513
+ 'deliverytime' => $datetime[1] . ':00',
514
+ 'deliverylocation' => htmlentities($matches[2]),
515
+ 'status' => htmlentities($matches[3]),
516
+ 'activity' => htmlentities($matches[3])
517
+ );
518
+
519
+ if ($description !== '') {
520
+ $track['activity'] = $matches[3] . ' - ' . htmlentities($description);
521
+ }
522
+
523
+ $progress[] = $track;
524
+ }
525
+ }
526
+
527
+ if (!empty($progress)) {
528
+ $track = $progress[0];
529
+ $track['progressdetail'] = $progress;
530
+
531
+ $tracking = Mage::getModel('shipping/tracking_result_status');
532
+ $tracking->setTracking($code);
533
+ $tracking->setCarrier('correios');
534
+ $tracking->setCarrierTitle($this->getConfigData('title'));
535
+ $tracking->addData($track);
536
+
537
+ $this->_result->append($tracking);
538
+ return true;
539
+ } else {
540
+ $this->_result->append($error);
541
+ return false;
542
+ }
543
+ }
544
+
545
+ /**
546
+ * Returns the allowed carrier methods
547
+ *
548
+ * @return array
549
+ */
550
+ public function getAllowedMethods()
551
+ {
552
+ return array($this->_code => $this->getConfigData('title'));
553
+ }
554
+
555
+ /**
556
+ * Define ZIP Code as required
557
+ *
558
+ * @return boolean
559
+ */
560
+ public function isZipCodeRequired()
561
+ {
562
+ return true;
563
+ }
564
+
565
+ }
app/code/community/PedroTeixeira/Correios/Model/Source/FreeMethods.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_FreeMethods
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
+ }
app/code/community/PedroTeixeira/Correios/Model/Source/PostMethods.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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'=>0, 'label'=>Mage::helper('adminhtml')->__('Sedex Sem Contrato (Correios)')),
25
+ array('value'=>1, 'label'=>Mage::helper('adminhtml')->__('Sedex Com Contrato (Correios/Locaweb)')),
26
+ array('value'=>2, 'label'=>Mage::helper('adminhtml')->__('E-Sedex Com Contrato (Correios/Locaweb)')),
27
+ array('value'=>3, 'label'=>Mage::helper('adminhtml')->__('PAC Normal (Locaweb)')),
28
+ array('value'=>4, 'label'=>Mage::helper('adminhtml')->__('PAC Sem Contrato (Correios)')),
29
+ array('value'=>5, 'label'=>Mage::helper('adminhtml')->__('PAC Com Contrato (Correios/Locaweb)')),
30
+ array('value'=>6, 'label'=>Mage::helper('adminhtml')->__('Sedex 10 (Correios)')),
31
+ array('value'=>7, 'label'=>Mage::helper('adminhtml')->__('Sedex HOJE (Correios)')),
32
+ array('value'=>8, 'label'=>Mage::helper('adminhtml')->__('Sedex a Cobrar (Correios)')),
33
+ );
34
+ }
35
+
36
+ }
app/code/community/PedroTeixeira/Correios/Model/Source/UrlMethods.php ADDED
@@ -0,0 +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_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 ADDED
@@ -0,0 +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
+ }
app/code/community/PedroTeixeira/Correios/etc/config.xml ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.0.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
+ <active>1</active>
75
+ <model>PedroTeixeira_Correios_Model_Carrier_CorreiosMethod</model>
76
+ <title>Correios</title>
77
+ <mao_propria>0</mao_propria>
78
+ <aviso_recebimento>0</aviso_recebimento>
79
+ <valor_declarado>0</valor_declarado>
80
+ <ignorar_erro>1,2,5,6,7,10,36,37,38,99</ignorar_erro>
81
+ <altura_padrao>2</altura_padrao>
82
+ <comprimento_padrao>16</comprimento_padrao>
83
+ <largura_padrao>11</largura_padrao>
84
+ <postmethods>0</postmethods>
85
+ <prazo_entrega>0</prazo_entrega>
86
+ <min_order_value>0</min_order_value>
87
+ <max_order_value>500</max_order_value>
88
+ <urlmethod>0</urlmethod>
89
+ <weight_type>kg</weight_type>
90
+ <maxweight>30</maxweight>
91
+ <handling_fee>0</handling_fee>
92
+ <add_prazo>0</add_prazo>
93
+ <msgprazo>%s - Em média %d dia(s)</msgprazo>
94
+ <free_method>40010</free_method>
95
+ <correioserror>%s - Houve um erro inesperado, por favor entre em contato. %s (Cod. %d)</correioserror>
96
+ <valueerror>Valor de compra a cima do permitido pelos Correios. Por favor entre em contato conosco.</valueerror>
97
+ <zipcodeerror>Por favor, corrija o CEP digitado, ele não está correto.</zipcodeerror>
98
+ <maxweighterror>Peso dos produtos a cima do permitido pelos Correios. Por favor entre em contato conosco.</maxweighterror>
99
+ <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>
100
+ <urlerror>Esse método de envio está fora do ar. Por favor entre em contato conosco.</urlerror>
101
+ <coderror>Lojista: Para calcular esse serviço você precisa ter contrato com os Correios.</coderror>
102
+ <showmethod>0</showmethod>
103
+ </pedroteixeira_correios>
104
+ </carriers>
105
+ </default>
106
+ </config>
app/code/community/PedroTeixeira/Correios/etc/system.xml ADDED
@@ -0,0 +1,316 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 4.0.0 o módulo de cálculo de frete conta com instalação automática dos atributos de volume, SEDEX a Cobrar, opção de configurar o formato do peso de seus produtos,
37
+ correção do problema de getBody(), correção do problema de ereg(), nova forma de passar o volume para cálculo do PAC, log de erros e outras funcionalidades.<br /><br />
38
+ 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.
39
+ Por exemplo, se você habilitar "Sedex Com Contrato (Correios)" lembre-se de configurar a fonte de cálculo como Correios, já se habilitar "PAC Normal (Locaweb)" 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
+ <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.
44
+ <br /><br /><hr /><br /><br />
45
+ </div>
46
+ ]]>
47
+ </comment>
48
+ <fields>
49
+ <active translate="label">
50
+ <label>Habilitar</label>
51
+ <frontend_type>select</frontend_type>
52
+ <source_model>adminhtml/system_config_source_yesno</source_model>
53
+ <sort_order>10</sort_order>
54
+ <show_in_default>1</show_in_default>
55
+ <show_in_website>1</show_in_website>
56
+ <show_in_store>1</show_in_store>
57
+ </active>
58
+ <title translate="label">
59
+ <label>Nome do Meio de Entrega</label>
60
+ <frontend_type>text</frontend_type>
61
+ <sort_order>15</sort_order>
62
+ <show_in_default>1</show_in_default>
63
+ <show_in_website>1</show_in_website>
64
+ <show_in_store>1</show_in_store>
65
+ </title>
66
+ <postmethods translate="label">
67
+ <label>Serviços</label>
68
+ <frontend_type>multiselect</frontend_type>
69
+ <source_model>PedroTeixeira_Correios_Model_Source_PostMethods</source_model>
70
+ <sort_order>20</sort_order>
71
+ <show_in_default>1</show_in_default>
72
+ <show_in_website>1</show_in_website>
73
+ <show_in_store>1</show_in_store>
74
+ <comment>Serviços que estarão disponíveis, lembre-se de usar os serviços correspondentes a fonte configurada.</comment>
75
+ </postmethods>
76
+ <urlmethod translate="label">
77
+ <label>Fonte de Cálculo</label>
78
+ <frontend_type>select</frontend_type>
79
+ <source_model>PedroTeixeira_Correios_Model_Source_UrlMethods</source_model>
80
+ <sort_order>30</sort_order>
81
+ <show_in_default>1</show_in_default>
82
+ <show_in_website>1</show_in_website>
83
+ <show_in_store>1</show_in_store>
84
+ <comment>Ative apenas os serviços relativos a fonte.</comment>
85
+ </urlmethod>
86
+ <weight_type translate="label">
87
+ <label>Formato do Peso</label>
88
+ <frontend_type>select</frontend_type>
89
+ <source_model>PedroTeixeira_Correios_Model_Source_WeightType</source_model>
90
+ <sort_order>30</sort_order>
91
+ <show_in_default>1</show_in_default>
92
+ <show_in_website>1</show_in_website>
93
+ <show_in_store>1</show_in_store>
94
+ <comment>Formato do peso dos produtos.</comment>
95
+ </weight_type>
96
+ <prazo_entrega translate="label">
97
+ <label>Exibir Prazo de Entrega</label>
98
+ <frontend_type>select</frontend_type>
99
+ <source_model>adminhtml/system_config_source_yesno</source_model>
100
+ <sort_order>40</sort_order>
101
+ <show_in_default>1</show_in_default>
102
+ <show_in_website>1</show_in_website>
103
+ <show_in_store>1</show_in_store>
104
+ </prazo_entrega>
105
+ <cod_admin translate="label">
106
+ <label>Código Administrativo dos Correios (Serviços Com Contrato)</label>
107
+ <frontend_type>text</frontend_type>
108
+ <sort_order>61</sort_order>
109
+ <show_in_default>1</show_in_default>
110
+ <show_in_website>1</show_in_website>
111
+ <show_in_store>1</show_in_store>
112
+ </cod_admin>
113
+ <senha_admin translate="label">
114
+ <label>Senha Administrativa dos Correios (Serviços Com Contrato)</label>
115
+ <frontend_type>text</frontend_type>
116
+ <sort_order>62</sort_order>
117
+ <show_in_default>1</show_in_default>
118
+ <show_in_website>1</show_in_website>
119
+ <show_in_store>1</show_in_store>
120
+ <comment>O padrão de senha são os 8 primeiros dígitos do CNPJ</comment>
121
+ </senha_admin>
122
+ <mao_propria translate="label">
123
+ <label>Utilizar Serviço de Mão Própria</label>
124
+ <frontend_type>select</frontend_type>
125
+ <source_model>adminhtml/system_config_source_yesno</source_model>
126
+ <sort_order>63</sort_order>
127
+ <show_in_default>1</show_in_default>
128
+ <show_in_website>1</show_in_website>
129
+ <show_in_store>1</show_in_store>
130
+ </mao_propria>
131
+ <aviso_recebimento translate="label">
132
+ <label>Utilizar Serviço de Aviso de Recebimento</label>
133
+ <frontend_type>select</frontend_type>
134
+ <source_model>adminhtml/system_config_source_yesno</source_model>
135
+ <sort_order>64</sort_order>
136
+ <show_in_default>1</show_in_default>
137
+ <show_in_website>1</show_in_website>
138
+ <show_in_store>1</show_in_store>
139
+ </aviso_recebimento>
140
+ <valor_declarado translate="label">
141
+ <label>Utilizar Serviço de Valor Declarado</label>
142
+ <frontend_type>select</frontend_type>
143
+ <source_model>adminhtml/system_config_source_yesno</source_model>
144
+ <sort_order>65</sort_order>
145
+ <show_in_default>1</show_in_default>
146
+ <show_in_website>1</show_in_website>
147
+ <show_in_store>1</show_in_store>
148
+ </valor_declarado>
149
+ <ignorar_erro translate="label">
150
+ <label>Ignorar os seguintes erros dos Correios</label>
151
+ <frontend_type>text</frontend_type>
152
+ <sort_order>66</sort_order>
153
+ <show_in_default>1</show_in_default>
154
+ <show_in_website>1</show_in_website>
155
+ <show_in_store>1</show_in_store>
156
+ <comment>Códigos separados por vírgula.</comment>
157
+ </ignorar_erro>
158
+ <altura_padrao translate="label">
159
+ <label>Altura Padrão (cm)</label>
160
+ <frontend_type>text</frontend_type>
161
+ <sort_order>70</sort_order>
162
+ <show_in_default>1</show_in_default>
163
+ <show_in_website>1</show_in_website>
164
+ <show_in_store>1</show_in_store>
165
+ <comment><![CDATA[Quando não configurada no produto será usada.<br />Mínimo de 2 cm.]]></comment>
166
+ </altura_padrao>
167
+ <comprimento_padrao translate="label">
168
+ <label>Comprimento Padrão (cm)</label>
169
+ <frontend_type>text</frontend_type>
170
+ <sort_order>80</sort_order>
171
+ <show_in_default>1</show_in_default>
172
+ <show_in_website>1</show_in_website>
173
+ <show_in_store>1</show_in_store>
174
+ <comment><![CDATA[Quando não configurado no produto será usado.<br />Mínimo de 16 cm.]]></comment>
175
+ </comprimento_padrao>
176
+ <largura_padrao translate="label">
177
+ <label>Largura Padrão (cm)</label>
178
+ <frontend_type>text</frontend_type>
179
+ <sort_order>90</sort_order>
180
+ <show_in_default>1</show_in_default>
181
+ <show_in_website>1</show_in_website>
182
+ <show_in_store>1</show_in_store>
183
+ <comment><![CDATA[Quando não configurada no produto será usada.<br />Mínimo de 11 cm.]]></comment>
184
+ </largura_padrao>
185
+ <min_order_value translate="label">
186
+ <label>Valor Mínimo de Compra</label>
187
+ <frontend_type>text</frontend_type>
188
+ <sort_order>100</sort_order>
189
+ <show_in_default>1</show_in_default>
190
+ <show_in_website>1</show_in_website>
191
+ <show_in_store>1</show_in_store>
192
+ </min_order_value>
193
+ <max_order_value translate="label">
194
+ <label>Valor Máximo de Compra</label>
195
+ <frontend_type>text</frontend_type>
196
+ <sort_order>110</sort_order>
197
+ <show_in_default>1</show_in_default>
198
+ <show_in_website>1</show_in_website>
199
+ <show_in_store>1</show_in_store>
200
+ </max_order_value>
201
+ <maxweight translate="label">
202
+ <label>Peso Máximo Permitido Pelos Correios</label>
203
+ <frontend_type>text</frontend_type>
204
+ <sort_order>120</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
+ <comment>Utilize o mesmo formato de peso configurado no módulo, kilos ou gramas.</comment>
209
+ </maxweight>
210
+ <handling_fee translate="label">
211
+ <label>Taxa de Postagem</label>
212
+ <frontend_type>text</frontend_type>
213
+ <sort_order>130</sort_order>
214
+ <show_in_default>1</show_in_default>
215
+ <show_in_website>1</show_in_website>
216
+ <show_in_store>1</show_in_store>
217
+ <comment>Essa taxa será adicionada ao valor do frete.</comment>
218
+ </handling_fee>
219
+ <add_prazo translate="label">
220
+ <label>Adicionar ao prazo dos Correios (dias)</label>
221
+ <frontend_type>text</frontend_type>
222
+ <sort_order>131</sort_order>
223
+ <show_in_default>1</show_in_default>
224
+ <show_in_website>1</show_in_website>
225
+ <show_in_store>1</show_in_store>
226
+ <comment>Adicionará mais dias aos prazos fornecidos pelos Correios.</comment>
227
+ </add_prazo>
228
+ <correioserror translate="label">
229
+ <label>Mensagem que exibe os erros dos Correios</label>
230
+ <frontend_type>text</frontend_type>
231
+ <sort_order>135</sort_order>
232
+ <show_in_default>1</show_in_default>
233
+ <show_in_website>1</show_in_website>
234
+ <show_in_store>1</show_in_store>
235
+ </correioserror>
236
+ <msgprazo translate="label">
237
+ <label>Mensagem que exibe o prazo de entrega</label>
238
+ <frontend_type>text</frontend_type>
239
+ <sort_order>140</sort_order>
240
+ <show_in_default>1</show_in_default>
241
+ <show_in_website>1</show_in_website>
242
+ <show_in_store>1</show_in_store>
243
+ </msgprazo>
244
+ <free_method translate="label">
245
+ <label>Serviço para entrega gratuita</label>
246
+ <frontend_type>select</frontend_type>
247
+ <frontend_class>free-method</frontend_class>
248
+ <source_model>PedroTeixeira_Correios_Model_Source_FreeMethods</source_model>
249
+ <sort_order>150</sort_order>
250
+ <show_in_default>1</show_in_default>
251
+ <show_in_website>1</show_in_website>
252
+ <show_in_store>1</show_in_store>
253
+ <comment>Quando usar um cupom oferecendo frete gratuito, qual serviço será gratuito. Lembre-se de habilitar o serviço.</comment>
254
+ </free_method>
255
+ <valueerror translate="label">
256
+ <label>Mensagem de valor fora do permitido</label>
257
+ <frontend_type>textarea</frontend_type>
258
+ <sort_order>160</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
+ </valueerror>
263
+ <zipcodeerror translate="label">
264
+ <label>Mensagem de CEP incorreto</label>
265
+ <frontend_type>textarea</frontend_type>
266
+ <sort_order>170</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
+ </zipcodeerror>
271
+ <maxweighterror translate="label">
272
+ <label>Mensagem de peso fora do permitido</label>
273
+ <frontend_type>textarea</frontend_type>
274
+ <sort_order>180</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
+ </maxweighterror>
279
+ <weightzeroerror translate="label">
280
+ <label>Mensagem de peso zero</label>
281
+ <frontend_type>textarea</frontend_type>
282
+ <sort_order>185</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
+ </weightzeroerror>
287
+ <urlerror translate="label">
288
+ <label>Mensagem de URL fora do ar ou fonte não selecionada</label>
289
+ <frontend_type>textarea</frontend_type>
290
+ <sort_order>190</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
+ </urlerror>
295
+ <coderror translate="label">
296
+ <label>Mensagem de falta de Código Administrativo</label>
297
+ <frontend_type>textarea</frontend_type>
298
+ <sort_order>191</sort_order>
299
+ <show_in_default>1</show_in_default>
300
+ <show_in_website>1</show_in_website>
301
+ <show_in_store>1</show_in_store>
302
+ </coderror>
303
+ <sort_order translate="label">
304
+ <label>Ordenar por</label>
305
+ <frontend_type>text</frontend_type>
306
+ <sort_order>230</sort_order>
307
+ <show_in_default>1</show_in_default>
308
+ <show_in_website>1</show_in_website>
309
+ <show_in_store>1</show_in_store>
310
+ </sort_order>
311
+ </fields>
312
+ </pedroteixeira_correios>
313
+ </groups>
314
+ </carriers>
315
+ </sections>
316
+ </config>
app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/mysql4-install-4.0.0.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ $installer = $this;
19
+
20
+ /* @var $installer Mage_Catalog_Model_Resource_Eav_Mysql4_Setup */
21
+ $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
22
+
23
+ $installer->startSetup();
24
+
25
+ // Adiciona o volume como atributo do produto
26
+ $codigo = 'volume_comprimento';
27
+ $config = array(
28
+ 'position' => 1,
29
+ 'required'=> 0,
30
+ 'label' => 'Comprimento (cm)',
31
+ 'type' => 'int',
32
+ 'input'=>'text',
33
+ 'apply_to'=>'simple,bundle,grouped,configurable',
34
+ 'note'=>'Comprimento da embalagem do produto (Para cálculo de PAC, mínimo de 16)'
35
+ );
36
+
37
+ $setup->addAttribute('catalog_product', $codigo , $config);
38
+
39
+ // Adiciona o volume como atributo do produto
40
+ $codigo = 'volume_altura';
41
+ $config = array(
42
+ 'position' => 1,
43
+ 'required'=> 0,
44
+ 'label' => 'Altura (cm)',
45
+ 'type' => 'int',
46
+ 'input'=>'text',
47
+ 'apply_to'=>'simple,bundle,grouped,configurable',
48
+ 'note'=>'Altura da embalagem do produto (Para cálculo de PAC, mínimo de 2)'
49
+ );
50
+
51
+ $setup->addAttribute('catalog_product', $codigo , $config);
52
+
53
+ // Adiciona o volume como atributo do produto
54
+ $codigo = 'volume_largura';
55
+ $config = array(
56
+ 'position' => 1,
57
+ 'required'=> 0,
58
+ 'label' => 'Largura (cm)',
59
+ 'type' => 'int',
60
+ 'input'=>'text',
61
+ 'apply_to'=>'simple,bundle,grouped,configurable',
62
+ 'note'=>'Largura da embalagem do produto (Para cálculo de PAC, mínimo de 11)'
63
+ );
64
+
65
+ $setup->addAttribute('catalog_product', $codigo , $config);
66
+
67
+ $installer->endSetup();
68
+ ?>
app/etc/modules/PedroTeixeira_Correios.xml ADDED
@@ -0,0 +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>
package.xml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>PedroTeixeira_Correios</name>
4
+ <version>4.0.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>M&#xF3;dulo totalmente compat&#xED;vel com o novo WebService dos Correios. 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:
11
+
12
+ - Sedex Sem Contrato
13
+ - Sedex Com Contrato
14
+ - E-Sedex Com Contrato
15
+ - PAC Sem Contrato
16
+ - PAC Com Contrato
17
+ - Sedex 10
18
+ - Sedex HOJE
19
+ - Sedex a Cobrar
20
+
21
+ Conta com identifica&#xE7;&#xE3;o de erros dos Correios, fun&#xE7;&#xE3;o de ignorar determinados erros, 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.
22
+
23
+ Na nova vers&#xE3;o conta com instala&#xE7;&#xE3;o automatica dos atributos de volume, corre&#xE7;&#xE3;o dos erros de getBody() e ereg(), configura&#xE7;&#xE3;o do formato de peso, nova forma de passar o volume para c&#xE1;lculo de PAC, log de erros e outras funcionalidades.
24
+
25
+ Mais informa&#xE7;&#xF5;es em http://www.pteixeira.com.br</description>
26
+ <notes>M&#xF3;dulo de c&#xE1;lculo de PAC, Sedex, E-Sedex, Sedex 10, Sedex Hoje e Sedex a Cobrar.</notes>
27
+ <authors><author><name>Pedro Teixeira</name><user>auto-converted</user><email>teixeira.pedro@gmail.com</email></author></authors>
28
+ <date>2010-05-02</date>
29
+ <time>21:25:32</time>
30
+ <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="0b252ab5e22b204bb1b98f6d460f93f0"/><file name="system.xml" hash="53cecd039e5a003646cbfb4d26a9b8a8"/></dir><dir name="Helper"><file name="Data.php" hash="b1f56c64ef8b9fb7e8b26df9b4e44b3d"/></dir><dir name="Model"><dir name="Carrier"><file name="CorreiosMethod.php" hash="a52e4cb27a50a96e3b0170b11a03d962"/></dir><dir name="Source"><file name="FreeMethods.php" hash="4af2696b931eb73c4d8dfe53893a3a25"/><file name="PostMethods.php" hash="4ba41466c7e594e2d0aa3e14a0147d19"/><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="85c10b59b0b09ef0347887d5c4b8a16d"/></dir></dir></dir></dir></target></contents>
31
+ <compatible/>
32
+ <dependencies/>
33
+ </package>