fix: exclusion des equipements sans taille et tailles non renseignees de l'export commande equipementier
This commit is contained in:
@@ -34,9 +34,19 @@ public class DotationService {
|
|||||||
Map<String, Integer> groupCountMap = new LinkedHashMap<>();
|
Map<String, Integer> groupCountMap = new LinkedHashMap<>();
|
||||||
|
|
||||||
for (Dotation d : dotations) {
|
for (Dotation d : dotations) {
|
||||||
String equipement = d.getEquipement() != null ? d.getEquipement().getNom() : "Inconnu";
|
// Exclure les équipements sans choix de tailles (ex: sacs à dos, ballons, etc.)
|
||||||
String reference = d.getEquipement() != null && d.getEquipement().getReference() != null ? d.getEquipement().getReference() : "";
|
if (d.getEquipement() == null || d.getEquipement().getTaillesDisponibles() == null || d.getEquipement().getTaillesDisponibles().trim().isEmpty()) {
|
||||||
String taille = d.getTaille() != null && !d.getTaille().trim().isEmpty() ? d.getTaille() : "Non renseignée";
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Exclure les dotations pour lesquelles la taille n'est pas renseignée/choisie
|
||||||
|
if (d.getTaille() == null || d.getTaille().trim().isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
String equipement = d.getEquipement().getNom();
|
||||||
|
String reference = d.getEquipement().getReference() != null ? d.getEquipement().getReference() : "";
|
||||||
|
String taille = d.getTaille().trim();
|
||||||
|
|
||||||
String key = equipement + "|||" + reference + "|||" + taille;
|
String key = equipement + "|||" + reference + "|||" + taille;
|
||||||
groupCountMap.put(key, groupCountMap.getOrDefault(key, 0) + 1);
|
groupCountMap.put(key, groupCountMap.getOrDefault(key, 0) + 1);
|
||||||
|
|||||||
@@ -121,4 +121,56 @@ public class DotationServiceTest {
|
|||||||
verify(dotationRepository, times(1)).save(d2);
|
verify(dotationRepository, times(1)).save(d2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("Générer CSV Commande - Équipement regroupé par taille (Exclut les articles sans grille de tailles)")
|
||||||
|
public void testGenererCsvCommandeEquipement_ExclutSansTaille() {
|
||||||
|
Equipement eqMaillot = new Equipement();
|
||||||
|
eqMaillot.setId(1L);
|
||||||
|
eqMaillot.setNom("Maillot de match");
|
||||||
|
eqMaillot.setReference("REF-MAILLOT");
|
||||||
|
eqMaillot.setTaillesDisponibles("S,M,L,XL");
|
||||||
|
|
||||||
|
Equipement eqSac = new Equipement();
|
||||||
|
eqSac.setId(2L);
|
||||||
|
eqSac.setNom("Sac à dos");
|
||||||
|
eqSac.setReference("REF-SAC");
|
||||||
|
eqSac.setTaillesDisponibles(null); // No size options!
|
||||||
|
|
||||||
|
Dotation dMaillot = new Dotation();
|
||||||
|
dMaillot.setId(1L);
|
||||||
|
dMaillot.setLicence(licence);
|
||||||
|
dMaillot.setEquipement(eqMaillot);
|
||||||
|
dMaillot.setTaille("M");
|
||||||
|
dMaillot.setChoisi(true);
|
||||||
|
dMaillot.setCommandee(false);
|
||||||
|
|
||||||
|
Dotation dSac = new Dotation();
|
||||||
|
dSac.setId(2L);
|
||||||
|
dSac.setLicence(licence);
|
||||||
|
dSac.setEquipement(eqSac);
|
||||||
|
dSac.setChoisi(true);
|
||||||
|
dSac.setCommandee(false);
|
||||||
|
|
||||||
|
Dotation dMaillotSansTaille = new Dotation();
|
||||||
|
dMaillotSansTaille.setId(3L);
|
||||||
|
dMaillotSansTaille.setLicence(licence);
|
||||||
|
dMaillotSansTaille.setEquipement(eqMaillot);
|
||||||
|
dMaillotSansTaille.setTaille(null); // Taille non choisie par l'adhérent
|
||||||
|
dMaillotSansTaille.setChoisi(true);
|
||||||
|
dMaillotSansTaille.setCommandee(false);
|
||||||
|
|
||||||
|
when(dotationRepository.findByLicence_SaisonAndChoisiTrueAndCommandeeFalse(saison))
|
||||||
|
.thenReturn(List.of(dMaillot, dSac, dMaillotSansTaille));
|
||||||
|
|
||||||
|
String csv = dotationService.genererCsvCommandeEquipement(saison);
|
||||||
|
|
||||||
|
assertNotNull(csv);
|
||||||
|
assertTrue(csv.contains("Maillot de match"));
|
||||||
|
assertTrue(csv.contains("M"));
|
||||||
|
assertFalse(csv.contains("Sac à dos"), "Le sac à dos sans grille de tailles doit être exclu de l'export fournisseur par taille");
|
||||||
|
assertTrue(dMaillot.getCommandee());
|
||||||
|
assertFalse(dSac.getCommandee());
|
||||||
|
assertFalse(dMaillotSansTaille.getCommandee(), "Le maillot dont la taille n'est pas choisie doit rester non commandé");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user