diff --git a/app/Http/Controllers/ArticleController.php b/app/Http/Controllers/ArticleController.php index 0db63a6e..977d44c9 100755 --- a/app/Http/Controllers/ArticleController.php +++ b/app/Http/Controllers/ArticleController.php @@ -295,59 +295,70 @@ class ArticleController extends Controller $join->on('T_WEB_Articoli.IdArticolo', '=', 'b.IdArticolo') ->on('T_WEB_Articoli.DataOra', '=', 'b.data'); }) - ->leftJoin(DB::raw('(SELECT e.IdStatoProdotto, e.Descrizione as DescrizioneStatoProdotto FROM T_WEB_StatiProdotto e JOIN (SELECT IdStatoProdotto, MAX(DataOra) as data1 from T_WEB_StatiProdotto GROUP BY IdStatoProdotto) c ON e.IdStatoProdotto = c.IdStatoProdotto AND e.DataOra = c.data1 ) f'), function ($join) { + ->leftJoin(DB::raw('(SELECT e.IdStatoProdotto, e.Descrizione as DescrizioneStatoProdotto FROM T_WEB_StatiProdotto e + JOIN (SELECT IdStatoProdotto, MAX(DataOra) as data1 + FROM T_WEB_StatiProdotto GROUP BY IdStatoProdotto) c + ON e.IdStatoProdotto = c.IdStatoProdotto AND e.DataOra = c.data1) f'), function ($join) { $join->on('T_WEB_Articoli.IdStatoProdotto', '=', 'f.IdStatoProdotto'); }) - ->leftJoin(DB::raw('(SELECT g.IdTipologia, g.Descrizione as DescrizioneTipologia FROM T_WEB_Tipologie g JOIN (SELECT IdTipologia, MAX(DataOra) as data1 from T_WEB_Tipologie GROUP BY IdTipologia) h ON g.IdTipologia = h.IdTipologia AND g.DataOra = h.data1 ) i'), function ($join) { + ->leftJoin(DB::raw('(SELECT g.IdTipologia, g.Descrizione as DescrizioneTipologia FROM T_WEB_Tipologie g + JOIN (SELECT IdTipologia, MAX(DataOra) as data1 + FROM T_WEB_Tipologie GROUP BY IdTipologia) h + ON g.IdTipologia = h.IdTipologia AND g.DataOra = h.data1) i'), function ($join) { $join->on('T_WEB_Articoli.IdTipologia', '=', 'i.IdTipologia'); }) - ->leftJoin(DB::raw('(SELECT l.IdTipoFormato, l.Descrizione as DescrizioneFormato FROM T_WEB_TipiFormato l JOIN (SELECT IdTipoFormato, MAX(DataOra) as data1 from T_WEB_TipiFormato GROUP BY IdTipoFormato) m ON l.IdTipoFormato = m.IdTipoFormato AND l.DataOra = m.data1 ) n'), function ($join) { + ->leftJoin(DB::raw('(SELECT l.IdTipoFormato, l.Descrizione as DescrizioneFormato FROM T_WEB_TipiFormato l + JOIN (SELECT IdTipoFormato, MAX(DataOra) as data1 + FROM T_WEB_TipiFormato GROUP BY IdTipoFormato) m + ON l.IdTipoFormato = m.IdTipoFormato AND l.DataOra = m.data1) n'), function ($join) { $join->on('T_WEB_Articoli.IdTipoFormato', '=', 'n.IdTipoFormato'); }) - ->leftJoin(DB::raw('(SELECT CodArticolo, SUM(TRY_CAST(Qta AS INT)) AS totFat FROM T_WEB_ArticoliFatturati WHERE ISNUMERIC(Qta) = 1 GROUP BY CodArticolo) o'), function ($join) { + ->leftJoin(DB::raw('(SELECT CodArticolo, SUM(TRY_CAST(Qta AS INT)) AS totFat FROM T_WEB_ArticoliFatturati + WHERE ISNUMERIC(Qta) = 1 GROUP BY CodArticolo) o'), function ($join) { $join->on('T_WEB_Articoli.IdArticolo', '=', 'o.CodArticolo'); }) - ->leftJoin(DB::raw('(SELECT CodArticolo, SUM(TRY_CAST(Qta AS INT)) as venduti3mesi, RANK() OVER (ORDER BY SUM(TRY_CAST(Qta AS INT)) DESC) as rank3M - FROM T_WEB_ArticoliFatturati - WHERE DataOra >= DATEADD(MONTH, -3, GETDATE()) AND ISNUMERIC(Qta) = 1 - GROUP BY CodArticolo) p'), function ($join) { + ->leftJoin(DB::raw('(SELECT CodArticolo, SUM(TRY_CAST(Qta AS INT)) as venduti3mesi, + RANK() OVER (ORDER BY SUM(TRY_CAST(Qta AS INT)) DESC) as rank3M + FROM T_WEB_ArticoliFatturati + WHERE DataOra >= DATEADD(MONTH, -3, GETDATE()) AND ISNUMERIC(Qta) = 1 + GROUP BY CodArticolo) p'), function ($join) { $join->on('T_WEB_Articoli.IdArticolo', '=', 'p.CodArticolo'); }) - ->leftJoin(DB::raw('(SELECT CodArticolo, SUM(TRY_CAST(Qta AS INT)) as venduti6mesi, RANK() OVER (ORDER BY SUM(TRY_CAST(Qta AS INT)) DESC) as rank6M - FROM T_WEB_ArticoliFatturati - WHERE DataOra >= DATEADD(MONTH, -6, GETDATE()) AND ISNUMERIC(Qta) = 1 - GROUP BY CodArticolo) q'), function ($join) { + ->leftJoin(DB::raw('(SELECT CodArticolo, SUM(TRY_CAST(Qta AS INT)) as venduti6mesi, + RANK() OVER (ORDER BY SUM(TRY_CAST(Qta AS INT)) DESC) as rank6M + FROM T_WEB_ArticoliFatturati + WHERE DataOra >= DATEADD(MONTH, -6, GETDATE()) AND ISNUMERIC(Qta) = 1 + GROUP BY CodArticolo) q'), function ($join) { $join->on('T_WEB_Articoli.IdArticolo', '=', 'q.CodArticolo'); }) - ->leftJoin(DB::raw('(SELECT CodArticolo, SUM(TRY_CAST(Qta AS INT)) as venduti1anno, RANK() OVER (ORDER BY SUM(TRY_CAST(Qta AS INT)) DESC) as rank1Y - FROM T_WEB_ArticoliFatturati - WHERE DataOra >= DATEADD(MONTH, -12, GETDATE()) AND ISNUMERIC(Qta) = 1 - GROUP BY CodArticolo) r'), function ($join) { + ->leftJoin(DB::raw('(SELECT CodArticolo, SUM(TRY_CAST(Qta AS INT)) as venduti1anno, + RANK() OVER (ORDER BY SUM(TRY_CAST(Qta AS INT)) DESC) as rank1Y + FROM T_WEB_ArticoliFatturati + WHERE DataOra >= DATEADD(MONTH, -12, GETDATE()) AND ISNUMERIC(Qta) = 1 + GROUP BY CodArticolo) r'), function ($join) { $join->on('T_WEB_Articoli.IdArticolo', '=', 'r.CodArticolo'); }) ->leftJoin(DB::raw('(SELECT CodArticolo, MAX(DataOra) as ultimoOrdine - FROM T_WEB_ArticoliFatturati - WHERE ISNUMERIC(Qta) = 1 - GROUP BY CodArticolo) s'), function ($join) { + FROM T_WEB_ArticoliFatturati + WHERE ISNUMERIC(Qta) = 1 + GROUP BY CodArticolo) s'), function ($join) { $join->on('T_WEB_Articoli.IdArticolo', '=', 's.CodArticolo'); }) - ->leftJoin(DB::raw('( - SELECT v.IdCollana, v.Descrizione as DescrizioneCollana - FROM T_WEB_Collane v - INNER JOIN ( - SELECT IdCollana, MAX(ID) as MaxID - FROM T_WEB_Collane - GROUP BY IdCollana - ) x ON v.IdCollana = x.IdCollana AND v.ID = x.MaxID - ) y'), function ($join) { + ->leftJoin(DB::raw('(SELECT v.IdCollana, v.Descrizione as DescrizioneCollana + FROM T_WEB_Collane v + INNER JOIN (SELECT IdCollana, MAX(ID) as MaxID + FROM T_WEB_Collane GROUP BY IdCollana) x + ON v.IdCollana = x.IdCollana AND v.ID = x.MaxID) y'), function ($join) { $join->on('T_WEB_Articoli.IdCollana', '=', 'y.IdCollana'); }) - ->leftJoin(DB::raw('(SELECT g2.IdArgomento, g2.Descrizione as DescrArgomento FROM T_WEB_Argomenti g2 - JOIN (SELECT IdArgomento, MAX(DataOra) as data12 from T_WEB_Argomenti GROUP BY IdArgomento) h2 - ON g2.IdArgomento = h.IdArgomento AND g2.DataOra = h.data12 ) i2'), function ($join) { + ->leftJoin(DB::raw('(SELECT g2.IdArgomento, g2.Descrizione as DescrArgomento + FROM T_WEB_Argomenti g2 + JOIN (SELECT IdArgomento, MAX(DataOra) as data12 + FROM T_WEB_Argomenti + GROUP BY IdArgomento) h + ON g2.IdArgomento = h.IdArgomento AND g2.DataOra = h.data12) i2'), function ($join) { $join->on('T_WEB_Articoli.ListaArgomenti', '=', 'i2.IdArgomento'); }) - ->select( 'T_WEB_Articoli.*', 'f.DescrizioneStatoProdotto', @@ -369,7 +380,7 @@ class ArticleController extends Controller //->orderBy('rank1Y', 'asc') ->orderBy('totFat', 'desc') ->get(); - + if ($articoliVenduti->isEmpty()) { return response()->json(['message' => 'Nessun articolo fatturato trovato.'], 404); }