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.
 
 
 
 
 

244 righe
12 KiB

<?
if (isset($this) && is_a($this,"anac") ) {
if (!empty($codice_lotto)) { $lotto = $this->getLotti($codice_lotto)[0] ?? NULL; }
if (!empty($lotto["codice"])) {
$continua = true;
if ($this->info["smart_cig"] == "S") {
$smart = true;
$simogMethod = "consultaComunicazione";
} else {
$smart = false;
$simogMethod = "consultaGara";
}
} else if ($operation == "create" && !empty($codice_ente) && !empty($anno) && isset($smart)) {
$continua = true;
if ($smart) {
$simogMethod = ($smart) ? "consultaComunicazione" : "consultaGara";
}
}
if ($operation == "get") {
$return = [];
$return["method"] = $simogMethod;
$return["data"] = [];
$return["data"]["CIG"] = $lotto["cig"];
if (!$smart) { $return["data"]["schede"] = $this->version; }
} else if (($operation == "put" || $operation == "create") && !empty($response)) {
$availableDati = [];
if (!$smart) {
if ($operation != "create") { $response = $response->return; }
if (!empty($response->success)) {
if (!empty($lotto["codice"])) { $this->updateSimogLog($simogMethod,1,"",$lotto["codice"]); }
$datiGara = $response->GaraXML->DatiGara;
$datiScheda = $response->GaraXML->DatiScheda ?? NULL;
$gara = $this->info;
$gara["smart_cig"] = "N";
$gara["dati"] = json_decode(json_encode($datiGara->Gara),true);
$gara["dati"]["importo"] = $gara["dati"]["IMPORTO_GARA"] ?? "";
$gara["oggetto"] = $datiGara->Gara->OGGETTO;
if (!empty($datiScheda)) {
if (!empty($datiScheda->DatiComuni)) {
$gara["dati"]["cf_sua"] = $datiScheda->DatiComuni->CF_SA ?? "";
$gara["dati"]["denominazione_sua"] = $datiScheda->DatiComuni->DEN_SA ?? "";
}
}
} else if (!empty($response->error)) {
$errors = $response->error;
} else {
$errors = __("Errore nella risposta");
}
} else {
$gara = [];
$gara["smart_cig"] = "S";
$gara["lotto"] = [];
$gara["lotto"]["cig"] = $response->cig;
$gara["oggetto"] = $response->oggetto;
$gara["cup"] = $response->cup;
$gara["dati"] = json_decode(json_encode($response),true);
$gara["dati"]["categorie_merc"] = $gara["dati"]["categorie_merc"]["categoria"];
if (!is_array($gara["dati"]["categorie_merc"])) { $gara["dati"]["categorie_merc"] = [$gara["dati"]["categorie_merc"]]; }
$gara["lotto"]["importo"] = $response->importo;
}
if (!empty($gara)) {
if ($operation == "create") {
$gara["codice_gestore"] = $_SESSION["ente"]->codice;
$gara["codice_ente"] = $codice_ente;
$gara["anno_riferimento"] = $anno;
}
if (!empty($this->info["codice"])) { $gara["codice"] = $this->info["codice"]; }
$esito = $this->saveGara($gara);
$this->updateStato(10);
if (!empty($datiGara->Gara->DATA_PERFEZIONAMENTO_BANDO)) {
$this->updateStato(20);
}
if (!empty($esito["codice"])) {
$updateInfo = [];
$updateInfo["codice"] = $esito["codice"];
if (!$smart) {
$updateInfo["cf_utente"] = $datiGara->Gara->CF_UTENTE;
$updateInfo["id_gara"] = $datiGara->Gara->ID_GARA;
$updateInfo["id_stazione_appaltante"] = $datiGara->Gara->ID_STAZIONE_APPALTANTE;
}
if (empty($this->info["data_invio_simog"])) { $updateInfo["data_invio_simog"] = date("d/m/Y H:i:s"); }
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "b_simog";
$salva->operazione = "UPDATE";
$salva->oggetto = $updateInfo;
$salva->save();
if (!$smart) {
$datiLotto = $datiGara->Lotto;
$lotti = $this->getLotti();
$updateLotto = [];
$updateLotto["data_invio_simog"] = date("d/m/Y H:i:s");
foreach($lotti AS $tmp) {
if ($tmp["cig"] == $datiLotto->CIG) {
$updateLotto["codice"] = $tmp["codice"];
$updateLotto["data_invio_simog"] = mysql2datetime($tmp["data_invio_simog"]);
}
}
$updateLotto["codice_simog"] = $this->info["codice"];
$updateLotto["cig"] = $datiLotto->CIG;
if (!empty($datiLotto->CUPLOTTO->CODICICUP->CUP)) {
$updateLotto["cup"] = $datiLotto->CUPLOTTO->CODICICUP->CUP;
}
$updateLotto["id_scelta_contraente"] = $datiLotto->ID_SCELTA_CONTRAENTE;
$updateLotto["oggetto"] = $datiLotto->OGGETTO;
$updateLotto["importo"] = $datiLotto->IMPORTO_LOTTO;
$cpv = explode("-",$datiLotto->CPV);
$cpv = rtrim($cpv[0],"0");
$updateLotto["cpv"][] = $cpv;
$updateLotto["dati"] = json_decode(json_encode($datiLotto),true);
$updateLotto["importo_attuazione_sicurezza"] = $datiLotto->IMPORTO_SA;
$esitoLotto = $this->saveLotto($updateLotto,true);
if (!empty($esitoLotto["codice"])) {
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "b_simog_lotti";
$salva->operazione = "UPDATE";
$salva->oggetto = ["codice"=>$esitoLotto["codice"],"richiesto_simog"=>"S","data_invio_simog" => $updateLotto["data_invio_simog"]];
$salva->save();
if (!empty($datiGara->Requisito)) {
$updateInfo = [];
$updateInfo["codice"] = $this->info["codice"];
$updateInfo["dati"] = $this->getDati();
$updateInfo["dati"]["requisiti"] = [];
$updateInfo["dati"] = json_encode($updateInfo["dati"]);
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "b_simog";
$salva->operazione = "UPDATE";
$salva->oggetto = $updateInfo;
$salva->save();
$requisiti = $datiGara->Requisito;
if (!is_array($requisiti)) { $requisiti = [$requisiti]; }
foreach($requisiti AS $requisito) {
$requisito = json_decode(json_encode($requisito),true);
$this->saveRequisito($requisito);
}
}
if (!empty($datiScheda)) {
if (!empty($datiScheda->Pubblicazione)) {
$pubblicazione["codice"] = $this->info["codice"];
$pubblicazione["dati"] = json_decode(json_encode($datiScheda->Pubblicazione),true);
$pubblicazione["dati"] = convertDate_FROMSIMOG($pubblicazione["dati"]);
$pubblicazione["dati"]["dataPubblicazione"] = mysql2date(substr($datiLotto->DATA_PUBBLICAZIONE,0,10));
$this->savePubblica($pubblicazione);
}
if (!empty($datiScheda->SchedaCompleta)) {
$cui = $this->getLastCUI($esitoLotto["codice"],true);
$cuiUpdate = $datiScheda->SchedaCompleta->CUI;
if ($cui != $cuiUpdate) { $this->saveCUI($esitoLotto["codice"],$cuiUpdate); }
$cui = explode("-",$cui);
$tipologieSchede = $this->listSchede();
$comuni = json_decode(json_encode($datiScheda->DatiComuni),true);
$this->db->go("UPDATE b_simog_schede SET stato = 99 WHERE tipologia = 'comuni' AND codice_lotto = :lotto",[":lotto"=>$esitoLotto["codice"],":cui"=>$cui[1]]);
$this->saveSchede($esitoLotto["codice"],[["json"=>$comuni]],"comuni",3);
$appaltoType = anac::getAppaloType($updateLotto);
$idSchedaAppalto = "appalto-".strtolower($appaltoType);
$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";
$insert = [];
foreach($listaSchedeComplete AS $idXML => $tipologia) {
if (!empty($datiScheda->SchedaCompleta->$idXML)) {
$schede = [];
$nodo = $datiScheda->SchedaCompleta->$idXML;
if (!empty($tipologieSchede[$tipologia]["XMLelement"])) {
$xmlElement = $tipologieSchede[$tipologia]["XMLelement"];
$schede = $nodo->$xmlElement;
} else {
$schede = $nodo;
}
if (!empty($schede)) { $insert[$tipologia][] = $schede; }
if (!empty($correlate[$idXML])) {
foreach($correlate[$idXML] AS $subTipologia => $subXML) {
if (!empty($nodo->$subXML)) {
$schede = $nodo->$subXML ?? false;
if (!empty($schede)) { $insert[$subTipologia][] = $schede; }
}
}
}
}
}
if (!empty($insert)) {
foreach($insert AS $tipologia => $schede) {
$this->db->go("UPDATE b_simog_schede SET stato = 99 WHERE tipologia = :tipologia AND codice_lotto = :lotto",[":tipologia"=>$tipologia,":lotto"=>$esitoLotto["codice"],":cui"=>$cui[1]]);
if (!is_array($schede)) { $schede = [$schede]; }
foreach($schede AS $tmpScheda) {
if (!is_array($tmpScheda)) { $tmpScheda = [$tmpScheda]; }
foreach($tmpScheda AS $scheda) {
$scheda = json_decode(json_encode($scheda),true);
$this->saveSchede($esitoLotto["codice"],[["json"=>convertDate_FROMSIMOG($scheda)]],$tipologia,3);
}
}
}
}
}
}
} else if (!empty($esitoLotto["errori"])) {
$errors = $esitoLotto["errori"];
}
}
} else if (!empty($esito["errori"])) {
$errors = $esito["errori"];
}
}
if (!empty($errors)) {
if (!empty($lotto["codice"])) {
if (is_array($errors)) { $errors = implode("<br>",$errors); }
$this->updateSimogLog($simogMethod,2,$errors,$lotto["codice"]);
alertManager::printAlertBox($errors);
}
$return = ["errori"=>$errors];
} else {
if (!empty($lotto["codice"])) {
alertManager::printSuccessBox(__("Operazione effettuata con successo"));
}
$return = ["codice"=>$this->info["codice"]];
}
}
}
?>