2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/../../core.php' ;
2018-02-18 19:53:23 +01:00
if ( file_exists ( $docroot . '/modules/interventi/custom/modutil.php' )) {
2018-02-16 15:45:15 +01:00
include_once $docroot . '/modules/interventi/custom/modutil.php' ;
} else {
include_once $docroot . '/modules/interventi/modutil.php' ;
}
2017-08-04 16:28:16 +02:00
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_righe_contratti 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' :
$dbo -> query ( 'DELETE FROM in_interventi_tecnici WHERE id=' . prepare ( get ( 'id' )));
break ;
}
$show_costi = true ;
// Limitazione delle azioni dei tecnici
if ( $user [ 'gruppo' ] == 'Tecnici' ) {
2017-08-07 13:07:18 +02:00
$show_costi = ! empty ( $user [ 'idanagrafica' ]) && get_var ( 'Mostra i prezzi al tecnico' );
2017-08-04 16:28:16 +02:00
}
// RECUPERO IL TIPO DI INTERVENTO
2018-02-16 15:45:15 +01:00
$rss = $dbo -> fetchArray ( 'SELECT idtipointervento, idstatointervento FROM in_interventi WHERE id=' . prepare ( $id_record ));
$idtipointervento = $rss [ 0 ][ 'idtipointervento' ];
$idstatointervento = $rss [ 0 ][ 'idstatointervento' ];
2018-05-05 09:29:09 +02:00
$rss = $dbo -> fetchArray ( 'SELECT completato AS flag_completato FROM in_statiintervento WHERE idstatointervento=' . prepare ( $idstatointervento ));
$flag_completato = $rss [ 0 ][ 'flag_completato' ];
2017-08-04 16:28:16 +02:00
2017-09-14 16:20:11 +02:00
$query = 'SELECT * FROM an_anagrafiche JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE deleted=0 AND 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 " ;
2017-08-04 16:28:16 +02:00
$rs2 = $dbo -> fetchArray ( $query );
$prev_tecnico = '' ;
2018-05-05 09:29:09 +02:00
if ( $flag_completato ) {
2018-02-16 15:45:15 +01:00
$readonly = 'readonly' ;
} else {
$readonly = '' ;
}
2017-08-04 16:28:16 +02:00
if ( ! empty ( $rs2 )) {
foreach ( $rs2 as $key => $r ) {
$idtecnico = $r [ 'idanagrafica' ];
// Intestazione tecnico
if ( $prev_tecnico != $r [ 'ragione_sociale' ]) {
2017-09-14 16:20:11 +02:00
$prev_tecnico = $r [ 'ragione_sociale' ];
2017-08-04 16:28:16 +02:00
echo '
< div class = " table-responsive " >
2017-09-14 16:20:11 +02:00
< table class = " table table-striped table-hover table-condensed " >
2017-08-04 16:28:16 +02:00
< tr >
2017-09-01 18:13:25 +02:00
< th >< i class = " fa fa-user " ></ i > '.$r[' ragione_sociale '].' </ th >
2017-09-04 12:02:29 +02:00
< 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 >
2017-09-01 18:13:25 +02:00
< th ></ th >
2017-08-04 16:28:16 +02:00
</ tr > ' ;
}
$id = $r [ 'id' ];
// Lettura costi unitari salvati al momento dell'intervento
$sconto_unitario = $r [ 'sconto_unitario' ];
$tipo_sconto = $r [ 'tipo_sconto' ];
$scontokm_unitario = $r [ 'scontokm_unitario' ];
$tipo_scontokm = $r [ 'tipo_scontokm' ];
$sconto = $r [ 'sconto' ];
$scontokm = $r [ 'scontokm' ];
$costo_ore_unitario = $r [ 'prezzo_ore_unitario' ];
$costo_km_unitario = $r [ 'prezzo_km_unitario' ];
$costo_dirittochiamata = $r [ 'prezzo_dirittochiamata' ];
$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' ];
2017-09-01 18:13:25 +02:00
$orario_inizio = $r [ 'orario_inizio' ];
$orario_fine = $r [ 'orario_fine' ];
2017-08-04 16:28:16 +02:00
$km = $r [ 'km' ];
$ore = $r [ 'ore' ];
// Costi unitari
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 .' " /> ' ;
echo '
2017-09-14 16:20:11 +02:00
< tr >
2017-11-16 18:55:03 +01:00
< td class = " tecn_'. $r['idtecnico'] .' " style = " min-width:200px; " > ' ;
2017-08-04 16:28:16 +02:00
if ( $rs [ 0 ][ 'stato' ] != 'Fatturato' ) {
// Elenco tipologie di interventi
echo '
2018-02-16 15:45:15 +01:00
{[ " 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 " , " class " : " " , " extra " : " '. $readonly .' " ]} ' ;
2017-08-04 16:28:16 +02:00
}
echo '
</ td > ' ;
2017-09-01 18:13:25 +02:00
// Orario di inizio
2017-08-04 16:28:16 +02:00
echo '
< td > ' ;
if ( $rs [ 0 ][ 'stato' ] == 'Fatturato' ) {
echo '
2017-09-01 18:13:25 +02:00
< span > '.$orario_inizio.' </ span >
< input type = " hidden " name = " orario_inizio['. $id .'] " value = " '. $orario_inizio .' " > ' ;
2017-08-04 16:28:16 +02:00
} else {
echo '
2018-02-16 15:45:15 +01:00
{[ " type " : " timestamp " , " name " : " orario_inizio['. $id .'] " , " id " : " inizio_'. $id .' " , " value " : " '. $orario_inizio .' " , " class " : " orari min-width " , " extra " : " '. $readonly .' " ]} ' ;
2017-08-04 16:28:16 +02:00
}
echo '
</ td > ' ;
2017-09-01 18:13:25 +02:00
// Orario di fine
echo '
< td > ' ;
if ( $rs [ 0 ][ 'stato' ] == 'Fatturato' ) {
echo '
< span > '.$orario_fine.' </ span >
< input type = " hidden " name = " orario_fine['. $id .'] " value = " '. $orario_fine .' " > ' ;
} else {
echo '
2018-02-16 15:45:15 +01:00
{[ " type " : " timestamp " , " name " : " orario_fine['. $id .'] " , " id " : " fine_'. $id .' " , " value " : " '. $orario_fine .' " , " class " : " orari min-width " , " min-date " : " '. $orario_inizio .' " , " extra " : " '. $readonly .' " ]} ' ;
2017-09-01 18:13:25 +02:00
}
echo '
</ td > ' ;
2017-08-04 16:28:16 +02:00
// ORE
echo '
< td style = " border-right:1px solid #aaa; " >
2017-09-11 17:49:03 +02:00
{[ " type " : " number " , " name " : " ore['. $id .'] " , " value " : " '. $ore .' " , " disabled " : 1 , " class " : " small-width " ]}
2017-08-04 16:28:16 +02:00
< div class = " extra hide " >
< table class = " table table-condensed table-bordered " >
2017-09-04 12:02:29 +02:00
< 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 >
2017-08-04 16:28:16 +02:00
</ table >
</ div >
</ td > ' ;
// KM
echo '
< td style = " border-right:1px solid #aaa; " >
2018-02-16 15:45:15 +01:00
{[ " type " : " number " , " name " : " km['. $id .'] " , " value " : " '. $km .' " , " class " : " small-width " , " extra " : " '. $readonly .' " ]}
2017-08-04 16:28:16 +02:00
< div class = " extra hide " >
< table class = " table table-condensed table-bordered " >
< tr >
2017-09-04 12:02:29 +02:00
< th class = " text-danger " > '.tr(' Costo ').' :</ th >
2017-08-04 16:28:16 +02:00
< td align = " right " >
'.Translator::numberToLocale($costo_km_consuntivo_tecnico).'
< small class = " help-block " >
'.Translator::numberToLocale($costo_km_unitario_tecnico).' x '.Translator::numberToLocale($km).'
</ small >< br >
</ td >
</ tr >
< tr >
2017-09-04 12:02:29 +02:00
< th > '.tr(' Addebito ').' :</ th >
2017-08-04 16:28:16 +02:00
< td align = " right " >
'.Translator::numberToLocale($costo_km_consuntivo).'
< small class = " help-block " >
'.Translator::numberToLocale($costo_km_unitario).' x '.Translator::numberToLocale($km).'
</ small >< br >
</ td >
</ tr >
< tr >
2017-09-04 12:02:29 +02:00
< th > '.tr(' Scontato ').' :</ th >
2017-08-04 16:28:16 +02:00
< td align = " right " > '.Translator::numberToLocale($costo_km_consuntivo - $scontokm).' </ td >
</ tr >
</ table >
</ div >
</ td > ' ;
// Sconto ore
echo '
< td style = " border-right:1px solid #aaa; " > ' ;
2017-08-07 13:07:18 +02:00
if ( $user [ 'idanagrafica' ] == 0 || $show_costi ) {
2017-08-04 16:28:16 +02:00
echo '
2018-05-04 15:25:43 +02:00
{[ " type " : " number " , " name " : " sconto['. $id .'] " , " value " : " '. $sconto_unitario .' " , " icon-after " : " choice|untprc|'. $tipo_sconto .'|'. $readonly .' " , " class " : " small-width " , " extra " : " '. $readonly .' " ]} ' ;
2017-08-04 16:28:16 +02:00
} else {
echo '
< input type = " hidden " name = " sconto['. $id .'] " value = " '.Translator::numberToLocale( $sconto_unitario ).' " />
2017-11-21 17:46:50 +01:00
< input type = " hidden " name = " tipo_sconto['. $id .'] " value = " '.Translator::numberToLocale( $tipo_sconto ).' " /> ' ;
2017-08-04 16:28:16 +02:00
}
echo '
</ td > ' ;
// Sconto km
echo '
< td style = " border-right:1px solid #aaa; " > ' ;
2017-08-07 13:07:18 +02:00
if ( $user [ 'idanagrafica' ] == 0 || $show_costi ) {
2017-08-04 16:28:16 +02:00
echo '
2018-05-04 15:25:43 +02:00
{[ " type " : " number " , " name " : " scontokm['. $id .'] " , " value " : " '. $scontokm_unitario .' " , " icon-after " : " choice|untprc|'. $tipo_scontokm .'|'. $readonly .' " , " class " : " small-width " , " extra " : " '. $readonly .' " ]} ' ;
2017-08-04 16:28:16 +02:00
} 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 > ' ;
2018-02-16 15:45:15 +01:00
// Pulsante eliminazione sessione
echo '
< td > ' ;
2018-02-18 19:53:23 +01:00
2018-05-05 09:29:09 +02:00
if ( ! $flag_completato ) {
2018-02-16 15:45:15 +01:00
echo '
< a class = " btn btn-danger " id = " delbtn_'. $id .' " onclick = " elimina_sessione( \ ''. $id .' \ ', \ ''. $id_record .' \ ', \ ''. $idzona .' \ '); " title = " Elimina riga " class = " only_rw " >< i class = " fa fa-trash " ></ i ></ a > ' ;
}
2018-02-18 19:53:23 +01:00
2017-08-04 16:28:16 +02:00
echo '
</ td >
</ tr > ' ;
// Intestazione tecnico
if ( ! isset ( $rs2 [ $key + 1 ][ 'ragione_sociale' ]) || $r [ 'ragione_sociale' ] != $rs2 [ $key + 1 ][ 'ragione_sociale' ]) {
echo '
</ table >
</ div > ' ;
}
}
} else {
echo
2018-02-21 10:54:11 +01:00
'<div class=\'alert alert-info\' ><i class=\'fa fa-info-circle\'></i> ' . tr ( 'Nessun tecnico assegnato' ) . '.</div>' ;
2017-08-04 16:28:16 +02:00
}
2018-05-05 09:29:09 +02:00
if ( ! $flag_completato ) {
2018-02-16 15:45:15 +01:00
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 > ' ;
}
2017-08-04 16:28:16 +02:00
?>
2018-02-18 19:53:23 +01:00
< script src = " <?php echo $rootdir ; ?>/lib/init.js " ></ script >
2017-08-04 16:28:16 +02:00
2017-09-01 18:13:25 +02:00
< script type = " text/javascript " >
$ ( document ) . ready ( function (){
$ ( '.orari' ) . on ( " dp.change " , function (){
idriga = $ ( this ) . attr ( 'id' ) . split ( '_' )[ 1 ];
2017-08-04 16:28:16 +02:00
2017-09-01 18:13:25 +02:00
start = $ ( '#inizio_' + idriga ) . val ();
end = $ ( '#fine_' + idriga ) . val ();
2017-08-04 16:28:16 +02:00
calcola_ore ( idriga , start , end );
});
2017-09-01 18:13:25 +02:00
$ ( " .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 );
}
});
2017-08-04 16:28:16 +02:00
});
</ script >