Completamento #241

This commit is contained in:
Thomas Zilio 2018-11-01 12:39:54 +01:00
parent fb2887916e
commit 5e61bb0adf
7 changed files with 216 additions and 386 deletions

View File

@ -22,10 +22,8 @@ switch (post('op')) {
$richiesta = post('richiesta');
$idsede = post('idsede');
/*
Collegamento intervento a contratto (se impostato).
Oltre al collegamento al contratto, l'intervento è collegato ad una riga di pianificazione, perciò è importante considerarla se è impostata
*/
// Collegamento intervento a contratto (se impostato)
// Oltre al collegamento al contratto, l'intervento è collegato ad una riga di pianificazione, perciò è importante considerarla se è impostata
$array = [
'idintervento' => $id_record,
'idtipointervento' => $idtipointervento,
@ -57,115 +55,6 @@ switch (post('op')) {
$dbo->update('co_promemoria', ['idintervento' => null], ['idintervento' => $id_record]);
}
// Aggiorna tutte le sessioni di lavoro
$lista = (array) post('id_');
foreach ($lista as $idriga) {
//Lettura del tecnico proprietario della riga
$rst = $dbo->fetchArray('SELECT idtecnico FROM in_interventi_tecnici WHERE id='.prepare($idriga));
// Limitazione delle azioni dei tecnici
//($user['gruppo'] == 'Tecnici' && $user['idanagrafica'] == $rst[0]['idtecnico']) || $user['gruppo'] == 'Amministratori'
// Lettura delle date di inizio e fine intervento
$orario_inizio = post('orario_inizio')[$idriga];
$orario_fine = post('orario_fine')[$idriga];
// Ricalcolo le ore lavorate
$ore = calcola_ore_intervento($orario_inizio, $orario_fine);
$km = post('km')[$idriga];
// Lettura tariffe in base al tipo di intervento ed al tecnico
$idtipointervento_tecnico = post('idtipointerventot')[$idriga];
$rs = $dbo->fetchArray('SELECT * FROM in_interventi_tecnici WHERE idtecnico='.prepare(post('idtecnico')[$idriga]).' AND idintervento='.prepare($id_record));
if ($idtipointervento_tecnico != $rs[0]['idtipointervento']) {
$rsc = $dbo->fetchArray('SELECT * FROM in_tariffe WHERE idtecnico='.prepare(post('idtecnico')[$idriga]).' AND idtipointervento='.prepare($idtipointervento_tecnico));
if ($rsc[0]['costo_ore'] != 0 || $rsc[0]['costo_km'] != 0 || $rsc[0]['costo_dirittochiamata'] != 0 || $rsc[0]['costo_ore_tecnico'] != 0 || $rsc[0]['costo_km_tecnico'] != 0 || $rsc[0]['costo_dirittochiamata_tecnico'] != 0) {
$prezzo_ore_unitario = $rsc[0]['costo_ore'];
$prezzo_km_unitario = $rsc[0]['costo_km'];
$prezzo_dirittochiamata = $rsc[0]['costo_dirittochiamata'];
$prezzo_ore_unitario_tecnico = $rsc[0]['costo_ore_tecnico'];
$prezzo_km_unitario_tecnico = $rsc[0]['costo_km_tecnico'];
$prezzo_dirittochiamata_tecnico = $rsc[0]['costo_dirittochiamata_tecnico'];
}
// ...altrimenti se non c'è una tariffa per il tecnico leggo i costi globali
else {
$rsc = $dbo->fetchArray('SELECT * FROM in_tipiintervento WHERE idtipointervento='.prepare($idtipointervento_tecnico));
$prezzo_ore_unitario = $rsc[0]['costo_orario'];
$prezzo_km_unitario = $rsc[0]['costo_km'];
$prezzo_dirittochiamata = $rsc[0]['costo_diritto_chiamata'];
$prezzo_ore_unitario_tecnico = $rsc[0]['costo_orario_tecnico'];
$prezzo_km_unitario_tecnico = $rsc[0]['costo_km_tecnico'];
$prezzo_dirittochiamata_tecnico = $rsc[0]['costo_diritto_chiamata_tecnico'];
}
} else {
$prezzo_ore_unitario = $rs[0]['prezzo_ore_unitario'];
$prezzo_km_unitario = $rs[0]['prezzo_km_unitario'];
$prezzo_dirittochiamata = $rs[0]['prezzo_dirittochiamata'];
$prezzo_ore_unitario_tecnico = $rs[0]['prezzo_ore_unitario_tecnico'];
$prezzo_km_unitario_tecnico = $rs[0]['prezzo_km_unitario_tecnico'];
$prezzo_dirittochiamata_tecnico = $rs[0]['prezzo_dirittochiamata_tecnico'];
}
// Totali
$prezzo_ore_consuntivo = $prezzo_ore_unitario * $ore;
$prezzo_km_consuntivo = $prezzo_km_unitario * $km;
$prezzo_ore_consuntivo_tecnico = $prezzo_ore_unitario_tecnico * $ore;
$prezzo_km_consuntivo_tecnico = $prezzo_km_unitario_tecnico * $km;
// Sconti
$sconto_unitario = post('sconto')[$idriga];
$tipo_sconto = post('tipo_sconto')[$idriga];
$sconto = calcola_sconto([
'sconto' => $sconto_unitario,
'prezzo' => $prezzo_ore_consuntivo,
'tipo' => $tipo_sconto,
]);
$scontokm_unitario = post('scontokm')[$idriga];
$tipo_scontokm = post('tipo_scontokm')[$idriga];
$scontokm = ($tipo_scontokm == 'PRC') ? ($prezzo_km_consuntivo * $scontokm_unitario) / 100 : $scontokm_unitario;
$dbo->update('in_interventi_tecnici', [
'idintervento' => $id_record,
'idtipointervento' => $idtipointervento_tecnico,
'idtecnico' => post('idtecnico')[$idriga],
'orario_inizio' => $orario_inizio,
'orario_fine' => $orario_fine,
'ore' => $ore,
'km' => $km,
'prezzo_ore_unitario' => $prezzo_ore_unitario,
'prezzo_km_unitario' => $prezzo_km_unitario,
'prezzo_dirittochiamata' => $prezzo_dirittochiamata,
'prezzo_ore_unitario_tecnico' => $prezzo_ore_unitario_tecnico,
'prezzo_km_unitario_tecnico' => $prezzo_km_unitario_tecnico,
'prezzo_dirittochiamata_tecnico' => $prezzo_dirittochiamata_tecnico,
'prezzo_ore_consuntivo' => $prezzo_ore_consuntivo,
'prezzo_km_consuntivo' => $prezzo_km_consuntivo,
'prezzo_ore_consuntivo_tecnico' => $prezzo_ore_consuntivo_tecnico,
'prezzo_km_consuntivo_tecnico' => $prezzo_km_consuntivo_tecnico,
'sconto' => $sconto,
'sconto_unitario' => $sconto_unitario,
'tipo_sconto' => $tipo_sconto,
'scontokm' => $scontokm,
'scontokm_unitario' => $scontokm_unitario,
'tipo_scontokm' => $tipo_scontokm,
], ['id' => $idriga]);
}
$tipo_sconto = post('tipo_sconto_globale');
$sconto = post('sconto_globale');
@ -638,10 +527,46 @@ switch (post('op')) {
}
break;
// OPERAZIONI PER AGGIUNTA NUOVA SESSIONE DI LAVORO
case 'add_sessione':
$id_tecnico = post('id_tecnico');
// Verifico se l'intervento è collegato ad un contratto
$rs = $dbo->fetchArray('SELECT idcontratto FROM co_promemoria WHERE idintervento='.prepare($id_record));
$idcontratto = $rs[0]['idcontratto'];
$ore = 1;
$inizio = date('Y-m-d H:\0\0');
$fine = date_modify(date_create(date('Y-m-d H:\0\0')), '+'.$ore.' hours')->format('Y-m-d H:\0\0');
add_tecnico($id_record, $id_tecnico, $inizio, $fine, $idcontratto);
break;
// RIMOZIONE SESSIONE DI LAVORO
case 'delete_sessione':
$id_sessione = post('id_sessione');
$tecnico = $dbo->fetchOne('SELECT an_anagrafiche.email FROM an_anagrafiche INNER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE in_interventi_tecnici.id = '.prepare($id_sessione));
$dbo->query('DELETE FROM in_interventi_tecnici WHERE id='.prepare($id_sessione));
// Notifica nuovo intervento al tecnico
if (!empty($tecnico['email'])) {
$n = new Notifications\EmailNotification();
$n->setTemplate('Notifica rimozione intervento', $id_record);
$n->setReceivers($tecnico['email']);
$n->send();
}
break;
case 'edit_sessione':
$id_sessione = post('id_sessione');
// Lettura delle date di inizio e fine intervento
$orario_inizio = post('orario_inizio');
$orario_fine = post('orario_fine');
@ -737,6 +662,6 @@ switch (post('op')) {
'scontokm_unitario' => $scontokm_unitario,
'tipo_scontokm' => $tipo_scontokm,
], ['id' => $id_sessione]);
break;
}

