Página 1 de 1

Erro validação de CPF/CNPJ no checkout

Enviado: 08 Ago 2015, 14:05
por henriquedepaulo
Olá galera, tudo bem?

Estou com problemas para adicionar a validação de CPF/CNPJ no checkout.
Baixei um modulo para validação mas só tem suporte para registro pelo Account e não tem pelo Checkout.

Estou tentando replicar essa validação.

Editei os seguintes arquivos:

Checkout/register.tpl
Código: Selecionar todos
          <div class="form-group required">
				<label class="col-sm-2 control-label" for="input-firstname">Tipo</label>
				<div class="col-sm-10">
					<?php if ( isset($cpf) && !empty($cpf) ){?>
					<input type="radio" name="pessoa" id="fisica" checked value="fisica">
					Pessoa Física 
					<input type="radio" id="juridica" name="pessoa" value="juridica">
					Pessoa Juridica
					<?php }else if ( isset($cnpj) && !empty($cnpj) ){?>
					<input type="radio" name="pessoa" id="fisica" value="fisica">
					Pessoa Física 
					<input type="radio" id="juridica" name="pessoa" checked value="juridica">
					Pessoa Juridica
					<?php
					}else{
					?>
					<input type="radio" name="pessoa" id="fisica" checked value="fisica">
					Pessoa Física 
					<input type="radio" id="juridica" name="pessoa" value="juridica">
					Pessoa Juridica
					<?php
					}
					?>
				</div>
			</div>
			<div class="form-group required pessoa_fisica">
				<label class="col-sm-2 control-label" for="cpf">CPF</label>
				<div class="col-sm-10">
					<input type="text" name="cpf" value="<?php echo $cpf; ?>" placeholder="CPF" id="cpf" class="form-control" />
					<?php if ($error_cpf) { ?>
						<div class="text-danger"><?php echo $error_cpf; ?></div>
					<?php } ?>
				</div>
			</div>
			<div class="form-group required pessoa_juridica">
				<label class="col-sm-2 control-label" for="cnpj">CNPJ</label>
				<div class="col-sm-10">
					<input type="text" name="cnpj" value="<?php echo $cnpj; ?>" placeholder="CNPJ" id="cnpj" class="form-control" />
					<?php if ($error_cnpj) { ?>
						<div class="text-danger"><?php echo $error_cnpj; ?></div>
					<?php } ?>
				</div>
			</div>
controller/checkout/register.php
Código: Selecionar todos
			if (isset($this->request->post['cpf'])) {
					$data['cpf'] = $this->request->post['cpf'];
				} else {
					$data['cpf'] = '';
				}
				if (isset($this->request->post['cnpj'])) {
						$data['cnpj'] = $this->request->post['cnpj'];
				} else {
					$data['cnpj'] = '';
				}
				
				if (isset($this->error['cpf'])) {
					$data['error_cpf'] = $this->error['cpf'];
				} else {
					$data['error_cpf'] = '';
				}
						
				if (isset($this->error['cnpj'])) {
					$data['error_cnpj'] = $this->error['cnpj'];
				} else {
					$data['error_cnpj'] = '';
				}
	
				
				if (isset($this->request->post['pessoa'])&& $this->request->post['pessoa'] == "fisica"){
					if ((strlen(utf8_decode($this->request->post['cpf'])) < 1) || (strlen(utf8_decode($this->request->post['cpf'])) > 14)) {
						$this->error['cpf'] = "O CPF é obrigatório";  
					}elseif (!$this->customer->cpf($this->request->post['cpf'])){
						$this->error['cpf'] = "O CPF é inválido!";  
					}
				}else if (isset($this->request->post['pessoa'])&& $this->request->post['pessoa'] == "juridica"){
					if ((strlen(utf8_decode($this->request->post['cnpj'])) < 1) || (strlen(utf8_decode($this->request->post['cnpj'])) > 18)&&($this->request->post['pessoa'] == "juridica")) {
						$this->error['cnpj'] = "O CNPJ é obrigatório";
					}elseif (!$this->customer->cnpj($this->request->post['cnpj'])){
						$this->error['cnpj'] = "O CNPJ é inválido!";  
					}
				}
No momento que registra pelo checkout ele não valida o CPF e também permite que ele seja registrado nulo.

Alguém poderia me ajudar?


Obrigado!

Re: Erro validação de CPF/CNPJ no checkout

Enviado: 08 Ago 2015, 21:27
por veteranodf
henriquedepaulo escreveu:Olá galera, tudo bem?

Estou com problemas para adicionar a validação de CPF/CNPJ no checkout.
Baixei um modulo para validação mas só tem suporte para registro pelo Account e não tem pelo Checkout.

