Commit 1da2648c authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

Correctif pour tous les cas d'intervenants ayant un code INSEE contenant 75 et...

Correctif pour tous les cas d'intervenants ayant un code INSEE contenant 75 et nés en Seine et Oise <=1968.
parent 21e27334
......@@ -22,6 +22,7 @@ ne sont plus affichées lorsqu'on clique sur l'utilisateur en haut à droite.
* Dans la fiche de service, les codes des éléments et des étapes s'affichent de nouveau (ils n'étaient plus visibles)
* Lorsqu'on crée un nouveau rôle et qu'on lui ajoute des privilèges, l'application ne plante plus (problème de cache de données réglé).
* Dans l'export Winpaye, le numéro INSEE est maintenant correctement formatté (il supprime les espaces en trop, et ajoute des zéros devant les clés si nécessaire)
* Dans le dossier, les Numéros INSEE avec pour département 75 sont comptés valides par rapport au département de naissance si l'intervenant est né en actuelle région parisienne avant 1968.
## Nouveautés
* Nouveau script de test d'accès à la BDD depuis le script de mise à jour (./bin/ose test-bdd)
......
......@@ -139,4 +139,16 @@ class Departement implements HistoriqueAwareInterface, ImportAwareInterface
return $this->id;
}
/**
* @return bool
*/
public function inIleDeFrance(): bool
{
$intCode = (int)$this->getCode();
return in_array($intCode, [78,91,92,93,94,95]);
}
}
......@@ -2,6 +2,8 @@
namespace Application\Validator;
use Application\Constants;
use Application\Entity\Db\Departement;
use Application\Service\Traits\CiviliteServiceAwareTrait;
use Application\Service\Traits\DepartementServiceAwareTrait;
use Application\Service\Traits\PaysServiceAwareTrait;
......@@ -183,7 +185,7 @@ class NumeroINSEEValidator extends NumeroINSEE
if (!$this->isValidDepartementFrance($value, $context)) {
return false;
}
}elseif ($estNeEnAlgerie) {
} elseif ($estNeEnAlgerie) {
// on doit avoir un code département français valide
if (!$this->isValidDepartementAlgerie($value, $context)) {
return false;
......@@ -218,8 +220,6 @@ class NumeroINSEEValidator extends NumeroINSEE
if (empty($context['departementNaissance'])) {
return true;
}
$departementNaissance = $this->getServiceDepartement()->get($context['departementNaissance'], true);
/* @var $departementNaissance DepartementEntity */
// Si on trouve un code de département en métropole ou outre-mer valide,
// on vérifie qu'il est cohérent avec le code du département de naissance saisi
......@@ -228,10 +228,24 @@ class NumeroINSEEValidator extends NumeroINSEE
||
($d = $this->getDepartementOutreMerValide($value))
) {
/* @var $departementNaissance Departement */
$departementNaissance = $this->getServiceDepartement()->get($context['departementNaissance'], true);
if ($d !== $departementNaissance->getCode()) {
$this->error(self::MSG_DEPT);
return false;
$return = false;
$dateNaissance = \DateTime::createFromFormat(Constants::DATE_FORMAT, $context['dateNaissance']);
if ($dateNaissance) {
$anneeNaissance = (int)$dateNaissance->format('Y');
if ($anneeNaissance <= 1968) {
if ($departementNaissance->inIleDeFrance() && $d === '075') {
$return = true;
}
}
}
if (!$return) {
$this->error(self::MSG_DEPT);
return false;
}
}
} // Sinon, le code département n'est pas valide
else {
......@@ -299,7 +313,7 @@ class NumeroINSEEValidator extends NumeroINSEE
if (is_numeric($departement)) {
$d = (int)$departement;
if (in_array($d, [91,92,93,94,99])) {
if (in_array($d, [91, 92, 93, 94, 99])) {
return '0' . (string)$departement;
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment