Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
425 righe
18 KiB
425 righe
18 KiB
<? |
|
if (!empty($gara)) { |
|
$vocabolario["link"] = $_SESSION["config"]["link_sito"]."/gare/dettaglio.php?codice=".$gara->info["codice"]; |
|
$vocabolario["gestore"] = Ente::getInfoFromID($_SESSION["ente"]->codice)[0] ?? []; |
|
$vocabolario["beneficiario"] = Ente::getInfoFromID($record["codice_ente"])[0] ?? []; |
|
$vocabolario["gara"] = $gara->info; |
|
$vocabolario["gara"]["procedura"] = $gara->getProcedura()["descrizioni"][0]["titolo"]; |
|
$extraInfo = json_decode($gara->info["extraInfo"],true); |
|
if (!empty($extraInfo)) { |
|
$vocabolario["gara"] += $extraInfo; |
|
} |
|
if (!empty($gara->lotto)) { |
|
$vocabolario["lotto"] = $gara->lotto; |
|
$vocabolario["lotto"]["criterio"] = getCriteri()[$gara->lotto["criterio"]]["titolo"]; |
|
$extraInfo = json_decode($gara->lotto["extraInfo"],true); |
|
if (!empty($extraInfo)) { |
|
$vocabolario["lotto"] += $extraInfo; |
|
} |
|
} |
|
$vocabolario["fase"] = $gara->round; |
|
$extraInfo = json_decode($gara->round["extraInfo"],true); |
|
if (!empty($extraInfo)) { |
|
$vocabolario["fase"] += $extraInfo; |
|
} |
|
if (!empty($seduta)) { |
|
$vocabolario["data_seduta"] = mysql2completedate($seduta["data"]); |
|
} |
|
$incaricati = $gara->getManagerIncarichi()->getIncaricati(); |
|
if (!empty($incaricati)) { |
|
foreach($incaricati AS $incaricato) { |
|
if ($incaricato["ruolo"] == 14) { // 14: ruolo RUP |
|
$vocabolario["gara"]["rup"] = "{$incaricato["extraInfo"]["cognome"]} {$incaricato["extraInfo"]["nome"]}"; |
|
} |
|
} |
|
} |
|
$managerSeggio = $gara->getManagerCommissione("seggio"); |
|
$vocabolario["gara"]["numero_atto_seggio"] = $managerSeggio->getInfo()["numero_atto"]; |
|
$vocabolario["gara"]["data_atto_seggio"] = $managerSeggio->getInfo()["data_atto"]; |
|
foreach(cpvManager::getInfo($gara->getCategorieMerceologiche()) AS $cpv) { |
|
$vocabolario["gara"]["cpv"] = $cpv["codice_completo"] . " - " . $cpv["IT"]; |
|
} |
|
$seggio = $managerSeggio->getCommissari(); |
|
$firme = ""; |
|
if (!empty($seggio)) { |
|
ob_start(); |
|
foreach($seggio AS $c) { |
|
echo "<strong>{$c["ruolo"]}</strong> - {$c["cognome"]} {$c["nome"]}<br>"; |
|
} |
|
$firme = ob_get_clean(); |
|
} |
|
$vocabolario["seggio"] = $firme; |
|
|
|
$managerCommissione = $gara->getManagerCommissione("commissione"); |
|
$vocabolario["gara"]["numero_atto_commissione"] = $managerCommissione->getInfo()["numero_atto"]; |
|
$vocabolario["gara"]["data_atto_commissione"] = $managerCommissione->getInfo()["data_atto"]; |
|
$seggio = $managerCommissione->getCommissari(); |
|
$firme = ""; |
|
if (!empty($commissione)) { |
|
ob_start(); |
|
foreach($commissione AS $c) { |
|
echo "<strong>{$c["ruolo"]}</strong> - {$c["cognome"]} {$c["nome"]}<br>"; |
|
} |
|
$firme = ob_get_clean(); |
|
} |
|
$vocabolario["commissione"] = $firme; |
|
|
|
$lotti = $gara->getLotti(); |
|
ob_start(); |
|
echo "<table style='width:100%'> |
|
<thead> |
|
<tr> |
|
<th>Numero</th> |
|
<th>CIG</th> |
|
<th>CUP</th> |
|
<th>Oggetto</th> |
|
<th>".__(getTipologieAffidamento(false, $gara->info["timestamp_creazione"])[$gara->info["tipologia"]]["titolo"])."</th> |
|
<th>Costo manodopera</th> |
|
<th>Oneri non soggetti a ribasso</th> |
|
</tr> |
|
</thead><tbody>"; |
|
|
|
$totaleImportoBase = 0; |
|
$totaleManodopera = 0; |
|
$totaleOneri = 0; |
|
foreach($lotti AS $lottoElenco) { |
|
$totaleImportoBase += $lottoElenco["importoBase"]; |
|
$totaleManodopera += $lottoElenco["importoManodopera"]; |
|
$totaleOneri += $lottoElenco["oneriNoRibasso"]; |
|
$lottoElenco = gara::formatLotto($lottoElenco); |
|
echo "<tr> |
|
<td>{$lottoElenco["numero"]}</td> |
|
<td>{$lottoElenco["cig"]}</td> |
|
<td>{$lottoElenco["cup"]}</td> |
|
<td>{$lottoElenco["oggetto"]}</td> |
|
<td style=\"text-align:right\">{$lottoElenco["importoBase"]}</td> |
|
<td style=\"text-align:right\">{$lottoElenco["importoManodopera"]}</td> |
|
<td style=\"text-align:right\">{$lottoElenco["oneriNoRibasso"]}</td> |
|
</tr>"; |
|
} |
|
echo "</tbody></table>"; |
|
$vocabolario["elencolotti"] = ob_get_clean(); |
|
$vocabolario["gara"]["totaleImportoBase"] = number_format($totaleImportoBase,2,",","."); |
|
$vocabolario["gara"]["totaleManodopera"] = number_format($totaleImportoBase,2,",","."); |
|
$vocabolario["gara"]["totaleOneri"] = number_format($totaleOneri,2,",","."); |
|
|
|
$criteri = $gara->getMacroCriteri(); |
|
if (!empty($criteri)) { |
|
ob_start(); |
|
echo "<table style='width:100%'> |
|
<thead> |
|
<tr> |
|
<th>Criterio</th> |
|
<th>Peso</th> |
|
<th colspan=\"2\">Sottocriteri</th> |
|
</tr> |
|
</thead><tbody>"; |
|
$totaleTecnico = 0; |
|
$totaleEconomico = 0; |
|
foreach($criteri AS $criterio) { |
|
$sub = $gara->getSubCriteri($criterio["codice"]); |
|
$rowspan = ""; |
|
if (count($sub) > 1) { |
|
$rowspan="rowspan=\"".count($sub)."\""; |
|
} |
|
echo "<tr> |
|
<td {$rowspan}>{$criterio["denominazione"]}<br><small>{$criterio["descrizione"]}</small></td> |
|
<td {$rowspan}>{$criterio["peso"]}</td> |
|
"; |
|
$first = true; |
|
if (!empty($sub)) { |
|
foreach($sub AS $s) { |
|
if (!$first) { |
|
echo "</tr><tr>"; |
|
} else { |
|
$first = false; |
|
} |
|
echo " |
|
<td>{$s["denominazione"]}<br><small>{$criterio["descrizione"]}</small></td> |
|
<td>{$s["peso"]}</td>"; |
|
} |
|
} else { |
|
echo "<td colspan=\"2\"></td>"; |
|
} |
|
echo "</tr>"; |
|
if ($criterio["economico"] == "S") { |
|
$totaleEconomico += $criterio["peso"]; |
|
} else { |
|
$totaleTecnico += $criterio["peso"]; |
|
} |
|
} |
|
echo "</tbody></table>"; |
|
|
|
$vocabolario["gara"]["tabellaCriteri"] = ob_get_clean(); |
|
$vocabolario["gara"]["punteggioMassimoTecnico"] = $totaleTecnico; |
|
$vocabolario["gara"]["punteggioMassimoEconomico"] = $totaleEconomico; |
|
} |
|
|
|
if (!empty($gara->lotto)) { |
|
$lottoFormatted = gara::formatLotto($gara->lotto); |
|
$importoAggiudicazione = $lottoFormatted["importoAggiudicazione"]; |
|
$importoNetto = $importoAggiudicazione - $lottoFormatted["importoNonRibassabile"]; |
|
$vocabolario["lotto"]["ribassoAggiudicazione"] = $lottoFormatted["importoRibassabile"] != 0 ? (100 - ($importoAggiudicazione * 100 / $lottoFormatted["importoRibassabile"])) : null; |
|
$vocabolario["lotto"]["riepilogoAnomalia"] = ""; |
|
if (!empty($vocabolario["lotto"]["info-anomalia-{$gara->round["codice"]}"])) { |
|
$infoAnomalia = json_decode($vocabolario["lotto"]["info-anomalia-{$gara->round["codice"]}"],true); |
|
$vocabolario["lotto"]["riepilogoAnomalia"] = $infoAnomalia["riepilogo"] ?? ""; |
|
} |
|
$bind = [":codice_lotto"=>$gara->lotto["codice"],":codice"=>$round["codice"]]; |
|
$sql = "SELECT b_gare_buste.codice_partecipante,b_gare_buste.codice_richiesta,b_gare_buste.timestamp_decrypt, b_gare_richieste.busta,r_partecipanti_gare.codice_fiscale,r_partecipanti_gare.ragione_sociale |
|
FROM b_gare_buste JOIN b_gare_richieste ON b_gare_buste.codice_richiesta = b_gare_richieste.codice |
|
JOIN r_partecipanti_gare ON b_gare_buste.codice_partecipante = r_partecipanti_gare.codice |
|
WHERE b_gare_buste.open = 'S' |
|
AND r_partecipanti_gare.codice_lotto = :codice_lotto |
|
AND r_partecipanti_gare.codice_round = :codice "; |
|
if (!empty($dataInizio)) { |
|
$tipologie = [""]; |
|
$sql .= " AND b_gare_buste.timestamp_decrypt BETWEEN :inizio AND :fine "; |
|
$bind[":inizio"] = $dataInizio; |
|
$bind[":fine"] = $dataFine; |
|
} else { |
|
$tipologie = ["amministrativa","tecnica","economica"]; |
|
$sql .= " AND b_gare_richieste.busta = :busta "; |
|
} |
|
$sql .= " ORDER BY b_gare_buste.timestamp_decrypt "; |
|
foreach($tipologie AS $tipologia) { |
|
if (empty($dataInizio)) { |
|
$bind[":busta"] = $tipologia; |
|
} |
|
$aperture = $pdo->go($sql,$bind)->fetchAll(PDO::FETCH_ASSOC); |
|
$timing = ""; |
|
if (!empty($aperture)) { |
|
$tipiBuste = gara::tipologieBusta(); |
|
ob_start(); |
|
echo "<table style='width:100%'>"; |
|
foreach($aperture AS $apertura) { |
|
echo "<tr><td>" . mysql2completedate($apertura["timestamp_decrypt"]) . "</td><td>" . __($tipiBuste[$apertura["busta"]]["titolo"]) . "</td><td>" . $apertura["codice_fiscale"] . "</td><td>" . $apertura["ragione_sociale"] . "</td></tr>"; |
|
} |
|
echo "</table>"; |
|
$timing = ob_get_clean(); |
|
} |
|
if (!empty($tipologia)) { |
|
$tipologia = "_{$tipologia}"; |
|
} |
|
$vocabolario["timing_apertura{$tipologia}"] = $timing; |
|
} |
|
|
|
$partecipanti = $gara->getPartecipanti(); |
|
$vocabolario["totalePartecipanti"] = count($partecipanti); |
|
$esclusi = ""; |
|
$aggiudicatari = ""; |
|
$tablePartecipanti = ""; |
|
$headElenco = "<table style='width:100%'><thead><tr><th>#</th><th>ID Univoco</th><th>Codice Fiscale</th><th>Denominazione</th></tr></thead><tbody>"; |
|
$footElenco = "</tbody></table>"; |
|
$i = 1; |
|
foreach($partecipanti AS $partecipante) { |
|
$row = "<tr><td>{$i}</td><td>" . $partecipante["codice"] . "</td><td>" . $partecipante["codice_fiscale"] . "</td><td>" . $partecipante["ragione_sociale"] . "<td></tr>"; |
|
if ($partecipante["escluso"] == "S") { |
|
$esclusi .= $row; |
|
} |
|
if ($partecipante["aggiudicatario"] == "S") { |
|
$aggiudicatari .= $row; |
|
} |
|
$tablePartecipanti .= $row; |
|
$i ++; |
|
} |
|
$vocabolario["partecipanti"] = $headElenco . $tablePartecipanti . $footElenco; |
|
$vocabolario["aggiudicatario"] = $headElenco . $aggiudicatari . $footElenco; |
|
$vocabolario["esclusi"] = $headElenco . $esclusi . $footElenco; |
|
|
|
|
|
$invitati = $gara->getInvitati(); |
|
$invitatiManuali = $gara->getInvitatiManuali(); |
|
$vocabolario["totaleInvitati"] = count($invitati) + count($invitatiManuali); |
|
ob_start(); |
|
echo "<table style='width:100%'> |
|
<thead> |
|
<tr> |
|
<th>#</th> |
|
<th>Codice Fiscale</th> |
|
<th>Denominazione</th> |
|
</tr> |
|
</thead> |
|
<tbody>"; |
|
$i = 1; |
|
if (!empty($invitati)) { |
|
foreach($invitati AS $invitato) { |
|
|
|
$oeInfo = oeManager::getOE($invitato['codice_operatore']); |
|
|
|
$row = "<tr> |
|
<td>{$i}</td> |
|
<td>" . $oeInfo["codice_fiscale_impresa"] . "</td> |
|
<td>" . $oeInfo["ragione_sociale"] . "<td> |
|
</tr>"; |
|
|
|
echo $row; |
|
$i ++; |
|
} |
|
} |
|
if (!empty($invitatiManuali)) { |
|
foreach($invitatiManuali AS $invitato) { |
|
|
|
$row = "<tr> |
|
<td>{$i}</td> |
|
<td>" . $oeInfo["codice_fiscale_operatore"] . "</td> |
|
<td>" . $oeInfo["denominazione"] . "<td> |
|
</tr>"; |
|
|
|
echo $row; |
|
$i ++; |
|
} |
|
} |
|
echo "</tbody></table>"; |
|
$vocabolario["invitati"] = ob_get_clean(); |
|
|
|
$graduatoria = $gara->getImportoAggiudicazionePartecipanti(true,false); |
|
$graduatoriaNominativi = $graduatoriaRibassi = $graduatoriaImporti = $graduatoriaTotale = $graduatoriaTecnica = "<table style='width:100%'><thead><tr><th>#</th><th>ID Univoco</th><th>Codice Fiscale</th><th>Denominazione</th>"; |
|
$graduatoriaImporti .= "<th>Importo offerto</th>"; |
|
$graduatoriaRibassi .= "<th>Ribasso offerto</th>"; |
|
|
|
if ($gara->soloEconomica()) { |
|
$graduatoriaTotale .= "<th>Punteggio</th>"; |
|
} else { |
|
$graduatoriaTotale .= "<th>Punteggio Tecnico</th><th>Punteggio Economico</th><th>Totale</th>"; |
|
$graduatoriaTecnica .= "<th>Punteggio Tecnico</th>"; |
|
} |
|
$graduatoriaTotale .= "</tr></thead><tbody>"; |
|
$graduatoriaTecnica .= "</tr></thead><tbody>"; |
|
$i = 1; |
|
foreach($graduatoria AS $partecipante) { |
|
$row = $rowNominativi = $rowRibassi = $rowImporti = $rowTecnica = "<tr><td>{$i}</td><td>" . $partecipante["codice"] . "</td><td>" . $partecipante["codice_fiscale"] . "</td><td>" . $partecipante["ragione_sociale"] . "</td>"; |
|
$rowImporti .= "<td style='text-align:center'>€ " . ((!empty($partecipante["totaleEconomico"])) ? number_format(($partecipante["offerta"] ?? 0),2,",",".") : "") . "</td>"; |
|
|
|
$ribasso = 100 - ((($partecipante["offerta"] ?? 0) * 100) / $lottoElenco["importoRibassabile"]); |
|
$rowRibassi .= "<td style='text-align:center'>" . ((!empty($partecipante["totaleEconomico"])) ? number_format($ribasso,9,",",".") : "") . "%</td>"; |
|
if ($gara->soloEconomica()) { |
|
$row .= "<td style='text-align:center'>{$partecipante["totale"]}</td>"; |
|
} else { |
|
$row .= "<td style='text-align:center'>" . ((!empty($partecipante["totaleTecnico"])) ? $partecipante["totaleTecnico"] : __("Escluso")) . "</td>"; |
|
$row .= "<td style='text-align:center'>" . ((!empty($partecipante["totaleEconomico"])) ? $partecipante["totaleEconomico"] : __("Escluso")) . "</td>"; |
|
$row .= "<td style='text-align:center'>" . ((!empty($partecipante["totale"])) ? $partecipante["totale"] : __("Escluso")) . "</td>"; |
|
$rowTecnica .= "<td style='text-align:center'>" . ((!empty($partecipante["totaleTecnico"])) ? $partecipante["totaleTecnico"] : __("Escluso")) . "</td>"; |
|
} |
|
$rowNominativi .= "</tr>"; |
|
$rowRibassi .= "</tr>"; |
|
$rowImporti .= "</tr>"; |
|
$rowTecnica .= "</tr>"; |
|
$row .= "</tr>"; |
|
$i ++; |
|
|
|
$graduatoriaNominativi .= $rowNominativi; |
|
$graduatoriaRibassi .= $rowRibassi; |
|
$graduatoriaImporti .= $rowImporti; |
|
$graduatoriaTecnica .= $rowTecnica; |
|
$graduatoriaTotale .= $row; |
|
} |
|
$graduatoriaImporti .= "</table>"; |
|
$graduatoriaTotale .= "</table>"; |
|
$graduatoriaTecnica .= "</table>"; |
|
$vocabolario["graduatoria"] = $graduatoriaTotale; |
|
$vocabolario["graduatoria-tecnica"] = $graduatoriaTecnica; |
|
$vocabolario["graduatoria-importi"] = $graduatoriaImporti; |
|
$vocabolario["graduatoria-nominativi"] = $graduatoriaNominativi; |
|
$vocabolario["graduatoria-ribassi"] = $graduatoriaRibassi; |
|
$manager = $gara->getManagerRichieste(); |
|
$esito_controllo_documentazione = ""; |
|
ob_start(); |
|
$richieste =$manager->getRichieste(["attivo"=>"S"]); |
|
if (!empty($richieste)) { |
|
echo "Sono state attivate le seguenti procedure di soccorso istruttorio:<br><br> |
|
<table style='width:100%'> |
|
<tr> |
|
<th>Operatore Economico</th> |
|
<th>Richiesta</th> |
|
<th>Termine di presentazione</th> |
|
</tr>"; |
|
foreach($richieste AS $richiesta) { |
|
$ooee = $manager->getOE($richiesta["codice"]); |
|
?> |
|
<tr> |
|
<td> |
|
<? |
|
foreach($ooee AS $oe) { |
|
foreach($partecipanti AS $partecipante) { |
|
if ($partecipante["codice_operatore"] == $oe["codice_operatore"]) { |
|
echo $partecipante["codice_fiscale"] . " " . $partecipante["ragione_sociale"] . "<br>"; |
|
} |
|
} |
|
} ?> |
|
</td> |
|
<td><?= $richiesta["titolo"] ?></td> |
|
<td><?= mysql2datetime($richiesta["scadenza"]) ?></td> |
|
</tr> |
|
<? |
|
} |
|
echo "</table>"; |
|
} |
|
$esito_controllo_documentazione .= ob_get_clean() . "<br><br>Dal controllo effettuato dalla Commissione di gara risulta che la documentazione è conforme e le ditte concorrenti di cui sopra vengono ammesse alla fase successiva di gara"; |
|
if (!empty($esclusi)) { |
|
$esito_controllo_documentazione .= ", tranne i seguenti:<br><table style='width:100%'>" . $esclusi . "</table>"; |
|
} else { |
|
$esito_controllo_documentazione .= "."; |
|
} |
|
$vocabolario["esito_controllo_documentazione"] = $esito_controllo_documentazione; |
|
} |
|
|
|
$esito_richieste_oscuramento = ""; |
|
$richieste = $gara->getRichieste(); |
|
$segreti = []; |
|
if (!empty($richieste) && !empty($partecipanti)) { |
|
foreach($richieste AS $richiesta) { |
|
foreach($partecipanti AS $partecipante) { |
|
$busta = $gara->getBusta($partecipante["codice"],$richiesta["codice"]); |
|
$segreto = null; |
|
if (!empty($busta)) { |
|
$emendamento = $gara->getEmendamento($partecipante["codice"],$richiesta["codice"]); |
|
if (!empty($emendamento) && $emendamento["accettata"] == "S") { |
|
if ($emendamento["segreta"] == "S") { |
|
$segreto = $gara->getBustaSecretata($partecipante["codice"],$richiesta["codice"],"emendamento"); |
|
} |
|
} else if ($busta["segreta"] == "S") { |
|
$segreto = $gara->getBustaSecretata($partecipante["codice"],$richiesta["codice"],"busta"); |
|
} |
|
if (!empty($segreto)) { |
|
$segreti[] = ["codice_fiscale"=>$partecipante["codice_fiscale"],"ragione_sociale"=>$partecipante["ragione_sociale"],"richiesta"=>$richiesta["titolo"],"accettata"=>$segreto["accettata"],"motivazione"=>$segreto["motivazione"]]; |
|
} |
|
} |
|
} |
|
} |
|
if (!empty($segreti)) { |
|
ob_start(); |
|
?> |
|
Sono state valutate le seguenti richieste di oscuramento dei documenti: |
|
<table> |
|
<thead> |
|
<tr> |
|
<th>Richiesta</th> |
|
<th>Operatore economico</th> |
|
<th>Esito</th> |
|
</tr> |
|
</thead> |
|
<tbody> |
|
<? foreach($segreti AS $segreto) { ?> |
|
<tr> |
|
<td><?= $segreto["richiesta"] ?></td> |
|
<td><?= $segreto["codice_fiscale"] ?> <?= $segreto["ragione_sociale"] ?></td> |
|
<td> |
|
<? if ($segreto["accettata"] == "S") { ?> |
|
Richiesta accettata |
|
<? } else { ?> |
|
Richiesta rifiutata per le seguenti motivazioni:<br> |
|
<?= $segreto["motivazione"] ?> |
|
<? } ?> |
|
</td> |
|
</tr> |
|
<? } ?> |
|
</tbody> |
|
</table> |
|
<? |
|
$esito_richieste_oscuramento = ob_get_clean(); |
|
} |
|
$vocabolario["esito_richieste_oscuramento"] = $esito_richieste_oscuramento; |
|
} |
|
} |
|
?>
|