Estou tentando replicar essa validação.

Editei os seguintes arquivos:

Checkout/register.tpl
Código: Selecionar todos
          <div class="form-group required">
				<label class="col-sm-2 control-label" for="input-firstname">Tipo</label>
				<div class="col-sm-10">
					<?php if ( isset($cpf) && !empty($cpf) ){?>
					<input type="radio" name="pessoa" id="fisica" checked value="fisica">
					Pessoa Física 
					<input type="radio" id="juridica" name="pessoa" value="juridica">
					Pessoa Juridica
					<?php }else if ( isset($cnpj) && !empty($cnpj) ){?>
					<input type="radio" name="pessoa" id="fisica" value="fisica">
					Pessoa Física 
					<input type="radio" id="juridica" name="pessoa" checked value="juridica">
					Pessoa Juridica
					<?php
					}else{
					?>
					<input type="radio" name="pessoa" id="fisica" checked value="fisica">
					Pessoa Física 
					<input type="radio" id="juridica" name="pessoa" value="juridica">
					Pessoa Juridica
					<?php
					}
					?>
				</div>
			</div>
			<div class="form-group required pessoa_fisica">
				<label class="col-sm-2 control-label" for="cpf">CPF</label>
				<div class="col-sm-10">
					<input type="text" name="cpf" value="<?php echo $cpf; ?>" placeholder="CPF" id="cpf" class="form-control" />
					<?php if ($error_cpf) { ?>
						<div class="text-danger"><?php echo $error_cpf; ?></div>
					<?php } ?>
				</div>
			</div>
			<div class="form-group required pessoa_juridica">
				<label class="col-sm-2 control-label" for="cnpj">CNPJ</label>
				<div class="col-sm-10">
					<input type="text" name="cnpj" value="<?php echo $cnpj; ?>" placeholder="CNPJ" id="cnpj" class="form-control" />
					<?php if ($error_cnpj) { ?>
						<div class="text-danger"><?php echo $error_cnpj; ?></div>
					<?php } ?>
				</div>
			</div>
controller/checkout/register.php
Código: Selecionar todos
			if (isset($this->request->post['cpf'])) {
					$data['cpf'] = $this->request->post['cpf'];
				} else {
					$data['cpf'] = '';
				}
				if (isset($this->request->post['cnpj'])) {
						$data['cnpj'] = $this->request->post['cnpj'];
				} else {
					$data['cnpj'] = '';
				}
				
				if (isset($this->error['cpf'])) {
					$data['error_cpf'] = $this->error['cpf'];
				} else {
					$data['error_cpf'] = '';
				}
						
				if (isset($this->error['cnpj'])) {
					$data['error_cnpj'] = $this->error['cnpj'];
				} else {
					$data['error_cnpj'] = '';
				}
	
				
				if (isset($this->request->post['pessoa'])&& $this->request->post['pessoa'] == "fisica"){
					if ((strlen(utf8_decode($this->request->post['cpf'])) < 1) || (strlen(utf8_decode($this->request->post['cpf'])) > 14)) {
						$this->error['cpf'] = "O CPF é obrigatório";  
					}elseif (!$this->customer->cpf($this->request->post['cpf'])){
						$this->error['cpf'] = "O CPF é inválido!";  
					}
				}else if (isset($this->request->post['pessoa'])&& $this->request->post['pessoa'] == "juridica"){
					if ((strlen(utf8_decode($this->request->post['cnpj'])) < 1) || (strlen(utf8_decode($this->request->post['cnpj'])) > 18)&&($this->request->post['pessoa'] == "juridica")) {
						$this->error['cnpj'] = "O CNPJ é obrigatório";
					}elseif (!$this->customer->cnpj($this->request->post['cnpj'])){
						$this->error['cnpj'] = "O CNPJ é inválido!";  
					}
				}
No momento que registra pelo checkout ele não valida o CPF e também permite que ele seja registrado nulo.

Alguém poderia me ajudar?


Obrigado!

Bom vou deduzir que você realmente deseja suporte para a versão 2.x do opencart pois esse post foi criado no tópico referente a essa versão do opencart, com base nisso vou deduzir também que você esta utilizando a inserção de campos dinâmico da loja e te falo que eles não são validados da forma que você esta fazendo, parece até que você copiou validação de uma loja antiga e esta querendo utilizar na versão 2.x, a forma correta de validar é a abaixo;


if ((strlen(utf8_decode($this->request->post['custom_field']['account']['Aqui o id do campo CPF'])) < 1) || (strlen(utf8_decode($this->request->post['custom_field']['account']['Aqui o id do campo CPF'])) > 14)) {
$this->error['custom_field']['Aqui o id do campo CPF'] = "O CPF é obrigatório";
}