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.
 
 
 
 
 

468 righe
17 KiB

<?
$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php";
include_once($configPath);
$error = true;
if (!empty($_POST['codici_carrello']) && !empty($_SESSION["utente"]) && $_SESSION["utente"]->permission($radice) && $_SESSION["utente"]->permission("mercato")) {
$error = false;
// costruisco l'array che serve al file save di gare/save.php
$codiceOe = $_POST['codice_oe'];
$carrello = Market::ordine($_POST['codici_carrello']);
// get somma totale dei prezzi dei prodotti ordinati
$somma = 0;
foreach ($carrello as $prodotto) {
$somma += $prodotto['prezzo'] * $prodotto['quantita'];
}
// get Cpv dei prodotti
$codici_prodotti = implode(',',pluck( 'codice_prodotto', $carrello));
$cpv = $pdo->go("SELECT cpv FROM r_cpv_prodotti WHERE codice_prodotto IN ( {$codici_prodotti} ) GROUP BY cpv" )
->fetchAll(PDO::FETCH_COLUMN) ?? [];
if(!empty($cpv)){
$cpv_macro = intval(substr(trim($cpv[0], " -"), 0, 2));
$tipologia = 'F';
if($cpv_macro == 45){
$tipologia = 'L';
}elseif($cpv_macro > 45){
$tipologia = 'S';
}
$paramsGara = [
"token" => tokenGen(),
"marketplace" => true,
"oggetto" => strip_tags($_POST['oggetto']),
"extraInfo" => [
"normaRiferimento" => "2023-36",
"importi" => [
"forniture" => $somma
],
"nuts" => $_POST['extraInfo']['nuts'],
],
"modalita" => $_POST['modalita'],
"tipologia" => $tipologia,
"procedura" => "mercato",
"anno" => date("Y"),
"codice_pec" => $_POST['codice_pec'],
"codice_ente" => $_POST['codice_beneficiario'],
"email_chiave" => $_SESSION['utente']->getInfo()['email'],
"accordo_quadro" => "N",
"cpv" => $cpv
];
// se un solo campo dell'array è vuoto, blocca il salvataggio e mostra errore
if(!emptyArrayMultidimensional($paramsGara)){
// CREA GARA
$_POST = [];
$paramsGara['codice'] = "";
$_POST = $paramsGara;
$gara = include("{$beRoot}gare/save.php");
// controlla se la gara è stata creata
if(!empty($gara['save']) && $gara['save'] == true){
$gara = $gara['gara'];
// CREA LOTTO
$paramsLotti = [
"token" => tokenGen(),
"marketplace" => true,
"codice" => "",
"codice_gara" => $gara->info['codice'],
"criterio" => "prezzo",
"formato" => "assoluto",
"oggetto" => __('Acquisto da Marketplace'),
"descrizione" => $gara->info['oggetto'],
"importoBase" => $somma,
"importoManodopera" => "0.00",
"oneriNoRibasso" => "0.00",
"cpv" => "031",
];
// manda tutti i parametri per il salvataggio a backend/gare/lotti/save
$_POST = [];
$_POST = $paramsLotti;
$lotto = include_once("{$beRoot}gare/lotti/save.php");
// Controlla se lotto è stato creato
if(!empty($lotto['save']) && $lotto['save'] == true){
$lotto = $lotto['codice'];
// se la modalita è telematica
if($paramsGara['modalita'] === 'telematica'){
// elabora la gara
$paramasElaboraGara = [
"marketplace" => true,
'token' => tokenGen(),
"codice_gara" => $gara->info['codice'],
"id" => "preventivo"
];
// invia paramentri per elaborazione
$_POST = [];
$_POST = $paramasElaboraGara;
$fase = include_once("{$beRoot}gare/elaborazione/inizializzaFase.php");
if(!empty($fase['save']) && $fase['save'] == true){
$fase = $fase['fase'];
// aggiorna stato della gara
$statoGara = $pdo->go("UPDATE b_gare SET stato = :stato WHERE codice = :codice", [':stato' => '10', ':codice' => $gara->info['codice']]);
if($statoGara->rowCount() === 1){
$sql = "UPDATE b_gare_criteri_valutazione
SET denominazione = :denominazione,
descrizione = :descrizione,
auto = :auto,
tipologia = :tipologia
WHERE codice_round = :codice_round";
$criterioValutazione = $pdo->go( $sql,
[
":denominazione" => "Elenco Prezzi",
":descrizione" => " ",
":auto" => "I",
":tipologia" => "E",
":codice_round" => $codice_round
]);
if($criterioValutazione->rowCount() === 1){
// aggiungi elenco prezzi
$criterioValutazione = $pdo->go("SELECT codice FROM b_gare_criteri_valutazione WHERE codice_round = :codice_round", [':codice_round' => $codice_round])
->fetch(PDO::FETCH_COLUMN);
// aggiorna elenco prezzi del criterio di valutazione
$input = [];
$i = 1;
foreach ($carrello as $key => $ordine) {
$input["voce-i_{$i}"] = [
"codice" => "",
"descrizione" => $ordine['denominazione'],
"unita" => $ordine['um'],
"tipo" => "corpo",
"quantita" => $ordine['quantita']
];
$i++;
}
$paramsElencoPrezzi = [
"token" => tokenGen(),
"marketplace" => true,
"codice_criterio" => $criterioValutazione,
"codice_gara" => $gara->info['codice'],
"codice_round" => $codice_round,
"input" => $input,
];
$_POST = [];
$_POST = $paramsElencoPrezzi;
$elencoPrezzi = include_once("{$beRoot}gare/criteri/elencoPrezzi/save.php");
if(!empty($elencoPrezzi['save']) && $elencoPrezzi['save'] == true){
$paramsInvitati = [
"token" => tokenGen(),
"marketplace" => true,
"codice_gara" => $gara->info['codice'],
"codice_lotto" => $lotto,
"invitati" => json_encode([$codiceOe])
];
$_POST = [];
$_POST = $paramsInvitati;
$invitati = include_once("{$beRoot}gare/inviti/save.php");
if( empty($invitati['save']) && $invitati['save'] != true){
?>
swal({
title:js_dict.attenzione,
html:"Err:0.10 - <?= __('Errore Configurazione invitati di valutazione') ?>",
type:"warning"
})
.then(function(){
window.location.href="/backend/gare/inviti/index.php?codice=<?= $gara->info['codice'] ?>&codice_round=<?= $codice_round ?>";
});
<?
die();
}
// FINE CREAZIONE AFFIDAMENTO TELEMATICO
}else{
?>
swal({
title:js_dict.attenzione,
html:"Err:0.9 - <?= __('Errore Configurazione Criterio di valutazione') ?>",
type:"warning"
})
.then(function(){
window.location.href="/backend/gare/criteri/index.php?codice=<?= $gara->info['codice'] ?>&codice_round=<?= $codice_round ?>";
});
<?
die();
}
}else{
?>
swal({
title:js_dict.attenzione,
html:"Err:0.8 - <?= __('Errore Configurazione Criterio di valutazione') ?>",
type:"warning"
})
.then(function(){
window.location.href="/backend/gare/criteri/index.php?codice=<?= $gara->info['codice'] ?>&codice_round=<?= $codice_round ?>";
});
<?
die();
}
}else{
?>
swal({
title:js_dict.attenzione,
html:"Err:0.7 - <?= __('Errore Aggiornamento Stato Gara') ?>",
type:"warning"
})
.then(function(){
window.location.href="/backend/gare/elaborazione/index.php?codice=<?= $gara->info['codice'] ?>&codice_round=<?= $codice_round ?>";
});
<?
die();
}
}else{
?>
swal({
title:js_dict.attenzione,
html:"Err:0.5 - <?= __('Errore Elaborazione Affidamento') ?>",
type:"warning"
})
.then(function(){
window.location.href="/backend/gare/elaborazione/index.php?codice=<?= $gara->info['codice'] ?>&codice_round=";
});
<?
die();
}
// configurare il criterio di valutazione
}elseif($paramsGara['modalita'] == 'extra'){
// Se extra piattaforma Rendi il pannello semplificato
$_POST = [];
$paramsQuickPanel = [
'token' => tokenGen(),
'marketplace' => true,
'codice' => $gara->info['codice'],
'quickPanel' => "S"
];
$_POST = $paramsQuickPanel;
$saveQuickPanel = include_once("{$beRoot}gare/setQuickPanel.php");
// se non ritorna true blocca è visualizza errore
if(!empty($saveQuickPanel['save']) && $saveQuickPanel['save'] == true){
$oe = oeManager::getOE($codiceOe);
// aggiungi partecipante
$paramsPartecipante = [
"token" => tokenGen(),
"marketplace" => true,
"codice_gara" => $gara->info['codice'],
"codice_round" => $gara->round['codice'],
"codice_lotto" => $lotto,
"codice_operatore" => $oe['codice'],
"codice" => "",
"stato" => $oe['stato_legale'],
"codice_fiscale" => $oe['codice_fiscale_impresa'],
"ragione_sociale" => $oe['ragione_sociale'],
];
$_POST = [];
$_POST = $paramsPartecipante;
$partecipante = include("{$beRoot}gare/partecipanti/save.php");
if(!empty($partecipante['save']) && $partecipante['save'] == true ){
$partecipante = $partecipante['codice'];
// Aggiungi aggiudicazione
$paramsAggiudicazione = [
"token" => tokenGen(),
"marketplace" => true,
"codice" => $gara->info['codice'],
"codice_round" => $gara->round['codice'],
"codice_lotto" => $lotto,
"importoAggiudicazione" => $somma,
"extra" => [
"estremi_definitiva" => ""
],
"aggiudicatario" => [
"{$partecipante}" => "S"
],
"pubblicaPartecipanti" => "0"
];
$_POST = [];
$_POST = $paramsAggiudicazione;
$aggiudicazione = include("{$beRoot}gare/definitiva/save.php");
// VERIFICARE ALl'aggiunta dell'aggiudicazione
if(!empty($aggiudicazione['save']) && $aggiudicazione['save'] == true){
$aggiudicazione = $aggiudicazione['codice'];
$values = null;
$i = 0;
foreach ( pluck( 'codice_prodotto', $carrello) as $key => $codice_prodotto) {
if($i != 0){
$values .= ",";
}
$values .= " ( {$gara->info['codice']}, {$codice_prodotto}, {$_SESSION["utente"]->codice} ) ";
$i++;
}
$error = true;
if(!empty($values)){
$ris = $pdo->prepare("INSERT INTO r_gara_prodotto(codice_gara, codice_prodotto, utente_modifica) VALUES {$values}");
$ris->execute();
if($ris->rowCount() > 0){
$error = false;
}
}
if($error){
?>
swal({title:js_dict.error,html:"Err:0.10 - " + js_dict["error-generic"],type:"error"});
<?
die();
}
}else{
?>
swal({
title:js_dict.attenzione,
html:"Err:0.11 - <?= __('Errore Elaborazione Aggiudicazione') ?>",
type:"warning"
})
.then(function(){
window.location.href="/backend/gare/definitiva/index.php?codice=<?= $gara->info['codice'] ?>&codice_round=<?= $gara->round['codice'] ?>";
});
<?
die();
}
}else{
?>
swal({title:js_dict.error,html:"Err:0.12 - " + js_dict["error-generic"],type:"error"});
<?
die();
}
}else{
?>
swal({
title:js_dict.attenzione,
html:"Err:0.13 - <?= __('Errore Elaborazione Affidamento') ?>",
type:"warning"
})
.then(function(){
window.location.href="/backend/gare/elaborazione/index.php?codice=<?= $gara->info['codice'] ?>&codice_round=";
});
<?
die();
}
}else{
?>
swal({
title:js_dict.attenzione,
html:"Err:0.4 - <?= __('Errore Durante la Creazione Dell\'Affidamento') ?>",
type:"warning"
})
.then(function(){
window.location.href="/backend/marketplace/index.php";
});
<?
die();
}
// elimina i prodotti e rimandi l'untente al pannello configurazione gare
$codiciCarrello = implode(',',pluck( 'codice',$carrello));
$ris = $pdo->go("DELETE FROM b_carrello WHERE codice IN ($codiciCarrello)");
if ($ris->rowCount() >= 1) {
scriviLog("b_carrello","DELETE",$pdo->getSQL());
?>
swal({title:js_dict["success-msg"],type:"success"}).then(function(){
window.location.href="/backend/gare/panel.php?codice=<?= $gara->info['codice'] ?>";
});
<?
die();
}
}else{
?>
swal({
title:js_dict.attenzione,
html:Err:0.3 - "<?= __('Errore creazione Lotto') ?>",
type:"warning"
})
.then(function(){
window.location.href="/backend/marketplace/index.php";
});
<?
die();
}
}else{
?>
swal({
title:js_dict.attenzione,
html:"Err:0.2 - <?= __('Errore creazione Affidamento') ?>",
type:"warning"
})
.then(function(){
window.location.href="/backend/marketplace/index.php";
});
<?
die();
}
}else{
?>
swal({title:js_dict.error,html:"Err:0.1 - " + js_dict["error-generic"],type:"error"});
<?
die();
}
}else{
?>
swal({title:js_dict.error,html:"Err:0.0 - <?= __('Impossibile proseguire con l\'ordine, 1 o più prodotti non hanno nessuna categoria merceologica') ?>",type:"error"});
<?
die();
}
}
if($error){
echo '<meta http-equiv="refresh" content="0;URL=/index.php">';
die();
}
?>