From 91303f184cf896e2eaaefc05d1f951d8170e7d19 Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Fri, 19 Jun 2026 19:38:14 +0100 Subject: [PATCH] gestion parametre frontend --- .../frontend/FonctionnaliteController.java | 12 +- .../frontend/ModuleController.java | 12 +- ...ProfileModuleFonctionnaliteController.java | 12 +- .../import_assignation_personne_cotonou.sql | 0 .../import_batiment_and_enquete_batiment.sql | 0 .../import_enquete_batiment.sql | 0 .../import_enquete_parcelle.sql | 0 .../import_enquete_unite_logement.sql | 0 .../import_imposition_rfu_cotonou.sql | 0 .../import_parcelle_and_enquete_parcelle.sql | 0 .../import_personne.sql | 0 .../import_synchro_personne_sigibe.sql | 0 ...te_logement_and_enquete_unite_logement.sql | 0 .../import_assignation_personne_cotonou.sql | 95 ++++++ .../import_batiment_and_enquete_batiment.sql | 287 +++++++++++++++++ .../import_enquete_batiment.sql | 158 ++++++++++ .../import_enquete_parcelle.sql | 153 +++++++++ .../import_enquete_unite_logement.sql | 156 +++++++++ .../import_imposition_rfu_cotonou.sql | 99 ++++++ .../import_parcelle_and_enquete_parcelle.sql | 250 +++++++++++++++ .../import_cotonou/import_personne.sql | 128 ++++++++ .../import_synchro_personne_sigibe.sql | 82 +++++ ...te_logement_and_enquete_unite_logement.sql | 297 ++++++++++++++++++ .../import_assignation_personne_cotonou.sql | 95 ++++++ .../import_batiment_and_enquete_batiment.sql | 287 +++++++++++++++++ .../import_enquete_batiment.sql | 158 ++++++++++ .../import_enquete_parcelle.sql | 153 +++++++++ .../import_enquete_unite_logement.sql | 156 +++++++++ .../import_imposition_rfu_cotonou.sql | 99 ++++++ .../import_parcelle_and_enquete_parcelle.sql | 250 +++++++++++++++ .../import_parakou/import_personne.sql | 128 ++++++++ .../import_synchro_personne_sigibe.sql | 82 +++++ ...te_logement_and_enquete_unite_logement.sql | 297 ++++++++++++++++++ .../import_assignation_personne_cotonou.sql | 95 ++++++ .../import_batiment_and_enquete_batiment.sql | 287 +++++++++++++++++ .../import_enquete_batiment.sql | 158 ++++++++++ .../import_enquete_parcelle.sql | 153 +++++++++ .../import_enquete_unite_logement.sql | 156 +++++++++ .../import_imposition_rfu_cotonou.sql | 99 ++++++ .../import_parcelle_and_enquete_parcelle.sql | 250 +++++++++++++++ .../import_porto_novo/import_personne.sql | 128 ++++++++ .../import_synchro_personne_sigibe.sql | 82 +++++ ...te_logement_and_enquete_unite_logement.sql | 297 ++++++++++++++++++ .../service/EntityFromPayLoadService.java | 14 +- 44 files changed, 5140 insertions(+), 25 deletions(-) rename src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/{ => import_abomey_calavi}/import_assignation_personne_cotonou.sql (100%) rename src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/{ => import_abomey_calavi}/import_batiment_and_enquete_batiment.sql (100%) rename src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/{ => import_abomey_calavi}/import_enquete_batiment.sql (100%) rename src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/{ => import_abomey_calavi}/import_enquete_parcelle.sql (100%) rename src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/{ => import_abomey_calavi}/import_enquete_unite_logement.sql (100%) rename src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/{ => import_abomey_calavi}/import_imposition_rfu_cotonou.sql (100%) rename src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/{ => import_abomey_calavi}/import_parcelle_and_enquete_parcelle.sql (100%) rename src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/{ => import_abomey_calavi}/import_personne.sql (100%) rename src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/{ => import_abomey_calavi}/import_synchro_personne_sigibe.sql (100%) rename src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/{ => import_abomey_calavi}/import_unite_logement_and_enquete_unite_logement.sql (100%) create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_assignation_personne_cotonou.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_batiment_and_enquete_batiment.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_batiment.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_parcelle.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_unite_logement.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_imposition_rfu_cotonou.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_parcelle_and_enquete_parcelle.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_personne.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_synchro_personne_sigibe.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_unite_logement_and_enquete_unite_logement.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_assignation_personne_cotonou.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_batiment_and_enquete_batiment.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_batiment.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_parcelle.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_unite_logement.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_imposition_rfu_cotonou.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_parcelle_and_enquete_parcelle.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_personne.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_synchro_personne_sigibe.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_unite_logement_and_enquete_unite_logement.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_assignation_personne_cotonou.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_batiment_and_enquete_batiment.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_batiment.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_parcelle.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_unite_logement.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_imposition_rfu_cotonou.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_parcelle_and_enquete_parcelle.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_personne.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_synchro_personne_sigibe.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_unite_logement_and_enquete_unite_logement.sql diff --git a/src/main/java/io/gmss/fiscad/controllers/frontend/FonctionnaliteController.java b/src/main/java/io/gmss/fiscad/controllers/frontend/FonctionnaliteController.java index 78f1d90..b13f483 100644 --- a/src/main/java/io/gmss/fiscad/controllers/frontend/FonctionnaliteController.java +++ b/src/main/java/io/gmss/fiscad/controllers/frontend/FonctionnaliteController.java @@ -34,7 +34,7 @@ public class FonctionnaliteController { @PostMapping("/create") - //@PreAuthorize("hasAuthority('CREATE_FONCTIONNALITE')") + @PreAuthorize("hasAuthority('CREATE_FONCTIONNALITE')") public ResponseEntity createFonctionnalite(@RequestBody @Valid @Validated FonctionnalitePayloadWeb fonctionnalitePayLoadWeb) { try { fonctionnalitePayLoadWeb = fonctionnaliteService.createFonctionnalite(fonctionnalitePayLoadWeb); @@ -59,7 +59,7 @@ public class FonctionnaliteController { } @PutMapping("/update/{id}") - // @PreAuthorize("hasAuthority('UPDATE_FONCTIONNALITE')") + @PreAuthorize("hasAuthority('UPDATE_FONCTIONNALITE')") public ResponseEntity updateFonctionnalite(@PathVariable Long id, @RequestBody FonctionnalitePayloadWeb fonctionnalitePayLoadWeb) { try { return new ResponseEntity<>( @@ -83,7 +83,7 @@ public class FonctionnaliteController { } @DeleteMapping("/delete/{id}") - //@PreAuthorize("hasAuthority('DELETE_FONCTIONNALITE')") + @PreAuthorize("hasAuthority('DELETE_FONCTIONNALITE')") public ResponseEntity deleteFonctionnalite(@PathVariable Long id) { try { fonctionnaliteService.deleteFonctionnalite(id); @@ -108,7 +108,7 @@ public class FonctionnaliteController { } @GetMapping("/all") - // @PreAuthorize("hasAuthority('READ_FONCTIONNALITE')") + @PreAuthorize("hasAuthority('READ_FONCTIONNALITE')") public ResponseEntity getAllFonctionnaliteList() { try { return new ResponseEntity<>( @@ -132,7 +132,7 @@ public class FonctionnaliteController { } @GetMapping("/all/by-profil-id/{profilId}") - //@PreAuthorize("hasAuthority('READ_FONCTIONNALITE')") + @PreAuthorize("hasAuthority('READ_FONCTIONNALITE')") public ResponseEntity getAllFonctionnaliteByProfilList(@PathVariable Long profilId) { try { return new ResponseEntity<>( @@ -158,7 +158,7 @@ public class FonctionnaliteController { @GetMapping("/id/{id}") - //@PreAuthorize("hasAuthority('READ_FONCTIONNALITE')") + @PreAuthorize("hasAuthority('READ_FONCTIONNALITE')") public ResponseEntity getFonctionnaliteById(@PathVariable Long id) { try { return new ResponseEntity<>( diff --git a/src/main/java/io/gmss/fiscad/controllers/frontend/ModuleController.java b/src/main/java/io/gmss/fiscad/controllers/frontend/ModuleController.java index 21bd112..0c06c79 100644 --- a/src/main/java/io/gmss/fiscad/controllers/frontend/ModuleController.java +++ b/src/main/java/io/gmss/fiscad/controllers/frontend/ModuleController.java @@ -36,7 +36,7 @@ public class ModuleController { @PostMapping("/create") - // @PreAuthorize("hasAuthority('CREATE_MODULE')") + @PreAuthorize("hasAuthority('CREATE_MODULE')") public ResponseEntity createModule(@RequestBody @Valid @Validated ModulePayloadWeb modulePayLoadWeb) { try { modulePayLoadWeb = moduleService.createModule(modulePayLoadWeb); @@ -61,7 +61,7 @@ public class ModuleController { } @PutMapping("/update/{id}") - //@PreAuthorize("hasAuthority('UPDATE_MODULE')") + @PreAuthorize("hasAuthority('UPDATE_MODULE')") public ResponseEntity updateModule(@PathVariable Long id, @RequestBody ModulePayloadWeb modulePayLoadWeb) { try { return new ResponseEntity<>( @@ -85,7 +85,7 @@ public class ModuleController { } @DeleteMapping("/delete/{id}") - // @PreAuthorize("hasAuthority('DELETE_MODULE')") + @PreAuthorize("hasAuthority('DELETE_MODULE')") public ResponseEntity deleteModule(@PathVariable Long id) { try { moduleService.deleteModule(id); @@ -110,7 +110,7 @@ public class ModuleController { } @GetMapping("/all") - //@PreAuthorize("hasAuthority('READ_MODULE')") + @PreAuthorize("hasAuthority('READ_MODULE')") public ResponseEntity getAllModuleList() { try { return new ResponseEntity<>( @@ -134,7 +134,7 @@ public class ModuleController { } @GetMapping("/all/by-profil-id/{profilId}") - //@PreAuthorize("hasAuthority('READ_MODULE')") + @PreAuthorize("hasAuthority('READ_MODULE')") public ResponseEntity getAllModuleByProfilList(@PathVariable Long profilId) { try { return new ResponseEntity<>( @@ -160,7 +160,7 @@ public class ModuleController { @GetMapping("/id/{id}") - //@PreAuthorize("hasAuthority('READ_MODULE')") + @PreAuthorize("hasAuthority('READ_MODULE')") public ResponseEntity getModuleById(@PathVariable Long id) { try { return new ResponseEntity<>( diff --git a/src/main/java/io/gmss/fiscad/controllers/user/ProfileModuleFonctionnaliteController.java b/src/main/java/io/gmss/fiscad/controllers/user/ProfileModuleFonctionnaliteController.java index 96e45f9..ab8efe1 100644 --- a/src/main/java/io/gmss/fiscad/controllers/user/ProfileModuleFonctionnaliteController.java +++ b/src/main/java/io/gmss/fiscad/controllers/user/ProfileModuleFonctionnaliteController.java @@ -35,7 +35,7 @@ public class ProfileModuleFonctionnaliteController { @PostMapping("/create") - //@PreAuthorize("hasAuthority('CREATE_PROFILEMODULEFONCTIONNALITE')") + @PreAuthorize("hasAuthority('CREATE_PROFILEMODULEFONCTIONNALITE')") public ResponseEntity createProfileModuleFonctionnalite(@RequestBody @Valid @Validated ProfileModuleFonctionnalitePayloadWeb modulePayLoadWeb) { try { modulePayLoadWeb = profileModuleFonctionnaliteService.createProfileModuleFonctionnalite(modulePayLoadWeb); @@ -60,7 +60,7 @@ public class ProfileModuleFonctionnaliteController { } @PutMapping("/update/{id}") - //@PreAuthorize("hasAuthority('UPDATE_PROFILEMODULEFONCTIONNALITE')") + @PreAuthorize("hasAuthority('UPDATE_PROFILEMODULEFONCTIONNALITE')") public ResponseEntity updateProfileModuleFonctionnalite(@PathVariable Long id, @RequestBody ProfileModuleFonctionnalitePayloadWeb modulePayLoadWeb) { try { return new ResponseEntity<>( @@ -84,7 +84,7 @@ public class ProfileModuleFonctionnaliteController { } @DeleteMapping("/delete/{id}") - // @PreAuthorize("hasAuthority('DELETE_PROFILEMODULEFONCTIONNALITE')") + @PreAuthorize("hasAuthority('DELETE_PROFILEMODULEFONCTIONNALITE')") public ResponseEntity deleteProfileModuleFonctionnalite(@PathVariable Long id) { try { profileModuleFonctionnaliteService.deleteProfileModuleFonctionnalite(id); @@ -109,7 +109,7 @@ public class ProfileModuleFonctionnaliteController { } @GetMapping("/all") - //@PreAuthorize("hasAuthority('READ_PROFILEMODULEFONCTIONNALITE')") + @PreAuthorize("hasAuthority('READ_PROFILEMODULEFONCTIONNALITE')") public ResponseEntity getAllProfileModuleFonctionnaliteList() { try { return new ResponseEntity<>( @@ -133,7 +133,7 @@ public class ProfileModuleFonctionnaliteController { } @GetMapping("/all/by-profil-id/{profilId}") - // @PreAuthorize("hasAuthority('READ_PROFILEMODULEFONCTIONNALITE')") + @PreAuthorize("hasAuthority('READ_PROFILEMODULEFONCTIONNALITE')") public ResponseEntity getAllProfileModuleFonctionnaliteByProfilList(@PathVariable Long profilId) { try { return new ResponseEntity<>( @@ -159,7 +159,7 @@ public class ProfileModuleFonctionnaliteController { @GetMapping("/id/{id}") - //@PreAuthorize("hasAuthority('READ_PROFILEMODULEFONCTIONNALITE')") + @PreAuthorize("hasAuthority('READ_PROFILEMODULEFONCTIONNALITE')") public ResponseEntity getProfileModuleFonctionnaliteById(@PathVariable Long id) { try { return new ResponseEntity<>( diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_assignation_personne_cotonou.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_assignation_personne_cotonou.sql similarity index 100% rename from src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_assignation_personne_cotonou.sql rename to src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_assignation_personne_cotonou.sql diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_batiment_and_enquete_batiment.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_batiment_and_enquete_batiment.sql similarity index 100% rename from src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_batiment_and_enquete_batiment.sql rename to src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_batiment_and_enquete_batiment.sql diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_enquete_batiment.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_enquete_batiment.sql similarity index 100% rename from src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_enquete_batiment.sql rename to src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_enquete_batiment.sql diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_enquete_parcelle.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_enquete_parcelle.sql similarity index 100% rename from src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_enquete_parcelle.sql rename to src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_enquete_parcelle.sql diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_enquete_unite_logement.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_enquete_unite_logement.sql similarity index 100% rename from src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_enquete_unite_logement.sql rename to src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_enquete_unite_logement.sql diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_imposition_rfu_cotonou.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_imposition_rfu_cotonou.sql similarity index 100% rename from src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_imposition_rfu_cotonou.sql rename to src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_imposition_rfu_cotonou.sql diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parcelle_and_enquete_parcelle.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_parcelle_and_enquete_parcelle.sql similarity index 100% rename from src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parcelle_and_enquete_parcelle.sql rename to src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_parcelle_and_enquete_parcelle.sql diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_personne.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_personne.sql similarity index 100% rename from src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_personne.sql rename to src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_personne.sql diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_synchro_personne_sigibe.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_synchro_personne_sigibe.sql similarity index 100% rename from src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_synchro_personne_sigibe.sql rename to src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_synchro_personne_sigibe.sql diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_unite_logement_and_enquete_unite_logement.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_unite_logement_and_enquete_unite_logement.sql similarity index 100% rename from src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_unite_logement_and_enquete_unite_logement.sql rename to src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_abomey_calavi/import_unite_logement_and_enquete_unite_logement.sql diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_assignation_personne_cotonou.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_assignation_personne_cotonou.sql new file mode 100644 index 0000000..0a6fa9f --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_assignation_personne_cotonou.sql @@ -0,0 +1,95 @@ + +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + +--SELECT dblink_disconnect('connexion_rfu'); +--SELECT pg_size_pretty(pg_database_size('rfu')); + +CREATE OR REPLACE PROCEDURE public.import_assignation_centre_personne_from_rfu_cotonou() +LANGUAGE plpgsql +AS $procedure$ +BEGIN +INSERT INTO public.commune_centre_assignation ( + nc, + ifu, + commune_id, + structure_id, + personne_id, + parcelle_id, + created_at, + created_by, + deleted, + updated_at, + updated_by, + source +) +SELECT + c.n0_contrib, + c.ifu, + 70, + case rcdi + when 'A' then 61 + when 'B' then 62 + when 'C' then 63 + when 'D' then 64 + else null + end, + pers.id, + parc.id, + now(), + NULL::bigint, + false, + now(), + NULL::bigint, + 'RFU' +FROM dblink( + 'connexion_rfu', + $db$ + SELECT distinct on (ifu,rcdi) + trim(ifu), + trim(n0_contrib), + trim(rcdi), + trim(quartier_c), + trim(ilot_c), + trim(parcel_c) + FROM stemichel.contrib + order by ifu,rcdi + $db$ + ) AS c ( + ifu varchar, + n0_contrib varchar, + rcdi varchar, + quartier_c varchar, + ilot_c varchar, + parcel_c varchar + ) +LEFT JOIN personne pers on trim(pers.ifu)=trim(c.ifu) +LEFT JOIN parcelle parc on (trim(parc.q) = trim(c.quartier_c) + and trim(parc.i) = trim(c.ilot_c) + and trim(parc.p) = trim(c.parcel_c)) +WHERE NOT EXISTS ( + SELECT 1 + FROM public.commune_centre_assignation cca + WHERE cca.personne_id = pers.id + and cca.structure_id = case trim(c.rcdi) + when 'A' then 61 + when 'B' then 62 + when 'C' then 63 + when 'D' then 64 + else null + end + and cca.commune_id = 70 +) +ON CONFLICT (structure_id, commune_id, personne_id) DO NOTHING; + +END; +$procedure$; + +call import_assignation_centre_personne_from_rfu_cotonou(); + +--delete from commune_centre_assignation; + + +--select * from commune_centre_assignation; diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_batiment_and_enquete_batiment.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_batiment_and_enquete_batiment.sql new file mode 100644 index 0000000..c2c28b2 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_batiment_and_enquete_batiment.sql @@ -0,0 +1,287 @@ +CREATE OR REPLACE PROCEDURE public.import_batiment_and_enquetebati_from_rfu(nombreLimit integer) +LANGUAGE plpgsql +AS $$ +DECLARE +l_count numeric := 0; + batiment_rfu record; + l_batiment_id_parent bigint; + l_parcelle_id_parent bigint ; +BEGIN + +FOR batiment_rfu IN ( + SELECT + c.n0bat, + --dtconst, + CASE + WHEN c.dtconst IS NULL OR c.dtconst = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.dtconst !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.dtconst, 'YYYYMMDD'), 'YYYYMMDD') <> c.dtconst THEN NULL + ELSE to_date(c.dtconst, 'YYYYMMDD') + end as dtconst, + c.quartier, + c.n0_ilot, + c.n0_parcel, + --c.surfsol, + CASE + WHEN replace(trim(c.surfsol), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfsol, ',', '.')::numeric + end as surfsol, + --c.surfacelo, + CASE + WHEN replace(trim(c.surfacelo), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfacelo, ',', '.')::numeric + end as surfacelo, + --c.vllcalcule, + CASE + WHEN replace(trim(c.vllcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vllcalcule, ',', '.')::numeric + end as vllcalcule, + --c.bail, + CASE + WHEN replace(trim(c.bail), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.bail, ',', '.')::numeric + end as bail, + --c.valloest, + CASE + WHEN replace(trim(c.valloest), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.valloest, ',', '.')::numeric + end as valloest, + --c.nbetage, + CASE + WHEN replace(trim(c.nbetage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbetage, ',', '.')::numeric + end as nbetage, + --c.vlcalcule, + CASE + WHEN replace(trim(c.vlcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vlcalcule, ',', '.')::numeric + end as vlcalcule, + --c.utilisat, + CASE + WHEN replace(trim(c.utilisat), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.utilisat, ',', '.')::numeric + end as utilisat, + --c.finexempt, + CASE + WHEN c.finexempt IS NULL OR c.finexempt = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.finexempt !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.finexempt, 'YYYYMMDD'), 'YYYYMMDD') <> c.finexempt THEN NULL + ELSE to_date(c.finexempt, 'YYYYMMDD') + end as finexempt, + --c.nbunitlo, + CASE + WHEN replace(trim(c.nbunitlo), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbunitlo, ',', '.')::numeric + end as nbunitlo, + --c.toit + CASE + WHEN replace(trim(c.toit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.toit, ',', '.')::numeric + end as toit, + --nbhabit, + CASE + WHEN replace(trim(c.nbhabit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbhabit, ',', '.')::numeric + end as nbhabit, + --nbmenage, + CASE + WHEN replace(trim(c.nbmenage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmenage, ',', '.')::numeric + end as nbmenage, + --nbmois, + CASE + WHEN replace(trim(c.nbmois), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmois, ',', '.')::numeric + end as nbmois, + --electric, + CASE + WHEN trim(c.electric)='Non' + THEN false + else + true + end as electric, + --eau, + CASE + WHEN trim(c.eau)='Non' + THEN false + else + true + end as eau, + --nbpiece, + CASE + WHEN replace(trim(c.nbpiece), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbpiece, ',', '.')::numeric + end as nbpiece, + --nbunite + CASE + WHEN replace(trim(c.nbunite), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbunite, ',', '.')::numeric + end as nbunite, + CASE + WHEN c.mdate IS NULL OR c.mdate = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.mdate !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.mdate, 'YYYYMMDD'), 'YYYYMMDD') <> c.mdate THEN NULL + ELSE to_date(c.mdate, 'YYYYMMDD') + end as mdate, + --c.murs, + CASE + WHEN replace(trim(c.murs), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.murs, ',', '.')::numeric + end as murs, + --standing + CASE + WHEN replace(trim(c.standing), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.standing, ',', '.')::numeric + end as standing + FROM dblink( + 'connexion_rfu', + $db$ + SELECT + b.n0bat, + b.dtconst, + b.quartier, + b.n0_ilot, + b.n0_parcel, + b.surfsol, + b.surfacelo, + b.vllcalcule, + b.bail, + b.valloest, + b.nbetage, + b.vlcalcule, + b.utilisat, + b.finexempt, + b.nbunitlo, + b.toit, + b.nbhabit, + b.nbmenage, + b.nbmois, + b.electric, + b.eau, + b.nbpiece, + b.nbunite, + b.mdate, + b.murs, + b.standing + FROM stemichel.batiment b + $db$ + ) AS c ( + n0bat varchar, + dtconst varchar, + quartier varchar, + n0_ilot varchar, + n0_parcel varchar, + surfsol varchar, + surfacelo varchar, + vllcalcule varchar, + bail varchar, + valloest varchar, + nbetage varchar, + vlcalcule varchar, + utilisat varchar, + finexempt varchar, + nbunitlo varchar, + toit varchar, + nbhabit varchar, + nbmenage varchar, + nbmois varchar, + electric varchar, + eau varchar, + nbpiece varchar, + nbunite varchar, + mdate varchar, + murs varchar, + standing varchar + + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.batiment b + WHERE b.code = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel)||'-'||trim(c.n0bat) + ) + limit nombreLimit + ) +LOOP + -- Récupération ID parcelle locale +SELECT p.id +INTO l_parcelle_id_parent +FROM public.parcelle p +WHERE p.numero_parcelle = + trim(batiment_rfu.quartier)||'-'||trim(batiment_rfu.n0_ilot)||'-'||trim(batiment_rfu.n0_parcel) + LIMIT 1; + + +-- Insertion bâtiment local +INSERT INTO public.batiment ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + code, + nub, + date_construction, + parcelle_id, + source, + superficie_au_sol, + superficie_louee, + categorie_batiment_id, + montant_locatif_annuel_calcule, + montant_locatif_annuel_declare, + montant_locatif_annuel_estime, + nombre_etage, + valeur_batiment_calcule, + usage_id, + date_fin_exemption, + nbre_unite_logement, + id_toit_rfu +) +VALUES ( + now(), + 35, + false, + now(), + 35, + trim(batiment_rfu.quartier)||'-'||trim(batiment_rfu.n0_ilot)||'-'||trim(batiment_rfu.n0_parcel)||'-'||trim(batiment_rfu.n0bat), + batiment_rfu.n0bat, + batiment_rfu.dtconst, + l_parcelle_id_parent, + 'RFU', + batiment_rfu.surfsol, + batiment_rfu.surfacelo, + ProcedureRecupCategorieRFU(batiment_rfu.nbetage::integer,batiment_rfu.toit::integer), + batiment_rfu.vllcalcule, + batiment_rfu.bail, + batiment_rfu.valloest, + batiment_rfu.nbetage, + batiment_rfu.vlcalcule, + --------- batiment_rfu.utilisat, + CASE batiment_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + END, + batiment_rfu.finexempt, + batiment_rfu.nbunitlo, + batiment_rfu.toit + ) + + RETURNING id INTO l_batiment_id_parent ; + +call public.import_enquetebati_from_rfu_cipe(batiment_rfu,l_batiment_id_parent); + +l_count := l_count + 1; + +END LOOP; + +RAISE NOTICE 'Nombre de bâtiments insérés : %', l_count; + +END; +$$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_batiment.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_batiment.sql new file mode 100644 index 0000000..83a459a --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_batiment.sql @@ -0,0 +1,158 @@ +CREATE OR REPLACE PROCEDURE public.import_enquetebati_from_rfu_cipe( + IN batiment_rfu record, + IN batiment_id_param numeric +) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +enquete_batiment_id_parent bigint; +BEGIN +INSERT INTO enquete_batiment ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + date_fin_excemption, + nbre_habitant, + nbre_menage, + nbre_mois_location, + nbre_unite_location, + sbee, + soneb, + batiment_id, + personne_id, + user_id, + montant_locatif_annuel_declare, + nbre_etage, + source, + date_enquete, + observation, + superficie_au_sol, + superficie_louee, + statut_enquete, + categorie_batiment_id, + montant_locatif_annuel_calcule, + usage_id, + montant_locatif_annuel_estime, + nbre_piece, + nbre_unite_logement, + valeur_batiment_calcule, + nbre_lot_unite +) select + now(), + 35, + false, + now(), + 35, + batiment_rfu.finexempt, + batiment_rfu.nbhabit, + batiment_rfu.nbmenage, + batiment_rfu.nbmois, + batiment_rfu.nbunitlo, + batiment_rfu.electric, + batiment_rfu.eau, + batiment_id_param, + e.personne_id, + 35, + batiment_rfu.bail, + batiment_rfu.nbetage, + 'RFU', + batiment_rfu.mdate, + 'MIGRATION', + batiment_rfu.surfsol, + batiment_rfu.surfacelo, + 'CLOTURE', + ProcedureRecupCategorieRFU(batiment_rfu.nbetage::integer,batiment_rfu.toit::integer), + batiment_rfu.vllcalcule, + --batiment_rfu.utilisat, + CASE batiment_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + end, + batiment_rfu.valloest, + batiment_rfu.nbpiece, + batiment_rfu.nbunite, + batiment_rfu.vlcalcule, + batiment_rfu.nbunitlo +from batiment b + left join parcelle p on p.id=b.parcelle_id + left join enquete e on e.parcelle_id=p.id +where b.id = batiment_id_param + and not exists ( + select 1 + from enquete_batiment eb + where eb.batiment_id = b.id +) + + RETURNING id INTO enquete_batiment_id_parent ; + +----------MAJ Caractéristique parcelle +INSERT INTO caracteristique_batiment ( + created_by, + created_at, + updated_by, + updated_at, + deleted, + caracteristique_id, + enquete_batiment_id +) +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.toit + WHEN 1 THEN 55 + WHEN 2 THEN 56 + WHEN 3 THEN 57 + WHEN 4 THEN 58 + WHEN 5 THEN 59 + WHEN 6 THEN 60 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.toit IS NOT NULL + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.murs + WHEN 1 THEN 49 + WHEN 2 THEN 50 + WHEN 3 THEN 51 + WHEN 4 THEN 52 + WHEN 5 THEN 53 + else + 54 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.murs IS NOT null + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.standing + WHEN 1 THEN 81 + WHEN 2 THEN 82 + WHEN 3 THEN 83 + WHEN 4 THEN 84 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.standing IS NOT null + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.utilisat + WHEN 1 THEN 35 + WHEN 2 THEN 36 + WHEN 3 THEN 37 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.utilisat IS NOT null; + +------MAJ Exercice +UPDATE enquete_batiment eb +SET exercice_id = e.id + FROM exercice e +WHERE e.annee = 2025 + AND eb.id = enquete_batiment_id_parent; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_parcelle.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_parcelle.sql new file mode 100644 index 0000000..c6d84bc --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_parcelle.sql @@ -0,0 +1,153 @@ +CREATE OR REPLACE PROCEDURE public.import_enqueteparc_from_rfu_cipe( + IN parcelle_rfu record, + IN p_parcelle_id numeric +) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +enquete_id_parent bigint; +BEGIN +INSERT INTO enquete ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + date_enquete, + litige, + parcelle_id, + user_id, + date_finalisation, + date_synchronisation, + date_validation, + status_enquete, + synchronise, + code_parcelle, + nbre_batiment, + nbre_co_proprietaire, + nom_rue, + num_enter_parcelle, + num_rue, + superficie, + equipe_id, + zone_rfu_id, + campagne_id, + origine_enquete, + nc_proprietaire, + source +) select + now(), + 35, + false, + now(), + 35, + now(), + false, + p_parcelle_id, + 35, + now(), + now(), + now(), + 'CLOTURE', + true, + parcelle_rfu.numero_parcelle, + CASE + WHEN trim(parcelle_rfu.nb_bat) ~ '^[0-9]+$' + THEN parcelle_rfu.nb_bat::integer + ELSE NULL +END, + CASE + WHEN trim(parcelle_rfu.nb_prop) ~ '^[0-9]+$' + THEN parcelle_rfu.nb_prop::integer + ELSE NULL +END, + parcelle_rfu.numero_rue, + parcelle_rfu.num_entree_parcelle, + parcelle_rfu.numero_rue, + CASE + WHEN trim(parcelle_rfu.surface) ~ '^[0-9]+$' + THEN parcelle_rfu.surface::float + ELSE NULL +END, + 1, + CASE parcelle_rfu.zones + WHEN '1' THEN 1 + WHEN '2' THEN 2 + WHEN '3' THEN 3 + WHEN '4' THEN 4 + ELSE NULL +END, + 1, + 'RFU', + parcelle_rfu.n0_contrib, + 'RFU' + --from parcelle p + where not exists ( + select 1 + from enquete e + where e.parcelle_id= p_parcelle_id + ) + + RETURNING id INTO enquete_id_parent ; + + ----------MAJ Caractéristique parcelle +INSERT INTO caracteristique_parcelle ( + created_by, + created_at, + updated_by, + updated_at, + deleted, + caracteristique_id, + enquete_id +) +SELECT 35, now(), 35, now(), false, + CASE parcelle_rfu.acces + WHEN '1' THEN 31 + WHEN '2' THEN 32 + WHEN '3' THEN 33 + WHEN '4' THEN 34 + END, + enquete_id_parent + WHERE parcelle_rfu.acces IS NOT NULL + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE parcelle_rfu.cloture + WHEN '1' THEN 28 + WHEN '2' THEN 29 + WHEN '3' THEN 30 + END, + enquete_id_parent + WHERE parcelle_rfu.cloture IS NOT NULL; + +------MAJ Exercice +UPDATE enquete q +SET exercice_id = e.id + FROM exercice e +WHERE e.annee = 2025 + AND q.id = enquete_id_parent; + +------MAJ prietaire +UPDATE enquete q +SET personne_id = p.id, + proprietaire_id = p.id, + nom_proprietaire_parcelle = coalesce (trim(p.raison_sociale), trim(p.nom) || ' '|| trim(p.prenom) ) + FROM personne p +WHERE p.nc = parcelle_rfu.n0_contrib + AND q.id = enquete_id_parent; + +--quartier_id --commune_id --departement_id --arrondissement_id +UPDATE enquete e +SET quartier_id = q.id, + commune_id=c.id, + departement_id=c.departement_id, + arrondissement_id= a.id + FROM parcelle p + inner join quartier q on q.id = p.quartier_id + inner join arrondissement a on a.id = q.arrondissement_id + inner join commune c on c.id = a.commune_id +WHERE p.id = p_parcelle_id + AND e.id = enquete_id_parent; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_unite_logement.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_unite_logement.sql new file mode 100644 index 0000000..f29238a --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_enquete_unite_logement.sql @@ -0,0 +1,156 @@ +CREATE OR REPLACE PROCEDURE public.import_enqueteUnitLog_from_rfu_cipe( + IN uniteLogement_rfu record, + IN uniteLogement_id_param numeric, + IN l_personne_id_parent numeric +) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +enquete_uniteLogement_id_parent bigint; +BEGIN +INSERT INTO enquete_unite_logement ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + en_location, + montant_locatif_annuel_declare, + nbre_habitant, + nbre_menage, + nbre_piece, + sbee, + soneb, + personne_id, + unite_logement_id, + user_id, + nbre_mois_location, + valeur_unite_logement_estime, + source, + date_enquete, + observation, + date_fin_exemption, + superficie_au_sol, + superficie_louee, + statut_enquete, + categorie_batiment_id, + montant_locatif_annuel_calcule, + montant_mensuel_location, + usage_id, + valeur_unite_logement_calcule +)select + now(), + 35, + false, + now(), + 35, + case + when uniteLogement_rfu.nbmois=0 then false + else true + end, + uniteLogement_rfu.montmenl*12, + uniteLogement_rfu.nbhabit, + uniteLogement_rfu.nbmenage, + uniteLogement_rfu.nbpiece, + uniteLogement_rfu.electric, + uniteLogement_rfu.eau, + l_personne_id_parent, + uniteLogement_id_param, + 35, + uniteLogement_rfu.nbmois, + uniteLogement_rfu.vlcalcule, + 'RFU', + uniteLogement_rfu.mdate, + 'MIGRATION', + uniteLogement_rfu.finexempt, + uniteLogement_rfu.surfsol, + uniteLogement_rfu.surfacelo, + 'CLOTURE', + ProcedureRecupCategorieRFU(uniteLogement_rfu.n0etage::integer,uniteLogement_rfu.toit::integer), + uniteLogement_rfu.vllcalcule, + uniteLogement_rfu.montmenl, + CASE uniteLogement_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + END, + uniteLogement_rfu.vlcalcule +from unite_logement ul +where ul.id = uniteLogement_id_param + and not exists ( + select 1 + from enquete_unite_logement eul + where eul.unite_logement_id = ul.id +) + + RETURNING id INTO enquete_uniteLogement_id_parent ; + +----------MAJ Caractéristique Unite de logement +INSERT INTO caracteristique_unite_logement ( + created_by, + created_at, + updated_by, + updated_at, + deleted, + caracteristique_id, + enquete_unite_logement_id +) +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.toit + WHEN 1 THEN 55 + WHEN 2 THEN 56 + WHEN 3 THEN 57 + WHEN 4 THEN 58 + WHEN 5 THEN 59 + WHEN 6 THEN 60 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.toit IS NOT NULL + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.murs + WHEN 1 THEN 49 + WHEN 2 THEN 50 + WHEN 3 THEN 51 + WHEN 4 THEN 52 + WHEN 5 THEN 53 + else + 54 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.murs IS NOT null + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.standing + WHEN 1 THEN 81 + WHEN 2 THEN 82 + WHEN 3 THEN 83 + WHEN 4 THEN 84 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.standing IS NOT null + +UNION ALL + + +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.utilisat + WHEN 1 THEN 35 + WHEN 2 THEN 36 + WHEN 3 THEN 37 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.standing IS NOT null; + +------MAJ Exercice +UPDATE enquete_unite_logement eul +SET exercice_id = e.id + FROM exercice e +WHERE e.annee = 2025 + AND eul.id = enquete_uniteLogement_id_parent; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_imposition_rfu_cotonou.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_imposition_rfu_cotonou.sql new file mode 100644 index 0000000..45240c9 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_imposition_rfu_cotonou.sql @@ -0,0 +1,99 @@ +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + + +CREATE OR REPLACE PROCEDURE public.import_imposition_rfu_cotonou(in exercice varchar(10), in nombreLimit numeric) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +l_count numeric := 0; + imposition_rfu record; + l_parcelle_id_parent bigint; + l_code_quartier varchar(20); +BEGIN + FOR imposition_rfu IN ( + SELECT FROM dblink( + 'connexion_rfu', + $db$ + SELECT + i.article , + i.ifu , + i.n0_contrib , + i.denome , + i.annees , + i.nature , + n.libnature , + i.quartier, + q.libquart , + i.n0_ilot , + i.n0_parcel , + i.nn, + COALESCE(i.montant,0) droit_simple, + COALESCE(i.penalite,0) penalite, + COALESCE(i.majorat,0) majoration, + COALESCE(i.montant,0)+COALESCE(i.penalite,0)+COALESCE(i.majorat,0) total_imposition + FROM stemichel.impotsra i + join agla.nature n on n.nature=i.nature + left join (select distinct + n0_ilot, + quartier, + libquart + from agla.quartier)q on (q.n0_ilot=i.n0_ilot and q.quartier=i.quartier) + -- WHERE i.annees = '2025' or (i.annees ='2024' and trim(i.nature) in ('3N', '4N', 'YN')) + limit 100 + $db$ + ) AS c ( + terrain varchar, + n0_ilot varchar, + n0_parcel varchar, + quartier varchar, + hauteur varchar, + rue varchar, + entree varchar, + vlcalcule varchar, + vllcalcule varchar, + + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.parcelle p + WHERE p.numero_parcelle = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel) + ) and exists ( + select 1 + from public.ref_rfu_q_quartier_cotonou rq + where rq.rfu_q = trim(c.quartier) + ) + limit nombreLimit + ) LOOP + BEGIN + INSERT INTO parcelle ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + parcelle_id, + source + ) + SELECT + now(), + 35, + false, + now(), + 35, + parcelle_id, + + 'RFU' + FROM ref_rfu_q_quartier_cotonou rq + WHERE rq.rfu_q = parcelle_rfu.q + RETURNING id, code_quartier + INTO l_parcelle_id_parent, l_code_quartier; + + RAISE NOTICE 'Nombre impositions migrées : %', l_count; + END ; + END LOOP ; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_parcelle_and_enquete_parcelle.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_parcelle_and_enquete_parcelle.sql new file mode 100644 index 0000000..32866c6 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_parcelle_and_enquete_parcelle.sql @@ -0,0 +1,250 @@ +CREATE OR REPLACE PROCEDURE public.import_parcelle_and_enqueteparc_from_rfu_cipe(in nombreLimit numeric) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +l_count numeric := 0; + parcelle_rfu record; + l_parcelle_id_parent bigint; + l_code_quartier varchar(20); +BEGIN +FOR parcelle_rfu IN ( + SELECT + trim(quartier)||'-'||trim(n0_ilot)||'-'||trim(n0_parcel) AS numero_parcelle, + terrain, + trim(n0_ilot) AS i, + trim(n0_parcel) AS p, + trim(quartier) AS q, + hauteur, + rue AS numero_rue, + entree AS num_entree_parcelle, + surface, + vlcalcule, + vllcalcule, + loue, + zones, + acces, + cloture, + inonde, + finexempt, + habite, + ordures, + "usage", + wc, + choix, + occupant, + nb_bat, + nb_prop, + nb_log, + nb_unit, + nb_mena, + nb_habit, + nb_act, + nb_contrib, + typeparc, + prixm2ne, + ifu, + n0_contrib, + secteur, + cipe + FROM dblink( + 'connexion_rfu', + $db$ + SELECT + terrain, + n0_ilot, + n0_parcel, + quartier, + hauteur, + rue, + entree, + vlcalcule, + vllcalcule, + loue, + zones, + acces, + cloture, + inonde, + finexempt, + habite, + ordures, + surface, + "usage", + wc, + choix, + occupant, + nb_bat, + nb_prop, + nb_log, + nb_unit, + nb_mena, + nb_habit, + nb_act, + nb_contrib, + typeparc, + prixm2ne, + ifu, + n0_contrib, + secteur, + cipe + FROM stemichel.parcelle + $db$ + ) AS c ( + terrain varchar, + n0_ilot varchar, + n0_parcel varchar, + quartier varchar, + hauteur varchar, + rue varchar, + entree varchar, + vlcalcule varchar, + vllcalcule varchar, + loue varchar, + zones varchar, + acces varchar, + cloture varchar, + inonde varchar, + finexempt varchar, + habite varchar, + ordures varchar, + surface varchar, + "usage" varchar, + wc varchar, + choix varchar, + occupant varchar, + nb_bat varchar, + nb_prop varchar, + nb_log varchar, + nb_unit varchar, + nb_mena varchar, + nb_habit varchar, + nb_act varchar, + nb_contrib varchar, + typeparc varchar, + prixm2ne varchar, + ifu varchar, + n0_contrib varchar, + secteur varchar, + cipe varchar + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.parcelle p + WHERE p.numero_parcelle = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel) + ) and exists ( + select 1 + from public.ref_rfu_q_quartier_cotonou rq + where rq.rfu_q = trim(c.quartier) + ) + limit nombreLimit + ) LOOP +BEGIN +INSERT INTO parcelle ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + numero_parcelle, + qip, + type_domaine_id, + i, + p, + q, + code_quartier, + nature_domaine_id, + superficie, + altitude, + num_entree_parcelle, + numero_rue, + usage_id, + source +) +SELECT + now(), + 35, + false, + now(), + 35, + parcelle_rfu.numero_parcelle, + parcelle_rfu.numero_parcelle, + CASE parcelle_rfu.terrain + WHEN '1' THEN 2 + WHEN '2' THEN 5 + WHEN '3' THEN 4 + END, + parcelle_rfu.i, + parcelle_rfu.p, + parcelle_rfu.q, + rq.code_quartier, + CASE parcelle_rfu.typeparc + WHEN '1' THEN 23 + WHEN '2' THEN 27 + WHEN '3' THEN 28 + WHEN '4' THEN 29 + END, + CASE + WHEN replace(trim(parcelle_rfu.surface), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(parcelle_rfu.surface, ',', '.')::numeric +END, + CASE + WHEN replace(trim(parcelle_rfu.hauteur), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(parcelle_rfu.hauteur, ',', '.')::numeric +END, + parcelle_rfu.num_entree_parcelle, + parcelle_rfu.numero_rue, + case parcelle_rfu.usage + WHEN '01' THEN 3 + WHEN '02' THEN 4 + WHEN '03' THEN 5 + WHEN '04' THEN 6 + WHEN '05' THEN 7 + WHEN '11' THEN 8 + WHEN '12' THEN 9 + WHEN '13' THEN 10 + WHEN '14' THEN 11 + WHEN '21' THEN 12 + WHEN '22' THEN 13 + WHEN '23' THEN 14 + WHEN '24' THEN 15 + WHEN '25' THEN 16 +END, + 'RFU' + FROM ref_rfu_q_quartier_cotonou rq + WHERE rq.rfu_q = parcelle_rfu.q + RETURNING id, code_quartier + INTO l_parcelle_id_parent, l_code_quartier; +EXCEPTION WHEN NO_DATA_FOUND THEN + RAISE NOTICE 'Quartier RFU non trouvé pour %', parcelle_rfu.q; +CONTINUE; + --RAISE NOTICE 'Parcelle insérée : %, %', l_parcelle_id_parent, parcelle_rfu.q; +END; +------------------------------appel de enquete_parcelle------------------ +CALL import_enqueteparc_from_rfu_cipe(parcelle_rfu, l_parcelle_id_parent); + +INSERT INTO secteur_decoupage ( + created_at, created_by, deleted, updated_at, updated_by, + date_debut, quartier_id, secteur_id, arrondissement_id, source +) +SELECT + now(), 35, false, now(), 35, + now(), q.id, s.id,a.id, 'RFU' +FROM ref_cipe_secteur_rfu_cotonou rcs + JOIN secteur s ON s.code= rcs.code_secteur + JOIN quartier q ON q.code = l_code_quartier + left join arrondissement a on a.id=q.arrondissement_id +WHERE rcs.cipe = parcelle_rfu.cipe + AND rcs.secteur = parcelle_rfu.secteur + ON CONFLICT (quartier_id, secteur_id) DO NOTHING; + +l_count := l_count + 1; +END LOOP; + +UPDATE parcelle p +SET quartier_id = q.id + FROM quartier q +WHERE q.code = p.code_quartier; + +RAISE NOTICE 'Nombre de parcelles migrées : %', l_count; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_personne.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_personne.sql new file mode 100644 index 0000000..8e143da --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_personne.sql @@ -0,0 +1,128 @@ + +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + +--SELECT dblink_disconnect('connexion_rfu'); + +CREATE OR REPLACE PROCEDURE public.import_personne_from_rfu() +LANGUAGE plpgsql +AS $procedure$ +BEGIN +INSERT INTO public.personne ( + date_naissance_ou_consti, + ifu, + lieu_naissance, + nom, + prenom, + raison_sociale, + npi, + num_ravip, + tel1, + tel2, + adresse, + created_at, + created_by, + deleted, + updated_at, + updated_by, + nc, + sexe, + profession, + source +) +SELECT + CASE + WHEN c.date_nais IS NULL OR c.date_nais = '' THEN NULL + + -- format incorrect (pas exactement 8 chiffres) + WHEN c.date_nais !~ '^[0-9]{8}$' THEN NULL + + -- date invalide réelle + WHEN to_char(to_date(c.date_nais, 'YYYYMMDD'), 'YYYYMMDD') <> c.date_nais THEN NULL + + ELSE to_date(c.date_nais, 'YYYYMMDD') + END, + c.ifu, + c.lieu_nais, + case + when (trim(c.nom_c)<>'' and trim(c.prenoms_c)<>'') then c.nom_c + when (trim(c.nom_c)='' and trim(c.prenoms_c)='' and trim(c.prenoms)<>'') then c.nom + end as nom, + case + when (trim(c.nom_c)<>'' and trim(c.prenoms_c)<>'') then c.prenoms_c + when (trim(c.nom_c)='' and trim(c.prenoms_c)='' and trim(c.prenoms)<>'') then c.prenoms + end as prenom, + case + when (trim(c.nom_c)='' and trim(c.prenoms_c)='' and trim(c.prenoms)='') then c.nom + when (trim(c.nom_c)<>'' and trim(c.prenoms_c)<>'' and trim(c.prenoms)='') then c.nom + end as raison_sociale, + --c.nom, + NULL::varchar, + NULL::varchar, + --c.prenoms, + c.autradr1, + c.autradr2, + COALESCE(c.quartier_c, '') || '_' || + COALESCE(c.ilot_c, '') || '_' || + COALESCE(c.parcel_c, ''), + now(), + NULL::bigint, + false, + now(), + NULL::bigint, + c.n0_contrib, + CASE c.sexe + WHEN '1' THEN 'MASCULIN' + WHEN '2' THEN 'FEMININ' + ELSE NULL + END, + c.profession, + 'RFU' +FROM dblink( + 'connexion_rfu', + $db$ + SELECT + date_nais, + ifu, + lieu_nais, + nom, + prenoms, + nom_c, + prenoms_c, + autradr1, + autradr2, + quartier_c, + ilot_c, + parcel_c, + n0_contrib, + sexe, + profession + FROM stemichel.contrib + -- WHERE ifu IS NOT NULL + $db$ + ) AS c ( + date_nais varchar, + ifu varchar, + lieu_nais varchar, + nom varchar, + prenoms varchar, + nom_c varchar, + prenoms_c varchar, + autradr1 varchar, + autradr2 varchar, + quartier_c varchar, + ilot_c varchar, + parcel_c varchar, + n0_contrib varchar, + sexe varchar, + profession varchar + ) +WHERE NOT EXISTS ( + SELECT 1 + FROM public.personne p + WHERE p.nc = c.n0_contrib +); +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_synchro_personne_sigibe.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_synchro_personne_sigibe.sql new file mode 100644 index 0000000..a8f3407 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_synchro_personne_sigibe.sql @@ -0,0 +1,82 @@ + +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + +--SELECT dblink_disconnect('connexion_rfu'); + +SELECT dblink_connect( + 'connexion_sigibe_lecture', + 'host=10.4.80.71 port=5433 dbname=sigibe user=sigibe_lecture password=lec243R6Khsg' + ); + +CREATE OR REPLACE PROCEDURE public.maj_personne_from_sigibe() + LANGUAGE plpgsql + AS $procedure$ + DECLARE + +BEGIN +UPDATE personne p +SET + nom = CASE + WHEN s.nom IS NOT NULL THEN s.nom + ELSE p.nom + END, + prenom = CASE + WHEN s.prenom IS NOT NULL THEN s.prenom + ELSE p.prenom + END, + raison_sociale = CASE + WHEN s.id_tiers_type = 'PM' + AND s.l_contribuable IS NOT NULL + THEN s.l_contribuable + ELSE p.raison_sociale + END, + tel1 = s.telephone, + numero_rccm = s.numero_rccm, + date_rccm = CASE + WHEN s.date_rccm IS NOT NULL + AND trim(s.date_rccm) <> '' + THEN s.date_rccm::date + ELSE p.date_rccm +END, + email = s.email, + npi = s.numero_piece_identite, + etat_identification_personne = 'IFU' + FROM ( + SELECT * + FROM dblink( + 'connexion_sigibe_lecture', + ' + SELECT + c.r_contribuable, + t.nom, + t.prenom, + t.id_tiers_type, + t.telephone, + t.numero_rccm, + t.date_rccm, + t.email, + t.numero_piece_identite, + c.l_contribuable + FROM t_contribuable c + JOIN t_tiers t ON t.id_tiers = c.id_tiers + ' + ) + AS s( + r_contribuable varchar, + nom varchar, + prenom varchar, + id_tiers_type varchar, + telephone varchar, + numero_rccm varchar, + date_rccm varchar, + email varchar, + numero_piece_identite varchar, + l_contribuable varchar + ) + ) s + WHERE trim(p.ifu) = s.r_contribuable; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_unite_logement_and_enquete_unite_logement.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_unite_logement_and_enquete_unite_logement.sql new file mode 100644 index 0000000..5f47242 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_cotonou/import_unite_logement_and_enquete_unite_logement.sql @@ -0,0 +1,297 @@ +CREATE OR REPLACE PROCEDURE public.import_uniteLogement_and_enqueteUnitLog_from_rfu(nombreLimit integer) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +l_count numeric := 0; + uniteLogement_rfu record; + l_uniteLogement_id_parent bigint; + l_batiment_id_parent bigint ; + l_personne_id_parent bigint ; +BEGIN + +FOR uniteLogement_rfu IN ( + SELECT + c.n0bat, + c.n0ul, + --c.n0etage, + CASE + WHEN replace(trim(c.n0etage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.n0etage, ',', '.')::numeric + end as n0etage, + c.quartier, + c.n0_ilot, + c.n0_parcel, + c.n0_contrib, + --c.montmenl, + CASE + WHEN replace(trim(c.montmenl), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.montmenl, ',', '.')::numeric + end as montmenl, + --c.surfsol, + CASE + WHEN replace(trim(c.surfsol), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfsol, ',', '.')::numeric + end as surfsol, + --c.surfacelo, + CASE + WHEN replace(trim(c.surfacelo), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfacelo, ',', '.')::numeric + end as surfacelo, + --c.vllcalcule, + CASE + WHEN replace(trim(c.vllcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vllcalcule, ',', '.')::numeric + end as vllcalcule, + --c.bail, + CASE + WHEN replace(trim(c.bail), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.bail, ',', '.')::numeric + end as bail, + --c.nbetage, + CASE + WHEN replace(trim(c.nbetage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbetage, ',', '.')::numeric + end as nbetage, + --c.vlcalcule, + CASE + WHEN replace(trim(c.vlcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vlcalcule, ',', '.')::numeric + end as vlcalcule, + --c.utilisat, + CASE + WHEN replace(trim(c.utilisat), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.utilisat, ',', '.')::numeric + end as utilisat, + --c.finexempt, + CASE + WHEN c.finexempt IS NULL OR c.finexempt = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.finexempt !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.finexempt, 'YYYYMMDD'), 'YYYYMMDD') <> c.finexempt THEN NULL + ELSE to_date(c.finexempt, 'YYYYMMDD') + end as finexempt, + --c.toit + CASE + WHEN replace(trim(c.toit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.toit, ',', '.')::numeric + end as toit, + --nbhabit, + CASE + WHEN replace(trim(c.nbhabit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbhabit, ',', '.')::numeric + end as nbhabit, + --nbmenage, + CASE + WHEN replace(trim(c.nbmenage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmenage, ',', '.')::numeric + end as nbmenage, + --nbmois, + CASE + WHEN replace(trim(c.nbmois), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmois, ',', '.')::numeric + end as nbmois, + --electric, + CASE + WHEN trim(c.electric)='Non' + THEN false + else + true + end as electric, + --eau, + CASE + WHEN trim(c.eau)='Non' + THEN false + else + true + end as eau, + --nbpiece, + CASE + WHEN replace(trim(c.nbpiece), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbpiece, ',', '.')::numeric + end as nbpiece, + --nbunite + CASE + WHEN replace(trim(c.nbunite), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbunite, ',', '.')::numeric + end as nbunite, + CASE + WHEN c.mdate IS NULL OR c.mdate = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.mdate !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.mdate, 'YYYYMMDD'), 'YYYYMMDD') <> c.mdate THEN NULL + ELSE to_date(c.mdate, 'YYYYMMDD') + end as mdate, + --c.murs, + CASE + WHEN replace(trim(c.murs), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.murs, ',', '.')::numeric + end as murs, + --standing + CASE + WHEN replace(trim(c.standing), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.standing, ',', '.')::numeric + end as standing + FROM dblink( + 'connexion_rfu', + $db$ + select distinct + ul.n0bat, + ul.n0ul, + ul.n0etage, + ul.quartier, + ul.n0_ilot, + ul.n0_parcel, + ul.n0_contrib, + ul.montmenl, + ul.surfsol, + ul.surfacelo, + ul.vllcalcule, + ul.bail, + --ul.valloest, + ul.nbetage, + ul.vlcalcule, + ul.utilisat, + ul.finexempt, + ul.nbunitlo, + ul.toit, + ul.nbhabit, + ul.nbmenage, + ul.nbmois, + ul.electric, + ul.eau, + ul.nbpiece, + ul.nbunite, + ul.mdate, + ul.murs, + ul.standing + FROM akpakpa.unitlog ul + $db$ + ) AS c ( + n0bat varchar, + n0ul varchar, + n0etage varchar, + quartier varchar, + n0_ilot varchar, + n0_parcel varchar, + n0_contrib varchar, + montmenl varchar, + surfsol varchar, + surfacelo varchar, + vllcalcule varchar, + bail varchar, + --valloest varchar, + nbetage varchar, + vlcalcule varchar, + utilisat varchar, + finexempt varchar, + nbunitlo varchar, + toit varchar, + nbhabit varchar, + nbmenage varchar, + nbmois varchar, + electric varchar, + eau varchar, + nbpiece varchar, + nbunite varchar, + mdate varchar, + murs varchar, + standing varchar + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.unite_logement ul + WHERE ul.code = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel)||'-'||trim(c.n0bat)||'-'||trim(c.n0ul) + ) + limit nombreLimit + ) +LOOP + -- Récupération ID batiment locale +SELECT b.id +INTO l_batiment_id_parent +FROM public.batiment b +WHERE b.code = + trim(uniteLogement_rfu.quartier)||'-'||trim(uniteLogement_rfu.n0_ilot)||'-'||trim(uniteLogement_rfu.n0_parcel)||'-'||trim(uniteLogement_rfu.n0bat) + LIMIT 1; + +-- Récupération ID personne locale +SELECT p.id +INTO l_personne_id_parent +FROM public.personne p +WHERE p.nc =trim(uniteLogement_rfu.n0_contrib) + LIMIT 1; + + +-- Insertion unite logement local +INSERT INTO public.unite_logement( + created_at, + created_by, + deleted, + updated_at, + updated_by, + code, + nul, + numero_etage, + batiment_id, + --personne_id, + source, + superficie_au_sol, + superficie_louee, + categorie_batiment_id, + montant_locatif_annuel_calcule, + montant_locatif_annuel_declare, + montant_mensuel_location, + valeur_unite_logement_estime, + usage_id, + date_fin_exemption, + id_toit_rfu, + valeur_unite_logement_calcule, + nombre_etage +) +VALUES ( + now(), + 35, + false, + now(), + 35, + trim(uniteLogement_rfu.quartier)||'-'||trim(uniteLogement_rfu.n0_ilot)||'-'||trim(uniteLogement_rfu.n0_parcel)||'-'||trim(uniteLogement_rfu.n0bat)||'-'||trim(uniteLogement_rfu.n0ul), + uniteLogement_rfu.n0ul, + uniteLogement_rfu.n0etage, + l_batiment_id_parent, + -- l_personne_id_parent, + 'RFU', + uniteLogement_rfu.surfsol, + uniteLogement_rfu.surfacelo, + ProcedureRecupCategorieRFU(uniteLogement_rfu.nbetage::integer,uniteLogement_rfu.toit::integer), + uniteLogement_rfu.vllcalcule, + uniteLogement_rfu.bail, + uniteLogement_rfu.montmenl, + uniteLogement_rfu.vlcalcule, + CASE uniteLogement_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + END, + uniteLogement_rfu.finexempt, + uniteLogement_rfu.toit, + uniteLogement_rfu.vlcalcule, + uniteLogement_rfu.nbetage + ) + RETURNING id INTO l_uniteLogement_id_parent; + +call public.import_enqueteUnitLog_from_rfu_cipe( + uniteLogement_rfu, + l_uniteLogement_id_parent, + l_personne_id_parent + ); + +l_count := l_count + 1; + +END LOOP; + +RAISE NOTICE 'Nombre de unité de logement insérés : %', l_count; + +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_assignation_personne_cotonou.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_assignation_personne_cotonou.sql new file mode 100644 index 0000000..0a6fa9f --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_assignation_personne_cotonou.sql @@ -0,0 +1,95 @@ + +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + +--SELECT dblink_disconnect('connexion_rfu'); +--SELECT pg_size_pretty(pg_database_size('rfu')); + +CREATE OR REPLACE PROCEDURE public.import_assignation_centre_personne_from_rfu_cotonou() +LANGUAGE plpgsql +AS $procedure$ +BEGIN +INSERT INTO public.commune_centre_assignation ( + nc, + ifu, + commune_id, + structure_id, + personne_id, + parcelle_id, + created_at, + created_by, + deleted, + updated_at, + updated_by, + source +) +SELECT + c.n0_contrib, + c.ifu, + 70, + case rcdi + when 'A' then 61 + when 'B' then 62 + when 'C' then 63 + when 'D' then 64 + else null + end, + pers.id, + parc.id, + now(), + NULL::bigint, + false, + now(), + NULL::bigint, + 'RFU' +FROM dblink( + 'connexion_rfu', + $db$ + SELECT distinct on (ifu,rcdi) + trim(ifu), + trim(n0_contrib), + trim(rcdi), + trim(quartier_c), + trim(ilot_c), + trim(parcel_c) + FROM stemichel.contrib + order by ifu,rcdi + $db$ + ) AS c ( + ifu varchar, + n0_contrib varchar, + rcdi varchar, + quartier_c varchar, + ilot_c varchar, + parcel_c varchar + ) +LEFT JOIN personne pers on trim(pers.ifu)=trim(c.ifu) +LEFT JOIN parcelle parc on (trim(parc.q) = trim(c.quartier_c) + and trim(parc.i) = trim(c.ilot_c) + and trim(parc.p) = trim(c.parcel_c)) +WHERE NOT EXISTS ( + SELECT 1 + FROM public.commune_centre_assignation cca + WHERE cca.personne_id = pers.id + and cca.structure_id = case trim(c.rcdi) + when 'A' then 61 + when 'B' then 62 + when 'C' then 63 + when 'D' then 64 + else null + end + and cca.commune_id = 70 +) +ON CONFLICT (structure_id, commune_id, personne_id) DO NOTHING; + +END; +$procedure$; + +call import_assignation_centre_personne_from_rfu_cotonou(); + +--delete from commune_centre_assignation; + + +--select * from commune_centre_assignation; diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_batiment_and_enquete_batiment.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_batiment_and_enquete_batiment.sql new file mode 100644 index 0000000..c2c28b2 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_batiment_and_enquete_batiment.sql @@ -0,0 +1,287 @@ +CREATE OR REPLACE PROCEDURE public.import_batiment_and_enquetebati_from_rfu(nombreLimit integer) +LANGUAGE plpgsql +AS $$ +DECLARE +l_count numeric := 0; + batiment_rfu record; + l_batiment_id_parent bigint; + l_parcelle_id_parent bigint ; +BEGIN + +FOR batiment_rfu IN ( + SELECT + c.n0bat, + --dtconst, + CASE + WHEN c.dtconst IS NULL OR c.dtconst = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.dtconst !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.dtconst, 'YYYYMMDD'), 'YYYYMMDD') <> c.dtconst THEN NULL + ELSE to_date(c.dtconst, 'YYYYMMDD') + end as dtconst, + c.quartier, + c.n0_ilot, + c.n0_parcel, + --c.surfsol, + CASE + WHEN replace(trim(c.surfsol), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfsol, ',', '.')::numeric + end as surfsol, + --c.surfacelo, + CASE + WHEN replace(trim(c.surfacelo), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfacelo, ',', '.')::numeric + end as surfacelo, + --c.vllcalcule, + CASE + WHEN replace(trim(c.vllcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vllcalcule, ',', '.')::numeric + end as vllcalcule, + --c.bail, + CASE + WHEN replace(trim(c.bail), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.bail, ',', '.')::numeric + end as bail, + --c.valloest, + CASE + WHEN replace(trim(c.valloest), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.valloest, ',', '.')::numeric + end as valloest, + --c.nbetage, + CASE + WHEN replace(trim(c.nbetage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbetage, ',', '.')::numeric + end as nbetage, + --c.vlcalcule, + CASE + WHEN replace(trim(c.vlcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vlcalcule, ',', '.')::numeric + end as vlcalcule, + --c.utilisat, + CASE + WHEN replace(trim(c.utilisat), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.utilisat, ',', '.')::numeric + end as utilisat, + --c.finexempt, + CASE + WHEN c.finexempt IS NULL OR c.finexempt = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.finexempt !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.finexempt, 'YYYYMMDD'), 'YYYYMMDD') <> c.finexempt THEN NULL + ELSE to_date(c.finexempt, 'YYYYMMDD') + end as finexempt, + --c.nbunitlo, + CASE + WHEN replace(trim(c.nbunitlo), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbunitlo, ',', '.')::numeric + end as nbunitlo, + --c.toit + CASE + WHEN replace(trim(c.toit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.toit, ',', '.')::numeric + end as toit, + --nbhabit, + CASE + WHEN replace(trim(c.nbhabit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbhabit, ',', '.')::numeric + end as nbhabit, + --nbmenage, + CASE + WHEN replace(trim(c.nbmenage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmenage, ',', '.')::numeric + end as nbmenage, + --nbmois, + CASE + WHEN replace(trim(c.nbmois), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmois, ',', '.')::numeric + end as nbmois, + --electric, + CASE + WHEN trim(c.electric)='Non' + THEN false + else + true + end as electric, + --eau, + CASE + WHEN trim(c.eau)='Non' + THEN false + else + true + end as eau, + --nbpiece, + CASE + WHEN replace(trim(c.nbpiece), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbpiece, ',', '.')::numeric + end as nbpiece, + --nbunite + CASE + WHEN replace(trim(c.nbunite), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbunite, ',', '.')::numeric + end as nbunite, + CASE + WHEN c.mdate IS NULL OR c.mdate = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.mdate !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.mdate, 'YYYYMMDD'), 'YYYYMMDD') <> c.mdate THEN NULL + ELSE to_date(c.mdate, 'YYYYMMDD') + end as mdate, + --c.murs, + CASE + WHEN replace(trim(c.murs), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.murs, ',', '.')::numeric + end as murs, + --standing + CASE + WHEN replace(trim(c.standing), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.standing, ',', '.')::numeric + end as standing + FROM dblink( + 'connexion_rfu', + $db$ + SELECT + b.n0bat, + b.dtconst, + b.quartier, + b.n0_ilot, + b.n0_parcel, + b.surfsol, + b.surfacelo, + b.vllcalcule, + b.bail, + b.valloest, + b.nbetage, + b.vlcalcule, + b.utilisat, + b.finexempt, + b.nbunitlo, + b.toit, + b.nbhabit, + b.nbmenage, + b.nbmois, + b.electric, + b.eau, + b.nbpiece, + b.nbunite, + b.mdate, + b.murs, + b.standing + FROM stemichel.batiment b + $db$ + ) AS c ( + n0bat varchar, + dtconst varchar, + quartier varchar, + n0_ilot varchar, + n0_parcel varchar, + surfsol varchar, + surfacelo varchar, + vllcalcule varchar, + bail varchar, + valloest varchar, + nbetage varchar, + vlcalcule varchar, + utilisat varchar, + finexempt varchar, + nbunitlo varchar, + toit varchar, + nbhabit varchar, + nbmenage varchar, + nbmois varchar, + electric varchar, + eau varchar, + nbpiece varchar, + nbunite varchar, + mdate varchar, + murs varchar, + standing varchar + + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.batiment b + WHERE b.code = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel)||'-'||trim(c.n0bat) + ) + limit nombreLimit + ) +LOOP + -- Récupération ID parcelle locale +SELECT p.id +INTO l_parcelle_id_parent +FROM public.parcelle p +WHERE p.numero_parcelle = + trim(batiment_rfu.quartier)||'-'||trim(batiment_rfu.n0_ilot)||'-'||trim(batiment_rfu.n0_parcel) + LIMIT 1; + + +-- Insertion bâtiment local +INSERT INTO public.batiment ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + code, + nub, + date_construction, + parcelle_id, + source, + superficie_au_sol, + superficie_louee, + categorie_batiment_id, + montant_locatif_annuel_calcule, + montant_locatif_annuel_declare, + montant_locatif_annuel_estime, + nombre_etage, + valeur_batiment_calcule, + usage_id, + date_fin_exemption, + nbre_unite_logement, + id_toit_rfu +) +VALUES ( + now(), + 35, + false, + now(), + 35, + trim(batiment_rfu.quartier)||'-'||trim(batiment_rfu.n0_ilot)||'-'||trim(batiment_rfu.n0_parcel)||'-'||trim(batiment_rfu.n0bat), + batiment_rfu.n0bat, + batiment_rfu.dtconst, + l_parcelle_id_parent, + 'RFU', + batiment_rfu.surfsol, + batiment_rfu.surfacelo, + ProcedureRecupCategorieRFU(batiment_rfu.nbetage::integer,batiment_rfu.toit::integer), + batiment_rfu.vllcalcule, + batiment_rfu.bail, + batiment_rfu.valloest, + batiment_rfu.nbetage, + batiment_rfu.vlcalcule, + --------- batiment_rfu.utilisat, + CASE batiment_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + END, + batiment_rfu.finexempt, + batiment_rfu.nbunitlo, + batiment_rfu.toit + ) + + RETURNING id INTO l_batiment_id_parent ; + +call public.import_enquetebati_from_rfu_cipe(batiment_rfu,l_batiment_id_parent); + +l_count := l_count + 1; + +END LOOP; + +RAISE NOTICE 'Nombre de bâtiments insérés : %', l_count; + +END; +$$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_batiment.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_batiment.sql new file mode 100644 index 0000000..83a459a --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_batiment.sql @@ -0,0 +1,158 @@ +CREATE OR REPLACE PROCEDURE public.import_enquetebati_from_rfu_cipe( + IN batiment_rfu record, + IN batiment_id_param numeric +) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +enquete_batiment_id_parent bigint; +BEGIN +INSERT INTO enquete_batiment ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + date_fin_excemption, + nbre_habitant, + nbre_menage, + nbre_mois_location, + nbre_unite_location, + sbee, + soneb, + batiment_id, + personne_id, + user_id, + montant_locatif_annuel_declare, + nbre_etage, + source, + date_enquete, + observation, + superficie_au_sol, + superficie_louee, + statut_enquete, + categorie_batiment_id, + montant_locatif_annuel_calcule, + usage_id, + montant_locatif_annuel_estime, + nbre_piece, + nbre_unite_logement, + valeur_batiment_calcule, + nbre_lot_unite +) select + now(), + 35, + false, + now(), + 35, + batiment_rfu.finexempt, + batiment_rfu.nbhabit, + batiment_rfu.nbmenage, + batiment_rfu.nbmois, + batiment_rfu.nbunitlo, + batiment_rfu.electric, + batiment_rfu.eau, + batiment_id_param, + e.personne_id, + 35, + batiment_rfu.bail, + batiment_rfu.nbetage, + 'RFU', + batiment_rfu.mdate, + 'MIGRATION', + batiment_rfu.surfsol, + batiment_rfu.surfacelo, + 'CLOTURE', + ProcedureRecupCategorieRFU(batiment_rfu.nbetage::integer,batiment_rfu.toit::integer), + batiment_rfu.vllcalcule, + --batiment_rfu.utilisat, + CASE batiment_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + end, + batiment_rfu.valloest, + batiment_rfu.nbpiece, + batiment_rfu.nbunite, + batiment_rfu.vlcalcule, + batiment_rfu.nbunitlo +from batiment b + left join parcelle p on p.id=b.parcelle_id + left join enquete e on e.parcelle_id=p.id +where b.id = batiment_id_param + and not exists ( + select 1 + from enquete_batiment eb + where eb.batiment_id = b.id +) + + RETURNING id INTO enquete_batiment_id_parent ; + +----------MAJ Caractéristique parcelle +INSERT INTO caracteristique_batiment ( + created_by, + created_at, + updated_by, + updated_at, + deleted, + caracteristique_id, + enquete_batiment_id +) +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.toit + WHEN 1 THEN 55 + WHEN 2 THEN 56 + WHEN 3 THEN 57 + WHEN 4 THEN 58 + WHEN 5 THEN 59 + WHEN 6 THEN 60 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.toit IS NOT NULL + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.murs + WHEN 1 THEN 49 + WHEN 2 THEN 50 + WHEN 3 THEN 51 + WHEN 4 THEN 52 + WHEN 5 THEN 53 + else + 54 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.murs IS NOT null + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.standing + WHEN 1 THEN 81 + WHEN 2 THEN 82 + WHEN 3 THEN 83 + WHEN 4 THEN 84 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.standing IS NOT null + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.utilisat + WHEN 1 THEN 35 + WHEN 2 THEN 36 + WHEN 3 THEN 37 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.utilisat IS NOT null; + +------MAJ Exercice +UPDATE enquete_batiment eb +SET exercice_id = e.id + FROM exercice e +WHERE e.annee = 2025 + AND eb.id = enquete_batiment_id_parent; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_parcelle.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_parcelle.sql new file mode 100644 index 0000000..c6d84bc --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_parcelle.sql @@ -0,0 +1,153 @@ +CREATE OR REPLACE PROCEDURE public.import_enqueteparc_from_rfu_cipe( + IN parcelle_rfu record, + IN p_parcelle_id numeric +) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +enquete_id_parent bigint; +BEGIN +INSERT INTO enquete ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + date_enquete, + litige, + parcelle_id, + user_id, + date_finalisation, + date_synchronisation, + date_validation, + status_enquete, + synchronise, + code_parcelle, + nbre_batiment, + nbre_co_proprietaire, + nom_rue, + num_enter_parcelle, + num_rue, + superficie, + equipe_id, + zone_rfu_id, + campagne_id, + origine_enquete, + nc_proprietaire, + source +) select + now(), + 35, + false, + now(), + 35, + now(), + false, + p_parcelle_id, + 35, + now(), + now(), + now(), + 'CLOTURE', + true, + parcelle_rfu.numero_parcelle, + CASE + WHEN trim(parcelle_rfu.nb_bat) ~ '^[0-9]+$' + THEN parcelle_rfu.nb_bat::integer + ELSE NULL +END, + CASE + WHEN trim(parcelle_rfu.nb_prop) ~ '^[0-9]+$' + THEN parcelle_rfu.nb_prop::integer + ELSE NULL +END, + parcelle_rfu.numero_rue, + parcelle_rfu.num_entree_parcelle, + parcelle_rfu.numero_rue, + CASE + WHEN trim(parcelle_rfu.surface) ~ '^[0-9]+$' + THEN parcelle_rfu.surface::float + ELSE NULL +END, + 1, + CASE parcelle_rfu.zones + WHEN '1' THEN 1 + WHEN '2' THEN 2 + WHEN '3' THEN 3 + WHEN '4' THEN 4 + ELSE NULL +END, + 1, + 'RFU', + parcelle_rfu.n0_contrib, + 'RFU' + --from parcelle p + where not exists ( + select 1 + from enquete e + where e.parcelle_id= p_parcelle_id + ) + + RETURNING id INTO enquete_id_parent ; + + ----------MAJ Caractéristique parcelle +INSERT INTO caracteristique_parcelle ( + created_by, + created_at, + updated_by, + updated_at, + deleted, + caracteristique_id, + enquete_id +) +SELECT 35, now(), 35, now(), false, + CASE parcelle_rfu.acces + WHEN '1' THEN 31 + WHEN '2' THEN 32 + WHEN '3' THEN 33 + WHEN '4' THEN 34 + END, + enquete_id_parent + WHERE parcelle_rfu.acces IS NOT NULL + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE parcelle_rfu.cloture + WHEN '1' THEN 28 + WHEN '2' THEN 29 + WHEN '3' THEN 30 + END, + enquete_id_parent + WHERE parcelle_rfu.cloture IS NOT NULL; + +------MAJ Exercice +UPDATE enquete q +SET exercice_id = e.id + FROM exercice e +WHERE e.annee = 2025 + AND q.id = enquete_id_parent; + +------MAJ prietaire +UPDATE enquete q +SET personne_id = p.id, + proprietaire_id = p.id, + nom_proprietaire_parcelle = coalesce (trim(p.raison_sociale), trim(p.nom) || ' '|| trim(p.prenom) ) + FROM personne p +WHERE p.nc = parcelle_rfu.n0_contrib + AND q.id = enquete_id_parent; + +--quartier_id --commune_id --departement_id --arrondissement_id +UPDATE enquete e +SET quartier_id = q.id, + commune_id=c.id, + departement_id=c.departement_id, + arrondissement_id= a.id + FROM parcelle p + inner join quartier q on q.id = p.quartier_id + inner join arrondissement a on a.id = q.arrondissement_id + inner join commune c on c.id = a.commune_id +WHERE p.id = p_parcelle_id + AND e.id = enquete_id_parent; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_unite_logement.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_unite_logement.sql new file mode 100644 index 0000000..f29238a --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_enquete_unite_logement.sql @@ -0,0 +1,156 @@ +CREATE OR REPLACE PROCEDURE public.import_enqueteUnitLog_from_rfu_cipe( + IN uniteLogement_rfu record, + IN uniteLogement_id_param numeric, + IN l_personne_id_parent numeric +) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +enquete_uniteLogement_id_parent bigint; +BEGIN +INSERT INTO enquete_unite_logement ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + en_location, + montant_locatif_annuel_declare, + nbre_habitant, + nbre_menage, + nbre_piece, + sbee, + soneb, + personne_id, + unite_logement_id, + user_id, + nbre_mois_location, + valeur_unite_logement_estime, + source, + date_enquete, + observation, + date_fin_exemption, + superficie_au_sol, + superficie_louee, + statut_enquete, + categorie_batiment_id, + montant_locatif_annuel_calcule, + montant_mensuel_location, + usage_id, + valeur_unite_logement_calcule +)select + now(), + 35, + false, + now(), + 35, + case + when uniteLogement_rfu.nbmois=0 then false + else true + end, + uniteLogement_rfu.montmenl*12, + uniteLogement_rfu.nbhabit, + uniteLogement_rfu.nbmenage, + uniteLogement_rfu.nbpiece, + uniteLogement_rfu.electric, + uniteLogement_rfu.eau, + l_personne_id_parent, + uniteLogement_id_param, + 35, + uniteLogement_rfu.nbmois, + uniteLogement_rfu.vlcalcule, + 'RFU', + uniteLogement_rfu.mdate, + 'MIGRATION', + uniteLogement_rfu.finexempt, + uniteLogement_rfu.surfsol, + uniteLogement_rfu.surfacelo, + 'CLOTURE', + ProcedureRecupCategorieRFU(uniteLogement_rfu.n0etage::integer,uniteLogement_rfu.toit::integer), + uniteLogement_rfu.vllcalcule, + uniteLogement_rfu.montmenl, + CASE uniteLogement_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + END, + uniteLogement_rfu.vlcalcule +from unite_logement ul +where ul.id = uniteLogement_id_param + and not exists ( + select 1 + from enquete_unite_logement eul + where eul.unite_logement_id = ul.id +) + + RETURNING id INTO enquete_uniteLogement_id_parent ; + +----------MAJ Caractéristique Unite de logement +INSERT INTO caracteristique_unite_logement ( + created_by, + created_at, + updated_by, + updated_at, + deleted, + caracteristique_id, + enquete_unite_logement_id +) +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.toit + WHEN 1 THEN 55 + WHEN 2 THEN 56 + WHEN 3 THEN 57 + WHEN 4 THEN 58 + WHEN 5 THEN 59 + WHEN 6 THEN 60 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.toit IS NOT NULL + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.murs + WHEN 1 THEN 49 + WHEN 2 THEN 50 + WHEN 3 THEN 51 + WHEN 4 THEN 52 + WHEN 5 THEN 53 + else + 54 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.murs IS NOT null + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.standing + WHEN 1 THEN 81 + WHEN 2 THEN 82 + WHEN 3 THEN 83 + WHEN 4 THEN 84 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.standing IS NOT null + +UNION ALL + + +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.utilisat + WHEN 1 THEN 35 + WHEN 2 THEN 36 + WHEN 3 THEN 37 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.standing IS NOT null; + +------MAJ Exercice +UPDATE enquete_unite_logement eul +SET exercice_id = e.id + FROM exercice e +WHERE e.annee = 2025 + AND eul.id = enquete_uniteLogement_id_parent; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_imposition_rfu_cotonou.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_imposition_rfu_cotonou.sql new file mode 100644 index 0000000..45240c9 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_imposition_rfu_cotonou.sql @@ -0,0 +1,99 @@ +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + + +CREATE OR REPLACE PROCEDURE public.import_imposition_rfu_cotonou(in exercice varchar(10), in nombreLimit numeric) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +l_count numeric := 0; + imposition_rfu record; + l_parcelle_id_parent bigint; + l_code_quartier varchar(20); +BEGIN + FOR imposition_rfu IN ( + SELECT FROM dblink( + 'connexion_rfu', + $db$ + SELECT + i.article , + i.ifu , + i.n0_contrib , + i.denome , + i.annees , + i.nature , + n.libnature , + i.quartier, + q.libquart , + i.n0_ilot , + i.n0_parcel , + i.nn, + COALESCE(i.montant,0) droit_simple, + COALESCE(i.penalite,0) penalite, + COALESCE(i.majorat,0) majoration, + COALESCE(i.montant,0)+COALESCE(i.penalite,0)+COALESCE(i.majorat,0) total_imposition + FROM stemichel.impotsra i + join agla.nature n on n.nature=i.nature + left join (select distinct + n0_ilot, + quartier, + libquart + from agla.quartier)q on (q.n0_ilot=i.n0_ilot and q.quartier=i.quartier) + -- WHERE i.annees = '2025' or (i.annees ='2024' and trim(i.nature) in ('3N', '4N', 'YN')) + limit 100 + $db$ + ) AS c ( + terrain varchar, + n0_ilot varchar, + n0_parcel varchar, + quartier varchar, + hauteur varchar, + rue varchar, + entree varchar, + vlcalcule varchar, + vllcalcule varchar, + + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.parcelle p + WHERE p.numero_parcelle = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel) + ) and exists ( + select 1 + from public.ref_rfu_q_quartier_cotonou rq + where rq.rfu_q = trim(c.quartier) + ) + limit nombreLimit + ) LOOP + BEGIN + INSERT INTO parcelle ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + parcelle_id, + source + ) + SELECT + now(), + 35, + false, + now(), + 35, + parcelle_id, + + 'RFU' + FROM ref_rfu_q_quartier_cotonou rq + WHERE rq.rfu_q = parcelle_rfu.q + RETURNING id, code_quartier + INTO l_parcelle_id_parent, l_code_quartier; + + RAISE NOTICE 'Nombre impositions migrées : %', l_count; + END ; + END LOOP ; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_parcelle_and_enquete_parcelle.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_parcelle_and_enquete_parcelle.sql new file mode 100644 index 0000000..32866c6 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_parcelle_and_enquete_parcelle.sql @@ -0,0 +1,250 @@ +CREATE OR REPLACE PROCEDURE public.import_parcelle_and_enqueteparc_from_rfu_cipe(in nombreLimit numeric) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +l_count numeric := 0; + parcelle_rfu record; + l_parcelle_id_parent bigint; + l_code_quartier varchar(20); +BEGIN +FOR parcelle_rfu IN ( + SELECT + trim(quartier)||'-'||trim(n0_ilot)||'-'||trim(n0_parcel) AS numero_parcelle, + terrain, + trim(n0_ilot) AS i, + trim(n0_parcel) AS p, + trim(quartier) AS q, + hauteur, + rue AS numero_rue, + entree AS num_entree_parcelle, + surface, + vlcalcule, + vllcalcule, + loue, + zones, + acces, + cloture, + inonde, + finexempt, + habite, + ordures, + "usage", + wc, + choix, + occupant, + nb_bat, + nb_prop, + nb_log, + nb_unit, + nb_mena, + nb_habit, + nb_act, + nb_contrib, + typeparc, + prixm2ne, + ifu, + n0_contrib, + secteur, + cipe + FROM dblink( + 'connexion_rfu', + $db$ + SELECT + terrain, + n0_ilot, + n0_parcel, + quartier, + hauteur, + rue, + entree, + vlcalcule, + vllcalcule, + loue, + zones, + acces, + cloture, + inonde, + finexempt, + habite, + ordures, + surface, + "usage", + wc, + choix, + occupant, + nb_bat, + nb_prop, + nb_log, + nb_unit, + nb_mena, + nb_habit, + nb_act, + nb_contrib, + typeparc, + prixm2ne, + ifu, + n0_contrib, + secteur, + cipe + FROM stemichel.parcelle + $db$ + ) AS c ( + terrain varchar, + n0_ilot varchar, + n0_parcel varchar, + quartier varchar, + hauteur varchar, + rue varchar, + entree varchar, + vlcalcule varchar, + vllcalcule varchar, + loue varchar, + zones varchar, + acces varchar, + cloture varchar, + inonde varchar, + finexempt varchar, + habite varchar, + ordures varchar, + surface varchar, + "usage" varchar, + wc varchar, + choix varchar, + occupant varchar, + nb_bat varchar, + nb_prop varchar, + nb_log varchar, + nb_unit varchar, + nb_mena varchar, + nb_habit varchar, + nb_act varchar, + nb_contrib varchar, + typeparc varchar, + prixm2ne varchar, + ifu varchar, + n0_contrib varchar, + secteur varchar, + cipe varchar + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.parcelle p + WHERE p.numero_parcelle = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel) + ) and exists ( + select 1 + from public.ref_rfu_q_quartier_cotonou rq + where rq.rfu_q = trim(c.quartier) + ) + limit nombreLimit + ) LOOP +BEGIN +INSERT INTO parcelle ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + numero_parcelle, + qip, + type_domaine_id, + i, + p, + q, + code_quartier, + nature_domaine_id, + superficie, + altitude, + num_entree_parcelle, + numero_rue, + usage_id, + source +) +SELECT + now(), + 35, + false, + now(), + 35, + parcelle_rfu.numero_parcelle, + parcelle_rfu.numero_parcelle, + CASE parcelle_rfu.terrain + WHEN '1' THEN 2 + WHEN '2' THEN 5 + WHEN '3' THEN 4 + END, + parcelle_rfu.i, + parcelle_rfu.p, + parcelle_rfu.q, + rq.code_quartier, + CASE parcelle_rfu.typeparc + WHEN '1' THEN 23 + WHEN '2' THEN 27 + WHEN '3' THEN 28 + WHEN '4' THEN 29 + END, + CASE + WHEN replace(trim(parcelle_rfu.surface), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(parcelle_rfu.surface, ',', '.')::numeric +END, + CASE + WHEN replace(trim(parcelle_rfu.hauteur), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(parcelle_rfu.hauteur, ',', '.')::numeric +END, + parcelle_rfu.num_entree_parcelle, + parcelle_rfu.numero_rue, + case parcelle_rfu.usage + WHEN '01' THEN 3 + WHEN '02' THEN 4 + WHEN '03' THEN 5 + WHEN '04' THEN 6 + WHEN '05' THEN 7 + WHEN '11' THEN 8 + WHEN '12' THEN 9 + WHEN '13' THEN 10 + WHEN '14' THEN 11 + WHEN '21' THEN 12 + WHEN '22' THEN 13 + WHEN '23' THEN 14 + WHEN '24' THEN 15 + WHEN '25' THEN 16 +END, + 'RFU' + FROM ref_rfu_q_quartier_cotonou rq + WHERE rq.rfu_q = parcelle_rfu.q + RETURNING id, code_quartier + INTO l_parcelle_id_parent, l_code_quartier; +EXCEPTION WHEN NO_DATA_FOUND THEN + RAISE NOTICE 'Quartier RFU non trouvé pour %', parcelle_rfu.q; +CONTINUE; + --RAISE NOTICE 'Parcelle insérée : %, %', l_parcelle_id_parent, parcelle_rfu.q; +END; +------------------------------appel de enquete_parcelle------------------ +CALL import_enqueteparc_from_rfu_cipe(parcelle_rfu, l_parcelle_id_parent); + +INSERT INTO secteur_decoupage ( + created_at, created_by, deleted, updated_at, updated_by, + date_debut, quartier_id, secteur_id, arrondissement_id, source +) +SELECT + now(), 35, false, now(), 35, + now(), q.id, s.id,a.id, 'RFU' +FROM ref_cipe_secteur_rfu_cotonou rcs + JOIN secteur s ON s.code= rcs.code_secteur + JOIN quartier q ON q.code = l_code_quartier + left join arrondissement a on a.id=q.arrondissement_id +WHERE rcs.cipe = parcelle_rfu.cipe + AND rcs.secteur = parcelle_rfu.secteur + ON CONFLICT (quartier_id, secteur_id) DO NOTHING; + +l_count := l_count + 1; +END LOOP; + +UPDATE parcelle p +SET quartier_id = q.id + FROM quartier q +WHERE q.code = p.code_quartier; + +RAISE NOTICE 'Nombre de parcelles migrées : %', l_count; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_personne.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_personne.sql new file mode 100644 index 0000000..8e143da --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_personne.sql @@ -0,0 +1,128 @@ + +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + +--SELECT dblink_disconnect('connexion_rfu'); + +CREATE OR REPLACE PROCEDURE public.import_personne_from_rfu() +LANGUAGE plpgsql +AS $procedure$ +BEGIN +INSERT INTO public.personne ( + date_naissance_ou_consti, + ifu, + lieu_naissance, + nom, + prenom, + raison_sociale, + npi, + num_ravip, + tel1, + tel2, + adresse, + created_at, + created_by, + deleted, + updated_at, + updated_by, + nc, + sexe, + profession, + source +) +SELECT + CASE + WHEN c.date_nais IS NULL OR c.date_nais = '' THEN NULL + + -- format incorrect (pas exactement 8 chiffres) + WHEN c.date_nais !~ '^[0-9]{8}$' THEN NULL + + -- date invalide réelle + WHEN to_char(to_date(c.date_nais, 'YYYYMMDD'), 'YYYYMMDD') <> c.date_nais THEN NULL + + ELSE to_date(c.date_nais, 'YYYYMMDD') + END, + c.ifu, + c.lieu_nais, + case + when (trim(c.nom_c)<>'' and trim(c.prenoms_c)<>'') then c.nom_c + when (trim(c.nom_c)='' and trim(c.prenoms_c)='' and trim(c.prenoms)<>'') then c.nom + end as nom, + case + when (trim(c.nom_c)<>'' and trim(c.prenoms_c)<>'') then c.prenoms_c + when (trim(c.nom_c)='' and trim(c.prenoms_c)='' and trim(c.prenoms)<>'') then c.prenoms + end as prenom, + case + when (trim(c.nom_c)='' and trim(c.prenoms_c)='' and trim(c.prenoms)='') then c.nom + when (trim(c.nom_c)<>'' and trim(c.prenoms_c)<>'' and trim(c.prenoms)='') then c.nom + end as raison_sociale, + --c.nom, + NULL::varchar, + NULL::varchar, + --c.prenoms, + c.autradr1, + c.autradr2, + COALESCE(c.quartier_c, '') || '_' || + COALESCE(c.ilot_c, '') || '_' || + COALESCE(c.parcel_c, ''), + now(), + NULL::bigint, + false, + now(), + NULL::bigint, + c.n0_contrib, + CASE c.sexe + WHEN '1' THEN 'MASCULIN' + WHEN '2' THEN 'FEMININ' + ELSE NULL + END, + c.profession, + 'RFU' +FROM dblink( + 'connexion_rfu', + $db$ + SELECT + date_nais, + ifu, + lieu_nais, + nom, + prenoms, + nom_c, + prenoms_c, + autradr1, + autradr2, + quartier_c, + ilot_c, + parcel_c, + n0_contrib, + sexe, + profession + FROM stemichel.contrib + -- WHERE ifu IS NOT NULL + $db$ + ) AS c ( + date_nais varchar, + ifu varchar, + lieu_nais varchar, + nom varchar, + prenoms varchar, + nom_c varchar, + prenoms_c varchar, + autradr1 varchar, + autradr2 varchar, + quartier_c varchar, + ilot_c varchar, + parcel_c varchar, + n0_contrib varchar, + sexe varchar, + profession varchar + ) +WHERE NOT EXISTS ( + SELECT 1 + FROM public.personne p + WHERE p.nc = c.n0_contrib +); +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_synchro_personne_sigibe.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_synchro_personne_sigibe.sql new file mode 100644 index 0000000..a8f3407 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_synchro_personne_sigibe.sql @@ -0,0 +1,82 @@ + +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + +--SELECT dblink_disconnect('connexion_rfu'); + +SELECT dblink_connect( + 'connexion_sigibe_lecture', + 'host=10.4.80.71 port=5433 dbname=sigibe user=sigibe_lecture password=lec243R6Khsg' + ); + +CREATE OR REPLACE PROCEDURE public.maj_personne_from_sigibe() + LANGUAGE plpgsql + AS $procedure$ + DECLARE + +BEGIN +UPDATE personne p +SET + nom = CASE + WHEN s.nom IS NOT NULL THEN s.nom + ELSE p.nom + END, + prenom = CASE + WHEN s.prenom IS NOT NULL THEN s.prenom + ELSE p.prenom + END, + raison_sociale = CASE + WHEN s.id_tiers_type = 'PM' + AND s.l_contribuable IS NOT NULL + THEN s.l_contribuable + ELSE p.raison_sociale + END, + tel1 = s.telephone, + numero_rccm = s.numero_rccm, + date_rccm = CASE + WHEN s.date_rccm IS NOT NULL + AND trim(s.date_rccm) <> '' + THEN s.date_rccm::date + ELSE p.date_rccm +END, + email = s.email, + npi = s.numero_piece_identite, + etat_identification_personne = 'IFU' + FROM ( + SELECT * + FROM dblink( + 'connexion_sigibe_lecture', + ' + SELECT + c.r_contribuable, + t.nom, + t.prenom, + t.id_tiers_type, + t.telephone, + t.numero_rccm, + t.date_rccm, + t.email, + t.numero_piece_identite, + c.l_contribuable + FROM t_contribuable c + JOIN t_tiers t ON t.id_tiers = c.id_tiers + ' + ) + AS s( + r_contribuable varchar, + nom varchar, + prenom varchar, + id_tiers_type varchar, + telephone varchar, + numero_rccm varchar, + date_rccm varchar, + email varchar, + numero_piece_identite varchar, + l_contribuable varchar + ) + ) s + WHERE trim(p.ifu) = s.r_contribuable; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_unite_logement_and_enquete_unite_logement.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_unite_logement_and_enquete_unite_logement.sql new file mode 100644 index 0000000..5f47242 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_parakou/import_unite_logement_and_enquete_unite_logement.sql @@ -0,0 +1,297 @@ +CREATE OR REPLACE PROCEDURE public.import_uniteLogement_and_enqueteUnitLog_from_rfu(nombreLimit integer) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +l_count numeric := 0; + uniteLogement_rfu record; + l_uniteLogement_id_parent bigint; + l_batiment_id_parent bigint ; + l_personne_id_parent bigint ; +BEGIN + +FOR uniteLogement_rfu IN ( + SELECT + c.n0bat, + c.n0ul, + --c.n0etage, + CASE + WHEN replace(trim(c.n0etage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.n0etage, ',', '.')::numeric + end as n0etage, + c.quartier, + c.n0_ilot, + c.n0_parcel, + c.n0_contrib, + --c.montmenl, + CASE + WHEN replace(trim(c.montmenl), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.montmenl, ',', '.')::numeric + end as montmenl, + --c.surfsol, + CASE + WHEN replace(trim(c.surfsol), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfsol, ',', '.')::numeric + end as surfsol, + --c.surfacelo, + CASE + WHEN replace(trim(c.surfacelo), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfacelo, ',', '.')::numeric + end as surfacelo, + --c.vllcalcule, + CASE + WHEN replace(trim(c.vllcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vllcalcule, ',', '.')::numeric + end as vllcalcule, + --c.bail, + CASE + WHEN replace(trim(c.bail), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.bail, ',', '.')::numeric + end as bail, + --c.nbetage, + CASE + WHEN replace(trim(c.nbetage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbetage, ',', '.')::numeric + end as nbetage, + --c.vlcalcule, + CASE + WHEN replace(trim(c.vlcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vlcalcule, ',', '.')::numeric + end as vlcalcule, + --c.utilisat, + CASE + WHEN replace(trim(c.utilisat), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.utilisat, ',', '.')::numeric + end as utilisat, + --c.finexempt, + CASE + WHEN c.finexempt IS NULL OR c.finexempt = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.finexempt !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.finexempt, 'YYYYMMDD'), 'YYYYMMDD') <> c.finexempt THEN NULL + ELSE to_date(c.finexempt, 'YYYYMMDD') + end as finexempt, + --c.toit + CASE + WHEN replace(trim(c.toit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.toit, ',', '.')::numeric + end as toit, + --nbhabit, + CASE + WHEN replace(trim(c.nbhabit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbhabit, ',', '.')::numeric + end as nbhabit, + --nbmenage, + CASE + WHEN replace(trim(c.nbmenage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmenage, ',', '.')::numeric + end as nbmenage, + --nbmois, + CASE + WHEN replace(trim(c.nbmois), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmois, ',', '.')::numeric + end as nbmois, + --electric, + CASE + WHEN trim(c.electric)='Non' + THEN false + else + true + end as electric, + --eau, + CASE + WHEN trim(c.eau)='Non' + THEN false + else + true + end as eau, + --nbpiece, + CASE + WHEN replace(trim(c.nbpiece), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbpiece, ',', '.')::numeric + end as nbpiece, + --nbunite + CASE + WHEN replace(trim(c.nbunite), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbunite, ',', '.')::numeric + end as nbunite, + CASE + WHEN c.mdate IS NULL OR c.mdate = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.mdate !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.mdate, 'YYYYMMDD'), 'YYYYMMDD') <> c.mdate THEN NULL + ELSE to_date(c.mdate, 'YYYYMMDD') + end as mdate, + --c.murs, + CASE + WHEN replace(trim(c.murs), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.murs, ',', '.')::numeric + end as murs, + --standing + CASE + WHEN replace(trim(c.standing), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.standing, ',', '.')::numeric + end as standing + FROM dblink( + 'connexion_rfu', + $db$ + select distinct + ul.n0bat, + ul.n0ul, + ul.n0etage, + ul.quartier, + ul.n0_ilot, + ul.n0_parcel, + ul.n0_contrib, + ul.montmenl, + ul.surfsol, + ul.surfacelo, + ul.vllcalcule, + ul.bail, + --ul.valloest, + ul.nbetage, + ul.vlcalcule, + ul.utilisat, + ul.finexempt, + ul.nbunitlo, + ul.toit, + ul.nbhabit, + ul.nbmenage, + ul.nbmois, + ul.electric, + ul.eau, + ul.nbpiece, + ul.nbunite, + ul.mdate, + ul.murs, + ul.standing + FROM akpakpa.unitlog ul + $db$ + ) AS c ( + n0bat varchar, + n0ul varchar, + n0etage varchar, + quartier varchar, + n0_ilot varchar, + n0_parcel varchar, + n0_contrib varchar, + montmenl varchar, + surfsol varchar, + surfacelo varchar, + vllcalcule varchar, + bail varchar, + --valloest varchar, + nbetage varchar, + vlcalcule varchar, + utilisat varchar, + finexempt varchar, + nbunitlo varchar, + toit varchar, + nbhabit varchar, + nbmenage varchar, + nbmois varchar, + electric varchar, + eau varchar, + nbpiece varchar, + nbunite varchar, + mdate varchar, + murs varchar, + standing varchar + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.unite_logement ul + WHERE ul.code = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel)||'-'||trim(c.n0bat)||'-'||trim(c.n0ul) + ) + limit nombreLimit + ) +LOOP + -- Récupération ID batiment locale +SELECT b.id +INTO l_batiment_id_parent +FROM public.batiment b +WHERE b.code = + trim(uniteLogement_rfu.quartier)||'-'||trim(uniteLogement_rfu.n0_ilot)||'-'||trim(uniteLogement_rfu.n0_parcel)||'-'||trim(uniteLogement_rfu.n0bat) + LIMIT 1; + +-- Récupération ID personne locale +SELECT p.id +INTO l_personne_id_parent +FROM public.personne p +WHERE p.nc =trim(uniteLogement_rfu.n0_contrib) + LIMIT 1; + + +-- Insertion unite logement local +INSERT INTO public.unite_logement( + created_at, + created_by, + deleted, + updated_at, + updated_by, + code, + nul, + numero_etage, + batiment_id, + --personne_id, + source, + superficie_au_sol, + superficie_louee, + categorie_batiment_id, + montant_locatif_annuel_calcule, + montant_locatif_annuel_declare, + montant_mensuel_location, + valeur_unite_logement_estime, + usage_id, + date_fin_exemption, + id_toit_rfu, + valeur_unite_logement_calcule, + nombre_etage +) +VALUES ( + now(), + 35, + false, + now(), + 35, + trim(uniteLogement_rfu.quartier)||'-'||trim(uniteLogement_rfu.n0_ilot)||'-'||trim(uniteLogement_rfu.n0_parcel)||'-'||trim(uniteLogement_rfu.n0bat)||'-'||trim(uniteLogement_rfu.n0ul), + uniteLogement_rfu.n0ul, + uniteLogement_rfu.n0etage, + l_batiment_id_parent, + -- l_personne_id_parent, + 'RFU', + uniteLogement_rfu.surfsol, + uniteLogement_rfu.surfacelo, + ProcedureRecupCategorieRFU(uniteLogement_rfu.nbetage::integer,uniteLogement_rfu.toit::integer), + uniteLogement_rfu.vllcalcule, + uniteLogement_rfu.bail, + uniteLogement_rfu.montmenl, + uniteLogement_rfu.vlcalcule, + CASE uniteLogement_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + END, + uniteLogement_rfu.finexempt, + uniteLogement_rfu.toit, + uniteLogement_rfu.vlcalcule, + uniteLogement_rfu.nbetage + ) + RETURNING id INTO l_uniteLogement_id_parent; + +call public.import_enqueteUnitLog_from_rfu_cipe( + uniteLogement_rfu, + l_uniteLogement_id_parent, + l_personne_id_parent + ); + +l_count := l_count + 1; + +END LOOP; + +RAISE NOTICE 'Nombre de unité de logement insérés : %', l_count; + +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_assignation_personne_cotonou.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_assignation_personne_cotonou.sql new file mode 100644 index 0000000..0a6fa9f --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_assignation_personne_cotonou.sql @@ -0,0 +1,95 @@ + +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + +--SELECT dblink_disconnect('connexion_rfu'); +--SELECT pg_size_pretty(pg_database_size('rfu')); + +CREATE OR REPLACE PROCEDURE public.import_assignation_centre_personne_from_rfu_cotonou() +LANGUAGE plpgsql +AS $procedure$ +BEGIN +INSERT INTO public.commune_centre_assignation ( + nc, + ifu, + commune_id, + structure_id, + personne_id, + parcelle_id, + created_at, + created_by, + deleted, + updated_at, + updated_by, + source +) +SELECT + c.n0_contrib, + c.ifu, + 70, + case rcdi + when 'A' then 61 + when 'B' then 62 + when 'C' then 63 + when 'D' then 64 + else null + end, + pers.id, + parc.id, + now(), + NULL::bigint, + false, + now(), + NULL::bigint, + 'RFU' +FROM dblink( + 'connexion_rfu', + $db$ + SELECT distinct on (ifu,rcdi) + trim(ifu), + trim(n0_contrib), + trim(rcdi), + trim(quartier_c), + trim(ilot_c), + trim(parcel_c) + FROM stemichel.contrib + order by ifu,rcdi + $db$ + ) AS c ( + ifu varchar, + n0_contrib varchar, + rcdi varchar, + quartier_c varchar, + ilot_c varchar, + parcel_c varchar + ) +LEFT JOIN personne pers on trim(pers.ifu)=trim(c.ifu) +LEFT JOIN parcelle parc on (trim(parc.q) = trim(c.quartier_c) + and trim(parc.i) = trim(c.ilot_c) + and trim(parc.p) = trim(c.parcel_c)) +WHERE NOT EXISTS ( + SELECT 1 + FROM public.commune_centre_assignation cca + WHERE cca.personne_id = pers.id + and cca.structure_id = case trim(c.rcdi) + when 'A' then 61 + when 'B' then 62 + when 'C' then 63 + when 'D' then 64 + else null + end + and cca.commune_id = 70 +) +ON CONFLICT (structure_id, commune_id, personne_id) DO NOTHING; + +END; +$procedure$; + +call import_assignation_centre_personne_from_rfu_cotonou(); + +--delete from commune_centre_assignation; + + +--select * from commune_centre_assignation; diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_batiment_and_enquete_batiment.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_batiment_and_enquete_batiment.sql new file mode 100644 index 0000000..c2c28b2 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_batiment_and_enquete_batiment.sql @@ -0,0 +1,287 @@ +CREATE OR REPLACE PROCEDURE public.import_batiment_and_enquetebati_from_rfu(nombreLimit integer) +LANGUAGE plpgsql +AS $$ +DECLARE +l_count numeric := 0; + batiment_rfu record; + l_batiment_id_parent bigint; + l_parcelle_id_parent bigint ; +BEGIN + +FOR batiment_rfu IN ( + SELECT + c.n0bat, + --dtconst, + CASE + WHEN c.dtconst IS NULL OR c.dtconst = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.dtconst !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.dtconst, 'YYYYMMDD'), 'YYYYMMDD') <> c.dtconst THEN NULL + ELSE to_date(c.dtconst, 'YYYYMMDD') + end as dtconst, + c.quartier, + c.n0_ilot, + c.n0_parcel, + --c.surfsol, + CASE + WHEN replace(trim(c.surfsol), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfsol, ',', '.')::numeric + end as surfsol, + --c.surfacelo, + CASE + WHEN replace(trim(c.surfacelo), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfacelo, ',', '.')::numeric + end as surfacelo, + --c.vllcalcule, + CASE + WHEN replace(trim(c.vllcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vllcalcule, ',', '.')::numeric + end as vllcalcule, + --c.bail, + CASE + WHEN replace(trim(c.bail), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.bail, ',', '.')::numeric + end as bail, + --c.valloest, + CASE + WHEN replace(trim(c.valloest), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.valloest, ',', '.')::numeric + end as valloest, + --c.nbetage, + CASE + WHEN replace(trim(c.nbetage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbetage, ',', '.')::numeric + end as nbetage, + --c.vlcalcule, + CASE + WHEN replace(trim(c.vlcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vlcalcule, ',', '.')::numeric + end as vlcalcule, + --c.utilisat, + CASE + WHEN replace(trim(c.utilisat), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.utilisat, ',', '.')::numeric + end as utilisat, + --c.finexempt, + CASE + WHEN c.finexempt IS NULL OR c.finexempt = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.finexempt !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.finexempt, 'YYYYMMDD'), 'YYYYMMDD') <> c.finexempt THEN NULL + ELSE to_date(c.finexempt, 'YYYYMMDD') + end as finexempt, + --c.nbunitlo, + CASE + WHEN replace(trim(c.nbunitlo), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbunitlo, ',', '.')::numeric + end as nbunitlo, + --c.toit + CASE + WHEN replace(trim(c.toit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.toit, ',', '.')::numeric + end as toit, + --nbhabit, + CASE + WHEN replace(trim(c.nbhabit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbhabit, ',', '.')::numeric + end as nbhabit, + --nbmenage, + CASE + WHEN replace(trim(c.nbmenage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmenage, ',', '.')::numeric + end as nbmenage, + --nbmois, + CASE + WHEN replace(trim(c.nbmois), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmois, ',', '.')::numeric + end as nbmois, + --electric, + CASE + WHEN trim(c.electric)='Non' + THEN false + else + true + end as electric, + --eau, + CASE + WHEN trim(c.eau)='Non' + THEN false + else + true + end as eau, + --nbpiece, + CASE + WHEN replace(trim(c.nbpiece), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbpiece, ',', '.')::numeric + end as nbpiece, + --nbunite + CASE + WHEN replace(trim(c.nbunite), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbunite, ',', '.')::numeric + end as nbunite, + CASE + WHEN c.mdate IS NULL OR c.mdate = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.mdate !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.mdate, 'YYYYMMDD'), 'YYYYMMDD') <> c.mdate THEN NULL + ELSE to_date(c.mdate, 'YYYYMMDD') + end as mdate, + --c.murs, + CASE + WHEN replace(trim(c.murs), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.murs, ',', '.')::numeric + end as murs, + --standing + CASE + WHEN replace(trim(c.standing), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.standing, ',', '.')::numeric + end as standing + FROM dblink( + 'connexion_rfu', + $db$ + SELECT + b.n0bat, + b.dtconst, + b.quartier, + b.n0_ilot, + b.n0_parcel, + b.surfsol, + b.surfacelo, + b.vllcalcule, + b.bail, + b.valloest, + b.nbetage, + b.vlcalcule, + b.utilisat, + b.finexempt, + b.nbunitlo, + b.toit, + b.nbhabit, + b.nbmenage, + b.nbmois, + b.electric, + b.eau, + b.nbpiece, + b.nbunite, + b.mdate, + b.murs, + b.standing + FROM stemichel.batiment b + $db$ + ) AS c ( + n0bat varchar, + dtconst varchar, + quartier varchar, + n0_ilot varchar, + n0_parcel varchar, + surfsol varchar, + surfacelo varchar, + vllcalcule varchar, + bail varchar, + valloest varchar, + nbetage varchar, + vlcalcule varchar, + utilisat varchar, + finexempt varchar, + nbunitlo varchar, + toit varchar, + nbhabit varchar, + nbmenage varchar, + nbmois varchar, + electric varchar, + eau varchar, + nbpiece varchar, + nbunite varchar, + mdate varchar, + murs varchar, + standing varchar + + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.batiment b + WHERE b.code = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel)||'-'||trim(c.n0bat) + ) + limit nombreLimit + ) +LOOP + -- Récupération ID parcelle locale +SELECT p.id +INTO l_parcelle_id_parent +FROM public.parcelle p +WHERE p.numero_parcelle = + trim(batiment_rfu.quartier)||'-'||trim(batiment_rfu.n0_ilot)||'-'||trim(batiment_rfu.n0_parcel) + LIMIT 1; + + +-- Insertion bâtiment local +INSERT INTO public.batiment ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + code, + nub, + date_construction, + parcelle_id, + source, + superficie_au_sol, + superficie_louee, + categorie_batiment_id, + montant_locatif_annuel_calcule, + montant_locatif_annuel_declare, + montant_locatif_annuel_estime, + nombre_etage, + valeur_batiment_calcule, + usage_id, + date_fin_exemption, + nbre_unite_logement, + id_toit_rfu +) +VALUES ( + now(), + 35, + false, + now(), + 35, + trim(batiment_rfu.quartier)||'-'||trim(batiment_rfu.n0_ilot)||'-'||trim(batiment_rfu.n0_parcel)||'-'||trim(batiment_rfu.n0bat), + batiment_rfu.n0bat, + batiment_rfu.dtconst, + l_parcelle_id_parent, + 'RFU', + batiment_rfu.surfsol, + batiment_rfu.surfacelo, + ProcedureRecupCategorieRFU(batiment_rfu.nbetage::integer,batiment_rfu.toit::integer), + batiment_rfu.vllcalcule, + batiment_rfu.bail, + batiment_rfu.valloest, + batiment_rfu.nbetage, + batiment_rfu.vlcalcule, + --------- batiment_rfu.utilisat, + CASE batiment_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + END, + batiment_rfu.finexempt, + batiment_rfu.nbunitlo, + batiment_rfu.toit + ) + + RETURNING id INTO l_batiment_id_parent ; + +call public.import_enquetebati_from_rfu_cipe(batiment_rfu,l_batiment_id_parent); + +l_count := l_count + 1; + +END LOOP; + +RAISE NOTICE 'Nombre de bâtiments insérés : %', l_count; + +END; +$$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_batiment.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_batiment.sql new file mode 100644 index 0000000..83a459a --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_batiment.sql @@ -0,0 +1,158 @@ +CREATE OR REPLACE PROCEDURE public.import_enquetebati_from_rfu_cipe( + IN batiment_rfu record, + IN batiment_id_param numeric +) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +enquete_batiment_id_parent bigint; +BEGIN +INSERT INTO enquete_batiment ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + date_fin_excemption, + nbre_habitant, + nbre_menage, + nbre_mois_location, + nbre_unite_location, + sbee, + soneb, + batiment_id, + personne_id, + user_id, + montant_locatif_annuel_declare, + nbre_etage, + source, + date_enquete, + observation, + superficie_au_sol, + superficie_louee, + statut_enquete, + categorie_batiment_id, + montant_locatif_annuel_calcule, + usage_id, + montant_locatif_annuel_estime, + nbre_piece, + nbre_unite_logement, + valeur_batiment_calcule, + nbre_lot_unite +) select + now(), + 35, + false, + now(), + 35, + batiment_rfu.finexempt, + batiment_rfu.nbhabit, + batiment_rfu.nbmenage, + batiment_rfu.nbmois, + batiment_rfu.nbunitlo, + batiment_rfu.electric, + batiment_rfu.eau, + batiment_id_param, + e.personne_id, + 35, + batiment_rfu.bail, + batiment_rfu.nbetage, + 'RFU', + batiment_rfu.mdate, + 'MIGRATION', + batiment_rfu.surfsol, + batiment_rfu.surfacelo, + 'CLOTURE', + ProcedureRecupCategorieRFU(batiment_rfu.nbetage::integer,batiment_rfu.toit::integer), + batiment_rfu.vllcalcule, + --batiment_rfu.utilisat, + CASE batiment_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + end, + batiment_rfu.valloest, + batiment_rfu.nbpiece, + batiment_rfu.nbunite, + batiment_rfu.vlcalcule, + batiment_rfu.nbunitlo +from batiment b + left join parcelle p on p.id=b.parcelle_id + left join enquete e on e.parcelle_id=p.id +where b.id = batiment_id_param + and not exists ( + select 1 + from enquete_batiment eb + where eb.batiment_id = b.id +) + + RETURNING id INTO enquete_batiment_id_parent ; + +----------MAJ Caractéristique parcelle +INSERT INTO caracteristique_batiment ( + created_by, + created_at, + updated_by, + updated_at, + deleted, + caracteristique_id, + enquete_batiment_id +) +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.toit + WHEN 1 THEN 55 + WHEN 2 THEN 56 + WHEN 3 THEN 57 + WHEN 4 THEN 58 + WHEN 5 THEN 59 + WHEN 6 THEN 60 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.toit IS NOT NULL + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.murs + WHEN 1 THEN 49 + WHEN 2 THEN 50 + WHEN 3 THEN 51 + WHEN 4 THEN 52 + WHEN 5 THEN 53 + else + 54 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.murs IS NOT null + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.standing + WHEN 1 THEN 81 + WHEN 2 THEN 82 + WHEN 3 THEN 83 + WHEN 4 THEN 84 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.standing IS NOT null + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE batiment_rfu.utilisat + WHEN 1 THEN 35 + WHEN 2 THEN 36 + WHEN 3 THEN 37 + END, + enquete_batiment_id_parent + WHERE batiment_rfu.utilisat IS NOT null; + +------MAJ Exercice +UPDATE enquete_batiment eb +SET exercice_id = e.id + FROM exercice e +WHERE e.annee = 2025 + AND eb.id = enquete_batiment_id_parent; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_parcelle.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_parcelle.sql new file mode 100644 index 0000000..c6d84bc --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_parcelle.sql @@ -0,0 +1,153 @@ +CREATE OR REPLACE PROCEDURE public.import_enqueteparc_from_rfu_cipe( + IN parcelle_rfu record, + IN p_parcelle_id numeric +) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +enquete_id_parent bigint; +BEGIN +INSERT INTO enquete ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + date_enquete, + litige, + parcelle_id, + user_id, + date_finalisation, + date_synchronisation, + date_validation, + status_enquete, + synchronise, + code_parcelle, + nbre_batiment, + nbre_co_proprietaire, + nom_rue, + num_enter_parcelle, + num_rue, + superficie, + equipe_id, + zone_rfu_id, + campagne_id, + origine_enquete, + nc_proprietaire, + source +) select + now(), + 35, + false, + now(), + 35, + now(), + false, + p_parcelle_id, + 35, + now(), + now(), + now(), + 'CLOTURE', + true, + parcelle_rfu.numero_parcelle, + CASE + WHEN trim(parcelle_rfu.nb_bat) ~ '^[0-9]+$' + THEN parcelle_rfu.nb_bat::integer + ELSE NULL +END, + CASE + WHEN trim(parcelle_rfu.nb_prop) ~ '^[0-9]+$' + THEN parcelle_rfu.nb_prop::integer + ELSE NULL +END, + parcelle_rfu.numero_rue, + parcelle_rfu.num_entree_parcelle, + parcelle_rfu.numero_rue, + CASE + WHEN trim(parcelle_rfu.surface) ~ '^[0-9]+$' + THEN parcelle_rfu.surface::float + ELSE NULL +END, + 1, + CASE parcelle_rfu.zones + WHEN '1' THEN 1 + WHEN '2' THEN 2 + WHEN '3' THEN 3 + WHEN '4' THEN 4 + ELSE NULL +END, + 1, + 'RFU', + parcelle_rfu.n0_contrib, + 'RFU' + --from parcelle p + where not exists ( + select 1 + from enquete e + where e.parcelle_id= p_parcelle_id + ) + + RETURNING id INTO enquete_id_parent ; + + ----------MAJ Caractéristique parcelle +INSERT INTO caracteristique_parcelle ( + created_by, + created_at, + updated_by, + updated_at, + deleted, + caracteristique_id, + enquete_id +) +SELECT 35, now(), 35, now(), false, + CASE parcelle_rfu.acces + WHEN '1' THEN 31 + WHEN '2' THEN 32 + WHEN '3' THEN 33 + WHEN '4' THEN 34 + END, + enquete_id_parent + WHERE parcelle_rfu.acces IS NOT NULL + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE parcelle_rfu.cloture + WHEN '1' THEN 28 + WHEN '2' THEN 29 + WHEN '3' THEN 30 + END, + enquete_id_parent + WHERE parcelle_rfu.cloture IS NOT NULL; + +------MAJ Exercice +UPDATE enquete q +SET exercice_id = e.id + FROM exercice e +WHERE e.annee = 2025 + AND q.id = enquete_id_parent; + +------MAJ prietaire +UPDATE enquete q +SET personne_id = p.id, + proprietaire_id = p.id, + nom_proprietaire_parcelle = coalesce (trim(p.raison_sociale), trim(p.nom) || ' '|| trim(p.prenom) ) + FROM personne p +WHERE p.nc = parcelle_rfu.n0_contrib + AND q.id = enquete_id_parent; + +--quartier_id --commune_id --departement_id --arrondissement_id +UPDATE enquete e +SET quartier_id = q.id, + commune_id=c.id, + departement_id=c.departement_id, + arrondissement_id= a.id + FROM parcelle p + inner join quartier q on q.id = p.quartier_id + inner join arrondissement a on a.id = q.arrondissement_id + inner join commune c on c.id = a.commune_id +WHERE p.id = p_parcelle_id + AND e.id = enquete_id_parent; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_unite_logement.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_unite_logement.sql new file mode 100644 index 0000000..f29238a --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_enquete_unite_logement.sql @@ -0,0 +1,156 @@ +CREATE OR REPLACE PROCEDURE public.import_enqueteUnitLog_from_rfu_cipe( + IN uniteLogement_rfu record, + IN uniteLogement_id_param numeric, + IN l_personne_id_parent numeric +) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +enquete_uniteLogement_id_parent bigint; +BEGIN +INSERT INTO enquete_unite_logement ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + en_location, + montant_locatif_annuel_declare, + nbre_habitant, + nbre_menage, + nbre_piece, + sbee, + soneb, + personne_id, + unite_logement_id, + user_id, + nbre_mois_location, + valeur_unite_logement_estime, + source, + date_enquete, + observation, + date_fin_exemption, + superficie_au_sol, + superficie_louee, + statut_enquete, + categorie_batiment_id, + montant_locatif_annuel_calcule, + montant_mensuel_location, + usage_id, + valeur_unite_logement_calcule +)select + now(), + 35, + false, + now(), + 35, + case + when uniteLogement_rfu.nbmois=0 then false + else true + end, + uniteLogement_rfu.montmenl*12, + uniteLogement_rfu.nbhabit, + uniteLogement_rfu.nbmenage, + uniteLogement_rfu.nbpiece, + uniteLogement_rfu.electric, + uniteLogement_rfu.eau, + l_personne_id_parent, + uniteLogement_id_param, + 35, + uniteLogement_rfu.nbmois, + uniteLogement_rfu.vlcalcule, + 'RFU', + uniteLogement_rfu.mdate, + 'MIGRATION', + uniteLogement_rfu.finexempt, + uniteLogement_rfu.surfsol, + uniteLogement_rfu.surfacelo, + 'CLOTURE', + ProcedureRecupCategorieRFU(uniteLogement_rfu.n0etage::integer,uniteLogement_rfu.toit::integer), + uniteLogement_rfu.vllcalcule, + uniteLogement_rfu.montmenl, + CASE uniteLogement_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + END, + uniteLogement_rfu.vlcalcule +from unite_logement ul +where ul.id = uniteLogement_id_param + and not exists ( + select 1 + from enquete_unite_logement eul + where eul.unite_logement_id = ul.id +) + + RETURNING id INTO enquete_uniteLogement_id_parent ; + +----------MAJ Caractéristique Unite de logement +INSERT INTO caracteristique_unite_logement ( + created_by, + created_at, + updated_by, + updated_at, + deleted, + caracteristique_id, + enquete_unite_logement_id +) +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.toit + WHEN 1 THEN 55 + WHEN 2 THEN 56 + WHEN 3 THEN 57 + WHEN 4 THEN 58 + WHEN 5 THEN 59 + WHEN 6 THEN 60 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.toit IS NOT NULL + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.murs + WHEN 1 THEN 49 + WHEN 2 THEN 50 + WHEN 3 THEN 51 + WHEN 4 THEN 52 + WHEN 5 THEN 53 + else + 54 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.murs IS NOT null + +UNION ALL + +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.standing + WHEN 1 THEN 81 + WHEN 2 THEN 82 + WHEN 3 THEN 83 + WHEN 4 THEN 84 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.standing IS NOT null + +UNION ALL + + +SELECT 35, now(), 35, now(),false, + CASE uniteLogement_rfu.utilisat + WHEN 1 THEN 35 + WHEN 2 THEN 36 + WHEN 3 THEN 37 + END, + enquete_uniteLogement_id_parent + WHERE uniteLogement_rfu.standing IS NOT null; + +------MAJ Exercice +UPDATE enquete_unite_logement eul +SET exercice_id = e.id + FROM exercice e +WHERE e.annee = 2025 + AND eul.id = enquete_uniteLogement_id_parent; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_imposition_rfu_cotonou.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_imposition_rfu_cotonou.sql new file mode 100644 index 0000000..45240c9 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_imposition_rfu_cotonou.sql @@ -0,0 +1,99 @@ +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + + +CREATE OR REPLACE PROCEDURE public.import_imposition_rfu_cotonou(in exercice varchar(10), in nombreLimit numeric) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +l_count numeric := 0; + imposition_rfu record; + l_parcelle_id_parent bigint; + l_code_quartier varchar(20); +BEGIN + FOR imposition_rfu IN ( + SELECT FROM dblink( + 'connexion_rfu', + $db$ + SELECT + i.article , + i.ifu , + i.n0_contrib , + i.denome , + i.annees , + i.nature , + n.libnature , + i.quartier, + q.libquart , + i.n0_ilot , + i.n0_parcel , + i.nn, + COALESCE(i.montant,0) droit_simple, + COALESCE(i.penalite,0) penalite, + COALESCE(i.majorat,0) majoration, + COALESCE(i.montant,0)+COALESCE(i.penalite,0)+COALESCE(i.majorat,0) total_imposition + FROM stemichel.impotsra i + join agla.nature n on n.nature=i.nature + left join (select distinct + n0_ilot, + quartier, + libquart + from agla.quartier)q on (q.n0_ilot=i.n0_ilot and q.quartier=i.quartier) + -- WHERE i.annees = '2025' or (i.annees ='2024' and trim(i.nature) in ('3N', '4N', 'YN')) + limit 100 + $db$ + ) AS c ( + terrain varchar, + n0_ilot varchar, + n0_parcel varchar, + quartier varchar, + hauteur varchar, + rue varchar, + entree varchar, + vlcalcule varchar, + vllcalcule varchar, + + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.parcelle p + WHERE p.numero_parcelle = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel) + ) and exists ( + select 1 + from public.ref_rfu_q_quartier_cotonou rq + where rq.rfu_q = trim(c.quartier) + ) + limit nombreLimit + ) LOOP + BEGIN + INSERT INTO parcelle ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + parcelle_id, + source + ) + SELECT + now(), + 35, + false, + now(), + 35, + parcelle_id, + + 'RFU' + FROM ref_rfu_q_quartier_cotonou rq + WHERE rq.rfu_q = parcelle_rfu.q + RETURNING id, code_quartier + INTO l_parcelle_id_parent, l_code_quartier; + + RAISE NOTICE 'Nombre impositions migrées : %', l_count; + END ; + END LOOP ; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_parcelle_and_enquete_parcelle.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_parcelle_and_enquete_parcelle.sql new file mode 100644 index 0000000..32866c6 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_parcelle_and_enquete_parcelle.sql @@ -0,0 +1,250 @@ +CREATE OR REPLACE PROCEDURE public.import_parcelle_and_enqueteparc_from_rfu_cipe(in nombreLimit numeric) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +l_count numeric := 0; + parcelle_rfu record; + l_parcelle_id_parent bigint; + l_code_quartier varchar(20); +BEGIN +FOR parcelle_rfu IN ( + SELECT + trim(quartier)||'-'||trim(n0_ilot)||'-'||trim(n0_parcel) AS numero_parcelle, + terrain, + trim(n0_ilot) AS i, + trim(n0_parcel) AS p, + trim(quartier) AS q, + hauteur, + rue AS numero_rue, + entree AS num_entree_parcelle, + surface, + vlcalcule, + vllcalcule, + loue, + zones, + acces, + cloture, + inonde, + finexempt, + habite, + ordures, + "usage", + wc, + choix, + occupant, + nb_bat, + nb_prop, + nb_log, + nb_unit, + nb_mena, + nb_habit, + nb_act, + nb_contrib, + typeparc, + prixm2ne, + ifu, + n0_contrib, + secteur, + cipe + FROM dblink( + 'connexion_rfu', + $db$ + SELECT + terrain, + n0_ilot, + n0_parcel, + quartier, + hauteur, + rue, + entree, + vlcalcule, + vllcalcule, + loue, + zones, + acces, + cloture, + inonde, + finexempt, + habite, + ordures, + surface, + "usage", + wc, + choix, + occupant, + nb_bat, + nb_prop, + nb_log, + nb_unit, + nb_mena, + nb_habit, + nb_act, + nb_contrib, + typeparc, + prixm2ne, + ifu, + n0_contrib, + secteur, + cipe + FROM stemichel.parcelle + $db$ + ) AS c ( + terrain varchar, + n0_ilot varchar, + n0_parcel varchar, + quartier varchar, + hauteur varchar, + rue varchar, + entree varchar, + vlcalcule varchar, + vllcalcule varchar, + loue varchar, + zones varchar, + acces varchar, + cloture varchar, + inonde varchar, + finexempt varchar, + habite varchar, + ordures varchar, + surface varchar, + "usage" varchar, + wc varchar, + choix varchar, + occupant varchar, + nb_bat varchar, + nb_prop varchar, + nb_log varchar, + nb_unit varchar, + nb_mena varchar, + nb_habit varchar, + nb_act varchar, + nb_contrib varchar, + typeparc varchar, + prixm2ne varchar, + ifu varchar, + n0_contrib varchar, + secteur varchar, + cipe varchar + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.parcelle p + WHERE p.numero_parcelle = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel) + ) and exists ( + select 1 + from public.ref_rfu_q_quartier_cotonou rq + where rq.rfu_q = trim(c.quartier) + ) + limit nombreLimit + ) LOOP +BEGIN +INSERT INTO parcelle ( + created_at, + created_by, + deleted, + updated_at, + updated_by, + numero_parcelle, + qip, + type_domaine_id, + i, + p, + q, + code_quartier, + nature_domaine_id, + superficie, + altitude, + num_entree_parcelle, + numero_rue, + usage_id, + source +) +SELECT + now(), + 35, + false, + now(), + 35, + parcelle_rfu.numero_parcelle, + parcelle_rfu.numero_parcelle, + CASE parcelle_rfu.terrain + WHEN '1' THEN 2 + WHEN '2' THEN 5 + WHEN '3' THEN 4 + END, + parcelle_rfu.i, + parcelle_rfu.p, + parcelle_rfu.q, + rq.code_quartier, + CASE parcelle_rfu.typeparc + WHEN '1' THEN 23 + WHEN '2' THEN 27 + WHEN '3' THEN 28 + WHEN '4' THEN 29 + END, + CASE + WHEN replace(trim(parcelle_rfu.surface), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(parcelle_rfu.surface, ',', '.')::numeric +END, + CASE + WHEN replace(trim(parcelle_rfu.hauteur), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(parcelle_rfu.hauteur, ',', '.')::numeric +END, + parcelle_rfu.num_entree_parcelle, + parcelle_rfu.numero_rue, + case parcelle_rfu.usage + WHEN '01' THEN 3 + WHEN '02' THEN 4 + WHEN '03' THEN 5 + WHEN '04' THEN 6 + WHEN '05' THEN 7 + WHEN '11' THEN 8 + WHEN '12' THEN 9 + WHEN '13' THEN 10 + WHEN '14' THEN 11 + WHEN '21' THEN 12 + WHEN '22' THEN 13 + WHEN '23' THEN 14 + WHEN '24' THEN 15 + WHEN '25' THEN 16 +END, + 'RFU' + FROM ref_rfu_q_quartier_cotonou rq + WHERE rq.rfu_q = parcelle_rfu.q + RETURNING id, code_quartier + INTO l_parcelle_id_parent, l_code_quartier; +EXCEPTION WHEN NO_DATA_FOUND THEN + RAISE NOTICE 'Quartier RFU non trouvé pour %', parcelle_rfu.q; +CONTINUE; + --RAISE NOTICE 'Parcelle insérée : %, %', l_parcelle_id_parent, parcelle_rfu.q; +END; +------------------------------appel de enquete_parcelle------------------ +CALL import_enqueteparc_from_rfu_cipe(parcelle_rfu, l_parcelle_id_parent); + +INSERT INTO secteur_decoupage ( + created_at, created_by, deleted, updated_at, updated_by, + date_debut, quartier_id, secteur_id, arrondissement_id, source +) +SELECT + now(), 35, false, now(), 35, + now(), q.id, s.id,a.id, 'RFU' +FROM ref_cipe_secteur_rfu_cotonou rcs + JOIN secteur s ON s.code= rcs.code_secteur + JOIN quartier q ON q.code = l_code_quartier + left join arrondissement a on a.id=q.arrondissement_id +WHERE rcs.cipe = parcelle_rfu.cipe + AND rcs.secteur = parcelle_rfu.secteur + ON CONFLICT (quartier_id, secteur_id) DO NOTHING; + +l_count := l_count + 1; +END LOOP; + +UPDATE parcelle p +SET quartier_id = q.id + FROM quartier q +WHERE q.code = p.code_quartier; + +RAISE NOTICE 'Nombre de parcelles migrées : %', l_count; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_personne.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_personne.sql new file mode 100644 index 0000000..8e143da --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_personne.sql @@ -0,0 +1,128 @@ + +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + +--SELECT dblink_disconnect('connexion_rfu'); + +CREATE OR REPLACE PROCEDURE public.import_personne_from_rfu() +LANGUAGE plpgsql +AS $procedure$ +BEGIN +INSERT INTO public.personne ( + date_naissance_ou_consti, + ifu, + lieu_naissance, + nom, + prenom, + raison_sociale, + npi, + num_ravip, + tel1, + tel2, + adresse, + created_at, + created_by, + deleted, + updated_at, + updated_by, + nc, + sexe, + profession, + source +) +SELECT + CASE + WHEN c.date_nais IS NULL OR c.date_nais = '' THEN NULL + + -- format incorrect (pas exactement 8 chiffres) + WHEN c.date_nais !~ '^[0-9]{8}$' THEN NULL + + -- date invalide réelle + WHEN to_char(to_date(c.date_nais, 'YYYYMMDD'), 'YYYYMMDD') <> c.date_nais THEN NULL + + ELSE to_date(c.date_nais, 'YYYYMMDD') + END, + c.ifu, + c.lieu_nais, + case + when (trim(c.nom_c)<>'' and trim(c.prenoms_c)<>'') then c.nom_c + when (trim(c.nom_c)='' and trim(c.prenoms_c)='' and trim(c.prenoms)<>'') then c.nom + end as nom, + case + when (trim(c.nom_c)<>'' and trim(c.prenoms_c)<>'') then c.prenoms_c + when (trim(c.nom_c)='' and trim(c.prenoms_c)='' and trim(c.prenoms)<>'') then c.prenoms + end as prenom, + case + when (trim(c.nom_c)='' and trim(c.prenoms_c)='' and trim(c.prenoms)='') then c.nom + when (trim(c.nom_c)<>'' and trim(c.prenoms_c)<>'' and trim(c.prenoms)='') then c.nom + end as raison_sociale, + --c.nom, + NULL::varchar, + NULL::varchar, + --c.prenoms, + c.autradr1, + c.autradr2, + COALESCE(c.quartier_c, '') || '_' || + COALESCE(c.ilot_c, '') || '_' || + COALESCE(c.parcel_c, ''), + now(), + NULL::bigint, + false, + now(), + NULL::bigint, + c.n0_contrib, + CASE c.sexe + WHEN '1' THEN 'MASCULIN' + WHEN '2' THEN 'FEMININ' + ELSE NULL + END, + c.profession, + 'RFU' +FROM dblink( + 'connexion_rfu', + $db$ + SELECT + date_nais, + ifu, + lieu_nais, + nom, + prenoms, + nom_c, + prenoms_c, + autradr1, + autradr2, + quartier_c, + ilot_c, + parcel_c, + n0_contrib, + sexe, + profession + FROM stemichel.contrib + -- WHERE ifu IS NOT NULL + $db$ + ) AS c ( + date_nais varchar, + ifu varchar, + lieu_nais varchar, + nom varchar, + prenoms varchar, + nom_c varchar, + prenoms_c varchar, + autradr1 varchar, + autradr2 varchar, + quartier_c varchar, + ilot_c varchar, + parcel_c varchar, + n0_contrib varchar, + sexe varchar, + profession varchar + ) +WHERE NOT EXISTS ( + SELECT 1 + FROM public.personne p + WHERE p.nc = c.n0_contrib +); +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_synchro_personne_sigibe.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_synchro_personne_sigibe.sql new file mode 100644 index 0000000..a8f3407 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_synchro_personne_sigibe.sql @@ -0,0 +1,82 @@ + +SELECT dblink_connect( + 'connexion_rfu', + 'host=10.4.6.103 port=5432 dbname=rfu user=postgres password=Rfu@dm1N2@25TeMp0' + ); + +--SELECT dblink_disconnect('connexion_rfu'); + +SELECT dblink_connect( + 'connexion_sigibe_lecture', + 'host=10.4.80.71 port=5433 dbname=sigibe user=sigibe_lecture password=lec243R6Khsg' + ); + +CREATE OR REPLACE PROCEDURE public.maj_personne_from_sigibe() + LANGUAGE plpgsql + AS $procedure$ + DECLARE + +BEGIN +UPDATE personne p +SET + nom = CASE + WHEN s.nom IS NOT NULL THEN s.nom + ELSE p.nom + END, + prenom = CASE + WHEN s.prenom IS NOT NULL THEN s.prenom + ELSE p.prenom + END, + raison_sociale = CASE + WHEN s.id_tiers_type = 'PM' + AND s.l_contribuable IS NOT NULL + THEN s.l_contribuable + ELSE p.raison_sociale + END, + tel1 = s.telephone, + numero_rccm = s.numero_rccm, + date_rccm = CASE + WHEN s.date_rccm IS NOT NULL + AND trim(s.date_rccm) <> '' + THEN s.date_rccm::date + ELSE p.date_rccm +END, + email = s.email, + npi = s.numero_piece_identite, + etat_identification_personne = 'IFU' + FROM ( + SELECT * + FROM dblink( + 'connexion_sigibe_lecture', + ' + SELECT + c.r_contribuable, + t.nom, + t.prenom, + t.id_tiers_type, + t.telephone, + t.numero_rccm, + t.date_rccm, + t.email, + t.numero_piece_identite, + c.l_contribuable + FROM t_contribuable c + JOIN t_tiers t ON t.id_tiers = c.id_tiers + ' + ) + AS s( + r_contribuable varchar, + nom varchar, + prenom varchar, + id_tiers_type varchar, + telephone varchar, + numero_rccm varchar, + date_rccm varchar, + email varchar, + numero_piece_identite varchar, + l_contribuable varchar + ) + ) s + WHERE trim(p.ifu) = s.r_contribuable; +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_unite_logement_and_enquete_unite_logement.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_unite_logement_and_enquete_unite_logement.sql new file mode 100644 index 0000000..5f47242 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_porto_novo/import_unite_logement_and_enquete_unite_logement.sql @@ -0,0 +1,297 @@ +CREATE OR REPLACE PROCEDURE public.import_uniteLogement_and_enqueteUnitLog_from_rfu(nombreLimit integer) +LANGUAGE plpgsql +AS $procedure$ +DECLARE +l_count numeric := 0; + uniteLogement_rfu record; + l_uniteLogement_id_parent bigint; + l_batiment_id_parent bigint ; + l_personne_id_parent bigint ; +BEGIN + +FOR uniteLogement_rfu IN ( + SELECT + c.n0bat, + c.n0ul, + --c.n0etage, + CASE + WHEN replace(trim(c.n0etage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.n0etage, ',', '.')::numeric + end as n0etage, + c.quartier, + c.n0_ilot, + c.n0_parcel, + c.n0_contrib, + --c.montmenl, + CASE + WHEN replace(trim(c.montmenl), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.montmenl, ',', '.')::numeric + end as montmenl, + --c.surfsol, + CASE + WHEN replace(trim(c.surfsol), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfsol, ',', '.')::numeric + end as surfsol, + --c.surfacelo, + CASE + WHEN replace(trim(c.surfacelo), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.surfacelo, ',', '.')::numeric + end as surfacelo, + --c.vllcalcule, + CASE + WHEN replace(trim(c.vllcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vllcalcule, ',', '.')::numeric + end as vllcalcule, + --c.bail, + CASE + WHEN replace(trim(c.bail), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.bail, ',', '.')::numeric + end as bail, + --c.nbetage, + CASE + WHEN replace(trim(c.nbetage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbetage, ',', '.')::numeric + end as nbetage, + --c.vlcalcule, + CASE + WHEN replace(trim(c.vlcalcule), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.vlcalcule, ',', '.')::numeric + end as vlcalcule, + --c.utilisat, + CASE + WHEN replace(trim(c.utilisat), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.utilisat, ',', '.')::numeric + end as utilisat, + --c.finexempt, + CASE + WHEN c.finexempt IS NULL OR c.finexempt = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.finexempt !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.finexempt, 'YYYYMMDD'), 'YYYYMMDD') <> c.finexempt THEN NULL + ELSE to_date(c.finexempt, 'YYYYMMDD') + end as finexempt, + --c.toit + CASE + WHEN replace(trim(c.toit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.toit, ',', '.')::numeric + end as toit, + --nbhabit, + CASE + WHEN replace(trim(c.nbhabit), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbhabit, ',', '.')::numeric + end as nbhabit, + --nbmenage, + CASE + WHEN replace(trim(c.nbmenage), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmenage, ',', '.')::numeric + end as nbmenage, + --nbmois, + CASE + WHEN replace(trim(c.nbmois), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbmois, ',', '.')::numeric + end as nbmois, + --electric, + CASE + WHEN trim(c.electric)='Non' + THEN false + else + true + end as electric, + --eau, + CASE + WHEN trim(c.eau)='Non' + THEN false + else + true + end as eau, + --nbpiece, + CASE + WHEN replace(trim(c.nbpiece), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbpiece, ',', '.')::numeric + end as nbpiece, + --nbunite + CASE + WHEN replace(trim(c.nbunite), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.nbunite, ',', '.')::numeric + end as nbunite, + CASE + WHEN c.mdate IS NULL OR c.mdate = '' THEN NULL + -- format incorrect (pas exactement 8 chiffres) + WHEN c.mdate !~ '^[0-9]{8}$' THEN NULL + -- date invalide réelle + WHEN to_char(to_date(c.mdate, 'YYYYMMDD'), 'YYYYMMDD') <> c.mdate THEN NULL + ELSE to_date(c.mdate, 'YYYYMMDD') + end as mdate, + --c.murs, + CASE + WHEN replace(trim(c.murs), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.murs, ',', '.')::numeric + end as murs, + --standing + CASE + WHEN replace(trim(c.standing), ',', '.') ~ '^[0-9]+(\.[0-9]+)?$' + THEN replace(c.standing, ',', '.')::numeric + end as standing + FROM dblink( + 'connexion_rfu', + $db$ + select distinct + ul.n0bat, + ul.n0ul, + ul.n0etage, + ul.quartier, + ul.n0_ilot, + ul.n0_parcel, + ul.n0_contrib, + ul.montmenl, + ul.surfsol, + ul.surfacelo, + ul.vllcalcule, + ul.bail, + --ul.valloest, + ul.nbetage, + ul.vlcalcule, + ul.utilisat, + ul.finexempt, + ul.nbunitlo, + ul.toit, + ul.nbhabit, + ul.nbmenage, + ul.nbmois, + ul.electric, + ul.eau, + ul.nbpiece, + ul.nbunite, + ul.mdate, + ul.murs, + ul.standing + FROM akpakpa.unitlog ul + $db$ + ) AS c ( + n0bat varchar, + n0ul varchar, + n0etage varchar, + quartier varchar, + n0_ilot varchar, + n0_parcel varchar, + n0_contrib varchar, + montmenl varchar, + surfsol varchar, + surfacelo varchar, + vllcalcule varchar, + bail varchar, + --valloest varchar, + nbetage varchar, + vlcalcule varchar, + utilisat varchar, + finexempt varchar, + nbunitlo varchar, + toit varchar, + nbhabit varchar, + nbmenage varchar, + nbmois varchar, + electric varchar, + eau varchar, + nbpiece varchar, + nbunite varchar, + mdate varchar, + murs varchar, + standing varchar + ) + WHERE NOT EXISTS ( + SELECT 1 + FROM public.unite_logement ul + WHERE ul.code = + trim(c.quartier)||'-'||trim(c.n0_ilot)||'-'||trim(c.n0_parcel)||'-'||trim(c.n0bat)||'-'||trim(c.n0ul) + ) + limit nombreLimit + ) +LOOP + -- Récupération ID batiment locale +SELECT b.id +INTO l_batiment_id_parent +FROM public.batiment b +WHERE b.code = + trim(uniteLogement_rfu.quartier)||'-'||trim(uniteLogement_rfu.n0_ilot)||'-'||trim(uniteLogement_rfu.n0_parcel)||'-'||trim(uniteLogement_rfu.n0bat) + LIMIT 1; + +-- Récupération ID personne locale +SELECT p.id +INTO l_personne_id_parent +FROM public.personne p +WHERE p.nc =trim(uniteLogement_rfu.n0_contrib) + LIMIT 1; + + +-- Insertion unite logement local +INSERT INTO public.unite_logement( + created_at, + created_by, + deleted, + updated_at, + updated_by, + code, + nul, + numero_etage, + batiment_id, + --personne_id, + source, + superficie_au_sol, + superficie_louee, + categorie_batiment_id, + montant_locatif_annuel_calcule, + montant_locatif_annuel_declare, + montant_mensuel_location, + valeur_unite_logement_estime, + usage_id, + date_fin_exemption, + id_toit_rfu, + valeur_unite_logement_calcule, + nombre_etage +) +VALUES ( + now(), + 35, + false, + now(), + 35, + trim(uniteLogement_rfu.quartier)||'-'||trim(uniteLogement_rfu.n0_ilot)||'-'||trim(uniteLogement_rfu.n0_parcel)||'-'||trim(uniteLogement_rfu.n0bat)||'-'||trim(uniteLogement_rfu.n0ul), + uniteLogement_rfu.n0ul, + uniteLogement_rfu.n0etage, + l_batiment_id_parent, + -- l_personne_id_parent, + 'RFU', + uniteLogement_rfu.surfsol, + uniteLogement_rfu.surfacelo, + ProcedureRecupCategorieRFU(uniteLogement_rfu.nbetage::integer,uniteLogement_rfu.toit::integer), + uniteLogement_rfu.vllcalcule, + uniteLogement_rfu.bail, + uniteLogement_rfu.montmenl, + uniteLogement_rfu.vlcalcule, + CASE uniteLogement_rfu.utilisat + WHEN 1 THEN 8 + WHEN 2 THEN 14 + WHEN 3 THEN 9 + END, + uniteLogement_rfu.finexempt, + uniteLogement_rfu.toit, + uniteLogement_rfu.vlcalcule, + uniteLogement_rfu.nbetage + ) + RETURNING id INTO l_uniteLogement_id_parent; + +call public.import_enqueteUnitLog_from_rfu_cipe( + uniteLogement_rfu, + l_uniteLogement_id_parent, + l_personne_id_parent + ); + +l_count := l_count + 1; + +END LOOP; + +RAISE NOTICE 'Nombre de unité de logement insérés : %', l_count; + +END; +$procedure$; \ No newline at end of file diff --git a/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java b/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java index 3393a3a..4c02afa 100644 --- a/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java +++ b/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java @@ -450,10 +450,10 @@ public class EntityFromPayLoadService { avoirFonction.setFonction(optionalFonction.orElse(null)); avoirFonction.setUser(optionalUser.orElse(null)); - avoirFonction.setTitre(avoirFonction.getTitre()); - avoirFonction.setId(avoirFonction.getId()); - avoirFonction.setDateDebut(avoirFonction.getDateDebut()); - avoirFonction.setDateFin(avoirFonction.getDateFin()); + avoirFonction.setTitre(avoirFonctionPaylaodWeb.getTitre()); + avoirFonction.setId(avoirFonctionPaylaodWeb.getId()); + avoirFonction.setDateDebut(avoirFonctionPaylaodWeb.getDateDebut()); + avoirFonction.setDateFin(avoirFonctionPaylaodWeb.getDateFin()); return avoirFonction; } @@ -1050,7 +1050,7 @@ public class EntityFromPayLoadService { moduleApp.setId(modulePayloadWeb.getId()); moduleApp.setCode(modulePayloadWeb.getCode()); moduleApp.setNom(modulePayloadWeb.getNom()); - moduleApp.setActif(true); + moduleApp.setActif(modulePayloadWeb.getActif()); return moduleApp ; } @@ -1068,7 +1068,7 @@ public class EntityFromPayLoadService { fonctionnalite.setId(fonctionnalitePayloadWeb.getId()); fonctionnalite.setCode(fonctionnalitePayloadWeb.getCode()); fonctionnalite.setNom(fonctionnalitePayloadWeb.getNom()); - fonctionnalite.setActif(true); + fonctionnalite.setActif(fonctionnalitePayloadWeb.getActif()); return fonctionnalite ; } @@ -1094,7 +1094,7 @@ public class EntityFromPayLoadService { fonctionnalite.setId(profileModuleFonctionnalitePayloadWeb.getFonctionnaliteId()); profileModuleFonctionnalite.setFonctionnalite(fonctionnalite); } - profileModuleFonctionnalite.setActif(true); + profileModuleFonctionnalite.setActif(profileModuleFonctionnalitePayloadWeb.getActif()); return profileModuleFonctionnalite ; } } -- 2.49.1