From 9a9196148423b4f31af875d104a0f847b5898e64 Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Wed, 1 Apr 2026 21:03:26 +0100 Subject: [PATCH] centre assignation --- .../rfu/metier/CommuneCentreAssignation.java | 45 +++++++++ .../dll_export_imposition_pour_sigibe.sql | 34 +++++++ .../import_assignation_personne_cotonou.sql | 78 +++++++++++++++ .../import_imposition_rfu_cotonou.sql | 99 +++++++++++++++++++ 4 files changed, 256 insertions(+) create mode 100644 src/main/java/io/gmss/fiscad/entities/rfu/metier/CommuneCentreAssignation.java create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/dll_export_imposition_pour_sigibe.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_assignation_personne_cotonou.sql create mode 100644 src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_imposition_rfu_cotonou.sql diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/CommuneCentreAssignation.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/CommuneCentreAssignation.java new file mode 100644 index 0000000..929c2f5 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/CommuneCentreAssignation.java @@ -0,0 +1,45 @@ +package io.gmss.fiscad.entities.rfu.metier; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import io.gmss.fiscad.deserializer.LocalDateDeserializer; +import io.gmss.fiscad.entities.BaseEntity; +import io.gmss.fiscad.entities.decoupage.Commune; +import io.gmss.fiscad.entities.infocad.metier.Tpe; +import io.gmss.fiscad.entities.infocad.parametre.Personne; +import io.gmss.fiscad.entities.infocad.parametre.Structure; +import io.gmss.fiscad.enums.StatutEnregistrement; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDate; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CommuneCentreAssignation extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @JsonIgnore + @ManyToOne + private Structure structure; + + @JsonIgnore + @ManyToOne + private Commune commune; + + @JsonIgnore + @ManyToOne + private Personne personne ; + +} diff --git a/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/dll_export_imposition_pour_sigibe.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/dll_export_imposition_pour_sigibe.sql new file mode 100644 index 0000000..9601952 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/dll_export_imposition_pour_sigibe.sql @@ -0,0 +1,34 @@ +-- Tables E_AVIS et E_AVIS_DETAIL +CREATE TABLE e_avis ( + id_avis BIGINT NOT NULL, + r_avis VARCHAR(50), + exercice BIGINT, + r_commune VARCHAR(50), + r_centre_impot VARCHAR(50), + id_contribuable_foncier BIGINT, + ifu VARCHAR(50), + npi VARCHAR(20), + nc VARCHAR(20), + raison_social VARCHAR(500), + nom VARCHAR(500), + prenom VARCHAR(500), + date_liquidation DATE, + date_information DATE +); + +CREATE TABLE e_avis_detail ( + id_avis_detail BIGINT NOT NULL, + id_avis BIGINT NOT NULL, + id_impot_nature VARCHAR(50), + id_unite_foncier BIGINT NOT NULL, + nup VARCHAR(20), + r_quartier VARCHAR(50), + qip_quartier VARCHAR(10), + qip_parcelle VARCHAR(10), + batiment VARCHAR(10), + unite_logement VARCHAR(10), + montant_base_imposition NUMERIC(22,3), + montant_valeur_locative NUMERIC(22,3), + taux NUMERIC(22,10), + montant_du NUMERIC(22,3) +); \ No newline at end of file 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_assignation_personne_cotonou.sql new file mode 100644 index 0000000..04fa7e9 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/import_assignation_personne_cotonou.sql @@ -0,0 +1,78 @@ + +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_personne_from_rfu() +LANGUAGE plpgsql +AS $procedure$ +BEGIN +INSERT INTO public.commune_centre_assignation ( + nc, + ifu, + commune_id, + structure_id, + + created_at, + created_by, + deleted, + updated_at, + updated_by, + source +) +SELECT + n0_contrib, + ifu, + 77, + case centre + when 'A' then c.nom_c + when 'B' then c.nom + when 'C' then c.nom_c + when 'D' then c.nom + else null + end, + now(), + NULL::bigint, + false, + now(), + NULL::bigint, + 'RFU' +FROM dblink( + 'connexion_rfu', + $db$ + SELECT + ifu, + n0_contrib, + centre, + 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_imposition_rfu_cotonou.sql b/src/main/java/io/gmss/fiscad/persistence/procedure_fonction_stocke/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_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