Mudanças entre as edições de "Documentacao CPF/CPNJ no cadastro/edicao de cliente"
Ir para navegação
Ir para pesquisar
Linha 121: | Linha 121: | ||
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); |
Edição das 20h00min de 21 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')) ?>"><?php echo $block->escapeHtml(__('Tax/VAT number')) ?></label>
<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}"' ?>>