getLotti($codice_lotto)[0] ?? NULL; if (!empty($lotto["codice"]) && !empty($lotto["cig"])) { $lotto["dati"] = json_decode(($lotto["dati"]),true); $datiSimog = $this->getDati(); $simogMethod = "loaderAppalto"; if ($operation == "get") { $schede = []; $appaltoType = anac::getAppaloType($lotto); if (!empty($appaltoType)) { $tmp = $this->getSchede($lotto["codice"]); $tipologie = $this->listSchede($lotto["codice"]); $idSchedaAppalto = "appalto-" . strtolower($appaltoType); if (!empty($tmp)) { foreach($tmp AS $scheda) { if ($scheda["stato"] === "1") { if (!isset($schede[$scheda["tipologia"]])) { $schede[$scheda["tipologia"]] = []; } $schede[$scheda["tipologia"]][] = $scheda; } } } if (!empty($schede)) { $datiComuni = $this->getSchede($lotto["codice"],"comuni")[0] ?? ""; if (!empty($datiComuni) && ($datiComuni["stato"] === "1" || $datiComuni["stato"] === "3" || $datiComuni["stato"] === "4")) { $schedeEstratte = array_keys($schede); foreach($schedeEstratte AS $idScheda) { if (isset($tipologie[$idScheda]["derived"])) { $idPadre = $tipologie[$idScheda]["derived"]; if ($idPadre == "#APPALTOTYPE#") { $idPadre = $idSchedaAppalto; } if (empty($schede[$idPadre])) { $schedaPadre = $this->getSchede($lotto["codice"],$idPadre)[0] ?? false; if (!empty($schedaPadre)) { if ($schedaPadre >= 1) { $schede[$idPadre] = [$schedaPadre]; } else { unset($schede[$idScheda]); } } } } } $return = []; $return["method"] = $simogMethod; $return["data"] = []; $data = ["Schede"=>[]]; $cui = $this->getLastCUI($lotto["codice"],true); $fields = $this->getFieldsScheda("comuni"); $array = []; foreach($fields AS $idCampo => $info) { if ($info["insert"]) { if(isset($datiComuni["json"][$idCampo])) $array[$idCampo] = $datiComuni["json"][$idCampo]; } } $beneficiario = Ente::getInfoFromID($this->info["codice_ente"])[0]; $gestore = Ente::getInfoFromID($this->info["codice_gestore"])[0]; $tipologieBeneficiario = Ente::tipologieEnte("codice",$beneficiario["tipologia_ente"])[0] ?? false; $tipologieGestore = Ente::tipologieEnte("codice",$gestore["tipologia_ente"])[0] ?? false; $array["CIG"] = $lotto["cig"]; $array["TIPO_CONTRATTO"] = $lotto["dati"]["tipo_contratto"]; $array["FLAG_ENTE_SPECIALE"] = ($tipologieBeneficiario["speciale"] == "S") ? "S" : "O"; $array["ID_CATEG_SA"] = $tipologieBeneficiario["simog"]; $array["CF_AMM"] = $beneficiario["cf"]; $array["DEN_AMM"] = $beneficiario["denominazione"]; $array["CF_SA"] = $beneficiario["cf"]; $array["DEN_SA"] = $beneficiario["denominazione"]; $array["CODICE_CC"] = $beneficiario["cf"]; $array["DENOM_CC"] = $beneficiario["denominazione"]; $array["FLAG_SA_AGENTE"] = (!empty($datiComuni["cf_amm_agente_gara"])) ? "S" : "N"; $array["FLAG_ACC_QUADRO"] = (!empty($datiComuni["cig_acc_quadro"])) ? "S" : "N"; $array["DURATA_ACCQUADRO_CONVENZIONE"] = (!empty($datiComuni["durata_accquadro_convenzione_gara"])) ? $datiComuni["durata_accquadro_convenzione_gara"] : ""; $array["MODO_REALIZZAZIONE"] = $datiSimog["modo_realizzazione"] ?? ""; $array["FLAG_ESCLUSO"] = $lotto["dati"]["flag_escluso"]; $array["ID_ESCLUSIONE"] = $lotto["dati"]["id_esclusione"]; $array["ID_SCHEDA_LOCALE"] = $datiComuni["id_locale"]; $data["Schede"]["DatiComuni"] = $array; $pubblicazione = []; if (!empty($datiSimog["DATA_GUCE"])) { $pubblicazione["DATA_GUCE"] = $datiSimog["DATA_GUCE"]; } if (!empty($datiSimog["DATA_GURI"])) { $pubblicazione["DATA_GURI"] = $datiSimog["DATA_GURI"]; } if (!empty($datiSimog["DATA_ALBO"])) { $pubblicazione["DATA_ALBO"] = $datiSimog["DATA_ALBO"]; } if (!empty($datiSimog["DATA_BORE"])) { $pubblicazione["DATA_BORE"] = $datiSimog["DATA_BORE"]; } if (!empty($datiSimog["QUOTIDIANI_NAZ"])) { $pubblicazione["QUOTIDIANI_NAZ"] = $datiSimog["QUOTIDIANI_NAZ"]; } if (!empty($datiSimog["QUOTIDIANI_REG"])) { $pubblicazione["QUOTIDIANI_REG"] = $datiSimog["QUOTIDIANI_REG"]; } if (!empty($datiSimog["PERIODICI"])) { $pubblicazione["PERIODICI"] = $datiSimog["PERIODICI"]; } $pubblicazione["PROFILO_COMMITTENTE"] = "N"; if (!empty($datiSimog["LINK_SITO"])) { $pubblicazione["PROFILO_COMMITTENTE"] = "S"; } $pubblicazione["SITO_MINISTERO_INF_TRASP"] = "N"; if (!empty($datiSimog["SITO_MINISTERO_INF_TRASP"])) { $pubblicazione["SITO_MINISTERO_INF_TRASP"] = $datiSimog["SITO_MINISTERO_INF_TRASP"]; } $pubblicazione["SITO_OSSERVATORIO_CP"] = "N"; if (!empty($datiSimog["SITO_OSSERVATORIO_CP"])) { $pubblicazione["SITO_OSSERVATORIO_CP"] = $datiSimog["SITO_OSSERVATORIO_CP"]; } if (!empty($anac->info["codice"])) { $pubblicazione["ID_SCHEDA_LOCALE"] = $anac->info["codice"]; } if (!empty($datiSimog["NUMERO_GUCE"])) { $pubblicazione["NUMERO_GUCE"] = $datiSimog["NUMERO_GUCE"]; } if (!empty($datiSimog["NUMERO_GURI"])) { $pubblicazione["NUMERO_GURI"] = $datiSimog["NUMERO_GURI"]; } if (!empty($datiSimog["NUMERO_BORE"])) { $pubblicazione["NUMERO_BORE"] = $datiSimog["NUMERO_BORE"]; } if (!empty($datiSimog["LINK_SITO"])) { $pubblicazione["LINK_SITO"] = $datiSimog["LINK_SITO"]; } if (!empty($datiSimog["FLAG_BENICULT"])) { $pubblicazione["FLAG_BENICULT"] = $datiSimog["FLAG_BENICULT"]; } if (!empty($datiSimog["FLAG_SOSPESO"])) { $pubblicazione["FLAG_SOSPESO"] = $datiSimog["FLAG_SOSPESO"]; } $pubblicazione = convertDate_SIMOG($pubblicazione); $data["Schede"]["Pubblicazione"] = $pubblicazione; $data["Schede"]["SchedaCompleta"] = ["CUI"=>(!empty($cui)) ? $cui : ""]; $listaSchedeComplete = []; $listaSchedeComplete["#APPALTOTYPE#"] = $idSchedaAppalto; $listaSchedeComplete["DatiInizio"] = "inizio"; $listaSchedeComplete["DatiStipula"] = "stipula"; $listaSchedeComplete["DatiAvanzamenti"] = "avanzamenti"; $listaSchedeComplete["DatiConclusione"] = "conclusione"; $listaSchedeComplete["DatiCollaudo"] = "collaudo"; $listaSchedeComplete["DatiRitardi"] = "ritardi"; $listaSchedeComplete["DatiAccordi"] = "accordi"; $listaSchedeComplete["DatiSospensioni"] = "sospensione"; $listaSchedeComplete["DatiVarianti"] = "varianti"; $listaSchedeComplete["DatiSubappalti"] = "subappalti"; $correlate = []; $correlate["#APPALTOTYPE#"]["requisiti"] = "Requisiti"; $correlate["#APPALTOTYPE#"]["finanziamenti"] = "Finanziamenti"; $correlate["#APPALTOTYPE#"]["ausiliarie"] = "Ausiliarie"; $correlate["#APPALTOTYPE#"]["aggiudicatari"] = "Aggiudicatari"; $correlate["#APPALTOTYPE#"]["responsabili"] = "Incaricati"; $correlate["DatiInizio"]["pubblicita_esito"] = "PubblicazioneEsito"; $correlate["DatiInizio"]["responsabili"] = "Incaricati"; $correlate["DatiStipula"]["pubblicita_esito_adesione"] = "PubblicazioneEsito"; $correlate["DatiCollaudo"]["responsabili"] = "Incaricati"; foreach($listaSchedeComplete AS $idXML => $idSchedaDB) { $appalto = false; if ($idXML == "#APPALTOTYPE#") { $appalto = true; $idXML = $appaltoType; } if (!empty($schede[$idSchedaDB])) { foreach($schede[$idSchedaDB] AS $scheda) { $tipologia = $tipologie[$idSchedaDB]; $xml = $this->setScheda($idSchedaDB,$scheda["json"]); if (!empty($xml)) { if ($idSchedaDB != "varianti") { $xml["ID_SCHEDA_LOCALE"] = $scheda["id_locale"]; } else { $xml["Variante"]["ID_SCHEDA_LOCALE"] = $scheda["id_locale"]; } if (!empty($tipologia["XMLelement"]) && !$tipologia["multiple"]) { $xml = [$tipologia["XMLelement"]=>$xml]; if (!empty($scheda["response_id"])) { $xml["ID_SCHEDA_SIMOG"] = $scheda["response_id"]; } } if ($appalto) { if ($lotto["dati"]["tipo_contratto"] == "L") { $xml["TipiAppaltoLav"]["ID_APPALTO"] = $lotto["dati"]["tipoappalto"]; } else if ($lotto["dati"]["tipo_contratto"] == "F") { $xml["TipiAppaltoForn"]["ID_APPALTO"] = $lotto["dati"]["tipoappalto"]; } $xml["Appalto"]["FLAG_CUP"] = (empty($lotto["cup"])) ? "N" : "S"; $xml["Appalto"]["CUP"] = (empty($lotto["cup"])) ? "" : $lotto["cup"]; if (!empty($lotto["dati"]["condizioni"]) && ($appaltoType == 'Aggiudicazione')) { foreach($lotto["dati"]["condizioni"] AS $condizione) { $xml["Condizioni"][] = ["ID_CONDIZIONE"=>$condizione]; } } if ($appaltoType != 'Adesione') { $xml["CUPLOTTO"] = array( "CODICICUP"=>array(array( "CUP"=>(!empty($lotto["cup"])) ? $lotto["cup"] : "", "VALIDO"=>"S", "OK_UTENTE"=>"S" )) ); } } $sub = $correlate[($appalto) ? "#APPALTOTYPE#" : $idXML] ?? false; if (!empty($sub)) { foreach($sub AS $idCorrelata => $idSchedaCorrelata) { $subSchede = $schede[$idCorrelata] ?? $this->getSchede($lotto["codice"],$idCorrelata); if (!empty($subSchede)) { foreach($subSchede AS $subScheda) { if ($subScheda["stato"] >= 1 && $subScheda["stato"] <= 97) { $subSchedaXML = $this->setScheda($idCorrelata,$subScheda["json"]); if (!empty($subSchedaXML)) { $insert = true; if ($idCorrelata == "responsabili") { $insert = false; $subSchedaXML["SEZIONE"] = $this->sezioneFromRuolo($subSchedaXML["ID_RUOLO"]); if (!empty($subSchedaXML["SEZIONE"])) { if ($appalto) { if ($subSchedaXML["SEZIONE"] == "PA" || $subSchedaXML["SEZIONE"] == "RA") { if ($subSchedaXML["SEZIONE"] == "RA") { $subSchedaXML["SEZIONE"] == "R" . substr($idXML,0,1); } $subSchedaXML["ID_SCHEDA_LOCALE"] = $subScheda["id_locale"]; $insert = true; } } } } if ($insert) { $subSchedaXML["ID_SCHEDA_LOCALE"] = $subScheda["id_locale"]; if ($tipologie[$idCorrelata]["multiple"]) { $xml[$idSchedaCorrelata][] = $subSchedaXML; } else { $xml[$idSchedaCorrelata] = $subSchedaXML; } } } } } } } } if ($tipologia["multiple"]) { if (!empty($tipologia["XMLelement"])) { $data["Schede"]["SchedaCompleta"][$idXML][$tipologia["XMLelement"]][] = $xml; } else { $data["Schede"]["SchedaCompleta"][$idXML][] = $xml; } } else { $data["Schede"]["SchedaCompleta"][$idXML] = $xml; } } } } } $data["InfoTrasferimento"] = ["DATA_CREAZIONE_FLUSSO"=>date("Y-m-d H:i:s"),"NUM_SCHEDE"=>1]; $data = convertDate_DbDateSimog($data); $data["Schede"]["DatiComuni"] = removeEmpty($data["Schede"]["DatiComuni"]); $data["Schede"]["Pubblicazione"] = removeEmpty($data["Schede"]["Pubblicazione"]); foreach($data["Schede"]["SchedaCompleta"] AS $key => $array) { if ($key !== "CUI") { $data["Schede"]["SchedaCompleta"][$key] = removeEmpty($array,["DATA_IST_RECESSO","CUP"]); } } $return["data"] = ["trasferimentoDati" => $data]; } else { $errors = __("Dati comuni mancanti"); } } else { $errors = __("Nessuna scheda da inviare"); } } else { $errors = __("Impossibile riconoscere il tipo di appalto"); } } else if ($operation == "put" && !empty($response)) { $errori = 0; $warning = 0; $success = 0; $anomalie = []; $updateInfo = []; $checkCollegate = $this->db->prepare("SELECT tipologia FROM b_simog_schede WHERE id_locale = :id_locale AND codice NOT IN (SELECT codice_padre FROM b_simog_schede)"); $updateScheda = $this->db->prepare("UPDATE b_simog_schede SET stato = :stato, response_id = :id_simog, response = :response WHERE id_locale = :id_locale AND codice NOT IN (SELECT codice_padre FROM b_simog_schede)"); foreach($response AS $resp) { if (!empty($resp->return->feedBack)) { $feedback = $resp->return->feedBack; if (!empty($feedback->InfoFlusso)) { $errori += $feedback->InfoFlusso->NUM_ERRORE; $warning += $feedback->InfoFlusso->NUM_WARNING; $success += $feedback->InfoFlusso->NUM_CARICATE; } if (!empty($feedback->AnomalieSchede)) { if (!is_array($feedback->AnomalieSchede)) { $feedback->AnomalieSchede = [$feedback->AnomalieSchede]; } $idSchedeFeedback = []; $anomalieFeedback = []; foreach($feedback->AnomalieSchede AS $AnomalieSchede) { if (!empty($AnomalieSchede->CUI)) { $cui = $this->getLastCUI($lotto["codice"]); if ($cui != $AnomalieSchede->CUI) { $this->saveCUI($lotto["codice"],$AnomalieSchede->CUI); } } if (!empty($AnomalieSchede->IdScheda)) { if (!is_array($AnomalieSchede->IdScheda)) { $idSchedeFeedback = [$AnomalieSchede->IdScheda]; } else { $idSchedeFeedback = $AnomalieSchede->IdScheda; } } foreach($idSchedeFeedback as $idScheda) { if (!empty($idScheda->ID_SCHEDA_LOCALE)) { if (!isset($updateInfo[$idScheda->ID_SCHEDA_LOCALE])) { $updateInfo[$idScheda->ID_SCHEDA_LOCALE] = ["stato"=>2,"msg"=>[],"id_simog"=>0]; } $stato = 3; if (!empty($idScheda->ID_SCHEDA_SIMOG)) { $updateInfo[$idScheda->ID_SCHEDA_LOCALE]["id_simog"] = $idScheda->ID_SCHEDA_SIMOG; } if ($updateInfo[$idScheda->ID_SCHEDA_LOCALE]["stato"] < $stato) { $updateInfo[$idScheda->ID_SCHEDA_LOCALE]["stato"] = $stato; } } } if (!empty($AnomalieSchede->Anomalia)) { if (!is_array($AnomalieSchede->Anomalia)) { $anomalieFeedback = [$AnomalieSchede->Anomalia]; } else { $anomalieFeedback = $AnomalieSchede->Anomalia; } } } foreach($anomalieFeedback as $anomalia) { if (!empty($anomalia->ID_SCHEDA_LOCALE)) { if (!isset($updateInfo[$anomalia->ID_SCHEDA_LOCALE])) { $updateInfo[$anomalia->ID_SCHEDA_LOCALE] = ["stato"=>2,"msg"=>[],"id_simog"=>0]; } if ($anomalia->LIVELLO == "ERRORE") { $stato = 5; } else { $stato = 4; } if (!empty($anomalia->ID_SCHEDA_SIMOG)) { $updateInfo[$anomalia->ID_SCHEDA_LOCALE]["id_simog"] = $anomalia->ID_SCHEDA_SIMOG; } if (!empty($anomalia->DESCRIZIONE)) { $updateInfo[$anomalia->ID_SCHEDA_LOCALE]["msg"][] = $anomalia->LIVELLO . " - " . $anomalia->DESCRIZIONE; } if ($updateInfo[$anomalia->ID_SCHEDA_LOCALE]["stato"] < $stato) { $updateInfo[$anomalia->ID_SCHEDA_LOCALE]["stato"] = $stato; } } $anomalie[] = $anomalia; } } } } if (!empty($updateInfo)) { $tipologie = $this->listSchede($lotto["codice"]); foreach($updateInfo AS $idLocale => $otherInfo) { $updateScheda->bindValue(":stato",$otherInfo["stato"]); $updateScheda->bindValue(":id_simog",$otherInfo["id_simog"]); $updateScheda->bindValue(":response",json_encode($otherInfo["msg"])); $updateScheda->bindValue(":id_locale",$idLocale); $updateScheda->execute(); $checkCollegate->bindValue(":id_locale",$idLocale); $checkCollegate->execute(); if ($checkCollegate->rowCount() > 0) { $tipologia = $checkCollegate->fetch(PDO::FETCH_ASSOC)["tipologia"]; if (strpos($tipologia,"appalto-")!==false) { $tipologia = "#APPALTOTYPE#"; } $updateCorrelate = $this->db->prepare("UPDATE b_simog_schede SET stato = :stato WHERE codice_lotto = :lotto AND stato > 0 AND codice NOT IN (SELECT codice_padre FROM b_simog_schede) AND tipologia = :tipo "); $updateCorrelate->bindValue(":stato",$otherInfo["stato"]); $updateCorrelate->bindValue(":lotto",$lotto["codice"]); foreach($tipologie AS $idTipo => $tipo) { if (!empty($tipo["derived"])) { if ($tipo["derived"] == $tipologia) { $updateCorrelate->bindValue(":tipo",$idTipo); $updateCorrelate->execute(); } } } } } } ?>



0 || $success > 0) { if (!empty($anomalie)) { ?> LIVELLO == "ERRORE") { $class = "status-border-danger"; } ?>
SCHEDA ?> LIVELLO ?> DESCRIZIONE ?>
return->error)) { $errors = $response->return->error; } else { $errors = __("Errore nella risposta"); } } else { $errors = __("Operazione sconosciuta"); } } else { $errors = __("Impossibile trovare lotto"); } if (!empty($errors)) { $this->updateSimogLog($simogMethod,2,$errors,$lotto["codice"]); alertManager::printAlertBox($errors); } } ?>