dbo.LN_verificacion_docs_PROD

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

8
Name Data Type Length Description
@accion varchar 30
@p_user_id int 4
@p_activo tinyint 1
@p_cliente int 4
@p_country_code varchar 2
@p_tipo_doc int 4
@p_contraparte int 4
@p_id_verif int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
/*

exec ln_verificacion_docs_ 'queue',21346010


*/


-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_verificacion_docs_PROD 
 -- Add the parameters for the stored procedure here

 @accion          varchar(30),
 @p_user_id         int = null,
 @p_activo         tinyint = 1,
 @p_cliente         int = null,
 @p_country_code        varchar(2) = null,
 @p_tipo_doc         int = null,
 @p_contraparte        int = null,
 @p_id_verif         int = null

 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here

 if (@accion = 'insert') begin

  if not exists (select user_id, cliente, country_code, tipo_doc, contraparte
      from LN_verificacion_docs
      where user_id = @p_user_id
      and cliente = @p_cliente
      and country_code = @p_country_code
      and tipo_doc = @p_tipo_doc
      and contraparte = @p_contraparte)

   insert into LN_verificacion_docs
   (user_id, activo, cliente, country_code, tipo_doc, contraparte)
   values
   (@p_user_id, @p_activo, @p_cliente, @p_country_code, @p_tipo_doc, @p_contraparte)
  
 end else

  if (@accion = 'delete') begin

   if (@p_id_verif is not null) 
    delete from LN_verificacion_docs
    where id_verif = @p_id_verif

  end else

   if (@accion = 'change') begin

    update LN_verificacion_docs set
     activo = iif(activo = 1, 0, 1)
    where id_verif = @p_id_verif

   end else
   
    if (@accion = 'search') begin

     if (@p_user_id is null) 
    
      select users.first_name, users.last_name, users.email, users.username,
        clientes.nombre_cliente, country.country_name, clientes.cli_codigo,
        LN_tipos_doc.nombre_tipo_doc, padrones.identificador, padrones.identificacion,
        padrones.numero, identificadores.abreviatura, padrones.nombre_persona,
        LN_verificacion_docs.cliente, LN_verificacion_docs.country_code,
        LN_verificacion_docs.tipo_doc, LN_verificacion_docs.contraparte,
        LN_verificacion_docs.activo, LN_verificacion_docs.user_id,
        LN_verificacion_docs.id_verif
      from LN_verificacion_docs
      inner join users on LN_verificacion_docs.user_id = users.user_id
      left outer join clientes on LN_verificacion_docs.cliente = clientes.cliente
      left outer join LN_contrapartes on LN_verificacion_docs.contraparte = LN_contrapartes.contraparte
      left outer join padrones ON LN_contrapartes.id_padron = padrones.id_padron
      left outer join identificadores on padrones.identificador = identificadores.identificador
      left outer join LN_tipos_doc on LN_verificacion_docs.tipo_doc = LN_tipos_doc.tipo_doc
      left outer join country on LN_verificacion_docs.country_code = country.country_code
      order by users.first_name, users.last_name

     else 

      select users.first_name, users.last_name, users.email, users.username,
        clientes.nombre_cliente, country.country_name, clientes.cli_codigo,
        LN_tipos_doc.nombre_tipo_doc, padrones.identificador, padrones.identificacion,
        padrones.numero, identificadores.abreviatura, padrones.nombre_persona,
        LN_verificacion_docs.cliente, LN_verificacion_docs.country_code,
        LN_verificacion_docs.tipo_doc, LN_verificacion_docs.contraparte,
        LN_verificacion_docs.activo, LN_verificacion_docs.user_id,
        LN_verificacion_docs.id_verif
      from LN_verificacion_docs
      inner join users on LN_verificacion_docs.user_id = users.user_id
      left outer join clientes on LN_verificacion_docs.cliente = clientes.cliente
      left outer join LN_contrapartes on LN_verificacion_docs.contraparte = LN_contrapartes.contraparte
      left outer join padrones ON LN_contrapartes.id_padron = padrones.id_padron
      left outer join identificadores on padrones.identificador = identificadores.identificador
      left outer join LN_tipos_doc on LN_verificacion_docs.tipo_doc = LN_tipos_doc.tipo_doc
      left outer join country on LN_verificacion_docs.country_code = country.country_code
      where LN_verificacion_docs.user_id = @p_user_id
      order by users.first_name, users.last_name

    
    end else

     IF (@p_user_id is not null) BEGIN

      CREATE TABLE #tempDocsTable (
       doc_id    int,
       PRIMARY KEY NONCLUSTERED (doc_id ASC)
      )

      DECLARE @docs VARCHAR(MAX)=''
      DECLARE @doc int
      
      DECLARE @cc varchar(2), @cl int, @td int, @cont int

      DECLARE Permisos CURSOR FOR

      select country_code, cliente, tipo_doc, contraparte
      from LN_verificacion_docs
      where user_id = @p_user_id
      and activo = 1
      order by country_code, cliente, tipo_doc, contraparte


      OPEN Permisos

      FETCH NEXT FROM Permisos INTO @cc, @cl, @td, @cont

      WHILE @@FETCH_STATUS = 0 BEGIN
       
       if (@cont > 0) begin
        /* por contraparte : ignora cliente y paĆ­s */

        if (@td > 0)

         DECLARE Documentos CURSOR FOR
         
         select doc_id from LN_docs
         where contraparte = @cont
         and estado_doc = 'I'
         and tipo_doc = @td

        else
         
         DECLARE Documentos CURSOR FOR

         select doc_id from LN_docs
         where contraparte = @cont
         and estado_doc = 'I'      
        
       end else begin
        /* contraparte nula */

        if (@cl > 0) begin
         /* por cliente */
         if (@td is null AND @cc is null)

          DECLARE Documentos CURSOR FOR

          select doc_id from LN_docs
          where cliente = @cl
          and estado_doc = 'I'

         else

          if (@td > 0 AND @cc is null)

           DECLARE Documentos CURSOR FOR

           select doc_id from LN_docs
           where cliente = @cl
           and estado_doc = 'I'
           and tipo_doc = @td

          else

           if (@td is null AND @cc is not null)

            DECLARE Documentos CURSOR FOR

            select LN_docs.doc_id from LN_docs
             inner join LN_tipos_doc on LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
            where LN_docs.cliente = @cl
            and LN_docs.estado_doc = 'I'
            and LN_tipos_doc.country_code = @cc

           else

            DECLARE Documentos CURSOR FOR

            select LN_docs.doc_id from LN_docs
             inner join LN_tipos_doc on LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
            where LN_docs.cliente = @cl
            and LN_docs.estado_doc = 'I'
            and LN_docs.tipo_doc = @td
            and LN_tipos_doc.country_code = @cc

        end else begin
         /* cliente nulo */

         if (@td is null AND @cc is null)

          DECLARE Documentos CURSOR FOR

          select doc_id from LN_docs
          where estado_doc = 'I'

         else

          if (@td > 0 AND @cc is null)

           DECLARE Documentos CURSOR FOR

           select doc_id from LN_docs
           where estado_doc = 'I'
           and tipo_doc = @td

          else


           if (@td is null AND @cc is not null)

            DECLARE Documentos CURSOR FOR

            select LN_docs.doc_id from LN_docs
             inner join LN_tipos_doc on LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
            where LN_docs.estado_doc = 'I'
            and LN_tipos_doc.country_code = @cc

           else

            DECLARE Documentos CURSOR FOR

            select LN_docs.doc_id from LN_docs
             inner join LN_tipos_doc on LN_docs.tipo_doc = LN_tipos_doc.tipo_doc
            where LN_docs.estado_doc = 'I'
            and LN_docs.tipo_doc = @td
            and LN_tipos_doc.country_code = @cc


        end

       end


       Open Documentos
       FETCH NEXT FROM Documentos INTO @doc
       WHILE @@FETCH_STATUS = 0 BEGIN
        if (@docs != '') begin set @docs = @docs + ',' end
        set @docs = @docs + convert(varchar, @doc)
        FETCH NEXT FROM Documentos INTO @doc

        BEGIN TRY
         INSERT INTO #tempDocsTable (doc_id) VALUES (@doc)
        END TRY
        BEGIN CATCH
        END CATCH
        
       END
       Close Documentos
       Deallocate Documentos


       FETCH NEXT FROM Permisos INTO @cc, @cl, @td, @cont
      END

      CLOSE Permisos
      DEALLOCATE Permisos

      if (@docs IS NOT NULL) 
      
       SELECT LN_docs.doc_id, LN_docs.contraparte, LN_docs.cliente, LN_docs.tipo_doc,
        LN_docs.doc_version, LN_docs.estado_doc, LN_docs.doc_log, LN_docs.doc_attach,
        CASE 
         WHEN LN_docs.estado_doc = 'N' THEN 'Pendiente de ingreso'
         WHEN LN_docs.estado_doc = 'I' THEN 'Ingresado'
         WHEN LN_docs.estado_doc = 'R' THEN 'Rechazado'
         WHEN LN_docs.estado_doc = 'V' THEN 'Verificado'
        END AS estado_documento,
        CASE 
         WHEN LN_docs.estado_doc = 'N' THEN 'text-info'
         WHEN LN_docs.estado_doc = 'I' THEN 'text-warning'
         WHEN LN_docs.estado_doc = 'R' THEN 'text-danger'
         WHEN LN_docs.estado_doc = 'V' THEN 'text-success'
        END AS class_estado,
        CASE 
         WHEN LN_docs.estado_doc = 'N' THEN 'cloud-upload fa-cloud-upload-alt'
         WHEN LN_docs.estado_doc = 'I' THEN 'exclamation'
         WHEN LN_docs.estado_doc = 'R' THEN 'times'
         WHEN LN_docs.estado_doc = 'V' THEN 'check'
        END AS icon_estado,

        CONVERT(VARCHAR, LN_docs.fecha_vigencia, 103) AS fecha_vigencia,
        CONVERT(VARCHAR, LN_docs.fecha_vigencia, 121) AS fecha_vigencia_ymd,
        CONVERT(VARCHAR, LN_docs.vencimiento_carga, 103) AS vencimiento_carga,
        ISNULL(LN_tipos_doc.es_balance, 0) AS es_balance, LN_docs.texto_rechazo,
        CONVERT(VARCHAR(10), LN_docs.inicio_ejercicio, 103) AS inicio_ejercicio,
        CONVERT(VARCHAR(10), LN_docs.fin_ejercicio, 103) AS fin_ejercicio, gestion,
        CONVERT(VARCHAR,LN_docs.ingresado,103)+' '+CONVERT(VARCHAR(5),LN_docs.ingresado,14) as ingresado,
        CONVERT(VARCHAR,LN_docs.ingresado,103) AS ingresado_dmy,
        CONVERT(VARCHAR,LN_docs.ingresado,121) AS ingresado_ymd,
        CONVERT(VARCHAR,LN_docs.rechazado,103)+' '+CONVERT(VARCHAR(5),LN_docs.rechazado,14) as rechazado,
        CONVERT(VARCHAR,LN_docs.verificado_backend,103)+' '+CONVERT(VARCHAR(5),LN_docs.verificado_backend,14) as verificado_backend,
        CONVERT(VARCHAR(19),LN_docs.verificado_cliente,121) as verificado_cliente,
        CONVERT(VARCHAR(19),LN_docs.created,121) as created,
        CONVERT(VARCHAR(19),LN_docs.modified,121) as modified,
        LN_docs.ingresado_por, LN_docs.rechazado_por, LN_docs.verificado_backend_por,
        LN_docs.verificado_cliente_por, LN_docs.created_by, LN_docs.modified_by,
        clientes.nombre_cliente, padrones.nombre_persona, padrones.identificador,
        padrones.identificacion, padrones.numero, identificadores.abreviatura, identificadores.country_code,
        country.country_name, LN_contrapartes.activo, LN_contrapartes.nombre_contacto,
        LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto,
        LN_tipos_doc.nombre_tipo_doc,LN_docs.id_externo,
        users1.first_name + ' ' + users1.last_name AS ingresado_por_usuario,
        users2.first_name + ' ' + users2.last_name AS rechazado_por_usuario,
        users3.first_name + ' ' + users3.last_name AS verificado_backend_por_usuario,
        users4.first_name + ' ' + users4.last_name AS verificado_cliente_por_usuario,
        users5.first_name + ' ' + users5.last_name AS created_by_usuario,
        users6.first_name + ' ' + users6.last_name AS modified_by_usuario,

        CONVERT(VARCHAR(10), LN_docs.inicio_ejercicio, 103) AS inicio_ejercicio,
        CONVERT(VARCHAR(10), LN_docs.fin_ejercicio, 103) AS fin_ejercicio,
        CONVERT(VARCHAR(10), LN_docs.inicio_ejercicio, 121) AS inicio_ejercicio_ymd,
        CONVERT(VARCHAR(10), LN_docs.fin_ejercicio, 121) AS fin_ejercicio_ymd,

        balances_contables.id_balance,
        balances_contables.fecha_balance, balances_contables.ejercicio, 
        balances_contables.periodo, balances_contables.visible, 
        balances_contables.estado, balances_contables.ruta_archivo,
        convert(varchar, balances_contables.fecha_balance, 103) as fecha_cierre,
        balances_contables.moneda, monedas.nombre_moneda

       FROM LN_docs
       /*INNER JOIN dbo.DelimitedSplit8K(@docs, ',') Docs on LN_docs.doc_id = Docs.Item*/
       INNER JOIN #tempDocsTable ON LN_docs.doc_id = #tempDocsTable.doc_id

       INNER JOIN clientes ON LN_docs.cliente = clientes.cliente
       INNER JOIN LN_contrapartes ON LN_docs.contraparte = LN_contrapartes.contraparte
       INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
       INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
       INNER JOIN country ON identificadores.country_code = country.country_code
       INNER JOIN LN_tipos_doc ON LN_docs.tipo_doc = LN_tipos_doc.tipo_doc

       LEFT OUTER JOIN balances_contables on LN_docs.id_externo = balances_contables.id_balance
       LEFT OUTER JOIN monedas ON balances_contables.moneda = monedas.moneda

       LEFT OUTER JOIN users users1 ON LN_docs.ingresado_por = users1.user_id
       LEFT OUTER JOIN users users2 ON LN_docs.rechazado_por = users2.user_id
       LEFT OUTER JOIN users users3 ON LN_docs.verificado_backend_por = users3.user_id
       LEFT OUTER JOIN users users4 ON LN_docs.verificado_cliente_por = users4.user_id
       LEFT OUTER JOIN users users5 ON LN_docs.created_by = users5.user_id
       LEFT OUTER JOIN users users6 ON LN_docs.modified_by = users6.user_id


       ORDER BY LN_docs.ingresado

      DROP TABLE #tempDocsTable 

     END
 
END
GO

Used By

No items found