Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
This commit is contained in:
@@ -99,4 +99,16 @@ sleep 10''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaul
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
post {
|
||||||
|
success {
|
||||||
|
office365ConnectorSend adaptiveCards: true, color: '#008000', message: '[${GIT_BRANCH}] EMS-API è stato compilato con successo', status: 'SUCCESS', webhookUrl: 'https://prod-197.westeurope.logic.azure.com:443/workflows/69a7b8ee3c284175bd6da7127c7eb3cf/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_-eMfvsQGkIidHWzzlhGFgiZG28ujHZ41QqzuqD9YGw'
|
||||||
|
}
|
||||||
|
unstable {
|
||||||
|
office365ConnectorSend adaptiveCards: true, color: '#FFDE21', message: '[${GIT_BRANCH}] EMS-API è INSTABILE', status: 'UNSTABLE', webhookUrl: 'https://prod-197.westeurope.logic.azure.com:443/workflows/69a7b8ee3c284175bd6da7127c7eb3cf/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_-eMfvsQGkIidHWzzlhGFgiZG28ujHZ41QqzuqD9YGw'
|
||||||
|
}
|
||||||
|
failure {
|
||||||
|
office365ConnectorSend adaptiveCards: true, color: '#FF2C2C', message: '[${GIT_BRANCH}] Errore di compilazione su EMS-API', status: 'FAILURE', webhookUrl: 'https://prod-197.westeurope.logic.azure.com:443/workflows/69a7b8ee3c284175bd6da7127c7eb3cf/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_-eMfvsQGkIidHWzzlhGFgiZG28ujHZ41QqzuqD9YGw'
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -60,7 +60,6 @@ public class MenuConfigurationService {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
//LocalDateTime startTime = UtilityLocalDate.getNowTime();
|
//LocalDateTime startTime = UtilityLocalDate.getNowTime();
|
||||||
if (advancedDataSource.getDataSource().getDbName().equalsIgnoreCase("menu")) return;
|
|
||||||
internalRefresh(advancedDataSource.getConnection(), menuConfig);
|
internalRefresh(advancedDataSource.getConnection(), menuConfig);
|
||||||
//logger.debug("Menu refresh time: " + ChronoUnit.SECONDS.between(startTime, UtilityLocalDate.getNowTime()));
|
//logger.debug("Menu refresh time: " + ChronoUnit.SECONDS.between(startTime, UtilityLocalDate.getNowTime()));
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
|
|||||||
@@ -221,8 +221,7 @@ public class CommonRules extends QueryRules {
|
|||||||
return finalList;
|
return finalList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void updateDescrDistintaBase(Connection conn, EntityBase entityBase) throws Exception {
|
public static void updateDescrDistintaBase(Connection conn, MtbAart mtbAart) throws Exception {
|
||||||
MtbAart mtbAart = (MtbAart) entityBase;
|
|
||||||
String sql =
|
String sql =
|
||||||
"SELECT descrizione, descrizione_estesa " +
|
"SELECT descrizione, descrizione_estesa " +
|
||||||
" FROM mtb_aart " +
|
" FROM mtb_aart " +
|
||||||
@@ -995,7 +994,11 @@ public class CommonRules extends QueryRules {
|
|||||||
return mtbAartMarchio;
|
return mtbAartMarchio;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getIdArtEqui(Connection conn, MtbAart entity) throws Exception {
|
public static void setIdArtEqui(Connection conn, MtbAart entity) throws Exception {
|
||||||
|
String sql = "select CAst( case when dbo.getGestSetup( 'MTB_AART', 'ID_ART_EQUI', 'INSERT_AUTO') = 'N' THEN 0 ELSE 1 END as BIT)";
|
||||||
|
Boolean setSetIdArtEqui = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
|
||||||
|
if ( !setSetIdArtEqui ) return;
|
||||||
|
|
||||||
Map<String, Object> data = new HashMap<>();
|
Map<String, Object> data = new HashMap<>();
|
||||||
data.put("cod_mgrp", entity.getCodMgrp());
|
data.put("cod_mgrp", entity.getCodMgrp());
|
||||||
data.put("cod_msgr", entity.getCodMsgr());
|
data.put("cod_msgr", entity.getCodMsgr());
|
||||||
@@ -1008,7 +1011,7 @@ public class CommonRules extends QueryRules {
|
|||||||
// Convertire in JSON
|
// Convertire in JSON
|
||||||
ObjectMapper objectMapper = new ObjectMapper();
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
String jsonParm = objectMapper.writeValueAsString(data);
|
String jsonParm = objectMapper.writeValueAsString(data);
|
||||||
String sql =
|
sql =
|
||||||
String.format(
|
String.format(
|
||||||
"SELECT * FROM dbo.suggestMtbArtEqui('%s') " ,
|
"SELECT * FROM dbo.suggestMtbArtEqui('%s') " ,
|
||||||
jsonParm);
|
jsonParm);
|
||||||
@@ -1021,10 +1024,8 @@ public class CommonRules extends QueryRules {
|
|||||||
.setFlagEquiPrezzo("T");
|
.setFlagEquiPrezzo("T");
|
||||||
mtbAartEqui.setOperation(OperationType.INSERT_OR_UPDATE);
|
mtbAartEqui.setOperation(OperationType.INSERT_OR_UPDATE);
|
||||||
}
|
}
|
||||||
return idArtEqui;
|
entity.setIdArtEqui(idArtEqui);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MtbAartEqui insEqui(Connection conn, MtbAart entity) throws Exception {
|
public static MtbAartEqui insEqui(Connection conn, MtbAart entity) throws Exception {
|
||||||
|
|||||||
@@ -303,8 +303,6 @@ public class MtbAart extends EntityBase implements EquatableEntityInterface<MtbA
|
|||||||
@SqlField(value = "tipo_codice_imballo", maxLength = 10)
|
@SqlField(value = "tipo_codice_imballo", maxLength = 10)
|
||||||
private String tipoCodiceImballo;
|
private String tipoCodiceImballo;
|
||||||
|
|
||||||
private Boolean setIdArtEqui;
|
|
||||||
|
|
||||||
@Priority(1)
|
@Priority(1)
|
||||||
private MtbAartMarchio mtbAartMarchio;
|
private MtbAartMarchio mtbAartMarchio;
|
||||||
|
|
||||||
@@ -1170,13 +1168,6 @@ public class MtbAart extends EntityBase implements EquatableEntityInterface<MtbA
|
|||||||
this.classificazioneAbc = classificazioneAbc;
|
this.classificazioneAbc = classificazioneAbc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*public List<MtbPart> getMtbPart() {
|
|
||||||
return mtbPart;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMtbPart(List<MtbPart> mtbPart) {
|
|
||||||
this.mtbPart = mtbPart;
|
|
||||||
}*/
|
|
||||||
public String getTipoCodiceImballo() {
|
public String getTipoCodiceImballo() {
|
||||||
return tipoCodiceImballo;
|
return tipoCodiceImballo;
|
||||||
}
|
}
|
||||||
@@ -1186,15 +1177,6 @@ public class MtbAart extends EntityBase implements EquatableEntityInterface<MtbA
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean getSetIdArtEqui() {
|
|
||||||
return setIdArtEqui;
|
|
||||||
}
|
|
||||||
|
|
||||||
public MtbAart setSetIdArtEqui(Boolean setIdArtEqui) {
|
|
||||||
this.setIdArtEqui = setIdArtEqui;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<MtbAartAnag> getMtbAartAnag() {
|
public List<MtbAartAnag> getMtbAartAnag() {
|
||||||
return mtbAartAnag;
|
return mtbAartAnag;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,18 +127,6 @@ then
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
rule "completeSetIdArtEquiAuto"
|
|
||||||
no-loop
|
|
||||||
when
|
|
||||||
eval(completeRulesEnabled)
|
|
||||||
$entity : MtbAart(idArtEqui == null && setIdArtEqui != null && setIdArtEqui && operation != OperationType.DELETE)
|
|
||||||
then
|
|
||||||
String idArtEqui = CommonRules.getIdArtEqui(conn, $entity);
|
|
||||||
modify($entity){
|
|
||||||
setIdArtEqui(idArtEqui)}
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
rule "completeInsEqui"
|
rule "completeInsEqui"
|
||||||
no-loop
|
no-loop
|
||||||
when
|
when
|
||||||
@@ -203,17 +191,6 @@ then
|
|||||||
modify ( $entity ) { setArticoloComposto("N") }
|
modify ( $entity ) { setArticoloComposto("N") }
|
||||||
end
|
end
|
||||||
|
|
||||||
rule "completeSetIdArtEqui"
|
|
||||||
no-loop
|
|
||||||
when
|
|
||||||
eval(completeRulesEnabled)
|
|
||||||
$entity : MtbAart(setIdArtEqui == null)
|
|
||||||
then
|
|
||||||
String sql = "select CAst( case when dbo.getGestSetup( 'MTB_AART', 'ID_ART_EQUI', 'INSERT_AUTO') = 'N' THEN 0 ELSE 1 END as BIT)";
|
|
||||||
Boolean setSetIdArtEqui = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
|
|
||||||
modify ( $entity ) { setSetIdArtEqui(setSetIdArtEqui) }
|
|
||||||
end
|
|
||||||
|
|
||||||
rule "completeDescrEstesaArt"
|
rule "completeDescrEstesaArt"
|
||||||
when
|
when
|
||||||
eval(completeRulesEnabled)
|
eval(completeRulesEnabled)
|
||||||
|
|||||||
@@ -105,10 +105,9 @@ no-loop
|
|||||||
when
|
when
|
||||||
eval(postRulesEnabled)
|
eval(postRulesEnabled)
|
||||||
$mtbAart: MtbAart()
|
$mtbAart: MtbAart()
|
||||||
$entity : EntityBase() from $mtbAart
|
then
|
||||||
then
|
CommonRules.setIdArtEqui(conn, $mtbAart);
|
||||||
|
CommonRules.updateDescrDistintaBase(conn, $mtbAart);
|
||||||
CommonRules.updateDescrDistintaBase(conn, $entity);
|
|
||||||
end
|
end
|
||||||
|
|
||||||
rule "completeIdRigaCtbScad"
|
rule "completeIdRigaCtbScad"
|
||||||
|
|||||||
@@ -303,11 +303,13 @@ public class Slim2kLogisticService {
|
|||||||
|
|
||||||
String sql =
|
String sql =
|
||||||
Query.format(
|
Query.format(
|
||||||
"SELECT track_number\n" +
|
"SELECT system_note\n" +
|
||||||
"FROM mtb_colt\n" +
|
"FROM mtb_colt\n" +
|
||||||
"WHERE cod_mdep = %s\n" +
|
" INNER JOIN mtb_colr ON mtb_colt.gestione = mtb_colr.gestione AND mtb_colt.data_collo = mtb_colr.data_collo AND\n" +
|
||||||
" AND data_collo = %s\n" +
|
" mtb_colt.ser_collo = mtb_colr.ser_collo AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
|
||||||
" AND track_number IS NOT NULL",
|
"WHERE mtb_colt.cod_mdep = %s\n" +
|
||||||
|
" AND mtb_colt.data_collo = %s\n" +
|
||||||
|
" AND mtb_colr.system_note IS NOT NULL",
|
||||||
codMdep, today);
|
codMdep, today);
|
||||||
|
|
||||||
List<Integer> listTrackNumber = UtilityDB.executeSimpleQueryOnlyFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
List<Integer> listTrackNumber = UtilityDB.executeSimpleQueryOnlyFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||||
@@ -319,7 +321,7 @@ public class Slim2kLogisticService {
|
|||||||
" movements_export.item AS cod_mart,\n" +
|
" movements_export.item AS cod_mart,\n" +
|
||||||
" movements_export.workorder AS lotto,\n" +
|
" movements_export.workorder AS lotto,\n" +
|
||||||
" ABS(movements_export.qtymove) AS qta_collo,\n" +
|
" ABS(movements_export.qtymove) AS qta_collo,\n" +
|
||||||
" movements_export.unum as track_number\n"+
|
" movements_export.unum\n"+
|
||||||
"FROM movements_export\n" +
|
"FROM movements_export\n" +
|
||||||
" INNER JOIN movements_export e ON movements_export.item = e.item\n" +
|
" INNER JOIN movements_export e ON movements_export.item = e.item\n" +
|
||||||
" AND movements_export.trtype = e.trtype\n" +
|
" AND movements_export.trtype = e.trtype\n" +
|
||||||
@@ -339,16 +341,15 @@ public class Slim2kLogisticService {
|
|||||||
|
|
||||||
List<HashMap<String, Object>> listaColli = UtilityDB.executeSimpleQuery(dsSlim2k.getConnection(), sql);
|
List<HashMap<String, Object>> listaColli = UtilityDB.executeSimpleQuery(dsSlim2k.getConnection(), sql);
|
||||||
|
|
||||||
Map<HashMap<String, Object>, List<HashMap<String, Object>>> trackNumber = listaColli.stream()
|
Map<HashMap<String, Object>, List<HashMap<String, Object>>> testataColli = listaColli.stream()
|
||||||
.collect(groupingBy(x -> {
|
.collect(groupingBy(x -> {
|
||||||
HashMap<String, Object> map = new HashMap<>();
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
map.put("track_number", x.get("track_number"));
|
|
||||||
map.put("cod_mdep", x.get("cod_mdep"));
|
map.put("cod_mdep", x.get("cod_mdep"));
|
||||||
map.put("cod_dest", x.get("cod_dest"));
|
map.put("cod_dest", x.get("cod_dest"));
|
||||||
return map;
|
return map;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
for (Map.Entry<HashMap<String, Object>, List<HashMap<String, Object>>> entry : trackNumber.entrySet()) {
|
for (Map.Entry<HashMap<String, Object>, List<HashMap<String, Object>>> entry : testataColli.entrySet()) {
|
||||||
HashMap<String, Object> keyMap = entry.getKey();
|
HashMap<String, Object> keyMap = entry.getKey();
|
||||||
List<HashMap<String, Object>> righe = entry.getValue();
|
List<HashMap<String, Object>> righe = entry.getValue();
|
||||||
|
|
||||||
@@ -371,7 +372,6 @@ public class Slim2kLogisticService {
|
|||||||
.setCodVdes((String) datiDepo.get("cod_vdes"))
|
.setCodVdes((String) datiDepo.get("cod_vdes"))
|
||||||
.setGestione("L")
|
.setGestione("L")
|
||||||
.setSegno(-1)
|
.setSegno(-1)
|
||||||
.setTrackNumber(keyMap.get("track_number").toString())
|
|
||||||
.setCodDtipProvv(codDtip);
|
.setCodDtipProvv(codDtip);
|
||||||
mtbColt.setOperation(OperationType.INSERT);
|
mtbColt.setOperation(OperationType.INSERT);
|
||||||
mtbColt.setMtbColr(new ArrayList<>());
|
mtbColt.setMtbColr(new ArrayList<>());
|
||||||
@@ -383,7 +383,8 @@ public class Slim2kLogisticService {
|
|||||||
new MtbColr()
|
new MtbColr()
|
||||||
.setCodMart(((String) r.get("cod_mart")).trim())
|
.setCodMart(((String) r.get("cod_mart")).trim())
|
||||||
.setPartitaMag(((String) r.get("lotto")).trim())
|
.setPartitaMag(((String) r.get("lotto")).trim())
|
||||||
.setQtaCol((BigDecimal) r.get("qta_collo"));
|
.setQtaCol((BigDecimal) r.get("qta_collo"))
|
||||||
|
.setSystemNote(r.get("unum").toString().trim());
|
||||||
mtbColt.getMtbColr().add(mtbColr);
|
mtbColt.getMtbColr().add(mtbColr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ public class PvmController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private PvmService pvmService;
|
private PvmService pvmService;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
private PvmServiceSave pvmServiceSave;
|
||||||
|
@Autowired
|
||||||
private PvmRapportiniFgService pvmRapportiniFgService;
|
private PvmRapportiniFgService pvmRapportiniFgService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private PvmAccettazioneService pvmAccettazioneService;
|
private PvmAccettazioneService pvmAccettazioneService;
|
||||||
@@ -210,7 +212,7 @@ public class PvmController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
response = pvmService.saveTerminalino(inputValue);
|
response = pvmServiceSave.saveTerminalino(inputValue);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(request.getRequestURI(), e);
|
logger.error(request.getRequestURI(), e);
|
||||||
response.add(new ServiceRestResponse(EsitoType.KO, configuration, e));
|
response.add(new ServiceRestResponse(EsitoType.KO, configuration, e));
|
||||||
@@ -231,7 +233,7 @@ public class PvmController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
response = pvmService.SM2Save(saveDTO);
|
response = pvmServiceSave.SM2Save(saveDTO);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(request.getRequestURI(), e);
|
logger.error(request.getRequestURI(), e);
|
||||||
response.add(new ServiceRestResponse(EsitoType.KO, configuration, e));
|
response.add(new ServiceRestResponse(EsitoType.KO, configuration, e));
|
||||||
@@ -250,7 +252,7 @@ public class PvmController {
|
|||||||
if (!requestDataDTO.isValidUsername() || !requestDataDTO.isValidPassword()) {
|
if (!requestDataDTO.isValidUsername() || !requestDataDTO.isValidPassword()) {
|
||||||
throw new UsernameNotFoundException("Utente " + requestDataDTO.getUsername() + " non riconoscuto!");
|
throw new UsernameNotFoundException("Utente " + requestDataDTO.getUsername() + " non riconoscuto!");
|
||||||
}
|
}
|
||||||
pvmService.SM2Save(saveDTO);
|
pvmServiceSave.SM2Save(saveDTO);
|
||||||
response = ServiceRestResponse.createPositiveResponse();
|
response = ServiceRestResponse.createPositiveResponse();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(request.getRequestURI(), e);
|
logger.error(request.getRequestURI(), e);
|
||||||
@@ -394,7 +396,7 @@ public class PvmController {
|
|||||||
try {
|
try {
|
||||||
List<AnomalieResiDTO> anomalieResiDTOS = pvmService.checkDocReso(docFromPickingDTO);
|
List<AnomalieResiDTO> anomalieResiDTOS = pvmService.checkDocReso(docFromPickingDTO);
|
||||||
if (anomalieResiDTOS == null || anomalieResiDTOS.size() == 0)
|
if (anomalieResiDTOS == null || anomalieResiDTOS.size() == 0)
|
||||||
return ServiceRestResponse.createEntityPositiveResponse(pvmService.saveDocFromPicking(docFromPickingDTO));
|
return ServiceRestResponse.createEntityPositiveResponse(pvmServiceSave.saveDocFromPicking(docFromPickingDTO));
|
||||||
else {
|
else {
|
||||||
ServiceRestResponse serviceRestResponse = ServiceRestResponse.createNegativeResponse();
|
ServiceRestResponse serviceRestResponse = ServiceRestResponse.createNegativeResponse();
|
||||||
serviceRestResponse.setJsonObject(anomalieResiDTOS);
|
serviceRestResponse.setJsonObject(anomalieResiDTOS);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,350 +0,0 @@
|
|||||||
package it.integry.ems.retail.service;
|
|
||||||
|
|
||||||
import it.integry.ems.retail.dto.GiacenzaDTO;
|
|
||||||
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
|
||||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
|
||||||
import it.integry.ems_model.service.SetupGest;
|
|
||||||
import it.integry.ems_model.utility.Query;
|
|
||||||
import it.integry.ems_model.utility.UtilityDB;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import org.springframework.web.context.ContextLoader;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
|
|
||||||
public class GiacenzaPvHandlerService {
|
|
||||||
private final HashMap<String, HashMap<String, List<GiacenzaDTO>>> listGiacenzaPv = new HashMap<>();
|
|
||||||
|
|
||||||
public void setGiacenzaPv(String profileDb, String codMdep, List<GiacenzaDTO> giacenzaDTOS) {
|
|
||||||
if ( !listGiacenzaPv.containsKey(profileDb.toUpperCase()) ) {
|
|
||||||
listGiacenzaPv.put(profileDb.toUpperCase(), new HashMap<>());
|
|
||||||
}
|
|
||||||
|
|
||||||
HashMap<String, List<GiacenzaDTO>> giacenzeMap = listGiacenzaPv.get(profileDb.toUpperCase());
|
|
||||||
if (!giacenzeMap.containsKey(codMdep.toUpperCase())) {
|
|
||||||
giacenzeMap.put(codMdep.toUpperCase(), new ArrayList<>());
|
|
||||||
}
|
|
||||||
giacenzeMap.put(codMdep.toUpperCase(), giacenzaDTOS);
|
|
||||||
listGiacenzaPv.put(profileDb.toUpperCase(), giacenzeMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
public GiacenzaDTO getGiacenzaPvArticolo(String dbName, Connection connection, String codMdep, String codMart) throws Exception {
|
|
||||||
HashMap<String, HashMap<String, List<GiacenzaDTO>>> inputMap = listGiacenzaPv;
|
|
||||||
|
|
||||||
List<GiacenzaDTO> giacenzaPv = getGiacenzaPvDBName(inputMap, dbName).get(codMdep);
|
|
||||||
if (giacenzaPv == null) {
|
|
||||||
GiacenzaService giacenzaService = new GiacenzaService();
|
|
||||||
giacenzaPv = retrieveGiacenza(dbName, connection, codMdep);
|
|
||||||
setGiacenzaPv(dbName, codMdep, giacenzaPv);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (giacenzaPv != null)
|
|
||||||
return giacenzaPv.stream()
|
|
||||||
.filter(x-> x.getCodMart().equalsIgnoreCase(codMart))
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null);
|
|
||||||
|
|
||||||
|
|
||||||
return null;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<GiacenzaDTO> retrieveGiacenza(String dbName, Connection connection, String codMdep) throws Exception {
|
|
||||||
|
|
||||||
String sql = Query.format(
|
|
||||||
"SELECT cod_mdep FROM stb_gest_setup_depo WHERE gest_name = %s AND section = %s AND key_section = %S AND value = %S",
|
|
||||||
"DATI_AZIENDA", "GIACENZA_DA_INV", "REPLACE_DEPO", codMdep);
|
|
||||||
String codMdepNew = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
|
|
||||||
String whereCond = UtilityDB.valueToString(codMdep);
|
|
||||||
|
|
||||||
if (codMdepNew != null) {
|
|
||||||
whereCond += ", " + UtilityDB.valueToString(codMdepNew);
|
|
||||||
}
|
|
||||||
|
|
||||||
sql = "WITH art AS (SELECT mtb_aart.cod_mart AS cod_mart,\n" +
|
|
||||||
" IIF(mtb_aart.articolo_composto = 'S'\n" +
|
|
||||||
" AND mtb_comp.cod_comp IS NOT NULL, mtb_comp.cod_comp, mtb_aart.cod_mart) AS cod_mart_mov,\n" +
|
|
||||||
" ISNULL(mtb_comp.qta_std, 1) AS qta_std\n" +
|
|
||||||
" FROM mtb_aart\n" +
|
|
||||||
" LEFT OUTER JOIN mtb_comp\n" +
|
|
||||||
" ON mtb_aart.cod_mart = mtb_comp.cod_mart\n" +
|
|
||||||
" AND mtb_aart.articolo_composto = 'S'),\n" +
|
|
||||||
" movimenti AS (SELECT mtb_movi.cod_mart,\n" +
|
|
||||||
" mtb_movi.data_reg,\n" +
|
|
||||||
" mtb_movi.qta_car AS qta_car,\n" +
|
|
||||||
" mtb_movi.qta_scar AS qta_scar,\n" +
|
|
||||||
" dtb_doct.data_ins,\n" +
|
|
||||||
" 'D' AS tipo_car\n" +
|
|
||||||
" FROM mtb_movi\n" +
|
|
||||||
" INNER JOIN dtb_doct\n" +
|
|
||||||
" ON dtb_doct.cod_anag = mtb_movi.cod_anag\n" +
|
|
||||||
" AND dtb_doct.cod_dtip = mtb_movi.cod_dtip\n" +
|
|
||||||
" AND dtb_doct.data_doc = mtb_movi.data_doc\n" +
|
|
||||||
" AND dtb_doct.ser_doc = mtb_movi.ser_doc\n" +
|
|
||||||
" AND dtb_doct.num_doc = mtb_movi.num_doc\n" +
|
|
||||||
" WHERE mtb_movi.cod_mdep IN (" + whereCond + ") and dtb_doct.data_ins >= dateadd(day, - 7, cast(getdate() AS DATE))\n" +
|
|
||||||
" UNION ALL\n" +
|
|
||||||
" SELECT wdtb_docr.cod_mart,\n" +
|
|
||||||
" wdtb_doct.data_reg,\n" +
|
|
||||||
" wdtb_docr.qta_doc * wdtb_docr.rap_conv,\n" +
|
|
||||||
" 0,\n" +
|
|
||||||
" wdtb_doct.data_mod,\n" +
|
|
||||||
" 'W' AS tipo_car\n" +
|
|
||||||
" FROM wdtb_doct\n" +
|
|
||||||
" INNER JOIN wdtb_docr\n" +
|
|
||||||
" ON wdtb_doct.cod_anag = wdtb_docr.cod_anag\n" +
|
|
||||||
" AND wdtb_doct.cod_dtip = wdtb_docr.cod_dtip\n" +
|
|
||||||
" AND wdtb_doct.data_doc = wdtb_docr.data_doc\n" +
|
|
||||||
" AND wdtb_doct.ser_doc = wdtb_docr.ser_doc\n" +
|
|
||||||
" AND wdtb_doct.num_doc = wdtb_docr.num_doc\n" +
|
|
||||||
" WHERE wdtb_doct.flag_elaborato = 'N'\n" +
|
|
||||||
" AND wdtb_doct.cod_mdep IN (" + whereCond + ") and wdtb_doct.data_ins >= dateadd(day, - 7, cast(getdate() AS DATE))\n" +
|
|
||||||
" UNION ALL\n" +
|
|
||||||
" SELECT ntb_docr.cod_mart,\n" +
|
|
||||||
" ntb_doct.date_only_doc AS data_reg,\n" +
|
|
||||||
" 0,\n" +
|
|
||||||
" ntb_docr.qta_doc * ntb_docr.qta_cnf,\n" +
|
|
||||||
" ntb_doct.data_import,\n" +
|
|
||||||
" NULL AS tipo_car\n" +
|
|
||||||
" FROM ntb_doct\n" +
|
|
||||||
" INNER JOIN ntb_docr\n" +
|
|
||||||
" ON ntb_doct.cod_mdep = ntb_docr.cod_mdep\n" +
|
|
||||||
" AND ntb_doct.cod_cassa = ntb_docr.cod_cassa\n" +
|
|
||||||
" AND ntb_doct.data_doc = ntb_docr.data_doc\n" +
|
|
||||||
" LEFT OUTER JOIN dtb_tipi\n" +
|
|
||||||
" ON ntb_doct.cod_dtip_val = dtb_tipi.cod_dtip\n" +
|
|
||||||
" WHERE ntb_doct.cod_mdep IN (" + whereCond + ") and ntb_doct.data_import >= dateadd(day, - 7, cast(getdate() AS DATE))\n" +
|
|
||||||
" AND ntb_doct.causale = 'V'\n" +
|
|
||||||
" AND (\n" +
|
|
||||||
" ntb_doct.data_doc_val IS NULL\n" +
|
|
||||||
" OR dtb_tipi.segno_qta_scar = 0\n" +
|
|
||||||
" )\n" +
|
|
||||||
" AND NOT EXISTS (SELECT *\n" +
|
|
||||||
" FROM dtb_doct\n" +
|
|
||||||
" INNER JOIN mtb_depo ON dtb_doct.cod_mdep = mtb_depo.cod_mdep AND\n" +
|
|
||||||
" dtb_doct.cod_dtip = mtb_depo.cod_dtip\n" +
|
|
||||||
" WHERE date_only_doc = dtb_doct.data_doc\n" +
|
|
||||||
" AND ntb_doct.cod_mdep = dtb_doct.cod_mdep)),\n" +
|
|
||||||
" inventario_provvisorio AS (SELECT art.cod_mart_mov AS cod_mart,\n" +
|
|
||||||
" SUM(qta_col * art.qta_std) AS qta_col,\n" +
|
|
||||||
" data_ins,\n" +
|
|
||||||
" MAX(data_ins) OVER ( PARTITION BY art.cod_mart_mov) AS max_data_ins\n" +
|
|
||||||
" FROM mtb_colt\n" +
|
|
||||||
" INNER JOIN mtb_colr\n" +
|
|
||||||
" ON mtb_colt.gestione = mtb_colr.gestione\n" +
|
|
||||||
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
|
|
||||||
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
|
|
||||||
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
|
|
||||||
" INNER JOIN (SELECT mtb_aart.cod_mart AS cod_mart,\n" +
|
|
||||||
" IIF(mtb_aart.articolo_composto = 'S'\n" +
|
|
||||||
" AND mtb_comp.cod_comp IS NOT NULL,\n" +
|
|
||||||
" mtb_comp.cod_comp, mtb_aart.cod_mart) AS cod_mart_mov,\n" +
|
|
||||||
" ISNULL(mtb_comp.qta_std, 1) AS qta_std\n" +
|
|
||||||
" FROM mtb_aart\n" +
|
|
||||||
" LEFT OUTER JOIN mtb_comp\n" +
|
|
||||||
" ON mtb_aart.cod_mart = mtb_comp.cod_mart) art\n" +
|
|
||||||
" ON mtb_colr.cod_mart = art.cod_mart\n" +
|
|
||||||
" WHERE mtb_colt.cod_dtip_provv = 'RGIAC'\n" +
|
|
||||||
" AND mtb_colt.data_distribuzione IS NULL\n" +
|
|
||||||
" AND mtb_colt.cod_mdep IN (" + whereCond + ")\n" +
|
|
||||||
" GROUP BY art.cod_mart_mov, mtb_colt.data_collo, data_ins),\n" +
|
|
||||||
" selezione_giacenza AS (SELECT ISNULL(ip.cod_mart, gp.cod_mart) AS cod_mart,\n" +
|
|
||||||
" ISNULL(ip.qta_col, gp.qta_car) AS qta_car,\n" +
|
|
||||||
" ISNULL(IIF(gp.data_ins < ip.data_ins, 0, gp.qta_scar), 0) AS qta_scar,\n" +
|
|
||||||
" ISNULL(ip.data_ins, gp.data_ins) AS data_ins,\n" +
|
|
||||||
" ISNULL(ip.data_ins, gp.data_reg) AS data_reg,\n" +
|
|
||||||
" IIF(ip.data_ins IS NULL, 0, 1) AS is_invent,\n" +
|
|
||||||
" ip.data_ins AS last_rgiac\n" +
|
|
||||||
" FROM carelli_giacenza_prog gp\n" +
|
|
||||||
" LEFT JOIN inventario_provvisorio ip\n" +
|
|
||||||
" ON ip.cod_mart = gp.cod_mart\n" +
|
|
||||||
" AND max_data_ins = ip.data_ins\n" +
|
|
||||||
" AND (gp.data_ins < ip.data_ins)\n" +
|
|
||||||
" WHERE gp.cod_mdep IN (" + whereCond + ")),\n" +
|
|
||||||
" mov AS (SELECT art.cod_mart_mov AS cod_mart,\n" +
|
|
||||||
" SUM(movimenti.qta_car * qta_std) + ISNULL(giac.qta_car, 0) AS qta_car,\n" +
|
|
||||||
" SUM(movimenti.qta_scar * qta_std) + ISNULL(giac.qta_scar, 0) AS qta_scar,\n" +
|
|
||||||
" GETDATE() AS data_ins\n" +
|
|
||||||
"\n" +
|
|
||||||
" FROM movimenti\n" +
|
|
||||||
" INNER JOIN art ON movimenti.cod_mart = art.cod_mart\n" +
|
|
||||||
" LEFT OUTER JOIN selezione_giacenza giac ON giac.cod_mart = art.cod_mart_mov\n" +
|
|
||||||
" WHERE (\n" +
|
|
||||||
" (movimenti.data_reg >= CAST(ISNULL(giac.data_reg, GETDATE()) AS DATE) AND\n" +
|
|
||||||
" (giac.data_ins IS NULL OR (movimenti.data_ins >= giac.data_ins))) OR\n" +
|
|
||||||
" (\n" +
|
|
||||||
" (movimenti.tipo_car = 'W') AND (\n" +
|
|
||||||
" (giac.data_ins IS NULL OR (movimenti.data_ins >= giac.data_ins)) OR\n" +
|
|
||||||
" (is_invent = 1 AND (movimenti.data_ins >= last_rgiac)) OR\n" +
|
|
||||||
" (is_invent = 0 AND movimenti.data_ins >= ISNULL(giac.data_reg, CAST(GETDATE() AS DATE)))\n" +
|
|
||||||
" )\n" +
|
|
||||||
" )\n" +
|
|
||||||
" )\n" +
|
|
||||||
"\n" +
|
|
||||||
" GROUP BY art.cod_mart_mov, giac.qta_car, giac.qta_scar),\n" +
|
|
||||||
" inv AS (SELECT ISNULL(r.cod_mart, k.cod_mart) AS cod_mart,\n" +
|
|
||||||
" ISNULL(r.qta_car, ISNULL(k.qta_car, 0)) - ISNULL(r.qta_scar, ISNULL(k.qta_scar, 0)) AS qta_inv,\n" +
|
|
||||||
" ISNULL(k.data_ins, CAST(GETDATE() AS DATE)) AS data_inventario\n" +
|
|
||||||
" FROM mov r\n" +
|
|
||||||
" FULL OUTER JOIN selezione_giacenza k\n" +
|
|
||||||
" ON k.cod_mart = r.cod_mart),\n" +
|
|
||||||
" final AS (SELECT cod_mart, qta_inv, data_inventario\n" +
|
|
||||||
" FROM inv\n" +
|
|
||||||
" UNION\n" +
|
|
||||||
" SELECT mtb_comp.cod_mart,\n" +
|
|
||||||
" ROUND(SUM(ISNULL(qta_inv, 0)) / SUM(qta_std), 2),\n" +
|
|
||||||
" MAX(data_inventario)\n" +
|
|
||||||
" FROM mtb_aart\n" +
|
|
||||||
" INNER JOIN mtb_comp ON mtb_aart.cod_mart = mtb_comp.cod_mart\n" +
|
|
||||||
" LEFT OUTER JOIN inv ON mtb_comp.cod_comp = inv.cod_mart\n" +
|
|
||||||
" WHERE mtb_aart.articolo_composto = 'S'\n" +
|
|
||||||
" AND mtb_aart.flag_stato = 'A'\n" +
|
|
||||||
" GROUP BY mtb_comp.cod_mart)\n" +
|
|
||||||
"SELECT final.cod_mart,\n" +
|
|
||||||
" descrizione,\n" +
|
|
||||||
" qta_inv,\n" +
|
|
||||||
" data_inventario,\n" +
|
|
||||||
" " + UtilityDB.valueToString(codMdep) + " AS cod_mdep\n" +
|
|
||||||
"FROM final\n" +
|
|
||||||
" INNER JOIN mtb_aart ON final.cod_mart = mtb_aart.cod_mart";
|
|
||||||
|
|
||||||
List<GiacenzaDTO> listGiacenza = UtilityDB.executeSimpleQueryDTO(connection, sql, GiacenzaDTO.class);
|
|
||||||
|
|
||||||
String listiniAcquisto = new SetupGest().getSetup(connection,"DATI_AZIENDA", "GIACENZA_DA_INV", "LISTINI_ACQUISTO");
|
|
||||||
List<String> listini = Arrays.asList(listiniAcquisto.split("\\|"));
|
|
||||||
|
|
||||||
sql = "WITH incoming_stock_documenti AS (\n" +
|
|
||||||
"/*\n" +
|
|
||||||
"Estrazione dei documenti (bolle web) di merce consegnata\n" +
|
|
||||||
"*/\n" +
|
|
||||||
"\n" +
|
|
||||||
" SELECT wdtb_doct.cod_mdep,\n" +
|
|
||||||
" wdtb_docr.cod_mart,\n" +
|
|
||||||
" wdtb_docr.data_ord,\n" +
|
|
||||||
" wdtb_docr.num_ord,\n" +
|
|
||||||
" riga_ord,\n" +
|
|
||||||
" wdtb_doct.cod_anag,\n" +
|
|
||||||
" wdtb_docr.qta_doc * wdtb_docr.rap_conv AS qta_doc,\n" +
|
|
||||||
" wdtb_doct.flag_elaborato\n" +
|
|
||||||
" FROM wdtb_doct\n" +
|
|
||||||
" INNER JOIN wdtb_docr\n" +
|
|
||||||
" ON wdtb_doct.cod_anag = wdtb_docr.cod_anag AND wdtb_doct.cod_dtip = wdtb_docr.cod_dtip AND\n" +
|
|
||||||
" wdtb_doct.data_doc = wdtb_docr.data_doc AND wdtb_doct.ser_doc = wdtb_docr.ser_doc AND\n" +
|
|
||||||
" wdtb_doct.num_doc = wdtb_docr.num_doc\n" +
|
|
||||||
" WHERE wdtb_doct.data_ins >= dateadd(DAY, - 21, CAST(getdate() AS DATE))\n" +
|
|
||||||
" AND wdtb_doct.cod_mdep = " + UtilityDB.valueToString(codMdep) + ")\n" +
|
|
||||||
" , incoming_stock_ordini AS (\n" +
|
|
||||||
"/*\n" +
|
|
||||||
"Estrazione degli ordini d'acquisto in consegna\n" +
|
|
||||||
"*/\n" +
|
|
||||||
" SELECT r.cod_mdep,\n" +
|
|
||||||
" r.cod_mart,\n" +
|
|
||||||
" CASE\n" +
|
|
||||||
" WHEN r.data_cons = r.data_ord\n" +
|
|
||||||
" THEN CAST(getdate() AS DATE)\n" +
|
|
||||||
" ELSE r.data_cons\n" +
|
|
||||||
" END AS data_cons,\n" +
|
|
||||||
" r.qta_ord,\n" +
|
|
||||||
" r.data_ord,\n" +
|
|
||||||
" r.riga_ord,\n" +
|
|
||||||
" r.num_ord,\n" +
|
|
||||||
" cod_anag\n" +
|
|
||||||
" FROM dtb_ordt t\n" +
|
|
||||||
" INNER JOIN dtb_ordr r\n" +
|
|
||||||
" ON t.gestione = r.gestione\n" +
|
|
||||||
" AND t.data_ord = r.data_ord\n" +
|
|
||||||
" AND t.num_ord = r.num_ord\n" +
|
|
||||||
" WHERE\n" +
|
|
||||||
" -- ordini acquisto\n" +
|
|
||||||
" t.gestione = 'A'\n" +
|
|
||||||
" -- ordini non annullati\n" +
|
|
||||||
" AND t.flag_annulla = 'N'\n" +
|
|
||||||
" -- ordii non sospesi\n" +
|
|
||||||
" AND t.flag_sospeso = 'N'\n" +
|
|
||||||
" AND (\n" +
|
|
||||||
" -- ordini futuri\n" +
|
|
||||||
" (r.data_cons >= CAST(getdate() AS DATE))\n" +
|
|
||||||
" OR\n" +
|
|
||||||
" -- ordini fuori piano logistico (r.data_cons = r.data_ord), inevasi e fatti negli ultimi 3 giorni\n" +
|
|
||||||
" (\n" +
|
|
||||||
" r.data_cons = r.data_ord\n" +
|
|
||||||
" AND flag_evaso = 'I'\n" +
|
|
||||||
" AND r.data_ord >= dateadd(DAY, - 3, CAST(getdate() AS DATE))\n" +
|
|
||||||
" )\n" +
|
|
||||||
" )\n" +
|
|
||||||
" -- prendiamo i soli ordini del SECCO, sarà da modificare quando inizieranno ad ordinare anche altri (es. APULD)\n" +
|
|
||||||
" AND t.listino IN (" + UtilityDB.listValueToString(listini) + ")\n" +
|
|
||||||
" -- ordine non ancora evaso\n" +
|
|
||||||
" AND flag_evaso <> 'E'\n" +
|
|
||||||
" -- filtro solamente un Pdv\n" +
|
|
||||||
" AND r.cod_mdep = " + UtilityDB.valueToString(codMdep) + ")\n" +
|
|
||||||
" , incoming_stock_doc_consegnati AS (\n" +
|
|
||||||
"/*\n" +
|
|
||||||
"Estrazione dei documenti consegnati\n" +
|
|
||||||
"*/\n" +
|
|
||||||
" SELECT DISTINCT wdtb_docr.num_ord, wdtb_docr.data_ord, wdtb_doct.cod_anag\n" +
|
|
||||||
" FROM wdtb_doct\n" +
|
|
||||||
" INNER JOIN wdtb_docr\n" +
|
|
||||||
" ON wdtb_doct.cod_anag = wdtb_docr.cod_anag AND wdtb_doct.cod_dtip = wdtb_docr.cod_dtip AND\n" +
|
|
||||||
" wdtb_doct.data_doc = wdtb_docr.data_doc AND wdtb_doct.ser_doc = wdtb_docr.ser_doc AND\n" +
|
|
||||||
" wdtb_doct.num_doc = wdtb_docr.num_doc\n" +
|
|
||||||
" WHERE wdtb_doct.data_ins >= dateadd(DAY, - 7, CAST(getdate() AS DATE))\n" +
|
|
||||||
" AND wdtb_doct.flag_elaborato = 'N')\n" +
|
|
||||||
"\n" +
|
|
||||||
"-- Step 4) Unione delle estrazioni precedenti [MySQL]\n" +
|
|
||||||
"\n" +
|
|
||||||
"SELECT ISNULL(d.cod_mdep, o.cod_mdep) AS store_code,\n" +
|
|
||||||
" ISNULL(d.cod_mart, o.cod_mart) AS art_code,\n" +
|
|
||||||
" data_cons,\n" +
|
|
||||||
" SUM(ISNULL(qta_doc, qta_ord)) AS incoming_stock\n" +
|
|
||||||
"FROM incoming_stock_ordini o\n" +
|
|
||||||
" FULL OUTER JOIN incoming_stock_documenti d\n" +
|
|
||||||
" ON o.cod_mdep = d.cod_mdep AND o.cod_mart = d.cod_mart AND o.data_ord = d.data_ord AND\n" +
|
|
||||||
" o.num_ord = d.num_ord AND o.cod_anag = d.cod_anag AND o.riga_ord = d.riga_ord\n" +
|
|
||||||
" LEFT JOIN incoming_stock_doc_consegnati k\n" +
|
|
||||||
" ON o.num_ord = k.num_ord AND o.cod_anag = k.cod_anag AND o.data_ord = k.data_ord\n" +
|
|
||||||
"WHERE (flag_elaborato = 'I' OR flag_elaborato IS NULL)\n" +
|
|
||||||
" AND ((d.cod_mart IS NOT NULL) OR (d.cod_mart IS NULL AND k.num_ord IS NULL))\n" +
|
|
||||||
"GROUP BY ISNULL(d.cod_mdep, o.cod_mdep), ISNULL(d.cod_mart, o.cod_mart), data_cons, k.num_ord\n";
|
|
||||||
|
|
||||||
List<HashMap<String, Object>> merceInArrivo = UtilityDB.executeSimpleQuery(connection, sql);
|
|
||||||
|
|
||||||
if (listGiacenza != null) {
|
|
||||||
|
|
||||||
merceInArrivo
|
|
||||||
.forEach(merce -> {
|
|
||||||
String storeCode = (String) merce.get("store_code");
|
|
||||||
String artCode = (String) merce.get("art_code");
|
|
||||||
BigDecimal incomingStock = (BigDecimal) merce.get("incoming_stock");
|
|
||||||
|
|
||||||
listGiacenza.stream()
|
|
||||||
.filter(x -> x.getCodMart().equals(artCode) && x.getCodMdep().equals(storeCode))
|
|
||||||
.findFirst()
|
|
||||||
.ifPresent(x -> {
|
|
||||||
x.setIncomingStock(incomingStock);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( listGiacenza != null && listGiacenza.size() > 0 ){
|
|
||||||
setGiacenzaPv(dbName,
|
|
||||||
codMdep,
|
|
||||||
listGiacenza);
|
|
||||||
}
|
|
||||||
|
|
||||||
return listGiacenza;
|
|
||||||
}
|
|
||||||
|
|
||||||
private HashMap<String, List<GiacenzaDTO>> getGiacenzaPvDBName(HashMap<String, HashMap<String, List<GiacenzaDTO>>> inputData, String profileDb) {
|
|
||||||
if (!inputData.containsKey(profileDb))
|
|
||||||
inputData.put(profileDb, new HashMap<>());
|
|
||||||
|
|
||||||
return inputData.get(profileDb);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -7,6 +7,7 @@ import it.integry.ems.javabeans.RequestDataDTO;
|
|||||||
import it.integry.ems.production.service.MrpSetupHandlerService;
|
import it.integry.ems.production.service.MrpSetupHandlerService;
|
||||||
import it.integry.ems.retail.dto.GiacenzaDTO;
|
import it.integry.ems.retail.dto.GiacenzaDTO;
|
||||||
import it.integry.ems.retail.pvmRetail.service.PvmService;
|
import it.integry.ems.retail.pvmRetail.service.PvmService;
|
||||||
|
import it.integry.ems.retail.wms.inventario.service.WMSInventarioService;
|
||||||
import it.integry.ems.service.EntityProcessor;
|
import it.integry.ems.service.EntityProcessor;
|
||||||
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
||||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||||
@@ -39,11 +40,12 @@ public class GiacenzaService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
SetupGest setupGest;
|
SetupGest setupGest;
|
||||||
@Autowired
|
@Autowired
|
||||||
PvmService pvmService;
|
WMSInventarioService wmsInventarioService;
|
||||||
@Autowired
|
@Autowired
|
||||||
EntityProcessor entityProcessor;
|
EntityProcessor entityProcessor;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private GiacenzaPvHandlerService giacenzaPvHandlerService;
|
PvmService pvmService;
|
||||||
|
|
||||||
private final Logger logger = LogManager.getLogger();
|
private final Logger logger = LogManager.getLogger();
|
||||||
|
|
||||||
@@ -318,7 +320,7 @@ public class GiacenzaService {
|
|||||||
entityBases.addAll(giacDaInv);
|
entityBases.addAll(giacDaInv);
|
||||||
|
|
||||||
if (flagStato.equalsIgnoreCase("0") && !UtilityString.isNullOrEmpty(filtroInv)) {
|
if (flagStato.equalsIgnoreCase("0") && !UtilityString.isNullOrEmpty(filtroInv)) {
|
||||||
String whereCondFiltro = pvmService.getWhereCondFiltro(filtroInv);
|
String whereCondFiltro = pvmService.getWhereCondFiltroInventario(filtroInv);
|
||||||
|
|
||||||
List<String> elencoArt;
|
List<String> elencoArt;
|
||||||
if (!giacDaInv.isEmpty())
|
if (!giacDaInv.isEmpty())
|
||||||
@@ -512,6 +514,282 @@ public class GiacenzaService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<GiacenzaDTO> retrieveGiacenza(String codMdep) throws Exception {
|
public List<GiacenzaDTO> retrieveGiacenza(String codMdep) throws Exception {
|
||||||
return giacenzaPvHandlerService.retrieveGiacenza(multiDBTransactionManager.getPrimaryDatasource().getDbName(), multiDBTransactionManager.getPrimaryConnection(), codMdep);
|
|
||||||
|
String sql = Query.format(
|
||||||
|
"SELECT cod_mdep FROM stb_gest_setup_depo WHERE gest_name = %s AND section = %s AND key_section = %S AND value = %S",
|
||||||
|
"DATI_AZIENDA", "GIACENZA_DA_INV", "REPLACE_DEPO", codMdep);
|
||||||
|
String codMdepNew = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||||
|
String whereCond = UtilityDB.valueToString(codMdep);
|
||||||
|
|
||||||
|
if (codMdepNew != null) {
|
||||||
|
whereCond += ", " + UtilityDB.valueToString(codMdepNew);
|
||||||
|
}
|
||||||
|
|
||||||
|
sql = "WITH art AS (SELECT mtb_aart.cod_mart AS cod_mart,\n" +
|
||||||
|
" IIF(mtb_aart.articolo_composto = 'S'\n" +
|
||||||
|
" AND mtb_comp.cod_comp IS NOT NULL, mtb_comp.cod_comp, mtb_aart.cod_mart) AS cod_mart_mov,\n" +
|
||||||
|
" ISNULL(mtb_comp.qta_std, 1) AS qta_std\n" +
|
||||||
|
" FROM mtb_aart\n" +
|
||||||
|
" LEFT OUTER JOIN mtb_comp\n" +
|
||||||
|
" ON mtb_aart.cod_mart = mtb_comp.cod_mart\n" +
|
||||||
|
" AND mtb_aart.articolo_composto = 'S'),\n" +
|
||||||
|
" movimenti AS (SELECT mtb_movi.cod_mart,\n" +
|
||||||
|
" mtb_movi.data_reg,\n" +
|
||||||
|
" mtb_movi.qta_car AS qta_car,\n" +
|
||||||
|
" mtb_movi.qta_scar AS qta_scar,\n" +
|
||||||
|
" dtb_doct.data_ins,\n" +
|
||||||
|
" 'D' AS tipo_car\n" +
|
||||||
|
" FROM mtb_movi\n" +
|
||||||
|
" INNER JOIN dtb_doct\n" +
|
||||||
|
" ON dtb_doct.cod_anag = mtb_movi.cod_anag\n" +
|
||||||
|
" AND dtb_doct.cod_dtip = mtb_movi.cod_dtip\n" +
|
||||||
|
" AND dtb_doct.data_doc = mtb_movi.data_doc\n" +
|
||||||
|
" AND dtb_doct.ser_doc = mtb_movi.ser_doc\n" +
|
||||||
|
" AND dtb_doct.num_doc = mtb_movi.num_doc\n" +
|
||||||
|
" WHERE mtb_movi.cod_mdep IN (" + whereCond + ") and dtb_doct.data_ins >= dateadd(day, - 7, cast(getdate() AS DATE))\n" +
|
||||||
|
" UNION ALL\n" +
|
||||||
|
" SELECT wdtb_docr.cod_mart,\n" +
|
||||||
|
" wdtb_doct.data_reg,\n" +
|
||||||
|
" wdtb_docr.qta_doc * wdtb_docr.rap_conv,\n" +
|
||||||
|
" 0,\n" +
|
||||||
|
" wdtb_doct.data_mod,\n" +
|
||||||
|
" 'W' AS tipo_car\n" +
|
||||||
|
" FROM wdtb_doct\n" +
|
||||||
|
" INNER JOIN wdtb_docr\n" +
|
||||||
|
" ON wdtb_doct.cod_anag = wdtb_docr.cod_anag\n" +
|
||||||
|
" AND wdtb_doct.cod_dtip = wdtb_docr.cod_dtip\n" +
|
||||||
|
" AND wdtb_doct.data_doc = wdtb_docr.data_doc\n" +
|
||||||
|
" AND wdtb_doct.ser_doc = wdtb_docr.ser_doc\n" +
|
||||||
|
" AND wdtb_doct.num_doc = wdtb_docr.num_doc\n" +
|
||||||
|
" WHERE wdtb_doct.flag_elaborato = 'N'\n" +
|
||||||
|
" AND wdtb_doct.cod_mdep IN (" + whereCond + ") and wdtb_doct.data_ins >= dateadd(day, - 7, cast(getdate() AS DATE))\n" +
|
||||||
|
" UNION ALL\n" +
|
||||||
|
" SELECT ntb_docr.cod_mart,\n" +
|
||||||
|
" ntb_doct.date_only_doc AS data_reg,\n" +
|
||||||
|
" 0,\n" +
|
||||||
|
" ntb_docr.qta_doc * ntb_docr.qta_cnf,\n" +
|
||||||
|
" ntb_doct.data_import,\n" +
|
||||||
|
" NULL AS tipo_car\n" +
|
||||||
|
" FROM ntb_doct\n" +
|
||||||
|
" INNER JOIN ntb_docr\n" +
|
||||||
|
" ON ntb_doct.cod_mdep = ntb_docr.cod_mdep\n" +
|
||||||
|
" AND ntb_doct.cod_cassa = ntb_docr.cod_cassa\n" +
|
||||||
|
" AND ntb_doct.data_doc = ntb_docr.data_doc\n" +
|
||||||
|
" LEFT OUTER JOIN dtb_tipi\n" +
|
||||||
|
" ON ntb_doct.cod_dtip_val = dtb_tipi.cod_dtip\n" +
|
||||||
|
" WHERE ntb_doct.cod_mdep IN (" + whereCond + ") and ntb_doct.data_import >= dateadd(day, - 7, cast(getdate() AS DATE))\n" +
|
||||||
|
" AND ntb_doct.causale = 'V'\n" +
|
||||||
|
" AND (\n" +
|
||||||
|
" ntb_doct.data_doc_val IS NULL\n" +
|
||||||
|
" OR dtb_tipi.segno_qta_scar = 0\n" +
|
||||||
|
" )\n" +
|
||||||
|
" AND NOT EXISTS (SELECT *\n" +
|
||||||
|
" FROM dtb_doct\n" +
|
||||||
|
" INNER JOIN mtb_depo ON dtb_doct.cod_mdep = mtb_depo.cod_mdep AND\n" +
|
||||||
|
" dtb_doct.cod_dtip = mtb_depo.cod_dtip\n" +
|
||||||
|
" WHERE date_only_doc = dtb_doct.data_doc\n" +
|
||||||
|
" AND ntb_doct.cod_mdep = dtb_doct.cod_mdep)),\n" +
|
||||||
|
" inventario_provvisorio AS (SELECT art.cod_mart_mov AS cod_mart,\n" +
|
||||||
|
" SUM(qta_col * art.qta_std) AS qta_col,\n" +
|
||||||
|
" data_ins,\n" +
|
||||||
|
" MAX(data_ins) OVER ( PARTITION BY art.cod_mart_mov) AS max_data_ins\n" +
|
||||||
|
" FROM mtb_colt\n" +
|
||||||
|
" INNER JOIN mtb_colr\n" +
|
||||||
|
" ON mtb_colt.gestione = mtb_colr.gestione\n" +
|
||||||
|
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
|
||||||
|
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
|
||||||
|
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
|
||||||
|
" INNER JOIN (SELECT mtb_aart.cod_mart AS cod_mart,\n" +
|
||||||
|
" IIF(mtb_aart.articolo_composto = 'S'\n" +
|
||||||
|
" AND mtb_comp.cod_comp IS NOT NULL,\n" +
|
||||||
|
" mtb_comp.cod_comp, mtb_aart.cod_mart) AS cod_mart_mov,\n" +
|
||||||
|
" ISNULL(mtb_comp.qta_std, 1) AS qta_std\n" +
|
||||||
|
" FROM mtb_aart\n" +
|
||||||
|
" LEFT OUTER JOIN mtb_comp\n" +
|
||||||
|
" ON mtb_aart.cod_mart = mtb_comp.cod_mart) art\n" +
|
||||||
|
" ON mtb_colr.cod_mart = art.cod_mart\n" +
|
||||||
|
" WHERE mtb_colt.cod_dtip_provv = 'RGIAC'\n" +
|
||||||
|
" AND mtb_colt.data_distribuzione IS NULL\n" +
|
||||||
|
" AND mtb_colt.cod_mdep IN (" + whereCond + ")\n" +
|
||||||
|
" GROUP BY art.cod_mart_mov, mtb_colt.data_collo, data_ins),\n" +
|
||||||
|
" selezione_giacenza AS (SELECT ISNULL(ip.cod_mart, gp.cod_mart) AS cod_mart,\n" +
|
||||||
|
" ISNULL(ip.qta_col, gp.qta_car) AS qta_car,\n" +
|
||||||
|
" ISNULL(IIF(gp.data_ins < ip.data_ins, 0, gp.qta_scar), 0) AS qta_scar,\n" +
|
||||||
|
" ISNULL(ip.data_ins, gp.data_ins) AS data_ins,\n" +
|
||||||
|
" ISNULL(ip.data_ins, gp.data_reg) AS data_reg,\n" +
|
||||||
|
" IIF(ip.data_ins IS NULL, 0, 1) AS is_invent,\n" +
|
||||||
|
" ip.data_ins AS last_rgiac\n" +
|
||||||
|
" FROM carelli_giacenza_prog gp\n" +
|
||||||
|
" LEFT JOIN inventario_provvisorio ip\n" +
|
||||||
|
" ON ip.cod_mart = gp.cod_mart\n" +
|
||||||
|
" AND max_data_ins = ip.data_ins\n" +
|
||||||
|
" AND (gp.data_ins < ip.data_ins)\n" +
|
||||||
|
" WHERE gp.cod_mdep IN (" + whereCond + ")),\n" +
|
||||||
|
" mov AS (SELECT art.cod_mart_mov AS cod_mart,\n" +
|
||||||
|
" SUM(movimenti.qta_car * qta_std) + ISNULL(giac.qta_car, 0) AS qta_car,\n" +
|
||||||
|
" SUM(movimenti.qta_scar * qta_std) + ISNULL(giac.qta_scar, 0) AS qta_scar,\n" +
|
||||||
|
" GETDATE() AS data_ins\n" +
|
||||||
|
"\n" +
|
||||||
|
" FROM movimenti\n" +
|
||||||
|
" INNER JOIN art ON movimenti.cod_mart = art.cod_mart\n" +
|
||||||
|
" LEFT OUTER JOIN selezione_giacenza giac ON giac.cod_mart = art.cod_mart_mov\n" +
|
||||||
|
" WHERE (\n" +
|
||||||
|
" (movimenti.data_reg >= CAST(ISNULL(giac.data_reg, GETDATE()) AS DATE) AND\n" +
|
||||||
|
" (giac.data_ins IS NULL OR (movimenti.data_ins >= giac.data_ins))) OR\n" +
|
||||||
|
" (\n" +
|
||||||
|
" (movimenti.tipo_car = 'W') AND (\n" +
|
||||||
|
" (giac.data_ins IS NULL OR (movimenti.data_ins >= giac.data_ins)) OR\n" +
|
||||||
|
" (is_invent = 1 AND (movimenti.data_ins >= last_rgiac)) OR\n" +
|
||||||
|
" (is_invent = 0 AND movimenti.data_ins >= ISNULL(giac.data_reg, CAST(GETDATE() AS DATE)))\n" +
|
||||||
|
" )\n" +
|
||||||
|
" )\n" +
|
||||||
|
" )\n" +
|
||||||
|
"\n" +
|
||||||
|
" GROUP BY art.cod_mart_mov, giac.qta_car, giac.qta_scar),\n" +
|
||||||
|
" inv AS (SELECT ISNULL(r.cod_mart, k.cod_mart) AS cod_mart,\n" +
|
||||||
|
" ISNULL(r.qta_car, ISNULL(k.qta_car, 0)) - ISNULL(r.qta_scar, ISNULL(k.qta_scar, 0)) AS qta_inv,\n" +
|
||||||
|
" ISNULL(k.data_ins, CAST(GETDATE() AS DATE)) AS data_inventario\n" +
|
||||||
|
" FROM mov r\n" +
|
||||||
|
" FULL OUTER JOIN selezione_giacenza k\n" +
|
||||||
|
" ON k.cod_mart = r.cod_mart),\n" +
|
||||||
|
" final AS (SELECT cod_mart, qta_inv, data_inventario\n" +
|
||||||
|
" FROM inv\n" +
|
||||||
|
" UNION\n" +
|
||||||
|
" SELECT mtb_comp.cod_mart,\n" +
|
||||||
|
" ROUND(SUM(ISNULL(qta_inv, 0)) / SUM(qta_std), 2),\n" +
|
||||||
|
" MAX(data_inventario)\n" +
|
||||||
|
" FROM mtb_aart\n" +
|
||||||
|
" INNER JOIN mtb_comp ON mtb_aart.cod_mart = mtb_comp.cod_mart\n" +
|
||||||
|
" LEFT OUTER JOIN inv ON mtb_comp.cod_comp = inv.cod_mart\n" +
|
||||||
|
" WHERE mtb_aart.articolo_composto = 'S'\n" +
|
||||||
|
" AND mtb_aart.flag_stato = 'A'\n" +
|
||||||
|
" GROUP BY mtb_comp.cod_mart)\n" +
|
||||||
|
"SELECT final.cod_mart,\n" +
|
||||||
|
" descrizione,\n" +
|
||||||
|
" qta_inv,\n" +
|
||||||
|
" data_inventario,\n" +
|
||||||
|
" " + UtilityDB.valueToString(codMdep) + " AS cod_mdep\n" +
|
||||||
|
"FROM final\n" +
|
||||||
|
" INNER JOIN mtb_aart ON final.cod_mart = mtb_aart.cod_mart";
|
||||||
|
|
||||||
|
List<GiacenzaDTO> listGiacenza = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, GiacenzaDTO.class);
|
||||||
|
|
||||||
|
String listiniAcquisto = setupGest.getSetup("DATI_AZIENDA", "GIACENZA_DA_INV", "LISTINI_ACQUISTO");
|
||||||
|
List<String> listini = Arrays.asList(listiniAcquisto.split("\\|"));
|
||||||
|
|
||||||
|
sql = "WITH incoming_stock_documenti AS (\n" +
|
||||||
|
"/*\n" +
|
||||||
|
"Estrazione dei documenti (bolle web) di merce consegnata\n" +
|
||||||
|
"*/\n" +
|
||||||
|
"\n" +
|
||||||
|
" SELECT wdtb_doct.cod_mdep,\n" +
|
||||||
|
" wdtb_docr.cod_mart,\n" +
|
||||||
|
" wdtb_docr.data_ord,\n" +
|
||||||
|
" wdtb_docr.num_ord,\n" +
|
||||||
|
" riga_ord,\n" +
|
||||||
|
" wdtb_doct.cod_anag,\n" +
|
||||||
|
" wdtb_docr.qta_doc * wdtb_docr.rap_conv AS qta_doc,\n" +
|
||||||
|
" wdtb_doct.flag_elaborato\n" +
|
||||||
|
" FROM wdtb_doct\n" +
|
||||||
|
" INNER JOIN wdtb_docr\n" +
|
||||||
|
" ON wdtb_doct.cod_anag = wdtb_docr.cod_anag AND wdtb_doct.cod_dtip = wdtb_docr.cod_dtip AND\n" +
|
||||||
|
" wdtb_doct.data_doc = wdtb_docr.data_doc AND wdtb_doct.ser_doc = wdtb_docr.ser_doc AND\n" +
|
||||||
|
" wdtb_doct.num_doc = wdtb_docr.num_doc\n" +
|
||||||
|
" WHERE wdtb_doct.data_ins >= dateadd(DAY, - 21, CAST(getdate() AS DATE))\n" +
|
||||||
|
" AND wdtb_doct.cod_mdep = " + UtilityDB.valueToString(codMdep) + ")\n" +
|
||||||
|
" , incoming_stock_ordini AS (\n" +
|
||||||
|
"/*\n" +
|
||||||
|
"Estrazione degli ordini d'acquisto in consegna\n" +
|
||||||
|
"*/\n" +
|
||||||
|
" SELECT r.cod_mdep,\n" +
|
||||||
|
" r.cod_mart,\n" +
|
||||||
|
" CASE\n" +
|
||||||
|
" WHEN r.data_cons = r.data_ord\n" +
|
||||||
|
" THEN CAST(getdate() AS DATE)\n" +
|
||||||
|
" ELSE r.data_cons\n" +
|
||||||
|
" END AS data_cons,\n" +
|
||||||
|
" r.qta_ord,\n" +
|
||||||
|
" r.data_ord,\n" +
|
||||||
|
" r.riga_ord,\n" +
|
||||||
|
" r.num_ord,\n" +
|
||||||
|
" cod_anag\n" +
|
||||||
|
" FROM dtb_ordt t\n" +
|
||||||
|
" INNER JOIN dtb_ordr r\n" +
|
||||||
|
" ON t.gestione = r.gestione\n" +
|
||||||
|
" AND t.data_ord = r.data_ord\n" +
|
||||||
|
" AND t.num_ord = r.num_ord\n" +
|
||||||
|
" WHERE\n" +
|
||||||
|
" -- ordini acquisto\n" +
|
||||||
|
" t.gestione = 'A'\n" +
|
||||||
|
" -- ordini non annullati\n" +
|
||||||
|
" AND t.flag_annulla = 'N'\n" +
|
||||||
|
" -- ordii non sospesi\n" +
|
||||||
|
" AND t.flag_sospeso = 'N'\n" +
|
||||||
|
" AND (\n" +
|
||||||
|
" -- ordini futuri\n" +
|
||||||
|
" (r.data_cons >= CAST(getdate() AS DATE))\n" +
|
||||||
|
" OR\n" +
|
||||||
|
" -- ordini fuori piano logistico (r.data_cons = r.data_ord), inevasi e fatti negli ultimi 3 giorni\n" +
|
||||||
|
" (\n" +
|
||||||
|
" r.data_cons = r.data_ord\n" +
|
||||||
|
" AND flag_evaso = 'I'\n" +
|
||||||
|
" AND r.data_ord >= dateadd(DAY, - 3, CAST(getdate() AS DATE))\n" +
|
||||||
|
" )\n" +
|
||||||
|
" )\n" +
|
||||||
|
" -- prendiamo i soli ordini del SECCO, sarà da modificare quando inizieranno ad ordinare anche altri (es. APULD)\n" +
|
||||||
|
" AND t.listino IN (" + UtilityDB.listValueToString(listini) + ")\n" +
|
||||||
|
" -- ordine non ancora evaso\n" +
|
||||||
|
" AND flag_evaso <> 'E'\n" +
|
||||||
|
" -- filtro solamente un Pdv\n" +
|
||||||
|
" AND r.cod_mdep = " + UtilityDB.valueToString(codMdep) + ")\n" +
|
||||||
|
" , incoming_stock_doc_consegnati AS (\n" +
|
||||||
|
"/*\n" +
|
||||||
|
"Estrazione dei documenti consegnati\n" +
|
||||||
|
"*/\n" +
|
||||||
|
" SELECT DISTINCT wdtb_docr.num_ord, wdtb_docr.data_ord, wdtb_doct.cod_anag\n" +
|
||||||
|
" FROM wdtb_doct\n" +
|
||||||
|
" INNER JOIN wdtb_docr\n" +
|
||||||
|
" ON wdtb_doct.cod_anag = wdtb_docr.cod_anag AND wdtb_doct.cod_dtip = wdtb_docr.cod_dtip AND\n" +
|
||||||
|
" wdtb_doct.data_doc = wdtb_docr.data_doc AND wdtb_doct.ser_doc = wdtb_docr.ser_doc AND\n" +
|
||||||
|
" wdtb_doct.num_doc = wdtb_docr.num_doc\n" +
|
||||||
|
" WHERE wdtb_doct.data_ins >= dateadd(DAY, - 7, CAST(getdate() AS DATE))\n" +
|
||||||
|
" AND wdtb_doct.flag_elaborato = 'N')\n" +
|
||||||
|
"\n" +
|
||||||
|
"-- Step 4) Unione delle estrazioni precedenti [MySQL]\n" +
|
||||||
|
"\n" +
|
||||||
|
"SELECT ISNULL(d.cod_mdep, o.cod_mdep) AS store_code,\n" +
|
||||||
|
" ISNULL(d.cod_mart, o.cod_mart) AS art_code,\n" +
|
||||||
|
" data_cons,\n" +
|
||||||
|
" SUM(ISNULL(qta_doc, qta_ord)) AS incoming_stock\n" +
|
||||||
|
"FROM incoming_stock_ordini o\n" +
|
||||||
|
" FULL OUTER JOIN incoming_stock_documenti d\n" +
|
||||||
|
" ON o.cod_mdep = d.cod_mdep AND o.cod_mart = d.cod_mart AND o.data_ord = d.data_ord AND\n" +
|
||||||
|
" o.num_ord = d.num_ord AND o.cod_anag = d.cod_anag AND o.riga_ord = d.riga_ord\n" +
|
||||||
|
" LEFT JOIN incoming_stock_doc_consegnati k\n" +
|
||||||
|
" ON o.num_ord = k.num_ord AND o.cod_anag = k.cod_anag AND o.data_ord = k.data_ord\n" +
|
||||||
|
"WHERE (flag_elaborato = 'I' OR flag_elaborato IS NULL)\n" +
|
||||||
|
" AND ((d.cod_mart IS NOT NULL) OR (d.cod_mart IS NULL AND k.num_ord IS NULL))\n" +
|
||||||
|
"GROUP BY ISNULL(d.cod_mdep, o.cod_mdep), ISNULL(d.cod_mart, o.cod_mart), data_cons, k.num_ord\n";
|
||||||
|
|
||||||
|
List<HashMap<String, Object>> merceInArrivo = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||||
|
|
||||||
|
if (listGiacenza != null) {
|
||||||
|
|
||||||
|
merceInArrivo
|
||||||
|
.forEach(merce -> {
|
||||||
|
String storeCode = (String) merce.get("store_code");
|
||||||
|
String artCode = (String) merce.get("art_code");
|
||||||
|
BigDecimal incomingStock = (BigDecimal) merce.get("incoming_stock");
|
||||||
|
|
||||||
|
listGiacenza.stream()
|
||||||
|
.filter(x -> x.getCodMart().equals(artCode) && x.getCodMdep().equals(storeCode))
|
||||||
|
.findFirst()
|
||||||
|
.ifPresent(x -> {
|
||||||
|
x.setIncomingStock(incomingStock);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return listGiacenza;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import it.integry.ems_model.entity.MtbInvenr;
|
|||||||
import it.integry.ems_model.entity.MtbInvent;
|
import it.integry.ems_model.entity.MtbInvent;
|
||||||
import it.integry.ems_model.entity.MtbUntMis;
|
import it.integry.ems_model.entity.MtbUntMis;
|
||||||
import it.integry.ems_model.entity._enum.GestioneEnum;
|
import it.integry.ems_model.entity._enum.GestioneEnum;
|
||||||
|
import it.integry.ems_model.resolver.SqlFieldHolder;
|
||||||
import it.integry.ems_model.service.SetupGest;
|
import it.integry.ems_model.service.SetupGest;
|
||||||
import it.integry.ems_model.types.OperationType;
|
import it.integry.ems_model.types.OperationType;
|
||||||
import it.integry.ems_model.utility.Query;
|
import it.integry.ems_model.utility.Query;
|
||||||
@@ -185,5 +186,4 @@ public class WMSInventarioService {
|
|||||||
entityProcessor.processEntity(inventarioToInsert, true, multiDBTransactionManager);
|
entityProcessor.processEntity(inventarioToInsert, true, multiDBTransactionManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import it.integry.ems.logistic.dto.sm2.FiltroDistribuzioneColloDTO;
|
|||||||
import it.integry.ems.product.importaz.service.ProductServices;
|
import it.integry.ems.product.importaz.service.ProductServices;
|
||||||
import it.integry.ems.retail.pvmRetail.dto.save.DocFromPickingDTO;
|
import it.integry.ems.retail.pvmRetail.dto.save.DocFromPickingDTO;
|
||||||
import it.integry.ems.retail.pvmRetail.service.PvmService;
|
import it.integry.ems.retail.pvmRetail.service.PvmService;
|
||||||
|
import it.integry.ems.retail.pvmRetail.service.PvmServiceSave;
|
||||||
import it.integry.ems.retail.wms.colli.service.WMSColliService;
|
import it.integry.ems.retail.wms.colli.service.WMSColliService;
|
||||||
import it.integry.ems.retail.wms.dto.*;
|
import it.integry.ems.retail.wms.dto.*;
|
||||||
import it.integry.ems.retail.wms.exceptions.InvalidArticoloException;
|
import it.integry.ems.retail.wms.exceptions.InvalidArticoloException;
|
||||||
@@ -76,6 +77,8 @@ public class WMSSpedizioneService {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserSession userSession;
|
private UserSession userSession;
|
||||||
|
@Autowired
|
||||||
|
private PvmServiceSave pvmServiceSave;
|
||||||
|
|
||||||
public MtbColt createUDS(CreateUDSRequestDTO createUDSRequestDTO) throws Exception {
|
public MtbColt createUDS(CreateUDSRequestDTO createUDSRequestDTO) throws Exception {
|
||||||
|
|
||||||
@@ -227,7 +230,7 @@ public class WMSSpedizioneService {
|
|||||||
docFromPickingDTO
|
docFromPickingDTO
|
||||||
.setDataDoc(new Date())
|
.setDataDoc(new Date())
|
||||||
.setColli(colli);
|
.setColli(colli);
|
||||||
List<EntityBase> entityRet = pvmService.saveDocFromPicking(docFromPickingDTO);
|
List<EntityBase> entityRet = pvmServiceSave.saveDocFromPicking(docFromPickingDTO);
|
||||||
UtilityEntity.throwEntitiesException(entityRet);
|
UtilityEntity.throwEntitiesException(entityRet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user