From 8b8e5277a8dae6ed1ce96aa2f56a39d2801edece Mon Sep 17 00:00:00 2001
From: Vincent Zwingmann <vincent.zwingmann@gmail.com>
Date: Mon, 11 Sep 2023 15:50:50 +0200
Subject: [PATCH 1/9] =?UTF-8?q?suppression=20de=20tag=20derni=C3=A8re=20op?=
 =?UTF-8?q?=C3=A9ration=20&=20liste=20des=20libell=C3=A9s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../operations/api/OperationsResource.java    | 29 -----------
 .../business/OperationsService.java           | 36 -------------
 .../operation/LibellesOperationEnum.java      | 50 +++++++++++++++++++
 .../LibellesOperationsAPIObject.java          | 26 ----------
 .../model/operation/LigneOperation.java       |  9 +---
 .../ports/IOperationsAppProvider.java         |  7 +--
 .../operations/utils/BudgetDataUtils.java     |  7 ++-
 7 files changed, 58 insertions(+), 106 deletions(-)
 create mode 100644 operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationEnum.java
 delete mode 100644 operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationsAPIObject.java

diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/api/OperationsResource.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/api/OperationsResource.java
index af651ce..1b2c1e6 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/api/OperationsResource.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/api/OperationsResource.java
@@ -5,10 +5,8 @@
 import io.github.vzwingma.finances.budget.services.communs.data.trace.BusinessTraceContext;
 import io.github.vzwingma.finances.budget.services.communs.data.trace.BusinessTraceContextKeyEnum;
 import io.github.vzwingma.finances.budget.services.communs.utils.exceptions.BadParametersException;
-import io.github.vzwingma.finances.budget.services.communs.utils.exceptions.DataNotFoundException;
 import io.github.vzwingma.finances.budget.serverless.services.operations.api.enums.OperationsAPIEnum;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.budget.BudgetMensuel;
-import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.operation.LibellesOperationsAPIObject;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.operation.LigneOperation;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.ports.IBudgetAppProvider;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.ports.IOperationsAppProvider;
@@ -224,33 +222,6 @@ public Uni<BudgetMensuel> setBudgetActif(
      *********************************************************/
 
 
-    /**
-     * Met à jour le flag de l'opération comme dernière opération réalisée
-     * @param idBudget id du compte
-     * @return résultat de l'action
-     */
-    @Operation(description="Met à jour le flag de l'opération comme dernière opération réalisée")
-    @APIResponses(value = {
-            @APIResponse(responseCode = "200", description = "Budget mis à jour"),
-            @APIResponse(responseCode = "401", description = "Utilisateur non authentifié"),
-            @APIResponse(responseCode = "403", description = "Opération non autorisée"),
-            @APIResponse(responseCode = "404", description = "Données introuvables")
-    })
-    @POST
-    @RolesAllowed({ OperationsAPIEnum.OPERATIONS_ROLE })
-    @Path(value= OperationsAPIEnum.BUDGET_OPERATION_DERNIERE)
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Uni<Boolean> setAsDerniereOperation(
-            @RestPath("idBudget") String idBudget,
-            @RestPath("idOperation") String idOperation)  {
-
-        BusinessTraceContext.getclear().put(BusinessTraceContextKeyEnum.BUDGET, idBudget).put(BusinessTraceContextKeyEnum.OPERATION, idOperation).put(BusinessTraceContextKeyEnum.USER, super.getAuthenticatedUser());
-        LOG.trace("setAsDerniereOperation");
-        return operationsService.setLigneAsDerniereOperation(idBudget, idOperation);
-    }
-
-
     /**
      * Création d'une opération
      * @param idBudget id du budget
diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
index 486283e..1451cf2 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
@@ -149,42 +149,6 @@ private void calculBudgetTotalSsCategories(Map<String, TotauxCategorie> totauxSs
 	}
 
 
-
-	@Override
-	public Uni<Boolean> setLigneAsDerniereOperation(String idBudget, String ligneId) {
-		LOGGER.info("Tag de la ligne comme dernière opération {} sur {}", ligneId, idBudget);
-		final AtomicBoolean operationUpdate = new AtomicBoolean(false);
-		return this.budgetService.getBudgetMensuel(idBudget)
-				.onItem()
-				.invoke(budget -> {
-					if( budget == null){
-						LOGGER.warn("Budget NULL");
-					}
-					else if(budget.getListeOperations() != null && !budget.getListeOperations().isEmpty()) {
-						budget.getListeOperations()
-							.forEach(op -> {
-								op.setTagDerniereOperation(ligneId.equals(op.getId()));
-								if(ligneId.equals(op.getId())) {
-									LOGGER.debug("L'opération a été trouvée dans le budget ");
-									operationUpdate.set(true);
-								}
-							});
-						// Mise à jour du budget
-						budget.setDateMiseAJour(LocalDateTime.now());
-				}})
-				.call(budget -> {
-					if(operationUpdate.get()) {
-						return this.dataOperationsProvider.sauvegardeBudgetMensuel(budget);
-					}
-					else{
-						return Uni.createFrom().failure(new DataNotFoundException("L'opération "+ligneId+" n'a pas été trouvée dans le budget "+idBudget));
-					}
-				})
-				.onItem()
-					.transform(Objects::nonNull);
-	}
-
-
 	@Override
 	public void addOrReplaceOperation(List<LigneOperation> operations, LigneOperation ligneOperation, String auteur)  {
 		BusinessTraceContext.get().put(BusinessTraceContextKeyEnum.OPERATION, ligneOperation.getId());
diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationEnum.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationEnum.java
new file mode 100644
index 0000000..8f2bea2
--- /dev/null
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationEnum.java
@@ -0,0 +1,50 @@
+/*
+
+ */
+package io.github.vzwingma.finances.budget.serverless.services.operations.business.model.operation;
+
+import lombok.Getter;
+
+/**
+ * Libellé dans les opérations
+ * @author vzwingma
+ *
+ */
+@Getter
+public enum LibellesOperationEnum {
+
+	// Libellé en retard
+	EN_RETARD("retard", "[En Retard]");
+
+
+	private final String id;
+	private final String libelle;
+
+	/**
+	 * Constructeur
+	 * @param id : id de l'enum
+	 * @param libelle : libellé de l'enum
+	 */
+	LibellesOperationEnum(String id, String libelle){
+		this.id = id;
+		this.libelle = libelle;
+	}
+
+
+	public static LibellesOperationEnum getEnum(String idEnum){
+		for (LibellesOperationEnum enums : values()) {
+			if(enums.getId().equals(idEnum)){
+				return enums;
+			}
+		}
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see java.lang.Enum#toString()
+	 */
+	@Override
+	public String toString(){
+		return getLibelle();
+	}
+}
diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationsAPIObject.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationsAPIObject.java
deleted file mode 100644
index 554a748..0000000
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationsAPIObject.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package io.github.vzwingma.finances.budget.serverless.services.operations.business.model.operation;
-
-import io.github.vzwingma.finances.budget.services.communs.data.abstrait.AbstractAPIObjectModel;
-import lombok.Getter;
-import lombok.Setter;
-import org.eclipse.microprofile.openapi.annotations.media.Schema;
-
-import java.io.Serial;
-import java.util.Set;
-
-/**
- * Object représentant les libellés des opérations pour l'ensemble des budgets de l'année pour un compte
- * @author vzwingma
- *
- */
-@Getter @Setter
-public class LibellesOperationsAPIObject extends AbstractAPIObjectModel {
-
-
-	@Serial
-	private static final long serialVersionUID = -1515823001772650589L;
-	@Schema(description = "Id du compte")
-	private String idCompte;
-	@Schema(description = "Libelles des opérations courantes")
-	private Set<String> libellesOperations;
-}
diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LigneOperation.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LigneOperation.java
index d3a9523..2a7c2cd 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LigneOperation.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LigneOperation.java
@@ -64,10 +64,6 @@ public class LigneOperation extends AbstractAPIObjectModel implements Comparable
 	@Schema(description = "Opération périodique ?")
 	private Mensualite mensualite;
 
-	// tag comme dernière opération
-	@Schema(description = "Dernier opération ?")
-	private boolean tagDerniereOperation;
-
 	@Schema(description = "Autres infos")
 	private AddInfos autresInfos;
 
@@ -203,7 +199,6 @@ private void buildLigneOperation(Categorie categorie, Categorie ssCategorie, Str
 
 		putValeurFromSaisie(absValeur);
 		this.etat = etat;
-		this.tagDerniereOperation = false;
 
 		setCategorie(categorie);
 		setSsCategorie(ssCategorie);
@@ -260,8 +255,8 @@ public LocalDate retrieveDateOperation() {
 	 */
 	@Override
 	public String toString() {
-		return String.format("LigneOperations [id=%s, categorie=%s, sous-categorie=%s, libelle=%s, typeDepense=%s, etat=%s, valeur=%s, %s, derniereOperation=%s]"
-				, id, categorie, ssCategorie, libelle, typeOperation, etat, valeur, mensualite != null ? mensualite.toString() : "mensualite=false", tagDerniereOperation);
+		return String.format("LigneOperations [id=%s, categorie=%s, sous-categorie=%s, libelle=%s, typeDepense=%s, etat=%s, valeur=%s, %s]"
+				, id, categorie, ssCategorie, libelle, typeOperation, etat, valeur, mensualite != null ? mensualite.toString() : "mensualite=false");
 	}
 
 	@Override
diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/ports/IOperationsAppProvider.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/ports/IOperationsAppProvider.java
index 274ff61..7695740 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/ports/IOperationsAppProvider.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/ports/IOperationsAppProvider.java
@@ -34,12 +34,7 @@ public interface IOperationsAppProvider {
      * @return liste des opérations à mettre à jour dans le budget, avec l'intercompte
      */
     void addOperationIntercompte(List<LigneOperation> operations, LigneOperation ligneOperationSource, String libelleOperationCible, String auteur);
-    /**
-     * Mise à jour de la ligne comme dernière opération
-     *
-     * @param ligneId identifiant de ligne
-     */
-    Uni<Boolean> setLigneAsDerniereOperation(String idBudget, String ligneId);
+
 
     /**
      * Suppression d'une opération
diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/utils/BudgetDataUtils.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/utils/BudgetDataUtils.java
index 6d23e5f..3376de6 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/utils/BudgetDataUtils.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/utils/BudgetDataUtils.java
@@ -1,5 +1,6 @@
 package io.github.vzwingma.finances.budget.serverless.services.operations.utils;
 
+import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.operation.LibellesOperationEnum;
 import io.github.vzwingma.finances.budget.services.communs.utils.data.BudgetDateTimeUtils;
 import io.github.vzwingma.finances.budget.services.communs.utils.exceptions.BudgetNotFoundException;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.budget.BudgetMensuel;
@@ -153,7 +154,6 @@ public static LigneOperation cloneOperationToMoisSuivant(LigneOperation ligneOpe
 		ligneOperationClonee.setEtat(OperationEtatEnum.PREVUE);
 		ligneOperationClonee.setTypeOperation(ligneOperation.getTypeOperation());
 		ligneOperationClonee.putValeurFromSaisie(Math.abs(ligneOperation.getValeur()));
-		ligneOperationClonee.setTagDerniereOperation(false);
 		return ligneOperationClonee;
 	}
 
@@ -182,7 +182,10 @@ public static List<LigneOperation> cloneOperationPeriodiqueToMoisSuivant(final L
 					LOGGER.warn("L'opération périodique {} est reportée : en retard", ligneOperation.getMensualite().getPeriode().name());
 				}
 				LigneOperation ligneOperationEcheanceReportee = cloneOperationToMoisSuivant(ligneOperation);
-				ligneOperationEcheanceReportee.setLibelle("[En Retard] " + ligneOperation.getLibelle());
+				if(ligneOperationEcheanceReportee.getLibelle() != null
+						&& !ligneOperationEcheanceReportee.getLibelle().startsWith(LibellesOperationEnum.EN_RETARD.getLibelle())){
+					ligneOperationEcheanceReportee.setLibelle(LibellesOperationEnum.EN_RETARD.getLibelle() + ligneOperation.getLibelle());
+				}
 				LigneOperation.Mensualite echeanceReportee = new LigneOperation.Mensualite();
 				echeanceReportee.setPeriode(OperationPeriodiciteEnum.PONCTUELLE);
 				echeanceReportee.setProchaineEcheance(-1);

From ec40ea1d0d865aba0b965ff61ad3da9111af6994 Mon Sep 17 00:00:00 2001
From: Vincent Zwingmann <vincent.zwingmann@gmail.com>
Date: Mon, 11 Sep 2023 15:57:05 +0200
Subject: [PATCH 2/9] =?UTF-8?q?suppression=20de=20tag=20derni=C3=A8re=20op?=
 =?UTF-8?q?=C3=A9ration=20&=20liste=20des=20libell=C3=A9s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../services/operations/api/OperationsResource.java      | 3 ---
 .../services/operations/business/OperationsService.java  | 3 ---
 .../business/model/operation/LibellesOperationEnum.java  | 9 ---------
 .../business/model/operation/LigneOperation.java         | 1 +
 .../business/ports/IOperationsAppProvider.java           | 3 +--
 5 files changed, 2 insertions(+), 17 deletions(-)

diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/api/OperationsResource.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/api/OperationsResource.java
index 1b2c1e6..f869ab6 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/api/OperationsResource.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/api/OperationsResource.java
@@ -50,9 +50,6 @@ public class OperationsResource extends AbstractAPIInterceptors {
     @Inject
     IBudgetAppProvider budgetService;
 
-    @Inject
-    IOperationsAppProvider operationsService;
-
     @Context
     SecurityContext securityContext;
 
diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
index 1451cf2..58db5d2 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
@@ -16,7 +16,6 @@
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.ports.IBudgetAppProvider;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.ports.IOperationsAppProvider;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.ports.IOperationsRepository;
-import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
@@ -30,8 +29,6 @@
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * Service fournissant les calculs de budget sur les opérations
diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationEnum.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationEnum.java
index 8f2bea2..79803a5 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationEnum.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LibellesOperationEnum.java
@@ -31,15 +31,6 @@ public enum LibellesOperationEnum {
 	}
 
 
-	public static LibellesOperationEnum getEnum(String idEnum){
-		for (LibellesOperationEnum enums : values()) {
-			if(enums.getId().equals(idEnum)){
-				return enums;
-			}
-		}
-		return null;
-	}
-
 	/* (non-Javadoc)
 	 * @see java.lang.Enum#toString()
 	 */
diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LigneOperation.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LigneOperation.java
index 2a7c2cd..9ed5f52 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LigneOperation.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/model/operation/LigneOperation.java
@@ -9,6 +9,7 @@
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
 import io.github.vzwingma.finances.budget.services.communs.data.abstrait.AbstractAPIObjectModel;
 import io.github.vzwingma.finances.budget.services.communs.data.model.CategorieOperations;
+import io.smallrye.common.constraint.NotNull;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/ports/IOperationsAppProvider.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/ports/IOperationsAppProvider.java
index 7695740..f6dea9a 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/ports/IOperationsAppProvider.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/ports/IOperationsAppProvider.java
@@ -3,7 +3,6 @@
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.operation.LigneOperation;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.budget.BudgetMensuel;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.budget.TotauxCategorie;
-import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
 
 import java.util.List;
@@ -31,7 +30,7 @@ public interface IOperationsAppProvider {
      * @param ligneOperationSource  ligne de dépense, source, pour créer une nouvelle opération
      * @param libelleOperationCible libelle de la nouvelle opération
      * @param auteur                auteur de l'action
-     * @return liste des opérations à mettre à jour dans le budget, avec l'intercompte
+     *  liste des opérations à mettre à jour dans le budget, avec l'intercompte
      */
     void addOperationIntercompte(List<LigneOperation> operations, LigneOperation ligneOperationSource, String libelleOperationCible, String auteur);
 

From 2d8afdeb425f46f1d06ac020238c5c1855845c4a Mon Sep 17 00:00:00 2001
From: Vincent Zwingmann <vincent.zwingmann@gmail.com>
Date: Mon, 11 Sep 2023 16:08:10 +0200
Subject: [PATCH 3/9] =?UTF-8?q?suppression=20de=20tag=20derni=C3=A8re=20op?=
 =?UTF-8?q?=C3=A9ration?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../business/OperationsServiceTest.java       | 24 -------------------
 1 file changed, 24 deletions(-)

diff --git a/operations/src/test/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsServiceTest.java b/operations/src/test/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsServiceTest.java
index 11bee7a..07b444e 100644
--- a/operations/src/test/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsServiceTest.java
+++ b/operations/src/test/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsServiceTest.java
@@ -46,30 +46,6 @@ public void setup() {
         operationsAppProvider.setParametragesService(parametragesServiceProvider);
     }
 
-    @Test
-    void testSetDerniereOperationKO(){
-        // When
-        Mockito.when(budgetAppProvider.getBudgetMensuel(Mockito.anyString()))
-                .thenReturn(Uni.createFrom().item(MockDataBudgets.getBudgetActifCompteC1et3operationsRealisees()));
-        // Test
-
-        CompletionException thrown = assertThrows(CompletionException.class, () -> operationsAppProvider.setLigneAsDerniereOperation("Test", "Test")
-                .await().indefinitely());
-        assertEquals("io.github.vzwingma.finances.budget.services.communs.utils.exceptions.DataNotFoundException", thrown.getMessage());
-        Mockito.verify(mockOperationDataProvider, Mockito.never()).sauvegardeBudgetMensuel(Mockito.any());
-    }
-
-
-    @Test
-    void testSetDerniereOperation(){
-        // When
-        Mockito.when(budgetAppProvider.getBudgetMensuel(Mockito.anyString()))
-                .thenReturn(Uni.createFrom().item(MockDataBudgets.getBudgetActifCompteC1et3operationsRealisees()));
-        Mockito.when(mockOperationDataProvider.sauvegardeBudgetMensuel(any(BudgetMensuel.class))).thenReturn(Uni.createFrom().item(new BudgetMensuel()));
-        // Test
-        assertTrue(operationsAppProvider.setLigneAsDerniereOperation("Test", "C1B2_L3").await().indefinitely());
-        Mockito.verify(mockOperationDataProvider, Mockito.times(1)).sauvegardeBudgetMensuel(Mockito.any());
-    }
 
 
     @Test

From 873362aa6ca4fb1390f91aaf32545da96c4bb17e Mon Sep 17 00:00:00 2001
From: Vincent Zwingmann <vincent.zwingmann@gmail.com>
Date: Tue, 19 Sep 2023 09:33:59 +0200
Subject: [PATCH 4/9] upgrade Quarkus

---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 438adee..68ebdbc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
 
     <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
     <quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
-    <quarkus.platform.version>3.3.1</quarkus.platform.version>
+    <quarkus.platform.version>3.4.0</quarkus.platform.version>
     <lombok.version>1.18.28</lombok.version>
     <surefire-plugin.version>3.1.0</surefire-plugin.version>
     <jacoco.version>0.8.10</jacoco.version>

From 921a7e710a019a364716bf3956b4b7d64d1aeedd Mon Sep 17 00:00:00 2001
From: Vincent Zwingmann <vincent.zwingmann@gmail.com>
Date: Tue, 19 Sep 2023 23:33:45 +0200
Subject: [PATCH 5/9] =?UTF-8?q?#22=20:=20Correction=20des=20d=C3=A9clarati?=
 =?UTF-8?q?ons=20de=20remboursement?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../services/operations/business/OperationsService.java    | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
index 58db5d2..3be8bf0 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
@@ -7,7 +7,6 @@
 import io.github.vzwingma.finances.budget.services.communs.data.model.CategorieOperations;
 import io.github.vzwingma.finances.budget.services.communs.data.trace.BusinessTraceContext;
 import io.github.vzwingma.finances.budget.services.communs.data.trace.BusinessTraceContextKeyEnum;
-import io.github.vzwingma.finances.budget.services.communs.utils.exceptions.DataNotFoundException;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.budget.BudgetMensuel;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.budget.TotauxCategorie;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.operation.OperationEtatEnum;
@@ -71,7 +70,7 @@ public void calculSoldes(List<LigneOperation> operations, BudgetMensuel.Soldes s
 
 			// Calcul par catégorie
 			calculBudgetTotalCategories(totauxCategorieMap, operation);
-			// Calcul par sous catégorie
+			// Calcul par sous catégories
 			calculBudgetTotalSsCategories(totauxSsCategoriesMap, operation);
 			// Calcul des totaux
 			if(operation.getEtat().equals(OperationEtatEnum.REALISEE)){
@@ -245,9 +244,7 @@ public Uni<LigneOperation> createOperationRemboursement(LigneOperation operation
 							Uni.createFrom().item(operationSource),
 							this.parametragesService.getCategorieParId(IdsCategoriesEnum.REMBOURSEMENT.getId()))
 					.asTuple()
-					.map(tuple -> createOperationRemboursement(tuple.getItem1(), tuple.getItem2(), auteur))
-					.onItem()
-						.ifNull().failWith(new DataNotFoundException("Impossible de créer le remboursement car la catégorie de remboursement n'a pas été trouvée"));
+					.map(tuple -> createOperationRemboursement(tuple.getItem1(), tuple.getItem2(), auteur));
 		}
 		else{
 			return Uni.createFrom().nullItem();

From 6bdbf3a0e1382b1ff50ff3c85cb44b8b0ca9bc57 Mon Sep 17 00:00:00 2001
From: Vincent Zwingmann <vincent.zwingmann@gmail.com>
Date: Tue, 19 Sep 2023 23:57:33 +0200
Subject: [PATCH 6/9] =?UTF-8?q?#22=20:=20Correction=20des=20d=C3=A9clarati?=
 =?UTF-8?q?ons=20de=20remboursement?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../services/operations/business/OperationsService.java     | 6 ++++--
 .../services/operations/business/OperationsServiceTest.java | 3 +--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
index 3be8bf0..4aa028b 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsService.java
@@ -7,6 +7,7 @@
 import io.github.vzwingma.finances.budget.services.communs.data.model.CategorieOperations;
 import io.github.vzwingma.finances.budget.services.communs.data.trace.BusinessTraceContext;
 import io.github.vzwingma.finances.budget.services.communs.data.trace.BusinessTraceContextKeyEnum;
+import io.github.vzwingma.finances.budget.services.communs.utils.exceptions.DataNotFoundException;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.budget.BudgetMensuel;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.budget.TotauxCategorie;
 import io.github.vzwingma.finances.budget.serverless.services.operations.business.model.operation.OperationEtatEnum;
@@ -244,7 +245,9 @@ public Uni<LigneOperation> createOperationRemboursement(LigneOperation operation
 							Uni.createFrom().item(operationSource),
 							this.parametragesService.getCategorieParId(IdsCategoriesEnum.REMBOURSEMENT.getId()))
 					.asTuple()
-					.map(tuple -> createOperationRemboursement(tuple.getItem1(), tuple.getItem2(), auteur));
+					.map(tuple -> createOperationRemboursement(tuple.getItem1(), tuple.getItem2(), auteur))
+					.onItem()
+						.ifNull().failWith(new DataNotFoundException("Impossible de créer le remboursement car la catégorie de remboursement n'a pas été trouvée"));
 		}
 		else{
 			return Uni.createFrom().nullItem();
@@ -257,7 +260,6 @@ public Uni<LigneOperation> createOperationRemboursement(LigneOperation operation
 	 * @param ligneOperation ligne d'opération à ajouter
 	 * @return ligne de remboursement
 	 */
-
 	private LigneOperation createOperationRemboursement(LigneOperation ligneOperation, CategorieOperations ssCategorieRemboursement, String auteur) {
 		if(ssCategorieRemboursement != null) {
 			return completeOperationAttributes(new LigneOperation(
diff --git a/operations/src/test/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsServiceTest.java b/operations/src/test/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsServiceTest.java
index 07b444e..b452c20 100644
--- a/operations/src/test/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsServiceTest.java
+++ b/operations/src/test/java/io/github/vzwingma/finances/budget/serverless/services/operations/business/OperationsServiceTest.java
@@ -32,14 +32,13 @@ class OperationsServiceTest {
     private OperationsService operationsAppProvider;
 
     private IParametragesServiceProvider parametragesServiceProvider;
-    private IBudgetAppProvider budgetAppProvider;
     private IOperationsRepository mockOperationDataProvider;
 
     @BeforeEach
     public void setup() {
         mockOperationDataProvider = Mockito.mock(IOperationsRepository.class);
         operationsAppProvider = Mockito.spy(new OperationsService());
-        budgetAppProvider = Mockito.mock(BudgetService.class);
+        IBudgetAppProvider budgetAppProvider = Mockito.mock(BudgetService.class);
         operationsAppProvider.setDataOperationsProvider(mockOperationDataProvider);
         operationsAppProvider.setBudgetService(budgetAppProvider);
         parametragesServiceProvider = Mockito.mock(IParametragesServiceProvider.class);

From 856ec23600babf41bcb7cc9412083a4c037bb8f5 Mon Sep 17 00:00:00 2001
From: Vincent Zwingmann <vincent.zwingmann@gmail.com>
Date: Wed, 20 Sep 2023 00:08:11 +0200
Subject: [PATCH 7/9] runtime Java17

---
 communs/src/aws-deploy/sam.native.template.yaml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/communs/src/aws-deploy/sam.native.template.yaml b/communs/src/aws-deploy/sam.native.template.yaml
index 31ff11a..83a0152 100644
--- a/communs/src/aws-deploy/sam.native.template.yaml
+++ b/communs/src/aws-deploy/sam.native.template.yaml
@@ -22,7 +22,7 @@
       Type: AWS::Serverless::Function
       Properties:
         Handler: not.used.in.provided.runtimei
-        Runtime: provided.al2
+        Runtime: java17
         CodeUri: parametrages/function.zip
         Description: µService Paramétrages __ENV__
         MemorySize: 128
@@ -38,7 +38,7 @@
       Type: AWS::Serverless::Function
       Properties:
         Handler: not.used.in.provided.runtimei
-        Runtime: provided.al2
+        Runtime: java17
         CodeUri: utilisateurs/function.zip
         Description: µService Utilisateurs __ENV__
         MemorySize: 128
@@ -55,7 +55,7 @@
       Type: AWS::Serverless::Function
       Properties:
         Handler: not.used.in.provided.runtimei
-        Runtime: provided.al2
+        Runtime: java17
         CodeUri: comptes/function.zip
         Description: µService Comptes __ENV__
         MemorySize: 128
@@ -72,7 +72,7 @@
       Type: AWS::Serverless::Function
       Properties:
         Handler: not.used.in.provided.runtimei
-        Runtime: provided.al2
+        Runtime: java17
         CodeUri: operations/function.zip
         Description: µService Opérations __ENV__
         MemorySize: 128

From 2f1dda66021db5aa4615197dc847644f853a3955 Mon Sep 17 00:00:00 2001
From: Vincent Zwingmann <vincent.zwingmann@gmail.com>
Date: Wed, 20 Sep 2023 12:04:47 +0200
Subject: [PATCH 8/9] =?UTF-8?q?Ajout=20des=20apikey=20sur=20les=20services?=
 =?UTF-8?q?=20externes=20appel=C3=A9s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../services/operations/spi/IComptesServiceProvider.java      | 2 ++
 .../services/operations/spi/IParametragesServiceProvider.java | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/spi/IComptesServiceProvider.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/spi/IComptesServiceProvider.java
index 879a8d4..f7ea7be 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/spi/IComptesServiceProvider.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/spi/IComptesServiceProvider.java
@@ -3,6 +3,7 @@
 import io.github.vzwingma.finances.budget.serverless.services.operations.api.enums.ComptesApiUrlEnum;
 import io.github.vzwingma.finances.budget.services.communs.data.model.CompteBancaire;
 import io.smallrye.mutiny.Uni;
+import jakarta.ws.rs.Produces;
 import org.eclipse.microprofile.rest.client.annotation.RegisterClientHeaders;
 import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
 
@@ -12,6 +13,7 @@
 /**
  * Service Provider Interface de {@link }
  */
+@Produces("application/json")
 @Path(ComptesApiUrlEnum.COMPTES_BASE)
 @RegisterRestClient(configKey = "comptes-service")
 @RegisterClientHeaders(RequestJWTHeaderFactory.class)
diff --git a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/spi/IParametragesServiceProvider.java b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/spi/IParametragesServiceProvider.java
index 6d6f370..355e049 100644
--- a/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/spi/IParametragesServiceProvider.java
+++ b/operations/src/main/java/io/github/vzwingma/finances/budget/serverless/services/operations/spi/IParametragesServiceProvider.java
@@ -5,6 +5,8 @@
 import io.smallrye.mutiny.Uni;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
+import jakarta.ws.rs.Produces;
+import org.eclipse.microprofile.rest.client.annotation.RegisterClientHeaders;
 import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
 
 import java.util.List;
@@ -12,8 +14,10 @@
 /**
  * Service Provider Interface de {@link }
  */
+@Produces("application/json")
 @Path(ParametragesApiUrlEnum.PARAMS_BASE)
 @RegisterRestClient(configKey = "parametrages-service")
+@RegisterClientHeaders(RequestJWTHeaderFactory.class)
 public interface IParametragesServiceProvider {
 
     /**

From 6814bb7ac84d3edd8a63dd2114fd5c19fccbc14b Mon Sep 17 00:00:00 2001
From: Vincent Zwingmann <vincent.zwingmann@gmail.com>
Date: Wed, 20 Sep 2023 12:27:30 +0200
Subject: [PATCH 9/9] retour du runtime provided AL2

---
 communs/src/aws-deploy/sam.native.template.yaml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/communs/src/aws-deploy/sam.native.template.yaml b/communs/src/aws-deploy/sam.native.template.yaml
index 83a0152..31ff11a 100644
--- a/communs/src/aws-deploy/sam.native.template.yaml
+++ b/communs/src/aws-deploy/sam.native.template.yaml
@@ -22,7 +22,7 @@
       Type: AWS::Serverless::Function
       Properties:
         Handler: not.used.in.provided.runtimei
-        Runtime: java17
+        Runtime: provided.al2
         CodeUri: parametrages/function.zip
         Description: µService Paramétrages __ENV__
         MemorySize: 128
@@ -38,7 +38,7 @@
       Type: AWS::Serverless::Function
       Properties:
         Handler: not.used.in.provided.runtimei
-        Runtime: java17
+        Runtime: provided.al2
         CodeUri: utilisateurs/function.zip
         Description: µService Utilisateurs __ENV__
         MemorySize: 128
@@ -55,7 +55,7 @@
       Type: AWS::Serverless::Function
       Properties:
         Handler: not.used.in.provided.runtimei
-        Runtime: java17
+        Runtime: provided.al2
         CodeUri: comptes/function.zip
         Description: µService Comptes __ENV__
         MemorySize: 128
@@ -72,7 +72,7 @@
       Type: AWS::Serverless::Function
       Properties:
         Handler: not.used.in.provided.runtimei
-        Runtime: java17
+        Runtime: provided.al2
         CodeUri: operations/function.zip
         Description: µService Opérations __ENV__
         MemorySize: 128