Jump to content

Problema al guardar DNI en el campo Siret desde Back Office


ferran.herrero

Recommended Posts

Hola a todos!

 

Comento mi situación: Hace unos meses instalé prestashop 1.7.6 para crear mi tienda online. Después de realizar las configuraciones, activé el modo B2B y traducí los campos SIRET y APE a DNI y CNAE (datos fiscales en España) e importé los datos de mis clientes.

 

Hasta aquí todo funciona correctamente, el problema viene cuando quiero modificar cualquier campo del cliente, ya que Prestashop detecta el DNI como inválido y no puedo guardar cualquier dato que haya cambiado en la ficha de cliente.

 

Tras visitar varios posts en diferentes foros, he anulado el validador que se encuentra dentro de Classes/Validate.php devolviendo true al final de las funciones isSiret y isApe:

/**
     * Validate SIRET Code.
     *
     * @param string $siret SIRET Code
     *
     * @return bool Return true if is valid
     */
    public static function isSiret($siret)
    {
        return true;
    }

    /**
     * Validate APE Code.
     *
     * @param string $ape APE Code
     *
     * @return bool Return true if is valid
     */
    public static function isApe($ape)
    {
        return (bool) preg_match('/^[+0-9. ()-]*$/', $ape);
    }

Esto lamentablemente, no solucionó mi problema, así que encontré este POST:

https://www.prestashop.com/forums/topic/350955-property-customer-siret-is-not-valid/

 

En el que borran y regeneran los campos en la tabla de clientes de prestashop. También he realizado este paso, y sigo teniendo el problema.

 

No se a qué se debe este problema y como solucionarlo, pero necesito poder guardar estos datos para sincronizar mi ERP con prestashop.

Dejo adjunta una imagen con un cliente real para que veáis a que me refiero.

 

Gracias de antemano, toda la ayuda es bienvenida.

 

¡Feliz año nuevo!

Captura.PNG

Link to comment
Share on other sites

  • 4 weeks later...

En la Class de customer.php, el siret lo tiene como generic name, prueba a cambiarlo a isString

 'siret' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'),

-->

 'siret' => array('type' => self::TYPE_STRING, 'validate' => 'isString'),

 

Recuerda que cualquier actualización lo perderas. 

Edited by gusman126 (see edit history)
  • Thanks 1
Link to comment
Share on other sites

19 hours ago, gusman126 said:

En la Class de customer.php, el siret lo tiene como generic name, prueba a cambiarlo a isString

 'siret' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'),

-->

 'siret' => array('type' => self::TYPE_STRING, 'validate' => 'isString'),

 

Recuerda que cualquier actualización lo perderas. 

Buenos días,

 

muchas gracias, pero lamentablemente este cambio no ha resuelto mi problema...

 

Después de cambiar a isString y limpiar la caché del servidor, al intentar guardar cualquier modificación de un cliente o crear uno nuevo desde el back office, me sigue saliendo la misma advertencia, el cual impide hacer un insert/update del cliente.

¿Alguna otra sugerencia?

 

Captura.PNG

Link to comment
Share on other sites

Buenas Ferran, llevaba mucho tiempo con este problema y esta misma tarde se me ocurrió probar a actualizar la versión de prestashop a la 1.7.6.3

Parece que ya han solucionado el problema, ahora mismo me deja modificar desde el Back Office a mis clientes y poder agregar un NIF o DNI español sin problema.

También tengo como tú, el archivo validate.php modificado

 

public static function isSiret($siret)
    {

       return true;
    }

    /**
     * Validate APE Code.
     *
     * @param string $ape APE Code
     *
     * @return bool Return true if is valid
     */
    public static function isApe($ape)
    {      
        return true;
    }

 

Espero que te ayude, un saludo.

Link to comment
Share on other sites

On 1/31/2020 at 8:28 PM, talla7 said:

Buenas Ferran, llevaba mucho tiempo con este problema y esta misma tarde se me ocurrió probar a actualizar la versión de prestashop a la 1.7.6.3

Parece que ya han solucionado el problema, ahora mismo me deja modificar desde el Back Office a mis clientes y poder agregar un NIF o DNI español sin problema.

También tengo como tú, el archivo validate.php modificado

 

public static function isSiret($siret)
    {

       return true;
    }

    /**
     * Validate APE Code.
     *
     * @param string $ape APE Code
     *
     * @return bool Return true if is valid
     */
    public static function isApe($ape)
    {      
        return true;
    }

 

Espero que te ayude, un saludo.

Buenos días @talla7! Gracias por tu respuesta.

La verdad es que no he querido actualizar a la 1.7.6.3 porque hemos hecho modificaciones de algunas clases para adaptar PrestaShop a la empresa (soy consciente que lo ideal es hacer modificaciones mediante modulos para evitar perder este tipo de cambios en las actualizaciones). He visto, tras instalar la 1.7.6.3 en un servidor a parte que este problema no existe, y he tratado de copiar los ficheros en lo que a este formulario respecta para evitar este problema. La cuestión es que aún así el problema persiste.

Si alguien pudiera indicarme en qué método y fichero hace PrestaShop la validación de este campo me sería de gran ayuda, ya que con anular dicho validador puedo solucionar el tema.

 

Gracias y un saludo

Edited by ferran.herrero (see edit history)
Link to comment
Share on other sites

  • 9 months later...

En versión de Prestashop 1.7.6.1 lo he solucionado en archivo:

src\PrestaShopBundle\Form\Admin\Sell\Customer\CustomerType.php

A partir de la linea 203, pone:

                ->add('siret_code', TextType::class, [
                    'required' => false,
                    'constraints' => [
                        new Type([
                            'type' => 'numeric',
                            'message' => $this->trans('This field is invalid', [], 'Admin.Notifications.Error'),
                        ]),
                    ],
                ])

Modifica el 'type' numerico a Alfanumerico:

                ->add('siret_code', TextType::class, [

                    'required' => false,

                    'constraints' => [

                        new Type([

                            'type' => 'alnum',

                            'message' => $this->trans('This field is invalid', [], 'Admin.Notifications.Error'),

                        ]),

                    ],

                ])

 

Espero que te sirva esta solución.

 

  • Like 1
Link to comment
Share on other sites

  • 1 month later...
On 11/12/2020 at 8:52 AM, jadobar said:

En versión de Prestashop 1.7.6.1 lo he solucionado en archivo:

src\PrestaShopBundle\Form\Admin\Sell\Customer\CustomerType.php

A partir de la linea 203, pone:


                ->add('siret_code', TextType::class, [
                    'required' => false,
                    'constraints' => [
                        new Type([
                            'type' => 'numeric',
                            'message' => $this->trans('This field is invalid', [], 'Admin.Notifications.Error'),
                        ]),
                    ],
                ])

Modifica el 'type' numerico a Alfanumerico:

                ->add('siret_code', TextType::class, [

                    'required' => false,

                    'constraints' => [

                        new Type([

                            'type' => 'alnum',

                            'message' => $this->trans('This field is invalid', [], 'Admin.Notifications.Error'),

                        ]),

                    ],

                ])

 

Espero que te sirva esta solución.

 

Hola gracias por tu aporte, realice estos mismo pasos con el APE y se elimino la alerta que se muestra debajo del form, pero si edito el cliente como administrador no me deja guardar el cliente, me muestra una alerta que dice "El campo "APE" no es válido", pero ahora lo muestra arriba. Como si hubiera otro validador extra

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

  • 3 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...