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.
 
 
 
 
 

573 righe
30 KiB

<?
$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php";
include_once($configPath);
$id_modulo = "preliminari";
if (!empty($_SESSION["utente"]) && $_SESSION["utente"]->permission($radice,$_GET["codice"],$id_modulo)) {
if (!empty($_GET["codice"])) {
$codice_round = $_GET["codice_round"] ?? NULL;
$gara = gara::init($_GET["codice"]);
if (!empty($gara)) {
$record = $gara->info;
$extraInfo = $gara->getExtraInfo()["gara"];
if (empty($extraInfo["normaRiferimento"])) {
$extraInfo["normaRiferimento"] = $gara->normaRiferimento;
}
$lock = $gara->checkLock("preliminari");
}
} else if (empty($_GET["codice"])) {
$printLimite = false;
$lock = false;
if (!$_SESSION["ente"]->checkLimite($radice,true)) {
$lock = true;
} else {
if (!$_SESSION["utente"]->permission("gare.insert") || $_SESSION["utente"]->readOnly) {
$lock = true;
}
}
$record = get_campi("b_gare");
$record["prezzoRiferimento"] = 0;
if(!empty($_GET['codici_rda']) || !empty($_GET['codice_rda'])){
if(!empty($_GET['codice_rda'])){
$codici_rda[] = (int) $_GET['codice_rda'];
}else{
$codici_rda = json_decode(base64_decode($_GET['codici_rda']));
}
if(!empty($codici_rda)){
$tmp = [
'oggetto' => "",
'comparePrezzoRiferimento' => 0,
'tipologia' => '',
'prezzoRiferimento' => 0,
'codice_ente' => []
];
foreach ($codici_rda as $key => $codice_rda) {
$rda = Rda::init($codice_rda, ['stato']);
if(!empty($rda->info['codice']) && $rda->relazioni['stato']['stato'] === '10'){
$tmp['oggetto'] .= "{$rda->info['oggetto']}<br>";
if ($tmp['comparePrezzoRiferimento'] <= $rda->info['prezzoRiferimento']) {
$tmp['comparePrezzoRiferimento'] = $rda->info['prezzoRiferimento'];
$tmp['prezzoRiferimento'] += $rda->info['prezzoRiferimento'];
$tmp['tipologia'] = $rda->info['tipologia'];
}
$tmp['codice_ente'][] = $rda->info['codice_ente'];
}else{
unset($codici_rda[$key]);
}
}
$tmp['codice_ente'] = (count(array_unique($tmp['codice_ente'])) == 1) ? $tmp['codice_ente'][0] : $_SESSION['ente']->codice;
unset($tmp['comparePrezzoRiferimento']);
foreach (['oggetto', 'prezzoRiferimento', 'tipologia', 'codice_ente'] as $value) {
if(!empty($tmp[$value])){
$record[$value] = $tmp[$value];
}
}
}
}
$extraInfo["normaRiferimento"] = gara::findRiferimentoNormativo();
if (!empty($_GET["copy"])) {
$copy = gara::init($_GET["copy"]);
if (!empty($copy)) {
$clonable = CloneGara::clonableInfo($copy);
$extraInfoCopy = $copy->getExtraInfo();
$record["oggetto"] = $copy->info["oggetto"];
$record["modalita"] = $copy->info["modalita"];
$record["tipologia"] = $copy->info["tipologia"];
$record["procedura"] = $copy->info["procedura"];
$record["codice_pec"] = $copy->info["codice_pec"];
$record["accordo_quadro"] = $copy->info["accordo_quadro"];
$record["codice_ente"] = $copy->info["codice_ente"];
$extraInfo = $extraInfoCopy["gara"];
if (empty($extraInfo["normaRiferimento"])) {
$extraInfo["normaRiferimento"] = $copy->normaRiferimento;
}
}
}
}
if (!empty($record)) {
$href = "/".$radice."/panel.php?codice=".$record["codice"];
if (!empty($codice_round) && is_numeric($codice_round)) {
$href .= "&codice_round=" . $codice_round;
}
$breadcrumb = array();
$breadcrumb["/".$radice."/"] = Modulo::getInfo($radice)["titolo"];
if (!empty($record["codice"])) { $breadcrumb[$href] = __("Pannello"); }
$breadcrumb[""] = __("Modifica");
include_once ($beRoot."/layout/top.php");
$interpretazioni = gara::interpretazioniArt41();
$riferimenti = gara::riferimentiNormativi();
$art41 = settingsManager::getValue("interpretazioneArt41");
?>
<form rel="validate" method="post" action="save.php" id="edit-form">
<input id="token" type="hidden" name="token" value="<?= tokenGen() ?>">
<? if (!empty($clonable)) { ?>
<input type="hidden" name="extraInfo[copyInfo][codice]" value="<?= $copy->info["codice"] ?>">
<? } ?>
<? if(!empty($codici_rda)){ ?>
<? foreach($codici_rda as $codice_rda){ ?>
<input id="codice_rda" type="hidden" name="codici_rda[]" value="<?= $codice_rda ?>">
<? } ?>
<? } ?>
<input id="codice" type="hidden" name="codice" value="<?= $record["codice"] ?>">
<div id="commands" class="mb-5">
<div class="commands container-fluid">
<div class="row">
<div class="col-12 text-right">
<button class="btn btn-sm btn-primary"><span class="fa fa-save"></span> <?= __("Salva") ?></button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<ul class="nav nav-pills" role="tablist">
<li role="presentation" class="nav-item"><a href="#info" class="nav-link active" aria-controls="info" role="tab" data-toggle="tab"><?= __("info") ?></a></li>
<li role="presentation" class="nav-item"><a href="#cpv" class="nav-link" aria-controls="cpv" role="tab" data-toggle="tab"><?= __("categorie merceologiche") ?>*</a></li>
<? if (!empty($clonable)) { ?>
<li role="presentation" class="nav-item"><a href="#copy" class="nav-link" aria-controls="copy" role="tab" data-toggle="tab"><?= __("Elementi da copiare") ?>*</a></li>
<? } ?>
</ul>
</div>
<div class="card-body">
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="info">
<div class="row">
<div class="col-12 col-md-8">
<div class="card mb-2">
<div class="card-body">
<div class="form-group">
<label for="oggetto">
<?= __("oggetto") ?>*
</label>
<textarea class="ckeditor_simple" id="oggetto" class="form-control" name="oggetto" title="<?= __("oggetto") ?>" rel="S;2;0;A">
<?= $record["oggetto"] ?>
</textarea>
</div>
<div class="form-group">
<label for="extraInfo[normaRiferimento]">
<?= __("Riferimento Normativo") ?>*
</label>
<select name="extraInfo[normaRiferimento]" onchange="checkInterpretazioneArt41()" class="form-control" title="<?= __("Riferimento normativo") ?>" rel="S;0;0;A" id="extraInfo-normaRiferimento">
<option value=""><?= __("Seleziona") ?>...</option>
<?php foreach($riferimenti AS $idRiferimento => $riferimento) : ?>
<option <?= ($extraInfo["normaRiferimento"]==$idRiferimento) ? "selected" : "" ?> value="<?= $idRiferimento ?>"><?= $riferimento["label"] ?></option>
<?php endforeach ?>
</select>
</div>
<?php if ($art41 == "chiedi") : ?>
<div class="form-group" id="art41">
<label for="extraInfo[interpretazioneArt41]">
<?= __("Interpretazione Art. 41") ?>*
</label>
<select name="extraInfo[interpretazioneArt41]" class="form-control" title="<?= __("Interpretazione Art. 41") ?>" rel="S;0;0;A" id="extraInfo-interpretazioneArt41">
<option value=""><?= __("Seleziona") ?>...</option>
<?php foreach($interpretazioni AS $idInterpretazione => $descrizione): ?>
<option <?= (($extraInfo["interpretazioneArt41"] ?? null) ==$idInterpretazione) ? "selected" : "" ?> value="<?= $idInterpretazione ?>"><?= $descrizione ?></option>
<?php endforeach ?>
</select>
</div>
<?php endif ?>
<div class="row">
<div class="col-12 col-lg-3">
<div class="form-group">
<label for="modalita"><?= __("Modalita") ?>*</label>
<select name="modalita" class="form-control" title="<?= __("Modalita") ?>" <?= ($lock) ? "disabled" : "" ?> rel="S;0;0;A" id="modalita">
<option value=""><?= __("Seleziona") ?>...</option>
<?
$modalita = getModalita();
foreach($modalita AS $idMod => $mod) {
$selected = "";
if ($record["modalita"]==$idMod) { $selected = "selected"; }
?>
<option <?= $selected ?> value="<?= $idMod ?>"><?= $mod["titolo"] ?></option>
<?
}
?>
</select>
</div>
</div>
<div class="col-12 col-lg-3">
<div class="form-group">
<label for="tipologia"><?= __("Tipologia") ?>*</label>
<select name="tipologia" onchange="tipologiaUpdated()" class="form-control" <?= ($lock) ? "disabled" : "" ?> title="<?= __("Tipologia") ?>" rel="S;0;0;A" id="tipologia">
<option value=""><?= __("Seleziona") ?>...</option>
<?
$tipologie = getTipologieAffidamento(true,$record["timestamp_creazione"]);
foreach($tipologie AS $idTipo => $tipo) {
$selected = "";
if ($record["tipologia"]==$idTipo) { $selected = "selected"; }
?>
<option <?= $selected ?> value="<?= $idTipo ?>"><?= $tipo["titolo"] ?></option>
<?
}
?>
</select>
</div>
</div>
<div class="col-12 col-lg-6">
<div class="form-group">
<label for="procedura"><?= __("Procedura") ?>*</label>
<select name="procedura" class="form-control" title="<?= __("Procedura") ?>" <?= ($lock) ? "disabled" : "" ?> rel="S;0;0;A" id="procedura">
<option value=""><?= __("Seleziona") ?>...</option>
<?
if (!empty($record["tipologia"])) {
$procedure = getProcedure(true,$record["tipologia"],$record["timestamp_creazione"],$record["codice_ente"]);
foreach($procedure AS $idProcedura => $procedura) {
$selected = "";
$showProcedura = (empty($clonable));
if ($record["procedura"]==$idProcedura) {
$showProcedura = true;
$selected = "selected";
}
if($showProcedura) {
?>
<option <?= $selected ?> value="<?= $idProcedura ?>"><?= $procedura["titolo"] ?></option>
<?
}
}
}
?>
</select>
</div>
</div>
</div>
<div id="divImporti">
<?
if (!empty($record["tipologia"])) {
$tipologieImporti = $tipologie[$record["tipologia"]]["importi"];
include(__DIR__."/tr-importi.php");
}
?>
</div>
<div class="row mt-5">
<div class="col-12 col-xl-6">
<div class="form-group">
<label for="extraInfo[sommeAmministrazione]"><?= __("Somme a disposizione dell'Amministrazione") ?></label>
<input onChange="updateImporti()" type="text" class="text-center importo form-control" title="<?= __("Somme a disposizione dell'Amministrazione") ?>" name="extraInfo[sommeAmministrazione]" value="<?= $extraInfo["sommeAmministrazione"] ?? "" ?>" rel="N;0;0;2D">
</div>
</div>
<div class="col-12 col-xl-6">
<div class="form-group">
<label for="extraInfo[rinnovi]"><?= __("Rinnovi ed ulteriori opzioni") ?> <small><?= __("incluse nell'importo totale") ?></small></label>
<input onChange="updateImporti()" type="text" class="text-center form-control" title="<?= __("Rinnovi ed ulteriori opzioni") ?>" name="extraInfo[rinnovi]" value="<?= $extraInfo["rinnovi"] ?? "" ?>" rel="N;0;0;2D">
</div>
</div>
</div>
<div class="row mt-5">
<div class="col-12 col-xl-6 text-center">
<label><?= __("Valore stimato") ?></label><br>
<span class="h4" id="valoreStimato"></span>
</div>
<div class="col-12 col-xl-6 text-center">
<label><?= __("Totale progetto") ?></label><br>
<span class="h4" id="valoreProgetto"></span>
</div>
</div>
</div>
</div>
</div>
<div class="col-12 col-md-4">
<div class="card mb-2">
<div class="card-body">
<? if ($_SESSION["ente"]->getInfo()["numerazione"] == "solare") { ?>
<div class="form-group">
<label for="anno"><?= __("Anno") ?>*</label>
<input type="text" class="text-center form-control" title="<?= __("Anno") ?>" name="anno" value="<?= $record["anno"] ?? "" ?>" rel="S;4;4;N">
</div>
<? } ?>
<div class="form-group">
<label for="codice_pec"><?= __("indirizzo PEC") ?>*</label>
<select name="codice_pec" class="form-control" title="<?= __("indirizzo PEC") ?>" rel="S;0;0;N" id="codice_pec">
<option value=""><?= __("Seleziona") ?>...</option>
<?
$pec = Communicator::availablePEC();
if (!empty($pec)) {
foreach($pec AS $indirizzo) {
$selected = "";
if ($record["codice_pec"]==$indirizzo["codice"]) { $selected = "selected"; }
?>
<option <?= $selected ?> value="<?= $indirizzo["codice"] ?>"><?= $indirizzo["pec"] ?></option>
<?
}
}
?>
</select>
</div>
<?
$enti = $_SESSION["utente"]->getEntiBeneficiari();
if ($enti !== false) {
?>
<div class="form-group">
<label for="codice_ente"><?= __("Beneficiario") ?>* </label>
<select name="codice_ente" onchange="tipologiaUpdated()" class="form-control" title="<?= __("Beneficiario") ?>" rel="S;0;0;N" id="codice_ente">
<option value=""><?= __("Seleziona") ?>...</option>
<?
foreach($enti AS $ente) {
$selected = "";
if ($record["codice_ente"]==$ente["codice"]) { $selected = "selected"; }
?>
<option <?= $selected ?> value="<?= $ente["codice"] ?>"><?= $ente["denominazione"] ?></option>
<?
}
?>
</select>
</div>
<?
} else {
?>
<input id="codice_ente" type="hidden" name="codice_ente" value="<?= $_SESSION["ente"]->codice ?>">
<?
}
if (empty($_SESSION["ente"]->getInfo()["email_chiavi"])) {
if (empty($record["email_chiave"])) { $record["email_chiave"] = $_SESSION["utente"]->getInfo()["email"]; }
?>
<div class="form-group">
<label for="email_chiave"><?= __("Indirizzo ricezione chiave privata") ?>*</label>
<?
if (empty($record["public_key"])) {
?>
<input type="text" class="form-control" title="<?= __("Indirizzo ricezione chiave privata") ?>" name="email_chiave" value="<?= $record["email_chiave"] ?>" rel="S;0;0;E">
<? } else { ?>
<br><?= $record["email_chiave"] ?>
<? } ?>
</div>
<?
}
?>
<div class="form-group">
<label for="accordo_quadro"><?= __("Definizione accordo quadro") ?>*</label>
<select name="accordo_quadro" class="form-control" title="<?= __("Definizione accordo quadro") ?>" rel="S;0;0;A" id="accordo_quadro">
<option value=""><?= __("Seleziona") ?>...</option>
<option <?= $record["accordo_quadro"] == "S" ? "selected" : "" ?> value="S"><?= __("Si") ?></option>
<option <?= $record["accordo_quadro"] == "N" ? "selected" : "" ?> value="N"><?= __("No") ?></option>
</select>
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label for="extraInfo[provvedimentoIndizione]"><?= __("Provvedimento di indizione") ?></label>
<input type="text" class="text-center form-control" title="<?= __("Provvedimento di indizione") ?>" name="extraInfo[provvedimentoIndizione]" value="<?= $extraInfo["provvedimentoIndizione"] ?? "" ?>" rel="N;0;0;A">
</div>
</div>
<div class="col-12">
<div class="form-group">
<label for="extraInfo[dataProvvedimentoIndizione]"><?= __("Data del provvedimento") ?></label>
<input type="text" class="text-center form-control datepick" title="<?= __("Data") ?>" name="extraInfo[dataProvvedimentoIndizione]" value="<?= $extraInfo["dataProvvedimentoIndizione"] ?? "" ?>" rel="N;0;0;D">
</div>
</div>
</div>
<div class="form-group">
<label for="extraInfo[nuts]">
<?= __("Codice NUTS") ?>*
</label>
<select class="form-control" name="extraInfo[nuts]" rel="S;0;0;A" title="<?= __("Codice NUTS") ?>">
<option value=""><?= __("Seleziona") ?></option>
<?
$options = $pdo->go("SELECT * FROM b_nuts")->fetchAll(PDO::FETCH_ASSOC);
if (!empty($options)) {
foreach($options as $luogo) {
$key = $luogo["nuts"];
$selected = !empty($extraInfo["nuts"]) && $key == $extraInfo["nuts"];
// Solo NUTS v3
if(strlen($key) < 5 && !$selected) {
continue;
}
$label = $luogo["descrizione"];
if (strtotime($luogo["data_fine_validita"]) >= strtotime($record["timestamp"]) || empty($luogo["data_fine_validita"])) {
?>
<option <?= $selected ? "selected" : "" ?> value="<?= $key ?>"><?= $label ?></option>
<?
}
}
}
?>
</select>
</div>
<div class="form-group">
<label for="extraInfo[strutturaProponente]"><?= __("Struttura proponente") ?></label>
<input type="text" class="text-center form-control" title="<?= __("Struttura proponente") ?>" name="extraInfo[strutturaProponente]" value="<?= $extraInfo["strutturaProponente"] ?? "" ?>" rel="N;0;0;A">
</div>
<div class="form-group">
<label for="extraInfo[responsabileStruttura]"><?= __("Responsabile struttura") ?></label>
<input type="text" class="text-center form-control" title="<?= __("Responsabile struttura") ?>" name="extraInfo[responsabileStruttura]" value="<?= $extraInfo["responsabileStruttura"] ?? "" ?>" rel="N;0;0;A">
</div>
<div class="form-group">
<label for="extraInfo[estremiProgetto]"><?= __("Estremi del Progetto o del CSA") ?></label>
<input type="text" class="text-center form-control" title="<?= __("Estremi del Progetto o del CSA") ?>" name="extraInfo[estremiProgetto]" value="<?= $extraInfo["estremiProgetto"] ?? "" ?>" rel="N;0;0;A">
</div>
<div class="row">
<div class="col-12">
<div class="form-group">
<label for="extraInfo[soggettoApprovatore]"><?= __("Soggetto approvatore") ?></label>
<input type="text" class="text-center form-control" title="<?= __("Soggetto approvatore") ?>" name="extraInfo[soggettoApprovatore]" value="<?= $extraInfo["soggettoApprovatore"] ?? "" ?>" rel="N;0;0;A">
</div>
</div>
<div class="col-12">
<div class="form-group">
<label for="extraInfo[dataApprovazioneProgetto]"><?= __("Data approvazione") ?></label>
<input type="text" class="text-center form-control datepick" title="<?= __("Data approvazione") ?>" name="extraInfo[dataApprovazioneProgetto]" value="<?= $extraInfo["dataApprovazioneProgetto"] ?? "" ?>" rel="N;0;0;D">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="cpv">
<div class="card card-body">
<?
$cpv = [];
if (!empty($gara)) {
$cpv = $gara->getCategorieMerceologiche();
} else if (!empty($copy)) {
$cpv = $copy->getCategorieMerceologiche();
}
cpvManager::printForm(["cpv"=>$cpv]);
?>
</div>
</div>
<? if (!empty($clonable)) { ?>
<div role="tabpanel" class="tab-pane fade" id="copy">
<?php
foreach($clonable AS $idDomanda => $quesito) {
?>
<div class="card my-2">
<div class="card-body py-0">
<div class="row no-gutter">
<div class="col-12 col-lg-4 p-3 bg-light text-dark">
<strong>
<?= __($quesito) ?>*
</strong><br>
</div>
<div class="col-12 py-2 col-lg-8">
<?
$options = ["S"=>"Si","N"=>"No"];
foreach($options AS $value => $label) {
?>
<label for="elaborazione-<?= $idDomanda ?>" class="w-100">
<div class="card card-body p-3 my-1">
<div class="row">
<div class="col-11">
<?= __($label) ?>
</div>
<div class="col-1 text-center">
<input type="radio" value="<?= $value ?>" name="extraInfo[copyInfo][<?= $idDomanda ?>]"><br>
</div>
</div>
</div>
</label>
<?
}
?>
</div>
</div>
</div>
</div>
<?
}
?>
</div>
<? } ?>
</div>
</div>
<script>
function updateImporti() {
var totale = 0;
var totaleProgetto = 0;
$(".importo").each(function() {
if (valida($(this)).length === 0) {
val = parseFloat($(this).val());
if (val > 0) totaleProgetto += val;
}
});
$(".importo-base").each(function() {
if (valida($(this)).length === 0) {
val = parseFloat($(this).val());
if (val > 0) totale += val;
}
});
$("#valoreStimato").html(number_format(totale,2,",","."));
$("#valoreProgetto").html(number_format(totaleProgetto,2,",","."));
}
function tipologiaUpdated() {
var updateProcedure = <?= (empty($clonable)) ? "true" : "false" ?>;
var procedura = $("#procedura").val();
var importi = $(":input","#divImporti").serialize();
$("#divImporti").html("");
if (updateProcedure) { $("#procedura").html("").trigger("chosen:updated"); }
var tipologia = $("#tipologia").val();
var beneficiario = $("#codice_ente").val();
if (tipologia !== "") {
if (updateProcedure) {
$.ajax({
"url": "/backend/gare/loadProcedure.php?tipologia=" + tipologia + "&beneficiario=" + beneficiario,
"dataType": "html"
}).then(function(result) {
$("#procedura").html(result);
$("#procedura").trigger("chosen:updated");
$("#procedura").val(procedura);
$("#procedura").trigger("chosen:updated");
});
}
$.ajax({
"url": "/backend/gare/tr-importi.php?tipologia=" + tipologia,
"data": importi,
"method": "post",
"dataType": "html"
}).then(function(result) {
$("#divImporti").html(result);
updateImporti();
f_ready();
});
}
}
function checkInterpretazioneArt41() {
$current = $("#extraInfo-interpretazioneArt41").val();
if ($("#extraInfo-normaRiferimento").val() !== "2023-36") {
$("#art41").hide();
$("#extraInfo-interpretazioneArt41").attr("rel","N;0;0;A");
$("#extraInfo-interpretazioneArt41").val("");
$("#extraInfo-interpretazioneArt41").trigger("chosen:updated");
} else {
$("#art41").show();
$("#extraInfo-interpretazioneArt41").attr("rel","S;0;0;A");
$("#extraInfo-interpretazioneArt41").val(current);
$("#extraInfo-interpretazioneArt41").trigger("chosen:updated");
}
}
updateImporti();
checkInterpretazioneArt41();
</script>
<div class="card-footer">
<button class="btn btn-block btn-lg btn-primary"><span class="fa fa-save"></span> <?= __("Salva") ?></button>
</div>
</div>
</form>
<?
include_once ($beRoot."/layout/bottom.php");
} else {
echo '<meta http-equiv="refresh" content="0;URL=/index.php">';
die();
}
} else {
echo '<meta http-equiv="refresh" content="0;URL=/index.php">';
die();
}
?>