INSERT INTO xml_turni
(id,idturno,idpersona,iddipendente,codfisc,matricola,data,ora_inizio,ora_fine,tipol_inizio,tipol_fine,kind)
SELECT det.id
, det.idturno
, det.idpersona
, det.iddipendente
, UPPER(TRIM(p.codfisc)) AS codfisc
, UPPER(IFNULL(SET_VAL(dip.numero),CONCAT('_missing_matricola_',LOWER(TRIM(IFNULL(SET_VAL(p.codfisc),''))),'_'))) AS matricola
, IF(t.data_inizio < @start,t.data_fine,t.data_fine) AS data
, IF(t.data_inizio < @start,'00:00',t.ora_inizio) AS ora_inizio
, IF(t.data_fine > @stop,'23:59',t.ora_fine) AS ora_fine

, IF(t.data_inizio < @start,'00:00',tipo.ora_inizio) AS tipol_inizio
, IF(t.data_fine > @stop,'23:59',tipo.ora_fine) AS tipol_fine
, gruppo.codice AS kind

FROM dip_turni AS t
INNER JOIN dip_tipologie AS tipo ON (t.idtipologia=tipo.id)
INNER JOIN dip_gruppi AS gruppo ON (tipo.idgruppo=gruppo.id)
INNER JOIN dip_turni_dettagli AS det ON (t.id=det.idturno)
INNER JOIN a_anapersone AS p ON (p.idcontatto=@idcontatto AND det.idpersona=p.id AND det.iddipendente IS NOT NULL)
INNER JOIN a_dipendenti AS dip ON (p.idcontatto=dip.idcontatto AND p.id=dip.idpersona)
WHERE GREATEST(t.data_inizio,t.data_fine) >= @start AND t.data_inizio <= @stop
ORDER BY ora_inizio, codfisc