dbo.LN_Blue_UPD

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

26
Name Data Type Length Description
@p_accion varchar 50
@p_contraparte int 4
@p_informe int 4
@p_user_id int 4
@p_item_contrato int 4
@p_producto smallint 2
@p_id_tipo_informe int 4
@p_prioridad tinyint 1
@p_estado_informe varchar 1
@p_ingresado_por int 4
@p_datamanager int 4
@p_asignado int 4
@p_cliente int 4
@p_fecha_limite_doc datetime 8
@p_producto_led int 4
@p_fecha_comprometida datetime 8
@p_objeto_informe varchar -1
@p_familia int 4
@p_idioma_iso varchar 3
@p_fecha_inicio datetime 8
@p_notas_informe varchar -1
@p_path_archivo varchar 150
@p_extension_archivo varchar 5
@p_fecha_desde datetime 8
@p_fecha_hasta datetime 8
@p_pausa_tarea bit 1

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/* SP LN_BLUE_UPD */



CREATE OR ALTER PROCEDURE dbo.LN_Blue_UPD
 @p_accion         varchar(50) = NULL,
 @p_contraparte        int = NULL,
 @p_informe         int OUTPUT,
 @p_user_id         int = NULL,
 @p_item_contrato       int = NULL,
 @p_producto         smallint = NULL,    
 @p_id_tipo_informe       int = NULL,
 @p_prioridad        tinyint = NULL,
 @p_estado_informe       varchar(1) = NULL,
 @p_ingresado_por       int = NULL,
 @p_datamanager        int = NULL,
 @p_asignado         int = NULL,
 @p_cliente         int = NULL,
 @p_fecha_limite_doc       datetime = NULL,
 @p_producto_led        int = NULL,
 @p_fecha_comprometida      datetime = NULL,
 @p_objeto_informe       varchar(max) = NULL,
 @p_familia         int = NULL,
 @p_idioma_iso        varchar(3) = 'spa',
 @p_fecha_inicio        datetime = null,
 @p_notas_informe       varchar(max) = NULL,
 @p_path_archivo        varchar(150)= null,
 @p_extension_archivo      varchar(5)= null,
 @p_fecha_desde datetime = null,
 @p_fecha_hasta datetime = null,
 @p_pausa_tarea bit = 0

 
AS
BEGIN
 SET NOCOUNT ON;
