dbo.LN_set_tipo_doc_V2

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

10
Name Data Type Length Description
@accion varchar 50
@set_doc int 4
@tipo_doc int 4
@user_id int 4
@tolerancia tinyint 1
@activo bit 1
@peso_score decimal 5
@killer bit 1
@verif_back bit 1
@verif_cliente bit 1

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE OR ALTER PROCEDURE dbo.LN_set_tipo_doc_V2
    @accion VARCHAR(50),
    @set_doc INT,
    @tipo_doc INT,
    @user_id INT,
    @tolerancia TINYINT=0,
    @activo BIT=1,
    @peso_score DECIMAL(5,2) = NULL,
    @killer BIT = 0,
    @verif_back BIT = 0,
    @verif_cliente BIT = 0
-- add more stored procedure parameters here
AS
BEGIN
    SET NOCOUNT OFF;
    -- variables declarados
    DECLARE @p_tipo_doc INT;
    DECLARE @orden TINYINT;
    -- body of the stored procedure
    IF ( @accion = 'SEARCH' )
        -- accion que devuelve los tipos de documentos de un set de documentos
        -- parametros usados: (set_doc)
        BEGIN
            SELECT  LN_set_tipo_doc.* , LN_tipos_doc.nombre_tipo_doc,LN_tipos_doc.consentimiento,LN_tipos_doc.es_dni
            FROM LN_set_tipo_doc
            INNER JOIN LN_tipos_doc ON LN_tipos_doc.tipo_doc=LN_set_tipo_doc.tipo_doc
            WHERE LN_set_tipo_doc.set_doc=@set_doc
            ORDER BY LN_set_tipo_doc.orden ASC;
            RETURN;
        END
    IF ( @accion = 'SELECT' )
        -- accion que selecciona un tipo de documento especifico de un set de documentos 
        -- parametros usados: (set_doc,tipo_doc)
        BEGIN
            SELECT LN_set_tipo_doc.* , LN_tipos_doc.nombre_tipo_doc,LN_tipos_doc.consentimiento,LN_tipos_doc.es_dni
            FROM LN_set_tipo_doc
            INNER JOIN LN_tipos_doc ON LN_tipos_doc.tipo_doc=LN_set_tipo_doc.tipo_doc
            WHERE LN_set_tipo_doc.set_doc=@set_doc AND LN_set_tipo_doc.tipo_doc=@tipo_doc;
            RETURN;
        END
    IF ( @accion = 'INSERT' )
        -- accion que inserta un tipo de documento en un set de documentos
        -- parametros usados: Todos
        BEGIN
            SELECT @orden = MAX(LN_set_tipo_doc.orden)
            FROM LN_set_tipo_doc 
            WHERE LN_set_tipo_doc.set_doc=@set_doc 
   IF ( @orden IS NULL )
                SET @orden = 0
            --
            INSERT INTO LN_set_tipo_doc (
                set_doc,
                tipo_doc,
                tolerancia_carga,
                orden,
                verifica_backend,
                verifica_cliente,
                peso_score,
                activo,
                killer,
                created,
                created_by
            ) VALUES (
                @set_doc,
                @tipo_doc,
                @tolerancia,
                @orden+1,
                @verif_back,
                @verif_cliente,
                @peso_score,
                @activo,
                @killer,
                GETDATE(),
                @user_id
            );
            RETURN;
        END   
                    
    IF ( @accion = 'UPDATE' )
        BEGIN
            -- accion que actualiza un registro de la tabla
            -- parametros usados: Todos
            UPDATE LN_set_tipo_doc SET
            tolerancia_carga = @tolerancia,
            peso_score = @peso_score,
            activo = @activo,
            killer = @killer,
            verifica_backend = @verif_back,
            verifica_cliente = @verif_cliente,
            modified = GETDATE(),
            modified_by = @user_id
            WHERE set_doc=@set_doc AND tipo_doc=@tipo_doc;
            RETURN;
        END
    IF ( @accion = 'DELETE' )
        -- accion que borra el registro tipo_doc set_doc
        -- parametros usados : (set_doc,tipo_doc)
        BEGIN
            DELETE FROM LN_set_tipo_doc WHERE set_doc=@set_doc AND tipo_doc=@tipo_doc;
            -- Cursor que reordena todos el orden de todos los tipos de documentos
    /*        DECLARE @cur_set_doc INT ,@cur_tipo_doc INT;
                SET @orden = 1; -- variable del orden
                DECLARE cursor_set_tipo_doc CURSOR FOR SELECT set_doc,tipo_doc FROM LN_set_tipo_doc  WHERE set_doc=1 ORDER BY orden ASC
                    OPEN cursor_set_tipo_doc;
                    FETCH NEXT FROM cursor_set_tipo_doc INTO @cur_set_doc,@cur_tipo_doc;
                    --
                    WHILE (@@FETCH_STATUS = 0) 
                    BEGIN
                        UPDATE LN_set_tipo_doc SET orden=@orden WHERE set_doc=@cur_set_doc AND tipo_doc=@cur_tipo_doc
                        SET @orden += 1
                        FETCH NEXT FROM cursor_set_tipo_doc INTO @cur_set_doc,@cur_tipo_doc;
                    END
                    --
                    CLOSE cursor_set_tipo_doc;
                DEALLOCATE cursor_set_tipo_doc;
        */

            RETURN;
        END
    IF ( @accion = 'UP')
        -- accion que sube el orden
        -- parametros usados : (set_doc,tipo_doc)
        BEGIN
            -- variable que se le asigna el orden
            SELECT @orden = LN_set_tipo_doc.orden
            FROM LN_set_tipo_doc
            WHERE LN_set_tipo_doc.set_doc = @set_doc
            AND LN_set_tipo_doc.tipo_doc = @tipo_doc
            --
            IF (@orden > 1)
                BEGIN
                    -- variable que tiene el orden atras
                    SELECT @p_tipo_doc = tipo_doc
                    FROM LN_set_tipo_doc
                    WHERE LN_set_tipo_doc.set_doc = @set_doc
                    AND LN_set_tipo_doc.orden = @orden-1
                    --    
                    UPDATE LN_set_tipo_doc SET orden = @orden-1
                    WHERE set_doc = @set_doc
                    AND tipo_doc = @tipo_doc
                    --
                    UPDATE LN_set_tipo_doc SET orden = @orden
                    WHERE set_doc = @set_doc
                    AND tipo_doc = @p_tipo_doc
                END
            RETURN;            
        END
    
    IF ( @accion = 'DOWN' )
        BEGIN
            -- count de filas de set
            DECLARE @cant TINYINT;
            SELECT @cant = COUNT(*)
            FROM LN_set_tipo_doc 
            WHERE set_doc = @set_doc
            -- orden de la fila
            SELECT @orden = LN_set_tipo_doc.orden
            FROM LN_set_tipo_doc
            WHERE LN_set_tipo_doc.set_doc = @set_doc
            AND LN_set_tipo_doc.tipo_doc = @tipo_doc
            -- se verifica que el orden sea menor al maximo orden posible
            IF (@orden < @cant) 
                BEGIN
                    SELECT @p_tipo_doc = tipo_doc
                    FROM LN_set_tipo_doc
                    WHERE LN_set_tipo_doc.set_doc = @set_doc
                    AND LN_set_tipo_doc.orden = @orden+1
                    --
                    UPDATE LN_set_tipo_doc SET orden = @orden+1
                    WHERE set_doc = @set_doc
                    AND tipo_doc = @tipo_doc
                    --
                    UPDATE LN_set_tipo_doc SET orden = @orden
                    WHERE set_doc = @set_doc
                    AND tipo_doc = @p_tipo_doc
                END
            RETURN;
        END
        if (@accion = 'available') begin

   select LN_tipos_doc.*
   from LN_tipos_doc
   where LN_tipos_doc.tipo_doc NOT IN
    (select tipo_doc
    from LN_set_tipo_doc
    where set_doc = @set_doc)
   order by LN_tipos_doc.nombre_tipo_doc

  end
        
    -- No ejecuta nada       
    SELECT 'NO EXECUTION';
END

GO

Used By

No items found