Cuando activamos el módulo B2B de prestashop en el formulario de alta de los clientes tipo empresa hay unos datos que nos pide rellenar cuando un cliente quiere inscribirse, se trata del código SIRET y del código APE. Son campos del sistema francés de identificación fiscal y se corresponden en principio en España con el CIF y CNAE.
Para adaptar mejor el formulario a nuestra página en castellano, realizaremos dos cosas:
1.- Cambiar la traducción de los textos para estos campos:
Para ello nos vamos a LOCALIZACIÓN -> Traducciones y cambiamos la traducción en estos dos sitios:
- Traducciones del panel de administración, grupo AdminCustomer
- Traducciones del Front Office, grupo Authentication-create-account
SIRET = CIF/NIF
APE = CNAE
2.- Modificar las comprobaciones de los campos SIRET y APE:
Ahora debemos modificar las comprobaciones del modulo puesto que el SIRET exige una longitud fija de 14 caracteres de forma obligatoria, esta restricción no nos sirve para el CIF por lo que hay que modificar esta validación por otra que permita numeros y letras sólamente y sin longitud fija.
Nos vamos a nuestro servidor y editamos el fichero /classes/validate.php modificando la function isSiret (aprox. sobre la linea 1034):
/**
* Validate SIRET Code
* @static
* @param $siret SIRET Code
* @return boolean Return true if is valid
*/
publicstaticfunction isSiret($siret)
{
/* CODIGO ORIGINAL QUE VAMOS A COMENTAR PARA EVITAR LA VALIDACION DEL CODIGO SIRET DE FRANCIA (14 DIGITOS EXACTOS)
EN ESPANA CORRESPONDE AL CODIGO CIF/NIF PARA PERSONAS JURIDICAS O FISICAS
LA NUEVA VALIDACION SERAN DIGITOS Y LETRAS SIN RESTRICCIONES
if (Tools::strlen($siret) != 14)
return false;
$sum = 0;
for ($i = 0; $i != 14; $i++)
{
$tmp = ((($i + 1) % 2) + 1) * intval($siret[$i]);
if ($tmp >= 10)
$tmp -= 9;
$sum += $tmp;
}
return ($sum % 10 === 0);
FIN DEL CODIGO A COMENTAR PARA LA VALIDACION DEL CODIGO SIRET DE FRANCIA
A CONTINUACION ES NECESARIO AGREGAR UNA LINEA PARA QUE DEVUELVA UN VALOR A LA FUNCION DE VALIDACION SIRET
YA QUE HEMOS COMENTADO LA LINEA return ($sum % 10 === 0); ASI QUE LA CAMBIAMOS Y AGREGAMOS LA SIGUIENTE LINEA: */
return preg_match(‘/^[+0-9.()-]*$/’,$number);
}
Como se puede apreciar se ha comentado el código la restricción de validación original, en vez de borrarlo, por si se quiere consultar alguna vez. En su lugar agregamos la última linea “return” con una validación mucho menos restrictiva, números y letras sin longitud fija.
A continuación modificamos la function isApe (justo debajo de lo anterior):
/**
* Validate APE Code
* @static
* @param $ape APE Code
* @return boolean Return true if is valid
*/
public static function isApe($ape)
{
/* VALIDACION DEL CODIGO APE ORIGINAL (COMENTAR QUE LA VARIABLE TIENE UN LIMITE MAXIMO DE 5 CARACTERES NUMERICOS ESTABLECIDA EN BASE DE DATOS)
return (bool)preg_match(‘/^[0-9]{3,4}[a-zA-Z]{1}$/s’, $ape);
FIN DE VALIDACION DE CODIGO APE ORIGINAL. A CONTINUACION SUSTITUIMOS POR LA SIGUIENTE LINEA: */
return (bool)preg_match(‘/^[+0-9.()-]*$/’, $ape);
}
* Validate APE Code
* @static
* @param $ape APE Code
* @return boolean Return true if is valid
*/
{
/* VALIDACION DEL CODIGO APE ORIGINAL (COMENTAR QUE LA VARIABLE TIENE UN LIMITE MAXIMO DE 5 CARACTERES NUMERICOS ESTABLECIDA EN BASE DE DATOS)
return (bool)preg_match(‘/^[0-9]{3,4}[a-zA-Z]{1}$/s’, $ape);
FIN DE VALIDACION DE CODIGO APE ORIGINAL. A CONTINUACION SUSTITUIMOS POR LA SIGUIENTE LINEA: */
return (bool)preg_match(‘/^[+0-9.()-]*$/’, $ape);
}





