$giorno $mesevis
per Tutti i Fornitori" ; } else { $titolo = "Confronto Anno ". sprintf("%s", ($anno - 1)) . " - Anno $anno al $giorno $mesevis
per il/i Fornitore/i $in_nomi_for" ; } } elseif ($htipo == 2 ) { list($id_cliente, $nome_cliente) = explode("^", stripslashes($cliente)) ; $where_cli = "O.idcliente = $id_cliente" ; if ($id_for == 0) // TUTTI { $titolo = "Confronto Anno ". sprintf("%s", ($anno - 1)) . " - Anno $anno al $giorno $mesevis
per Tutti i Fornitori
verso il Cliente $nome_cliente" ; } else { $titolo = "Confronto Anno ". sprintf("%s", ($anno - 1)) . " - Anno $anno al $giorno $mesevis
per il/i Fornitore/i $in_nomi_for
verso il Cliente $nome_cliente" ; } } /***************************************************************************** * Devo calcolare qui quanti sono ifornitori ******************************************************************************/ for ($an = ($anno - 1) ; $an <= $anno; $an ++) { /************************************** * Mi ricavo gli id di tutti i fornitori ***************************************/ $qfor = " select F.* from fornitori F where $where_for order by nome " ; $db->query($qfor) ; while ($db->next_record()) $fn[$db->f('IdFornitori')] = $db->f('Nome') ; } asort($fn) ; /********************************************************************************************* * cerco di eseguire la query una sola volta e di ricavarmi tutti i valori che mi servono * A questo punto ho gią l'array dei fornitori *********************************************************************************************/ unset($valori) ; for ($an = ($anno - 1) ; $an <= $anno; $an ++) { $dataordine = MySqlDate("$gime/$an") ; $dbt = new FC_SQL ; $dbord = new FC_SQL ; @reset($fn) ; foreach($fn as $id_fn => $nome_fn) { $valori[$nome_fn]['ID_FOR'] = $id_fn ; $valori[$nome_fn]['NUMORD'][$an] = 0 ; $valori[$nome_fn]['VENDUTO'][$an] = 0 ; $valori[$nome_fn]['FATT'][$an] = 0 ; $totforn = 0 ; $totfatt = 0 ; $qord = " select O.*, (TO_DAYS('$dataordine') - TO_DAYS(O.DataSpedFattura)) as DIFFGG from ordini O where O.Anno = $an and O.idfornitore = $id_fn and O.dataordine <= '$dataordine' and $where_cli " ; debug (0, $qord) ; $dbord->query($qord) ; while ($dbord->next_record()) { $valori[$nome_fn]['NUMORD'][$an] += 1 ; $totordine = 0 ; $impfatt = $dbord->f("ImportoFattura") ; $datasf = $dbord->f("DataSpedFattura") ; $diffgg = $dbord->f("DIFFGG") ; $sco1 = $dbord->f("Sconto1") ; $sco2 = $dbord->f("Sconto2") ; $sco3 = $dbord->f("Sconto3") ; $idordine = $dbord->f("IdOrdini") ; $importoNC = $dbord->f("ImportoNC") ; if ($importoNC > 0) $valNC = ($importoNC / 1.2) ; else $valNC = 0 ; if ($id_fn != $idsarzi) $query = " select * from dettagli D, prodotti P where P.Anno = $an and D.Anno = $an and D.idordine = $idordine and P.idprodotti = D.idprodotto " ; else $query = "select * from dettagli_$an, sarzi_$an where dettagli_$an.idordine = $idordine and dettagli_$an.idprodotto = CONCAT('SA', idprodotti)" ; debug (0, $query) ; $dbt->query($query) ; while ($dbt->next_record()) { if ($dbt->f('PrezzoForzato') > 0) $prezzoDaConsiderare = $dbt->f('PrezzoForzato') ; else $prezzoDaConsiderare = $dbt->f('PrezzoUnitario') ; $impparz = $dbt->f("NumCartoni") * $dbt->f("ConfezioniDa") * $prezzoDaConsiderare ; if ($dbt->f("ScontoPrd") != "") $impparz = CalcolaScontoProdotto($impparz, $dbt->f("ScontoPrd")) ; $totordine += $impparz ; } $sconto1 = ($totordine * $sco1 / 100) ; $ammpro1 = $totordine - $sconto1 ; $sconto2 = ($ammpro1 * $sco2 / 100) ; $ammpro2 = $ammpro1 - $sconto2 - $valNC; $sconto = $sconto1 + $sconto2 ; $totordine = $totordine - $sconto - $valNC; $totforn += $totordine ; if ($impfatt > 0 and $diffgg >= 0 and $datasf != "0000-00-00") $totfatt += $totordine ; } $valori[$nome_fn]['VENDUTO'][$an] += $totforn ; if ($totfatt > 0) $valori[$nome_fn]['FATT'][$an] += $totfatt ; } } @reset($fn) ; @reset($valori) ; $i = 0 ; $str = "" ; foreach($valori as $nome_fn => $arr_valori) { $id_for = $arr_valori['ID_FOR'] ; $annop = $anno - 1 ; $diffno = ($arr_valori['NUMORD'][$anno] - $arr_valori['NUMORD'][$annop]) ; if ($diffno != 0 and $arr_valori['NUMORD'][$annop] != 0) $diffnoper = @nfp(($diffno / $arr_valori['NUMORD'][$annop]) * 100) ; else $diffnoper = @nfp(0) ; $diffve = ($arr_valori['VENDUTO'][$anno] - $arr_valori['VENDUTO'][$annop]) ; if ($diffve != 0 and $arr_valori['VENDUTO'][$annop] != 0) $diffveper = @nfp(($diffve / $arr_valori['VENDUTO'][$annop]) * 100) ; else $diffveper = @nfp(0) ; $difffa = ($arr_valori['FATT'][$anno] - $arr_valori['FATT'][$annop]) ; if ($difffa != 0 and $arr_valori['FATT'][$annop] != 0) $difffaper = @nfp(($difffa / $arr_valori['FATT'][$annop]) * 100) ; else $difffaper = @nfp(0) ; if ($diffno < 0) $classno = "meno" ; elseif ($diffno > 0) { $classno = "piu" ; if ($diffnoper == 0) $diffnoper = "100,00" ; } else $classno = "" ; if ($diffve < 0) $classve = "meno" ; elseif ($diffve > 0) { $classve = "piu" ; if ($diffveper == 0) $diffveper = "100,00" ; } else $classve = "" ; if ($difffa < 0 ) $classfa = "meno" ; elseif ($difffa > 0) { $classfa = "piu" ; if ($difffaper == 0) $difffaper = "100,00" ; } else $classfa = "" ; /*************************************************************************************** * Visualizzo solo gli elementi che hanno un numero di ordini dell'anno precedente o * dell'anno in corso > 0 ****************************************************************************************/ if ($arr_valori['NUMORD'][$annop] > 0 or $arr_valori['NUMORD'][$anno] > 0) { $str .= "" . htmlspecialchars($nome_fn) . "" . $arr_valori['NUMORD'][$annop] . "" . $arr_valori['NUMORD'][$anno] . "" . $diffno . " (" . $diffnoper . "%)" . "" . nfp($arr_valori['VENDUTO'][$annop]) . "" . nfp($arr_valori['VENDUTO'][$anno]) . "" . nfp($diffve) . " (" . nfp($diffveper) . "%)" . "" . nfp($arr_valori['FATT'][$annop]) . "" . nfp($arr_valori['FATT'][$anno]) . "" . nfp($difffa) . " (" . nfp($difffaper) . "%)" . "" ; } } $str .= "" ; $annop = ($anno - 1) ; $header = "NOME FORNITORE,NUMERO ORDINI,#cspan,#cspan,VENDUTO,#cspan,#cspan,FATTURATO,#cspan,#cspan" ; $attachHeader = "#rspan,$annop,$anno,Differenza,$annop,$anno,Differenza,$annop,$anno,Differenza" ; $strSort = "str,int,int,na,euro,euro,na,euro,euro,na" ; $iniWP = "25,5,5,10,6,6,15,6,6,15" ; $setColType = "ro,ro,ro,ro,ro,ro,ro,ro,ro,ro,ro,ro,ro,ro,ro,ro" ; $setColAlign = "center,center,center,center,center,center,center,center,center,center" ; ?> <? echo TITLE ?>