En algunas versiones de Prestashop 1.6 cuando un usuario intenta realizar un pedido como invitado, aunque meta su DNI, le aparece este mensaje “El número de identificación es incorrecto o ya ha sido utilizado”. En este post os explicamos cómo soluconarlo en vuestra tienda online.

¿Cuándo podéis tener este problema? 

Cuando queréis que se pida el DNI de forma obligatoria y queréis que se puedan realizar pedidos como invitado. Por tanto:

– En Localización > Países, en la configuración de vuestro país “¿Necesita el número de identificación fiscal?” a SÍ, haciendo que se solicite el DNI de forma obligatoria.
– Tenéis activado en Preferencias > Pedidos “Activar el pedido express para cuentas de invitado” a SÍ.

¿Dónde está el problema?
Generalmente, cuando un usuario se registra e introduce su DNI no aparece ningún error, pero cuando pretende hacer el pedido como invitado, aunque introduzca un DNI y correcto, se muestra este error:

El número de identificación es incorrecto o ya ha sido utilizado

¿Cómo solucionarlo?
1.- Vamos a la carpeta “controllers” y copiamos el archivo AuthController.php
2.- Pegamos el archivo en la carpeta “override/controllers
3.- Editamos el archivo en esta última carpeta

Buscamos la línea

if
($country->need_identification_number &&
(!Tools::getValue(‘dni’) ||
!Validate::isDniLite(Tools::getValue(‘dni’))))

y la sustituimos por esta otra:

//if
($country->need_identification_number &&
(!Tools::getValue(‘dni’) ||
!Validate::isDniLite(Tools::getValue(‘dni’))))
if (!Validate::isDniLite(Tools::getValue(‘dni’)))

s en nuestro archivo, sustituiremos todas las apariciones de “dni_invoice” por “dni”.

4.- Como queremos que el DNI sea obligatorio, nos aseguraremos de que están bien configurados estos parámetros:

a) En Clientes > Direcciones, hay un botón, al final de la sección, en el que pone “Establezca los campos obligatorios para esta sección”. Haremos clic y seleccionaremos el campo “dni”. Guardaremos cambios.

b) En Localización > Países, nos iremos al país que estemos configurando y en “Formato de dirección” nos aseguraremos de que, en la caja de texto, esté el campo dni. Si no es así, lo incluiremos.

5.- Iremos a Parámetros avanzados > Rendimiento y en “Caché de plantillas” pondremos “Forzar compilación”. Guardaremos cambios.
Después, haremos clic sobre el botón “Vaciar el caché” de la esquina superior derecha de esa misma sección.

6.- Una vez hecho esto, podemos volver a poner el valor de Caché de plantillas que tuviésemos puesto antes (generalmente “Recompilar las plantillas cuando los archivos sean modificados”).

Y esto es todo, vuestro problema debería estar solucionado. Si no es así, dependiendo de la versión de Prestashop, puede que tengáis que hacer otro cambio en vuestra plantilla:

Y esto es todo, vuestro problema debería estar solucionado. Si no es así, dependiendo de la versión de Prestashop, puede que tengáis que hacer otro cambio en vuestra plantilla:

1.- Tendréis que hacer una copia de este archivo
 templates/nombre_de_vuestra_plantilla/authentication.tpl
por si algo va mal, poder restaurarlo.

2.- Editar ese archivo (el original)
buscaremos estas líneas

{l s=’DNI / NIF / NIE’}

y las sustituiremos por estas otras:

{l s=’DNI / NIF / NIE’}

2.- Hayamos encontrado o no esas líneas en nuestro archivo, sustituiremos todas las apariciones de “dni_invoice” por “dni”.