Saltar al contenido

sql2000 – procedimiento almacenado


EXEC spCA_listado_movilidad ’16/10/2008′, ‘E’, 1, 2
EXEC spCA_listado_movilidad ’16/10/2008′, ‘S’, 1, 2

— @FECHA: FECHA DE EMISION DE REPORTE
— @TIPO : ENTRADA(E) O SALIDA(S)
— @TIPO_MOVIL: TAXI:1 / ACERCAMIENTO:2
— @codigo_de_ruta

ALTER PROCEDURE dbo.spCA_listado_movilidad
@FECHA VARCHAR(10),
@TIPO CHAR(1),
@TIPO_MOVIL INT,
@COD_RUTA INT
AS

DECLARE @fecha_actual datetime
DECLARE @FECHA_INICIO DATETIME, @FECHA_FIN DATETIME
DECLARE @HORA_INICIO VARCHAR(5), @HORA_FIN VARCHAR(5)
DECLARE @HORA_FIN_RUTA INT

SELECT @HORA_INICIO=ITEM_DEFAULT FROM ITEMS WHERE ITEM_CODIGO=640
SELECT @HORA_FIN=ITEM_DEFAULT FROM ITEMS WHERE ITEM_CODIGO=641
SET @HORA_FIN_RUTA = CONVERT(INT , SUBSTRING(@HORA_FIN, 1 , 2))

SET @FECHA_INICIO= CONVERT(DATETIME, @FECHA + ‘ ‘ + @HORA_INICIO, 103)
SET @FECHA_FIN= CONVERT(DATETIME, CONVERT(VARCHAR(10),DATEADD(D,1,CONVERT(DATETIME,@FECHA,103)),103) + ‘ ‘ + @HORA_FIN, 103)

–DROP TABLE #TMP
CREATE TABLE #TMP(
FECHA DATETIME,
EMPLEADO_CODIGO INT,
EMPLEADO_NOMBRE_COMPLETO VARCHAR(120),
TURNO_CODIGO INT,
TURNO_DESCRIPCION VARCHAR(80),
ENTRADA DATETIME,
SALIDA DATETIME,
HORA_INICIO INT,
MINUTO_INICIO INT,
HORA_FIN INT,
MINUTO_FIN INT,
DISTRITO VARCHAR(36),
TELEFONO VARCHAR(40),
RUTA_CODIGO INT,
RUTA_DESCRIPCION VARCHAR(80),
RUTA_COLOR CHAR(7),
AREA VARCHAR(80),
TIPO_MOVILIDAD_CODIGO INT,
TIPO_MOVILIDAD_DESCRIPCION VARCHAR(80),
LOCA_COD INT
)

