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<>();
|
||||
|
||||
for (Dotation d : dotations) {
|
||||
String equipement = d.getEquipement() != null ? d.getEquipement().getNom() : "Inconnu";
|
||||
String reference = d.getEquipement() != null && d.getEquipement().getReference() != null ? d.getEquipement().getReference() : "";
|
||||
String taille = d.getTaille() != null && !d.getTaille().trim().isEmpty() ? d.getTaille() : "Non renseignée";
|
||||
// Exclure les équipements sans choix de tailles (ex: sacs à dos, ballons, etc.)
|
||||
if (d.getEquipement() == null || d.getEquipement().getTaillesDisponibles() == null || d.getEquipement().getTaillesDisponibles().trim().isEmpty()) {
|
||||
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;
|
||||
groupCountMap.put(key, groupCountMap.getOrDefault(key, 0) + 1);
|
||||
|
||||
@@ -121,4 +121,56 @@ public class DotationServiceTest {
|
||||
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