From 85be8a2e24597ee84350032d5fbaf3b5321c77c2 Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Tue, 10 Mar 2026 22:36:38 +0100 Subject: [PATCH] Gestion des barem --- .../DonneesImpositionTfuController.java | 18 ++- .../rfu/metier/ImpositionsTfuController.java | 4 - .../rfu/metier/DonneesImpositionTfu.java | 24 +++- .../entities/rfu/metier/ImpositionsTfu.java | 9 +- .../rfu/parametre/BaremRfuNonBati.java | 2 + .../io/gmss/fiscad/enums/NatureImpot.java | 6 + .../io/gmss/fiscad/enums/ParametersType.java | 5 +- .../java/io/gmss/fiscad/enums/StatusAvis.java | 1 + .../DonneesImpositionTfuServiceImpl.java | 122 ++++++------------ .../rfu/metier/ImpositionsTfuServiceImpl.java | 26 +++- .../metier/DonneesImpositionTfuService.java | 3 +- .../crudweb/BaremRfuNonBatiPayloadWeb.java | 8 +- .../crudweb/DonneesImpositionPaylaodWeb.java | 89 ++++++++----- .../crudweb/ImpositionsTfuPaylaodWeb.java | 16 ++- .../DonneesImpositionTfuRepository.java | 12 ++ .../rfu/metier/ImpositionsTfuRepository.java | 29 ++++- .../parametre/BaremRfuNonBatiRepository.java | 20 ++- 17 files changed, 237 insertions(+), 157 deletions(-) create mode 100755 src/main/java/io/gmss/fiscad/enums/NatureImpot.java diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java index 0e038ef..090df2f 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java @@ -9,6 +9,8 @@ import io.gmss.fiscad.interfaces.rfu.metier.DonneesImpositionTfuService; import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.request.crudweb.ImpositionsTfuPaylaodWeb; import io.gmss.fiscad.persistence.repositories.rfu.metier.ImpositionsTfuRepository; +import io.gmss.fiscad.security.CurrentUser; +import io.gmss.fiscad.security.UserPrincipal; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; @@ -183,9 +185,9 @@ public class DonneesImpositionTfuController { return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); } } - @Operation(summary = "Générer les données fiscales TFU") - @PostMapping("/generer") - public ResponseEntity genererDonneesFiscale(@RequestBody ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) { + @Operation(summary = "Générer les données fiscales TFU des parcelle baties") + @PostMapping("/generer-batie") + public ResponseEntity genererDonneesFiscale(@CurrentUser UserPrincipal userPrincipal, @RequestBody ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) { try { Optional optionalImpositionsTfu =impositionsTfuRepository.findById(impositionsTfuPaylaodWeb.getId()); @@ -203,9 +205,13 @@ public class DonneesImpositionTfuController { ); } - optionalImpositionsTfu.get().setStatusAvis(StatusAvis.GENERE); - - impositionsTfuPaylaodWeb=donneesImpositionTfuService.genererDonneesFiscales(impositionsTfuPaylaodWeb); + if(userPrincipal==null){ + return new ResponseEntity<>( + new ApiResponse<>(false, null, "Vous n'êtes pas autorisé à accéder à cette ressource"), + HttpStatus.OK + ); + } + impositionsTfuPaylaodWeb=donneesImpositionTfuService.genererDonneesFiscalesParcelleBatie(impositionsTfuPaylaodWeb,userPrincipal.getUser().getId()); return new ResponseEntity<>( new ApiResponse<>(true,impositionsTfuPaylaodWeb, "Données d'imposition Générées avec succès."), diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/ImpositionsTfuController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/ImpositionsTfuController.java index 8a25a8e..cadfc3b 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/ImpositionsTfuController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/ImpositionsTfuController.java @@ -53,10 +53,6 @@ public class ImpositionsTfuController { ); } User user=currentUser.getUser(); - System.out.println(user.getId()); - System.out.println(user.getStructure().getId()); - System.out.println(impositionsTfuPaylaodWeb.getStructureId()); - if(user.getStructure().getId()!=impositionsTfuPaylaodWeb.getStructureId()){ return new ResponseEntity<>( diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java index 6c8bf4a..bd75f2d 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java @@ -8,6 +8,7 @@ import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.infocad.metier.Enquete; import io.gmss.fiscad.entities.infocad.metier.Parcelle; import io.gmss.fiscad.entities.infocad.metier.Tpe; +import io.gmss.fiscad.enums.NatureImpot; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Data; @@ -71,11 +72,17 @@ public class DonneesImpositionTfu extends BaseEntity implements Serializable { private int superficieParc; private Long superficieAuSolBat; private Long superficieAuSolUlog; - private String batieOuiNon; - private String exhonereOuiNon; - private String batimentExhonereOuiNon; - private String uniteLogementExhonereOuiNon; + //private String batieOuiNon; + //private String exhonereOuiNon; + //private String batimentExhonereOuiNon; + //private String uniteLogementExhonereOuiNon; + private Boolean batie; + private Boolean exonere; + private Boolean batimentExonere; + private Boolean uniteLogementExonere; private Long valeurLocativeAdm; + private Long valeurLocativeAdm70Pour100; + private Long valeurLocativeAdmMetreCarre; private Long montantLoyerAnnuel; private Long tfuMetreCarre; private Long tfuMinimum; @@ -92,10 +99,15 @@ public class DonneesImpositionTfu extends BaseEntity implements Serializable { private Long secteurId; private Long zoneRfuId; @ColumnDefault("0") - private float tauxParcelleNonBati; - private Long valeurAdministrativeParcelleNonBati; + private Long valeurAdminParcelleNb; + private Float tauxTfu; + private Long valeurAdminParcelleNbMetreCarre; @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "impositions_tfu_id", nullable = false) private ImpositionsTfu impositionsTfu ; + @Enumerated(EnumType.STRING) + private NatureImpot natureImpot; + private Long valeurBatiment; + private Long valeurParcelle; } diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/ImpositionsTfu.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/ImpositionsTfu.java index d8a6aca..5e635f4 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/ImpositionsTfu.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/ImpositionsTfu.java @@ -55,7 +55,10 @@ public class ImpositionsTfu extends BaseEntity implements Serializable { @Enumerated(EnumType.STRING) private StatusAvis statusAvis; - private Long nombreAvis; + private Integer nombreAvis; + private Integer nombreAvisFnb; + private Integer nombreAvisBatiment; + private Integer nombreAvisUniteLog; @Column(columnDefinition = "TEXT") private String motif; @@ -65,7 +68,5 @@ public class ImpositionsTfu extends BaseEntity implements Serializable { @JoinColumn(name = "impositions_tfu_id") private List donneesImpositionTfus; - public Long getNombreAvis(){ - return donneesImpositionTfus==null?0l:donneesImpositionTfus.size(); - } + } diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/parametre/BaremRfuNonBati.java b/src/main/java/io/gmss/fiscad/entities/rfu/parametre/BaremRfuNonBati.java index 6679f84..3d18702 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/parametre/BaremRfuNonBati.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/parametre/BaremRfuNonBati.java @@ -23,6 +23,8 @@ public class BaremRfuNonBati extends BaseEntity implements Serializable { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private Long valeurAdministrative; + private Long valeurAdministrativeMetreCarre; + private Boolean auMetreCarre; private Float taux; @ManyToOne private Commune commune; diff --git a/src/main/java/io/gmss/fiscad/enums/NatureImpot.java b/src/main/java/io/gmss/fiscad/enums/NatureImpot.java new file mode 100755 index 0000000..5532296 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/enums/NatureImpot.java @@ -0,0 +1,6 @@ +package io.gmss.fiscad.enums; + +public enum NatureImpot { + TFU, + IRF +} diff --git a/src/main/java/io/gmss/fiscad/enums/ParametersType.java b/src/main/java/io/gmss/fiscad/enums/ParametersType.java index 91815e9..672e333 100755 --- a/src/main/java/io/gmss/fiscad/enums/ParametersType.java +++ b/src/main/java/io/gmss/fiscad/enums/ParametersType.java @@ -12,5 +12,8 @@ public enum ParametersType { CORPS_RESET_PASSWORD, OBJET_CREATE_ACCOUNT, CORPS_CREATE_ACCOUNT, - TOKEN_IFU_EN_LIGNE ; + TOKEN_IFU_EN_LIGNE, + TAUX_TFU_HABITATION, + TAUX_TFU_PROFESSIONNELLE, + TAUX_DEFAUT_SUPERFICIE_AU_SOL; } diff --git a/src/main/java/io/gmss/fiscad/enums/StatusAvis.java b/src/main/java/io/gmss/fiscad/enums/StatusAvis.java index 4f369df..e55361b 100755 --- a/src/main/java/io/gmss/fiscad/enums/StatusAvis.java +++ b/src/main/java/io/gmss/fiscad/enums/StatusAvis.java @@ -5,6 +5,7 @@ public enum StatusAvis { CLOTURE, GENERATION_AUTORISE, REJETE, + TFU_FNB_GENERE, GENERE } diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java index fa4444d..98b0fe3 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java @@ -95,97 +95,51 @@ public class DonneesImpositionTfuServiceImpl implements DonneesImpositionTfuServ @Override @Transactional - public ImpositionsTfuPaylaodWeb genererDonneesFiscales(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) { - - // List donneesImpositionTfuResponses= donneesImpositionTfuRepository.findAllDonneesImpositionTfu(impositionsTfu.getCommune().getId(),impositionsTfu.getExercice().getAnnee()); - Long n=0l; + public ImpositionsTfuPaylaodWeb genererDonneesFiscalesParcelleNonBatie(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb, Long userId) { + Integer nb= donneesImpositionTfuRepository.genererDonneesTfuBatie(impositionsTfuPaylaodWeb.getId(),userId); - - - -// for (DonneesImpositionTfuResponse donneesImpositionTfuResponse: donneesImpositionTfuResponses){ -// DonneesImpositionTfu donneesImpositionTfu=new DonneesImpositionTfu(); -// donneesImpositionTfu.setImpositionsTfu(impositionsTfu); -// donneesImpositionTfu.setZoneRfuId(donneesImpositionTfuResponse.getZoneRfuId()); -// donneesImpositionTfu.setCodeQuartierVillage(donneesImpositionTfuResponse.getCodeQuartierVillage()); -// donneesImpositionTfu.setNomQuartierVillage(donneesImpositionTfuResponse.getNomQuartierVillage()); -// donneesImpositionTfu.setCodeArrondissement(donneesImpositionTfuResponse.getCodeArrondissement()); -// donneesImpositionTfu.setNomArrondissement(donneesImpositionTfuResponse.getNomArrondissement()); -// donneesImpositionTfu.setCodeCommune(donneesImpositionTfuResponse.getCodeCommune()); -// donneesImpositionTfu.setNomCommune(donneesImpositionTfuResponse.getNomCommune()); -// donneesImpositionTfu.setCodeDepartement(donneesImpositionTfuResponse.getCodeDepartement()); -// donneesImpositionTfu.setNomDepartement(donneesImpositionTfuResponse.getNomDepartement()); -// donneesImpositionTfu.setQ(donneesImpositionTfuResponse.getQ()); -// donneesImpositionTfu.setIlot(donneesImpositionTfuResponse.getIlot()); -// donneesImpositionTfu.setParcelle(donneesImpositionTfuResponse.getParcelle()); -// donneesImpositionTfu.setLatitude(donneesImpositionTfuResponse.getLatitude()); -// donneesImpositionTfu.setLongitude(donneesImpositionTfuResponse.getLongitude()); -// donneesImpositionTfu.setNup(donneesImpositionTfuResponse.getNup()); -// donneesImpositionTfu.setNupProvisoire(donneesImpositionTfuResponse.getNupProvisoire()); -// donneesImpositionTfu.setSuperficieParc(donneesImpositionTfuResponse.getSuperficieParc()); -// donneesImpositionTfu.setAdresseProp(donneesImpositionTfuResponse.getAdresseProp()); -// donneesImpositionTfu.setAnnee(donneesImpositionTfuResponse.getAnnee()); -// donneesImpositionTfu.setAdresseSc(donneesImpositionTfuResponse.getAdresseSc()); -// donneesImpositionTfu.setBatieOuiNon(donneesImpositionTfuResponse.getBatieOuiNon()); -// donneesImpositionTfu.setTfuMinimum(donneesImpositionTfuResponse.getTfuMinimum()); -// donneesImpositionTfu.setCategorieBat(donneesImpositionTfuResponse.getCategorieBat()); -// donneesImpositionTfu.setDateEnquete(donneesImpositionTfuResponse.getDateEnquete()); -// donneesImpositionTfu.setEmailProp(donneesImpositionTfuResponse.getEmailProp()); -// donneesImpositionTfu.setEmailSc(donneesImpositionTfuResponse.getEmailSc()); -// donneesImpositionTfu.setMontantLoyerAnnuel(donneesImpositionTfuResponse.getMontantLoyerAnnuel()); -// donneesImpositionTfu.setEnqueteId(donneesImpositionTfuResponse.getEnqueteId()); -// donneesImpositionTfu.setExhonereOuiNon(donneesImpositionTfuResponse.getExhonereOuiNon()); -// donneesImpositionTfu.setIfu(donneesImpositionTfuResponse.getIfu()); -// donneesImpositionTfu.setNombreBat(donneesImpositionTfuResponse.getNombreBat()); -// donneesImpositionTfu.setNombrePiscine(donneesImpositionTfuResponse.getNombrePiscine()); -// donneesImpositionTfu.setNombreUlog(donneesImpositionTfuResponse.getNombreUlog()); -// donneesImpositionTfu.setNomProp(donneesImpositionTfuResponse.getNomProp()); -// donneesImpositionTfu.setNomSc(donneesImpositionTfuResponse.getNomSc()); -// donneesImpositionTfu.setNpi(donneesImpositionTfuResponse.getNpi()); -// donneesImpositionTfu.setNumBatiment(donneesImpositionTfuResponse.getNumBatiment()==null?"":donneesImpositionTfuResponse.getNumBatiment()); -// donneesImpositionTfu.setNumUniteLogement(donneesImpositionTfuResponse.getNumUniteLogement()==null?"":donneesImpositionTfuResponse.getNumUniteLogement()); -// donneesImpositionTfu.setPrenomProp(donneesImpositionTfuResponse.getPrenomProp()); -// donneesImpositionTfu.setPrenomSc(donneesImpositionTfuResponse.getPrenomSc()); -// donneesImpositionTfu.setRaisonSociale(donneesImpositionTfuResponse.getRaisonSociale()); -// donneesImpositionTfu.setSecteurId(donneesImpositionTfuResponse.getSecteurId()); -// donneesImpositionTfu.setStandingBat(donneesImpositionTfuResponse.getStandingBat()); -// donneesImpositionTfu.setStructureId(donneesImpositionTfuResponse.getStructureId()); -// donneesImpositionTfu.setSuperficieAuSolBat(donneesImpositionTfuResponse.getSuperficieAuSolBat()); -// donneesImpositionTfu.setSuperficieAuSolUlog(donneesImpositionTfuResponse.getSuperficieAuSolUlog()); -// donneesImpositionTfu.setTelProp(donneesImpositionTfuResponse.getTelProp()); -// donneesImpositionTfu.setTelSc(donneesImpositionTfuResponse.getTelSc()); -// donneesImpositionTfu.setTfuMetreCarre(donneesImpositionTfuResponse.getTfuMetreCarre()); -// donneesImpositionTfu.setTitreFoncier(donneesImpositionTfuResponse.getTitreFoncier()); -// donneesImpositionTfu.setValeurLocativeAdm(donneesImpositionTfuResponse.getValeurLocativeAdm()); -// donneesImpositionTfu.setBatimentExhonereOuiNon(donneesImpositionTfuResponse.getBatimentExhonereOuiNon()); -// donneesImpositionTfu.setUniteLogementExhonereOuiNon(donneesImpositionTfuResponse.getUniteLogementExhonereOuiNon()); -// try { -// Optional baremRfuNonBatiOptional=baremRfuNonBatiRepository.findAllByCommune_IdAndZoneRfu_Id(impositionsTfu.getCommune().getId(),donneesImpositionTfu.getZoneRfuId()); -// if(baremRfuNonBatiOptional.isPresent()){ -// donneesImpositionTfu.setValeurAdministrativeParcelleNonBati(baremRfuNonBatiOptional.get().getValeurAdministrative()); -// donneesImpositionTfu.setTauxParcelleNonBati(baremRfuNonBatiOptional.get().getTaux()); -// } -// -// -// donneesImpositionTfuRepository.save(donneesImpositionTfu); -// n++; -// }catch (DataIntegrityViolationException e) { -// if (e.getCause() instanceof org.hibernate.exception.ConstraintViolationException constraintEx && -// constraintEx.getSQLException().getSQLState().equals("23505")) { -// System.out.println("Doublon détecté (clé unique) !"); -// } else { -// throw e; -// } -// } -// } ImpositionsTfu impositionsTfu = entityFromPayLoadService.getImpositionsTfuFromPayLoadWeb(impositionsTfuPaylaodWeb); - impositionsTfu.setStatusAvis(StatusAvis.GENERE); + + + impositionsTfu.setStatusAvis(StatusAvis.TFU_FNB_GENERE); + + impositionsTfu.setNombreAvisFnb(nb); + impositionsTfuRepository.save(impositionsTfu); - return impositionsTfuPaylaodWeb; + return impositionsTfuRepository.findByIdToDto(impositionsTfu.getId()).orElse(null); } + @Override + @Transactional + public ImpositionsTfuPaylaodWeb genererDonneesFiscalesParcelleBatie(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb, Long userId) { + + // List donneesImpositionTfuResponses= donneesImpositionTfuRepository.findAllDonneesImpositionTfu(impositionsTfu.getCommune().getId(),impositionsTfu.getExercice().getAnnee()); + Integer nbb= donneesImpositionTfuRepository.genererDonneesTfuBatie(impositionsTfuPaylaodWeb.getId(),userId); + + Integer nbulo= donneesImpositionTfuRepository.genererDonneesTfuBatieUniteLogement(impositionsTfuPaylaodWeb.getId(),userId); + + + ImpositionsTfu impositionsTfu = entityFromPayLoadService.getImpositionsTfuFromPayLoadWeb(impositionsTfuPaylaodWeb); + impositionsTfu.setStatusAvis(StatusAvis.GENERE); + + impositionsTfu.setNombreAvis(nbb+nbulo+ (impositionsTfu.getNombreAvisFnb()==null?0:impositionsTfu.getNombreAvisFnb())); + impositionsTfu.setNombreAvisBatiment(nbb); + impositionsTfu.setNombreAvisUniteLog(nbulo); + + impositionsTfuRepository.save(impositionsTfu); + + return impositionsTfuRepository.findByIdToDto(impositionsTfu.getId()).orElse(null); + } + + + + + + + + @Override public List getDonneesFiscalesByImposition(Long impositionsId) { return donneesImpositionTfuRepository.findAllByImpositionsTfu_Id(impositionsId); diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/ImpositionsTfuServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/ImpositionsTfuServiceImpl.java index f6f0c4d..a5d1155 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/ImpositionsTfuServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/ImpositionsTfuServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; import java.util.Optional; @AllArgsConstructor @@ -48,6 +49,16 @@ public class ImpositionsTfuServiceImpl implements ImpositionsTfuService { if (!impositionsTfus.isEmpty()) { throw new BadRequestException("Une Imposition non annulée existe déjà"); } + List statusAvis= new ArrayList<>(); + statusAvis.add(StatusAvis.EN_COURS); + statusAvis.add(StatusAvis.CLOTURE); + statusAvis.add(StatusAvis.GENERATION_AUTORISE); + + Optional optionalImpositionsTfu= impositionsTfuRepository.findDistinctByStructure_IdAndExercice_IdAndStatusAvisIn(impositionsTfuPaylaodWeb.getStructureId(),impositionsTfuPaylaodWeb.getExerciceId(),statusAvis); + + if(optionalImpositionsTfu.isPresent()){ + throw new BadRequestException("Une Imposition est déjà dans le workflow"); + } ImpositionsTfu impositionsTfu=entityFromPayLoadService.getImpositionsTfuFromPayLoadWeb(impositionsTfuPaylaodWeb); @@ -133,12 +144,15 @@ public class ImpositionsTfuServiceImpl implements ImpositionsTfuService { @Override public void deleteImpositionsTfu(Long id) throws NotFoundException { -// Optional impositionsTfuOptional = impositionsTfuRepository.findById(id); -// if (impositionsTfuOptional.isPresent()) { -// impositionsTfuRepository.deleteById(impositionsTfuOptional.get().getId()); -// } else { -// throw new NotFoundException("Impossible de trouver la nouvelle unité de logement spécifiée dans notre base de données."); -// } + Optional impositionsTfuOptional = impositionsTfuRepository.findById(id); + if (impositionsTfuOptional.isPresent()) { + if(!impositionsTfuOptional.get().getStatusAvis().equals(StatusAvis.EN_COURS)){ + throw new NotFoundException("L'état actuel : "+impositionsTfuOptional.get().getStatusAvis()+ " ne permet pas de supprimer"); + } + impositionsTfuRepository.deleteById(impositionsTfuOptional.get().getId()); + } else { + throw new NotFoundException("Impossible de trouver la nouvelle unité de logement spécifiée dans notre base de données."); + } } @Override diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java index 71d37eb..21e64ac 100755 --- a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java @@ -26,7 +26,8 @@ public interface DonneesImpositionTfuService { Optional getDonneesImpositionTfuById(Long id); - ImpositionsTfuPaylaodWeb genererDonneesFiscales(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb); + ImpositionsTfuPaylaodWeb genererDonneesFiscalesParcelleBatie(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb,Long userId); + ImpositionsTfuPaylaodWeb genererDonneesFiscalesParcelleNonBatie(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb,Long userId); List getDonneesFiscalesByImposition(Long impositionsId); List getDonneesFiscalesByImpositionArrondissement(Long impositionsId,Long arrondissementId); } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/BaremRfuNonBatiPayloadWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/BaremRfuNonBatiPayloadWeb.java index 6932d4c..d550b2a 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/BaremRfuNonBatiPayloadWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/BaremRfuNonBatiPayloadWeb.java @@ -18,8 +18,12 @@ public class BaremRfuNonBatiPayloadWeb { private Long zoneRfuId; private String zoneRfuCode; private String zoneRfuNom; + private Long valeurAdministrativeMetreCarre; + private Boolean auMetreCarre; - public BaremRfuNonBatiPayloadWeb(Long id, Long valeurAdministrative, float taux, Long communeId, String communeCode, String communeNom, Long zoneRfuId, String zoneRfuCode, String zoneRfuNom) { + public BaremRfuNonBatiPayloadWeb(Long id, Long valeurAdministrative, float taux, Long communeId, String communeCode, String communeNom, Long zoneRfuId, String zoneRfuCode, String zoneRfuNom, + Long valeurAdministrativeMetreCarre, + Boolean auMetreCarre) { this.id = id; this.valeurAdministrative = valeurAdministrative; this.taux = taux; @@ -29,5 +33,7 @@ public class BaremRfuNonBatiPayloadWeb { this.zoneRfuId = zoneRfuId; this.zoneRfuCode = zoneRfuCode; this.zoneRfuNom = zoneRfuNom; + this.valeurAdministrativeMetreCarre = valeurAdministrativeMetreCarre; + this.auMetreCarre = auMetreCarre; } } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/DonneesImpositionPaylaodWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/DonneesImpositionPaylaodWeb.java index 29959c0..a7fb4dd 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/DonneesImpositionPaylaodWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/DonneesImpositionPaylaodWeb.java @@ -1,6 +1,9 @@ package io.gmss.fiscad.paylaods.request.crudweb; import com.fasterxml.jackson.annotation.JsonFormat; +import io.gmss.fiscad.enums.NatureImpot; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; import lombok.Data; import lombok.NoArgsConstructor; @@ -20,68 +23,84 @@ public class DonneesImpositionPaylaodWeb { private String nomArrondissement; private String codeQuartierVillage; private String nomQuartierVillage; - private String q; private String ilot; private String parcelle; private String nup; - private String titreFoncier; - private String numBatiment; private String numUniteLogement; - private String ifu; private String npi; - private String telProp; private String emailProp; private String nomProp; private String prenomProp; private String raisonSociale; private String adresseProp; - - private String telSc; + private String telRep; private String emailRep; private String nomRep; private String prenomRep; private String adresseRep; - private String longitude; private String latitude; - private Integer superficieParc; private Long superficieAuSolBat; private Long superficieAuSolUlog; - - private String batieOuiNon; - private String exhonereOuiNon; - private String batimentExhonereOuiNon; - private String uniteLogementExhonereOuiNon; - + private Boolean batie; + private Boolean exonere; + private Boolean batimentExonere; + private Boolean uniteLogementExonere; private Long valeurLocativeAdm; + private Long valeurBatiment; + private Long valeurParcelle; private Long montantLoyerAnnuel; - private Long tfuMetreCarre; private Long tfuMinimum; - private String standingBat; private String categorieBat; - private Long nombrePiscine; private Long nombreUlog; private Long nombreBat; - @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate dateEnquete; - private Long serviceId; - private Long zoneRfu; - - private Float tauxParcelleNonBati; + private String serviceCode; + private Long zoneRfuId; + private String zoneRfuNom; + private Float tauxTfu; private Long valeurAdministrativeParcelleNonBati; + @Enumerated(EnumType.STRING) + private NatureImpot natureImpot; + private Long valeurLocativeAdmMetreCarre; + private Long valeurAdministrativeParcelleNonBatiAuMetreCarre; - public DonneesImpositionPaylaodWeb(Long id, Long annee, String codeDepartement, String nomDepartement, String codeCommune, String nomCommune, String codeArrondissement, String nomArrondissement, String codeQuartierVillage, String nomQuartierVillage, String q, String ilot, String parcelle, String nup, String titreFoncier, String numBatiment, String numUniteLogement, String ifu, String npi, String telProp, String emailProp, String nomProp, String prenomProp, String raisonSociale, String adresseProp, String telSc, String emailRep, String nomRep, String prenomRep, String adresseRep, String longitude, String latitude, Integer superficieParc, Long superficieAuSolBat, Long superficieAuSolUlog, String batieOuiNon, String exhonereOuiNon, String batimentExhonereOuiNon, String uniteLogementExhonereOuiNon, Long valeurLocativeAdm, Long montantLoyerAnnuel, Long tfuMetreCarre, Long tfuMinimum, String standingBat, String categorieBat, Long nombrePiscine, Long nombreUlog, Long nombreBat, LocalDate dateEnquete, Long serviceId, Long zoneRfu, Float tauxParcelleNonBati, Long valeurAdministrativeParcelleNonBati) { + public DonneesImpositionPaylaodWeb(Long id, Long annee, String codeDepartement, String nomDepartement, String codeCommune, String nomCommune, String codeArrondissement, String nomArrondissement, String codeQuartierVillage, String nomQuartierVillage, String q, String ilot, String parcelle, String nup, String titreFoncier, String numBatiment, String numUniteLogement, String ifu, String npi, String telProp, String emailProp, String nomProp, String prenomProp, String raisonSociale, String adresseProp, String telRep, String emailRep, String nomRep, String prenomRep, String adresseRep, String longitude, String latitude, Integer superficieParc, Long superficieAuSolBat, Long superficieAuSolUlog, + Boolean batie, + Boolean exonere, + Boolean batimentExonere, + Boolean uniteLogementExonere, + Long valeurLocativeAdm, + Long montantLoyerAnnuel, + Long tfuMetreCarre, + Long tfuMinimum, + String standingBat, + String categorieBat, + Long nombrePiscine, + Long nombreUlog, + Long nombreBat, + LocalDate dateEnquete, + Long serviceId, + Long zoneRfuId, Float tauxParcelleNonBati, Long valeurAdministrativeParcelleNonBati, + NatureImpot natureImpot, + String serviceCode, + String zoneRfuNom, + Long valeurBatiment, + Long valeurParcelle, + Long valeurLocativeAdmMetreCarre, + Long valeurAdministrativeParcelleNonBatiAuMetreCarre + ) { this.id = id; this.annee = annee; this.codeDepartement = codeDepartement; @@ -107,7 +126,7 @@ public class DonneesImpositionPaylaodWeb { this.prenomProp = prenomProp; this.raisonSociale = raisonSociale; this.adresseProp = adresseProp; - this.telSc = telSc; + this.telRep = telRep; this.emailRep = emailRep; this.nomRep = nomRep; this.prenomRep = prenomRep; @@ -117,10 +136,10 @@ public class DonneesImpositionPaylaodWeb { this.superficieParc = superficieParc; this.superficieAuSolBat = superficieAuSolBat; this.superficieAuSolUlog = superficieAuSolUlog; - this.batieOuiNon = batieOuiNon; - this.exhonereOuiNon = exhonereOuiNon; - this.batimentExhonereOuiNon = batimentExhonereOuiNon; - this.uniteLogementExhonereOuiNon = uniteLogementExhonereOuiNon; + this.batie = batie; + this.exonere = exonere; + this.batimentExonere = batimentExonere; + this.uniteLogementExonere = uniteLogementExonere; this.valeurLocativeAdm = valeurLocativeAdm; this.montantLoyerAnnuel = montantLoyerAnnuel; this.tfuMetreCarre = tfuMetreCarre; @@ -132,8 +151,16 @@ public class DonneesImpositionPaylaodWeb { this.nombreBat = nombreBat; this.dateEnquete = dateEnquete; this.serviceId = serviceId; - this.zoneRfu = zoneRfu; - this.tauxParcelleNonBati = tauxParcelleNonBati; + this.zoneRfuId = zoneRfuId; + this.tauxTfu = tauxParcelleNonBati; this.valeurAdministrativeParcelleNonBati = valeurAdministrativeParcelleNonBati; + this.natureImpot = natureImpot; + this.serviceCode = serviceCode; + this.zoneRfuNom = zoneRfuNom; + this.valeurBatiment = valeurBatiment; + this.valeurParcelle = valeurParcelle; + this.valeurLocativeAdmMetreCarre = valeurLocativeAdmMetreCarre; + this.valeurAdministrativeParcelleNonBatiAuMetreCarre = valeurAdministrativeParcelleNonBatiAuMetreCarre; + } } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ImpositionsTfuPaylaodWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ImpositionsTfuPaylaodWeb.java index 40bede6..c97e3e9 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ImpositionsTfuPaylaodWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ImpositionsTfuPaylaodWeb.java @@ -6,6 +6,7 @@ import io.gmss.fiscad.deserializer.LocalDateDeserializer; import io.gmss.fiscad.entities.decoupage.Commune; import io.gmss.fiscad.entities.infocad.parametre.Structure; import io.gmss.fiscad.entities.rfu.parametre.Exercice; +import io.gmss.fiscad.enums.NatureImpot; import io.gmss.fiscad.enums.StatusAvis; import jakarta.persistence.*; import lombok.Data; @@ -23,7 +24,10 @@ public class ImpositionsTfuPaylaodWeb { private String datePieceAdmin; @Enumerated(EnumType.STRING) private StatusAvis statusAvis; - private Long nombreAvis; + private Integer nombreAvis; + private Integer nombreAvisFnb; + private Integer nombreAvisBatiment; + private Integer nombreAvisUniteLog; @Column(columnDefinition = "TEXT") private String motif; private Long exerciceId; @@ -33,8 +37,11 @@ public class ImpositionsTfuPaylaodWeb { private String communeNom; private Long structureId ; private String structureNom ; - - public ImpositionsTfuPaylaodWeb(Long id, LocalDate dateGeneration, LocalDate dateCloture, String referencePieceAdmin, String datePieceAdmin, StatusAvis statusAvis, Long nombreAvis, String motif, Long exerciceId, Integer exerciceAnnee, Long communeId, String communeCode, String communeNom, Long structureId, String structureNom) { + public ImpositionsTfuPaylaodWeb(Long id, LocalDate dateGeneration, LocalDate dateCloture, String referencePieceAdmin, String datePieceAdmin, StatusAvis statusAvis, Integer nombreAvis, String motif, Long exerciceId, Integer exerciceAnnee, Long communeId, String communeCode, String communeNom, Long structureId, String structureNom, + Integer nombreAvisFnb, + Integer nombreAvisBatiment, + Integer nombreAvisUniteLog + ) { this.id = id; this.dateGeneration = dateGeneration; this.dateCloture = dateCloture; @@ -50,5 +57,8 @@ public class ImpositionsTfuPaylaodWeb { this.communeNom = communeNom; this.structureId = structureId; this.structureNom = structureNom; + this.nombreAvisFnb = nombreAvisFnb; + this.nombreAvisBatiment = nombreAvisBatiment; + this.nombreAvisUniteLog = nombreAvisUniteLog; } } diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/DonneesImpositionTfuRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/DonneesImpositionTfuRepository.java index 32b2d0b..0c314fb 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/DonneesImpositionTfuRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/DonneesImpositionTfuRepository.java @@ -5,6 +5,7 @@ import io.gmss.fiscad.entities.rfu.metier.DonneesImpositionTfu; import io.gmss.fiscad.paylaods.response.DonneesImpositionTfuResponse; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.List; import java.util.Optional; @@ -122,6 +123,17 @@ public interface DonneesImpositionTfuRepository extends JpaRepository findAllByImpositionsTfu_Id(Long impositionId); List findAllByImpositionsTfu_IdAndCodeArrondissement(Long impositionId,String arrondissementCode); + @Query(value = "SELECT generer_donnees_imposition_tfu_batie(:structureId, :impositionId)", nativeQuery = true) + Integer genererDonneesTfuBatie( + @Param("structureId") Long structureId, + @Param("impositionId") Long impositionId + ); + @Query(value = "SELECT generer_donnees_imposition_tfu_batie_unite_logement(:structureId, :impositionId)", nativeQuery = true) + Integer genererDonneesTfuBatieUniteLogement( + @Param("structureId") Long structureId, + @Param("impositionId") Long impositionId + ); + } diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/ImpositionsTfuRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/ImpositionsTfuRepository.java index 227e749..eec90a9 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/ImpositionsTfuRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/ImpositionsTfuRepository.java @@ -1,6 +1,7 @@ package io.gmss.fiscad.persistence.repositories.rfu.metier; import io.gmss.fiscad.entities.rfu.metier.ImpositionsTfu; +import io.gmss.fiscad.enums.StatusAvis; import io.gmss.fiscad.paylaods.request.crudweb.ImpositionsTfuPaylaodWeb; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -15,6 +16,9 @@ import java.util.Optional; public interface ImpositionsTfuRepository extends JpaRepository { Optional findAllByCommune_IdAndExercice_Id(Long communeId,Long ExerciceId); + + Optional findDistinctByStructure_IdAndExercice_IdAndStatusAvisIn(Long structureId, Long exerciceId, List statusAvis); + @Query(value = "select i.* " + " from impositions_tfu i " + " inner join commune c on c.id=i.commune_id" + @@ -51,7 +55,10 @@ public interface ImpositionsTfuRepository extends JpaRepository findAllByCommune_IdAndZoneRfu_Id(Long communeId,Long z c.nom, z.id, z.code, - z.nom + z.nom, + b.valeurAdministrativeMetreCarre, + b.auMetreCarre ) FROM BaremRfuNonBati b LEFT JOIN b.commune c @@ -50,7 +52,9 @@ Optional findAllByCommune_IdAndZoneRfu_Id(Long communeId,Long z c.nom, z.id, z.code, - z.nom + z.nom, + b.valeurAdministrativeMetreCarre, + b.auMetreCarre ) FROM BaremRfuNonBati b LEFT JOIN b.commune c @@ -71,7 +75,9 @@ Optional findAllByCommune_IdAndZoneRfu_Id(Long communeId,Long z c.nom, z.id, z.code, - z.nom + z.nom, + b.valeurAdministrativeMetreCarre, + b.auMetreCarre ) FROM BaremRfuNonBati b LEFT JOIN b.commune c @@ -95,7 +101,9 @@ Optional findAllByCommune_IdAndZoneRfu_Id(Long communeId,Long z c.nom, z.id, z.code, - z.nom + z.nom, + b.valeurAdministrativeMetreCarre, + b.auMetreCarre ) FROM BaremRfuNonBati b LEFT JOIN b.commune c @@ -120,7 +128,9 @@ Optional findAllByCommune_IdAndZoneRfu_Id(Long communeId,Long z c.nom, z.id, z.code, - z.nom + z.nom, + b.valeurAdministrativeMetreCarre, + b.auMetreCarre ) FROM BaremRfuNonBati b LEFT JOIN b.commune c -- 2.49.1