1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-24 14:31:42 +01:00
openstamanager/plugins/pianificazione_interventi/edit.php
Thomas Zilio 9d50ba0c69 Aggiornamento Pianificazione interventi
Aggiornamento della struttura del plugin Pianificazione interventi, con test da effettuare.
2018-08-30 18:20:30 +02:00

237 lines
10 KiB
PHP

<?php
include_once __DIR__.'/../../core.php';
$id_module = Modules::get('Contratti')['id'];
$plugin = Plugins::get($id_plugin);
$contratto = $dbo->fetchOne('SELECT * FROM co_contratti WHERE id = :id', [
':id' => $id_record,
]);
$records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento FROM co_contratti_promemoria WHERE idcontratto='.prepare($id_record).' ORDER BY data_richiesta ASC');
// Intervento/promemoria pianificabile
$pianificabile = $dbo->fetchOne('SELECT pianificabile FROM co_staticontratti WHERE id = :id', [
':id' => $contratto['idstato'],
])['pianificabile'];
$stati_pianificabili = $dbo->fetchOne('SELECT GROUP_CONCAT(`descrizione`) AS stati_pianificabili FROM `co_staticontratti` WHERE `pianificabile` = 1')['stati_pianificabili'];
echo '
<div class="box">
<div class="box-header with-border">
<h3 class="box-title"><span class="tip" title="'.tr('I promemoria verranno visualizzati sulla \'Dashboard\' e serviranno per semplificare la pianificazione del giorno dell\'intervento, ad esempio nel caso di interventi con cadenza mensile.').'"" >'.tr('Pianificazione interventi').' <i class="fa fa-question-circle-o"></i></span> </h3>
</div>
<div class="box-body">
<p>'.tr('Puoi <b>pianificare dei "promemoria" o direttamente gli interventi</b> da effettuare entro determinate scadenze. Per poter pianificare i promemoria il contratto deve essere in uno dei seguenti stati: <b>'.$stati_pianificabili.'</b> e la <b>data di conclusione</b> definita').'.</p>';
// Nessun intervento pianificato
if (!empty($records)) {
echo '
<br>
<h5>'.tr('Lista promemoria ed eventuali interventi associati').':</h5>
<table class="table table-condensed table-striped table-hover">
<thead>
<tr>
<th>'.tr('Data').'</th>
<th>'.tr('Tipo intervento').'</th>
<th>'.tr('Descrizione').'</th>
<th>'.tr('Intervento').'</th>
<th>'.tr('Sede').'</th>
<th>'.tr('Impianti').'</th>
<th>'.tr('Materiali').'</th>
<th>'.tr('Allegati').'</th>
<th class="text-right" >'.tr('Opzioni').'</th>
</tr>
</thead>
<tbody>';
// Elenco promemoria
foreach ($records as $record) {
// Sede
if ($record['idsede'] == '-1') {
echo '- '.('Nessuna').' -';
} elseif (empty($record['idsede'])) {
$info_sede = tr('Sede legale');
} else {
$sede = $dbo->fetchOne("SELECT id, CONCAT( CONCAT_WS( ' (', CONCAT_WS(', ', nomesede, citta), indirizzo ), ')') AS descrizione FROM an_sedi WHERE id=".prepare($record['idsede']));
$info_sede = $sede[0]['descrizione'];
}
// Intervento svolto
if (!empty($record['idintervento'])) {
$sede = $dbo->fetchOne('SELECT id, codice, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data FROM in_interventi WHERE id='.prepare($record['idintervento']));
$info_intervento = Modules::link('Interventi', $sede[0]['id'], tr('Intervento num. _NUM_ del _DATE_', [
'_NUM_' => $sede[0]['codice'],
'_DATE_' => Translator::dateToLocale($sede[0]['data']),
]));
$disabled = 'disabled';
$title = 'Per eliminare il promemoria, eliminare prima l\'intervento associato.';
} else {
$info_intervento = '- '.('Nessuno').' -';
$disabled = '';
$title = 'Elimina promemoria...';
}
// data_conclusione contratto
if (date('Y', strtotime($contratto['data_conclusione'])) < 1971) {
$contratto['data_conclusione'] = '';
}
// info impianti
$info_impianti = '';
if (!empty($record['idimpianti'])) {
$impianti = $dbo->fetchArray('SELECT id, matricola, nome FROM my_impianti WHERE id IN ('.($record['idimpianti']).')');
foreach ($impianti as $impianto) {
$info_impianti .= Modules::link('MyImpianti', $impianto['id'], tr('_NOME_ (_MATRICOLA_)', [
'_NOME_' => $impianto['nome'],
'_MATRICOLA_' => $impianto['matricola'],
])).'<br>';
}
}
// Info materiali/articoli
$materiali = $dbo->fetchArray('SELECT id, descrizione,qta,um,prezzo_vendita, \'\' AS idarticolo FROM co_righe_contratti_materiali WHERE id_riga_contratto = '.prepare($record['id']).'
UNION SELECT id, descrizione,qta,um,prezzo_vendita, idarticolo FROM co_righe_contratti_articoli WHERE id_riga_contratto = '.prepare($record['id']));
$info_materiali = '';
foreach ($materiali as $materiale) {
$info_materiali .= tr(' _QTA_ _UM_ x _DESC_', [
'_DESC_' => ((!empty($materiale['idarticolo'])) ? Modules::link('Articoli', $materiale['idarticolo'], $materiale['descrizione']) : $materiale['descrizione']),
'_QTA_' => Translator::numberToLocale($materiale['qta']),
'_UM_' => $materiale['um'],
'_PREZZO_' => $materiale['prezzo_vendita'],
]).'<br>';
}
// Info allegati
$allegati = $dbo->fetchArray('SELECT nome, original FROM zz_files WHERE id_record = '.prepare($record['id']).' AND id_plugin = '.$id_plugin);
$info_allegati = '';
foreach ($allegati as $allegato) {
$info_allegati .= tr(' _NOME_ (_ORIGINAL_)', [
'_ORIGINAL_' => $allegato['original'],
'_NOME_' => $allegato['nome'],
]).'<br>';
}
echo '
<tr>
<td>'.Translator::dateToLocale($record['data_richiesta']).'<!--br><small>'.Translator::dateToLocale($contratto['data_conclusione']).'</small--></td>
<td>'.$record['tipointervento'].'</td>
<td>'.nl2br($record['richiesta']).'</td>
<td>'.$info_intervento.'</td>
<td>'.$info_sede.'</td>
<td>'.$info_impianti.'</td>
<td>'.$info_materiali.'</td>
<td>'.$info_allegati.'</td>
<td align="right">';
echo '
<button type="button" class="btn btn-warning btn-sm" title="Pianifica..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica\', \''.$plugin->fileurl('pianficazione.php').'?id_module='.$id_module.'&id_plugin='.$plugin['id'].'&id_parent='.$id_record.'&id_record='.$record['id'].'\');"'.((!empty($pianificabile) && !empty($contratto['data_conclusione'])) ? '' : ' disabled').'>
<i class="fa fa-clock-o"></i>
</button>';
echo '
<button type="button" '.$disabled.' class="btn btn-primary btn-sm '.$disabled.' " title="Pianifica intervento ora..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica intervento\', \''.$rootdir.'/add.php?id_module='.Modules::get('Interventi')['id'].'&ref=interventi_contratti&idcontratto='.$id_record.'&idcontratto_riga='.$record['id'].'\');"'.(!empty($pianificabile) ? '' : ' disabled').'><i class="fa fa-calendar"></i></button>';
echo '
<button type="button" '.$disabled.' title="'.$title.'" class="btn btn-danger btn-sm ask '.$disabled.' " data-op="delete-promemoria" data-id="'.$record['id'].'">
<i class="fa fa-trash"></i>
</button>';
echo '
</td>
</tr>';
}
echo '
</tbody>
</table>';
echo '<br><div class="pull-right">';
if (!empty($records)) {
echo '
<button type="button" title="Elimina tutti i promemoria non associati ad intervento" class="btn btn-danger ask tip" data-op="delete-non-associati" data-id_plugin="'.$id_plugin.'" data-backto="record-edit">
<i class="fa fa-trash"></i> '.tr('Elimina promemoria').'
</button>';
}
echo '</div>';
}
echo '
<button type="button" title="Aggiungi un nuovo promemoria da pianificare." data-toggle="tooltip" class="btn btn-primary" id="add_promemoria">
<i class="fa fa-plus"></i> '.tr('Nuovo promemoria').'
</button>';
echo '
</div>
</div>';
$options = $dbo->fetchArray('SELECT idtipointervento, descrizione FROM `in_tipiintervento`');
echo '
<script type="text/javascript">
function askTipoIntervento () {
swal({
title: "'.tr('Aggiungere un nuovo promemoria?').'",
type: "info",
showCancelButton: true,
confirmButtonText: "'.tr('Aggiungi').'",
confirmButtonClass: "btn btn-lg btn-success",
input: "select",
inputOptions: {';
foreach ($options as $option) {
echo '
"'.$option['idtipointervento'].'": "'.$option['descrizione'].'", ';
}
echo '
},
inputPlaceholder: "'.tr('Tipo intervento').'",
inputValidator: function(value) {
return new Promise((resolve) => {
if (value === "") {
alert ("Seleziona un tipo intervento");
$(".swal2-select").attr("disabled", false);
$(".swal2-confirm").attr("disabled", false);
$(".swal2-cancel").attr("disabled", false);
} else {
resolve();
}
})
}
}).then(
function (result) {
prev_html = $("#add_promemoria").html();
$("#add_promemoria").html("<i class=\'fa fa-spinner fa-pulse fa-fw\'></i> '.tr('Attendere...').'");
$("#add_promemoria").prop("disabled", true);
$.post(globals.rootdir + "/actions.php?id_plugin='.$plugin['id'].'&id_parent='.$id_record.'", {
op: "add-promemoria",
data_richiesta: "'.date('Y-m-d').'",
idtipointervento: $(".swal2-select").val()
}).done(function(data) {
launch_modal("Nuovo promemoria", globals.rootdir + "/plugins/'.$plugin['directory'].'/pianficazione.php?id_plugin='.$plugin['id'].'&id_parent='.$id_record.'&id_record=" + data + "&add=1");
$("#add_promemoria").html(prev_html);
$("#add_promemoria").prop("disabled", false);
});
},
function (dismiss) {}
);
}
$("#add_promemoria").click(function() {
askTipoIntervento();
});
</script>';