291 lines
11 KiB
PHP
291 lines
11 KiB
PHP
|
<?php
|
||
|
include_once(__DIR__."/../../core.php");
|
||
|
|
||
|
$module_name = 'Agenda';
|
||
|
|
||
|
include_once($docroot."/lib/permissions_check.php");
|
||
|
include_once($docroot."/modules/agenda/modutil.php");
|
||
|
|
||
|
|
||
|
if( isset($_GET['idintervento']) ){
|
||
|
$idintervento = save($_GET['idintervento']);
|
||
|
}
|
||
|
|
||
|
|
||
|
// OPERAZIONI PER AGGIUNTA NUOVA SESSIONE DI LAVORO
|
||
|
if( $_GET['op'] == 'add_sessione' ){
|
||
|
$idtecnico = save($_GET['idtecnico']);
|
||
|
$idintervento = save($_GET['idintervento']);
|
||
|
$idtipoagendat = save($_GET['idtipoagenda']);
|
||
|
|
||
|
$orario_inizio = date('Y-m-d H:\0\0');
|
||
|
$orario_fine = date('Y-m-d H:\0\0' );
|
||
|
|
||
|
|
||
|
|
||
|
//inserisco le ore dei tecnici nella tabella "agenda_anagrafica"
|
||
|
$dbo->query("INSERT INTO agenda_anagrafica( idintervento, idtecnico, idtipoagenda, orario_inizio, orario_fine ) ".
|
||
|
"VALUES( '$idintervento', '$idtecnico', '$idtipoagendat', '$orario_inizio', '$orario_fine')");
|
||
|
}
|
||
|
|
||
|
//RIMOZIONE SESSIONE DI LAVORO
|
||
|
if( $_GET['op'] == 'del_sessione' ){
|
||
|
$dbo->query("DELETE FROM agenda_anagrafica WHERE id=\"".save( $_GET['id'] )."\"");
|
||
|
}
|
||
|
|
||
|
|
||
|
//RECUPERO IL TIPO DI APPUNTAMENTO
|
||
|
$rs = $dbo->fetchArray("SELECT idtipoagenda FROM agenda WHERE idintervento=\"".$idintervento."\"");
|
||
|
$idtipoagendat = $rs[0]['idtipoagenda'];
|
||
|
|
||
|
|
||
|
//di default mostro i costi
|
||
|
$show_costi = 1;
|
||
|
|
||
|
|
||
|
//Estraggo l'id del tipoanagrafica che è TECNICO
|
||
|
$qq2 = "SELECT * FROM an_tipianagrafiche WHERE descrizione='Tecnico'";
|
||
|
$rs2 = $dbo->fetchArray( $qq2 );
|
||
|
$idtipoanagraficatecnico = $rs2[0]['idtipoanagrafica'];
|
||
|
|
||
|
|
||
|
//SE ESISTE IL TIPO DI ANAGRAFICA TECNICO
|
||
|
if( sizeof($rs2)>0 ){
|
||
|
//SELEZIONO TUTTI I TECNICI DELLA ZONA SCELTA (potenziali tecnici) O TECNICI GIA' SCELTI
|
||
|
( $idzona=='0' ) ? $WHERE_zona='' : $WHERE_zona=' AND (idzona="'.$idzona.'" OR an_anagrafiche.idanagrafica IN(SELECT idtecnico FROM agenda_anagrafica WHERE idintervento="'.$idintervento.'") )';
|
||
|
|
||
|
$q2 = "SELECT * FROM an_tipianagrafiche_anagrafiche INNER JOIN an_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica=an_anagrafiche.idanagrafica WHERE deleted=0 AND idtipoanagrafica='".$idtipoanagraficatecnico."' $WHERE_zona ORDER BY ragione_sociale ASC";
|
||
|
$rs2 = $dbo->fetchArray( $q2 );
|
||
|
$n2 = sizeof($rs2);
|
||
|
$prev_tecnico = "";
|
||
|
|
||
|
//se non ho ancora impostato un tecnico mostro il messaggio
|
||
|
if( $n2<=0 ){
|
||
|
echo "... Nessun tecnico disponibile ...<br>\n";
|
||
|
}
|
||
|
|
||
|
else{
|
||
|
// #### INIZIO PER OGNI POTENZIALE TECNICO #####
|
||
|
for( $i=0; $i<$n2; $i++ ){
|
||
|
$idtecnico = $rs2[$i]['idanagrafica'];
|
||
|
|
||
|
//Estraggo le sessioni di lavoro del tecnico
|
||
|
$q3 = "SELECT * FROM agenda_anagrafica WHERE idintervento='".$idintervento."' AND idtecnico='".$idtecnico."'";
|
||
|
$rs3 = $dbo->fetchArray( $q3 );
|
||
|
$n3 = sizeof($rs3);
|
||
|
|
||
|
//Se il tecnico ha lavorato all'intervento lo mostro subito, altrimenti lo nascondo
|
||
|
if( $n3 == 0 ){
|
||
|
$class_tecnico = "hide tecnico-nonselezionato";
|
||
|
$mostra_campo_vuoto = true;
|
||
|
} else {
|
||
|
$class_tecnico = "";
|
||
|
$mostra_campo_vuoto = false;
|
||
|
}
|
||
|
|
||
|
|
||
|
//Intestazione tecnico
|
||
|
if( $prev_tecnico != $rs2[$i]['ragione_sociale'] ){
|
||
|
echo "<table class='table table-striped table-hover table-condensed ".$class_tecnico."'>\n";
|
||
|
echo "<tr>\n";
|
||
|
echo " <th width=\"300\"><i class='fa fa-user'></i> ".$rs2[$i]['ragione_sociale']."</th>\n";
|
||
|
echo " <th width=\"300\">Orario</th>\n";
|
||
|
echo " <th width=\"40\"></th>\n";
|
||
|
echo "</tr>\n";
|
||
|
}
|
||
|
|
||
|
|
||
|
//Se il tecnico ha sessioni di lavoro le mostro...
|
||
|
if( sizeof($rs3) > 0 ){
|
||
|
//Elenco sessioni di lavoro del tecnico
|
||
|
for($j=0; $j<$n3; $j++){
|
||
|
$id = $rs3[$j]['id'];
|
||
|
|
||
|
$s=' checked="checked"';
|
||
|
$display='';
|
||
|
|
||
|
|
||
|
$orario_inizio = "0000-00-00 00:00";
|
||
|
$orario_fine = "0000-00-00 00:00";
|
||
|
|
||
|
$pausa_inizio = "0000-00-00 00:00";
|
||
|
$pausa_fine = "0000-00-00 00:00";
|
||
|
|
||
|
if( $rs3[$j]['orario_inizio'] != "" ){
|
||
|
$orario_inizio = $rs3[$j]['orario_inizio'];
|
||
|
$orario_inizio = readDateTime( $orario_inizio );
|
||
|
}
|
||
|
|
||
|
if( $rs3[$j]['orario_fine'] != "" ){
|
||
|
$orario_fine = $rs3[$j]['orario_fine'];
|
||
|
$orario_fine = readDateTime( $orario_fine );
|
||
|
}
|
||
|
|
||
|
if( $rs3[$j]['pausa_inizio'] != "" ){
|
||
|
$pausa_inizio = $rs3[$j]['pausa_inizio'];
|
||
|
$pausa_inizio = readDateTime( $pausa_inizio );
|
||
|
}
|
||
|
if( $rs3[$j]['pausa_fine'] != "" ){
|
||
|
$pausa_fine = $rs3[$j]['pausa_fine'];
|
||
|
$pausa_fine = readDateTime( $pausa_fine );
|
||
|
}
|
||
|
|
||
|
|
||
|
$orario = $orario_inizio." - ".$orario_fine;
|
||
|
$pausa = $pausa_inizio." - ".$pausa_fine;
|
||
|
|
||
|
$km = $rs3[$j]['km'];
|
||
|
$ore = $rs3[$j]['ore'];
|
||
|
|
||
|
$sessione_data = readDate(substr($rs3[$j]['orario_inizio'], 0, 10));
|
||
|
$sessione_inizio = substr($rs3[$j]['orario_inizio'], 11, 5);
|
||
|
$sessione_fine = substr($rs3[$j]['orario_fine'], 11, 5);
|
||
|
|
||
|
|
||
|
echo "<input type='hidden' name='idtecnico[".$id."]' value=\"".$idtecnico."\" />\n";
|
||
|
|
||
|
|
||
|
|
||
|
echo "<tr class='".$class_tecnico."'>\n";
|
||
|
echo "<td class=\"tecn_".$rs3[$j]['idtecnico']."\">\n";
|
||
|
|
||
|
|
||
|
if( $rs[0]['stato'] != "Fatturato" ){
|
||
|
|
||
|
//Elenco tipologie di interventi
|
||
|
echo " <select class='superselect' id='idtipoagendat_$id' name='idtipoagendat[".$id."]' onchange='ricalcola_importo( $id );'>\n";
|
||
|
$rst = $dbo->fetchArray("SELECT idtipoagenda, descrizione, IFNULL((SELECT costo_ore FROM in_tariffe WHERE idtipoagenda=agenda_tipi.idtipoagenda AND idtecnico=\"".$rs3[$j]['idtecnico']."\"), 0) AS costo_orario FROM agenda_tipi ORDER BY descrizione");
|
||
|
for( $t=0; $t<sizeof($rst); $t++ ){
|
||
|
( $rst[$t]['idtipoagenda'] == $rs3[$j]['idtipoagenda'] ) ? $attr='selected="true"' : $attr='';
|
||
|
echo " <option value='".$rst[$t]['idtipoagenda']."' ".$attr." costo_orario=\"".$rst[$t]['costo_orario']."\">".$rst[$t]['descrizione']."</option>\n";
|
||
|
}
|
||
|
|
||
|
echo " </select>\n";
|
||
|
}
|
||
|
|
||
|
echo "</td>\n";
|
||
|
|
||
|
|
||
|
|
||
|
// Orario
|
||
|
echo "<td>\n";
|
||
|
if( $rs[0]['stato']=="Fatturato" ){
|
||
|
echo " <span>".$ora_dal1."</span>\n";
|
||
|
echo " <input type=\"hidden\" id=\"orario_".$id."\" name=\"orario[".$id."]\" style=\"".$display."\" value=\"".$orario."\">\n";
|
||
|
} else {
|
||
|
echo " <input class=\"form-control text-center datetimepicker\" type=\"text\" id=\"orario_".$id."\" name=\"orario[".$id."]\" style=\"".$display.";\" value=\"".$orario."\"\">\n";
|
||
|
}
|
||
|
echo "</td>\n";
|
||
|
|
||
|
|
||
|
echo " <input type='hidden' name='prezzo_ore_consuntivo[".$id."]' value=\"".number_format( $costo_ore_consuntivo, get_var("Cifre decimali"), ",", "" )."\" />\n";
|
||
|
echo " <input type='hidden' name='prezzo_km_consuntivo[".$id."]' value=\"".number_format( $costo_km_consuntivo, get_var("Cifre decimali"), ",", "" )."\" />\n";
|
||
|
echo " <input type='hidden' name='prezzo_ore_consuntivotecnico[".$id."]' value=\"".number_format( $costo_ore_consuntivo_tecnico, get_var("Cifre decimali"), ",", "" )."\" />\n";
|
||
|
echo " <input type='hidden' name='prezzo_km_consuntivotecnico[".$id."]' value=\"".number_format( $costo_km_consuntivo_tecnico, get_var("Cifre decimali"), ",", "" )."\" />\n";
|
||
|
echo "</td>\n";
|
||
|
|
||
|
|
||
|
//Pulsante aggiunta nuova sessione
|
||
|
echo "<td>\n";
|
||
|
echo " <a class='btn btn-danger' id='delbtn_".$id."' onclick=\"elimina_sessione( '".$id."', '".$idintervento."', '".$idzona."' );\" title=\"Elimina riga\" class=\"only_rw\"><i class=\"fa fa-trash-o\"></i></a>\n";
|
||
|
?>
|
||
|
<a class="btn btn-info" title="Operatore" target="_blank" href="<?php echo $rootdir ?>/editor.php?id_module=2&id_record=<?php echo $idtecnico ?>"><i class="fa fa-user"></i></a>
|
||
|
<?php
|
||
|
|
||
|
echo "</td>\n";
|
||
|
echo "</tr>\n";
|
||
|
}
|
||
|
//chiudo ciclo for
|
||
|
}
|
||
|
|
||
|
|
||
|
//...se il tecnico non ha sessioni di lavoro mostro il primo campo di aggiunta
|
||
|
elseif( sizeof($rs3) == 0 ){
|
||
|
echo "<tr class='".$class_tecnico."'>\n";
|
||
|
echo "<td class=\"tecn_".$rs3[$j]['idtecnico']."\">\n";
|
||
|
|
||
|
|
||
|
if( $rs[0]['stato'] != "Fatturato" ){
|
||
|
//Elenco tipologie di interventi
|
||
|
echo " <select class='superselect' name='idtipoagendat[0]'>\n";
|
||
|
|
||
|
$rst = $dbo->fetchArray("SELECT * FROM agenda_tipi ORDER BY descrizione");
|
||
|
|
||
|
for( $t=0; $t<sizeof($rst); $t++ ){
|
||
|
echo " <option value='".$rst[$t]['idtipoagenda']."' data-costo-orario=\"\">".$rst[$t]['descrizione']."</option>\n";
|
||
|
}
|
||
|
|
||
|
echo " </select>\n";
|
||
|
echo "</td>\n";
|
||
|
|
||
|
//Pulsante aggiunta nuova sessione
|
||
|
echo "<td colspan='7' class='text-right'>\n";
|
||
|
echo " <a class='btn btn-primary' id='addbtn_".$id."' onclick=\"add_tecnici( '".$idintervento."', '".$idtipoagendat."', ".$idtecnico.", '".$orario_fine."', '#tecnici' );\" class=\"only_rw\"><i class=\"fa fa-plus\"></i> Aggiungi sessione di lavoro</a>\n";
|
||
|
echo "</td>\n";
|
||
|
echo "</tr>\n";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//Chiudo la riga
|
||
|
echo "</table>\n";
|
||
|
|
||
|
$prev_tecnico = $rs2[$i]['ragione_sociale'];
|
||
|
}
|
||
|
// FINE PER OGNI POTENZIALE TECNICO ####
|
||
|
?>
|
||
|
|
||
|
<!-- AGGIUNTA TECNICO OPERATORE -->
|
||
|
<div class="row">
|
||
|
<div class="col-md-3">
|
||
|
{[ "type": "select", "label": "<?= _("Aggiungi Operatore"); ?>", "name": "nuovotecnico", "class": "", "extra": "", "ajax-source": "tecnici" ]}
|
||
|
<button type="button" class="btn btn-primary btn-block" onclick="if( $('#nuovotecnico').val() != null ){ add_tecnici( '<?= $idintervento ?>', '<?= $idtipoagendat ?>', $('#nuovotecnico').val(), '', '#tecnici' ); }else{ alert('Seleziona un tecnico!'); }"><i class="fa fa-plus"></i> Aggiungi operatore</button>
|
||
|
<br><br>
|
||
|
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
</div>
|
||
|
<?php
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
|
||
|
<script type="text/javascript" charset="utf-8">
|
||
|
$(document).ready( function(){
|
||
|
$('.datetimepicker').daterangepicker({
|
||
|
timePicker: true,
|
||
|
timePickerIncrement: 5,
|
||
|
locale: {
|
||
|
format: "DD/MM/YYYY HH:mm",
|
||
|
separator: " - ",
|
||
|
applyLabel: "<?= _("Applica") ?>",
|
||
|
cancelLabel: "<?= _("Annulla") ?>",
|
||
|
fromLabel: "<?= _("Da") ?>",
|
||
|
toLabel: "<?= _("A") ?>",
|
||
|
customRangeLabel: "<?= _("Personalizzato") ?>",
|
||
|
monthNames: ["<?= _("Gennaio") ?>","<?= _("Febbraio") ?>","<?= _("Marzo") ?>","<?= _("Aprile") ?>","<?= _("Maggio") ?>","<?= _("Giugno") ?>","<?= _("Luglio") ?>","<?= _("Agosto") ?>","<?= _("Settembre") ?>","<?= _("Ottobre") ?>","<?= _("Novembre") ?>","<?= _("Dicembre") ?>"],
|
||
|
daysOfWeek: ["<?= _("Do") ?>","<?= _("Lu") ?>","<?= _("Ma") ?>","<?= _("Me") ?>","<?= _("Gi") ?>","<?= _("Ve") ?>","<?= _("Sa") ?>"],
|
||
|
"firstDay": 1
|
||
|
},
|
||
|
timePicker24Hour: true,
|
||
|
applyClass: 'btn btn-success btn-sm',
|
||
|
cancelClass: 'btn btn-danger btn-sm',
|
||
|
}
|
||
|
).on('change', function(){
|
||
|
id = $(this).attr('id').split('_');
|
||
|
idriga = id[1];
|
||
|
|
||
|
orario = $('#orario_'+idriga).val();
|
||
|
o = orario.split(' - ');
|
||
|
|
||
|
start = o[0];
|
||
|
end = o[1];
|
||
|
|
||
|
calcola_ore( idriga, start, end );
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
<script type="text/javascript" charset="utf-8" src="<?= $rootdir ?>/lib/init.js"></script>
|