Insertar en las Cuentas y Contactos una función que calcule la letra del DNI

Aquí dejo el código que he utilizado para poner la letra al DNI/NIF/NIE en un campo habilitado para ello en Cuentas y contactos.

function letradni(){
  $("#docidentidad_c").attr("onBlur","digitocontrol();");
}

function preparar_numero(){
   var digitos = document.getElementById("docidentidad_c").value;
   var dni = primer_digito(digitos)[1] + digitos.substring(1);
   return dni;
}

function digitocontrol(){
   var digitos = preparar_numero();
   var numero = parseInt(digitos);
   var resto = numero % 23;
   var letra = ['T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E'];
   document.getElementById('docidentidad_c').value = dni(numero.toString()) + letra[resto];
}

function dni(valor){
   var tipo_identidad = document.getElementById('cif_c').value;
   var digitos = document.getElementById("docidentidad_c").value;
   var dig1 = primer_digito(digitos);
   dig1 = dig1[0];
   switch(tipo_identidad) {
     case 'NIE':
       if (dig1 != 'X' && dig1 != 'Y' && dig1 != 'Z') {
         alert('NIE Incorrecto. Corríjalo');
       } else {
         digitos = dig1 + '0'.repeat(7-valor.toString().length) + valor;
       }
       break;
     case 'NIF':
       var digitos = "0".repeat(8-valor.toString().length) + valor;
       break;
     case 'DNI':
       var digitos = "0".repeat(8-valor.toString().length) + valor;
       break;
     default:
       var digitos = dig1 + valor;

   }   
   return digitos;
}


function primer_digito(digitos){
  switch(digitos.charAt(0)) {
      case 'X':
         dig1=['X', '0'];
         break;
      case 'Y':
         dig1=['Y', '1'];
         break;
      case 'Z':
         dig1=['Z', '2'];
         break;
      default:
         dig1=[digitos.charAt(0), digitos.charAt(0)];
  }
  return dig1;
}

Hola como agregas ese código podrías explicarnos un poco más
Saludos!

Lo primero es crear dos campos en Accounts, o en Contacts:

  • Un campo de lista que contenga NIF, DNI,CIF,NIE,PAS
  • Y un campo de texto para introducir el DNI/NIE/NIF/CIF
    Y si lo quieres implementar en el código de la vista de edición sólo tienes que añadir el fichero editviewdefs.php correspondiente:


‘field’ => ‘30’,
),
),
‘includes’ => <------- Aquí empieza el código a introducir
array (
0 =>
array (
‘file’ => ‘custom/js/letra_dni.js’,
),
),
‘javascript’ => ’
{literal}

{/literal}
', <----------------- Aquí termina el código a introducir
‘useTabs’ => false,
‘tabDefs’ =>

Saludos