/*
exec LN_Blue 'tareas_informe',null,100603443
exec LN_Blue2 'tareas_informe',null,100603443
exec ln_blue_UPD 'UPD_informe',198672,100615876,793639331,NULL,NULL,1645350,2,'E',793639331,NULL,NULL,2254875,NULL,NULL,'2023-03-03 12:02:00',NULL,NULL,'spa','2023-02-28 00:00:00'
exec ln_blue2 'UPD_informe',198672,100615876,793639331,NULL,NULL,1645350,2,'E',793639331,NULL,NULL,2254875,NULL,NULL,'2023-03-03 12:02:00',NULL,NULL,'spa','2023-02-28 00:00:00'

exec ln_blue_UPD 'UPD_TAREA',198672,100615878,793639331,NULL,NULL,400,NULL,'E',793639331,NULL,87455253,2254875,NULL,NULL,'2023-02-23 12:02:00',NULL,NULL,NULL,NULL

exec ln_blue2 'UPD_TAREA',198672,100615878,793639331,NULL,NULL,400,NULL,'E',793639331,NULL,87455253,2254875,NULL,NULL,'2023-02-23 12:02:00',NULL,NULL,NULL,NULL

*/


 /* AGB DECLARAMOS VARIABLES PARA EVITAR PARAMETER SNIFFING EN LA CONFECCIÓN DEL QUERY PLAN */
 DECLARE @V_accion           varchar(50)  = @p_accion
 DECLARE @V_contraparte          int    = @p_contraparte
 DECLARE @V_informe           int    = @p_informe
 DECLARE @V_user_id           int    = @p_user_id
 DECLARE @V_item_contrato         int    = @p_item_contrato
 DECLARE @V_producto           smallint   = @p_producto
 DECLARE @V_id_tipo_informe         int    = @p_id_tipo_informe
 DECLARE @V_prioridad          tinyint   = @p_prioridad
 DECLARE @V_estado_informe         varchar(1)   = @p_estado_informe
 DECLARE @V_ingresado_por         int    = @p_ingresado_por
 DECLARE @V_datamanager          int    = @p_datamanager
 DECLARE @V_asignado           int    = @p_asignado
 DECLARE @V_cliente           int    = @p_cliente
 DECLARE @V_fecha_limite_doc         datetime   = @p_fecha_limite_doc
 DECLARE @V_producto_led          int    = @p_producto_led
 DECLARE @V_fecha_comprometida        datetime   = @p_fecha_comprometida
 DECLARE @V_objeto_informe         varchar (max)  = @p_objeto_informe
 DECLARE @V_familia           int    = @p_familia
 DECLARE @V_idioma_iso          varchar(3)   = @p_idioma_iso
 DECLARE @V_fecha_inicio          datetime   = @p_fecha_inicio
 DECLARE @V_notas_informe         varchar (max)  = @p_notas_informe
 DECLARE @V_path_archivo          varchar(150) = @p_path_archivo
 DECLARE @V_extension_archivo        varchar(5)  = @p_extension_archivo
 DECLARE @V_fecha_desde           datetime   = @p_fecha_desde 
 DECLARE @V_fecha_hasta           datetime   = @p_fecha_hasta 
 DECLARE @V_pausa_tarea           bit    = @p_pausa_tarea 







 DECLARE @estado VARCHAR(1) = NULL, @estado_tarea varchar(1) = NULL
 DECLARE @ahora datetime = GETDATE()
 DECLARE @usuario varchar(100) = NULL
 DECLARE @preffix varchar(200) = ''
 DECLARE @nombre_asignado varchar(200)
 DECLARE @informe int = NULL
 DECLARE @tarea INT = null
 DECLARE @gestion int = NULL
 DECLARE @noing int = 0, @ing int = 0, @verif int = 0, @rech int = 0, @total_estado int = 0, @total_docs int = 0, @publicados int = 0

 if (@V_user_id > 0) 
 begin
  select @usuario = isnull(first_name,'') + ' ' + isnull(last_name, '')
  from users where user_id = @V_user_id
  SET @preffix = '['+@usuario+' - '+convert(varchar(10),@ahora,103) + ' ' + substring(convert(varchar,@ahora,121),12,5)+']: '
 end 
 else
  begin
   SET @preffix = '['+convert(varchar(10),@ahora,103) + ' ' + substring(convert(varchar,@ahora,121),12,5)+']: '
  end



 DECLARE @id INT = null
 DECLARE @moneda varchar(3) = null
 DECLARE @precio money = NULL
 DECLARE @id_contrato int = NULL
 DECLARE @cliente int = NULL
 DECLARE @nombre_cliente varchar(200) = NULL
 DECLARE @identificador varchar(10) = NULL
 DECLARE @abreviatura varchar(10) = NULL
 DECLARE @numero varchar(50) = NULL
 DECLARE @nombre_persona varchar(200) = NULL
 DECLARE @nombre varchar(50) = NULL
 DECLARE @email varchar(50) = NULL
 DECLARE @telefono varchar(30) = NULL
 DECLARE @nombre_tipo_informe varchar(200) = NULL
 DECLARE @grupo_informes varchar(50) = NULL
 DECLARE @detalle_log varchar(max)


 if (@V_accion = 'UPD_HIST_INFORME')
 BEGIN
  update informes set historial_informe = convert(varchar(max),historial_informe) +  '<br>' + @V_notas_informe where informe = @V_informe and informe_padre is null 
 END

 if (@V_accion = 'archivo_informe')
 begin
   insert into archivos_informe (path_archivo,fecha_subido,subido_por,mime_type,informe)
   values (@V_path_archivo,getdate(),@V_user_id,@V_extension_archivo,@V_informe)
   
 end

 if (@V_accion = 'list_archivos')
 begin
 select archivos_informe.*,users.last_name,users.first_name from archivos_informe inner join users on archivos_informe.subido_por=users.user_id where informe = @V_informe
 end

 /* Dada una contraparte, producto y los datos del informe da de alta el informe padre y las subtareas de producción */
 if (@V_accion = 'UPD_informe') begin 
   DECLARE @V_idioma1 smallint = NULL
   DECLARE @V_filial1 smallint = NULL

   select @V_idioma1 = idioma from idiomas where codigo_iso = @V_idioma_iso
   select @V_filial1 = filial from filiales where country_code = 'AR'

   select @cliente = LN_contrapartes.cliente,
     @identificador = LEFT(padrones.identificador,10),
     @abreviatura = LEFT(identificadores.abreviatura,10),
     @numero = LEFT(padrones.identificacion,50),
     @nombre_persona = LEFT(padrones.nombre_persona,200),
     @nombre = LEFT(LN_contrapartes.nombre_contacto,50),
     @email = LEFT(LN_contrapartes.email_contacto,50),
     @telefono = LEFT(LN_contrapartes.telefono_contacto,30),
     @nombre_cliente = LEFT(clientes.nombre_cliente, 200)
   from LN_contrapartes 
   inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador
   inner join clientes on LN_contrapartes.cliente = clientes.cliente
   where LN_contrapartes.contraparte = @V_contraparte

   select @nombre_tipo_informe = nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',
     @grupo_informes = grupo_informes
   from tipos_informe
   where id_tipo_informe = @V_id_tipo_informe

   set @id=@V_informe 



   if (@id IS NOT NULL) begin
   
    DECLARE @hist1 varchar(max) = @preffix + 'Actualización del informe.'

    if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin     

     select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
     from users where user_id = @V_asignado

     SET @hist1 = @hist1 + CHAR(13) + CHAR(10) + @preffix + 'Asignación del informe a ' + @nombre_asignado
    end

    if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
     SET @hist1 = @hist1 + CHAR(13) + CHAR(10) + @preffix + 'Aceptación del informe.'
    end

    if (@V_estado_informe = 'P') begin
     SET @hist1 = @hist1 + CHAR(13) + CHAR(10) + @preffix + 'Informe puesto en gestión.'
    end
    
    DECLARE @fecha_limite1       datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_limite_doc))
    DECLARE @fecha_comprometida1 datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_comprometida))

    UPDATE informes SET /*informe=@id, cliente=@cliente,*/ identificador=@identificador, numero=@numero, fecha_ingreso=@ahora, id_tipo_informe=@V_id_tipo_informe,
     objeto_informe='INFORME GENERADO A TRAVES DE BACKEND - CARGA DE INFORMES '  + CHAR(13) + CHAR(10) + isnull(@V_objeto_informe, ''), 
     historial_informe= convert(varchar(max),historial_informe) +  CHAR(13) + CHAR(10) +   @hist1, ingresado_por=@V_ingresado_por, idioma=@V_idioma1, filial=@V_filial1, prioridad=@V_prioridad, datamanager=@V_datamanager,
     asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @V_asignado, NULL), estado_informe=@V_estado_informe, 
     fecha_asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
     fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
     excepcion=0, excepcion_prod=0, notificar_cliente=0, precio=@precio, moneda=@moneda,
     /*fecha_inicio = @V_fecha_inicio,*/
     fecha_inicio = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
     fecha_iniciado = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
     
     fecha_entregado= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_entregado),
     fecha_aprobacion= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_aprobacion),

     
     nombre_contacto_1=@nombre, 
     email_contacto_1=@email, 
     telefono_contacto_1=@telefono,
     fecha_limite_doc=@fecha_limite1,
     /*fecha_comprometida=@fecha_comprometida1*/
     fecha_comprometida=@V_fecha_comprometida
    WHERE informe = @id and idreg=@id



    SET @V_informe = @id


    if (@V_producto_led > 0) begin
     /* Actualización de la tabla LED para vincular el informe al producto */
     EXEC LN_demo_ 'UPDATE',@V_contraparte,@cliente,@V_producto_led,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@id
    end


    SELECT @id AS informe

   end


  


 end

 if (upper(@V_accion) = 'CIERRE_TOTAL') 
 begin
   DECLARE @servicio_contratadoCierre INT = NULL
   DECLARE @InfPadreCierre int = null
   DECLARE @GestionCierre int = null
   DECLARE @ClienteCierre int = null
   /*
    select @cliente = LN_contrapartes.cliente,
    @identificador = LEFT(padrones.identificador,10),
    @abreviatura = LEFT(identificadores.abreviatura,10),
    @numero = LEFT(padrones.identificacion,50),
    @nombre_persona = LEFT(padrones.nombre_persona,200),
    @nombre = LEFT(LN_contrapartes.nombre_contacto,50),
    @email = LEFT(LN_contrapartes.email_contacto,50),
    @telefono = LEFT(LN_contrapartes.telefono_contacto,30),
    @nombre_cliente = LEFT(clientes.nombre_cliente, 200),
    @servicio_contratadoCierre= LN_contrapartes.servicio_contratado 
    from LN_contrapartes 
    inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
    inner join identificadores on padrones.identificador = identificadores.identificador
    inner join clientes on LN_contrapartes.cliente = clientes.cliente
    where LN_contrapartes.contraparte = @V_contraparte
    */


   /*select @InfPadreCierre=informe_padre FROM informes where informe = @V_informe*/


   /*select @servicio_contratadoCierre,@InfPadreCierre*/
   
   /*AVERIGUAMOS LOS DATOS DE INFORME PADRE Y GESTION */
   select distinct @servicio_contratadoCierre= ln_contrapartes.servicio_contratado,
   @InfPadreCierre= informes.informe_padre,
   @GestionCierre=ln_demo.gestion,
   @ClienteCierre=informes.cliente  
   from informes 
   inner join ln_demo on informes.informe_padre=ln_demo.informe 
   inner join ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
   where informes.informe  = @V_informe /*and estado_informe not in ('N','C','K','X')*/
   
   set @id=@V_informe 

   if (@id IS NOT NULL) begin

    /*DECLARE @histT varchar(max) = @preffix + 'Creación de la tarea.'*/
    DECLARE @histCierre varchar(max) = @preffix 

    if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin     

     select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
     from users where user_id = @V_asignado

     SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Asignación de la tarea a ' + @nombre_asignado
    end

    if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
     SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Aceptación de la tarea.'
    end

    if (@V_estado_informe = 'P') begin
     SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en gestión.'
    end

    if (@V_estado_informe = 'E') begin
     SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en proceso.'
    end
    if (@V_estado_informe = 'N') begin
     SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea anulada.'
    end

    if (@V_estado_informe = 'W') begin
     SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en pausa.'
    end
    
    if (@V_estado_informe = 'F') begin
     SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea finalizada.'
    end

    if (@V_estado_informe = 'M') begin
     SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea a completar.'
    end

    if (@V_estado_informe = 'K') begin
     SET @hist1 = @histCierre + CHAR(13) + CHAR(10) + @preffix + 'Tarea aprobada.'
    end

    /*ACTUALIZA LA TAREA */
    UPDATE informes SET estado_informe=@V_estado_informe,fecha_aprobacion=getdate(),fecha_entregado=getdate(), aprobado_por=@V_user_id
     WHERE informe = @id and idreg=@id

    SET @V_informe = @id

    /*INSERTA LOG DE TAREA */
    insert into informes_log (informe,horario,user_id,operacion) values (@id,getdate(),@V_user_id,iif(@V_estado_informe in ('P','E'),'I',iif(@V_estado_informe in ('W','M'),'P',iif(@V_estado_informe in ('F','K','C','N'),'F','F'))))

    /* TRAZABILIDAD DEL UPDATE DE TAREAS */
    
    exec insertar_trazabilidad 'ACTUALIZACION DE TAREAS',@ClienteCierre,'UPDTASKS','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratadoCierre
    

