Completamento #241
This commit is contained in:
parent
fb2887916e
commit
5e61bb0adf
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 ){
|
||||
|
|
|
@ -102,6 +102,9 @@ if (count($rs2) > 0) {
|
|||
|
||||
echo '
|
||||
</table>';
|
||||
} else {
|
||||
echo '
|
||||
<p>'.tr('Nessuna spesa presente').'.</p>';
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -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' ? '%' : '€'),
|
||||
]).'
|
||||
</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' ? '%' : '€'),
|
||||
]).'
|
||||
</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>';
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue