Fix query giacenza

This commit is contained in:
2024-07-22 10:16:02 +02:00
parent 644010dbda
commit ac1cbff3ba

View File

@@ -480,14 +480,10 @@ public class GiacenzaService {
public List<GiacenzaDTO> retrieveGiacenza(String codMdep) throws Exception {
String sql = "WITH art\n" +
" AS (SELECT mtb_aart.cod_mart AS cod_mart,\n" +
" CASE\n" +
" WHEN mtb_aart.articolo_composto = 'S'\n" +
" AND mtb_comp.cod_comp IS NOT NULL\n" +
" THEN mtb_comp.cod_comp\n" +
" ELSE mtb_aart.cod_mart\n" +
" END AS cod_mart_mov,\n" +
" ISNULL(mtb_comp.qta_std, 1) AS qta_std\n" +
" 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" +
@@ -555,26 +551,21 @@ public class GiacenzaService {
" AND ntb_doct.date_only_doc >= DATEADD(DAY, - 7, CAST(GETDATE() AS DATE))),\n" +
" inventario_provvisorio\n" +
" AS (SELECT mtb_colt.cod_mdep,\n" +
" art.cod_mart_mov AS cod_mart,\n" +
" SUM(qta_col * art.qta_std) AS qta_col,\n" +
" 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 (\n" +
" PARTITION BY mtb_colt.cod_mdep,art.cod_mart_mov\n" +
" ) max_data_ins\n" +
" MAX(data_ins) OVER ( PARTITION BY mtb_colt.cod_mdep,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" +
" CASE\n" +
" WHEN mtb_aart.articolo_composto = 'S'\n" +
" AND mtb_comp.cod_comp IS NOT NULL\n" +
" THEN mtb_comp.cod_comp\n" +
" ELSE mtb_aart.cod_mart\n" +
" END AS cod_mart_mov,\n" +
" ISNULL(mtb_comp.qta_std, 1) AS qta_std\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" +
@@ -584,22 +575,14 @@ public class GiacenzaService {
" AND mtb_colt.cod_mdep IN (" + UtilityDB.valueToString(codMdep) + ")\n" +
" GROUP BY art.cod_mart_mov, mtb_colt.data_collo, data_ins, mtb_colt.cod_mdep),\n" +
" selezione_giacenza\n" +
" AS (SELECT ISNULL(ip.cod_mdep, gp.cod_mdep) cod_mdep,\n" +
" ISNULL(ip.cod_mart, gp.cod_mart) cod_mart,\n" +
" ISNULL(ip.qta_col, gp.qta_car) AS qta_car,\n" +
" ISNULL(CASE\n" +
" WHEN gp.data_ins < ip.data_ins\n" +
" THEN 0\n" +
" ELSE gp.qta_scar\n" +
" END, 0) AS qta_scar,\n" +
" ISNULL(ip.data_ins, gp.data_ins) AS data_ins,\n" +
" ISNULL(CAST(ip.data_ins AS DATE), gp.data_reg) AS data_reg,\n" +
" CASE\n" +
" WHEN ip.data_ins IS NULL\n" +
" THEN 0\n" +
" ELSE 1\n" +
" END AS is_invent,\n" +
" ip.data_ins last_rgiac\n" +
" AS (SELECT ISNULL(ip.cod_mdep, gp.cod_mdep) AS cod_mdep,\n" +
" 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(CAST(ip.data_ins AS DATE), 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" +
@@ -607,51 +590,34 @@ public class GiacenzaService {
" AND max_data_ins = ip.data_ins\n" +
" AND (gp.data_ins < ip.data_ins)\n" +
" WHERE gp.cod_mdep IN (" + UtilityDB.valueToString(codMdep) + ")),\n" +
" mov\n" +
" AS (SELECT movimenti.cod_mdep,\n" +
" mov AS (SELECT movimenti.cod_mdep,\n" +
" 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" +
" FROM movimenti\n" +
" INNER JOIN art\n" +
" ON movimenti.cod_mart = art.cod_mart\n" +
" INNER JOIN art ON movimenti.cod_mart = art.cod_mart\n" +
" LEFT OUTER JOIN selezione_giacenza giac\n" +
" ON giac.cod_mdep = movimenti.cod_mdep\n" +
" AND giac.cod_mart = art.cod_mart_mov\n" +
" ON giac.cod_mdep = movimenti.cod_mdep AND giac.cod_mart = art.cod_mart_mov\n" +
" WHERE (\n" +
" (\n" +
" movimenti.data_reg >= ISNULL(giac.data_reg, CAST(GETDATE() AS DATE))\n" +
" AND (\n" +
" giac.data_ins IS NULL\n" +
" OR (movimenti.data_ins >= giac.data_ins)\n" +
" )\n" +
" )\n" +
" OR (\n" +
" (movimenti.tipo_car = 'W')\n" +
" AND (\n" +
" (\n" +
" giac.data_ins IS NULL\n" +
" OR (movimenti.data_ins >= giac.data_ins)\n" +
" )\n" +
" OR (\n" +
" is_invent = 0\n" +
" AND (\n" +
" movimenti.data_ins >= last_rgiac\n" +
" OR last_rgiac IS NULL\n" +
" )\n" +
" )\n" +
" (movimenti.data_reg >= ISNULL(giac.data_reg, CAST(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" +
" AND movimenti.cod_mdep IN (" + UtilityDB.valueToString(codMdep) + ")\n" +
" GROUP BY movimenti.cod_mdep, art.cod_mart_mov, giac.qta_car, giac.qta_scar),\n" +
" inv\n" +
" AS (SELECT ISNULL(r.cod_mart, k.cod_mart) AS cod_mart,\n" +
" ISNULL(mtb_aart.descrizione, '') descrizione,\n" +
" ISNULL(r.qta_car, ISNULL(k.qta_car, 0)) - ISNULL(r.qta_scar, ISNULL(k.qta_scar, 0)) qta_inv,\n" +
" ISNULL(k.data_ins, CAST(GETDATE() AS DATE)) data_inventario,\n" +
" ISNULL(r.cod_mdep, k.cod_mdep) AS cod_mdep\n" +
" AS (SELECT ISNULL(r.cod_mart, k.cod_mart) AS cod_mart,\n" +
" ISNULL(mtb_aart.descrizione, '') AS descrizione,\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" +
" ISNULL(r.cod_mdep, k.cod_mdep) AS cod_mdep\n" +
" FROM mov r\n" +
" INNER JOIN mtb_aart\n" +
" ON r.cod_mart = mtb_aart.cod_mart\n" +