INSERT INTO #TMP(FECHA,EMPLEADO_CODIGO,EMPLEADO_NOMBRE_COMPLETO, TURNO_CODIGO,TURNO_DESCRIPCION,ENTRADA,SALIDA,HORA_INICIO,MINUTO_INICIO,HORA_FIN,MINUTO_FIN, DISTRITO, TELEFONO, RUTA_CODIGO, RUTA_DESCRIPCION,RUTA_COLOR,AREA, TIPO_MOVILIDAD_CODIGO, TIPO_MOVILIDAD_DESCRIPCION, LOCA_COD)
SELECT ca_movilidad.movilidad_fecha, ca_movilidad.Empleado_Codigo, Empleados.Empleado_Apellido_Paterno + ‘ ‘ + Empleados.Empleado_Apellido_Materno + ‘ ‘ + Empleados.Empleado_Nombres,
CA_Turnos.Turno_Codigo, CA_Turnos.Turno_Descripcion,
ENTRADA=CASE WHEN CA_Turnos.Turno_Hora_Inicio>@HORA_FIN_RUTA — si entra despues de las 6 — and
THEN
CONVERT(DATETIME,@FECHA + ‘ ‘ + CAST(CA_Turnos.Turno_Hora_Inicio AS VARCHAR) + ‘:’ + CAST(CA_Turnos.Turno_Minuto_Inicio AS VARCHAR),103)
ELSE
CONVERT(DATETIME,CONVERT(VARCHAR(10),DATEADD(D,1,CONVERT(DATETIME,@FECHA,103)),103) + ‘ ‘ +  CAST(CA_Turnos.Turno_Hora_Inicio AS VARCHAR) + ‘:’ + CAST(CA_Turnos.Turno_Minuto_Inicio AS VARCHAR),103)
END,
SALIDA=CASE WHEN TURNO_DUO=0 — si no es duo
THEN
CASE WHEN CA_Turnos.Turno_Hora_Fin>@HORA_FIN_RUTA
THEN
CONVERT(DATETIME,@FECHA + ‘ ‘ + CAST(CA_Turnos.Turno_Hora_Fin AS VARCHAR) + ‘:’ + CAST(CA_Turnos.Turno_Minuto_Fin AS VARCHAR),103)
ELSE
CONVERT(DATETIME,CONVERT(VARCHAR(10),DATEADD(D,1,CONVERT(DATETIME,@FECHA,103)),103) + ‘ ‘ +  CAST(CA_Turnos.Turno_Hora_Fin AS VARCHAR) + ‘:’ + CAST(CA_Turnos.Turno_Minuto_Fin AS VARCHAR),103)
END
–CONVERT(DATETIME,@FECHA + ‘ ‘ + CAST(CA_Turnos.Turno_Hora_Fin AS VARCHAR) + ‘:’ + CAST(CA_Turnos.Turno_Minuto_Fin AS VARCHAR),103)
ELSE –ES DUO
CONVERT(DATETIME,CONVERT(VARCHAR(10),DATEADD(D,1,CONVERT(DATETIME,@FECHA,103)),103) + ‘ ‘ +  CAST(CA_Turnos.Turno_Hora_Fin AS VARCHAR) + ‘:’ + CAST(CA_Turnos.Turno_Minuto_Fin AS VARCHAR),103)
END,
CA_Turnos.Turno_Hora_Inicio, CA_Turnos.Turno_Minuto_Inicio,
CA_Turnos.Turno_Hora_Fin, CA_Turnos.Turno_Minuto_Fin, ubigeo.NOMBRE, Empleados.Empleado_Tlf,
ca_rutas.ruta_codigo, ca_rutas.ruta_descripcion, ca_rutas.ruta_color,
AREAS.AREA_DESCRIPCION, ca_rutas.movil_tipo_codigo, ca_movilidad_tipo.movil_tipo_descripcion,
ca_rutas.Local_Codigo
FROM   ca_movilidad
INNER JOIN Empleados ON ca_movilidad.Empleado_Codigo = Empleados.Empleado_Codigo
INNER JOIN CA_Turnos ON Empleados.turno_codigo = CA_Turnos.Turno_Codigo
RIGHT JOIN ubigeo ON ubigeo.CODDPTO = Empleados.Empleado_Dpto_Residencia AND
ubigeo.CODPROV = Empleados.Empleado_Prov_Residencia AND ubigeo.CODDIST = Empleados.Empleado_Dist_Residencia
INNER JOIN ca_rutas ON ca_movilidad.ruta_codigo = ca_rutas.ruta_codigo
INNER JOIN EMPLEADO_AREA ON EMPLEADOS.EMPLEADO_CODIGO=EMPLEADO_AREA.EMPLEADO_CODIGO
INNER JOIN AREAS ON EMPLEADO_AREA.AREA_CODIGO=AREAS.AREA_CODIGO
INNER JOIN ca_movilidad_tipo ON ca_movilidad_tipo.movil_tipo_codigo = ca_rutas.movil_tipo_codigo
WHERE  (ca_movilidad.movilidad_fecha = CONVERT(DATETIME, @FECHA, 103)) AND  (Empleado_Area.Empleado_Area_Activo=1)

—————————–
–@TIPO_MOVIL : parametro del procedimiento almacenado
–1:TAXI
–2:ACERCAMIENTO
–TIPO_MOVILIDAD_CODIGO:1/2 campo de la tabla temporal

IF(@TIPO=’E’)
BEGIN
IF( (SELECT movil_tipo_codigo FROM ca_movilidad_tipo WHERE movil_tipo_codigo = @TIPO_MOVIL)=@TIPO_MOVIL )
BEGIN
IF( (SELECT ruta_codigo FROM ca_rutas WHERE ruta_codigo = @COD_RUTA)=@COD_RUTA )
BEGIN
SELECT * FROM #TMP
WHERE (ENTRADA BETWEEN @FECHA_INICIO AND @FECHA_FIN) AND(TIPO_MOVILIDAD_CODIGO = @TIPO_MOVIL) AND (RUTA_CODIGO=@COD_RUTA)

END

END
END
ELSE
BEGIN
IF( (SELECT movil_tipo_codigo FROM ca_movilidad_tipo WHERE movil_tipo_codigo = @TIPO_MOVIL)=@TIPO_MOVIL )
BEGIN

IF( (SELECT ruta_codigo FROM ca_rutas WHERE ruta_codigo = @COD_RUTA)=@COD_RUTA )
BEGIN
SELECT * FROM #TMP
WHERE (SALIDA BETWEEN @FECHA_INICIO AND @FECHA_FIN) AND(TIPO_MOVILIDAD_CODIGO = @TIPO_MOVIL) AND (RUTA_CODIGO=@COD_RUTA)

END
END
END

/*SELECT * FROM #TMP
WHERE ENTRADA BETWEEN @FECHA_INICIO AND @FECHA_FIN
UNION
SELECT * FROM #TMP
WHERE SALIDA BETWEEN @FECHA_INICIO AND @FECHA_FIN
ORDER BY DISTRITO, RUTA_DESCRIPCION, ENTRADA, SALIDA*/
–INNER JOIN ca_movilidad_tipo ON ca_movilidad_tipo.movil_tipo_codigo = ca_rutas.movil_tipo_codigo

Si te ha interesado este artículo y deseas un apoyo o asesoría en algún requerimiento, envíame un mensaje a: (info@juliopari.com) o sino a través de Linkedin: https://www.linkedin.com/in/juliopari/

Etiquetas: