gest366/modules/agenda/ajax_tecnici.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>