Error en registro
 
Avisos
Vaciar todo

Error en registro

7 Respuestas
3 Usuarios
0 Reactions
538 Visitas
Jaime
Respuestas: 86
Trusted Member
Topic starter
 

Hola,
Tengo un problema con la comprobación del dato de SIRET (CIF) en el registro. Si se pone el CIF español da error. He probado unas cuantas soluciones de las que se encuentran en foros, incluido este, pero me deja inaccesible la web. Ya no sé qué hacer. Es posible eliminar esa comprobación? Cómo?
V Prestashop 1.6.1.4
Muchas gracias

URL del sitio: Contenido solo visible a usuarios registrados


 
Respondido : 26/02/2017 8:58 pm
Pepe
 Pepe
Respuestas: 41121
Illustrious Member Admin
 

Hola Jaime, Buenos Días.

Estos datos aparecen cuando se activa el modulo B2B de prestashop en el formulario de alta de los clientes.

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 quitar esa validación modificando las comprobaciones.

.- Accede al archivo validate.php que encontraras en classes/validate.php
.- Busca la siguiente linea:

/**
     * Validate SIRET Code
     *
     * @param string $siret SIRET Code
     * @return bool Return true if is valid
     */
    public static function isSiret($siret)
    {
        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);
    }

La intención es dejar ese código comentado para que no tenga en cuenta la validación.

.- Molificado por el siguiente:

/**
     * Validate SIRET Code
     *
     * @param string $siret SIRET Code
     * @return bool Return true if is valid

    public static function isSiret($siret)
    {
        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);
    }
     */

Lo que hemos realizado es dejar todo ese bloque de código como si fuera un comentario y que no tenga ningún efecto.

Espero que esta información sirva 😉

Cualquier consulta sobre lo que estamos tratando no dudes en ponerte en contacto con nosotros.

Un saludo


 
Respondido : 27/02/2017 12:55 pm
Jaime
Respuestas: 86
Trusted Member
Topic starter
 

Es que al hacer eso, cuando intento registrarme, se me cae la web. Es como si hubiese una llamada en algún sitio que provoca la caida. Pero no tengo ni idea.
Saludos
Jaime


 
Respondido : 27/02/2017 5:12 pm
Jhon
 Jhon
Respuestas: 44989
Illustrious Member Moderator
 

Hola

Envíanos el archivo que has modificado, puedes enviarlo como adjunto en un .zip
Me parece raro que esa modificación te cuase ese problema.

Si no modificas eso puedes loguearte normal?

Saludos.


 
Respondido : 27/02/2017 10:36 pm
Jaime
Respuestas: 86
Trusted Member
Topic starter
 

Si no modifico eso e intento introducir un CIF o un CNAE me da error de validación. He desactivado de momento la opción B2B porque ya van varios clientes que tienen el problema. Si no ponen esos datos se pueden registrar sin problemas. Adjunto el zip. Da igual el cambio que haga que se me cuelga la web: comentar toda la validación o poner otra validación.
Muchas gracias


 
Respondido : 27/02/2017 10:46 pm
Jhon
 Jhon
Respuestas: 44989
Illustrious Member Moderator
 

Hola

Prueba comentando sólo el contenido de la función pero al final antes de cerrar la función retorna true, es decir

public static function isSiret($siret)
    {
      // 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 true;
   }

Saludos


 
Respondido : 27/02/2017 11:46 pm
Jaime
Respuestas: 86
Trusted Member
Topic starter
 

Fenómeno, funciona!!!!
Muchas gracias!!


 
Respondido : 28/02/2017 10:39 am