dbo.SAAS_Contratos_

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 40
@p_user_id int 4
@p_saas_contrato int 4
@p_saas_cliente int 4
@p_nro_contrato varchar 50
@p_nro_poliza varchar 50
@p_datos_adicionales varchar -1
@p1_vigencia_desde varchar 10
@p1_vigencia_hasta varchar 10
@p_activo int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: María Inés Soria
-- Create date: 30/10/2019
-- ABMC de la tabla SAAS_Usuarios_Contratos -- @accion: INSERT, DELETE, MODIFY, SELECT, SELECTALL
-- Para delete, select solo basta con los 3 primeros parámetros.
-- Para selectall, mandar el saas_cliente
-- =============================================
-- select * from saas_contratos

-- exec SAAS_Contratos_ 'selectall2','499679932',0,25,515494256
CREATE OR ALTER PROCEDURE dbo.SAAS_Contratos_ 
 @accion varchar(40),
 @p_user_id int = 0,
 @p_saas_contrato int =  0,

 @p_saas_cliente int = 0,
 @p_nro_contrato varchar(50) = NULL,
 @p_nro_poliza varchar(50) = NULL,
 @p_datos_adicionales varchar(max) = NULL,
 @p1_vigencia_desde varchar(10) = NULL,
 @p1_vigencia_hasta varchar(10) =  NULL,
 @p_activo int = NULL

