Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
2| Name | Data Type | Length | Description |
|---|---|---|---|
| @w_username | char | 8 | |
| @pais_prov | varchar | 5 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec WS_subcontratistas_cantidad 'wspelaez'
exec WS_subcontratistas_cantidad 'wspelaez','AR'
exec WS_subcontratistas_cantidad 'wspelaez','PY'
exec WS_subcontratistas_cantidad 'wspelaez','UY'
*/
CREATE OR ALTER PROCEDUREdbo.WS_subcontratistas_cantidad
@w_username char(8)
, @pais_prov varchar(5) = null
AS
BEGIN
DECLARE @W_Cli_Codigo INTEGER = 0
DECLARE @W_Cant_1 INTEGER = 0
DECLARE @W_Cant_2 INTEGER = 0
DECLARE @W_Cant_grupo INTEGER = 0, @Resto INTEGER = 0, @Division INTEGER = 0
if @pais_prov = '' set @pais_prov = null
select distinct top 1 @W_Cli_Codigo = usuarios_productos.cliente
from users
left join usuarios_productos on usuarios_productos.user_id = users.user_id
where users.username = @w_Username
and usuarios_productos.id_producto in (select producto from productos where sigla in ('LN','LCS'))
if (@W_cli_codigo = 0)
begin
select 0 as total_registros,
0 as cantidad_grupos
end
else
begin
-- Cantidad de Subcontratistas Vigentes de la Gestión activa, que corresponden a Contratistas activos de la Gestión activa
SELECT @W_cant_2 = COUNT(*)
FROM LN_contrapartes
inner join LN_gestiones on LN_gestiones.contraparte = ln_contrapartes.contraparte
inner join ln_contrapartes b on b.contraparte = LN_contrapartes.id_padre
inner join LN_gestiones c on c.contraparte = b.contraparte
inner join LN_contraparte_familias f on f.contraparte = b.contraparte
WHERE LN_contrapartes.cliente = @W_Cli_Codigo
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 1
AND LN_gestiones.vigente = 1
AND getdate() BETWEEN LN_contrapartes.vigencia_desde AND LN_contrapartes.vigencia_hasta
AND LN_gestiones.desde <= getdate() AND LN_gestiones.hasta >= getdate()
AND b.activo = 1
AND c.vigente = 1
AND c.desde <= getdate() AND c.hasta >= getdate()
and LN_contrapartes.id_padre is not null
and f.familia not in (189,195)
and iif(@pais_prov is not null,iif(@pais_prov=b.pais_servicio,1,0),1) = 1
-- Cantidad de Contratistas activos de la Gestión activa
SELECT @W_cant_1 = COUNT(*)
FROM LN_contrapartes
inner join LN_gestiones c on c.contraparte = LN_contrapartes.contraparte
inner join LN_contraparte_familias f on f.contraparte = c.contraparte
WHERE LN_contrapartes.cliente = @W_Cli_Codigo
AND LN_contrapartes.activo = 1
AND LN_contrapartes.Subcontratista = 0
AND c.vigente = 1
AND c.desde <= getdate() AND c.hasta >= getdate()
and f.familia not in (189,195)
and iif(@pais_prov is not null,iif(@pais_prov=LN_contrapartes.pais_servicio,1,0),1) = 1
--select @W_Cant_1, @W_Cant_2
SET @W_Cant_1 = @W_Cant_1 + @W_Cant_2
SET @Division = @W_Cant_1 / 50
SET @Resto = @W_Cant_1 - (@Division * 50)
IF @Resto = 0
set @W_Cant_grupo = @Division
ELSE
set @W_Cant_grupo = @Division + 1
select @W_Cant_1 as total_registros,
@W_Cant_grupo as cantidad_grupos,
@pais_prov as pais
end
END
GO
GO
/*
exec WS_subcontratistas_cantidad 'wspelaez'
exec WS_subcontratistas_cantidad 'wspelaez','AR'
exec WS_subcontratistas_cantidad 'wspelaez','PY'
exec WS_subcontratistas_cantidad 'wspelaez','UY'
*/
CREATE OR ALTER PROCEDUREdbo.WS_subcontratistas_cantidad
@w_username char(8)
, @pais_prov varchar(5) = null
AS
BEGIN
DECLARE @W_Cli_Codigo INTEGER = 0
DECLARE @W_Cant_1 INTEGER = 0
DECLARE @W_Cant_2 INTEGER = 0
DECLARE @W_Cant_grupo INTEGER = 0, @Resto INTEGER = 0, @Division INTEGER = 0
if @pais_prov = '' set @pais_prov = null
select distinct top 1 @W_Cli_Codigo = usuarios_productos.cliente
from users
left join usuarios_productos on usuarios_productos.user_id = users.user_id
where users.username = @w_Username
and usuarios_productos.id_producto in (select producto from productos where sigla in ('LN','LCS'))
if (@W_cli_codigo = 0)
begin
select 0 as total_registros,
0 as cantidad_grupos
end
else
begin
-- Cantidad de Subcontratistas Vigentes de la Gestión activa, que corresponden a Contratistas activos de la Gestión activa
SELECT @W_cant_2 = COUNT(*)
FROM LN_contrapartes
inner join LN_gestiones on LN_gestiones.contraparte = ln_contrapartes.contraparte
inner join ln_contrapartes b on b.contraparte = LN_contrapartes.id_padre
inner join LN_gestiones c on c.contraparte = b.contraparte
inner join LN_contraparte_familias f on f.contraparte = b.contraparte
WHERE LN_contrapartes.cliente = @W_Cli_Codigo
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = 1
AND LN_gestiones.vigente = 1
AND getdate() BETWEEN LN_contrapartes.vigencia_desde AND LN_contrapartes.vigencia_hasta
AND LN_gestiones.desde <= getdate() AND LN_gestiones.hasta >= getdate()
AND b.activo = 1
AND c.vigente = 1
AND c.desde <= getdate() AND c.hasta >= getdate()
and LN_contrapartes.id_padre is not null
and f.familia not in (189,195)
and iif(@pais_prov is not null,iif(@pais_prov=b.pais_servicio,1,0),1) = 1
-- Cantidad de Contratistas activos de la Gestión activa
SELECT @W_cant_1 = COUNT(*)
FROM LN_contrapartes
inner join LN_gestiones c on c.contraparte = LN_contrapartes.contraparte
inner join LN_contraparte_familias f on f.contraparte = c.contraparte
WHERE LN_contrapartes.cliente = @W_Cli_Codigo
AND LN_contrapartes.activo = 1
AND LN_contrapartes.Subcontratista = 0
AND c.vigente = 1
AND c.desde <= getdate() AND c.hasta >= getdate()
and f.familia not in (189,195)
and iif(@pais_prov is not null,iif(@pais_prov=LN_contrapartes.pais_servicio,1,0),1) = 1
--select @W_Cant_1, @W_Cant_2
SET @W_Cant_1 = @W_Cant_1 + @W_Cant_2
SET @Division = @W_Cant_1 / 50
SET @Resto = @W_Cant_1 - (@Division * 50)
IF @Resto = 0
set @W_Cant_grupo = @Division
ELSE
set @W_Cant_grupo = @Division + 1
select @W_Cant_1 as total_registros,
@W_Cant_grupo as cantidad_grupos,
@pais_prov as pais
end
END
GO
Depends On
6Used By
No items found