$sconto1 = $sconto2 = "" ;
$proGiaDefinita = 0 ;
$wEsa = " 1 " ;
/******************************************************************************
* Per questo coppia cliente/fornitore la programmazione è stata già definita?
* la var progGiaDefinita testimonia ciò.
*******************************************************************************/
$qprog = "select
*
from
progclienti PC
left join programmazione P on PC.idcliente = P.idcliente
and PC.Anno = P.Anno
where
PC.Anno = $anno and
PC.idcliente = $idcliente and
PC.idfornitore = $idforni" ;
list($nprog, $dprog) = $db->RecuperaDati($qprog) ;
if ($nprog > 0)
{
$proGiaDefinita = 1 ;
$wEsa = " 1 " ; // Si utilizza nella query. In questo caso vengono visualizzati
// anche i prodotti evetualmente esauriti
}
/*************************************************************************************
* In ogni caso vado a controllare il consegnato per questa coppia cliente fornitore
*************************************************************************************/
$numbott1 = 0 ;
$numbott2 = 0 ;
$qcons = "select
D.IdProdotto as IdProdotto,
case
when O.DataSpedFattura < '$dataperiodo'
then SUM(D.NumCartoni * D.ConfezioniDa)
end as NumBottP1,
case
when O.DataSpedFattura >= '$dataperiodo'
then SUM(D.NumCartoni * D.ConfezioniDa)
end as NumBottP2,
case
when O.DataSpedFattura < '$dataperiodo'
then SUM(SM.NumCartoni * SM.ConfezioniDa)
end as NumBottSMP1,
case
when O.DataSpedFattura >= '$dataperiodo'
then SUM(SM.NumCartoni * SM.ConfezioniDa)
end as NumBottSMP2
from
ordini O
inner join dettagli D on O.Idordini = D.Idordine and
O.Anno = D.Anno
left join scontomerce SM on SM.IdOrdine = O.IdOrdini and
SM.Anno = O.Anno
where
O.Anno = $anno and
O.idcliente = $idcliente and
O.idfornitore = $idforni
group by
D.IdProdotto" ;
list($ncons, $dcons) = $db->RecuperaDati($qcons) ;
for ($x=0; $x<$ncons; $x++)
{
$arrayCons[$dcons['IdProdotto'][$x]]['NumBottP1'] = $dcons['NumBottP1'][$x] ;
$arrayCons[$dcons['IdProdotto'][$x]]['NumBottP2'] = $dcons['NumBottP2'][$x] ;
$arrayCons[$dcons['IdProdotto'][$x]]['NumBottSMP1'] = $dcons['NumBottSMP1'][$x] ;
$arrayCons[$dcons['IdProdotto'][$x]]['NumBottSMP2'] = $dcons['NumBottSMP2'][$x] ;
}
/******************************************************************************************
* Dalla versione 3.0 la tabella dei prodotti è unica e non si tiene più conto degli anni
* NO, ritornano gli anni 18.10.22
* torna la UNION (14.11.22)
******************************************************************************************/
$qord = "
SELECT
T.*
FROM
(
SELECT
P.IdProdotti AS IdProdotto,
P.Nome AS NomeProdotto,
O.Anno,
SUM(D.NumCartoni * D.ConfezioniDa) AS NumBottiglie,
0 AS NumBottiglieSM
FROM
ordini O
INNER JOIN dettagli D ON D.IdOrdine = O.IdOrdini AND O.Anno = D.Anno
INNER JOIN Prodotti P ON D.IdProdotto = P.IdProdotti
WHERE
((O.Anno = $anno3 AND D.Anno = $anno3 AND P.Anno = $anno3) OR
(O.Anno = $anno2 AND D.Anno = $anno2 AND P.Anno = $anno2) OR
(O.Anno = $anno1 AND D.Anno = $anno1 AND P.Anno = $anno1)) AND
O.idcliente = $idcliente and
O.idfornitore = $idforni
GROUP BY
P.Nome,
O.Anno
UNION
SELECT
P.IdProdotti AS IdProdotto,
P.Nome AS NomeProdotto,
O.Anno,
0 AS NumBottiglie,
SUM(SM.NumCartoni * SM.ConfezioniDa) AS NumBottiglieSM
FROM
ordini O
LEFT JOIN scontomerce SM ON SM.IdOrdine = O.IdOrdini AND SM.Anno = O.Anno
inner join prodotti P on SM.idprodotto = P.idprodotti and SM.Anno = P.Anno
WHERE
((O.Anno = $anno3 AND SM.Anno = $anno3 AND P.Anno = $anno3) OR
(O.Anno = $anno2 AND SM.Anno = $anno2 AND P.Anno = $anno2) OR
(O.Anno = $anno1 AND SM.Anno = $anno1 AND P.Anno = $anno1)) AND
O.idcliente = $idcliente and
O.idfornitore = $idforni
GROUP BY
P.Nome,
O.Anno
) T
order BY
T.NomeProdotto ASC,
T.Anno ASC
" ;
list($nord, $dord) = $db->RecuperaDati($qord) ;
for ($j=0; $j<$nord; $j++)
{
$numBott = $dord['NumBottiglie'][$j] ;
$numBottSM = $dord['NumBottiglieSM'][$j] ;
$idProd = $dord['IdProdotto'][$j] ;
$nomeProd = $dord['NomeProdotto'][$j] ;
$annoOrd = $dord['Anno'][$j] ;
if ($numBott != 0)
{
$arrayDati[$idProd]['Nome'] = $nomeProd ;
$arrayDati[$idProd][$annoOrd]['Bott'] = $numBott ;
}
if ($numBottSM != 0)
{
$arrayDati[$idProd]['Nome'] = $nomeProd ;
$arrayDati[$idProd][$annoOrd]['BottSM'] = $numBottSM ;
}
}
$qpro = "select
P.IdProdotti,
CONCAT (P.Nome, ' ', P.Annata) as Nome
from
prodotti P
where
P.Anno = $anno and
P.fornitore = $idforni and
P.Attivo = 'Y' and
$wEsa
order by
P.nome ASC,
P.Annata ASC" ;
@reset($arrayDati) ;
list($nprod, $dbpro) = $db->RecuperaDati($qpro) ;
for ($i=0; $i<$nprod; $i++)
{
$iPrd = $dbpro['IdProdotti'][$i] ;
$nPrd = $dbpro['Nome'][$i] ;
$codpro[$i] = $iPrd ;
if ($arrCons[$iPrd]['NumBott'] > 0)
$dper1 = $arrCons[$iPrd]['NumBott'] ;
else
$dper1 = "" ;
if ($arrCons[$iPrd]['NumBottSM'] > 0)
$dper2 = $arrCons[$iPrd]['NumBottSM'] ;
else
$dper2 = "" ;
if ($proGiaDefinita)
{
if (($indice = array_search($iPrd, $dprog['IdProdotto'])) !== FALSE)
{
$dati1 = $dprog['Dato1'][$indice] ;
$dati2 = $dprog['Dato2'][$indice] ;
}
else
{
debug (0, "INDICE NULL") ;
$dati1 = 0 ;
$dati2 = 0 ;
}
}
else
{
$dati1 = 0 ;
$dati2 = 0 ;
}
/************************************
* controllo l'eventuale consegnato
************************************/
if (@array_key_exists($iPrd, $arrayCons))
{
$dper1 = $arrayCons[$iPrd]['NumBottP1'] ;
$dper2 = $arrayCons[$iPrd]['NumBottP2'] ;
$dper1sm = $arrayCons[$iPrd]['NumBottSMP1'] ;
$dper2sm = $arrayCons[$iPrd]['NumBottSMP2'] ;
if (($dper1sm > 0) or ($dper2sm > 0))
$sconto2 = "* Sconto Merce" ;
}
else
{
$dper1 = 0 ;
$dper2 = 0 ;
$dper1sm = 0 ;
$dper2sm = 0 ;
}
if (@array_key_exists($iPrd, $arrayDati))
{
$d3 = $arrayDati[$iPrd][$anno3]['Bott'] ;
$d2 = $arrayDati[$iPrd][$anno2]['Bott'] ;
$d1 = $arrayDati[$iPrd][$anno1]['Bott'] ;
$d3SM = $arrayDati[$iPrd][$anno3]['BottSM'] ;
$d2SM = $arrayDati[$iPrd][$anno2]['BottSM'] ;
$d1SM = $arrayDati[$iPrd][$anno1]['BottSM'] ;
if (($d1SM > 0) or ($d2SM > 0) or ($d3SM > 0))
$sconto1 = "* Sconto Merce" ;
}
else
{
$d3 = 0 ;
$d2 = 0 ;
$d1 = 0 ;
$d3SM = 0 ;
$d2SM = 0 ;
$d1SM = 0 ;
}
?>