permission($radice,$_POST["codice"],$id_modulo) && tokenVerify() && $_SESSION["utente"]->unlockSupporto()) { $error = false; $errori = []; if (!empty($_POST["cpv"])) { // Verifica tipologia vs cpv $tipologia = $_POST["tipologia"] ?? null; if($tipologia) { $cpvs = $_POST["cpv"]; // Per ogni CPV foreach($cpvs as $cpv) { // Otteniamo le prime due cifre $cpv_macro = intval(substr(trim($cpv, " -"), 0, 2)); $fTipologia = substr($tipologia,0,1); // Se non è valido if(!( ($fTipologia == "F" && ($cpv_macro < 45 || $cpv_macro == 48)) || ($fTipologia == "L" && $cpv_macro == 45) || ($fTipologia == "S" && $cpv_macro > 45) )) { // Mostriamo un errore leggibile $nomeTipologia = [ "L" => "Lavori", "F" => "Forniture", "S" => "Servizi" ][$fTipologia] ?? "Sconosciuta"; $errori[] = __("Il CPV") . " " . $cpv . " " . __("non è compatibile con la categoria '{$nomeTipologia}'"); } else { $errori = []; break; } } } if (!empty($_POST["extraInfo"]["copyInfo"]["codice"])) { $copy = gara::init($_POST["extraInfo"]["copyInfo"]["codice"]); if (!empty($copy)) { $clonable = CloneGara::clonableInfo($copy); if (!empty($clonable)) { foreach($clonable AS $idDomanda => $quesito) { if (empty($_POST["extraInfo"]["copyInfo"][$idDomanda])) { $errori[] = __("Elementi da copiare"). " - {$quesito} - " . __("Obbligatorio"); } } } } else { $errori[] = __("Impossibile eseguire la copia richiesta"); } } // Se ci sono errori muoriamo malissimo if(!empty($errori)) { ?> swal({title:js_dict.error,html:`", $errori) ?>`}); checkLimite($radice) || $_POST["codice"] > 0) { if ($_POST["codice"] > 0) { $existingGara = gara::init($_POST["codice"]); if (empty($existingGara)) { header('HTTP/1.0 403 Forbidden'); die(); } else { if (!isset($_POST["procedura"])) { $_POST["procedura"] = $existingGara->info["procedura"]; $_POST["tipologia"] = $existingGara->info["tipologia"]; } } } $_POST["prezzoRiferimento"] = gara::getTotaleImportiFromTipologie($_POST["extraInfo"]["importi"]); $checkImporto = true; $importiMassimiEnte = $_SESSION["ente"]->getImportiMassimiProcedure(); if (!empty($importiMassimiEnte)) { foreach($importiMassimiEnte AS $limite) { if ((empty($limite["tipologia"]) || $limite["tipologia"] == $_POST["tipologia"]) && $limite["importo_max"] < $_POST["prezzoRiferimento"]) { $checkImporto = false; break; } } } if ($checkImporto) { $checkImportoUtente = true; if (!empty($_SESSION["utente"]->collaborazione)) { $limitiCollaborazione = $_SESSION["utente"]->getCollaborazioneAttiva()["limiti"] ?? ""; $limitiCollaborazione = json_decode($limitiCollaborazione,true); if (!empty($limitiCollaborazione)) { if (!empty($limitiCollaborazione[$_POST["procedura"]])) { if ($limitiCollaborazione[$_POST["procedura"]] < $_POST["prezzoRiferimento"]) { $checkImportoUtente = false; } } else { $checkImportoUtente = false; } } } if ($checkImportoUtente) { $entiAbilitati = $_SESSION["utente"]->getEntiBeneficiari(); $checkEnte = false; foreach($entiAbilitati AS $ente) { if ($_POST["codice_ente"] == $ente["codice"]) { $checkEnte = true; break; } } if ($checkEnte) { $gara = gara::save($_POST); if (is_a($gara,"gara")) { if (!$_SESSION["ente"]->checkLimite($radice) && empty($_POST["codice"])) { $_SESSION["ente"]->sendAlertLimite($radice); } if(!empty($_POST['marketplace']) && $_POST['marketplace'] == true){ return ['save' => true, 'gara' => $gara]; }elseif(!empty($gara->error_rda)){ $msg = implode('
', $gara->error_rda); $msg .= "
". __('Si prega di contattare il Servizio Help Desk'); ?> swal({title:js_dict["warning-msg"],html: "" ,type:"warning"}).then(function(){ window.location.href="/backend/gare/panel.php?codice=info["codice"] ?>"; }); swal({title:js_dict["success-msg"],type:"success"}).then(function(){ window.location.href="/backend/gare/panel.php?codice=info["codice"] ?>"; }); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:js_dict["error-generic"],type:"error"}); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"}); swal({title:js_dict.error,html:"",type:"error"});