dbo.LN_contraparte_familias_

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 10
@p_contraparte int 4
@p_familia int 4
@p_codigo_agrupacion varchar 10
@p_estado_homologacion varchar 1
@p_activo tinyint 1
@p_user_id int 4

SQL Script

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

exec [LN_contraparte_familias_] 'all',1,null,null,null,null,null

*/



-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_contraparte_familias_
 -- Add the parameters for the stored procedure here

  @accion       varchar(10),
  @p_contraparte     int,
  @p_familia      int,
  @p_codigo_agrupacion   varchar(10),
  @p_estado_homologacion   varchar(1),
  @p_activo      tinyint,
  @p_user_id      int




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 * from LN_contraparte_familias 
        WHERE contraparte = @p_contraparte
         AND familia = @p_familia)
  begin 
   INSERT INTO LN_contraparte_familias
   (contraparte, familia, codigo_agrupacion, estado_homologacion, activo, created_by, created)
   SELECT LN_contrapartes.contraparte, LN_familias.familia, 
     @p_codigo_agrupacion AS codigo_agrupacion, @p_estado_homologacion AS estado_homologacion,
     @p_activo AS activo, @p_user_id AS created_by, GETDATE() AS created
   FROM LN_contrapartes
   INNER JOIN padrones on LN_contrapartes.id_padron = padrones.id_padron
   INNER JOIN identificadores on padrones.identificador = identificadores.identificador
   INNER JOIN LN_familias ON (--identificadores.country_code = LN_familias.country_code AND 
            LN_contrapartes.cliente = LN_familias.cliente)
   WHERE LN_contrapartes.contraparte = @p_contraparte
   AND LN_familias.familia = @p_familia
  end 
  return 

 END ELSE

  IF (@accion = 'UPDATE') BEGIN

   UPDATE LN_contraparte_familias SET
   codigo_agrupacion = @p_codigo_agrupacion,
   estado_homologacion = @p_estado_homologacion,
   activo = @p_activo,
   modified = GETDATE(),
   modified_by = @p_user_id
   WHERE contraparte = @p_contraparte
   AND familia = @p_familia


  END ELSE

   IF (@accion = 'DELETE') BEGIN

    DELETE FROM LN_contraparte_familias
    WHERE contraparte = @p_contraparte
    AND familia = @p_familia

   END ELSE

    IF (@accion = 'SELECT') BEGIN

     SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
      identificadores.country_code, country.country_name, padrones.nombre_persona,
      identificadores.abreviatura, padrones.identificador, padrones.numero, clientes.nombre_cliente,
      LN_contraparte_familias.codigo_agrupacion,
      LN_contraparte_familias.estado_homologacion,
      LN_contraparte_familias.activo,
      LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto, 
      LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
      LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
      LN_familias.uso_familia, LN_familias.id_producto,
      CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
      CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
      users.first_name + ' ' + users.last_name AS created_by_user,
      users1.first_name + ' ' + users1.last_name AS modified_by_user


     FROM LN_contrapartes
     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_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
     INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
     INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
     LEFT OUTER JOIN users ON LN_contraparte_familias.created_by = users.user_id
     LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id

     WHERE LN_contraparte_familias.contraparte = @p_contraparte
     AND LN_contraparte_familias.familia = @p_familia

   
    END ELSE BEGIN


     IF (@accion = 'ALL') BEGIN
      /* CASO especial que dado el parámetro @p_contraparte trae todas
       las familias del cliente visibles para el país de la contraparte
       y agrega un campo adicional 'asignada' si está asociada 
      
       Modificado para que sólo considere familias de primer orden, NO subfamilias
       */



      SELECT FAMS.contraparte, FAMS.cliente, FAMS.id_padron,
       FAMS.country_code, country.country_name, FAMS.nombre_persona,
       FAMS.abreviatura, FAMS.identificador, FAMS.numero, FAMS.nombre_cliente,
       FAMS.codigo_agrupacion,
       FAMS.estado_homologacion,
       FAMS.activo,
       LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
       FAMS.created,
       FAMS.modified,
       FAMS.created_by_user,
       FAMS.modified_by_user,
       CASE WHEN FAMS.contraparte IS NULL THEN 0 ELSE 1 END AS asignada,
       ln_familias.servicio_contratado, 
       iif(isnull(doc.hay,0) > 0, 'si','no') as carga_documentos  

      FROM LN_familias
      INNER JOIN country ON LN_familias.country_code = country.country_code

      -- 09/09/2020
      left outer join (select LN_set_tipo_doc.set_doc, LN_tipos_doc_carga_verif.familia, count(*) hay 
                         from LN_set_tipo_doc 
            inner join LN_tipos_doc_carga_verif on (LN_tipos_doc_carga_verif.tipo_doc = ln_set_tipo_doc.tipo_doc)
                         
            where quien_carga = 'L' 
            group by LN_set_tipo_doc.set_doc,LN_tipos_doc_carga_verif.familia
            ) doc
            on (doc.set_doc = LN_familias.set_doc and doc.familia = ln_familias.familia)

      LEFT OUTER JOIN
       (SELECT LN_contrapartes.contraparte,
       LN_contraparte_familias.familia, LN_contrapartes.cliente, LN_contrapartes.id_padron,
       identificadores.country_code, padrones.nombre_persona,
       identificadores.abreviatura, padrones.identificador, padrones.numero, clientes.nombre_cliente,
       LN_contraparte_familias.codigo_agrupacion,
       LN_contraparte_familias.estado_homologacion,
       LN_contraparte_familias.activo,
       CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
       CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
       users.first_name + ' ' + users.last_name AS created_by_user,
       users1.first_name + ' ' + users1.last_name AS modified_by_user
       FROM LN_contraparte_familias
       INNER JOIN LN_contrapartes ON LN_contraparte_familias.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 clientes ON LN_contrapartes.cliente = clientes.cliente
       LEFT OUTER JOIN users ON LN_contraparte_familias.created_by = users.user_id
       LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
       WHERE LN_contrapartes.contraparte = @p_contraparte) FAMS
      ON LN_familias.familia = FAMS.familia

      WHERE LN_familias.visible = 1
      --AND LN_familias.country_code = (SELECT country_code FROM LN_contrapartes WHERE contraparte = @p_contraparte)
      AND LN_familias.cliente = (SELECT cliente FROM LN_contrapartes WHERE contraparte = @p_contraparte)
      AND ISNULL(LN_familias.subfamilia, 0) = 0

      ORDER BY country.country_name, LN_familias.nombre_familia, FAMS.nombre_persona


     END ELSE BEGIN


      IF (@p_contraparte IS NULL AND @p_familia IS NULL)

       SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
        identificadores.country_code, country.country_name, padrones.nombre_persona,
        identificadores.abreviatura, padrones.identificador, padrones.numero, clientes.nombre_cliente,
        LN_contraparte_familias.codigo_agrupacion,
        LN_contraparte_familias.estado_homologacion,
        LN_contraparte_familias.activo,
        LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto, 
        LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
        LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
        LN_familias.uso_familia, LN_familias.id_producto,
        CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
        CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
        users.first_name + ' ' + users.last_name AS created_by_user,
        users1.first_name + ' ' + users1.last_name AS modified_by_user


       FROM LN_contrapartes
       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_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
       INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
       INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
       LEFT OUTER JOIN users ON LN_contraparte_familias.created_by = users.user_id
       LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id

       ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona


      ELSE

       IF (@p_contraparte IS NOT NULL AND @p_familia IS NULL)

        SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
         identificadores.country_code, country.country_name, padrones.nombre_persona,
         identificadores.abreviatura, padrones.identificador, padrones.numero, clientes.nombre_cliente,
         LN_contraparte_familias.codigo_agrupacion,
         LN_contraparte_familias.estado_homologacion,
         LN_contraparte_familias.activo,
         LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto, 
         LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
         LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
         LN_familias.uso_familia, LN_familias.id_producto,
         CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
         CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
         users.first_name + ' ' + users.last_name AS created_by_user,
         users1.first_name + ' ' + users1.last_name AS modified_by_user


        FROM LN_contrapartes
        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_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
        INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
        INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
        LEFT OUTER JOIN users ON LN_contraparte_familias.created_by = users.user_id
        LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
        WHERE LN_contraparte_familias.contraparte = @p_contraparte

        ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona

       ELSE

        IF (@p_contraparte IS NULL AND @p_familia IS NOT NULL)

         SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
          identificadores.country_code, country.country_name, padrones.nombre_persona,
          identificadores.abreviatura, padrones.identificador, padrones.numero, clientes.nombre_cliente,
          LN_contraparte_familias.codigo_agrupacion,
          LN_contraparte_familias.estado_homologacion,
          LN_contraparte_familias.activo,
          LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto, 
          LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
          LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
          LN_familias.uso_familia, LN_familias.id_producto,
          CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
          CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
          users.first_name + ' ' + users.last_name AS created_by_user,
          users1.first_name + ' ' + users1.last_name AS modified_by_user


         FROM LN_contrapartes
         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_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
         INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
         INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
         LEFT OUTER JOIN users ON LN_contraparte_familias.created_by = users.user_id
         LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
         WHERE LN_contraparte_familias.familia = @p_familia

         ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona


        ELSE
    
         SELECT LN_contrapartes.contraparte, LN_contrapartes.cliente, LN_contrapartes.id_padron,
          identificadores.country_code, country.country_name, padrones.nombre_persona,
          identificadores.abreviatura, padrones.identificador, padrones.numero, clientes.nombre_cliente,
          LN_contraparte_familias.codigo_agrupacion,
          LN_contraparte_familias.estado_homologacion,
          LN_contraparte_familias.activo,
          LN_contrapartes.nombre_contacto, LN_contrapartes.email_contacto, LN_contrapartes.telefono_contacto, 
          LN_contrapartes.activo, LN_contrapartes.vigencia_desde, LN_contrapartes.vigencia_hasta,
          LN_familias.familia, LN_familias.nombre_familia, LN_familias.visible,
          LN_familias.uso_familia, LN_familias.id_producto,
          CONVERT(VARCHAR(19), LN_contraparte_familias.created, 121) AS created,
          CONVERT(VARCHAR(19), LN_contraparte_familias.modified, 121) AS modified,
          users.first_name + ' ' + users.last_name AS created_by_user,
          users1.first_name + ' ' + users1.last_name AS modified_by_user


         FROM LN_contrapartes
         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_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
         INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
         INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
         LEFT OUTER JOIN users ON LN_contraparte_familias.created_by = users.user_id
         LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
         WHERE LN_contraparte_familias.contraparte = @p_contraparte
         AND LN_contraparte_familias.familia = @p_familia

         ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona


     END



   END






END

GO