AS
BEGIN

 SET NOCOUNT ON;

 if (@p1_vigencia_desde = '') set @p1_vigencia_desde = null
 if (@p1_vigencia_hasta = '') set @p1_vigencia_hasta = null

 declare @p_vigencia_desde date = CONVERT(date, @p1_vigencia_desde) 
 declare @p_vigencia_hasta date = CONVERT(date, @p1_vigencia_hasta) 

 IF (@accion = 'INSERT') BEGIN

  IF not (@p_saas_cliente > 0) 
  begin
     select '1' as error, 'No se puede dar de alta el registro, por falta de datos' as mensaje, null as saas_contrato
  end 
  else 
  begin
   DECLARE @saas_contrato int


   INSERT INTO SAAS_Contratos
              (saas_cliente,
      nro_contrato, 
      nro_poliza, 
      datos_adicionales,
      vigencia_desde,
      vigencia_hasta,
      activo,
      created, 
      created_by)

    VALUES ( @p_saas_cliente,
      @p_nro_contrato, 
      @p_nro_poliza, 
      @p_datos_adicionales,
      @p_vigencia_desde,
      @p_vigencia_hasta,
      1, 
      GETDATE(), 
      @p_user_id)


   SET @saas_contrato = SCOPE_IDENTITY()

   SELECT '0' as error, 'Alta OK' as mensaje, @saas_contrato as saas_contrato  

  end
 end 


 IF (@accion = 'UPDATE') BEGIN

  IF not (@p_saas_contrato > 0) 
  begin
     select '1' as error, 'No se puede dar modificar el registro, por falta de datos' as mensaje, @p_saas_contrato as saas_contrato 
  end 
  else 
  begin
   UPDATE SAAS_Contratos
      SET saas_cliente  = @p_saas_cliente, 
     nro_contrato  = @p_nro_contrato,
     nro_poliza        = @p_nro_poliza, 
     datos_adicionales = @p_datos_adicionales,
     vigencia_desde  = @p_vigencia_desde,
     vigencia_hasta  = @p_vigencia_hasta,
     activo    = @p_activo, 
     modified   = GETDATE(), 
     modified_by   = @p_user_id
   WHERE saas_contrato = @p_saas_contrato
     select '0' as error, 'Modificacion OK' as mensaje, @p_saas_contrato as saas_contrato 

  end
 end 

 IF (@accion = 'DELETE') BEGIN --> Pasa el registro a inactivo (activo = 0) / o activo si esta inactivo 
  declare @activo bit 
  select @p_nro_contrato = nro_contrato, 
      @p_nro_poliza = nro_poliza, 
      @activo = activo 
       from SAAS_Contratos
   WHERE saas_contrato = @p_saas_contrato
  
  -- Si se quiere activar controla que no haya otro contratos con los mismos datos ya activo 
  IF (@activo = 0 and exists (select * from SAAS_Contratos where nro_contrato = @p_nro_contrato and nro_poliza = @p_nro_poliza and saas_contrato != @p_saas_contrato and activo = 1 ))
  begin
   select '1' as error, 'No se puede activar porque ya existe otro contrato con los mismos datos' as mensaje, @p_saas_contrato as saas_contrato 
  end 
  else 
  begin 
   IF not (@p_saas_contrato > 0) 
   begin
      select '1' as error, 'No se puede modificar el activo/inactivo del registro, por falta de datos' as mensaje, @p_saas_contrato as saas_contrato 
   end 
   else 
   begin
    UPDATE SAAS_Contratos
     SET
     activo = IIF(activo=1,0,1), 
     modified =  GETDATE(), 
     modified_by =  @p_user_id
    WHERE saas_contrato = @p_saas_contrato
    select '0' as error, 'Accion OK' as mensaje, @p_saas_contrato as saas_contrato 

   end
  end
 end 

 -- 296044


 IF (@accion = 'SELECT') BEGIN 

  IF not (@p_saas_contrato > 0) 
  begin
     select '1' as error, 'No se puede consultar el registro, por falta de datos' as mensaje, @p_saas_contrato as saas_contrato 
  end 
  else 
  begin
   SELECT SAAS_Contratos.*
     FROM SAAS_Contratos
    WHERE saas_contrato = @p_saas_contrato
  end
 end 

 IF (@accion = 'SELECTALL') BEGIN 

   SELECT SAAS_Contratos.*, 
       isnull(usuarios.cantidad,0) as cant_usuarios, 
       ISNULL(usuario.nombre, '') as usuario,
       ISNULL(usuario.sector, '') as sector,
       iif(isnull(usuarios.cantidad,0)-1>0, ' + ' +  convert(varchar,(isnull(usuarios.cantidad,0)-1)), '') as mas_usuarios,
       ISNULL(consultas.cantidad,0) as cant_consultas
       
     FROM SAAS_Contratos
 
     left join (select saas_contrato, count(*) as cantidad 
                  from SAAS_Usuarios_contratos usu
        where usu.activo = 1 
       and usu.saas_cliente = @p_saas_cliente and activo = 1
       group by saas_contrato) usuarios on usuarios.saas_contrato = SAAS_Contratos.saas_contrato
     left join (select saas_contrato, count(*) as cantidad 
                  from SAAS_Historial_Consultas con
         inner join SAAS_Usuarios_contratos usu on usu.saas_usuario_contrato = con.saas_usuario_contrato
        where usu.activo = 1 
       and usu.saas_cliente = @p_saas_cliente 
       group by saas_contrato) consultas on consultas.saas_contrato = SAAS_Contratos.saas_contrato
     left join (select saas_contrato, SAAS_Usuarios.nombre, SAAS_Usuarios.sector
                  from SAAS_Usuarios_contratos usu2
         inner join SAAS_Usuarios on (SAAS_Usuarios.saas_usuario = usu2.saas_usuario and saas_usuarios.activo = 1) 
       where usu2.saas_cliente = @p_saas_cliente 
       and usu2.activo = 1
       and usu2.saas_usuario_contrato = (select MIN (saas_usuario_contrato) from SAAS_Usuarios_Contratos usu3 where usu3.saas_contrato = usu2.saas_contrato and usu3.activo = 1) 
       ) usuario on usuario.saas_contrato = SAAS_Contratos.saas_contrato

    WHERE saas_cliente = @p_saas_cliente and activo = 1 
    order by saas_contrato


 end 

 /*
  select * from SAAS_Contratos where saas_cliente in (34,37,32) 
  select * from SAAS_Clientes where saas_cliente in (37,32) 
  select * from padrones where id_padron in (1983861,1856863) 
  613392 - 36
  select * from saas_contratos where nro_contrato = 613392
  select * from saas_contratos where saas_contrato = 36
  UPDATE SAAS_Contratos
      SET
  activo = IIF(activo=1,0,1) 
  WHERE saas_contrato = 36
  */

 IF (@accion = 'SELECTALL2') BEGIN 

   SELECT SAAS_Contratos.*, 
       isnull(usuarios.cantidad,0) as cant_usuarios, 
       ISNULL(usuario.nombre, '') as usuario,
       ISNULL(usuario.sector, '') as sector,
       iif(isnull(usuarios.cantidad,0)-1>0, ' + ' +  convert(varchar,(isnull(usuarios.cantidad,0)-1)), '') as mas_usuarios,
       ISNULL(consultas.cantidad,0) as cant_consultas
       
     FROM SAAS_Contratos
 
     left join (select saas_contrato, count(*) as cantidad 
                  from SAAS_Usuarios_contratos usu
        where usu.activo = 1 
       and usu.saas_cliente = @p_saas_cliente and activo = 1
       group by saas_contrato) usuarios on usuarios.saas_contrato = SAAS_Contratos.saas_contrato
     left join (select saas_contrato, count(*) as cantidad 
                  from SAAS_Historial_Consultas con
         inner join SAAS_Usuarios_contratos usu on usu.saas_usuario_contrato = con.saas_usuario_contrato
        where usu.activo = 1 
       and usu.saas_cliente = @p_saas_cliente 
       group by saas_contrato) consultas on consultas.saas_contrato = SAAS_Contratos.saas_contrato
     left join (select saas_contrato, SAAS_Usuarios.nombre, SAAS_Usuarios.sector
                  from SAAS_Usuarios_contratos usu2
         inner join SAAS_Usuarios on (SAAS_Usuarios.saas_usuario = usu2.saas_usuario and saas_usuarios.activo = 1) 
       where usu2.saas_cliente = @p_saas_cliente 
       and usu2.activo = 1
       and usu2.saas_usuario_contrato = (select MIN (saas_usuario_contrato) from SAAS_Usuarios_Contratos usu3 where usu3.saas_contrato = usu2.saas_contrato and usu3.activo = 1) 
       ) usuario on usuario.saas_contrato = SAAS_Contratos.saas_contrato

    WHERE saas_cliente = @p_saas_cliente /*and activo = 1 */
    order by saas_contrato


 end 






 
END

GO

Used By

No items found