Post by rogaforyn » Tue Jul 12, 2016 11:20 pm

Hello, i have a extension from Brazil.
When i go to the checkout page, it says: "CEP: Is invalid."
Because he loads the shipping function when page loads(and POSTCODE is empty).

How to put Ajax on the system, to load the shipping function on postcode input?

Code: Select all

	public function getQuote($address) {
		
		$this->load->language('shipping/correios');
		
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('correios_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");
		
		if (!$this->config->get('correios_geo_zone_id')) {
			$status = true;
		} elseif ($query->num_rows) {
			$status = true;
		} else {
			$status = false;
		}		
		
		$method_data = array();

		if ($status) {
			
			
			$produtos = $this->cart->getProducts();
			
			// obtém só a parte numérica do CEP
			$this->cep_origem = preg_replace ("/[^0-9]/", '', $this->config->get('correios_postcode'));
			$this->cep_destino = preg_replace ("/[^0-9]/", '', $address['postcode']);
			
			// classes de serviços agrupados conforme suas propriedades. Cada classe é uma chamada ao WebService dos Correios
			$this->nCdServico['pac_sedex'] =  array(
					'peso_max' 			=> $this->peso_pac_sedex_max,
					'lados_max' 		=> $this->lados_max,
					'cubagem_max' 		=> $this->cubagem_max
				);
			$this->nCdServico['sedex10_12_hoje'] = array(
					'peso_max' 			=> $this->peso_sedex10_12_hoje_max,
					'lados_max' 		=> $this->lados_max,
					'cubagem_max' 		=> $this->cubagem_max
				);		
			$this->nCdServico['esedex'] = array(
					'peso_max' 			=> $this->peso_esedex_max,
					'lados_max' 		=> $this->lados_max,
					'cubagem_max' 		=> $this->cubagem_max
				);	
			$this->nCdServico['pac_gf'] = array(
					'peso_max' 			=> $this->peso_pac_sedex_max,
					'lados_max' 		=> $this->lados_pac_gf_max,
					'cubagem_max' 		=> $this->cubagem_pac_gf_max
				);
			$this->nCdServico['sedex_hoje'] = array(
					'peso_max' 			=> $this->peso_sedex10_12_hoje_max,
					'lados_max' 		=> $this->lados_max,
					'cubagem_max' 		=> $this->cubagem_sedex_hoje_max
				);				
				
			$servicos['pac_sedex'] = array();
			$servicos['sedex10_12_hoje'] = array();
			$servicos['esedex']  = array();
			$servicos['pac_gf'] = array();
			$servicos['sedex_hoje'] = array();

			// serviços sem contrato
			if($this->config->get('correios_' . $this->correios['PAC'])){
				$servicos['pac_sedex'][] = $this->correios['PAC'];
			}			
			if($this->config->get('correios_' . $this->correios['SEDEX'])){
				$servicos['pac_sedex'][] = $this->correios['SEDEX'];
			}
			if($this->config->get('correios_' . $this->correios['SEDEX Pagamento na Entrega'])){
				$servicos['pac_sedex'][] = $this->correios['SEDEX Pagamento na Entrega'];
			}
			if($this->config->get('correios_' . $this->correios['PAC Pagamento na Entrega'])){
				$servicos['pac_sedex'][] = $this->correios['PAC Pagamento na Entrega'];
			}			
			if($this->config->get('correios_' . $this->correios['SEDEX 10'])){
				$servicos['sedex10_12_hoje'][]= $this->correios['SEDEX 10'];
			}
			if($this->config->get('correios_' . $this->correios['SEDEX Hoje'])){
				$servicos['sedex_hoje'][]= $this->correios['SEDEX Hoje'];
			}
			if($this->config->get('correios_' . $this->correios['SEDEX 12'])){
				$servicos['sedex10_12_hoje'][] = $this->correios['SEDEX 12'];
			}			
			// serviços com contrato			
			if(trim($this->config->get('correios_contrato_codigo')) != "" && trim($this->config->get('correios_contrato_senha')) != ""){
				$this->contrato_codigo = $this->config->get('correios_contrato_codigo');
				$this->contrato_senha = $this->config->get('correios_contrato_senha');
				
				if($this->config->get('correios_' . $this->correios['SEDEX Pagamento na Entrega - contrato'])){
					$servicos['pac_sedex'][] = $this->correios['SEDEX Pagamento na Entrega - contrato'];
				}
				if($this->config->get('correios_' . $this->correios['SEDEX - contrato 1'])){
					$servicos['pac_sedex'][] = $this->correios['SEDEX - contrato 1'];
				}
				if($this->config->get('correios_' . $this->correios['SEDEX - contrato 2'])){
					$servicos['pac_sedex'][] = $this->correios['SEDEX - contrato 2'];
				}
				if($this->config->get('correios_' . $this->correios['SEDEX - contrato 3'])){
					$servicos['pac_sedex'][] = $this->correios['SEDEX - contrato 3'];
				}
				if($this->config->get('correios_' . $this->correios['SEDEX - contrato 4'])){
					$servicos['pac_sedex'][] = $this->correios['SEDEX - contrato 4'];
				}
				if($this->config->get('correios_' . $this->correios['SEDEX - contrato 5'])){
					$servicos['pac_sedex'][] = $this->correios['SEDEX - contrato 5'];
				}
				if($this->config->get('correios_' . $this->correios['PAC - contrato'])){
					$servicos['pac_sedex'][] = $this->correios['PAC - contrato'];
				}
				if($this->config->get('correios_' . $this->correios['e-SEDEX'])){
					$servicos['esedex'][] = $this->correios['e-SEDEX'];
				}
				if($this->config->get('correios_' . $this->correios['e-SEDEX Prioritario'])){
					$servicos['esedex'][] = $this->correios['e-SEDEX Prioritario'];
				}
				if($this->config->get('correios_' . $this->correios['e-SEDEX Express'])){
					$servicos['esedex'][] = $this->correios['e-SEDEX Express'];
				}
				if($this->config->get('correios_' . $this->correios['e-SEDEX grupo 1'])){
					$servicos['esedex'][] = $this->correios['e-SEDEX grupo 1'];
				}
				if($this->config->get('correios_' . $this->correios['e-SEDEX grupo 2'])){
					$servicos['esedex'][] = $this->correios['e-SEDEX grupo 2'];
				}
				if($this->config->get('correios_' . $this->correios['e-SEDEX grupo 3'])){
					$servicos['esedex'][] =  $this->correios['e-SEDEX grupo 3'];
				}
				if($this->config->get('correios_' . $this->correios['PAC Grandes Formatos - contrato'])){
					$servicos['pac_gf'][] = $this->correios['PAC Grandes Formatos - contrato'];
				}				
			}
			
			foreach($this->nCdServico as $classe => $info){
				
				$this->setPesoMax($info['peso_max']);
				$this->setLadosMax($info['lados_max']);
				$this->setCubagemMax($info['cubagem_max']);
				$this->setServicos($servicos[$classe]);
				
				$caixas = $this->organizarEmCaixas($produtos);
				
				// descomente a linha abaixo para visualizar em arquivos as caixas
				// file_put_contents('filename' . $classe . '.txt', print_r($caixas, true));
				
				foreach ($caixas as $caixa) {
					$this->setQuoteData($caixa);
				}
				
				$this->resetServicos();
			}
			
			// ajustes finais
			if ($this->quote_data) {
				$total_compra = $this->cart->getSubTotal();
				
				$valor_adicional = (is_numeric($this->config->get('correios_adicional'))) ? $this->config->get('correios_adicional') : 0 ;

				foreach ($this->quote_data as $codigo => $data) {
					
					// soma o valor adicional ao valor final do frete - não aplicado serviços de pagamento na entrega
					if($codigo != $this->correios['SEDEX Pagamento na Entrega'] || $codigo != $this->correios['SEDEX Pagamento na Entrega - contrato'] || $codigo != $this->correios['PAC Pagamento na Entrega']) {
						
						$new_cost = $this->quote_data[$codigo]['cost'] + ($this->quote_data[$codigo]['cost'] * ($valor_adicional/100));
						// novo custo
						$this->quote_data[$codigo]['cost'] = $new_cost;
						// novo texto
						$this->quote_data[$codigo]['text'] = $this->currency->format($this->tax->calculate($new_cost, $this->config->get('correios_tax_class_id'), $this->config->get('config_tax')));
					}
					else{
						// zera o valor do frete do serviço de pagamento na entrega para evitar de ser adiconado ao valor do carrinho
						$this->quote_data[$codigo]['cost'] = 0;
					}
					// frete grátis
					if(trim($this->config->get('correios_total_' . $codigo)) != "" && $total_compra >= $this->config->get('correios_total_' . $codigo)) {
						// zera o valor
						$this->quote_data[$codigo]['cost'] = 0;
						// novo texto 
						$this->quote_data[$codigo]['text'] = $this->language->get('text_free');
					}					
					
				}				
				$method_data = array(
					'code'       => 'correios',
					'title'      => $this->language->get('text_title'),
					'quote'      => $this->quote_data,
					'sort_order' => $this->config->get('correios_sort_order'),
					'error'      => false
				);
			}
			else if(!empty($this->mensagem_erro)){
				$method_data = array(
					'code'       => 'correios',
					'title'      => $this->language->get('text_title'),
					'quote'      => $this->quote_data,
					'sort_order' => $this->config->get('correios_sort_order'),
					'error'      => implode('<br />', $this->mensagem_erro)
				);				
			}			
		
		
		return $method_data;
		
		
		}

Newbie

Posts

Joined
Tue Jul 12, 2016 11:16 pm
Who is online

Users browsing this forum: No registered users and 2 guests