IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Split]') AND type in (N'TF'))DROP FUNCTION [dbo].[Split]

go

CREATE FUNCTION [dbo].[Split]
(
    @Texto VARCHAR(MAX),
    @Delimitador CHAR(1)
)
RETURNS @output TABLE(Datos VARCHAR(MAX),pos int)
BEGIN
    DECLARE @Empieza INT, @Termina INT ,@i int
    SELECT @Empieza = 1, @i=1, @Termina= CHARINDEX(@Delimitador , @Texto )
    WHILE @Empieza < LEN(@Texto ) + 1 BEGIN
        IF @Termina = 0  
            SET @Termina = LEN(@Texto ) + 1
      
        INSERT INTO @output (Datos,pos)  
        VALUES(SUBSTRING(@Texto , @Empieza , @Termina - @Empieza ),@i)
        SET @Empieza = @Termina + 1
        SET @Termina = CHARINDEX(@Delimitador , @Texto , @Empieza )
        set @i=@i+1
    END
    RETURN
END

go

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[_insertarEquipoAtributo]') AND type in (N'P', N'PC'))DROP PROCEDURE [dbo].[_insertarEquipoAtributo]

go

CREATE PROCEDURE [_insertarEquipoAtributo]
	@p_id_pruebaChecklist as int
AS
BEGIN

	declare @licencia varchar(1000) =(SELECT uid FROM [seg_usuario] where id=1)
	declare @tablita1 as table (uid varchar(500),eid varchar(100),id_atributo int, id_equipo int,id_equipoAtributo int)
	declare @tablita2 as table (uid varchar(500),eid varchar(100),id_atributo int, id_equipo int,id_equipoAtributo int)

	INSERT INTO @tablita1
	SELECT
			  @licencia
			  ,ATR.eid
			  ,ATR.id
			  ,EQU.id
			  ,EQUAT.id
		  
			  from
			   view_cat_atributo ATR
			   inner join view_cat_catalogo_equipo EQU on (Select datos from dbo.split(ATR.cat_seccionAtributo_seccionAtributo_codigo,'-') where pos=2)=EQU.cat_catalogo_equipo_gen_familia_familia_codigo
			   inner join view_cat_pruebaCheckList_atributo PRU on PRU.id_atributo=ATR.id
			   left join view_cat_catalogo_equipo_atributo EQUAT on EQUAT.[id_catalogo.equipo]=EQU.id and EQUAT.id_atributo=ATR.id
			   where
			   PRU.id_pruebaCheckList=@p_id_pruebaChecklist
			   and ATR.id_tipoAtributo not in (7)
			   and ATR.cat_seccionAtributo_seccionAtributo_codigo<>'EQU'

	update [cat_catalogo.equipo_atributo] set active=0 
	from [cat_catalogo.equipo_atributo] 
	inner join view_cat_atributo ATR on ATR.id=[cat_catalogo.equipo_atributo].id_atributo
	inner join view_cat_pruebaCheckList_atributo PRU on PRU.id_atributo=ATR.id
	where PRU.id_pruebaCheckList=@p_id_pruebaChecklist

	update [cat_catalogo.equipo_atributo] set active=1 from @tablita1 T1 inner join [cat_catalogo.equipo_atributo] on [cat_catalogo.equipo_atributo].id=T1.id_equipoAtributo

	INSERT INTO [dbo].[cat_catalogo.equipo_atributo]
			   ([uid]
			   ,[eid]
			   ,[id_usuario_modifico]
			   ,[id_usuario_creo]
			   ,[fechaModificacion]
			   ,[fechaCreacion]
			   ,[active]
			   ,[catalogo.equipo_atributo]
			   ,[valorMinimo]
			   ,[ValorMaximo]
			   ,[bloquearCierreOT]
			   ,[id_atributo]
			   ,[id_catalogo.equipo]
			   ,[orden])

	SELECT
			  uid
			  ,eid
			  ,1
			  ,1
			  ,getdate()
			  ,getdate()
			  ,1
			  ,''
			  ,0
			  ,0
			  ,0
			  ,id_atributo
			  ,id_equipo
			  ,0

			   FROM
			  @tablita1
			   where
			  id_equipoAtributo is null


	INSERT INTO @tablita2
	SELECT 
			  @licencia
			  ,ATR.eid
			  ,ATR.id
			  ,EQU.id
			  ,EQUAT.id

			   FROM
			   view_cat_atributo ATR
			   inner join view_cat_catalogo_equipo EQU on (Select datos from dbo.split((Select top 1 seccionAtributo_codigo from view_cat_pruebaChecklist_Atributo inner join view_cat_seccionAtributo on view_cat_seccionAtributo.id=view_cat_pruebaChecklist_Atributo.cat_atributo_id_seccionAtributo where id_pruebaChecklist=@p_id_pruebaChecklist and seccionAtributo_codigo like 'SUC-%'),'-') where pos=2)=EQU.cat_catalogo_equipo_gen_familia_familia_codigo
			   inner join view_cat_pruebaCheckList_atributo PRU on PRU.id_atributo=ATR.id
			   left join view_cat_catalogo_equipo_atributo EQUAT on EQUAT.[id_catalogo.equipo]=EQU.id and EQUAT.id_atributo=ATR.id
			   where
			   PRU.id_pruebaCheckList=@p_id_pruebaChecklist
			   and ATR.id_tipoAtributo not in (7)
			   and ATR.cat_seccionAtributo_seccionAtributo_codigo='EQU'

	update [cat_catalogo.equipo_atributo] set active=1 from @tablita2 T2 inner join [cat_catalogo.equipo_atributo] on [cat_catalogo.equipo_atributo].id=T2.id_equipoAtributo

	INSERT INTO [dbo].[cat_catalogo.equipo_atributo]
			   ([uid]
			   ,[eid]
			   ,[id_usuario_modifico]
			   ,[id_usuario_creo]
			   ,[fechaModificacion]
			   ,[fechaCreacion]
			   ,[active]
			   ,[catalogo.equipo_atributo]
			   ,[valorMinimo]
			   ,[ValorMaximo]
			   ,[bloquearCierreOT]
			   ,[id_atributo]
			   ,[id_catalogo.equipo]
			   ,[orden])

	SELECT
			  uid
			  ,eid
			  ,1
			  ,1
			  ,getdate()
			  ,getdate()
			  ,1
			  ,''
			  ,0
			  ,0
			  ,0
			  ,id_atributo
			  ,id_equipo
			  ,0

			   FROM
			  @tablita2
			   where
			  id_equipoAtributo is null

		select ''

END
