Jump to content

*Solucionado*Error en registro clientes con B2B activado prestashop 1.7


Recommended Posts

SOLUCIONADO!!

No se si soy yo o es un bug de prestashop1.7.0.5

El caso es que si activo el modo B2B cuando un cliente se va ha registrar siempre da error en el campo dni/cif lo pongo con letra, sin letra, con guión sin guión en mayusculas, minusculas y nada.

Alguien podría comprobarlo.

O indicarme en que archivo realiza la comprobación.

Gracias de antemano.

post-391939-0-91665000-1489407530_thumb.jpg

Edited by presiculebras (see edit history)
Link to comment
Share on other sites

  • 1 month later...
  • 4 weeks later...
  • 4 weeks later...

Bueno encontre la solución hace un tiempo y se me olvidó comentarla.

Hay va. prestashop es francés y ellos usan el código SIRET  que es el equivalente a nuestro CIF/DNI

 

Vamos al fichero en nuestra carpeta de instalación de prestashop en el principal classes/validate.php a la function isSiret (esta sobre la linea 1034)

habrimos el archivo con un editor de texto o con notepad++(gratuito e indispensable si nos dedicamos a tocar archivos o modificar bases de datos, y cualquier archivo que contenga código o texto, si no lo teneis herramienta crucial para trabajar)

en buscar ponemos SIRET y nos localiza la función concreta.

para comentar /** la función y */ se nos pone en verde (eso es que esta comentado) y añadimos la última linea que nos deja meter un código de 9 digitos, 8+una letra, una letra y 8 digitos.

No comprueba si es correcta la letra. para eso tendriamos que escribir una función más compleja, pero nos coje el dni.

Debe quedar el archivo asin

 

     /**

     * Validate SIRET Code

     * @static

     * @param $siret SIRET Code

     * @return boolean Return
true if is valid

     */

    publicstaticfunction isSiret($siret)

    {

        /*
Codigo original comentado

        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);
*/

        return preg_match(‘/^[+0-9. ()-]*$/’,$number);

    }

Comentaremos el código de validación original, lo podemos borrar pero así lo tendremos si queremos consultarlo alguna vez, e incluimos una validación mucho menos restrictiva.

 

guardamos, forzamos compilación en parametros avanzados >> rendimiento >> forzar compilación.

Vamos a parametros de la tienda>>ajustes sobre clientes>> activar modo B2B

 

Despues vamos a traducciones buscamos SIRET  y lo traducimos como DNI/CIF.

El campo DNI/Cif debe salir en el registro y ya es compatible con los datos españoles.

En realidad estamos introduciendo el SIRET francés a la española pero nos funciona.

Saludos y si os he ayudado. Un like.

Link to comment
Share on other sites

si se te va a blanco activa modo depuración en parametros avanzados rendimiento, en vez de ir a blanco te dira porque se va a blanco, realmente funciona, debes tener algún parametro mal configurado y el modo depuración te ayudara.

Envia copia del error e intentare ayudarte.

Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...