diff --git a/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/dto/Variazioni/VariazioniPvInputDTO.java b/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/dto/Variazioni/VariazioniPvInputDTO.java index b67785090f..38683fa24f 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/dto/Variazioni/VariazioniPvInputDTO.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/dto/Variazioni/VariazioniPvInputDTO.java @@ -103,6 +103,7 @@ public class VariazioniPvInputDTO { public enum Type { VARIAZIONI("V"), PROMOZIONI("P"), + GRIGLIA("G"), LISTINO("L"); private String text; diff --git a/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPVService.java b/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPVService.java index f4ded8c8f0..46feb6a562 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPVService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/ReportVariazioni/service/VariazioniPVService.java @@ -123,7 +123,14 @@ public class VariazioniPVService { String query = getQueryVariazioni(variazioniPvDTO, setup, codVlis, getSetupSectionDepo.get("SELEZIONA_GRIGLIE")); List> elencoVar = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query); - if (getSetupSectionDepo.get("SELEZIONA_GRIGLIE") != null && getSetupSectionDepo.get("SELEZIONA_GRIGLIE").equalsIgnoreCase("S")) { + boolean getVariazioneGriglia = false; + + if ((variazioniPvDTO.getTipoReportEnum() == VariazioniPvInputDTO.Type.GRIGLIA || + variazioniPvDTO.getTipoReportEnum() == VariazioniPvInputDTO.Type.LISTINO) && + getSetupSectionDepo.get("SELEZIONA_GRIGLIE") != null && + getSetupSectionDepo.get("SELEZIONA_GRIGLIE").equalsIgnoreCase("S")) { + + getVariazioneGriglia = true; grigliaAcquisto = grigliaAcquistoHandlerService.getGrigliaAcquisto(); grigliaAcquisto = Stream.of(grigliaAcquisto) .filter(x -> x.getDataValidita().equals(variazioniPvDTO.getDataValidita()) && @@ -135,7 +142,7 @@ public class VariazioniPVService { CodMartType codMart = fillArticoloData(objectFactory, variazioni, variazioniPvDTO, invioIngredienti, getSetupSectionDepo, codMdep, colNameDescrEstesa, setup.get("LIBERO1"), - setup.get("LIBERO2")); + setup.get("LIBERO2"), getVariazioneGriglia); listinoDTO.getContent().add(objectFactory.createCodVlisTypeCodMart(codMart)); } } @@ -156,7 +163,8 @@ public class VariazioniPVService { String codMdep, String colNameDescrEstesa, String valLibero1, - String valLibero2) throws Exception { + String valLibero2, + boolean getVariazioneGriglia) throws Exception { CodMartType codMartType = objectFactory.createCodMartType(); String codMart = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "cod_mart")); String flagTipoPromo = UtilityString.streNull(UtilityHashMap.getValueIfExists(var, "flag_tipo_promo")); @@ -325,7 +333,7 @@ public class VariazioniPVService { //DATI GRIGLIA DI ACQUISTO if ("S".equalsIgnoreCase(setupDepo.get("SELEZIONA_GRIGLIE"))) { - getDatiGriglia(objectFactory, codMart, codMdep, variazioniPvDTO.getDataValidita(), codMartType); + getDatiGriglia(objectFactory, codMart, codMdep, variazioniPvDTO.getDataValidita(), codMartType, getVariazioneGriglia); } if ("S".equalsIgnoreCase(setupDepo.get("ABILITA_CAMPI_LIBERI"))) { @@ -612,6 +620,22 @@ public class VariazioniPVService { .replace("'[COD_VLIS]'", UtilityDB.valueToString(codVlis)) .replace("'[DATA_VALIDITA]'", UtilityDB.valueDateToString(variazioniPvDTO.getDataValidita(), CommonConstants.DATE_FORMAT_YMD)); break; + case GRIGLIA: + queryAssortimento = + "SELECT mtb_depo.cod_vlis,\n" + + " atb_griglie_art.cod_mart,\n" + + " 'G' AS tipo_variazione,\n" + + " CONVERT(VARCHAR(15), NULL) AS cod_mart_view,\n" + + " 'N' AS 'fine_promo'\n" + + "FROM atb_griglie_art\n" + + " INNER JOIN mtb_depo ON atb_griglie_art.cod_mdep = mtb_depo.cod_mdep\n" + + "WHERE atb_griglie_art.data_validita BETWEEN DateAdd(day, -1, '[DATA_VALIDITA]') AND '[DATA_VALIDITA]'"; + + queryAssortimento = + queryAssortimento + .replace("'[COD_VLIS]'", UtilityDB.valueToString(codVlis)) + .replace("'[DATA_VALIDITA]'", UtilityDB.valueDateToString(variazioniPvDTO.getDataValidita(), CommonConstants.DATE_FORMAT_YMD)); + break; case PROMOZIONI: String filtroPromoOrto = setup.get("FILTRO_ART_ORTOFRUTTA"); queryAssortimento = @@ -853,82 +877,87 @@ public class VariazioniPVService { return codiciABarreType; } - private void getDatiGriglia(ObjectFactory objectFactory, String codMart, String codMdep, Date dataValidita, CodMartType codMartType) throws Exception { + private void getDatiGriglia(ObjectFactory objectFactory, String codMart, String codMdep, Date dataValidita, CodMartType codMartType, boolean getVariazioneGriglia) throws Exception { CodAlisType codAlisType = objectFactory.createCodAlisType(); - - List grigliaArticolo = Stream.of(grigliaAcquisto) - .filter(x -> x.getCodMart().equalsIgnoreCase(codMart) && - x.getCodMdep().equalsIgnoreCase(codMdep) && - x.getDataValidita().equals(dataValidita)) - .toList(); - - if (grigliaArticolo.isEmpty()) { + String tipoAssortimento = "", + tipoVariazioneGriglia = "", + codAlis = "", + descrList = ""; - String query = "select cod_mart from mtb_comp where cod_comp = " + UtilityDB.valueToString(codMart) + " \n" + - "union all\n" + - "select cod_comp from mtb_comp where cod_mart = " + UtilityDB.valueToString(codMart); + if (getVariazioneGriglia) { + List grigliaArticolo = Stream.of(grigliaAcquisto) + .filter(x -> x.getCodMart().equalsIgnoreCase(codMart) && + x.getCodMdep().equalsIgnoreCase(codMdep) && + x.getDataValidita().equals(dataValidita)) + .toList(); - List kits = UtilityDB.executeSimpleQueryOnlyFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query); + if (grigliaArticolo.isEmpty()) { - for (String kit : kits) { - grigliaArticolo = Stream.of(grigliaAcquisto) - .filter(x -> x.getCodMart().equalsIgnoreCase(kit) && - x.getCodMdep().equalsIgnoreCase(codMdep) && - x.getDataValidita().equals(dataValidita)) - .toList(); - if (!grigliaArticolo.isEmpty()) { - break; + String query = "select cod_mart from mtb_comp where cod_comp = " + UtilityDB.valueToString(codMart) + " \n" + + "union all\n" + + "select cod_comp from mtb_comp where cod_mart = " + UtilityDB.valueToString(codMart); + + List kits = UtilityDB.executeSimpleQueryOnlyFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query); + + for (String kit : kits) { + grigliaArticolo = Stream.of(grigliaAcquisto) + .filter(x -> x.getCodMart().equalsIgnoreCase(kit) && + x.getCodMdep().equalsIgnoreCase(codMdep) && + x.getDataValidita().equals(dataValidita)) + .toList(); + + if (!grigliaArticolo.isEmpty()) { + break; + } + } + + if (grigliaArticolo.isEmpty()) { + kits.add(codMart); + + query = + "SELECT TOP 1 griglia.data_validita, " + + " griglia.cod_mdep, " + + " griglia.cod_mart, " + + " griglia.tipo_variazione, " + + " ISNULL(griglia.tipo_assortimento, '') AS tipo_assortimento, " + + " griglia.cod_alis, " + + " atb_list.descrizione AS descr_list " + + " FROM atb_list\n" + + "INNER JOIN dbo.getGrigliaAcquisto(" + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ", NULL, " + + UtilityDB.valueToString(codMdep) + ", NULL, NULL) griglia ON atb_list.cod_alis = griglia.cod_alis\n" + + " WHERE griglia.tipo_variazione <> 'D' AND " + + " griglia.cod_mart IN (" + UtilityDB.listValueToString(kits) + ")\n " + + " ORDER BY griglia.data_validita DESC "; + + grigliaArticolo = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, GrigliaAcquistoDTO.class); } } - if (grigliaArticolo.isEmpty()) { - kits.add(codMart); + if (grigliaArticolo != null && !grigliaArticolo.isEmpty()) { + codAlis = grigliaArticolo.get(0).getCodAlis(); + tipoAssortimento = UtilityString.streNull(grigliaArticolo.get(0).getTipoAssortimento()); + tipoVariazioneGriglia = grigliaArticolo.get(0).getTipoVariazione(); - query = - "SELECT TOP 1 griglia.data_validita, " + - " griglia.cod_mdep, " + - " griglia.cod_mart, " + - " griglia.tipo_variazione, " + - " ISNULL(griglia.tipo_assortimento, '') AS tipo_assortimento, " + - " griglia.cod_alis, " + - " atb_list.descrizione AS descr_list " + - " FROM atb_list\n" + - "INNER JOIN dbo.getGrigliaAcquisto(" + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ", NULL, " + - UtilityDB.valueToString(codMdep) + ", NULL, NULL) griglia ON atb_list.cod_alis = griglia.cod_alis\n" + - " WHERE griglia.tipo_variazione <> 'D' AND " + - " griglia.cod_mart IN (" + UtilityDB.listValueToString(kits) + ")\n " + - " ORDER BY griglia.data_validita DESC "; + descrList = listini.get(codAlis); + if (descrList == null) { + String sql = "SELECT descrizione\n" + + "FROM atb_list\n" + + "WHERE cod_alis = " + UtilityDB.valueToString(codAlis); - grigliaArticolo = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, GrigliaAcquistoDTO.class); + descrList = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); + listini.put(codAlis, descrList); + } + + } else { + codAlis = "NO GRIGLIA"; + descrList = codAlis; + tipoAssortimento = "F.A."; + tipoVariazioneGriglia = ""; } } - String tipoAssortimento, tipoVariazioneGriglia, codAlis, descrList = null; - - if (grigliaArticolo != null && !grigliaArticolo.isEmpty()) { - codAlis = grigliaArticolo.get(0).getCodAlis(); - tipoAssortimento = UtilityString.streNull(grigliaArticolo.get(0).getTipoAssortimento()); - tipoVariazioneGriglia = grigliaArticolo.get(0).getTipoVariazione(); - - descrList = listini.get(codAlis); - if (descrList == null) { - String sql = "SELECT descrizione\n" + - "FROM atb_list\n" + - "WHERE cod_alis = " + UtilityDB.valueToString(codAlis); - - descrList = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql); - listini.put(codAlis, descrList); - } - - } else { - codAlis = "NO GRIGLIA"; - descrList = codAlis; - tipoAssortimento = "F.A."; - tipoVariazioneGriglia = ""; - } - codAlisType.setValue(codAlis); codAlisType.setDescrizione(descrList); codMartType.getContent().add(objectFactory.createCodMartTypeTipoAssortimento(tipoAssortimento));