/* select ln_contrapartes.servicio_contratado,informes.informe_padre,ln_demo.gestion 
from informes inner join ln_demo on informes.informe_padre=ln_demo.informe 
inner join ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
where informe_padre = 100601899 and estado_informe not in ('N','C','K','X')
*/

   /*ACTUALIZAMOS TODAS LAS TAREAS Y EL INFORME QUE HAYA QUE APROBAR */
   if (@InfPadreCierre is not null )
   begin
    update informes set estado_informe='K',fecha_aprobacion=getdate(),fecha_entregado=getdate(), aprobado_por=@V_user_id
    from informes  where (informes.informe = @InfPadreCierre or informe_padre = @InfPadreCierre ) and estado_informe not in ('N','C','K','X')

    /*
     from informes inner join ln_demo on informes.informe_padre=ln_demo.informe 
     inner join ln_contrapartes on ln_demo.contraparte=ln_contrapartes.contraparte
     where informe_padre = @InfPadreCierre and estado_informe not in ('N','C','K','X')
    
     select * from informes  where (informes.informe = 100602870 or informe_padre = 100602870 ) and estado_informe not in ('N','C','K','X')
     */

    

    
    
    /*PUBLICAMOS EL INFORME */
    UPDATE ln_demo set visible=1,fecha_publicacion=getdate() where contraparte=@V_contraparte AND GESTION = @GestionCierre

    
    exec insertar_trazabilidad 'CIERRE Y PUBLICACION',@ClienteCierre,'CIERREINFORME','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratadoCierre
    
   end
   SELECT @id AS informe

   end
 end
 if (upper(@V_accion) = 'UPD_ESTADO') 
 begin
    DECLARE @histupd varchar(max) = @preffix 

    if (@V_estado_informe = 'P') begin
     SET @hist1 = @histupd + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en gestión.'
    end

    if (@V_estado_informe = 'E') begin
     SET @hist1 = @histupd + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en proceso.'
    end
    if (@V_estado_informe = 'N') begin
     SET @hist1 = @histupd + CHAR(13) + CHAR(10) + @preffix + 'Tarea anulada.'
    end

    if (@V_estado_informe = 'W') begin
     SET @hist1 = @histupd + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en pausa.'
    end
    
    if (@V_estado_informe = 'F') begin
     SET @hist1 = @histupd + CHAR(13) + CHAR(10) + @preffix + 'Tarea finalizada.'
    end

    if (@V_estado_informe = 'M') begin
     SET @hist1 = @histupd + CHAR(13) + CHAR(10) + @preffix + 'Tarea a completar.'
    end

    if (@V_estado_informe = 'K') begin
     SET @hist1 = @histupd + CHAR(13) + CHAR(10) + @preffix + 'Tarea aprobada.'
    end

   UPDATE informes SET 
     historial_informe=convert(varchar(max),historial_informe) + CHAR(13) + CHAR(10) + @hist1, 
     fecha_entregado= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_entregado),
     fecha_aprobacion= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_aprobacion),
     estado_informe=@V_estado_informe 
    WHERE informe = @V_informe and idreg=@V_informe

        /* READY TO START analizar dependencias */
     if (@V_estado_informe in ('K','F','N')) /* SOLO SI LA TAREA ES APROBADA o ANULADA */
     begin


      declare @triggerPadreDE int = null
      declare @dependencylistDE varchar(150) = null
      declare @InfPadreDE int = null
      declare @idTipoIformeDE int = null
      declare @idTareaDE int = null
      declare @estadoTareaDE varchar(1) = null

      select @idTipoIformeDE=INFP.id_tipo_informe,@idTareaDE=informes.idTarea,@estadoTareaDE=informes.estado_informe,@InfPadreDE=informes.informe_padre 
      from informes inner join informes INFP on informes.informe_padre= INFP.informe where informes.informe =  @V_informe


      select LN_informe_design.idElem,informes.estado_informe,informes.ready_to_start,informes.informe,LN_informe_design.dependency_tree,
      (select count(*) from informes where informe_padre = @InfPadreDE and estado_informe not in ('K','N') and idTarea in (select item from dbo.DelimitedSplit8K(LN_informe_design.dependency_tree,','))) AS pend_aprobar
      from LN_informe_design inner join informes on ln_informe_design.idElem = informes.idTarea
      where idTipoInforme=@idTipoIformeDE and LN_informe_design.tipo_elem='T' and LN_informe_design.activo=1
      and informes.informe_padre = @InfPadreDE
      and idelem in (select distinct LN_informe_design.idElem
      from informes
      inner join informes iPPAL on informes.informe_padre = iPPAL.informe
      inner join LN_informe_design on (LN_informe_design.idTipoInforme=iPPAL.id_tipo_informe and LN_informe_design.tipo_elem='T' and LN_informe_design.activo=1)
      cross apply dbo.DelimitedSplit8K(LN_informe_design.dependency_tree, ',') LISTOSPARAINICIAR 
      where informes.informe = @V_informe and LISTOSPARAINICIAR.Item = informes.idtarea)

     end
    /*READY TO START  analizar dependencias */

 end
 
 
 /* Dada una contraparte, producto y los datos del informe da de alta el informe padre y las subtareas de producción */
 if (upper(@V_accion) = 'UPD_TAREA2') 
 begin
   DECLARE @V_idiomaTD smallint = NULL
   DECLARE @V_filialTD smallint = NULL
   DECLARE @servicio_contratadoD INT = NULL

   select @V_idioma1 = idioma from idiomas where codigo_iso = @V_idioma_iso
   select @V_filial1 = filial from filiales where country_code = 'AR'

   select @cliente = LN_contrapartes.cliente,
     @identificador = LEFT(padrones.identificador,10),
     @abreviatura = LEFT(identificadores.abreviatura,10),
     @numero = LEFT(padrones.identificacion,50),
     @nombre_persona = LEFT(padrones.nombre_persona,200),
     @nombre = LEFT(LN_contrapartes.nombre_contacto,50),
     @email = LEFT(LN_contrapartes.email_contacto,50),
     @telefono = LEFT(LN_contrapartes.telefono_contacto,30),
     @nombre_cliente = LEFT(clientes.nombre_cliente, 200),
     @servicio_contratadoD= LN_contrapartes.servicio_contratado 
   from LN_contrapartes 
   inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador
   inner join clientes on LN_contrapartes.cliente = clientes.cliente
   where LN_contrapartes.contraparte = @V_contraparte

   select @nombre_tipo_informe = nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',
     @grupo_informes = grupo_informes,@V_id_tipo_informe=id_tipo_informe 
   from tipos_informe where id_tipo_informe  in (SELECT id_tipo_informe FROM informes where informe = @V_informe)
   
   set @id=@V_informe 

   if (@id IS NOT NULL) begin

    /*DECLARE @histT varchar(max) = @preffix + 'Creación de la tarea.'*/
    DECLARE @histTD varchar(max) = @preffix 

    if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin     

     select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
     from users where user_id = @V_asignado

     SET @hist1 = @histTD + CHAR(13) + CHAR(10) + @preffix + 'Asignación de la tarea a ' + @nombre_asignado
    end

    if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
     SET @hist1 = @histTD + CHAR(13) + CHAR(10) + @preffix + 'Aceptación de la tarea.'
    end

    if (@V_estado_informe = 'P') begin
     SET @hist1 = @histTD + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en gestión.'
    end

    if (@V_estado_informe = 'E') begin
     SET @hist1 = @histTD + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en proceso.'
    end
    if (@V_estado_informe = 'N') begin
     SET @hist1 = @histTD + CHAR(13) + CHAR(10) + @preffix + 'Tarea anulada.'
    end

    if (@V_estado_informe = 'W') begin
     SET @hist1 = @histTD + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en pausa.'
    end
    
    if (@V_estado_informe = 'F') begin
     SET @hist1 = @histTD + CHAR(13) + CHAR(10) + @preffix + 'Tarea finalizada.'
    end

    if (@V_estado_informe = 'M') begin
     SET @hist1 = @histTD + CHAR(13) + CHAR(10) + @preffix + 'Tarea a completar.'
    end

    if (@V_estado_informe = 'K') begin
     SET @hist1 = @histTD + CHAR(13) + CHAR(10) + @preffix + 'Tarea aprobada.'
    end

    DECLARE @fecha_limiteTD       datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_limite_doc))
    DECLARE @fecha_comprometidaTD datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_comprometida))

    set @fecha_comprometidaTD = @V_fecha_comprometida

    UPDATE informes SET identificador=@identificador, numero=@numero, fecha_ingreso=@ahora, 
    id_tipo_informe=@V_id_tipo_informe,
     objeto_informe='TAREA GENERADA '  + CHAR(13) + CHAR(10) + isnull(@V_objeto_informe, ''), 
     historial_informe=convert(varchar(max),historial_informe) + CHAR(13) + CHAR(10) + @hist1, ingresado_por=@V_ingresado_por, idioma=@V_idioma1, filial=@V_filial1, prioridad=@V_prioridad, datamanager=@V_datamanager,
     asignado=@V_asignado, 
     estado_informe=@V_estado_informe, 
     fecha_asignado=iif(asignado != @V_asignado, @ahora, fecha_asignado),
     fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, fecha_aceptacion),
     excepcion=0, excepcion_prod=0, notificar_cliente=0, precio=@precio, moneda=@moneda,
     fecha_inicio = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
     fecha_iniciado = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
     fecha_entregado= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_entregado),
     fecha_aprobacion= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_aprobacion),
     nombre_contacto_1=@nombre, email_contacto_1=@email, telefono_contacto_1=@telefono,fecha_limite_doc=@fecha_limiteTD,
     fecha_comprometida=@fecha_comprometidaTD

    WHERE informe = @id and idreg=@id
    SET @V_informe = @id

/*
AGB UPD LOG INFORMES
*/

    insert into informes_log (informe,horario,user_id,operacion)
    values (@id,getdate(),@V_user_id,iif(@V_estado_informe in ('P','E'),'I',iif(@V_estado_informe in ('W','M'),'P',iif(@V_estado_informe in ('F','K','C','N'),'F','F'))))


    /* TRAZABILIDAD DEL UPDATE DE TAREAS */
    exec insertar_trazabilidad 'ACTUALIZACION DE TAREAS',@cliente,'UPDTASKS','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratadoD

    /* READY TO START analizar dependencias */
     if (@V_estado_informe in ('K','F','N')) /* SOLO SI LA TAREA ES APROBADA O ANULADA */
     begin


      declare @triggerPadreD int = null
      declare @dependencylistD varchar(150) = null
      declare @InfPadre int = null
      declare @idTipoIforme int = null
      declare @idTarea int = null
      declare @estadoTarea varchar(1) = null

      select @idTipoIforme=INFP.id_tipo_informe,@idTarea=informes.idTarea,@estadoTarea=informes.estado_informe,@InfPadre=informes.informe_padre 
      from informes inner join informes INFP on informes.informe_padre= INFP.informe where informes.informe =  @V_informe

      


   -- EXEC LN_Blue_UPD 'UPD_TAREA2','199109','100621941','422946826',NULL,NULL,'4071729',NULL,'K','422946826',NULL,'15342812','2254875',NULL,NULL,'2023-03-13 11:01:00',nULL,NULL,NULL,'2023-03-13 11:00:00'

      select LN_informe_design.idElem,informes.estado_informe,informes.ready_to_start,informes.informe,LN_informe_design.dependency_tree,
      (select count(*) from informes where informe_padre = @InfPadre and estado_informe not in ('K','N') and idTarea in (select item from dbo.DelimitedSplit8K(LN_informe_design.dependency_tree,','))) AS pend_aprobar
      from LN_informe_design inner join informes on ln_informe_design.idElem = informes.idTarea
      where idTipoInforme=@idTipoIforme and LN_informe_design.tipo_elem='T' and LN_informe_design.activo=1
      and informes.informe_padre = @InfPadre
      and idelem in (select distinct LN_informe_design.idElem
      from informes
      inner join informes iPPAL on informes.informe_padre = iPPAL.informe
      inner join LN_informe_design on (LN_informe_design.idTipoInforme=iPPAL.id_tipo_informe and LN_informe_design.tipo_elem='T' and LN_informe_design.activo=1)
      cross apply dbo.DelimitedSplit8K(LN_informe_design.dependency_tree, ',') LISTOSPARAINICIAR 
      where informes.informe = @V_informe and LISTOSPARAINICIAR.Item = informes.idtarea)

     end
    /*READY TO START  analizar dependencias */
    /*SELECT @id AS informe*/

   end
 end



 /* Dada una contraparte, producto y los datos del informe da de alta el informe padre y las subtareas de producción */
 if (upper(@V_accion) = 'UPD_TAREA') 
 begin --100621941
   DECLARE @V_idiomaT smallint = NULL
   DECLARE @V_filialT smallint = NULL
   DECLARE @servicio_contratado INT = NULL

   select @V_idioma1 = idioma from idiomas where codigo_iso = @V_idioma_iso
   select @V_filial1 = filial from filiales where country_code = 'AR'

   select @cliente = LN_contrapartes.cliente,
     @identificador = LEFT(padrones.identificador,10),
     @abreviatura = LEFT(identificadores.abreviatura,10),
     @numero = LEFT(padrones.identificacion,50),
     @nombre_persona = LEFT(padrones.nombre_persona,200),
     @nombre = LEFT(LN_contrapartes.nombre_contacto,50),
     @email = LEFT(LN_contrapartes.email_contacto,50),
     @telefono = LEFT(LN_contrapartes.telefono_contacto,30),
     @nombre_cliente = LEFT(clientes.nombre_cliente, 200),
     @servicio_contratado= LN_contrapartes.servicio_contratado 
   from LN_contrapartes 
   inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
   inner join identificadores on padrones.identificador = identificadores.identificador
   inner join clientes on LN_contrapartes.cliente = clientes.cliente
   where LN_contrapartes.contraparte = @V_contraparte

   select @nombre_tipo_informe = nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',
     @grupo_informes = grupo_informes,@V_id_tipo_informe=id_tipo_informe 
   from tipos_informe where id_tipo_informe  in (SELECT id_tipo_informe FROM informes where informe = @V_informe)
   
   set @id=@V_informe 

   if (@id IS NOT NULL) begin

    /*DECLARE @histT varchar(max) = @preffix + 'Creación de la tarea.'*/
    DECLARE @histT varchar(max) = @preffix 

    if (@V_estado_informe = 'A' or @V_estado_informe = 'T' or @V_estado_informe = 'P') begin     

     select @nombre_asignado = isnull(first_name,'') + ' ' + isnull(last_name, '')
     from users where user_id = @V_asignado

     SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Asignación de la tarea a ' + @nombre_asignado
    end

    if (@V_estado_informe = 'T' or @V_estado_informe = 'P') begin
     SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Aceptación de la tarea.'
    end

    if (@V_estado_informe = 'P') begin
     SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en gestión.'
    end

    if (@V_estado_informe = 'E') begin
     SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en proceso.'
    end
    if (@V_estado_informe = 'N') begin
     SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea anulada.'
    end

    if (@V_estado_informe = 'W') begin
     SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea puesta en pausa.'
    end
    
    if (@V_estado_informe = 'F') begin
     SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea finalizada.'
    end

    if (@V_estado_informe = 'M') begin
     SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea a completar.'
    end

    if (@V_estado_informe = 'K') begin
     SET @hist1 = @histT + CHAR(13) + CHAR(10) + @preffix + 'Tarea aprobada.'
    end

    DECLARE @fecha_limiteT       datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_limite_doc))
    DECLARE @fecha_comprometidaT datetime = dateadd(second,-1,dateadd(day,1,@V_fecha_comprometida))

    set @fecha_comprometidaT = @V_fecha_comprometida

    UPDATE informes SET identificador=@identificador, numero=@numero, fecha_ingreso=@ahora, id_tipo_informe=@V_id_tipo_informe,
     objeto_informe='TAREA GENERADA '  + CHAR(13) + CHAR(10) + isnull(@V_objeto_informe, ''), 
     historial_informe=convert(varchar(max),historial_informe) + CHAR(13) + CHAR(10) + @hist1, 
     ingresado_por=@V_ingresado_por, idioma=@V_idioma1, filial=@V_filial1, prioridad=@V_prioridad, datamanager=@V_datamanager,
     
     /*asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @V_asignado, NULL), */
     
     asignado=@V_asignado, 

     estado_informe=@V_estado_informe, 
     fecha_asignado=iif(asignado != @V_asignado, @ahora, fecha_asignado),
     fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, fecha_aceptacion),


/* fecha_asignado=iif(@V_estado_informe = 'A' OR @V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
fecha_aceptacion=iif(@V_estado_informe = 'T' OR @V_estado_informe = 'P', @ahora, NULL),
*/
    
/* fecha_asignado=getdate(),
fecha_aceptacion=getdate(),
*/
 
     
     excepcion=0, excepcion_prod=0, notificar_cliente=0, precio=@precio, moneda=@moneda,
     
     fecha_inicio = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
     fecha_iniciado = iif(@V_estado_informe in ('A','P','E'),@V_fecha_inicio,fecha_inicio),
     
     fecha_entregado= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_entregado),
     fecha_aprobacion= iif(@V_estado_informe in ('F','K'),GETDATE(),fecha_aprobacion),
     nombre_contacto_1=@nombre, email_contacto_1=@email, telefono_contacto_1=@telefono,fecha_limite_doc=@fecha_limite1,
     fecha_comprometida=@fecha_comprometidaT

    WHERE informe = @id and idreg=@id
    SET @V_informe = @id

/*
AGB UPD LOG INFORMES
*/

    insert into informes_log (informe,horario,user_id,operacion)
    values (@id,getdate(),@V_user_id,iif(@V_estado_informe in ('P','E'),'I',iif(@V_estado_informe in ('W','M'),'P',iif(@V_estado_informe in ('F','K','C','N'),'F','F'))))

    /* TRAZABILIDAD DEL UPDATE DE TAREAS */
    exec insertar_trazabilidad 'ACTUALIZACION DE TAREAS',@cliente,'UPDTASKS','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratado


    /* READY TO START */
     if (@V_estado_informe in ('K','F','N')) /* SOLO SI LA TAREA ES APROBADA O ANULADA */
     begin
      declare @triggerPadre int = null
      declare @dependencylist varchar(150) = null
      select /*informes.informe,informes.id_tipo_informe,*/
      @triggerPadre= iPPAL.informe,/*iPPAL.id_tipo_informe as TipoInfPPAL,*/
      @dependencylist= LN_informe_design.dependency_tree
      from informes
      inner join informes iPPAL on informes.informe_padre = iPPAL.informe
      inner join LN_informe_design on (LN_informe_design.idTipoInforme=iPPAL.id_tipo_informe and LN_informe_design.tipo_elem='T' and LN_informe_design.activo=1)
      cross apply dbo.DelimitedSplit8K(LN_informe_design.dependency_tree, ',') LISTOSPARAINICIAR 
      where informes.informe = @V_informe and LISTOSPARAINICIAR.Item = informes.idtarea
/* where informes.informe = @V_informe
and LN_informe_design.idElem = informes.idTarea
*/

/* update informes set ready_to_start=1,ready_to_start_date=getdate(),ready_to_start_trigger_task=@V_informe,ready_to_start_user_id=@V_user_id 
where informe_padre = @triggerPadre and estado_informe='A' and id_tipo_informe in (
select id_tipo_informe_blue from ln_tareas INNER JOIN dbo.DelimitedSplit8K(@dependencylist, ',') LISTOSPARAINICIAR ON LN_tareas.idTarea = convert(int,LISTOSPARAINICIAR.Item)  where id_tipo_informe_blue is not null )
*/

      
      update informes set ready_to_start=1,ready_to_start_date=getdate(),ready_to_start_trigger_task=@V_informe,ready_to_start_user_id=@V_user_id 
      where informe_padre = @triggerPadre and estado_informe='A' and id_tipo_informe in (
      /*select id_tipo_informe_blue from ln_tareas INNER JOIN dbo.DelimitedSplit8K(@dependencylist, ',') LISTOSPARAINICIAR ON LN_tareas.idTarea = convert(int,LISTOSPARAINICIAR.Item)  where id_tipo_informe_blue is not null )*/
      select id_tipo_informe_blue from ln_tareas where id_tipo_informe_blue is not null and idtarea in ( select LN_informe_design.idElem
      from informes
      inner join informes iPPAL on informes.informe_padre = iPPAL.informe
      inner join LN_informe_design on (LN_informe_design.idTipoInforme=iPPAL.id_tipo_informe and LN_informe_design.tipo_elem='T' and LN_informe_design.activo=1)
      cross apply dbo.DelimitedSplit8K(LN_informe_design.dependency_tree, ',') LISTOSPARAINICIAR 
      where informes.informe = @V_informe and LISTOSPARAINICIAR.Item = informes.idtarea) )


      /* V1 
       select @nombre_tipo_informe= nombre_tipo_informe + ' (' + tipo_informe + ' ' + version + ')',@grupo_informes = grupo_informes,@V_id_tipo_informe = tipos_informe.id_tipo_informe,
       @triggerPadre= informes.informe_padre
       from tipos_informe inner join informes on tipos_informe.id_tipo_informe = informes.id_tipo_informe
       where informes.informe = @V_informe
       update informes set estado_informe=estado_informe,
       ready_to_start=1,ready_to_start_user_id=@V_user_id,ready_to_start_date=getdate(),ready_to_start_trigger_task=@V_informe 
       where informe_padre = @triggerPadre and id_tipo_informe in (select id_tipo_informe_blue from LN_tareas where idTarea_Padre in (select idTarea from LN_tareas where id_tipo_informe_blue=@V_id_tipo_informe)) 
       and estado_informe='A'
       V1 */




      /* TRAZABILIDAD DEL READY 2 START*/
      exec insertar_trazabilidad 'TAREAS DEPENDIENTES LISTAS PARA INICIAR',@cliente,'READYTOSTART','BACK',@V_contraparte,@V_user_id,NULL,@servicio_contratado
     end
    /*READY TO START */
    SELECT @id AS informe

   end
 end

  /* PAUSAR TAREAS */
 if (upper(@V_accion) = 'PAUSA_TAREA') 
 begin
  /*AGB */
  
  update informes set pausa = @V_pausa_tarea where informe = @V_informe and idreg=@V_informe and informe_padre is not null
/*
AGB UPD LOG INFORMES
*/
   
  
  
  insert into informes_log (informe,horario,user_id,operacion)
  values (@V_informe,getdate(),@V_user_id,iif(@V_pausa_tarea = 1,'P','I'))
  
  select @V_informe as tarea,@V_pausa_tarea as pausa,@V_informe as ID,@V_user_id as usuario,iif(@V_pausa_tarea = 1,'P','I') as operacion

  
 end


END
GO

Used By

No items found