THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Voila j'essaie d'améliorer le plugin Customer Family disponible afin de vérifier la validité du SIRET fournit par un pro.
J'ai modifiier le code dans les fichiers comme suit :

- Fichier CustomerFamily/EventListeners/CustomerFamilyFormListener.php

  ->add(
                self::CUSTOMER_FAMILY_SIRET_FIELD_NAME,
                'text',
                array(
                  'constraints' => array(
                      new Constraints\Callback(
                          array(
                              'methods' => array(
                                  array(
                                      $this, 'checkSiret'
                                  )
                              )
                          )
                      )
                  ),
  public function checkSiret($siret, ExecutionContextInterface $context)
    {
      if(strlen($siret)!=0){
    	if (strlen($siret) != 14) $context->addViolation(self::trans('Numéro de SIRET Invalide')); // le SIRET doit contenir 14 caractères
    	if (!is_numeric($siret)) $context->addViolation(self::trans('Numéro de SIRET Invalide')); // le SIRET ne doit contenir que des chiffres
    	// on prend chaque chiffre un par un
    	// si son index (position dans la chaîne en commence à 0 au premier caractère) est pair
    	// on double sa valeur et si cette dernière est supérieure à 9, on lui retranche 9
    	// on ajoute cette valeur à la somme totale
    	for ($index = 0; $index < 14; $index ++)
    	{
    		$number = (int) $siret[$index];
    		if (($index % 2) == 0) { if (($number *= 2) > 9) $number -= 9; }
    		$sum += $number;
    	}
    	// le numéro est valide si la somme des chiffres est multiple de 10
    	if (($sum % 10) != 0) $context->addViolation(self::trans('Numéro de SIRET Invalide'));
    }
    }

Voila mon probleme quand je rentre un SIRET bidon j'ai bien une erreur après il semble un rafraichissement de la page. Mais le probleme se trouve coté backOffice si on abandonne la création on a une fenetre qui s'affiche qaund on va dans l'onglet client du back pour entrer les valeurs éronné. Comment je pourrais empecher ce comportement (stoper le processus de création du client ? mais comment ?)
En gros si je ne rentres pas des valeurs correctes en front, j'ai une fenetre en back qui me demande d'entrer de bonnes valeurs. J'aimerais ne pas avoir cet fenetre et ne pas créer le client dans le cas où il ne corrige pas de lui meme l'erreur.

Merci

Last edited by timmy (25-04-2017 16:02:23)

Offline


En gros si je ne rentres pas des valeurs correctes en front, j'ai une fenetre en back qui me demande d'entrer de bonnes valeurs

Je suppose que le formulaire que tu as enrichi est utilisé à la fois en back et en front, et il faut donc indiquer un SIRET correct en back et en front.


OpenStudio Toulouse

Offline


ok mais il y a un moyen d'empecher que le front se repercute sur le backOffice, genre en stoppant la propagation de la création du client ?

Last edited by timmy (26-04-2017 10:47:16)

Offline


Dans l'état actuel des choses, non, puisque front et back utilisent la même form, et que c'est dans cette form que tu as implémenté le contrôle du siret.

Tu pourrais vérifier dans ton callback que tu est dans le contexte du B.O. et ne pas effectuer le test dans ce cas.


OpenStudio Toulouse

Offline


Je sais pas si on s'est bien compris donc je me réexplique :
Une personne est sur mon site et souhaite créer un compte client, la a donc accès a la form de création de client ou j'ai ajouté le module ClientFamily. Si il choisit d'etre un pro il doit mettre son siret que je vérifie avec le code du premier post.
Cependant s'il met un siret qui n'a pas été validé j'ai un probleme en backOffice. Lorsque je vais dans mon onglet client j'ai une popup qui me demande de mettre à jour les informations du clients (le siret qui est pas bon en l'occurence). Or je ne voudrais pas que l'on ait cette popup mais que l'on de créer pas le client (il me semble que l'on créer un client dans ce cas et que l'on attend une validation en backOffice)

Voilà j'espère avoir été clair wink

Offline


Je ne comprends pas comment ton client peut entrer un SIRET incorrect si tu le vérifies dans la form.


OpenStudio Toulouse

Offline


En fait c'était un truc trop con.
Je testait en localhost. La création d'un compte pro ou l'utilisateur entre un mauvais SIRET et abandonne avant de mettre un truc valide. Et en me connectant en BO j'avais le forme qui me demandais de rentrer des infos correctes. Mais en fait c'était parceque j'était sur la même session.
En résumé quand je ne finissais pas de valider mon formulaire en FO il me le raffichait en BO. Je pensais que c'était du a Thélia mais c'était juste car je gardait la même session sur mon navigateur. Vu que je viens de tester avec 2 navigateurs un pour le Front et un pour la Back et je n'ai plus le probleme