Finish Hotfix-100
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:
@@ -731,116 +731,71 @@ public class GiacenzaService {
|
||||
listini = Arrays.asList(listiniAcquisto.split("\\|"));
|
||||
}
|
||||
if (readOrdini) {
|
||||
|
||||
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" +
|
||||
sql =
|
||||
"WITH ordine AS (SELECT dtb_ordt.cod_mdep,\n" +
|
||||
" dtb_ordr.cod_mart,\n" +
|
||||
" dtb_ordr.qta_ord,\n" +
|
||||
" dtb_ordr.data_cons\n" +
|
||||
" FROM dtb_ordt\n" +
|
||||
" INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione\n" +
|
||||
" AND dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
|
||||
" AND dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
|
||||
" WHERE dtb_ordt.gestione = 'A'\n" +
|
||||
" AND dtb_ordt.flag_annulla = 'N'\n" +
|
||||
" AND dtb_ordt.flag_sospeso = 'N'\n" +
|
||||
" AND dtb_ordt.cod_mdep = " + UtilityDB.valueToString(codMdep) + "\n" +
|
||||
(listini != null && !listini.isEmpty() ? " AND dtb_ordt.listino IN (" + UtilityDB.listValueToString(listini) + ")\n" : "") +
|
||||
" AND dtb_ordr.cod_mart IS NOT NULL\n" +
|
||||
" AND (dtb_ordr.data_cons >= CAST(GETDATE() AS DATE) OR\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" +
|
||||
" dtb_ordr.data_cons = dtb_ordr.data_ord\n" +
|
||||
" AND dtb_ordr.flag_evaso = 'I'\n" +
|
||||
" AND dtb_ordr.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" +
|
||||
( listini != null && !listini.isEmpty() ?" 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" +
|
||||
" AND NOT EXISTS (SELECT *\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" +
|
||||
" INNER JOIN wdtb_docr ON wdtb_doct.cod_dtip = wdtb_docr.cod_dtip\n" +
|
||||
" AND wdtb_docr.cod_anag = wdtb_doct.cod_anag\n" +
|
||||
" AND wdtb_docr.data_doc = wdtb_doct.data_doc\n" +
|
||||
" AND wdtb_docr.ser_doc = wdtb_doct.ser_doc\n" +
|
||||
" AND wdtb_docr.num_doc = wdtb_doct.num_doc\n" +
|
||||
" WHERE wdtb_docr.data_ord = dtb_ordr.data_ord\n" +
|
||||
" AND wdtb_docr.num_ord = dtb_ordr.num_ord))\n" +
|
||||
"\n" +
|
||||
"-- Step 4) Unione delle estrazioni precedenti [MySQL]\n" +
|
||||
" , doc AS (SELECT wdtb_doct.cod_mdep,\n" +
|
||||
" wdtb_docr.cod_mart,\n" +
|
||||
" wdtb_docr.qta_doc\n" +
|
||||
" FROM wdtb_doct\n" +
|
||||
" INNER JOIN wdtb_docr ON wdtb_doct.cod_dtip = wdtb_docr.cod_dtip\n" +
|
||||
" AND wdtb_docr.cod_anag = wdtb_doct.cod_anag\n" +
|
||||
" AND wdtb_docr.data_doc = wdtb_doct.data_doc\n" +
|
||||
" AND wdtb_docr.ser_doc = wdtb_doct.ser_doc\n" +
|
||||
" AND wdtb_docr.num_doc = wdtb_doct.num_doc\n" +
|
||||
" AND wdtb_docr.cod_mart IS NOT NULL\n" +
|
||||
(listini != null && !listini.isEmpty() ? " AND wdtb_doct.listino IN (" + UtilityDB.listValueToString(listini) + ")\n" : "") +
|
||||
" WHERE wdtb_doct.cod_mdep = " + UtilityDB.valueToString(codMdep) + "\n" +
|
||||
" AND wdtb_doct.flag_elaborato = 'I')\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";
|
||||
"SELECT ISNULL(doc.cod_mdep, ordine.cod_mdep) AS cod_mdep,\n" +
|
||||
" ISNULL(doc.cod_mart, ordine.cod_mart) AS cod_mart,\n" +
|
||||
" ISNULL(doc.qta_doc, 0) + ISNULL(ordine.qta_ord, 0) AS merce_in_arrivo\n" +
|
||||
"FROM doc\n" +
|
||||
" FULL OUTER JOIN ordine ON doc.cod_mart = ordine.cod_mart\n" +
|
||||
" AND doc.cod_mdep = ordine.cod_mdep\n" +
|
||||
" AND doc.cod_mdep = ordine.cod_mdep";
|
||||
|
||||
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))
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase((String) merce.get("cod_mart")) &&
|
||||
x.getCodMdep().equalsIgnoreCase((String) merce.get("cod_mdep")))
|
||||
.findFirst()
|
||||
.ifPresent(x -> {
|
||||
x.setIncomingStock(incomingStock);
|
||||
x.setIncomingStock((BigDecimal) merce.get("merce_in_arrivo"));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user