View File

@ -143,7 +143,11 @@ if (!empty($rs)) {
echo '
</table>';
} else {
echo '
<p>'.tr('Nessun articolo presente').'.</p>';
}
?>
<script type="text/javascript">
function ritorna_al_magazzino( id ){

View File

@ -102,6 +102,9 @@ if (count($rs2) > 0) {
echo '
</table>';
} else {
echo '
<p>'.tr('Nessuna spesa presente').'.</p>';
}
?>

View File

@ -8,164 +8,116 @@ if (file_exists(__DIR__.'/../../../core.php')) {
include_once Modules::filepath('Interventi', 'modutil.php');
switch (get('op')) {
// OPERAZIONI PER AGGIUNTA NUOVA SESSIONE DI LAVORO
case 'add_sessione':
$idtecnico = get('idtecnico');
// Verifico se l'intervento è collegato ad un contratto
$rs = $dbo->fetchArray('SELECT idcontratto FROM co_promemoria WHERE idintervento='.prepare($id_record));
$idcontratto = $rs[0]['idcontratto'];
$ore = 1;
$inizio = date('Y-m-d H:\0\0');
$fine = date_modify(date_create(date('Y-m-d H:\0\0')), '+'.$ore.' hours')->format('Y-m-d H:\0\0');
add_tecnico($id_record, $idtecnico, $inizio, $fine, $idcontratto);
break;
// RIMOZIONE SESSIONE DI LAVORO
case 'del_sessione':
$id = get('id');
$tecnico = $dbo->fetchOne('SELECT an_anagrafiche.email FROM an_anagrafiche INNER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE in_interventi_tecnici.id = '.prepare($id));
$dbo->query('DELETE FROM in_interventi_tecnici WHERE id='.prepare($id));
// Notifica nuovo intervento al tecnico
if (!empty($tecnico['email'])) {
$n = new Notifications\EmailNotification();
$n->setTemplate('Notifica rimozione intervento', $id_record);
$n->setReceivers($tecnico['email']);
$n->send();
}
break;
}
$show_costi = true;
// Limitazione delle azioni dei tecnici
if ($user['gruppo'] == 'Tecnici') {
$show_costi = !empty($user['idanagrafica']) && setting('Mostra i prezzi al tecnico');
}
// RECUPERO IL TIPO DI INTERVENTO
$rss = $dbo->fetchArray('SELECT idtipointervento, idstatointervento FROM in_interventi WHERE id='.prepare($id_record));
$idtipointervento = $rss[0]['idtipointervento'];
$idstatointervento = $rss[0]['idstatointervento'];
// Stato dell'intervento
$rss = $dbo->fetchArray('SELECT completato AS flag_completato FROM in_statiintervento WHERE idstatointervento = (SELECT idstatointervento FROM in_interventi WHERE id='.prepare($id_record).')');
$is_completato = $rss[0]['flag_completato'];
$rss = $dbo->fetchArray('SELECT completato AS flag_completato FROM in_statiintervento WHERE idstatointervento='.prepare($idstatointervento));
$flag_completato = $rss[0]['flag_completato'];
// Sessioni dell'intervento
$query = 'SELECT in_interventi_tecnici.*, an_anagrafiche.ragione_sociale, an_anagrafiche.deleted_at AS anagrafica_deleted_at, in_tipiintervento.descrizione AS descrizione_tipo FROM in_interventi_tecnici
INNER JOIN an_anagrafiche ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica
INNER JOIN in_tipiintervento ON in_interventi_tecnici.idtipointervento = in_tipiintervento.idtipointervento
WHERE in_interventi_tecnici.idintervento='.prepare($id_record)." ORDER BY ragione_sociale ASC, in_interventi_tecnici.orario_inizio ASC, in_interventi_tecnici.id ASC";
$sessioni = $dbo->fetchArray($query);
$query = 'SELECT * FROM an_anagrafiche JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE idintervento='.prepare($id_record)." AND idanagrafica IN (SELECT idanagrafica FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica = (SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = 'Tecnico')) ORDER BY ragione_sociale ASC, in_interventi_tecnici.orario_inizio ASC, in_interventi_tecnici.id ASC";
$rs2 = $dbo->fetchArray($query);
$prev_tecnico = '';
if ($flag_completato) {
$readonly = 'readonly';
} else {
$readonly = '';
}
if (!empty($rs2)) {
foreach ($rs2 as $key => $r) {
$idtecnico = $r['idanagrafica'];
if (!empty($sessioni)) {
foreach ($sessioni as $key => $sessione) {
// Intestazione tecnico
if ($prev_tecnico != $r['ragione_sociale']) {
$prev_tecnico = $r['ragione_sociale'];
if ($prev_tecnico != $sessione['ragione_sociale']) {
$prev_tecnico = $sessione['ragione_sociale'];
echo '
<div class="table-responsive">
<table class="table table-striped table-hover table-condensed">
<tr>
<th><i class="fa fa-user"></i> '.$r['ragione_sociale'].' '.(($r['deleted']) ? '<small class="text-danger"><em>('.tr('Eliminato').')</em></small>' : '').'</th>
<th>'.tr('Orario inizio').'</th>
<th>'.tr('Orario fine').'</th>
<th>'.tr('Ore').'</th>
<th>'.tr('Km').'</th>
<th>'.tr('Sconto ore').'</th>
<th>'.tr('Sconto km').'</th>
<th width="120" class="text-center" >#</th>
<th><i class="fa fa-user"></i> '.$sessione['ragione_sociale'].' '.(($sessione['anagrafica_deleted_at']) ? '<small class="text-danger"><em>('.tr('Eliminato').')</em></small>' : '').'</th>
<th width="20%">'.tr('Orario inizio').'</th>
<th width="20%">'.tr('Orario fine').'</th>
<th width="5%">'.tr('Ore').'</th>
<th width="5%">'.tr('Km').'</th>';
if ($show_costi) {
echo '
<th width="10%">'.tr('Sconto ore').'</th>
<th width="10%">'.tr('Sconto km').'</th>';
}
if (!$is_completato) {
echo '
<th width="120" class="text-center">#</th>';
}
echo '
</tr>';
}
$id = $r['id'];
// Lettura costi unitari salvati al momento dell'intervento
$sconto_unitario = $r['sconto_unitario'];
$tipo_sconto = $r['tipo_sconto'];
$sconto = $sessione['sconto'];
$scontokm = $sessione['scontokm'];
$scontokm_unitario = $r['scontokm_unitario'];
$tipo_scontokm = $r['tipo_scontokm'];
$costo_ore_unitario = $sessione['prezzo_ore_unitario'];
$costo_km_unitario = $sessione['prezzo_km_unitario'];
$costo_dirittochiamata = $sessione['prezzo_dirittochiamata'];
$sconto = $r['sconto'];
$scontokm = $r['scontokm'];
$costo_ore_unitario_tecnico = $sessione['prezzo_ore_unitario_tecnico'];
$costo_km_unitario_tecnico = $sessione['prezzo_km_unitario_tecnico'];
$costo_dirittochiamata_tecnico = $sessione['prezzo_dirittochiamata_tecnico'];
$costo_ore_unitario = $r['prezzo_ore_unitario'];
$costo_km_unitario = $r['prezzo_km_unitario'];
$costo_dirittochiamata = $r['prezzo_dirittochiamata'];
$costo_km_consuntivo_tecnico = $sessione['prezzo_km_consuntivo_tecnico'];
$costo_ore_consuntivo_tecnico = $sessione['prezzo_ore_consuntivo_tecnico'];
$costo_km_consuntivo = $sessione['prezzo_km_consuntivo'];
$costo_ore_consuntivo = $sessione['prezzo_ore_consuntivo'];
$costo_ore_unitario_tecnico = $r['prezzo_ore_unitario_tecnico'];
$costo_km_unitario_tecnico = $r['prezzo_km_unitario_tecnico'];
$costo_dirittochiamata_tecnico = $r['prezzo_dirittochiamata_tecnico'];
$costo_km_consuntivo_tecnico = $r['prezzo_km_consuntivo_tecnico'];
$costo_ore_consuntivo_tecnico = $r['prezzo_ore_consuntivo_tecnico'];
$costo_km_consuntivo = $r['prezzo_km_consuntivo'];
$costo_ore_consuntivo = $r['prezzo_ore_consuntivo'];
$orario_inizio = $r['orario_inizio'];
$orario_fine = $r['orario_fine'];
$km = $r['km'];
$ore = $r['ore'];
// Costi unitari
// Tipologia
echo '
<input type="hidden" name="idtecnico['.$id.']" value="'.$idtecnico.'" />
<input type="hidden" name="id_[]" value="'.$id.'" />
<input type="hidden" name="prezzo_km_unitario['.$id.']" value="'.$costo_km_unitario.'" />
<input type="hidden" name="prezzo_dirittochiamata['.$id.']" value="'.$costo_dirittochiamata.'" />
<input type="hidden" name="prezzo_ore_unitario_tecnico['.$id.']" value="'.$costo_ore_unitario_tecnico.'" />
<input type="hidden" name="prezzo_km_unitario_tecnico['.$id.']" value="'.$costo_km_unitario_tecnico.'" />
<input type="hidden" name="prezzo_dirittochiamata_tecnico['.$id.']" value="'.$costo_dirittochiamata_tecnico.'" />
<tr>';
// Elenco tipologie di interventi
echo '
<td class="tecn_'.$r['idtecnico'].'" style="min-width:200px;">
{[ "type": "select", "name": "idtipointerventot['.$id.']", "value": "'.$r['idtipointervento'].'", "values": "query=SELECT idtipointervento AS id, descrizione, IFNULL((SELECT costo_ore FROM in_tariffe WHERE idtipointervento=in_tipiintervento.idtipointervento AND idtecnico='.prepare($r['idtecnico']).'), 0) AS costo_orario FROM in_tipiintervento ORDER BY descrizione", "extra": "'.$readonly.'" ]}
<tr>
<td>
'.$sessione['descrizione_tipo'].'
</td>';
// Orario di inizio
echo '
<td>
{[ "type": "timestamp", "name": "orario_inizio['.$id.']", "id": "inizio_'.$id.'", "value": "'.$orario_inizio.'", "class": "orari min-width", "extra": "'.$readonly.'" ]}
'.Translator::timestampToLocale($sessione['orario_inizio']).'
</td>';
// Orario di fine
echo '
<td>
{[ "type": "timestamp", "name": "orario_fine['.$id.']", "id": "fine_'.$id.'", "value": "'.$orario_fine.'", "class": "orari min-width", "min-date": "'.$orario_inizio.'", "extra": "'.$readonly.'" ]}
</td>';
<td>
'.Translator::timestampToLocale($sessione['orario_fine']).'
</td>';
// ORE
echo '
<td style="border-right:1px solid #aaa;">
{[ "type": "number", "name": "ore['.$id.']", "value": "'.$ore.'", "disabled": 1, "class": "small-width" ]}
'.Translator::numberToLocale($sesssione['ore']).'
<div class="extra hide">
<table class="table table-condensed table-bordered">
<tr><th class="text-danger">'.tr('Costo').':</th><td align="right">'.Translator::numberToLocale($costo_ore_consuntivo_tecnico)."<small class='help-block'>".Translator::numberToLocale($costo_ore_unitario_tecnico).'x'.Translator::numberToLocale($ore).'<br>+'.Translator::numberToLocale($costo_dirittochiamata_tecnico).'</small></td></tr>
<tr><th>'.tr('Addebito').':</th><td align="right">'.Translator::numberToLocale($costo_ore_consuntivo).'<small class="help-block">'.Translator::numberToLocale($costo_ore_unitario).'x'.Translator::numberToLocale($ore).'<br>+'.Translator::numberToLocale($costo_dirittochiamata).'</small></td></tr>
<tr><th>'.tr('Scontato').':</th><td align="right">'.Translator::numberToLocale($costo_ore_consuntivo - $sconto).'</td></tr>
<tr>
<th class="text-danger">'.tr('Costo').':</th>
<td align="right">
'.Translator::numberToLocale($costo_ore_consuntivo_tecnico)."
<small class='help-block'>".Translator::numberToLocale($costo_ore_unitario_tecnico).'x'.Translator::numberToLocale($ore).'<br>+'.Translator::numberToLocale($costo_dirittochiamata_tecnico).'</small>
</td>
</tr>
<tr>
<th>'.tr('Addebito').':</th>
<td align="right">
'.Translator::numberToLocale($costo_ore_consuntivo).'
<small class="help-block">'.Translator::numberToLocale($costo_ore_unitario).'x'.Translator::numberToLocale($ore).'<br>+'.Translator::numberToLocale($costo_dirittochiamata).'</small>
</td>
</tr>
<tr>
<th>'.tr('Scontato').':</th>
<td align="right">'.Translator::numberToLocale($costo_ore_consuntivo - $sconto).'</td>
</tr>
</table>
</div>
</td>';
@ -173,7 +125,7 @@ if (!empty($rs2)) {
// KM
echo '
<td style="border-right:1px solid #aaa;">
{[ "type": "number", "name": "km['.$id.']", "value": "'.$km.'", "class": "small-width", "extra": "'.$readonly.'" ]}
'.Translator::numberToLocale($sessione['km']).'
<div class="extra hide">
<table class="table table-condensed table-bordered">
@ -204,120 +156,132 @@ if (!empty($rs2)) {
</td>';
// Sconto ore
echo '
<td style="border-right:1px solid #aaa;">';
if ($show_costi) {
echo '
{[ "type": "number", "name": "sconto['.$id.']", "value": "'.$sconto_unitario.'", "icon-after": "choice|untprc|'.$tipo_sconto.'|'.$readonly.'", "class": "small-width", "extra": "'.$readonly.'" ]}';
} else {
echo '
<input type="hidden" name="sconto['.$id.']" value="'.Translator::numberToLocale($sconto_unitario).'" />
<input type="hidden" name="tipo_sconto['.$id.']" value="'.Translator::numberToLocale($tipo_sconto).'" />';
}
echo '
<td style="border-right:1px solid #aaa;">
'.tr('_TOT_ _TYPE_', [
'_TOT_' => Translator::numberToLocale($sessione['sconto_unitario']),
'_TYPE_' => ($sessione['tipo_sconto'] == 'PRC' ? '%' : '&euro;'),
]).'
</td>';
}
// Sconto km
echo '
<td style="border-right:1px solid #aaa;">';
if ($show_costi) {
echo '
{[ "type": "number", "name": "scontokm['.$id.']", "value": "'.$scontokm_unitario.'", "icon-after": "choice|untprc|'.$tipo_scontokm.'|'.$readonly.'", "class": "small-width", "extra": "'.$readonly.'" ]}';
} else {
echo '
<input type="hidden" name="scontokm['.$id.']" value="'.Translator::numberToLocale($scontokm_unitario).'" />
<input type="hidden" name="tipo_scontokm['.$id.']" value="'.Translator::numberToLocale($tipo_scontokm).'" />';
}
echo '
<input type="hidden" name="prezzo_ore_consuntivo['.$id.']" value="'.Translator::numberToLocale($costo_ore_consuntivo).'" />
<input type="hidden" name="prezzo_km_consuntivo['.$id.']" value="'.Translator::numberToLocale($costo_km_consuntivo).'" />
<input type="hidden" name="prezzo_ore_consuntivotecnico['.$id.']" value="'.Translator::numberToLocale($costo_ore_consuntivo_tecnico).'" />
<input type="hidden" name="prezzo_km_consuntivotecnico['.$id.']" value="'.Translator::numberToLocale($costo_km_consuntivo_tecnico).'" />
<td style="border-right:1px solid #aaa;">
'.tr('_TOT_ _TYPE_', [
'_TOT_' => Translator::numberToLocale($sessione['scontokm_unitario']),
'_TYPE_' => ($sessione['tipo_scontokm'] == 'PRC' ? '%' : '&euro;'),
]).'
</td>';
}
// Pulsante eliminazione sessione
echo '
<td class="text-center" >';
if (!$flag_completato) {
// Pulsante per la sessione
if (!$is_completato) {
echo '
<button type="button" class="btn btn-sm btn-warning" onclick="launch_modal(\''.tr('Modifica sessione').'\', \''.$module->fileurl('manage_sessione.php').'?id_module='.$id_module.'&id_record='.$id_record.'&id_sessione='.$id.'\', 1);" title="'.tr('Modifica sessione').'"><i class="fa fa-edit"></i></button>
<button type="button" class="btn btn-sm btn-danger" id="delbtn_'.$id.'" onclick="elimina_sessione(\''.$id.'\', \''.$id_record.'\', \''.$idzona.'\');" title="Elimina riga" class="only_rw"><i class="fa fa-trash"></i></button>';
<td class="text-center">
<button type="button" class="btn btn-sm btn-warning" onclick="launch_modal(\''.tr('Modifica sessione').'\', \''.$module->fileurl('manage_sessione.php').'?id_module='.$id_module.'&id_record='.$id_record.'&id_sessione='.$sessione['id'].'\', 1);" title="'.tr('Modifica sessione').'"><i class="fa fa-edit"></i></button>
<button type="button" class="btn btn-sm btn-danger" id="delbtn_'.$sessione['id'].'" onclick="elimina_sessione(\''.$sessione['id'].'\');" title="Elimina riga" class="only_rw"><i class="fa fa-trash"></i></button>
</td>';
}
echo '
</td>
</tr>';
// Intestazione tecnico
if (!isset($rs2[$key + 1]['ragione_sociale']) || $r['ragione_sociale'] != $rs2[$key + 1]['ragione_sociale']) {
if (!isset($sessioni[$key + 1]['ragione_sociale']) || $sessione['ragione_sociale'] != $sessioni[$key + 1]['ragione_sociale']) {
echo '
</table>
</div>';
}
}
} else {
echo
'<div class=\'alert alert-info\' ><i class=\'fa fa-info-circle\'></i> '.tr('Nessun tecnico assegnato').'.</div>';
}
if (!$flag_completato) {
echo '
<!-- AGGIUNTA TECNICO -->
<div class="row">
<div class="col-md-offset-6 col-md-3">
{[ "type": "select", "label": "'.tr('Aggiungi tecnico').'", "name": "nuovotecnico", "ajax-source": "tecnici" ]}
</div>
<div class="col-md-3">
<br>
<button type="button" class="btn btn-primary btn-block" onclick="if($(\'#nuovotecnico\').val()){ add_tecnici( \''.$id_record.'\', $(\'#nuovotecnico\').val()); }else{ alert(\'Seleziona un tecnico!\'); }">
<i class="fa fa-plus"></i> '.tr('Aggiungi tecnico').'
</button>
</div>
</div>';
<div class=\'alert alert-info\' ><i class=\'fa fa-info-circle\'></i> '.tr('Nessun tecnico assegnato').'.</div>';
}
?>
<script src="<?php echo $rootdir; ?>/lib/init.js"></script>
if (!$is_completato) {
echo '
<!-- AGGIUNTA TECNICO -->
<div class="row">
<div class="col-md-offset-6 col-md-3">
{[ "type": "select", "label": "'.tr('Aggiungi tecnico').'", "name": "nuovotecnico", "ajax-source": "tecnici" ]}
</div>
<div class="col-md-3">
<br>
<button type="button" class="btn btn-primary btn-block" onclick="if($(\'#nuovotecnico\').val()){ add_tecnici($(\'#nuovotecnico\').val()); }else{ alert(\'Seleziona un tecnico!\'); }">
<i class="fa fa-plus"></i> '.tr('Aggiungi tecnico').'
</button>
</div>
</div>';
}
echo '
<script src="'.$rootdir.'/lib/init.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(document).ready(function(){';
<?php
if (count($rs2) == 0) {
echo '$(".btn-details").attr("disabled", true);';
echo '$(".btn-details").addClass("disabled");';
echo '$("#showall_dettagli").removeClass("hide");';
echo '$("#dontshowall_dettagli").addClass("hide");';
} else {
echo '$(".btn-details").attr("disabled", false);';
echo '$(".btn-details").removeClass("disabled");';
}
?>
if (empty($sessioni)) {
echo '
$(".btn-details").attr("disabled", true);
$(".btn-details").addClass("disabled");
$("#showall_dettagli").removeClass("hide");
$("#dontshowall_dettagli").addClass("hide");';
} else {
echo '
$(".btn-details").attr("disabled", false);
$(".btn-details").removeClass("disabled");';
}
$('.orari').on("dp.change", function(){
idriga = $(this).attr('id').split('_')[1];
echo '
});
start = $('#inizio_' + idriga).val();
end = $('#fine_' + idriga).val();
calcola_ore(idriga, start, end);
});
$(".orari[id^=inizio]").on("dp.change", function (e) {
var fine = $(this).closest("tr").find(".orari[id^=fine]").data("DateTimePicker");
fine.minDate(e.date);
if(fine.date() < e.date){
date = moment(e.date).add(1, 'h');
fine.date(date);
/*
* Aggiunge una nuova riga per la sessione di lavoro in base al tecnico selezionato.
*/
function add_tecnici(id_tecnico) {
$.ajax({
url: globals.rootdir + "/actions.php",
beforeSubmit: function(arr, $form, options) {
return $form.parsley().validate();
},
data: {
id_module: globals.id_module,
id_record: globals.id_record,
op: "add_sessione",
id_tecnico: id_tecnico,
},
type: "post",
success: function(){
$("#tecnici").load("'.$module->fileurl('ajax_tecnici.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record);
$("#costi").load("'.$module->fileurl('ajax_costi.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record);
}
});
});
</script>
}
/*
* Rimuove la sessione di lavoro dall\'intervento.
*/
function elimina_sessione(id_sessione) {
if (confirm("Eliminare sessione di lavoro?")) {
$.ajax({
url: globals.rootdir + "/actions.php",
data: {
id_module: globals.id_module,
id_record: globals.id_record,
op: "delete_sessione",
id_sessione: id_sessione,
},
type: "post",
success: function(){
$("#tecnici").load("'.$module->fileurl('ajax_tecnici.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record);
$("#costi").load("'.$module->fileurl('ajax_costi.php').'?id_module=" + globals.id_module + "&id_record=" + globals.id_record);
}
});
}
}
</script>';

View File

@ -321,8 +321,6 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
</script>
<script src="<?php echo $rootdir; ?>/modules/interventi/js/interventi_helperjs.js"></script>
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
<?php

View File

@ -5,5 +5,3 @@ include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT *, (SELECT completato FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS flag_completato, IF((in_interventi.idsede = 0), (SELECT idzona FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica), (SELECT idzona FROM an_sedi WHERE id = in_interventi.idsede)) AS idzona, (SELECT colore FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS colore, (SELECT idcontratto FROM co_promemoria WHERE idintervento=in_interventi.id LIMIT 0,1) AS idcontratto, in_interventi.id_preventivo as idpreventivo FROM in_interventi WHERE id='.prepare($id_record).Modules::getAdditionalsQuery($id_module));
}
$jscript_modules[] = $rootdir.'/modules/interventi/js/interventi_helperjs.js';

View File

@ -1,62 +0,0 @@
/**
* Calcola la differenza in ore fra start ed end, e le scrive nel campo delle ore della riga specificata
*/
function calcola_ore(idriga, start, end) {
end = moment(end, globals.timestampFormat);
start = moment(start, globals.timestampFormat);
totale_ore = end.diff(start, 'minutes') / 60;
totale_ore = totale_ore.toFixed(2);
if (!isNaN(totale_ore)) {
$('#ore' + idriga).val(totale_ore);
}
}
/*
Aggiunge una nuova riga per la sessione di lavoro in base al tecnico selezionato
*/
function add_tecnici(idintervento, idtecnico) {
$("#edit-form").ajaxSubmit({
url: globals.rootdir + "/actions.php",
beforeSubmit: function(arr, $form, options) {
return $form.parsley().validate();
},
data: {
id_module: globals.id_module,
id_record: globals.id_record,
},
type: "post",
success: function(){
if (UrlExists(globals.rootdir + '/modules/interventi/custom/ajax_tecnici.php')){
$('#tecnici').load(globals.rootdir + '/modules/interventi/custom/ajax_tecnici.php?id_module=' + globals.id_module +'&id_record=' + idintervento + '&op=add_sessione&idtecnico=' + idtecnico);
}else{
$('#tecnici').load(globals.rootdir + '/modules/interventi/ajax_tecnici.php?id_module=' + globals.id_module +'&id_record=' + idintervento + '&op=add_sessione&idtecnico=' + idtecnico);
}
if (UrlExists(globals.rootdir + '/modules/interventi/custom/ajax_costi.php')){
$('#costi').load(globals.rootdir + '/modules/interventi/custom/ajax_costi.php?id_module=' + globals.id_module +'&id_record=' + idintervento);
}else{
$('#costi').load(globals.rootdir + '/modules/interventi/ajax_costi.php?id_module=' + globals.id_module +'&id_record=' + idintervento);
}
},
});
}
function elimina_sessione(idriga, idintervento, idzona) {
if (confirm('Eliminare sessione di lavoro?')) {
if (UrlExists(globals.rootdir + '/modules/interventi/custom/ajax_tecnici.php')){
$('#tecnici').load(globals.rootdir + '/modules/interventi/custom/ajax_tecnici.php?id_module=' + globals.id_module +'&id_record=' + idintervento + '&op=del_sessione&id=' + idriga);
}else{
$('#tecnici').load(globals.rootdir + '/modules/interventi/ajax_tecnici.php?id_module=' + globals.id_module +'&id_record=' + idintervento + '&op=del_sessione&id=' + idriga);
}
if (UrlExists(globals.rootdir + '/modules/interventi/custom/ajax_costi.php')){
$('#costi').load(globals.rootdir + '/modules/interventi/custom/ajax_costi.php?id_module=' + globals.id_module +'&id_record=' + idintervento);
}else{
$('#costi').load(globals.rootdir + '/modules/interventi/ajax_costi.php?id_module=' + globals.id_module +'&id_record=' + idintervento);
}
}
}