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"); } } ?>