venduti e fatturati nello stesso file

This commit is contained in:
paoloar77
2024-12-19 10:59:33 +01:00
parent 96a323b75d
commit 4553d438ae
3 changed files with 46 additions and 17 deletions

View File

@@ -26,8 +26,8 @@ class ArticleController extends Controller
$join->on('T_WEB_Articoli.IdArticolo', '=', 'b.IdArticolo') $join->on('T_WEB_Articoli.IdArticolo', '=', 'b.IdArticolo')
->on('T_WEB_Articoli.DataOra', '=', 'b.data'); ->on('T_WEB_Articoli.DataOra', '=', 'b.data');
}) })
//->leftJoin(DB::raw('(SELECT CodArticoloGM, SUM(Qta) as totVen, MAX(DataOra) as ultimaDataOra FROM T_WEB_Ordini WHERE DataOra > \'' . $data_start . '\' GROUP BY CodArticoloGM) O'), 'T_WEB_Articoli.IdArticolo', '=', 'O.CodArticoloGM') ->leftJoin(DB::raw('(SELECT CodArticoloGM, SUM(Qta) as totVen, MAX(DataOra) as ultimaDataOra FROM T_WEB_Ordini WHERE DataOra > \'' . $data_start . '\' GROUP BY CodArticoloGM) O'), 'T_WEB_Articoli.IdArticolo', '=', 'O.CodArticoloGM')
->leftJoin(DB::raw('(SELECT CodArticolo, SUM(Qta) as totVen, MAX(DataOra) as ultimaDataOra FROM T_WEB_ArticoliFatturati WHERE DataOra > \'' . $data_start . '\' GROUP BY CodArticolo) O'), 'T_WEB_Articoli.IdArticolo', '=', 'O.CodArticolo') // ->leftJoin(DB::raw('(SELECT CodArticolo, SUM(Qta) as totVen, MAX(DataOra) as ultimaDataOra FROM T_WEB_ArticoliFatturati WHERE DataOra > \'' . $data_start . '\' GROUP BY CodArticolo) O'), 'T_WEB_Articoli.IdArticolo', '=', 'O.CodArticolo')
->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'); $join->on('T_WEB_Articoli.IdTipologia', '=', 'i.IdTipologia');
}) })
@@ -72,6 +72,7 @@ class ArticleController extends Controller
'O.DataOra', 'O.DataOra',
'O.Qta', 'O.Qta',
'A.Titolo', 'A.Titolo',
'A.CodArticolo',
'A.Ean13' 'A.Ean13'
) )
->orderBy('O.DataOra', 'desc') ->orderBy('O.DataOra', 'desc')
@@ -107,6 +108,7 @@ class ArticleController extends Controller
'O.DataOra', 'O.DataOra',
'O.Qta', 'O.Qta',
'A.Titolo', 'A.Titolo',
'A.CodArticolo',
'A.Ean13' 'A.Ean13'
) )
->orderBy('O.DataOra', 'desc') ->orderBy('O.DataOra', 'desc')
@@ -142,6 +144,7 @@ class ArticleController extends Controller
'O.DataOra', 'O.DataOra',
'O.Qta', 'O.Qta',
'A.Titolo', 'A.Titolo',
'A.CodArticolo',
'A.Ean13' 'A.Ean13'
) )
->orderBy('O.DataOra', 'desc') ->orderBy('O.DataOra', 'desc')
@@ -196,12 +199,21 @@ class ArticleController extends Controller
->leftJoin(DB::raw('(SELECT CodArticoloGM, SUM(Qta) as totVen FROM T_WEB_Ordini GROUP BY CodArticoloGM) o'), function ($join) { ->leftJoin(DB::raw('(SELECT CodArticoloGM, SUM(Qta) as totVen FROM T_WEB_Ordini GROUP BY CodArticoloGM) o'), function ($join) {
$join->on('T_WEB_Articoli.IdArticolo', '=', 'o.CodArticoloGM'); $join->on('T_WEB_Articoli.IdArticolo', '=', 'o.CodArticoloGM');
}) })
->leftJoin(DB::raw('(SELECT CodArticolo, SUM(TRY_CAST(Qta AS INT)) as totFat FROM T_WEB_ArticoliFatturati GROUP BY CodArticolo) u'), function ($join) {
$join->on('T_WEB_Articoli.IdArticolo', '=', 'u.CodArticolo');
})
->leftJoin(DB::raw('(SELECT CodArticoloGM, SUM(Qta) as venduti3mesi, RANK() OVER (ORDER BY SUM(Qta) DESC) as rank3M ->leftJoin(DB::raw('(SELECT CodArticoloGM, SUM(Qta) as venduti3mesi, RANK() OVER (ORDER BY SUM(Qta) DESC) as rank3M
FROM T_WEB_Ordini FROM T_WEB_Ordini
WHERE DataOra >= DATEADD(MONTH, -3, GETDATE()) WHERE DataOra >= DATEADD(MONTH, -3, GETDATE())
GROUP BY CodArticoloGM) p'), function ($join) { GROUP BY CodArticoloGM) p'), function ($join) {
$join->on('T_WEB_Articoli.IdArticolo', '=', 'p.CodArticoloGM'); $join->on('T_WEB_Articoli.IdArticolo', '=', 'p.CodArticoloGM');
}) })
->leftJoin(DB::raw('(SELECT CodArticolo, SUM(TRY_CAST(Qta AS INT)) as fat3mesi, RANK() OVER (ORDER BY SUM(TRY_CAST(Qta AS INT)) DESC) as fatrank3M
FROM T_WEB_ArticoliFatturati
WHERE DataOra >= DATEADD(MONTH, -3, GETDATE())
GROUP BY CodArticolo) t'), function ($join) {
$join->on('T_WEB_Articoli.IdArticolo', '=', 't.CodArticolo');
})
->leftJoin(DB::raw('(SELECT CodArticoloGM, SUM(Qta) as venduti6mesi, RANK() OVER (ORDER BY SUM(Qta) DESC) as rank6M ->leftJoin(DB::raw('(SELECT CodArticoloGM, SUM(Qta) as venduti6mesi, RANK() OVER (ORDER BY SUM(Qta) DESC) as rank6M
FROM T_WEB_Ordini FROM T_WEB_Ordini
WHERE DataOra >= DATEADD(MONTH, -6, GETDATE()) WHERE DataOra >= DATEADD(MONTH, -6, GETDATE())
@@ -225,7 +237,10 @@ class ArticleController extends Controller
'i.DescrizioneTipologia', 'i.DescrizioneTipologia',
'n.DescrizioneFormato', 'n.DescrizioneFormato',
DB::raw('COALESCE(o.totVen, 0) as totVen'), DB::raw('COALESCE(o.totVen, 0) as totVen'),
DB::raw('COALESCE(o.totFat, 0) as totFat'),
DB::raw('COALESCE(p.venduti3mesi, 0) as venduti3mesi'), DB::raw('COALESCE(p.venduti3mesi, 0) as venduti3mesi'),
DB::raw('COALESCE(t.fat3mesi, 0) as fat3mesi'),
DB::raw('COALESCE(t.fatrank3M, 0) as fatrank3M'),
DB::raw('COALESCE(p.rank3M, 0) as rank3M'), DB::raw('COALESCE(p.rank3M, 0) as rank3M'),
DB::raw('COALESCE(q.venduti6mesi, 0) as venduti6mesi'), DB::raw('COALESCE(q.venduti6mesi, 0) as venduti6mesi'),
DB::raw('COALESCE(q.rank6M, 0) as rank6M'), DB::raw('COALESCE(q.rank6M, 0) as rank6M'),
@@ -269,7 +284,7 @@ class ArticleController extends Controller
->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'); $join->on('T_WEB_Articoli.IdTipoFormato', '=', 'n.IdTipoFormato');
}) })
->leftJoin(DB::raw('(SELECT CodArticolo, SUM(TRY_CAST(Qta AS INT)) AS totVen 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'); $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 ->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
@@ -301,7 +316,7 @@ class ArticleController extends Controller
'f.DescrizioneStatoProdotto', 'f.DescrizioneStatoProdotto',
'i.DescrizioneTipologia', 'i.DescrizioneTipologia',
'n.DescrizioneFormato', 'n.DescrizioneFormato',
DB::raw('COALESCE(o.totVen, 0) as totVen'), DB::raw('COALESCE(o.totFat, 0) as totFat'),
DB::raw('COALESCE(p.venduti3mesi, 0) as venduti3mesi'), DB::raw('COALESCE(p.venduti3mesi, 0) as venduti3mesi'),
DB::raw('COALESCE(p.rank3M, 0) as rank3M'), DB::raw('COALESCE(p.rank3M, 0) as rank3M'),
DB::raw('COALESCE(q.venduti6mesi, 0) as venduti6mesi'), DB::raw('COALESCE(q.venduti6mesi, 0) as venduti6mesi'),
@@ -313,7 +328,7 @@ class ArticleController extends Controller
->where('DescrizioneStatoProdotto', 'In commercio') ->where('DescrizioneStatoProdotto', 'In commercio')
->where('DescrizioneTipologia', 'Libri') ->where('DescrizioneTipologia', 'Libri')
//->orderBy('rank1Y', 'asc') //->orderBy('rank1Y', 'asc')
->orderBy('totVen', 'desc') ->orderBy('totFat', 'desc')
->get(); ->get();
if ($articoliVenduti->isEmpty()) { if ($articoliVenduti->isEmpty()) {
@@ -498,9 +513,12 @@ class ArticleController extends Controller
'IdTipoFormato' => $articoloVenduto->IdTipoFormato, 'IdTipoFormato' => $articoloVenduto->IdTipoFormato,
'misure' => $articoloVenduto->misure, 'misure' => $articoloVenduto->misure,
'totVen' => $articoloVenduto->totVen, 'totVen' => $articoloVenduto->totVen,
'totFat' => $articoloVenduto->totFat,
'rank3M' => $articoloVenduto->rank3M, 'rank3M' => $articoloVenduto->rank3M,
'fatrank3M' => $articoloVenduto->fatrank3M,
'rank6M' => $articoloVenduto->rank6M, 'rank6M' => $articoloVenduto->rank6M,
'rank1Y' => $articoloVenduto->rank1Y, 'rank1Y' => $articoloVenduto->rank1Y,
'fatLast3M' => $articoloVenduto->fat3mesi,
'vLast3M' => $articoloVenduto->venduti3mesi, 'vLast3M' => $articoloVenduto->venduti3mesi,
'vLast6M' => $articoloVenduto->venduti6mesi, 'vLast6M' => $articoloVenduto->venduti6mesi,
'vLastY' => $articoloVenduto->venduti1anno, 'vLastY' => $articoloVenduto->venduti1anno,
@@ -511,7 +529,7 @@ class ArticleController extends Controller
// Imposta il contenuto della risposta come JSON // Imposta il contenuto della risposta come JSON
$response = new Response($result->toJson(), 200); $response = new Response($result->toJson(), 200);
$response->headers->set('Content-Type', 'application/json'); $response->headers->set('Content-Type', 'application/json');
$response->headers->set('Content-Disposition', 'attachment; filename="ranking_' . date('Y-m-d') . '.json"'); $response->headers->set('Content-Disposition', 'attachment; filename="ranking_' . $cosa . '_' . date('Y-m-d') . '.json"');
return $response; return $response;
} else { } else {

View File

@@ -81,17 +81,24 @@
<td>@if (isset($articolo->totVen)) <td>@if (isset($articolo->totVen))
<!--<a href="/apimacro/public/view-ordini-by-idarticolo/{{$articolo->IdArticolo}}" <a href="/apimacro/public/view-ordini-by-idarticolo/{{$articolo->IdArticolo}}"
target="_blank">{{ $articolo->totVen }}</a>-->
<a href="/apimacro/public/view-fatturati-by-idarticolo/{{$articolo->IdArticolo}}"
target="_blank">{{ $articolo->totVen }}</a> target="_blank">{{ $articolo->totVen }}</a>
@endif @endif
</td> </td>
<td>@if (isset($articolo->venduti3mesi)) <td>@if (isset($articolo->venduti3mesi))
{{ $articolo->venduti3mesi }} {{ $articolo->venduti3mesi }}
@endif @endif
</td> </td>
<td>@if (isset($articolo->totFat))
<a href="/apimacro/public/view-fatturati-by-idarticolo/{{$articolo->IdArticolo}}"
target="_blank">{{ $articolo->totFat }}</a>
@endif
</td>
<td>@if (isset($articolo->fat3mesi))
{{ $articolo->fat3mesi }}
@endif
</td>
<td>@if (isset($articolo->venduti6mesi)) <td>@if (isset($articolo->venduti6mesi))
{{ $articolo->venduti6mesi }} {{ $articolo->venduti6mesi }}
@endif @endif

View File

@@ -26,7 +26,8 @@
@if (isset($articolo)) @if (isset($articolo))
<tr> <tr>
<td>@if (isset($articolo->IdArticolo)) <td>@if (isset($articolo->IdArticolo))
<a href="/apimacro/public/view-info-articolo/{{$articolo->IdArticolo}}" target="_blank">{{ $articolo->IdArticolo }}</a> <a href="/apimacro/public/view-info-articolo/{{$articolo->IdArticolo}}"
target="_blank">{{ $articolo->IdArticolo }}</a>
@endif @endif
</td> </td>
<td>@if (isset($articolo->Titolo)) <td>@if (isset($articolo->Titolo))
@@ -37,12 +38,15 @@
</td> </td>
<td>@if (isset($articolo->totVen)) <td>@if (isset($articolo->totVen))
<!--<a href="/apimacro/public/view-ordini-by-idarticolo/{{$articolo->IdArticolo}}" <a href="/apimacro/public/view-ordini-by-idarticolo/{{$articolo->IdArticolo}}"
target="_blank">{{ $articolo->totVen }}</a>--> target="_blank">{{ $articolo->totVen }}</a>
<a href="/apimacro/public/view-fatturati-by-idarticolo/{{$articolo->IdArticolo}}" @endif
target="_blank">{{ $articolo->totVen }}</a> </td>
@endif <td>@if (isset($articolo->totFat))
</td> <a href="/apimacro/public/view-fatturati-by-idarticolo/{{$articolo->IdArticolo}}"
target="_blank">{{ $articolo->totFat }}</a>
@endif
</td>
</tr> </tr>
@endif @endif
@endforeach @endforeach