Advertisement
Guest User

aqui

a guest
Sep 19th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.10 KB | None | 0 0
  1. DECLARE @fecIni DATE = '2019-09-17',
  2. @fecFin DATE = '2019-09-18';
  3. WITH lista_tiempo AS (
  4. SELECT fecha, idDia dia FROM General.dbo.tiempo WHERE fecha BETWEEN @fecIni AND @fecFin
  5. ),lista_horario AS (
  6. SELECT
  7. h.horaIngreso,
  8. h.horaSalida,
  9. h.horaProg,
  10. dh.idDia,
  11. dh.idCargoTrabajo,
  12. dh.idEmpleado,
  13. t.idFeriado,
  14. t.fecha
  15. FROM
  16. rrhh.asistencia.horarioAdmin h
  17. JOIN rrhh.asistencia.detalleHorario dh ON dh.idHorarioAdmin = h.idHorarioAdmin
  18. JOIN general.dbo.tiempo t ON t.idDia = dh.idDia
  19. AND t.fecha BETWEEN @fecIni AND @fecFin
  20. WHERE
  21. h.estado = 1
  22. AND t.fecha BETWEEN dh.fecIni AND ISNULL(dh.fecFin, t.fecha)
  23. /*
  24. AND (
  25. dh.fecIni <= ISNULL(dh.fecFin, @fecFin)
  26. AND (
  27. dh.fecIni BETWEEN @fecIni
  28. AND @fecFin
  29. OR ISNULL(dh.fecFin, @fecFin) BETWEEN @fecIni
  30. AND @fecFin
  31. OR @fecIni BETWEEN dh.fecIni
  32. AND ISNULL(dh.fecFin, @fecFin)
  33. OR @fecFin BETWEEN dh.fecIni
  34. AND ISNULL(dh.fecFin, @fecFin)
  35. )
  36. )*/
  37. ),
  38. lista_horario_empleado AS (
  39. SELECT
  40. DISTINCT dh.idEmpleado, t.fecha, dh.idDia
  41. FROM
  42. rrhh.asistencia.horarioAdmin h
  43. JOIN rrhh.asistencia.detalleHorario dh ON dh.idHorarioAdmin = h.idHorarioAdmin
  44. JOIN general.dbo.tiempo t ON t.idDia = dh.idDia AND t.fecha BETWEEN @fecIni AND @fecFin
  45. WHERE
  46. h.estado = 1
  47. AND t.fecha BETWEEN dh.fecIni AND ISNULL(dh.fecFin, t.fecha)
  48. /*AND (
  49. dh.fecIni <= ISNULL(dh.fecFin, @fecFin)
  50. AND (
  51. dh.fecIni BETWEEN @fecIni
  52. AND @fecFin
  53. OR ISNULL(dh.fecFin, @fecFin) BETWEEN @fecIni
  54. AND @fecFin
  55. OR @fecIni BETWEEN dh.fecIni
  56. AND ISNULL(dh.fecFin, @fecFin)
  57. OR @fecFin BETWEEN dh.fecIni
  58. AND ISNULL(dh.fecFin, @fecFin)
  59. )
  60. )
  61. AND dh.idEmpleado IS NOT NULL
  62. */
  63. )
  64. --
  65. SELECT
  66. DISTINCT em.idEmpresa idUnidadNegocio,
  67. t.dia,
  68. t.fecha,
  69. UPPER(em.nombre) unidadNegocio,
  70. u.cod_ubigeo cod_sede,
  71. u.distrito as sede,
  72. /*, a.idArea*/
  73. /*, a.nombre area*/
  74. ct.idCargoTrabajo,
  75. ct.nombre cargoTrabajo,
  76. e.idEmpleado,
  77. e.apePaterno + ' ' + e.apeMaterno + ' ' + e.nombres empleado,
  78. CASE
  79. WHEN (lh_e.idEmpleado IS NOT NULL) THEN lh_1.idDia
  80. ELSE lh_2.idDia
  81. END idDia,
  82. CASE
  83. WHEN (lh_e.idEmpleado IS NOT NULL) THEN lh_1.horaIngreso
  84. ELSE lh_2.horaIngreso
  85. END horarioIng,
  86. CASE
  87. WHEN (lh_e.idEmpleado IS NOT NULL) THEN lh_1.horaSalida
  88. ELSE lh_2.horaSalida
  89. END horarioSal,
  90. at.horaIngreso,
  91. at.horaSalida,
  92. at.motivoTardanza,
  93. at.observacionIngreso,
  94. tm.idTipoMarcacion,
  95. tm.descripcion tipoMarcacion,
  96. CASE
  97. WHEN (lh_e.idEmpleado IS NOT NULL) THEN ISNULL(
  98. DATEDIFF(MINUTE, lh_1.horaIngreso, at.horaIngreso),
  99. 0
  100. )
  101. ELSE ISNULL(
  102. DATEDIFF(MINUTE, lh_2.horaIngreso, at.horaIngreso),
  103. 0
  104. )
  105. END as minutosTarde,
  106. CASE
  107. WHEN (lh_e.idEmpleado IS NOT NULL) THEN CASE
  108. WHEN (
  109. ISNULL(
  110. DATEDIFF(MINUTE, lh_1.horaIngreso, at.horaIngreso),
  111. 0
  112. ) > 0
  113. ) THEN 1
  114. ELSE 0
  115. END
  116. ELSE CASE
  117. WHEN (
  118. ISNULL(
  119. DATEDIFF(MINUTE, lh_2.horaIngreso, at.horaIngreso),
  120. 0
  121. ) > 0
  122. ) THEN 1
  123. ELSE 0
  124. END
  125. END tardanza,
  126. CASE
  127. WHEN (vd.idVacaciones IS NOT NULL) THEN 1
  128. ELSE 0
  129. END vacaciones,
  130. CASE
  131. WHEN (oc.idOcurrencias IS NOT NULL) THEN 1
  132. ELSE 0
  133. END ocurrencia,
  134. CASE
  135. WHEN (
  136. at.horaIngreso IS NOT NULL
  137. OR at.horaSalida IS NOT NULL
  138. ) THEN 1
  139. ELSE 0
  140. END marco,
  141. CASE
  142. WHEN (jf.idJustificarFalta IS NOT NULL) THEN 1
  143. ELSE 0
  144. END justifica,
  145. CASE
  146. WHEN (lh_e.idEmpleado IS NOT NULL) THEN lh_1.idFeriado
  147. ELSE lh_2.idFeriado
  148. END idFeriado,
  149. toc.nombre nom_ocurrencia,
  150. CONVERT(VARCHAR(25), em.idEmpresa) + CONVERT(VARCHAR(25), ec.idCanal) + CONVERT(VARCHAR(25), ec.idSubCanal) idArea,
  151. /*idCentro_costo*/
  152. ISNULL(ec.subCanal, 'NO ASIGNADO') area,
  153. /*centro_costo*/
  154. at.longitudIngreso long1,
  155. at.latitudIngreso lati1,
  156. at.longitudSalida long2,
  157. at.latitudSalida lati2,
  158. lh_e.idEmpleado horario_empleado,
  159. CASE
  160. WHEN (tm.idTipoMarcacion = 3) THEN 'http://movil.visualimpact.com.pe/fotos/visual/asistencia/' + af.imgReferencia
  161. END foto,
  162. CASE
  163. WHEN (tm.idTipoMarcacion = 3) THEN 'http://movil.visualimpact.com.pe/fotos/visual/asistencia/' + af2.imgReferencia
  164. END foto_
  165. FROM
  166. rrhh.dbo.Empleado e
  167. CROSS JOIN lista_tiempo t
  168. JOIN rrhh.dbo.CargoTrabajo ct ON ct.idCargoTrabajo = e.idCargoTrabajo
  169. JOIN rrhh.dbo.Area a ON a.idArea = ct.idArea
  170. JOIN rrhh.dbo.Empresa em ON em.idEmpresa = a.idEmpresa
  171. LEFT JOIN rrhh.dbo.empleadoCanalSubCanal ecs ON ecs.idEmpleado = e.idEmpleado
  172. AND t.fecha BETWEEN ecs.fecInicio AND ISNULL(ecs.fecFin,t.fecha)
  173. /*AND (
  174. ecs.fecInicio <= ISNULL(ecs.fecFin, @fecFin)
  175. AND (
  176. ecs.fecInicio BETWEEN @fecIni
  177. AND @fecFin
  178. OR ISNULL(ecs.fecFin, @fecFin) BETWEEN @fecIni
  179. AND @fecFin
  180. OR @fecIni BETWEEN ecs.fecInicio
  181. AND ISNULL(ecs.fecFin, @fecFin)
  182. OR @fecFin BETWEEN ecs.fecInicio
  183. AND ISNULL(ecs.fecFin, @fecFin)
  184. )
  185. )*/
  186. ---
  187. LEFT JOIN lista_horario lh_1 ON lh_1.idEmpleado = e.idEmpleado AND lh_1.idDia = t.dia
  188. LEFT JOIN lista_horario lh_2 ON lh_2.idEmpleado IS NULL
  189. AND lh_2.idCargoTrabajo = ct.idCargoTrabajo AND lh_2.idDia = t.dia
  190. LEFT JOIN lista_horario_empleado lh_e ON lh_e.idEmpleado = e.idEmpleado AND lh_e.idDia = t.dia
  191. ---
  192. LEFT JOIN rrhh.dbo.empresa_Canal ec ON ec.idEmpresa = ecs.idEmpresa
  193. AND ecs.idCanal = ec.idCanal
  194. AND ec.idSubCanal = ecs.idSubCanal
  195. LEFT JOIN rrhh.asistencia.data_asistencia_movil af ON af.idUsuario = e.idEmpleado
  196. AND af.fecha = t.fecha
  197. -- AND af.fecha = @fecIni
  198. AND af.imgReferencia IS NOT NULL
  199. AND af.idTipo = 1
  200. LEFT JOIN rrhh.asistencia.data_asistencia_movil af2 ON af2.idUsuario = e.idEmpleado
  201. AND af2.fecha = t.fecha
  202. -- AND af2.fecha = @fecIni
  203. AND af2.imgReferencia IS NOT NULL
  204. AND af2.idTipo = 2
  205. JOIN General.dbo.ubigeo u ON e.idDireccionUbigeoLaboral = u.cod_ubigeo
  206.  
  207. LEFT JOIN rrhh.asistencia.asistencia at ON e.idEmpleado = at.idEmpleado
  208. AND at.fechaIngreso=t.fecha
  209. -- AND at.fechaIngreso = @fecIni
  210. LEFT JOIN rrhh.asistencia.tipoMarcacion tm ON at.idTipoMarcacionIngreso = tm.idTipoMarcacion
  211. LEFT JOIN rrhh.dbo.vacacionesDetalle vd ON vd.idEmpleado = e.idEmpleado
  212. AND t.fecha BETWEEN vd.fecSalida AND ISNULL(vd.fecRetorno, t.fecha)
  213. /*AND (
  214. vd.fecSalida <= ISNULL(vd.fecRetorno, @fecFin)
  215. AND (
  216. vd.fecSalida BETWEEN @fecIni
  217. AND @fecFin
  218. OR ISNULL(vd.fecRetorno, @fecFin) BETWEEN @fecIni
  219. AND @fecFin
  220. OR @fecIni BETWEEN vd.fecSalida
  221. AND ISNULL(vd.fecRetorno, @fecFin)
  222. OR @fecFin BETWEEN vd.fecSalida
  223. AND ISNULL(vd.fecRetorno, @fecFin)
  224. )
  225. )*/
  226. LEFT JOIN rrhh.dbo.Ocurrencias oc ON oc.idEmpleado = e.idEmpleado
  227. AND t.fecha BETWEEN oc.fecInicio AND ISNULL(oc.fecTermino, t.fecha)
  228. /*AND (
  229. oc.fecInicio <= ISNULL(oc.fecTermino, @fecFin)
  230. AND (
  231. oc.fecInicio BETWEEN @fecIni
  232. AND @fecFin
  233. OR ISNULL(oc.fecTermino, @fecFin) BETWEEN @fecIni
  234. AND @fecFin
  235. OR @fecIni BETWEEN oc.fecInicio
  236. AND ISNULL(oc.fecTermino, @fecFin)
  237. OR @fecFin BETWEEN oc.fecInicio
  238. AND ISNULL(oc.fecTermino, @fecFin)
  239. )
  240. )*/
  241. LEFT JOIN rrhh.asistencia.justificarFalta jf ON jf.idEmpleado = e.idEmpleado
  242. AND jf.fecha = t.fecha
  243. -- AND jf.fecha = @fecIni
  244. LEFT JOIN rrhh.dbo.TipoOcurrencia toc ON toc.idTipoOcurrencia = oc.idTipoOcurrencia
  245. WHERE
  246. e.flag = 'ACTIVO'
  247. AND e.idEmpleado NOT IN (
  248. SELECT
  249. idEmpleado
  250. FROM
  251. rrhh.asistencia.empleado_nobuscar
  252. WHERE
  253. estado = 1
  254. )
  255. AND em.idEmpresa = 2
  256. AND ct.idCargoTrabajo IN (
  257. 488,
  258. 448,
  259. 404,
  260. 460,
  261. 494,
  262. 36,
  263. 203,
  264. 279,
  265. 513,
  266. 456,
  267. 411
  268. )
  269. AND CONVERT(VARCHAR(25), em.idEmpresa) + CONVERT(VARCHAR(25), ec.idCanal) + CONVERT(VARCHAR(25), ec.idSubCanal) NOT IN(245, 251, 261)
  270. ORDER BY
  271. unidadNegocio,
  272. sede,
  273. area,
  274. cargoTrabajo,
  275. empleado ASC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement