Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE @fecIni DATE = '2019-09-17',
- @fecFin DATE = '2019-09-18';
- WITH lista_tiempo AS (
- SELECT fecha, idDia dia FROM General.dbo.tiempo WHERE fecha BETWEEN @fecIni AND @fecFin
- ),lista_horario AS (
- SELECT
- h.horaIngreso,
- h.horaSalida,
- h.horaProg,
- dh.idDia,
- dh.idCargoTrabajo,
- dh.idEmpleado,
- t.idFeriado,
- t.fecha
- FROM
- rrhh.asistencia.horarioAdmin h
- JOIN rrhh.asistencia.detalleHorario dh ON dh.idHorarioAdmin = h.idHorarioAdmin
- JOIN general.dbo.tiempo t ON t.idDia = dh.idDia
- AND t.fecha BETWEEN @fecIni AND @fecFin
- WHERE
- h.estado = 1
- AND t.fecha BETWEEN dh.fecIni AND ISNULL(dh.fecFin, t.fecha)
- /*
- AND (
- dh.fecIni <= ISNULL(dh.fecFin, @fecFin)
- AND (
- dh.fecIni BETWEEN @fecIni
- AND @fecFin
- OR ISNULL(dh.fecFin, @fecFin) BETWEEN @fecIni
- AND @fecFin
- OR @fecIni BETWEEN dh.fecIni
- AND ISNULL(dh.fecFin, @fecFin)
- OR @fecFin BETWEEN dh.fecIni
- AND ISNULL(dh.fecFin, @fecFin)
- )
- )*/
- ),
- lista_horario_empleado AS (
- SELECT
- DISTINCT dh.idEmpleado, t.fecha, dh.idDia
- FROM
- rrhh.asistencia.horarioAdmin h
- JOIN rrhh.asistencia.detalleHorario dh ON dh.idHorarioAdmin = h.idHorarioAdmin
- JOIN general.dbo.tiempo t ON t.idDia = dh.idDia AND t.fecha BETWEEN @fecIni AND @fecFin
- WHERE
- h.estado = 1
- AND t.fecha BETWEEN dh.fecIni AND ISNULL(dh.fecFin, t.fecha)
- /*AND (
- dh.fecIni <= ISNULL(dh.fecFin, @fecFin)
- AND (
- dh.fecIni BETWEEN @fecIni
- AND @fecFin
- OR ISNULL(dh.fecFin, @fecFin) BETWEEN @fecIni
- AND @fecFin
- OR @fecIni BETWEEN dh.fecIni
- AND ISNULL(dh.fecFin, @fecFin)
- OR @fecFin BETWEEN dh.fecIni
- AND ISNULL(dh.fecFin, @fecFin)
- )
- )
- AND dh.idEmpleado IS NOT NULL
- */
- )
- --
- SELECT
- DISTINCT em.idEmpresa idUnidadNegocio,
- t.dia,
- t.fecha,
- UPPER(em.nombre) unidadNegocio,
- u.cod_ubigeo cod_sede,
- u.distrito as sede,
- /*, a.idArea*/
- /*, a.nombre area*/
- ct.idCargoTrabajo,
- ct.nombre cargoTrabajo,
- e.idEmpleado,
- e.apePaterno + ' ' + e.apeMaterno + ' ' + e.nombres empleado,
- CASE
- WHEN (lh_e.idEmpleado IS NOT NULL) THEN lh_1.idDia
- ELSE lh_2.idDia
- END idDia,
- CASE
- WHEN (lh_e.idEmpleado IS NOT NULL) THEN lh_1.horaIngreso
- ELSE lh_2.horaIngreso
- END horarioIng,
- CASE
- WHEN (lh_e.idEmpleado IS NOT NULL) THEN lh_1.horaSalida
- ELSE lh_2.horaSalida
- END horarioSal,
- at.horaIngreso,
- at.horaSalida,
- at.motivoTardanza,
- at.observacionIngreso,
- tm.idTipoMarcacion,
- tm.descripcion tipoMarcacion,
- CASE
- WHEN (lh_e.idEmpleado IS NOT NULL) THEN ISNULL(
- DATEDIFF(MINUTE, lh_1.horaIngreso, at.horaIngreso),
- 0
- )
- ELSE ISNULL(
- DATEDIFF(MINUTE, lh_2.horaIngreso, at.horaIngreso),
- 0
- )
- END as minutosTarde,
- CASE
- WHEN (lh_e.idEmpleado IS NOT NULL) THEN CASE
- WHEN (
- ISNULL(
- DATEDIFF(MINUTE, lh_1.horaIngreso, at.horaIngreso),
- 0
- ) > 0
- ) THEN 1
- ELSE 0
- END
- ELSE CASE
- WHEN (
- ISNULL(
- DATEDIFF(MINUTE, lh_2.horaIngreso, at.horaIngreso),
- 0
- ) > 0
- ) THEN 1
- ELSE 0
- END
- END tardanza,
- CASE
- WHEN (vd.idVacaciones IS NOT NULL) THEN 1
- ELSE 0
- END vacaciones,
- CASE
- WHEN (oc.idOcurrencias IS NOT NULL) THEN 1
- ELSE 0
- END ocurrencia,
- CASE
- WHEN (
- at.horaIngreso IS NOT NULL
- OR at.horaSalida IS NOT NULL
- ) THEN 1
- ELSE 0
- END marco,
- CASE
- WHEN (jf.idJustificarFalta IS NOT NULL) THEN 1
- ELSE 0
- END justifica,
- CASE
- WHEN (lh_e.idEmpleado IS NOT NULL) THEN lh_1.idFeriado
- ELSE lh_2.idFeriado
- END idFeriado,
- toc.nombre nom_ocurrencia,
- CONVERT(VARCHAR(25), em.idEmpresa) + CONVERT(VARCHAR(25), ec.idCanal) + CONVERT(VARCHAR(25), ec.idSubCanal) idArea,
- /*idCentro_costo*/
- ISNULL(ec.subCanal, 'NO ASIGNADO') area,
- /*centro_costo*/
- at.longitudIngreso long1,
- at.latitudIngreso lati1,
- at.longitudSalida long2,
- at.latitudSalida lati2,
- lh_e.idEmpleado horario_empleado,
- CASE
- WHEN (tm.idTipoMarcacion = 3) THEN 'http://movil.visualimpact.com.pe/fotos/visual/asistencia/' + af.imgReferencia
- END foto,
- CASE
- WHEN (tm.idTipoMarcacion = 3) THEN 'http://movil.visualimpact.com.pe/fotos/visual/asistencia/' + af2.imgReferencia
- END foto_
- FROM
- rrhh.dbo.Empleado e
- CROSS JOIN lista_tiempo t
- JOIN rrhh.dbo.CargoTrabajo ct ON ct.idCargoTrabajo = e.idCargoTrabajo
- JOIN rrhh.dbo.Area a ON a.idArea = ct.idArea
- JOIN rrhh.dbo.Empresa em ON em.idEmpresa = a.idEmpresa
- LEFT JOIN rrhh.dbo.empleadoCanalSubCanal ecs ON ecs.idEmpleado = e.idEmpleado
- AND t.fecha BETWEEN ecs.fecInicio AND ISNULL(ecs.fecFin,t.fecha)
- /*AND (
- ecs.fecInicio <= ISNULL(ecs.fecFin, @fecFin)
- AND (
- ecs.fecInicio BETWEEN @fecIni
- AND @fecFin
- OR ISNULL(ecs.fecFin, @fecFin) BETWEEN @fecIni
- AND @fecFin
- OR @fecIni BETWEEN ecs.fecInicio
- AND ISNULL(ecs.fecFin, @fecFin)
- OR @fecFin BETWEEN ecs.fecInicio
- AND ISNULL(ecs.fecFin, @fecFin)
- )
- )*/
- ---
- LEFT JOIN lista_horario lh_1 ON lh_1.idEmpleado = e.idEmpleado AND lh_1.idDia = t.dia
- LEFT JOIN lista_horario lh_2 ON lh_2.idEmpleado IS NULL
- AND lh_2.idCargoTrabajo = ct.idCargoTrabajo AND lh_2.idDia = t.dia
- LEFT JOIN lista_horario_empleado lh_e ON lh_e.idEmpleado = e.idEmpleado AND lh_e.idDia = t.dia
- ---
- LEFT JOIN rrhh.dbo.empresa_Canal ec ON ec.idEmpresa = ecs.idEmpresa
- AND ecs.idCanal = ec.idCanal
- AND ec.idSubCanal = ecs.idSubCanal
- LEFT JOIN rrhh.asistencia.data_asistencia_movil af ON af.idUsuario = e.idEmpleado
- AND af.fecha = t.fecha
- -- AND af.fecha = @fecIni
- AND af.imgReferencia IS NOT NULL
- AND af.idTipo = 1
- LEFT JOIN rrhh.asistencia.data_asistencia_movil af2 ON af2.idUsuario = e.idEmpleado
- AND af2.fecha = t.fecha
- -- AND af2.fecha = @fecIni
- AND af2.imgReferencia IS NOT NULL
- AND af2.idTipo = 2
- JOIN General.dbo.ubigeo u ON e.idDireccionUbigeoLaboral = u.cod_ubigeo
- LEFT JOIN rrhh.asistencia.asistencia at ON e.idEmpleado = at.idEmpleado
- AND at.fechaIngreso=t.fecha
- -- AND at.fechaIngreso = @fecIni
- LEFT JOIN rrhh.asistencia.tipoMarcacion tm ON at.idTipoMarcacionIngreso = tm.idTipoMarcacion
- LEFT JOIN rrhh.dbo.vacacionesDetalle vd ON vd.idEmpleado = e.idEmpleado
- AND t.fecha BETWEEN vd.fecSalida AND ISNULL(vd.fecRetorno, t.fecha)
- /*AND (
- vd.fecSalida <= ISNULL(vd.fecRetorno, @fecFin)
- AND (
- vd.fecSalida BETWEEN @fecIni
- AND @fecFin
- OR ISNULL(vd.fecRetorno, @fecFin) BETWEEN @fecIni
- AND @fecFin
- OR @fecIni BETWEEN vd.fecSalida
- AND ISNULL(vd.fecRetorno, @fecFin)
- OR @fecFin BETWEEN vd.fecSalida
- AND ISNULL(vd.fecRetorno, @fecFin)
- )
- )*/
- LEFT JOIN rrhh.dbo.Ocurrencias oc ON oc.idEmpleado = e.idEmpleado
- AND t.fecha BETWEEN oc.fecInicio AND ISNULL(oc.fecTermino, t.fecha)
- /*AND (
- oc.fecInicio <= ISNULL(oc.fecTermino, @fecFin)
- AND (
- oc.fecInicio BETWEEN @fecIni
- AND @fecFin
- OR ISNULL(oc.fecTermino, @fecFin) BETWEEN @fecIni
- AND @fecFin
- OR @fecIni BETWEEN oc.fecInicio
- AND ISNULL(oc.fecTermino, @fecFin)
- OR @fecFin BETWEEN oc.fecInicio
- AND ISNULL(oc.fecTermino, @fecFin)
- )
- )*/
- LEFT JOIN rrhh.asistencia.justificarFalta jf ON jf.idEmpleado = e.idEmpleado
- AND jf.fecha = t.fecha
- -- AND jf.fecha = @fecIni
- LEFT JOIN rrhh.dbo.TipoOcurrencia toc ON toc.idTipoOcurrencia = oc.idTipoOcurrencia
- WHERE
- e.flag = 'ACTIVO'
- AND e.idEmpleado NOT IN (
- SELECT
- idEmpleado
- FROM
- rrhh.asistencia.empleado_nobuscar
- WHERE
- estado = 1
- )
- AND em.idEmpresa = 2
- AND ct.idCargoTrabajo IN (
- 488,
- 448,
- 404,
- 460,
- 494,
- 36,
- 203,
- 279,
- 513,
- 456,
- 411
- )
- AND CONVERT(VARCHAR(25), em.idEmpresa) + CONVERT(VARCHAR(25), ec.idCanal) + CONVERT(VARCHAR(25), ec.idSubCanal) NOT IN(245, 251, 261)
- ORDER BY
- unidadNegocio,
- sede,
- area,
- cargoTrabajo,
- empleado ASC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement