Merge branch 'master' 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:
@@ -53,6 +53,6 @@ public class GiacenzaController {
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||
@RequestParam String codMdep) throws Exception {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(giacenzaService.retrieveGiacenza(codMdep));
|
||||
return ServiceRestResponse.createPositiveResponse(giacenzaService.retrieveGiacenza(codMdep, true));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -552,7 +552,7 @@ public class PvmServiceSave {
|
||||
|
||||
List<GiacenzaDTO> giacenzaPv = new ArrayList<>();
|
||||
if (saveGiacenza) {
|
||||
giacenzaPv = giacenzaService.retrieveGiacenza(codMdep);
|
||||
giacenzaPv = giacenzaService.retrieveGiacenza(codMdep, false);
|
||||
}
|
||||
|
||||
MtbColt collo = new MtbColt();
|
||||
|
||||
@@ -513,7 +513,7 @@ public class GiacenzaService {
|
||||
}
|
||||
}
|
||||
|
||||
public List<GiacenzaDTO> retrieveGiacenza(String codMdep) throws Exception {
|
||||
public List<GiacenzaDTO> retrieveGiacenza(String codMdep, boolean readOrdini) 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",
|
||||
@@ -677,117 +677,120 @@ public class GiacenzaService {
|
||||
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";
|
||||
if (readOrdini ) {
|
||||
|
||||
List<HashMap<String, Object>> merceInArrivo = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
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";
|
||||
|
||||
if (listGiacenza != null) {
|
||||
List<HashMap<String, Object>> merceInArrivo = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||
|
||||
merceInArrivo
|
||||
.forEach(merce -> {
|
||||
String storeCode = (String) merce.get("store_code");
|
||||
String artCode = (String) merce.get("art_code");
|
||||
BigDecimal incomingStock = (BigDecimal) merce.get("incoming_stock");
|
||||
if (listGiacenza != null) {
|
||||
|
||||
listGiacenza.stream()
|
||||
.filter(x -> x.getCodMart().equals(artCode) && x.getCodMdep().equals(storeCode))
|
||||
.findFirst()
|
||||
.ifPresent(x -> {
|
||||
x.setIncomingStock(incomingStock);
|
||||
});
|
||||
});
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user