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.

dni prestashop

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».