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.
612 righe
26 KiB
612 righe
26 KiB
<? |
|
Class Programma { |
|
|
|
public $info; |
|
public $extraInfo; |
|
protected $db; |
|
|
|
private function __construct() |
|
{ |
|
|
|
} |
|
|
|
public static function tipologie() { |
|
return [ |
|
"LV" => "Lavori pubblici", |
|
"SF" => "Servizi e forniture" |
|
]; |
|
} |
|
|
|
public static function getStati() |
|
{ |
|
return jsonToArray(__DIR__ . "/stati.json"); |
|
} |
|
|
|
public static function init($codice) { |
|
if (!empty($codice) && !empty($_SESSION["utente"]) && !empty($_SESSION["ente"])) { |
|
global $pdo; |
|
$bind = [":codice" => $codice]; |
|
$sql = "SELECT * FROM b_programmi_art21 WHERE codice = :codice "; |
|
if (!$_SESSION["utente"]->fromHere()) { |
|
$sql .= " AND codice_ente = :codice_ente"; |
|
$bind[":codice_ente"] = $_SESSION["utente"]->codice_ente; |
|
} |
|
$programma = $pdo->go($sql, $bind)->fetch(PDO::FETCH_ASSOC); |
|
if (!empty($programma)) { |
|
$instance = new Programma(); |
|
$instance->info = $programma; |
|
$instance->extraInfo = json_decode($programma["extraInfo"],true); |
|
$instance->db = $pdo; |
|
return $instance; |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
public function getAnnualita() { |
|
$anni = []; |
|
if ($this->info["tipologia"] == "LV") { |
|
$cont = 3; |
|
} else if ($this->info["tipologia"] == "SF") { |
|
if ($this->info["anno"] < 2023) { |
|
$cont = 2; |
|
} else { |
|
$cont = 3; |
|
} |
|
} |
|
for ($i=0;$i<$cont;$i++) { |
|
$anni[] = (int) $this->info["anno"] + $i; |
|
} |
|
return $anni; |
|
} |
|
|
|
public function getInterventi() { |
|
$annualita = $this->getAnnualita(); |
|
if ($this->info["tipologia"] == "LV") { |
|
$tipologie = " AND b_progetti.tipologia = 'L'"; |
|
} else if ($this->info["tipologia"] == "SF") { |
|
$tipologie = " AND (b_progetti.tipologia = 'S' OR b_progetti.tipologia = 'F')"; |
|
} |
|
if (!empty($tipologie)) { |
|
$interventi = $this->db->go("SELECT b_progetti.* FROM b_progetti |
|
JOIN b_progetti_dotazione ON b_progetti.codice = b_progetti_dotazione.codice_progetto |
|
WHERE b_progetti.codice_ente = :ente AND b_progetti_dotazione.anno IN (".implode(",",$annualita).") |
|
{$tipologie} AND (b_progetti.cui IS NOT NULL OR b_progetti.cui <> '') |
|
AND (b_progetti.stato_programmazione IS NULL OR b_progetti.stato_programmazione = '') |
|
GROUP BY b_progetti.codice",[":ente"=>$this->info["codice_ente"]]); |
|
if ($interventi->rowCount() > 0) { |
|
return $interventi->fetchAll(PDO::FETCH_ASSOC); |
|
} |
|
} |
|
} |
|
|
|
public function getNonRiproposti() { |
|
$annoRiferimeto = $this->getAnnualita()[0]; |
|
if ($this->info["tipologia"] == "LV") { |
|
$tipologie = " AND b_progetti.tipologia = 'L'"; |
|
$annualita = [$annoRiferimeto-2,$annoRiferimeto-1]; |
|
} else if ($this->info["tipologia"] == "SF") { |
|
$tipologie = " AND (b_progetti.tipologia = 'S' OR b_progetti.tipologia = 'F')"; |
|
$annualita = [$annoRiferimeto-1]; |
|
} |
|
if (!empty($tipologie)) { |
|
$interventi = $this->db->go("SELECT b_progetti.* FROM b_progetti |
|
JOIN b_progetti_dotazione ON b_progetti.codice = b_progetti_dotazione.codice_progetto |
|
WHERE b_progetti.codice_ente = :ente AND b_progetti_dotazione.anno IN (".implode(",",$annualita).") |
|
{$tipologie} AND (b_progetti.cui IS NOT NULL OR b_progetti.cui <> '') |
|
AND b_progetti.stato_programmazione = \"A\" |
|
GROUP BY b_progetti.codice",[":ente"=>$this->info["codice_ente"]]); |
|
if ($interventi->rowCount() > 0) { |
|
return $interventi->fetchAll(PDO::FETCH_ASSOC); |
|
} |
|
} |
|
} |
|
|
|
public function getIncompiuti() { |
|
$annualita = $this->getAnnualita(); |
|
if ($this->info["tipologia"] == "LV") { |
|
$tipologie = " AND b_progetti.tipologia = 'L'"; |
|
} else if ($this->info["tipologia"] == "SF") { |
|
$tipologie = " AND (b_progetti.tipologia = 'S' OR b_progetti.tipologia = 'F')"; |
|
} |
|
if (!empty($tipologie)) { |
|
$interventi = $this->db->go("SELECT b_progetti.* FROM b_progetti |
|
JOIN b_progetti_dotazione ON b_progetti.codice = b_progetti_dotazione.codice_progetto |
|
WHERE b_progetti.codice_ente = :ente AND b_progetti_dotazione.anno IN (".implode(",",$annualita).") |
|
{$tipologie} AND (b_progetti.cui IS NOT NULL OR b_progetti.cui <> '') |
|
AND b_progetti.stato_programmazione = \"I\" |
|
GROUP BY b_progetti.codice",[":ente"=>$this->info["codice_ente"]]); |
|
if ($interventi->rowCount() > 0) { |
|
return $interventi->fetchAll(PDO::FETCH_ASSOC); |
|
} |
|
} |
|
} |
|
|
|
public static function getTipologiaRisorse() { |
|
return[ |
|
"01"=>"risorse derivanti da entrate aventi destinazione vincolata per legge", |
|
"02"=>"risorse derivanti da entrate acquisite mediante contrazione di mutuo", |
|
"PR"=>"risorse acquisite mediante apporti di capitali privati", |
|
"05"=>"stanziamenti di bilancio", |
|
"04"=>"finanziamenti acquisibili ai sensi dell'articolo 3 del decreto-legge 31 ottobre 1990, n. 310, convertito con modificazioni dalla legge 22 dicembre 1990, n. 403", |
|
"03"=>"risorse derivanti da trasferimento di immobili", |
|
"99"=>"altra tipologia" |
|
]; |
|
} |
|
|
|
public function getQuadroRisorse() { |
|
$annualita = $this->getAnnualita(); |
|
$interventi = $this->getInterventi(); |
|
$return = []; |
|
if (!empty($interventi)) { |
|
$tipologiaRisorse = self::getTipologiaRisorse(); |
|
$tipologieDotazione = progetto::getOpzioni("programmazione","tipologiaCoperturaPubblica"); |
|
$query = $this->db->prepare("SELECT * FROM b_progetti_dotazione WHERE codice_progetto = :progetto AND anno = :anno"); |
|
$cont = 0; |
|
foreach($annualita AS $anno) { |
|
$query->bindValue(":anno",$anno); |
|
foreach($interventi AS $intervento) { |
|
$query->bindValue(":progetto",$intervento["codice"]); |
|
$query->execute(); |
|
if ($query->rowCount() > 0) { |
|
while($dotazione = $query->fetch(PDO::FETCH_ASSOC)) { |
|
if (!isset($return[$cont])) { |
|
$keys = array_keys($tipologiaRisorse); |
|
foreach($keys AS $key) { |
|
$return[$cont][$key] = 0; |
|
} |
|
} |
|
$key = null; |
|
$infoDotazione = json_decode($dotazione["extraInfo"],true); |
|
if ($dotazione["privata"] == "S") { |
|
$key = "PR"; |
|
} else { |
|
$key = $tipologieDotazione[$infoDotazione["tipologiaPubblica"]]["riferimento"] ?? null; |
|
} |
|
if (!empty($key)) { |
|
$return[$cont][$key] += $dotazione["importo"]; |
|
} |
|
} |
|
} |
|
} |
|
$cont++; |
|
} |
|
} |
|
return $return; |
|
} |
|
|
|
public function getTitolo() { |
|
$primo_anno = $this->info["anno"]; |
|
if ($this->info["tipologia"] == "LV") { |
|
$ultimo_anno = $primo_anno + 2; |
|
return __("Programma triennale dei lavori pubblici") . " {$primo_anno} / {$ultimo_anno}"; |
|
} else if ($this->info["tipologia"] == "SF") { |
|
if ($this->info["anno"] < 2023) { |
|
$title = "biennale"; |
|
$ultimo_anno = $primo_anno + 1; |
|
} else { |
|
$title = "triennale"; |
|
$ultimo_anno = $primo_anno + 2; |
|
} |
|
return __("Programma {$title} dei servizi e delle forniture") . " {$primo_anno} / {$ultimo_anno}"; |
|
} |
|
} |
|
|
|
public function updateStato() { |
|
$tipologieSchede = self::getSchedeProgramma($this->info["tipologia"]); |
|
$status = 0; |
|
if (!empty($tipologieSchede)) { |
|
$idSchede = array_keys($tipologieSchede); |
|
$schedeGenerate = 0; |
|
$stato_cpn = $this->info["stato_cpn"] ?? 0; |
|
foreach($idSchede AS $idScheda) { |
|
$idEditor = $this->getIdEditorScheda($idScheda); |
|
if (!empty($idEditor)) { |
|
$editor = new editorManager("programmazione-art21",$idEditor); |
|
if (!empty($editor->versions(0))) { |
|
$schedeGenerate++; |
|
} |
|
} |
|
} |
|
if ($schedeGenerate > 0) { |
|
$status = 1; |
|
if (count($tipologieSchede) == $schedeGenerate) { |
|
$status = 10; |
|
if (!empty($stato_cpn)) { |
|
if ($stato_cpn == 100) { |
|
$status = 100; |
|
} else { |
|
$status = 25; |
|
} |
|
} |
|
} else { |
|
if (!empty($stato_cpn)) { |
|
if ($stato_cpn == 100) { |
|
$status = 30; |
|
} else { |
|
$status = 20; |
|
} |
|
} |
|
} |
|
} else { |
|
if (!empty($stato_cpn)) { |
|
if ($stato_cpn == 100) { |
|
$status = 50; |
|
} else { |
|
$status = 5; |
|
} |
|
} |
|
} |
|
if (isset($_SESSION["ente"])) { |
|
$_SESSION["ente"]->manageUpdates("programmazione",$this->info["codice"],$this); |
|
} |
|
$this->db->go("UPDATE b_programmi_art21 SET stato = :stato WHERE codice = :codice",[":stato"=>$status,":codice"=>$this->info["codice"]]); |
|
scriviLog("b_programmi_art21","UPDATE",$this->db->getSQL(),$this->info["codice"]); |
|
} |
|
} |
|
|
|
public function getIdEditorScheda($idScheda) { |
|
return "programma-{$this->info["codice"]}-{$idScheda}"; |
|
} |
|
|
|
public static function getSchedeProgramma($tipologia) { |
|
return jsonToArray(__DIR__ . "/schedePDF.json")[$tipologia]; |
|
} |
|
|
|
public static function getDatiRichiesti($tipologia) { |
|
$datiRichiesti = [ |
|
"avvio-procedura-affidamento", |
|
"lotto-funzionale", |
|
"priorita", |
|
"nuts" |
|
]; |
|
if ($tipologia == "L") { |
|
$datiRichiesti[] = "localizzazione-istat"; |
|
$datiRichiesti[] = "conformita-urbanistica"; |
|
$datiRichiesti[] = "livello-progettazione"; |
|
$datiRichiesti[] = "lavoro-complesso"; |
|
$datiRichiesti[] = "tipologia-lavori"; |
|
$datiRichiesti[] = "finalita"; |
|
$datiRichiesti[] = "settore-cup"; |
|
$datiRichiesti[] = "scadenza-mutuo"; |
|
$datiRichiesti[] = "vincoli-ambientali"; |
|
} else { |
|
$datiRichiesti[] = "acquisto-ricompreso"; |
|
$datiRichiesti[] = "cui-ricompreso"; |
|
$datiRichiesti[] = "durata-contratto"; |
|
$datiRichiesti[] = "nuovo-affidamento-contratto"; |
|
} |
|
$datiRichiesti[] = "ausa-cuc"; |
|
$datiRichiesti[] = "denominazione-cuc"; |
|
$datiRichiesti[] = "intervento-variato"; |
|
return $datiRichiesti; |
|
} |
|
|
|
public static function getDatiIncompiuta($tipologia) { |
|
$datiRichiesti = [ |
|
"determinazioni-incompiuta", |
|
"ambito-interesse", |
|
"anno-ultimo-qa", |
|
"importo-complessivo-ultimo-qa", |
|
"causa-incompiuta", |
|
]; |
|
if ($tipologia == "L") { |
|
$datiRichiesti[] = "importo-lavori-ultimo-qa"; |
|
$datiRichiesti[] = "oneri-ultimazione"; |
|
$datiRichiesti[] = "ultimo-sal"; |
|
$datiRichiesti[] = "precentuale-sal"; |
|
$datiRichiesti[] = "fruibilita-parziale"; |
|
$datiRichiesti[] = "stato-realizzazione"; |
|
$datiRichiesti[] = "utilizzo-ridimensionato"; |
|
$datiRichiesti[] = "destinazione-uso"; |
|
$datiRichiesti[] = "concessione-corrispettivo"; |
|
$datiRichiesti[] = "vendita-demolizione"; |
|
$datiRichiesti[] = "oneri-riqualifica"; |
|
$datiRichiesti[] = "parte-infrastruttura-rete"; |
|
} |
|
return $datiRichiesti; |
|
} |
|
|
|
public static function getDatiNonRiproposta($tipologia) { |
|
return [ |
|
"motivazione-non-riproposto", |
|
]; |
|
} |
|
|
|
public function getDotazioneCPN($codice_progetto) { |
|
$vociFinanziamento = [ |
|
"01"=>"risorseVincolatePerLegge", |
|
"02"=>"risorseMutuo", |
|
"PR"=>"risorsePrivati", |
|
"05"=>"risorseBilancio", |
|
"04"=>"risorseArt3_", |
|
"03"=>"risorseImmobili", |
|
"99"=>"risorseAltro" |
|
]; |
|
$tipologieDotazione = progetto::getOpzioni("programmazione","tipologiaCoperturaPubblica"); |
|
$dotazioni = progetto::getDotazioneProgetto($codice_progetto); |
|
$annualita = $this->getAnnualita(); |
|
$annualita[] = end($annualita) + 1; |
|
$return = []; |
|
if ($this->info["tipologia"] == "LV") { |
|
$return["immobili"] = []; |
|
} |
|
foreach($dotazioni AS $dotazione) { |
|
$arrayPos = array_search($dotazione["anno"],$annualita); |
|
if ($arrayPos !== false) { |
|
$arrayPos++; |
|
if ($arrayPos >= count($annualita)) { |
|
$arrayPos = "Succ"; |
|
} |
|
if (($this->info["tipologia"] == "LV") && !empty($dotazione["codice_immobile"])) { |
|
if (empty($return["immobili"][$dotazione["codice_immobile"]])) { |
|
$immobile = $this->db->go("SELECT * FROM b_progetti_immobili WHERE codice = :codice",[":codice"=>$dotazione["codice_immobile"]])->fetch(PDO::FETCH_ASSOC); |
|
if (!empty($immobile)) { |
|
$infoImmobile = json_decode($immobile["extraInfo"],true); |
|
$tmp = [ |
|
"cui" => $immobile["codice_univoco"], |
|
"istat" => str_pad(($infoImmobile["regione"] ?? ""). ($infoImmobile["comune"]??""),9,"0",STR_PAD_LEFT), |
|
"nuts" => $infoImmobile["nuts"] ?? "", |
|
"descrizione" => $immobile["descrizione"], |
|
"trasferimentoTitoloCorrispettivo", |
|
"immobileDisponibile", |
|
"alienati", |
|
"inclusoProgrammaDismissione", |
|
"tipoDisponibilita", |
|
"valoreStimato1" => 0, |
|
"valoreStimato2" => 0, |
|
"valoreStimato3" => 0, |
|
"valoreStimatoSucc" => 0 |
|
]; |
|
if ($tmp["istat"] == "000000000") { |
|
unset($tmp["istat"]); |
|
} |
|
$return["immobili"][$immobile["codice"]] = $tmp; |
|
} |
|
} |
|
if (!empty($return["immobili"][$dotazione["codice_immobile"]])) { |
|
$return["immobili"][$dotazione["codice_immobile"]]["valoreStimato".$arrayPos] += $dotazione["importo"]; |
|
} |
|
} |
|
$key = null; |
|
$infoDotazione = json_decode($dotazione["extraInfo"],true); |
|
if ($dotazione["privata"] == "S") { |
|
$key = "PR"; |
|
} else { |
|
$key = $tipologieDotazione[$infoDotazione["tipologiaPubblica"]]["riferimento"] ?? null; |
|
} |
|
if (!empty($key)) { |
|
$returnIndex = $vociFinanziamento[$key]; |
|
$returnIndex .= $arrayPos; |
|
if (!isset($return[$returnIndex])) { |
|
$return[$returnIndex] = 0; |
|
} |
|
$return[$returnIndex] += $dotazione["importo"]; |
|
} |
|
} |
|
} |
|
return $return; |
|
} |
|
|
|
public function getSFCPN() { |
|
$return = []; |
|
$acquisti = []; |
|
$interventi = $this->getInterventi(); |
|
$annualita = $this->getAnnualita(); |
|
if (!empty($interventi)) { |
|
foreach($interventi AS $intervento) { |
|
$istat = json_decode(quickInfoProgetto($intervento["codice"],"localizzazione-istat"),true); |
|
$tmp = [ |
|
"cui" => $intervento["cui"], |
|
"settore" => $intervento["tipologia"], |
|
"codiceInterno" => $intervento["codice"], |
|
"descrizione" => $intervento["oggetto"], |
|
"anno" => (array_search(quickInfoProgetto($intervento["codice"],"avvio-procedura-affidamento"),$annualita) ?? 0) + 1, |
|
"esenteCup" => (empty($intervento["cup"])) ? "1" : "2", |
|
"cup" => $intervento["cup"], |
|
"acquistoRicompreso" => quickInfoProgetto($intervento["codice"],"acquisto-ricompreso"), |
|
"cuiCollegato" => quickInfoProgetto($intervento["codice"],"cui-ricompreso"), |
|
"cpv" => (progetto::getCategorieMerceologicheProgetto($intervento["codice"])[0] ?? ""), |
|
"istat" => str_pad(($istat["regione"]??"").($istat["comune"] ?? ""),9,"0",STR_PAD_LEFT), |
|
"nuts" => quickInfoProgetto($intervento["codice"],"nuts"), |
|
"priorita" => quickInfoProgetto($intervento["codice"],"priorita"), |
|
"lottoFunzionale" => quickInfoProgetto($intervento["codice"],"lotto-funzionale"), |
|
"durataInMesi" => (int) quickInfoProgetto($intervento["codice"],"durata-contratto"), |
|
"nuovoAffidamento" => quickInfoProgetto($intervento["codice"],"nuovo-affidamento-contratto"), |
|
]; |
|
if ($tmp["istat"] == "000000000") { |
|
unset($tmp["istat"]); |
|
} |
|
$dotazione = $this->getDotazioneCPN($intervento["codice"]); |
|
$tmp += $dotazione; |
|
$importoDotazione = quickDotazioneProgetto($intervento["codice"],1,"S",true); |
|
$tipologiaPrivata = $importoDotazione["tipologie"] ?? ""; |
|
if (!empty($tipologiaPrivata)) { |
|
$tipologiaPrivata = array_unique($tipologiaPrivata); |
|
$tmp["tipologiaCapitalePrivato"] = $tipologiaPrivata[0]; |
|
} |
|
$tmp["codiceSoggettoDelegato"] = quickInfoProgetto($intervento["codice"],"ausa-cuc"); |
|
$tmp["delega"] = (empty($tmp["codiceSoggettoDelegato"])) ? "2" : "1"; |
|
$tmp["nomeSoggettoDelegato"] = quickInfoProgetto($intervento["codice"],"denominazione-cuc"); |
|
$tmp["variato"] = quickInfoProgetto($intervento["codice"],"intervento-variato"); |
|
$rup = quickResponsabileProgetto($intervento["codice"]); |
|
$tmp["rup"] = [ |
|
"cognome" => $rup["cognome"] ?? "", |
|
"nome" => $rup["nome"] ?? "", |
|
"cfPiva" => $rup["codice_fiscale"] ?? "", |
|
"indirizzo" => $rup["indirizzo"] ?? "", |
|
"civico" => $rup["civico"] ?? "", |
|
"provincia" => $rup["provincia"] ?? "", |
|
"cap" => "", |
|
// "luogoIstat" => $rup["comune"] ?? "" |
|
]; |
|
$acquisti[] = $tmp; |
|
} |
|
} |
|
$return["acquisti"] = $acquisti; |
|
return $return; |
|
} |
|
|
|
public function getLVCPN() { |
|
$return = []; |
|
$interventi = []; |
|
$tmpInterventi = $this->getInterventi(); |
|
$annualita = $this->getAnnualita(); |
|
if (!empty($tmpInterventi)) { |
|
foreach($tmpInterventi AS $intervento) { |
|
$istat = json_decode(quickInfoProgetto($intervento["codice"],"localizzazione-istat"),true); |
|
$settore = json_decode(quickInfoProgetto($intervento["codice"],"settore-cup"),true); |
|
$tmp = [ |
|
"cui" => $intervento["cui"], |
|
"codiceInterno" => $intervento["codice"], |
|
"descrizione" => $intervento["oggetto"], |
|
"anno" => (array_search(quickInfoProgetto($intervento["codice"],"avvio-procedura-affidamento"),$annualita) ?? 0) + 1, |
|
"esenteCup" => (empty($intervento["cup"])) ? "1" : "2", |
|
"cup" => $intervento["cup"], |
|
"acquistoRicompreso" => quickInfoProgetto($intervento["codice"],"acquisto-ricompreso"), |
|
"cuiCollegato" => quickInfoProgetto($intervento["codice"],"cui-ricompreso"), |
|
"cpv" => (progetto::getCategorieMerceologicheProgetto($intervento["codice"])[0] ?? ""), |
|
"istat" => str_pad(($istat["regione"]??"").($istat["comune"] ?? ""),9,"0",STR_PAD_LEFT), |
|
"nuts" => quickInfoProgetto($intervento["codice"],"nuts"), |
|
"priorita" => quickInfoProgetto($intervento["codice"],"priorita"), |
|
"lottoFunzionale" => quickInfoProgetto($intervento["codice"],"lotto-funzionale"), |
|
"lavoroComplesso" => quickInfoProgetto($intervento["codice"],"lavoro-complesso"), |
|
"tipologia" => quickInfoProgetto($intervento["codice"],"tipologia-lavori"), |
|
"categoria" => ($settore["settore"] ?? "").".".($settore["sottosettore"] ?? "") , |
|
"scadenzaFinanziamento" => quickInfoProgetto($intervento["codice"],"scadenza-mutuo"), |
|
"finalita" => quickInfoProgetto($intervento["codice"],"finalita"), |
|
"conformitaUrbanistica" => quickInfoProgetto($intervento["codice"],"conformita-urbanistica"), |
|
"conformitaAmbientale" => quickInfoProgetto($intervento["codice"],"vincoli-ambientali"), |
|
"statoProgettazione" => quickInfoProgetto($intervento["codice"],"livello-progettazione"), |
|
]; |
|
if ($tmp["istat"] == "000000000") { |
|
unset($tmp["istat"]); |
|
} |
|
$dotazione = $this->getDotazioneCPN($intervento["codice"]); |
|
$tmp += $dotazione; |
|
$importoDotazione = quickDotazioneProgetto($intervento["codice"],1,"S",true); |
|
$tipologiaPrivata = $importoDotazione["tipologie"] ?? ""; |
|
if (!empty($tipologiaPrivata)) { |
|
$tipologiaPrivata = array_unique($tipologiaPrivata); |
|
$tmp["tipologiaCapitalePrivato"] = $tipologiaPrivata[0]; |
|
} |
|
$tmp["codiceSoggettoDelegato"] = quickInfoProgetto($intervento["codice"],"ausa-cuc"); |
|
$tmp["delega"] = (empty($tmp["codiceSoggettoDelegato"])) ? "2" : "1"; |
|
$tmp["nomeSoggettoDelegato"] = quickInfoProgetto($intervento["codice"],"denominazione-cuc"); |
|
$tmp["variato"] = quickInfoProgetto($intervento["codice"],"intervento-variato"); |
|
$rup = quickResponsabileProgetto($intervento["codice"]); |
|
$tmp["rup"] = [ |
|
"cognome" => $rup["cognome"] ?? "", |
|
"nome" => $rup["nome"] ?? "", |
|
"cfPiva" => $rup["codice_fiscale"] ?? "", |
|
"indirizzo" => $rup["indirizzo"] ?? "", |
|
"civico" => $rup["civico"] ?? "", |
|
"provincia" => $rup["provincia"] ?? "", |
|
"cap" => "", |
|
// "luogoIstat" => $rup["comune"] ?? "" |
|
]; |
|
$interventi[] = $tmp; |
|
} |
|
} |
|
$return["interventi"] = $interventi; |
|
return $return; |
|
} |
|
|
|
public function getNonRipropostiCPN() { |
|
$nonRiproposti = []; |
|
$interventi = $this->getNonRiproposti(); |
|
if (!empty($interventi)) { |
|
foreach($interventi AS $intervento) { |
|
$tmp = [ |
|
"cui" => $intervento["cui"], |
|
"cup" => $intervento["cup"], |
|
"descrizione" => $intervento["oggetto"], |
|
"importo" => $intervento["importo"], |
|
"priorita" => quickInfoProgetto($intervento["codice"],"priorita"), |
|
"motivo" => quickInfoProgetto($intervento["codice"],"motivazione-non-riproposto") |
|
]; |
|
if (empty($tmp["cup"])) { |
|
unset($tmp["cup"]); |
|
} |
|
$nonRiproposti[] = $tmp; |
|
} |
|
} |
|
return $nonRiproposti; |
|
} |
|
|
|
public function getIncompiutiCPN() { |
|
$incompiuti = []; |
|
$interventi = $this->getIncompiuti(); |
|
if (!empty($interventi)) { |
|
foreach($interventi AS $intervento) { |
|
$istat = json_decode(quickInfoProgetto($intervento["codice"],"localizzazione-istat"),true); |
|
$tmp = [ |
|
"cup" => $intervento["cup"], |
|
"descrizione" => $intervento["oggetto"], |
|
"determinazioneAmministrazione" => quickInfoProgetto($intervento["codice"],"determinazioni-incompiuta"), |
|
"ambito" => quickInfoProgetto($intervento["codice"],"ambito-interesse"), |
|
"anno" => quickInfoProgetto($intervento["codice"],"anno-ultimo-qa"), |
|
"importoIntervento" => quickInfoProgetto($intervento["codice"],"importo-complessivo-ultimo-qa"), |
|
"importoLavori" => quickInfoProgetto($intervento["codice"],"importo-lavori-ultimo-qa"), |
|
"oneri" => quickInfoProgetto($intervento["codice"],"oneri-ultimazione"), |
|
"importoAvanzamento" => quickInfoProgetto($intervento["codice"],"ultimo-sal"), |
|
"percentualeAvanzamento"=>quickInfoProgetto($intervento["codice"],"precentuale-sal"), |
|
"causa"=>quickInfoProgetto($intervento["codice"],"causa-incompiuta"), |
|
"stato"=>quickInfoProgetto($intervento["codice"],"stato-realizzazione"), |
|
"infrastruttura"=>quickInfoProgetto($intervento["codice"],"parte-infrastruttura-rete"), |
|
"fruibile"=>quickInfoProgetto($intervento["codice"],"fruibilita-parziale"), |
|
"ridimensionato"=>quickInfoProgetto($intervento["codice"],"utilizzo-ridimensionato"), |
|
"destinazioneUso"=>quickInfoProgetto($intervento["codice"],"destinazione-uso"), |
|
"cessione"=>quickInfoProgetto($intervento["codice"],"concessione-corrispettivo"), |
|
"oneriSito"=>quickInfoProgetto($intervento["codice"],"oneri-riqualifica"), |
|
"altriDati" => [ |
|
"istat" => str_pad(($istat["regione"]??"").($istat["comune"] ?? ""),9,"0",STR_PAD_LEFT), |
|
"nuts" => quickInfoProgetto($intervento["codice"],"nuts"), |
|
"tipologiaIntervento" => quickInfoProgetto($intervento["codice"],"tipologia-lavori"), |
|
"categoriaIntervento" => ($settore["settore"] ?? "").".".($settore["sottosettore"] ?? "") |
|
] |
|
]; |
|
$incompiuti[] = $tmp; |
|
} |
|
} |
|
return $incompiuti; |
|
} |
|
|
|
public function getRequestCPN() { |
|
$return = []; |
|
$cfEnte = Ente::getInfoFromID($this->info["codice_ente"])[0]["cf"]; |
|
$return["id"] = $this->info["tipologia"] . $cfEnte . $this->info["anno"] . "001"; |
|
$return["codiceFiscaleSA"] = $cfEnte; |
|
$return["ufficio"] = ""; |
|
$return["anno"] = $this->info["anno"]; |
|
$return["descrizione"] = $this->getTitolo(); |
|
$return["numeroApprovazione"] = $this->extraInfo["numeroApprovazione"]; |
|
$return["dataApprovazione"] = $this->extraInfo["dataApprovazione"]; |
|
$return["dataPubblicazioneApprovazione"] = $this->extraInfo["dataPubblicazioneApprovazione"]; |
|
$return["titoloAttoApprovazione"] = $this->extraInfo["titoloAttoApprovazione"]; |
|
$return["urlAttoApprovazione"] = $this->extraInfo["urlAttoApprovazione"]; |
|
$return["idRicevuto"] = $this->extraInfo["idRicevuto"] ?? null; |
|
$return["referente"] = [ |
|
"cognome" => $this->extraInfo["cognome"], |
|
"nome" => $this->extraInfo["nome"], |
|
"cfPiva" => $this->extraInfo["cf_referente"], |
|
"indirizzo" => $this->extraInfo["indirizzo"], |
|
"civico" => $this->extraInfo["civico"], |
|
"provincia" => $this->extraInfo["provincia"], |
|
"cap" => "", |
|
"luogoIstat" => $this->extraInfo["comune"] |
|
]; |
|
if ($this->info["tipologia"] == "SF") { |
|
$return += $this->getSFCPN(); |
|
} else { |
|
$return += $this->getLVCPN(); |
|
} |
|
$return[($this->info["tipologia"] == "SF") ? "acquistiNonRiproposti" : "interventiNonRiproposti"] = $this->getNonRipropostiCPN(); |
|
if (!empty($this->info["invio_cpn"])) { |
|
$return["idRicevuto"] = $this->info["invio_cpn"]; |
|
} |
|
return $return; |
|
} |
|
|
|
} |
|
?>
|