dbo.LN_Tareas_Informes_DCL

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

7
Name Data Type Length Description
@accion varchar 50
@informe int 4
@estado varchar 1
@user_id int 4
@usuario_asignado int 4
@fecha_inicio datetime 8
@fecha_comprometida datetime 8

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- Create the stored procedure in the specified schema
CREATE OR ALTER PROCEDURE dbo.LN_Tareas_Informes_DCL
 @accion  VARCHAR(50),
    @informe INT,
    @estado VARCHAR(1)=NULL,
    @user_id INT=NULL,
    @usuario_asignado INT=NULL,
    @fecha_inicio DATETIME=NULL,
    @fecha_comprometida DATETIME=NULL


AS
BEGIN
    DECLARE @v_accion VARCHAR(50) = UPPER(@accion);
    DECLARE @v_tipo_informe INT;
 DECLARE @v_informe_padre INT;
    -- EDITAR TAREA DCL
   IF ( @v_accion = 'EDITAR_TAREA' )
    BEGIN
        SELECT 
            -- datos de cliente
            Tareas.cliente,
            clientes.nombre_cliente,
            -- datos de la tarea
            Tareas.informe as tarea,
            Tareas.id_tipo_informe,
            LN_tareas.nombre_tarea,
            LN_tareas.ruta as ruta_tarea,
            LN_tareas.idTarea as idTipoTarea,
            LN_tareas.tipo_tarea as tipo_actividad_tarea,
            Tareas.estado_informe as cod_estado_tarea,
            Tareas.fecha_ingreso,
            Tareas.fecha_inicio,
            Tareas.fecha_comprometida,
            Tareas.ready_to_start,
            Tareas.ready_to_start_date,
            Tareas.asignado,
            (user_asignado.first_name+' '+user_asignado.last_name) as usuario_tarea,
            Tareas.ingresado_por,
            (user_creado.first_name+' '+user_creado.last_name) as usuario_creador,
            Tareas.pausa,
            Tareas.historial_informe as historial_tarea,
            Tareas.idTarea,
            -- datos de la persona
            padrones.nombre_persona,
            identificadores.nombre_identificador,
            padrones.identificacion,
            country.country_name,
            -- datos el informe
            informes.informe as informe,
            LN_tipo_informes.nombre_tipo_informe
        FROM informes as Tareas
            INNER JOIN informes ON informes.informe=Tareas.informe_padre
            INNER JOIN LN_tipo_informes ON LN_tipo_informes.idTipoInforme = informes.id_tipo_informe
            --
            INNER JOIN clientes ON clientes.cliente=informes.cliente
            --
            INNER JOIN LN_tareas ON LN_tareas.idTarea=Tareas.idTarea
            --
            INNER JOIN users as user_asignado ON user_asignado.user_id=Tareas.asignado
            INNER JOIN users as user_creado ON user_creado.user_id=Tareas.ingresado_por
            --
            INNER JOIN padrones ON padrones.numero = informes.numero AND padrones.identificador=informes.identificador
            INNER JOIN identificadores ON identificadores.identificador=padrones.identificador
            INNER JOIN country ON country.country_code=identificadores.country_code
        WHERE 
            Tareas.informe=@informe;
        --
        RETURN;
    END
    -- EDITAR INFORME DCL
 IF ( @v_accion = 'EDITAR_INFORME' )
    BEGIN
        SELECT 
            -- datos de cliente
            informes.cliente,
            clientes.nombre_cliente,
            -- datos del informe
            informes.informe,
            informes.id_tipo_informe,
            LN_tipo_informes.nombre_tipo_informe,
            LN_tipo_informes.duracion,
            informes.estado_informe as codigo_estado_informe,
            informes.fecha_ingreso,
            informes.fecha_inicio,
            informes.fecha_comprometida,
            informes.asignado as userIDAsigandoInforme,
            15 as idTeam,
            'TEAM 15' as nombre_team,
            idiomas.codigo_iso as idioma,
            -- datos de la persona
            padrones.nombre_persona,
            identificadores.nombre_identificador,
            padrones.identificacion,
            country.country_name
        FROM informes
            INNER JOIN LN_tipo_informes ON LN_tipo_informes.idTipoInforme = informes.id_tipo_informe
            --
            INNER JOIN clientes ON clientes.cliente=informes.cliente
            --
            INNER JOIN padrones ON padrones.numero = informes.numero AND padrones.identificador=informes.identificador
            INNER JOIN identificadores ON identificadores.identificador=padrones.identificador
            INNER JOIN country ON country.country_code=identificadores.country_code
            --
            INNER JOIN idiomas ON idiomas.idioma=informes.idioma
        WHERE 
            informes.informe=@informe 
            AND informes.informe_padre IS NULL;
        --
        RETURN;
    END

-- ACCION PARA ACTUALIZAR EL INFORME
    IF ( @v_accion='UPD_INFORME' )
    BEGIN
        UPDATE informes SET 
            asignado=iif(@estado = 'A' OR @estado = 'T' OR @estado = 'P', @usuario_asignado, NULL), estado_informe=@estado, 
            fecha_asignado=iif(@estado = 'A' OR @estado = 'T' OR @estado = 'P', GETDATE(), NULL),
            fecha_aceptacion=iif(@estado = 'T' OR @estado = 'P', GETDATE(), NULL),
            fecha_inicio = iif(@estado IN ('P','E'),@fecha_inicio,fecha_inicio),
            fecha_iniciado = iif(@estado IN ('P','E') AND fecha_iniciado IS NULL,@fecha_inicio,fecha_iniciado),
            fecha_entregado= iif(@estado IN ('F','K','N','C'),GETDATE(),fecha_entregado),
            fecha_aprobacion= iif(@estado IN ('F','K','N','C'),GETDATE(),fecha_aprobacion),
            aprobado_por = iif(@estado IN ('F','K','N','C'),@user_id,aprobado_por),
            fecha_comprometida=@fecha_comprometida,
            modified = GETDATE(),
            modified_by = @user_id
        WHERE 
            informe = @informe 
            AND idreg=@informe;
        --
    END


    -- PANEL DE TAREAS DCL
    IF ( @v_accion='REPORTE_DCL' )
 BEGIN
        -- Panel de Reportes de data cleaning
        SELECT 
            -- datos de cliente
            Tareas.cliente,
            clientes.nombre_cliente,
            -- datos de la tarea
            Tareas.informe,
            Tareas.id_tipo_informe,
            LN_tareas.nombre_tarea,
            Tareas.estado_informe as cod_estado_tarea,
            Tareas.fecha_ingreso,
            Tareas.fecha_inicio as inicio_tarea,
            Tareas.fecha_comprometida as fecha_comprometida_tarea,
            Tareas.ready_to_start,
            Tareas.ready_to_start_date,
            Tareas.asignado,
            (users.first_name+' '+users.last_name) as usuario_tarea,
            Tareas.pausa,
            -- datos de la persona
            padrones.nombre_persona,
            padrones.identificador,
            padrones.identificacion,
            identificadores.country_code,
            -- datos el informe
            Tareas.informe_padre,
            informes.estado_informe as cod_estado_informe,
            LN_tipo_informes.nombre_tipo_informe AS nombre_informe,
            informes.fecha_inicio as inicio_informe,
            informes.fecha_comprometida as fecha_comprometida_informe,
            15 as idTeam, -- forzado por ahora
            'TEAM 15' AS nombreTeam  -- forzado por ahora
        FROM informes as Tareas
            INNER JOIN informes ON informes.informe=Tareas.informe_padre
            INNER JOIN LN_tipo_informes ON LN_tipo_informes.idTipoInforme = informes.id_tipo_informe
            --
            INNER JOIN clientes ON clientes.cliente=informes.cliente
            --
            INNER JOIN LN_tareas ON LN_tareas.idTarea=Tareas.idTarea
            --
            INNER JOIN users ON users.user_id=Tareas.asignado
            --
            INNER JOIN padrones ON padrones.numero = informes.numero AND padrones.identificador=informes.identificador
            INNER JOIN identificadores ON identificadores.identificador=padrones.identificador
        WHERE 
            informes.id_tipo_informe IN ('632095719','9876052','9876050') -- tipo de informe de data cleaning (forzados por ahora)
            AND informes.estado_informe NOT IN ('K','N','C','F') 
            AND Tareas.informe_padre IS NOT NULL
            AND Tareas.estado_informe  NOT IN ('K','N','C','F') 
        RETURN;
    END
    -- UPDATE TAREA DCL
    IF ( @v_accion='UPD_ESTADO_TAREA' )
    BEGIN
        UPDATE informes SET estado_informe=@estado WHERE informe=@informe AND informe_padre IS NOT NULL;
        RETURN;
    END
    -- UPDATE TAREA DCL
    IF ( @v_accion='UPD_ESTADO_TAREA_OLD' )
    BEGIN
        UPDATE informes SET estado_informe=@estado WHERE informe=@informe AND idreg=@informe AND informe_padre IS NOT NULL;
        -- Devuelve las tareas dependientes
        /* IF ( @estado IN ('K','N') )
                BEGIN
                    SELECT idElem FROM TareasDependientes(@informe);
                END */

        --
        RETURN;
    END

 IF ( @v_accion='TAREAS_INFORME' )
    BEGIN
        SELECT 
            Tareas.fecha_inicio,
            Tareas.fecha_comprometida,
            Tareas.estado_informe as estado_tarea,
            Tareas.informe AS tarea, 
            Tareas.asignado AS tar_asignado,
            (users1.first_name+' '+users1.last_name) AS nombre_tar_asignado,
            Tareas.idTarea,
            Tareas.prioridad,
            LN_tareas.tipo_tarea,
            LN_tareas.duracion,
            LN_tareas.nombre_tarea,
            Tareas.ready_to_start,
            Tareas.ready_to_start_date,
            LN_informe_design.dependency_tree,
            Tareas.pausa,
            Tareas.TAT_Task,
            Tareas.fecha_aprobacion,
            Tareas.ingresado_por,
            (users2.first_name+' '+users2.last_name) AS nombre_ingresado_por,
            Tareas.id_tipo_informe as id_tipo_tarea, 
   Tareas.orden as ord_tarea
        FROM informes AS Tareas
            INNER JOIN informes ON informes.informe_padre IS NULL AND informes.informe=Tareas.informe_padre 
            --
            INNER JOIN users AS users1 ON users1.user_id=Tareas.asignado
            INNER JOIN users AS users2 ON users2.user_id=Tareas.ingresado_por
            --
            INNER JOIN LN_tareas ON LN_tareas.idTarea=Tareas.idTarea
            INNER JOIN LN_informe_design ON 
                LN_informe_design.idTipoInforme=informes.id_tipo_informe
                AND LN_informe_design.idElem=Tareas.idTarea
        WHERE 
            Tareas.informe_padre=@informe 

   ORDER BY Tareas.orden ASC

        --
        RETURN;
    END


 -- ACCION PARA CERRAR EL INFORME
    IF ( @v_accion='CERRAR_INFORME' )
    BEGIN
        UPDATE informes SET 
            estado_informe='K',
            fecha_aprobacion=GETDATE(),
            fecha_entregado=GETDATE(), 
            aprobado_por=@user_id,
            modified=GETDATE(),
            modified_by=@user_id
        WHERE 
            estado_informe NOT IN ('K','X','C','N')
            AND (informe=@informe OR informe_padre=@informe);
        --
  -- 11/07/2024 
  update ln_demo set visible = 1,fecha_publicacion=getdate(),fecha_hora_pub=getdate() where informe = @informe


        RETURN;
    END
    -- ACCION PARA CANCELAR EL INFORME
    IF ( @v_accion='CANCELAR_INFORME' )
    BEGIN
        UPDATE informes SET 
            estado_informe='N',
            fecha_aprobacion=GETDATE(),
            fecha_entregado=GETDATE(), 
            aprobado_por=@user_id,
            modified=GETDATE(),
            modified_by=@user_id
        WHERE 
            estado_informe NOT IN ('K','X','C','N')
            AND (informe=@informe OR informe_padre=@informe);
        --
        RETURN;
    END

 -- UPDATE DATOS TAREA DCL
    IF ( @v_accion='UPD_TAREA' )
    BEGIN
        --
        UPDATE informes SET 
            asignado=@usuario_asignado, 
            estado_informe=@estado,             
            fecha_asignado=iif(asignado != @usuario_asignado, GETDATE(), fecha_asignado),
            fecha_aceptacion=iif(@estado = 'T' OR @estado = 'P', GETDATE(), fecha_aceptacion),
            fecha_inicio = iif(@estado in ('A','P','E'),@fecha_inicio,fecha_inicio),
            fecha_iniciado = iif(@estado in ('A','P','E'),@fecha_inicio,fecha_inicio),
            fecha_entregado= iif(@estado in ('F','K','N','C'),GETDATE(),fecha_entregado),
            fecha_aprobacion= iif(@estado in ('F','K','N','C'),GETDATE(),fecha_aprobacion),
            aprobado_por = iif(@estado in ('F','K','N','C'),@user_id,aprobado_por),
            fecha_comprometida=@fecha_comprometida
        WHERE informe = @informe and idreg=@informe;
        -- Obtenemos los datos del informe_padre
        SELECT @v_informe_padre=informe,@v_tipo_informe=id_tipo_informe FROM GetInformeByTarea(@informe);
        -- Devuelve las dependencias de las tareas
        SELECT * FROM dbo.TareasDependientes(@v_informe_padre,@v_tipo_informe,@informe);
        --
        RETURN;
    END

END
GO

Used By

No items found