Mudanças entre as edições de "Documentacao CPF/CPNJ no cadastro/edicao de cliente"
(Criou página com 'O campo de CPF/CNPJ ja vem por padrao no magento 2, contudo, é necessário habilitá-lo na administracao conforme imagem acima. Perceba que este campo é um varchar sem qualque...') |
|||
(7 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 9: | Linha 9: | ||
Caminho da pagina para insercao da mascara e validacao cpf/cpnj: | Caminho da pagina para insercao da mascara e validacao cpf/cpnj: | ||
<nowiki> | |||
Vendor/magento/module-customer/view/frontend/templates/widget/taxvat.phtml | Vendor/magento/module-customer/view/frontend/templates/widget/taxvat.phtml | ||
</nowiki> | |||
<nowiki> | |||
<?php | <?php | ||
/** | /** | ||
Linha 18: | Linha 19: | ||
* See COPYING.txt for license details. | * See COPYING.txt for license details. | ||
*/ | */ | ||
// @codingStandardsIgnoreFile | // @codingStandardsIgnoreFile | ||
?> | ?> | ||
<script type="text/javascript"> | <script type="text/javascript"> | ||
function fMasc(objeto,mascara) { | function fMasc(objeto,mascara) { | ||
Linha 32: | Linha 30: | ||
obj.value=masc(obj.value) | obj.value=masc(obj.value) | ||
} | } | ||
function cpfCpnj(taxvat){ | function cpfCpnj(taxvat){ | ||
document.getElementById("taxvat-error-cpf-cnpj").innerHTML = ""; | document.getElementById("taxvat-error-cpf-cnpj").innerHTML = ""; | ||
if(taxvat.length >= 16){ | if(taxvat.length >= 16){ | ||
taxvat=taxvat.replace(/\D/g,"") | taxvat=taxvat.replace(/\D/g,"") | ||
Linha 51: | Linha 46: | ||
return taxvat | return taxvat | ||
} | } | ||
} | } | ||
function verificaValidadeDoCpf(strCPF) { | function verificaValidadeDoCpf(strCPF) { | ||
strCPF = retiraPontuacaoEBarra(strCPF); | strCPF = retiraPontuacaoEBarra(strCPF); | ||
var Soma; | var Soma; | ||
var Resto; | var Resto; | ||
Soma = 0; | Soma = 0; | ||
if (strCPF == "00000000000") return false; | if (strCPF == "00000000000") return false; | ||
for (i=1; i<=9; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (11 - i); | for (i=1; i<=9; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (11 - i); | ||
Resto = (Soma * 10) % 11; | Resto = (Soma * 10) % 11; | ||
if ((Resto == 10) || (Resto == 11)) Resto = 0; | if ((Resto == 10) || (Resto == 11)) Resto = 0; | ||
if (Resto != parseInt(strCPF.substring(9, 10)) ) return false; | if (Resto != parseInt(strCPF.substring(9, 10)) ) return false; | ||
Soma = 0; | Soma = 0; | ||
for (i = 1; i <= 10; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (12 - i); | for (i = 1; i <= 10; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (12 - i); | ||
Resto = (Soma * 10) % 11; | Resto = (Soma * 10) % 11; | ||
if ((Resto == 10) || (Resto == 11)) Resto = 0; | if ((Resto == 10) || (Resto == 11)) Resto = 0; | ||
if (Resto != parseInt(strCPF.substring(10, 11) ) ) return false; | if (Resto != parseInt(strCPF.substring(10, 11) ) ) return false; | ||
return true; | return true; | ||
} | } | ||
function verificaValidadeDoCnpj(cnpj) { | function verificaValidadeDoCnpj(cnpj) { | ||
cnpj = retiraPontuacaoEBarra(cnpj); | cnpj = retiraPontuacaoEBarra(cnpj); | ||
cnpj = cnpj.replace(/[^\d]+/g,''); | cnpj = cnpj.replace(/[^\d]+/g,''); | ||
if(cnpj == '') return false; | if(cnpj == '') return false; | ||
if (cnpj.length != 14) | if (cnpj.length != 14) | ||
return false; | return false; | ||
// Elimina CNPJs invalidos conhecidos | // Elimina CNPJs invalidos conhecidos | ||
if (cnpj == "00000000000000" || | if (cnpj == "00000000000000" || | ||
Linha 101: | Linha 82: | ||
cnpj == "99999999999999") | cnpj == "99999999999999") | ||
return false; | return false; | ||
// Valida DVs | // Valida DVs | ||
tamanho = cnpj.length - 2 | tamanho = cnpj.length - 2 | ||
Linha 116: | Linha 96: | ||
if (resultado != digitos.charAt(0)) | if (resultado != digitos.charAt(0)) | ||
return false; | return false; | ||
tamanho = tamanho + 1; | tamanho = tamanho + 1; | ||
numeros = cnpj.substring(0,tamanho); | numeros = cnpj.substring(0,tamanho); | ||
Linha 129: | Linha 108: | ||
if (resultado != digitos.charAt(1)) | if (resultado != digitos.charAt(1)) | ||
return false; | return false; | ||
return true; | return true; | ||
} | } | ||
function retiraPontuacaoEBarra(str){ | function retiraPontuacaoEBarra(str){ | ||
str = str.trim(); | str = str.trim(); | ||
Linha 143: | Linha 119: | ||
return str; | return str; | ||
} | } | ||
function realizaValidacaoTotalDeCpfECpnj(documento){ | function realizaValidacaoTotalDeCpfECpnj(documento){ | ||
return aoRetirarOMouseDoInputTaxVat(documento); | return aoRetirarOMouseDoInputTaxVat(documento); | ||
} | } | ||
function aoRetirarOMouseDoInputTaxVat(documento){ | |||
if(documento.length <= 14){ | |||
if(!verificaValidadeDoCpf(documento)){ | |||
document.getElementById("taxvat-error-cpf-cnpj").innerText = "CPF inválido"; | |||
return false; | |||
}else{ | |||
return true; | |||
} | |||
} | |||
else{ | |||
if(!verificaValidadeDoCnpj(documento)){ | |||
document.getElementById("taxvat-error-cpf-cnpj").innerText = "CNPJ inválido"; | |||
return false; | |||
}else{ | |||
return true; | |||
} | |||
} | |||
} | |||
function validacaoFinal(){ | function validacaoFinal(){ | ||
return aoRetirarOMouseDoInputTaxVat(document.getElementById('taxvat').value); | return aoRetirarOMouseDoInputTaxVat(document.getElementById('taxvat').value); | ||
} | } | ||
</script> | </script> | ||
<div class="field taxvat<?php if ($block->isRequired()) echo ' required'; ?>"> | <div class="field taxvat<?php if ($block->isRequired()) echo ' required'; ?>"> | ||
<label class="label" for="<?php echo $this->helper(\Magento\Framework\EscapeHelper::class)->escapeHtmlAttr($block->getFieldId('taxvat')) ?>"><span><?php echo $block->escapeHtml(__('Tax/VAT number')) ?></span></label> | <label class="label" for="<?php echo $this->helper(\Magento\Framework\EscapeHelper::class)->escapeHtmlAttr($block->getFieldId('taxvat')) ?>"><span><?php echo $block->escapeHtml(__('Tax/VAT number')) ?></span></label> | ||
Linha 184: | Linha 154: | ||
</div> | </div> | ||
</div> | </div> | ||
</nowiki> | |||
Vá até | |||
<nowiki> | |||
vendor/experius/module-addresslines/view/frontend/templates/expirius/customer/form/register.phtml | |||
</nowiki> | |||
No form: | |||
<nowiki> | |||
<form class="form create account form-create-account" action="<?php /* @escapeNotVerified */ echo $block->getPostActionUrl() ?>" method="post" id="form-validate" enctype="multipart/form-data" autocomplete="off" onsubmit="return validacaoFinal();"> | |||
</nowiki> | |||
adicione conforma acima o codigo dentro da tag | |||
<nowiki> | |||
onsubmit="return validacaoFinal();" | |||
</nowiki> | |||
'''NOTA: ISTO PARA CADASTRAR O CLIENTE.''' | |||
'''NO CASO DA EDICAO DEVEMOS INSERIR O CODIGO ACIMA NO FORMULARIO DA EDICAO''' | |||
Vá em: | |||
<nowiki> | |||
vendor/magento/module-customer/view/frontend/templates/form/edit.phtml | |||
</nowiki> | |||
Adicione novamente o onsubmit no respectivo formulario e ficara como segur: | |||
<nowiki> | |||
... | |||
<form class="form form-edit-account" action="<?php echo $block->escapeUrl($block->getUrl('customer/account/editPost')) ?>" method="post" id="form-validate" enctype="multipart/form-data" data-hasrequired="<?php echo $this->helper(\Magento\Framework\EscapeHelper::class)- | |||
>escapeHtmlAttr(__('* Required Fields')) ?>" autocomplete="off" onsubmit="return validacaoFinal();"> | |||
... | |||
</nowiki> | |||
Também é necessário colocar uma identidade(id) nos botoes de submissao do formulario de cadastro e no formulario de edicao no painel dos clientes. | |||
As paginas que contem o botao sao: | |||
<nowiki> | |||
Vendor/experius/module-addresslines/view/frontend/templates/experius/customer/form/register.phtml | |||
</nowiki> | |||
e | |||
<nowiki> | |||
Vendor/magento/module-customer/view/frontend/templates/form/edit.phtml | |||
</nowiki> | |||
ID DO BOTAO: botao-criar-conta |
Edição atual tal como às 12h20min de 22 de fevereiro de 2018
O campo de CPF/CNPJ ja vem por padrao no magento 2, contudo, é necessário habilitá-lo na administracao conforme imagem acima.
Perceba que este campo é um varchar sem qualquer validacao, sendo assim é necessário a insercao de uma máscara e uma validacao completa CPF/CNPJ.
O código principal da validacao é
Note que tambem foi adicionada uma div para insercao da mensagem de erro, esta, chamada de taxvat-error-cpf-cnpj
Caminho da pagina para insercao da mascara e validacao cpf/cpnj:
Vendor/magento/module-customer/view/frontend/templates/widget/taxvat.phtml
<?php /** * Copyright © 2013-2017 Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ // @codingStandardsIgnoreFile ?> <script type="text/javascript"> function fMasc(objeto,mascara) { obj=objeto masc=mascara setTimeout("fMascEx()",1) } function fMascEx() { obj.value=masc(obj.value) } function cpfCpnj(taxvat){ document.getElementById("taxvat-error-cpf-cnpj").innerHTML = ""; if(taxvat.length >= 16){ taxvat=taxvat.replace(/\D/g,"") taxvat=taxvat.replace(/^(\d{2})(\d)/,"$1.$2") taxvat=taxvat.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") taxvat=taxvat.replace(/\.(\d{3})(\d)/,".$1/$2") taxvat=taxvat.replace(/(\d{4})(\d)/,"$1-$2") return taxvat }else{ taxvat=taxvat.replace(/\D/g,"") taxvat=taxvat.replace(/(\d{3})(\d)/,"$1.$2") taxvat=taxvat.replace(/(\d{3})(\d)/,"$1.$2") taxvat=taxvat.replace(/(\d{3})(\d{1,2})$/,"$1-$2") return taxvat } } function verificaValidadeDoCpf(strCPF) { strCPF = retiraPontuacaoEBarra(strCPF); var Soma; var Resto; Soma = 0; if (strCPF == "00000000000") return false; for (i=1; i<=9; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (11 - i); Resto = (Soma * 10) % 11; if ((Resto == 10) || (Resto == 11)) Resto = 0; if (Resto != parseInt(strCPF.substring(9, 10)) ) return false; Soma = 0; for (i = 1; i <= 10; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (12 - i); Resto = (Soma * 10) % 11; if ((Resto == 10) || (Resto == 11)) Resto = 0; if (Resto != parseInt(strCPF.substring(10, 11) ) ) return false; return true; } function verificaValidadeDoCnpj(cnpj) { cnpj = retiraPontuacaoEBarra(cnpj); cnpj = cnpj.replace(/[^\d]+/g,''); if(cnpj == '') return false; if (cnpj.length != 14) return false; // Elimina CNPJs invalidos conhecidos if (cnpj == "00000000000000" || cnpj == "11111111111111" || cnpj == "22222222222222" || cnpj == "33333333333333" || cnpj == "44444444444444" || cnpj == "55555555555555" || cnpj == "66666666666666" || cnpj == "77777777777777" || cnpj == "88888888888888" || cnpj == "99999999999999") return false; // Valida DVs tamanho = cnpj.length - 2 numeros = cnpj.substring(0,tamanho); digitos = cnpj.substring(tamanho); soma = 0; pos = tamanho - 7; for (i = tamanho; i >= 1; i--) { soma += numeros.charAt(tamanho - i) * pos--; if (pos < 2) pos = 9; } resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; if (resultado != digitos.charAt(0)) return false; tamanho = tamanho + 1; numeros = cnpj.substring(0,tamanho); soma = 0; pos = tamanho - 7; for (i = tamanho; i >= 1; i--) { soma += numeros.charAt(tamanho - i) * pos--; if (pos < 2) pos = 9; } resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; if (resultado != digitos.charAt(1)) return false; return true; } function retiraPontuacaoEBarra(str){ str = str.trim(); for(var i =0; i<str.length; i++){ str = str.replace('/',''); str = str.replace('.',''); str = str.replace('-',''); } return str; } function realizaValidacaoTotalDeCpfECpnj(documento){ return aoRetirarOMouseDoInputTaxVat(documento); } function aoRetirarOMouseDoInputTaxVat(documento){ if(documento.length <= 14){ if(!verificaValidadeDoCpf(documento)){ document.getElementById("taxvat-error-cpf-cnpj").innerText = "CPF inválido"; return false; }else{ return true; } } else{ if(!verificaValidadeDoCnpj(documento)){ document.getElementById("taxvat-error-cpf-cnpj").innerText = "CNPJ inválido"; return false; }else{ return true; } } } function validacaoFinal(){ return aoRetirarOMouseDoInputTaxVat(document.getElementById('taxvat').value); } </script> <div class="field taxvat<?php if ($block->isRequired()) echo ' required'; ?>"> <label class="label" for="<?php echo $this->helper(\Magento\Framework\EscapeHelper::class)->escapeHtmlAttr($block->getFieldId('taxvat')) ?>"><span><?php echo $block->escapeHtml(__('Tax/VAT number')) ?></span></label> <div class="control"> <input onblur="realizaValidacaoTotalDeCpfECpnj(this.value)" onkeydown="javascript: fMasc( this, cpfCpnj );" maxlength="18" type="text" id="<?php echo $this->helper(\Magento\Framework\EscapeHelper::class)->escapeHtmlAttr($block->getFieldId('taxvat')) ?>" name="<?php echo $this- >helper(\Magento\Framework\EscapeHelper::class)->escapeHtmlAttr($block->getFieldName('taxvat')) ?>" value="<?php echo $this->helper(\Magento\Framework\EscapeHelper::class)->escapeHtmlAttr($block->getTaxvat()) ?>" title="<?php echo $this- >helper(\Magento\Framework\EscapeHelper::class)->escapeHtmlAttr(__('Tax/VAT number')) ?>" class="input-text <?php echo $this->helper(\Magento\Framework\EscapeHelper::class)->escapeHtmlAttr($this->helper(\Magento\Customer\Helper\Address::class)->getAttributeValidationClass('taxvat')) ?>" <?php if ($block->isRequired()) echo ' data-validate="{required:true}"' ?>> <div for="taxvat" generated="true" class="mage-error-cpf-cnpj" id="taxvat-error-cpf-cnpj"></div> </div> </div>
Vá até
vendor/experius/module-addresslines/view/frontend/templates/expirius/customer/form/register.phtml
No form:
<form class="form create account form-create-account" action="<?php /* @escapeNotVerified */ echo $block->getPostActionUrl() ?>" method="post" id="form-validate" enctype="multipart/form-data" autocomplete="off" onsubmit="return validacaoFinal();">
adicione conforma acima o codigo dentro da tag
onsubmit="return validacaoFinal();"
NOTA: ISTO PARA CADASTRAR O CLIENTE.
NO CASO DA EDICAO DEVEMOS INSERIR O CODIGO ACIMA NO FORMULARIO DA EDICAO
Vá em:
vendor/magento/module-customer/view/frontend/templates/form/edit.phtml
Adicione novamente o onsubmit no respectivo formulario e ficara como segur:
... <form class="form form-edit-account" action="<?php echo $block->escapeUrl($block->getUrl('customer/account/editPost')) ?>" method="post" id="form-validate" enctype="multipart/form-data" data-hasrequired="<?php echo $this->helper(\Magento\Framework\EscapeHelper::class)- >escapeHtmlAttr(__('* Required Fields')) ?>" autocomplete="off" onsubmit="return validacaoFinal();"> ...
Também é necessário colocar uma identidade(id) nos botoes de submissao do formulario de cadastro e no formulario de edicao no painel dos clientes. As paginas que contem o botao sao:
Vendor/experius/module-addresslines/view/frontend/templates/experius/customer/form/register.phtml
e
Vendor/magento/module-customer/view/frontend/templates/form/edit.phtml
ID DO BOTAO: botao-criar-conta