diff --git a/dossierfacile-process-file/src/main/java/fr/dossierfacile/process/file/service/documentrules/IncomeTaxRulesValidationService.java b/dossierfacile-process-file/src/main/java/fr/dossierfacile/process/file/service/documentrules/IncomeTaxRulesValidationService.java index 4425ac7d1..c74e74fe2 100644 --- a/dossierfacile-process-file/src/main/java/fr/dossierfacile/process/file/service/documentrules/IncomeTaxRulesValidationService.java +++ b/dossierfacile-process-file/src/main/java/fr/dossierfacile/process/file/service/documentrules/IncomeTaxRulesValidationService.java @@ -21,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.text.Normalizer; import java.time.LocalDate; import java.util.ArrayList; import java.util.LinkedList; @@ -49,6 +50,14 @@ private TaxIncomeMainFile fromQR(BarCodeFileAnalysis barCodeFileAnalysis) { .referenceAvis(dataWithLabel.get(TwoDDocDataType.ID_44.getLabel())).build(); } + private static String normalizeName(String name) { + if (name == null) + return null; + String normalized = Normalizer.normalize(name, Normalizer.Form.NFD); + return normalized.replace('-', ' ') + .replaceAll("[\\p{InCombiningDiacriticalMarks}]", "").toUpperCase().trim(); + } + @Override @Transactional public DocumentAnalysisReport process(Document document) { @@ -152,17 +161,17 @@ public DocumentAnalysisReport process(Document document) { // Firstname LastName Person documentOwner = Optional.ofNullable((Person) document.getTenant()).orElseGet(() -> document.getGuarantor()); String firstName = documentOwner.getFirstName(); - String lastName = document.getName(); + String lastName = documentOwner.getLastName(); for (File dfFile : document.getFiles()) { BarCodeFileAnalysis analysis = dfFile.getFileAnalysis(); if (analysis.getDocumentType() == BarCodeDocumentType.TAX_ASSESSMENT) { TaxIncomeMainFile qrDocument = fromQR(dfFile.getFileAnalysis()); - if (!(qrDocument.getDeclarant1Nom().contains(firstName) - && qrDocument.getDeclarant1Nom().contains(lastName) + if (!(normalizeName(qrDocument.getDeclarant1Nom()).contains(normalizeName(firstName)) + && normalizeName(qrDocument.getDeclarant1Nom()).contains(normalizeName(lastName)) || (qrDocument.getDeclarant2Nom() != null && - qrDocument.getDeclarant2Nom().contains(firstName) - && qrDocument.getDeclarant2Nom().contains(lastName) + normalizeName(qrDocument.getDeclarant2Nom()).contains(normalizeName(firstName)) + && normalizeName(qrDocument.getDeclarant2Nom()).contains(normalizeName(lastName)) ))) { log.error("Le nom/prenom ne correpond pas à l'uilitsation tenantId:" + document.getTenant().getId() + " firstname: " + firstName); brokenRules.add(DocumentBrokenRule.builder()