es.mcu.yingo.campos.validadores
Class ValidadorCampoCif

java.lang.Object
  extended by es.mcu.yingo.campos.validadores.ValidadorCampoPermiteVacioAbstracto
      extended by es.mcu.yingo.campos.validadores.ValidadorCampoDocumentosAbstracto
          extended by es.mcu.yingo.campos.validadores.ValidadorCampoCif
All Implemented Interfaces:
ValidadorCampo

public class ValidadorCampoCif
extends ValidadorCampoDocumentosAbstracto

Implementación del interfaz ValidadorCampo que valida que el valor sea de tipo CIF
En caso de que el valor no sea correcto, se devuelve un MensajeI18n con el error

Author:
carlos.garcia.h

Field Summary
private static java.lang.String CIF_REGEXP
          Expresión regular, Letra [A-Z] seguida de 7 dígitos, seguido de letra o dígito
private static java.lang.String CIF_STRING_ASOCIACION
          Letras permitidas del priemr caracter del Cif
private static java.lang.String CIF_STRING_DIGITOCONTROL
          Equivalencia dígito de control.
private static java.lang.String CLAVEERROR_CIF
          Clave de error del campo
 
Fields inherited from class es.mcu.yingo.campos.validadores.ValidadorCampoDocumentosAbstracto
CLAVEERROR_NIF, LETRA_REGEXP, NIF_STRING_ASOCIACION, NUMERO_REGEXP
 
Fields inherited from class es.mcu.yingo.campos.validadores.ValidadorCampoPermiteVacioAbstracto
logger
 
Constructor Summary
ValidadorCampoCif()
           
 
Method Summary
private  int calculoImpar(int numero)
          Realiza el cáculo de los digitos impares del cif el cáculo es el siguiente: Para cada uno de los dígitos de la posiciones impares, multiplicarlo por 2 y sumar los dígitos del resultado.
 MensajeI18n validaCampo(java.lang.Object valor)
          Valida que tenga el formato correcto de un CIF correcto.
private  MensajeI18n validarCif(java.lang.String cifNif)
          Valida el formato correcto de un Cif
private  MensajeI18n validarCifLetra(java.lang.String cifNif)
          Valida que la letra de inicio sea una de las permitidas:
A.
private  MensajeI18n validarCifNumero(java.lang.String cifNif)
          Valida el número del Cif el calculo es el siguiente:
1.
private  MensajeI18n validarDigitoControl(java.lang.String cifNif, int digitoControl)
          Valida que el dígito de control sea igual que el último número del Cif, o su equivalencia en la cadena CIF_STRING_DIGITOCONTROL
 
Methods inherited from class es.mcu.yingo.campos.validadores.ValidadorCampoDocumentosAbstracto
obtenerLetras, obtenerNumeros, validarNif
 
Methods inherited from class es.mcu.yingo.campos.validadores.ValidadorCampoPermiteVacioAbstracto
valida
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLAVEERROR_CIF

private static final java.lang.String CLAVEERROR_CIF
Clave de error del campo

See Also:
Constant Field Values

CIF_REGEXP

private static final java.lang.String CIF_REGEXP
Expresión regular, Letra [A-Z] seguida de 7 dígitos, seguido de letra o dígito

See Also:
Constant Field Values

CIF_STRING_DIGITOCONTROL

private static final java.lang.String CIF_STRING_DIGITOCONTROL
Equivalencia dígito de control. Si el dígito es 0 su equivalencia es 'J'

See Also:
Constant Field Values

CIF_STRING_ASOCIACION

private static final java.lang.String CIF_STRING_ASOCIACION
Letras permitidas del priemr caracter del Cif

See Also:
Constant Field Values
Constructor Detail

ValidadorCampoCif

public ValidadorCampoCif()
Method Detail

validaCampo

public MensajeI18n validaCampo(java.lang.Object valor)
Valida que tenga el formato correcto de un CIF correcto.
Si es valor es nulo se deja pasar la validación.
Se devuelve nulo si se pasa la validación o el error en caso de que no

Specified by:
validaCampo in class ValidadorCampoPermiteVacioAbstracto
Parameters:
valor -
Returns:

calculoImpar

private int calculoImpar(int numero)
Realiza el cáculo de los digitos impares del cif el cáculo es el siguiente: Para cada uno de los dígitos de la posiciones impares, multiplicarlo por 2 y sumar los dígitos del resultado. Ej.: ( 8 * 2 = 16 --> 1 + 6 = 7 ).

Parameters:
numero -
Returns:

validarCifNumero

private MensajeI18n validarCifNumero(java.lang.String cifNif)
Valida el número del Cif el calculo es el siguiente:
1. Sumar los dígitos de la posiciones pares. Suma = A
2. Para cada uno de los dígitos de la posiciones impares, multiplicarlo por 2 y sumar los dígitos del resultado.
Ej.: ( 8 * 2 = 16 --> 1 + 6 = 7 ).
Acumular el resultado. Suma = B.
3. Sumar A + B = C
4. Tomar sólo el dígito de las unidades de C y restárselo a 10. Esta resta nos da D.
5. A partir de D ya se obtiene el dígito de control. Si ha de ser numérico es directamente D y si se trata de una letra se corresponde con la relación:
A = 1, B = 2, C = 3, D = 4, E = 5, F = 6, G = 7, H = 8, I = 9, J = 0

Parameters:
cifNif -
Returns:

validarDigitoControl

private MensajeI18n validarDigitoControl(java.lang.String cifNif,
                                         int digitoControl)
Valida que el dígito de control sea igual que el último número del Cif, o su equivalencia en la cadena CIF_STRING_DIGITOCONTROL

Parameters:
cifNif -
digitoControl -
Returns:

validarCifLetra

private MensajeI18n validarCifLetra(java.lang.String cifNif)
Valida que la letra de inicio sea una de las permitidas:
A. Sociedades anónimas.
B. Sociedades de responsabilidad limitada.
C. Sociedades colectivas.
D. Sociedades comanditarias.
E. Comunidades de bienes.
F. Sociedades cooperativas.
G. Asociaciones y otros tipos de sociedades civiles.
H. Comunidades de propietarios en régimen de propiedad horizontal.
J. Sociedades civiles, con o sin personalidad jurídica.
K. Formato antiguo.
L. Formato antiguo.
M. Formato antiguo.
N. Entidades no residentes.
P. Corporaciones locales.
R. Congregaciones e instituciones religiosas.
Q. Organismos autónomos, estatales o no, y asimilados, y congregaciones e instituciones religiosas.
S. Órganos de la Administración del Estado y comunidades autónomas
U. Uniones Temporales de Empresas.
V. Otros tipos no definidos en el resto de claves.
W. Reservado a establecimientos permanentes de entidades no residentes en el estado español.

Parameters:
cifNif -
Returns:

validarCif

private MensajeI18n validarCif(java.lang.String cifNif)
Valida el formato correcto de un Cif

Parameters:
cifNif -
Returns: