gestione gare pubbliche
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.
 
 
 
 
 

86 righe
3.6 KiB

<?
if (isset($this) && is_a($this,"gara") && isset($settings)) {
$partecipanti = $this->getPartecipantiForAnomalia();
usort($partecipanti,"sortPartecipantiTotale");
if (!empty($partecipanti)) {
$maxTecnico = 0;
$maxEconomico = 0;
$criteri = $this->getMacroCriteri();
foreach($criteri AS $criterio) {
if ($criterio["economico"] == "S") {
$maxEconomico += $criterio["peso"];
} else {
$maxTecnico += $criterio["peso"];
}
}
$sogliaTecnica = $maxTecnico * 0.8;
$sogliaEconomica = $maxEconomico * 0.8;
if ($arrotondamento) {
$sogliaTecnica = number_format($sogliaTecnica,$decimali);
$sogliaEconomica = number_format($sogliaEconomica,$decimali);
} else {
$sogliaTecnica = truncate($sogliaTecnica,$decimali);
$sogliaEconomica = truncate($sogliaEconomica,$decimali);
}
$anomali = [];
$punteggiReali = $this->db->prepare("SELECT SUM(valore) AS totale
FROM b_gare_punteggi_partecipanti JOIN b_gare_criteri_valutazione ON b_gare_punteggi_partecipanti.codice_criterio = b_gare_criteri_valutazione.codice WHERE
b_gare_punteggi_partecipanti.codice_partecipante = :partecipante AND b_gare_criteri_valutazione.economico = :economico
GROUP BY b_gare_punteggi_partecipanti.codice_partecipante");
foreach($partecipanti AS $partecipante) {
$totaleTecnico = $partecipante["totaleTecnico"];
$totaleEconomico = $partecipante["totaleEconomico"];
$punteggiReali->bindValue(":partecipante",$partecipante["codice"]);
$punteggiReali->bindValue(":economico","N");
$punteggiReali->execute();
if ($punteggiReali->rowCount() > 0) {
$totaleTecnico = $punteggiReali->fetch(PDO::FETCH_COLUMN);
}
$punteggiReali->bindValue(":economico","S");
$punteggiReali->execute();
if ($punteggiReali->rowCount() > 0) {
$totaleEconomico = $punteggiReali->fetch(PDO::FETCH_COLUMN);
}
if(!$soloSoglia) {
if ($arrotondamento) {
$totaleTecnico = number_format($totaleTecnico,$decimali);
$totaleEconomico = number_format($totaleEconomico,$decimali);
} else {
$totaleTecnico = truncate($totaleTecnico,$decimali);
$totaleEconomico = truncate($totaleEconomico,$decimali);
}
}
if ($totaleTecnico > $sogliaTecnica && $totaleEconomico > $sogliaEconomica) {
$anomali[] = $partecipante["codice"];
}
}
$extraInfo = ["set-anomalia-{$this->round["codice"]}"=>json_encode($settings,JSON_PRETTY_PRINT)];
if (!empty($anomali)) {
$infoAnomalia = [];
$infoAnomalia["riepilogo"] = "Anomalia calcolata ai sensi dell'art. 97 c. 3 del D.lgs 50/2016";
$extraInfo["info-anomalia-{$this->round["codice"]}"] = json_encode($infoAnomalia,JSON_PRETTY_PRINT);
reset($partecipanti);
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "r_partecipanti_gare";
$salva->operazione = "UPDATE";
foreach($partecipanti AS $partecipante) {
if (in_array($partecipante["codice"],$anomali)) {
$partecipante["anomalia"] = "S";
$partecipante["a_facoltativa"] = "N";
$partecipante["motivazione_anomalia"] = "Calcolo automatico";
$salva->oggetto = $partecipante;
$salva->save();
}
}
}
$errors = "";
} else {
$errors = __("Nessun partecipante ammesso");
}
}
?>