SDIS62 / prevarisc

Application web open-source gérant l'ensemble de l'activité du service prévention au sein d'un SDIS.
http://sdis62.github.io/prevarisc/
Other
14 stars 30 forks source link

etablissement.numeroid suivant la codification ERP V2 #645

Open SDIS91 opened 7 years ago

SDIS91 commented 7 years ago

Bonjour,

Veuillez trouver ci-joint un trigger MYSQL (pour ne pas modifier le code de l'application) permettant d’assurer la création et la modification de la numérotation ERP telle qu’utilisée dans WINPREV ERP 2.0. Le champ « Identifiant » de la fiche établissement reçoit le code genre (1), le numéro insee (3) et une itération dans la commune (5).

Il est à noter que :

drop FUNCTION IF EXISTS `NUM_ERPV2`;

CREATE DEFINER = CURRENT_USER 
    FUNCTION `NUM_ERPV2`(`id_etb` BIGINT(20)) 
    RETURNS char(9) CHARSET utf8
    READS SQL DATA

/*
SDIS 91 - OR - 24/08/2016

Trigger permettant de formaliser etablissement.numeroid suivant la codification ERP V2
GIII00000
G : Genre de l établissement
III : Code insee de la commune
00000 : Compteur itératif par code insee

Paramétre entrant id_etb = clef d identification de l établissement id_etablissement
Paramétre sortant chaine formaté de 9 caractéres

nota : la codification inital ERP V2 contenait en fin lexpression -000 destinée à gérer 
la filiation des établissements entre eux. Cette codification est abandonné dans prevarisc du fait du mode de gestion prévu
*/
begin

DECLARE etb_genre char(1);
DECLARE etb_insee char(3);
DECLARE etb_iter char(5);

DECLARE numerp_conform tinyint(1);
DECLARE etb_old_genre char(1);
DECLARE etb_old_insee char(3);

SET etb_genre = (SELECT (mid(LIBELLE_GENRE,1,1)) FROM genre,etablissementinformations 
WHERE genre.ID_GENRE=etablissementinformations.ID_GENRE
AND 
             etablissementinformations.ID_ETABLISSEMENT=id_etb);

if etb_genre is null 
then return null;
end if;

SET etb_insee = (SELECT min(mid(NUMINSEE_COMMUNE,3,3)) FROM etablissementadresse,etablissement
            WHERE etablissement.ID_ETABLISSEMENT=id_etb
            AND etablissementadresse.ID_ETABLISSEMENT=id_etb);

if etb_insee is null 
then return null;
end if;

SET etb_iter = (select min(compteur) as valeur from (select insee,cast(mid(iteration,4,5) as int) as iter, @compteur :=@compteur+1 as compteur from 
            (SELECT mid(NUMEROID_ETABLISSEMENT,2,3) as insee,cast(mid(NUMEROID_ETABLISSEMENT,2,9) as int) as iteration FROM etablissement
           group by iteration ) as tempo,(SELECT @compteur:=0) AS t where insee=etb_insee ORDER BY ITERATION) as final where iter<>compteur);

 if etb_iter is null then

 set etb_iter=(select max(mid(NUMEROID_ETABLISSEMENT,5,5))+1 as iteration from etablissement where mid(NUMEROID_ETABLISSEMENT,2,3)=etb_insee
ORDER BY iteration);

end if;

 REMPL_0:WHILE length(etb_iter) < 5 DO
     SET etb_iter=concat('0',etb_iter);
   END WHILE REMPL_0 ;
if numerp_conform=1 and etb_genre=etb_old_genre and etb_insee=etb_old_insee 
then
    return numeroid_etablissement; 
elseif numerp_conform=1 and etb_genre<>etb_old_genre and etb_insee=etb_old_insee then
    return concat(etb_genre,mid(numeroid_etablissement,2));
else
    return concat(etb_genre,etb_insee,etb_iter);
end if;

end

Nous avons par contre identifié un souci concernant les ERP Multi-communes. L'ajout de plusieurs adresses avec communes différentes génère un numéro ERP lié à la première commune par ordre croissant INSEE, sans pouvoir définir la commune de référence ( Art L2215-1 §3 du CGCT).

Une des pistes est de rajouter dans le choix du type d'adresse une valeur de champ type "Adresse officielle ; Mais à ce jour, ce développement reste à faire. D’ailleurs, si quelqu’un peu nous indiquer où modifier la liste d’adresse ?

Cordialement

CO16 commented 7 years ago

Bonjour,

Rester sur la numérotation ERPV2 génère plusieurs difficultés:

En revanche, passer à la numérotation Prevarisc change un peu les habitudes. Mais à l'usage ce n'est pas bloquant. Ca oblige à trouver quelques adaptations (mettre le nom de la commune sur le dossier d'archives papier en plus du numéro prevarisc) et l'identifiant ne donne plus d'informations sur les relations de communes ni de parenté, il faut ouvrir prevarisc pour avoir l'info.

Cdlt

SDIS33 commented 7 years ago

Bonjour,

Nous nous sommes aussi penchés sur cette problématique en interne : le besoin étant de pouvoir extraire la liste des établissements liés (un établissement père et ses fils), nous avions envisagé de reprendre la numérotation ERP2, qui permettait d'isoler ces établissements dans l'écran de recherche des établissements, en saisissant le début d'identifiant de l'établissement père. Devant les difiicultés listées par @CO16, nous avons abandonné cette solution au profit d'une évolution de l'application qui a consisté a ajouté un bouton d'export sur tous les établissements ayant des fils.

Au regard de ces difficultés, y-a-t'il un réel intérêt à rester sur la numérotation ERP2 ?

regnaulto commented 7 years ago

bonjour,

cette numérotation est pour ce qui nous concerne la pierre angulaire des référencements des ERP notamment pour les archives, les courrier à destination des requérants, les communes, etc, et ce depuis la mise en place d'ERP. Donc, oui, pour ce qui nous concerne, c'est nécessaire. Pour ce qui concerne la filiation, c'est un faux problème. Comme vous l'avez dit, Prevarisc le gére, pas besoin de réinventer ce qui fonctionne. Par contre, cette fonctionnalité permet de garantir la continuité de la logique de numérotation des ERP...c'est tout ce qui est demandé et çà fonctionne en ce sens.

Cordialement