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.
 
 
 
 
 

449 righe
25 KiB

<?
$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php";
include_once($configPath);
$id_modulo = "provvisoria";
$cmd_info = gara::getInfoModulo($id_modulo);
if (!empty($_SESSION["utente"]) && $_SESSION["utente"]->permission($radice,$_GET["codice"],$id_modulo) && $_SESSION["utente"]->permission($cmd_info["modulo_riferimento"])) {
$codice_round = $_GET["codice_round"] ?? NULL;
$gara = gara::init($_GET["codice"],$codice_round);
if (!empty($gara)) {
$record = $gara->info;
$round = $gara->round;
$titolo_modulo = __($cmd_info["titolo"]);
if (!$gara->round["infoFase"]["graduatoria"]) {
$titolo_modulo = __("Ammissioni ed Esclusioni");
}
$breadcrumb = array();
$breadcrumb["/".$radice."/"] = Modulo::getInfo($radice)["titolo"];
$breadcrumb["/".$radice."/panel.php?codice=".$record["codice"]."&codice_round=".$round["codice"]] = __("Pannello");
if (!empty($_GET["codice_lotto"]) && count($gara->getLotti()) > 1) {
$breadcrumb["/gare/provvisoria/index.php?codice=".$record["codice"]."&codice_round=".$round["codice"]] = __("Scelta lotto");
}
$breadcrumb[""] = $titolo_modulo;
include_once ($beRoot."/layout/top.php");
?><h1><?= $titolo_modulo ?></h1><?
$gara->printSelectLottiConditions = ["hasPartecipanti"];
if ($gara->chooseLotto($_GET["codice_lotto"] ?? false,"{$_SERVER["PHP_SELF"]}?codice=".$record["codice"]."&codice_round=".$round["codice"])) {
$lock = $gara->checkLock($cmd_info["id"]);
$lotto = $gara->lotto;
$partecipanti = $gara->getPartecipanti();
if (count($partecipanti) > 0) {
$maxTecnico = 0;
$maxEconomico = 0;
$criteri = $gara->getMacroCriteri();
foreach($criteri AS $criterio) {
if ($criterio["economico"] == "S") {
$maxEconomico += $criterio["peso"];
} else {
$maxTecnico += $criterio["peso"];
}
}
$award = ($lotto["stato"] >= 30) ? true : false;
if ($award) {
if (empty($gara->pubblicaPartecipanti())) {
alertManager::printWarningCompact(__("I partecipanti alla procedura non sono stati pubblicati"));
$labelPartecipanti = "Pubblica partecipanti";
$btnPartecipanti = "btn-primary";
} else {
$labelPartecipanti = "Nascondi partecipanti";
$btnPartecipanti = "btn-danger";
}
?>
<script>
function visualizzaPartecipanti() {
Swal({
title: js_dict["sei-sicuro"],
text: js_dict["msg-conferma"],
type: "warning",
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: js_dict.conferma,
cancelButtonText: js_dict.annulla,
closeOnConfirm: true
}).then((result) => {
if (result.value) {
data = "codice_gara=<?= $gara->info["codice"] ?>&codice_lotto=<?= $gara->lotto["codice"] ?>&codice_round=<?= $gara->round["codice"] ?>";
$.ajax({
type: "POST",
url: "/backend/gare/provvisoria/showPartecipanti.php",
data: data,
dataType: "script",
success: function(result) {
result;
},
error: function() {
swal(js_dict["error-retry"]);
}
});
}
});
}
</script>
<?
}
?>
<? if (!$lock) { ?>
<div id="modal-exclude" class="modal fade" role="dialog" tabindex="-1">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header text-right">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
</div>
<div class="modal-body">
<form rel="validate" method="post" action="/backend/gare/provvisoria/escludi.php">
<input id="codice-escluso" type="hidden" name="codice" value="">
<input type="hidden" name="codice_lotto" value="<?= $lotto["codice"] ?>">
<div class="form-group">
<label for="motivazione">
<?= __("motivazione") ?>*
</label>
<textarea class="ckeditor_simple" id="motivazione" class="form-control" name="motivazione" title="<?= __("motivazione") ?>" rel="S;2;0;A"></textarea>
</div>
<div class="alert alert-warning">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="sendMsg" value="S" id="sendMsg">
<label class="form-check-label" for="sendMsg">
<?= __("Invia una comunicazione al partecipante") ?>
</label>
</div>
</div>
<button class="btn btn-lg btn-danger btn-block"><?= __("escludi") ?></button>
</form>
</div>
</div>
</div>
</div>
<div id="modal-admit" class="modal fade" role="dialog" tabindex="-1">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header text-right">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
</div>
<div class="modal-body">
<form rel="validate" method="post" action="/backend/gare/provvisoria/ammetti.php">
<input id="codice-ammesso" type="hidden" name="codice" value="">
<input type="hidden" name="codice_lotto" value="<?= $lotto["codice"] ?>">
<? alertManager::printInfoBox(__("Stai per procedere all'ammissione"),__("Vuoi continuare?")) ?>
<div class="alert alert-warning">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="sendMsg" value="S" id="sendMsg">
<label class="form-check-label" for="sendMsg">
<?= __("Invia una comunicazione al partecipante") ?>
</label>
</div>
</div>
<button class="btn btn-lg btn-success btn-block"><?= __("Ammetti") ?></button>
</form>
</div>
</div>
</div>
</div>
<script>
function ammetti(codice) {
if ((typeof codice !== "undefined")) {
$("#codice-ammesso").val(codice);
$("#modal-admit").modal();
}
}
function escludi(codice) {
if ((typeof codice !== "undefined")) {
$("#motivazione").val("");
$("#codice-escluso").val(codice);
$("#modal-exclude").modal();
}
}
</script>
<div id="modal-anomalia" class="modal fade" role="dialog" tabindex="-1">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header text-right">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
</div>
<div class="modal-body">
<form rel="validate" method="post" action="/backend/gare/provvisoria/anomala.php">
<input id="codice-anomalo" type="hidden" name="codice" value="">
<input type="hidden" name="codice_lotto" value="<?= $lotto["codice"] ?>">
<div class="form-group">
<label for="motivazione_anomalia">
<?= __("motivazione") ?>*
</label>
<textarea class="ckeditor_simple" id="motivazione_anomalia" class="form-control" name="motivazione_anomalia" title="<?= __("motivazione") ?>" rel="S;2;0;A"></textarea>
</div>
<button class="btn btn-lg btn-warning btn-block"><?= __("Registra anomalia") ?></button>
</form>
</div>
</div>
</div>
</div>
<script>
function anomala(codice) {
if ((typeof codice !== "undefined")) {
$("#motivazione_anomalia").val("");
stato = $("#anomal-"+codice).data('stato');
if (stato == "S") {
confirmBeforeSubmit(codice,"/backend/gare/provvisoria/anomala.php","codice_lotto=<?= $lotto["codice"] ?>");
} else if (stato == "N") {
$("#codice-anomalo").val(codice);
$("#modal-anomalia").modal();
}
}
}
</script>
<? } ?>
<div id="commands" class="mb-5">
<div class="commands container-fluid">
<div class="row">
<div class="col-12">
<? if (!$lock && $gara->round["infoFase"]["graduatoria"]) { ?>
<? if ($pdo->go("SELECT codice FROM b_gare_punteggi_partecipanti WHERE codice_partecipante IN (SELECT codice FROM r_partecipanti_gare WHERE codice_round = :round AND codice_lotto = :lotto)",[":round"=>$gara->round["codice"],":lotto"=>$gara->lotto["codice"]])->rowCount() > 0) { ?>
<form rel="validate" method="post" id="import-form" action="import.php" class="form-inline float-right">
<input id="token" type="hidden" name="token" value="<?= tokenGen() ?>">
<input id="codice" type="hidden" name="codice" value="<?= $record["codice"] ?>">
<input id="codice_round" type="hidden" name="codice_round" value="<?= $round["codice"] ?>">
<input id="codice_lotto" type="hidden" name="codice_lotto" value="<?= $lotto["codice"] ?>">
<button class="btn btn-info"><span class="fa fa-magic"></span> <?= __("Aggiorna i punteggi") ?></button>
</form>
<? } ?>
<button type="button" onClick="showModalWithURL('massive/panel.php?codice_gara=<?= $record["codice"] ?>&codice_round=<?= $round["codice"] ?>&codice_lotto=<?= $lotto["codice"] ?>')" class="btn float-right btn-warning" title="<?= __('Caricamento massivo') ?>"><span class="fa fa-table"></span> <?= __('Caricamento massivo') ?></button>
<? } ?>
<? if ($award) { ?>
<button type="button" onClick="visualizzaPartecipanti()" class="btn ignore-lock float-right <?= $btnPartecipanti ?>" title="<?= $labelPartecipanti ?>"><span class="fa fa-users"></span> <?= $labelPartecipanti ?></button>
<? } ?>
</div>
</div>
</div>
</div>
<? if (!$lock) { ?>
<form rel="validate" method="post" action="save.php" id="edit-form">
<input id="token" type="hidden" name="token" value="<?= tokenGen() ?>">
<input id="codice" type="hidden" name="codice" value="<?= $record["codice"] ?>">
<input id="codice_round" type="hidden" name="codice_round" value="<?= $round["codice"] ?>">
<input id="codice_lotto" type="hidden" name="codice_lotto" value="<?= $lotto["codice"] ?>">
<input type="hidden" name="aggiudica" id="aggiudica" value="N">
<? } else { ?><div id="edit-form"><? } ?>
<?
$infoAnomalia = json_decode($gara->getExtraInfo()["lotto"]["info-anomalia-{$round["codice"]}"]??"",true);
if (!empty($infoAnomalia["riepilogo"])) {
alertManager::printInfoBox(__("Riepilogo anomalia"),$infoAnomalia["riepilogo"]);
}
?>
<div id="alert-aggiudicatari-multipli" class="collapse">
<? alertManager::printWarningBox("Aggiudicatari multipli") ?>
</div>
<div class="card card-body mb-2 mt-2 p-0">
<table class="table table-striped" id="tab-data" width="100%">
<thead>
<tr>
<th width="10">#</th>
<th width="10"><?= __("Partita IVA") ?></th>
<th width="10"></th>
<th><?= __("Ragione Sociale") ?></th>
<? if ($maxTecnico > 0) { ?><th class="text-center" width="20%"><?= __("Tecnico") ?></th><? } ?>
<? if ($maxEconomico > 0) { ?><th class="text-center" width="20%"><?= __("Economico") ?></th><? } ?>
<? if (!empty($maxTecnico) || !empty($maxEconomico)) { ?><th class="text-center" width="20%"><?= __("totale") ?></th><? } ?>
<th width="100"></th>
<th width="100"></th>
</tr>
</thead>
<tbody>
<?
$i = 0;
$buttonBase = "<button type='button' title='##--title--##' class='btn btn-block btn-sm btn-##--class--##' onclick='##--action--##(##--code--##); return false'>##--title--##</button>";
$aggiudicatari = 0;
foreach($partecipanti as $partecipante) {
$i++;
$stato_label = __('ammesso');
$class_bg = "";
$buttonAmmetti = str_replace("##--title--##",__("Ammetti"), $buttonBase);
$buttonAmmetti = str_replace("##--class--##","success", $buttonAmmetti);
$buttonAmmetti = str_replace("##--action--##","ammetti", $buttonAmmetti);
$buttonAmmetti = str_replace("##--code--##",$partecipante["codice"], $buttonAmmetti);
$buttonEscludi = str_replace("##--title--##",__("Escludi"), $buttonBase);
$buttonEscludi = str_replace("##--class--##","danger", $buttonEscludi);
$buttonEscludi = str_replace("##--action--##","escludi", $buttonEscludi);
$buttonEscludi = str_replace("##--code--##",$partecipante["codice"], $buttonEscludi);
if ($partecipante["aggiudicatario"] == "S") {
$class_bg = "bg-success text-white";
$aggiudicatari++;
}
if ($partecipante["anomalia"]=="S") {
$stato_label = __('anomalo');
$class_bg = "bg-warning";
}
if ($partecipante["escluso"]=="S") {
$stato_label = __('escluso');
$class_bg = "bg-danger";
}
if ($partecipante["escluso"]=="P") {
$stato_label = __('In attesa');
$class_bg = "bg-warning";
}
?>
<tr id="row-<?= $partecipante["codice"] ?>" class="<?= $class_bg ?>">
<td><?= $i ?></td>
<td><?= $partecipante["codice_fiscale"] ?></td>
<td class="text-center">
<button type="button" <? if ($partecipante["escluso"] != "S") { echo 'style="display:none"'; } ?> id="motivazione_<?= $partecipante["codice"] ?>" class="motivazioni btn btn-sm btn-block m-0 btn-danger" data-toggle="popover" title="<?= __('motivazione') ?>" data-content="<?= $partecipante["motivazione"] ?>"><span class='fa fa-ban'></span></button>
<button type="button" <? if ($partecipante["anomalia"] == "N") { echo 'style="display:none"'; } ?> id="motivazione_anomalia_<?= $partecipante["codice"] ?>" class="motivazioni btn btn-sm btn-block m-0 btn-warning" data-toggle="popover" title="<?= __('motivazione anomalia') ?>" data-content="<?= $partecipante["motivazione_anomalia"] ?>"><span class='fa fa-exclamation'></span></button>
<span class="sr-only"><?= $stato_label ?></span>
<? if ($partecipante["aggiudicatario"] == "S") { ?><span class="fa fa-trophy"></span><? } ?>
</td>
<td>
<? if (!empty($partecipante["codice_operatore"])) { ?>
<a href="#" class="<?= $class_bg ?>" title="<?= __("visualizza") ?>" onclick="showCompany(<?= $partecipante["codice_operatore"] ?>); return false">
<? } ?>
<strong>
<?= $partecipante["ragione_sociale"] ?>
</strong>
<? if (!empty($partecipante["codice_operatore"])) { ?>
</a>
<? } ?>
</td>
<? if ($maxTecnico > 0) { ?>
<td class="form-group">
<input type="text" onChange="updateTotaleFase(<?= $partecipante["codice"] ?>)" value="<?= $partecipante["totaleTecnico"] ?>" size="20" class="input punteggio<?= $partecipante["codice"] ?> form-control text-center" id="punteggio_tecnico_<?= $partecipante["codice"] ?>" name="punteggio[<?= $partecipante["codice"] ?>][tecnico] ?>" title="<?= __("tecnico") ?> <?= $partecipante["ragione_sociale"] ?>" rel="N;0;0;N;<?= $maxTecnico ?>;<=">
</td>
<? } ?>
<? if ($maxEconomico > 0) { ?>
<td class="form-group">
<input type="text" onChange="updateTotaleFase(<?= $partecipante["codice"] ?>)" value="<?= $partecipante["totaleEconomico"] ?>" size="20" class="input punteggio<?= $partecipante["codice"] ?> form-control text-center" id="punteggio_economico_<?= $partecipante["codice"] ?>" name="punteggio[<?= $partecipante["codice"] ?>][economico] ?>" title="<?= __("economico") ?> <?= $partecipante["ragione_sociale"] ?>" rel="N;0;0;N;<?= $maxEconomico ?>;<=">
</td>
<? } ?>
<? if (!empty($maxTecnico) || !empty($maxEconomico)) { ?>
<td class="text-center">
<strong id="totale<?= $partecipante["codice"] ?>"><?= $partecipante["totale"] ?></strong>
</td>
<? } ?>
<td class="text-center">
<? if ($gara->round["infoFase"]["graduatoria"]) { ?>
<? if ($partecipante["anomalia"] == "S" && $partecipante["a_facoltativa"] == "N") { ?>
<?= __("Anomalia automatica") ?>
<? } else { ?>
<? if ($partecipante["a_verificata"] == "N") { ?>
<button title='<?= __("Attiva/Disattiva") ?>' id="anomal-<?= $partecipante["codice"] ?>"
data-stato="<?= $partecipante["a_facoltativa"] ?>"
class='btn btn-block btn-sm btn-<?= ($partecipante["a_facoltativa"]=="N") ? 'warning' : 'info'; ?>'
onclick='anomala("<?= $partecipante["codice"] ?>"); return false'><?= __(($partecipante["a_facoltativa"]=="N") ? 'Anomala' : 'Regolare'); ?>
</button>
<? } else {
echo ($partecipante["anomalia"] == "S") ? __("Anomala") : __("Regolare");
}
} ?>
<? } else {
if ($partecipante["escluso"] == "S" || $partecipante["escluso"] == "P") {
echo $buttonAmmetti;
}
} ?>
</td>
<td class="text-center">
<? if ($partecipante["escluso"] == "S" && $partecipante["esclusione_automatica"] == "S" && !$_SESSION["utente"]->hasSuperPowers()) { ?>
<?= __("Esclusione automatica") ?>
<? } else {
if ($gara->round["infoFase"]["graduatoria"]) {
if ($partecipante["escluso"] == "S") {
echo $buttonAmmetti;
} else if ($partecipante["escluso"] == "N") {
echo $buttonEscludi;
}
} else {
if ($partecipante["escluso"] == "N" || $partecipante["escluso"] == "P") {
echo $buttonEscludi;
}
}
} ?>
</td>
</tr>
<?
}
?>
</tbody>
</table>
</div>
<?
if (!$lock) {
if ($gara->round["infoFase"]["graduatoria"]) { ?>
<? if (!$award) { ?>
<button class="btn btn-block btn-lg btn-info" onclick="$('#aggiudica').val('N');"><span class="fa fa-save"></span> <?= __("Salva punteggi") ?></button>
<? } else { ?>
<a href="grid.php?codice=<?= $record["codice"] ?>&codice_round=<?= $round["codice"] ?>" class="btn btn-block btn-lg btn-info">
<?= __("Visualizza graduatoria") ?>
</a>
<? } ?>
<div class="mt-2">
<button class="btn btn-block btn-lg btn-success" onclick="$('#aggiudica').val('S');"><span class="fa fa-trophy"></span> <?= (!$award) ? __("Salva ed elabora graduatoria") : __("Aggiorna") ?></button>
</div>
</form>
<script>
function updateTotaleFase(partecipante) {
var totale = 0;
var errorSum = false;
var punteggi = $(".punteggio"+partecipante);
punteggi.each(function() {
msg = valida($(this));
if (msg == "") {
totale += parseFloat($(this).val());
} else {
errorSum = true;
}
});
if (!errorSum) {
$("#totale"+partecipante).html(totale);
}
}
</script>
<? }
} else { ?>
</div>
<script>$(":input").not(".ignore-lock").attr("disabled","disabled").trigger("chosen:updated");</script>
<? } ?>
<script>
<? if ($aggiudicatari > 1 && !$gara->getProcedura()["aggiudicazioneMultipla"]) { ?>
$("#alert-aggiudicatari-multipli").show();
<? } ?>
$('.motivazioni').popover({html:true});
</script>
<? if (empty($aggiudicatari) && !$lock) { ?>
<br>
<button type="button" onClick="$('.nonAggiudicata').slideToggle();" class="nonAggiudicata btn btn-block btn-warning"><?= __("Dichiara non aggiudicata") ?></button>
<div class="nonAggiudicata collapse">
<div class="card card-body">
<? alertManager::printWarningBox(__("Sei sicuro?"),__("Stai per dichiarare la procedura NON AGGIUDICATA")); ?>
<form rel="validate" method="post" action="nonaggiudicata.php" id="edit-form">
<input id="token" type="hidden" name="token" value="<?= tokenGen() ?>">
<input id="codice_gara" type="hidden" name="codice_gara" value="<?= $record["codice"] ?>">
<input id="codice" type="hidden" name="codice" value="<?= $lotto["codice"] ?>">
<input id="codice_round" type="hidden" name="codice_round" value="<?= $round["codice"] ?>">
<div class="row">
<div class="col-12 col-lg-6">
<button type="button" onClick="$('.nonAggiudicata').slideToggle();" class="btn btn-block btn-danger"><?= __("Annulla") ?></button>
</div>
<div class="col-12 col-lg-6">
<button type="submit" class="btn btn-block btn-warning"><?= __("Continua") ?></button>
</div>
</div>
</form>
</div>
</div>
<? } ?>
<?
} else {
alertManager::printWarningBox(__("Nessun risultato"));
}
}
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();
}
?>