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)