Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
7| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_contratista | int | 4 | |
| @p_id_padron | int | 4 | |
| @p_tipo_contratista | int | 4 | |
| @p_tipo_alta | tinyint | 1 | |
| @p_subcontratista_de | int | 4 | |
| @p_locaciones | varchar | 200 | |
| @p_user_id | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec Imperium_vista_contratista_Alta_Subcontratista 5080,8736853,226,2,5080,1019,30963358
*/
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.Imperium_vista_contratista_Alta_Subcontratista
-- Add the parameters for the stored procedure here
@p_contratista int,
@p_id_padron int,
@p_tipo_contratista int,
@p_tipo_alta tinyint,
@p_subcontratista_de int,
@p_locaciones varchar(200),
@p_user_id int
/*
select * from led_contratistas where contratista_1 = 6122
*/
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 (@p_contratista > 0 AND @p_id_padron > 0 AND @p_tipo_contratista > 0 AND @p_subcontratista_de > 0 AND @p_user_id > 0) BEGIN
DECLARE @subcontratista INT
DECLARE @cliente INT
DECLARE @contratista_1 INT
DECLARE @modalidad VARCHAR(1)
DECLARE @tipo_doc SMALLINT
DECLARE @grupo_doc INT
DECLARE @dias_tolerancia TINYINT
DECLARE @fecha_tolerancia DATETIME
DECLARE @fecha_vigencia DATETIME
DECLARE @estado_inicial VARCHAR(1)
DECLARE @periodicidad VARCHAR(1)
DECLARE @doc_id_lista SMALLINT
DECLARE @compliance_doc VARCHAR(1)
DECLARE @alta bit = 0
DECLARE @reafectacion bit = 0
DECLARE @reactivacion bit = 0
DECLARE @estado_anterior varchar(1) = NULL
DECLARE @periodo INT
DECLARE @doc_log VARCHAR(MAX)
DECLARE @locacion INT
DECLARE @periodos_text VARCHAR(20) = NULL
DECLARE @periodo_adelantado INT = CONVERT(INT, CONVERT(VARCHAR(4),YEAR(GETDATE())) + RIGHT('00' + CONVERT(VARCHAR(2),MONTH(GETDATE())), 2))
DECLARE @periodo_vencido INT = CONVERT(INT, CONVERT(VARCHAR(4),YEAR(DATEADD(MONTH,-1,GETDATE()))) + RIGHT('00' + CONVERT(VARCHAR(2),MONTH(DATEADD(MONTH,-1,GETDATE()))), 2))
SELECT @cliente = cliente, @contratista_1 = contratista_1
FROM led_contratistas WHERE contratista = @p_contratista
IF NOT EXISTS (SELECT contratista FROM led_contratistas WHERE contratista_1 = @p_contratista AND id_padron = @p_id_padron AND subcontratista_de = @p_subcontratista_de)
BEGIN
INSERT INTO led_contratistas
(cliente, estado_contratista, tipo_contratista, id_padron, contratista_1, subcontratista_de, created)
SELECT @cliente as cliente, 'A' as estado_contratista, @p_tipo_contratista as tipo_contratista,
@p_id_padron as id_padron, @contratista_1 AS contratista_1, @p_subcontratista_de as subcontratista_de, GETDATE() as created
FROM led_contratistas
WHERE contratista = @p_contratista
SELECT @subcontratista = @@IDENTITY
SET @alta = 1
END ELSE BEGIN
/* existe el id padron bajo el contratista */
SELECT @subcontratista = contratista, @estado_anterior = estado_contratista
from led_contratistas
WHERE contratista_1 = @p_contratista AND id_padron = @p_id_padron AND subcontratista_de = @p_subcontratista_de
UPDATE led_contratistas SET tipo_contratista = @p_tipo_contratista WHERE contratista = @subcontratista
END
/* modalidades del subcontratista - vencida / adelantada */
DECLARE modalidades CURSOR FOR
SELECT led_tipos_doc.modalidad
FROM led_tipos_doc
inner join led_cliente_contratista on led_tipos_doc.tipo_doc = led_cliente_contratista.tipo_doc
WHERE led_cliente_contratista.tipo_contratista = @p_tipo_contratista
AND led_cliente_contratista.cliente = @cliente
GROUP BY led_tipos_doc.modalidad
HAVING led_tipos_doc.modalidad IS NOT NULL
ORDER BY led_tipos_doc.modalidad DESC
OPEN modalidades
FETCH NEXT FROM modalidades INTO @modalidad
WHILE @@FETCH_STATUS = 0 BEGIN
IF (@modalidad = 'V') BEGIN
IF NOT EXISTS (SELECT subcontratista FROM led_subcontratista_periodo WHERE subcontratista = @subcontratista AND periodo = @periodo_vencido) BEGIN
INSERT INTO led_subcontratista_periodo
(subcontratista, periodo, contratista, tipo_alta, contratista_1, fecha_afectacion)
values
(@subcontratista, @periodo_vencido, @p_contratista, @p_tipo_alta, @contratista_1, GETDATE())
IF (@estado_anterior = 'A') BEGIN
SET @reafectacion = 1
END
IF (@periodos_text IS NOT NULL) SET @periodos_text = @periodos_text + ', '
SET @periodos_text = @periodos_text + CONVERT(VARCHAR, @periodo_vencido)
END
IF (@estado_anterior = 'N') BEGIN
UPDATE led_contratistas SET estado_contratista = 'A' WHERE contratista = @subcontratista
SET @reactivacion = 1
END
END
ELSE BEGIN
/* periodo adelantado */
IF NOT EXISTS (SELECT subcontratista FROM led_subcontratista_periodo WHERE subcontratista = @subcontratista AND periodo = @periodo_adelantado) BEGIN
INSERT INTO led_subcontratista_periodo
(subcontratista, periodo, contratista, tipo_alta, contratista_1, fecha_afectacion)
values
(@subcontratista, @periodo_adelantado, @p_contratista, NULL, @contratista_1, GETDATE())
IF (@estado_anterior = 'A') BEGIN
SET @reafectacion = 1
END
IF (@periodos_text IS NOT NULL) SET @periodos_text = @periodos_text + ', '
SET @periodos_text = @periodos_text + CONVERT(VARCHAR, @periodo_adelantado)
END
IF (@estado_anterior = 'N') BEGIN
UPDATE led_contratistas SET estado_contratista = 'A' WHERE contratista = @subcontratista
SET @reactivacion = 1
END
END
FETCH NEXT FROM modalidades INTO @modalidad
END
CLOSE modalidades
DEALLOCATE modalidades
/* fin modalidades */
/* tabla multi */
IF NOT EXISTS (SELECT contratista FROM led_contratista_multi WHERE contratista = @subcontratista) BEGIN
INSERT INTO led_contratista_multi
(contratista, id, tipo_contratista, id_dep, vigencia_desde, vigencia_hasta, tipo_contratista_principal,
contratista_1, cliente, activo, created, created_by)
VALUES
(@subcontratista, 1, @p_tipo_contratista, 0, convert(date,getdate()), NULL, NULL,
@contratista_1, @cliente, 1, GETDATE(), @p_user_id)
END ELSE BEGIN
IF NOT EXISTS (SELECT contratista FROM led_contratista_multi WHERE contratista = @subcontratista AND tipo_contratista = @p_tipo_contratista) BEGIN
INSERT INTO led_contratista_multi
(contratista, id, tipo_contratista, id_dep, vigencia_desde, vigencia_hasta, tipo_contratista_principal,
contratista_1, cliente, activo, created, created_by)
SELECT @subcontratista AS contratista,
(SELECT ISNULL(MAX(id), 0) + 1 FROM led_contratista_multi WHERE contratista = @subcontratista) AS id,
@p_tipo_contratista AS tipo_contratista, 0 AS id_dep,
convert(date,getdate()) AS vigencia_desde, NULL AS vigencia_hasta,
NULL as tipo_contratista_principal,
@contratista_1 AS contratista_1,
@cliente AS cliente, 1 AS activo, GETDATE() AS created, @p_user_id as created_by
END ELSE BEGIN
UPDATE led_contratista_multi SET
activo = 1,
modified = GETDATE(),
modified_by = @p_user_id,
vigencia_desde = convert(date,getdate()),
vigencia_hasta = NULL
WHERE contratista = @subcontratista
AND tipo_contratista = @p_tipo_contratista
END
UPDATE led_contratista_multi SET
activo = 0,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contratista = @subcontratista
AND tipo_contratista <> @p_tipo_contratista
END
/* fin tabla multi */
/* documentos de alta */
IF (NOT @reafectacion = 1) BEGIN
IF (@p_tipo_alta > 0) BEGIN
DECLARE tipos_doc_alta CURSOR FOR
SELECT led_cliente_contratista.tipo_doc, led_tipos_doc.modalidad,
led_cliente_contratista.dias_tolerancia, led_cliente_contratista.estado_inicial,
led_grupo_tipo_doc.grupo_doc, led_tipos_doc.periodicidad, led_tipos_doc.tipo_doc_lista
FROM led_cliente_contratista inner join led_tipos_doc
on led_cliente_contratista.tipo_doc = led_tipos_doc.tipo_doc
inner join led_grupo_tipo_doc on led_tipos_doc.tipo_doc = led_grupo_tipo_doc.tipo_doc
inner join led_grupos_doc on
(led_grupo_tipo_doc.grupo_doc = led_grupos_doc.grupo_doc
AND led_cliente_contratista.cliente = led_grupos_doc.cliente)
WHERE led_cliente_contratista.cliente = @cliente
AND led_cliente_contratista.tipo_contratista = @p_tipo_contratista
AND led_cliente_contratista.tipo_alta = @p_tipo_alta
AND led_cliente_contratista.activo = 1
OPEN tipos_doc_alta
FETCH NEXT FROM tipos_doc_alta INTO @tipo_doc, @modalidad, @dias_tolerancia,
@estado_inicial, @grupo_doc, @periodicidad, @doc_id_lista
WHILE @@FETCH_STATUS = 0 BEGIN
IF (@modalidad = 'V')
SET @periodo = @periodo_vencido
ELSE
SET @periodo = @periodo_adelantado
IF (@estado_inicial = 'N')
SET @compliance_doc = 'B'
ELSE
IF (@estado_inicial = 'I')
SET @compliance_doc = 'B'
ELSE
IF (@estado_inicial = 'V')
SET @compliance_doc = 'V'
ELSE
SET @compliance_doc = 'N'
IF (@dias_tolerancia > 0)
SET @fecha_tolerancia = DATEADD(SECOND,-1,CONVERT(DATETIME,DATEADD(DAY, @dias_tolerancia+1, CONVERT(DATE, GETDATE()))))
ELSE
SET @fecha_tolerancia = DATEADD(SECOND,-1,CONVERT(DATETIME,DATEADD(DAY, 6, CONVERT(DATE, GETDATE()))))
DECLARE @dias_mes_a INT = datediff(day, getdate(), dateadd(month, 1, getdate()))
DECLARE @dias_mes_v INT = datediff(day, dateadd(month,-1,getdate()), dateadd(month, 1, dateadd(month,-1,getdate())))
DECLARE @mes_a INT = month(getdate())
DECLARE @mes_v INT = month(dateadd(month,-1,getdate()))
DECLARE @ano_a INT = Year(getdate())
DECLARE @ano_v INT = Year(dateadd(month,-1,getdate()))
IF (@periodicidad = 'M') BEGIN
IF (@modalidad = 'V')
SET @fecha_vigencia = DATETIMEFROMPARTS(@ano_v,@mes_v,@dias_mes_v,23,59,59,0)
ELSE
SET @fecha_vigencia = DATETIMEFROMPARTS(@ano_a,@mes_a,@dias_mes_a,23,59,59,0)
END ELSE
IF (@periodicidad = 'A') BEGIN
IF (@modalidad = 'V')
SET @fecha_vigencia = DATETIMEFROMPARTS(@ano_v,12,31,23,59,59,0)
ELSE
SET @fecha_vigencia = DATETIMEFROMPARTS(@ano_a,12,31,23,59,59,0)
END ELSE
SET @fecha_vigencia = NULL
IF NOT EXISTS (SELECT tipo_doc, periodo, led_seccion, contratista, contratista_1
FROM led_docs
WHERE tipo_doc = @tipo_doc
AND periodo = @periodo
AND led_seccion = 'C'
AND contratista_1 = @contratista_1
AND contratista = @subcontratista) BEGIN
SET @doc_log = CONVERT(VARCHAR, GETDATE(), 120) + ' - GENERACION AUTOMATICA DE DOCUMENTO DE ALTA DE SUBCONTRATISTA'
INSERT INTO led_docs
(tipo_doc, cliente, contratista, contratista_1, led_seccion, periodo,
insertado, estado_doc, compliance_doc, grupo_doc, fecha_tolerancia, fecha_vigencia,
doc_id_lista, doc_log)
VALUES
(@tipo_doc, @cliente, @subcontratista, @contratista_1, 'C', @periodo,
GETDATE(), @estado_inicial, @compliance_doc, @grupo_doc, @fecha_tolerancia,
@fecha_vigencia, @doc_id_lista, @doc_log)
END
FETCH NEXT FROM tipos_doc_alta INTO @tipo_doc, @modalidad, @dias_tolerancia,
@estado_inicial, @grupo_doc, @periodicidad, @doc_id_lista
END
CLOSE tipos_doc_alta
DEALLOCATE tipos_doc_alta
END
END
/* fin doc de alta */
/* Locaciones : Viene una lista de ID generada por los checkboxes restringida por las locaciones del contratista principal */
IF (@p_locaciones IS NOT NULL) BEGIN
set @p_locaciones = '0,' + @p_locaciones
DECLARE Locaciones CURSOR FOR
SELECT led_locaciones.locacion
FROM led_locaciones INNER JOIN led_contratista_locaciones
ON led_locaciones.locacion = led_contratista_locaciones.locacion
INNER JOIN dbo.DelimitedSplit8K(@p_locaciones, ',') lista ON led_locaciones.locacion = lista.Item
WHERE led_locaciones.visible = 1
AND led_contratista_locaciones.contratista = @contratista_1
AND led_contratista_locaciones.vigencia_desde <= GETDATE()
AND (led_contratista_locaciones.vigencia_hasta IS NULL
OR led_contratista_locaciones.vigencia_hasta > GETDATE())
AND led_contratista_locaciones.activo = 1
OPEN Locaciones
FETCH NEXT FROM Locaciones INTO @locacion
WHILE @@FETCH_STATUS = 0 BEGIN
IF NOT EXISTS (SELECT locacion FROM led_contratista_locaciones WHERE contratista = @subcontratista AND locacion = @locacion) BEGIN
INSERT INTO led_contratista_locaciones
(contratista, locacion, asignada, asignada_por,
vigencia_desde, vigencia_hasta, activo, created, created_by)
VALUES
(@subcontratista, @locacion, GETDATE(), @p_user_id,
DATETIMEFROMPARTS(year(getdate()),Month(getdate()),day(getdate()),0,0,0,0), NULL, 1, GETDATE(), @p_user_id)
END ELSE BEGIN
UPDATE led_contratista_locaciones SET
vigencia_desde = DATETIMEFROMPARTS(year(getdate()),Month(getdate()),day(getdate()),0,0,0,0),
vigencia_hasta = NULL,
activo = 1,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contratista = @subcontratista
AND locacion = @locacion
END
FETCH NEXT FROM Locaciones INTO @locacion
END
CLOSE Locaciones
DEALLOCATE Locaciones
END
/* fin locaciones */
/* LOG */
DECLARE @logtext VARCHAR(250) = NULL
DECLARE @nombre VARCHAR(200) = NULL
DECLARE @identif VARCHAR(100) = NULL
SELECT @nombre = padrones.nombre_persona,
@identif = identificadores.abreviatura + ' ' + padrones.numero
FROM padrones INNER JOIN led_contratistas ON padrones.id_padron = led_contratistas.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
WHERE led_contratistas.contratista = @subcontratista
IF (@alta = 1) BEGIN
SET @logtext = 'Alta nuevo Subcontratista: ' + @nombre + ' (' + @identif + ')'
INSERT INTO led_log
(led_seccion, contratista, tipo_log, descripcion_log,
horario_log, user_id, cliente, doc_id, contratista_1)
VALUES
('S', @subcontratista, 'A', @logtext, GETDATE(), @p_user_id, @cliente, NULL, @contratista_1)
END ELSE
IF (@reafectacion = 1) BEGIN
SET @logtext = 'Reafectación Subcontratista: ' + @nombre + ' (' + @identif + ')'
INSERT INTO led_log
(led_seccion, contratista, tipo_log, descripcion_log,
horario_log, user_id, cliente, doc_id, contratista_1)
VALUES
('S', @subcontratista, 'R', @logtext, GETDATE(), @p_user_id, @cliente, NULL, @contratista_1)
END ELSE
IF (@reactivacion = 1) BEGIN
SET @logtext = 'Alta Subcontratista (estado anterior NO activo): ' + @nombre + ' (' + @identif + ')'
INSERT INTO led_log
(led_seccion, contratista, tipo_log, descripcion_log,
horario_log, user_id, cliente, doc_id, contratista_1)
VALUES
('S', @subcontratista, 'A', @logtext, GETDATE(), @p_user_id, @cliente, NULL, @contratista_1)
END
/* ejecución de SP para creación de documentos */
EXEC [dbo].[Imperium_Multi_Carga_Docs_Contratista] @cliente, @subcontratista, @periodo_vencido, 'V'
EXEC [dbo].[Imperium_Multi_Carga_Docs_Contratista] @cliente, @subcontratista, @periodo_adelantado, 'A'
END
END
GO
GO
/*
exec Imperium_vista_contratista_Alta_Subcontratista 5080,8736853,226,2,5080,1019,30963358
*/
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.Imperium_vista_contratista_Alta_Subcontratista
-- Add the parameters for the stored procedure here
@p_contratista int,
@p_id_padron int,
@p_tipo_contratista int,
@p_tipo_alta tinyint,
@p_subcontratista_de int,
@p_locaciones varchar(200),
@p_user_id int
/*
select * from led_contratistas where contratista_1 = 6122
*/
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 (@p_contratista > 0 AND @p_id_padron > 0 AND @p_tipo_contratista > 0 AND @p_subcontratista_de > 0 AND @p_user_id > 0) BEGIN
DECLARE @subcontratista INT
DECLARE @cliente INT
DECLARE @contratista_1 INT
DECLARE @modalidad VARCHAR(1)
DECLARE @tipo_doc SMALLINT
DECLARE @grupo_doc INT
DECLARE @dias_tolerancia TINYINT
DECLARE @fecha_tolerancia DATETIME
DECLARE @fecha_vigencia DATETIME
DECLARE @estado_inicial VARCHAR(1)
DECLARE @periodicidad VARCHAR(1)
DECLARE @doc_id_lista SMALLINT
DECLARE @compliance_doc VARCHAR(1)
DECLARE @alta bit = 0
DECLARE @reafectacion bit = 0
DECLARE @reactivacion bit = 0
DECLARE @estado_anterior varchar(1) = NULL
DECLARE @periodo INT
DECLARE @doc_log VARCHAR(MAX)
DECLARE @locacion INT
DECLARE @periodos_text VARCHAR(20) = NULL
DECLARE @periodo_adelantado INT = CONVERT(INT, CONVERT(VARCHAR(4),YEAR(GETDATE())) + RIGHT('00' + CONVERT(VARCHAR(2),MONTH(GETDATE())), 2))
DECLARE @periodo_vencido INT = CONVERT(INT, CONVERT(VARCHAR(4),YEAR(DATEADD(MONTH,-1,GETDATE()))) + RIGHT('00' + CONVERT(VARCHAR(2),MONTH(DATEADD(MONTH,-1,GETDATE()))), 2))
SELECT @cliente = cliente, @contratista_1 = contratista_1
FROM led_contratistas WHERE contratista = @p_contratista
IF NOT EXISTS (SELECT contratista FROM led_contratistas WHERE contratista_1 = @p_contratista AND id_padron = @p_id_padron AND subcontratista_de = @p_subcontratista_de)
BEGIN
INSERT INTO led_contratistas
(cliente, estado_contratista, tipo_contratista, id_padron, contratista_1, subcontratista_de, created)
SELECT @cliente as cliente, 'A' as estado_contratista, @p_tipo_contratista as tipo_contratista,
@p_id_padron as id_padron, @contratista_1 AS contratista_1, @p_subcontratista_de as subcontratista_de, GETDATE() as created
FROM led_contratistas
WHERE contratista = @p_contratista
SELECT @subcontratista = @@IDENTITY
SET @alta = 1
END ELSE BEGIN
/* existe el id padron bajo el contratista */
SELECT @subcontratista = contratista, @estado_anterior = estado_contratista
from led_contratistas
WHERE contratista_1 = @p_contratista AND id_padron = @p_id_padron AND subcontratista_de = @p_subcontratista_de
UPDATE led_contratistas SET tipo_contratista = @p_tipo_contratista WHERE contratista = @subcontratista
END
/* modalidades del subcontratista - vencida / adelantada */
DECLARE modalidades CURSOR FOR
SELECT led_tipos_doc.modalidad
FROM led_tipos_doc
inner join led_cliente_contratista on led_tipos_doc.tipo_doc = led_cliente_contratista.tipo_doc
WHERE led_cliente_contratista.tipo_contratista = @p_tipo_contratista
AND led_cliente_contratista.cliente = @cliente
GROUP BY led_tipos_doc.modalidad
HAVING led_tipos_doc.modalidad IS NOT NULL
ORDER BY led_tipos_doc.modalidad DESC
OPEN modalidades
FETCH NEXT FROM modalidades INTO @modalidad
WHILE @@FETCH_STATUS = 0 BEGIN
IF (@modalidad = 'V') BEGIN
IF NOT EXISTS (SELECT subcontratista FROM led_subcontratista_periodo WHERE subcontratista = @subcontratista AND periodo = @periodo_vencido) BEGIN
INSERT INTO led_subcontratista_periodo
(subcontratista, periodo, contratista, tipo_alta, contratista_1, fecha_afectacion)
values
(@subcontratista, @periodo_vencido, @p_contratista, @p_tipo_alta, @contratista_1, GETDATE())
IF (@estado_anterior = 'A') BEGIN
SET @reafectacion = 1
END
IF (@periodos_text IS NOT NULL) SET @periodos_text = @periodos_text + ', '
SET @periodos_text = @periodos_text + CONVERT(VARCHAR, @periodo_vencido)
END
IF (@estado_anterior = 'N') BEGIN
UPDATE led_contratistas SET estado_contratista = 'A' WHERE contratista = @subcontratista
SET @reactivacion = 1
END
END
ELSE BEGIN
/* periodo adelantado */
IF NOT EXISTS (SELECT subcontratista FROM led_subcontratista_periodo WHERE subcontratista = @subcontratista AND periodo = @periodo_adelantado) BEGIN
INSERT INTO led_subcontratista_periodo
(subcontratista, periodo, contratista, tipo_alta, contratista_1, fecha_afectacion)
values
(@subcontratista, @periodo_adelantado, @p_contratista, NULL, @contratista_1, GETDATE())
IF (@estado_anterior = 'A') BEGIN
SET @reafectacion = 1
END
IF (@periodos_text IS NOT NULL) SET @periodos_text = @periodos_text + ', '
SET @periodos_text = @periodos_text + CONVERT(VARCHAR, @periodo_adelantado)
END
IF (@estado_anterior = 'N') BEGIN
UPDATE led_contratistas SET estado_contratista = 'A' WHERE contratista = @subcontratista
SET @reactivacion = 1
END
END
FETCH NEXT FROM modalidades INTO @modalidad
END
CLOSE modalidades
DEALLOCATE modalidades
/* fin modalidades */
/* tabla multi */
IF NOT EXISTS (SELECT contratista FROM led_contratista_multi WHERE contratista = @subcontratista) BEGIN
INSERT INTO led_contratista_multi
(contratista, id, tipo_contratista, id_dep, vigencia_desde, vigencia_hasta, tipo_contratista_principal,
contratista_1, cliente, activo, created, created_by)
VALUES
(@subcontratista, 1, @p_tipo_contratista, 0, convert(date,getdate()), NULL, NULL,
@contratista_1, @cliente, 1, GETDATE(), @p_user_id)
END ELSE BEGIN
IF NOT EXISTS (SELECT contratista FROM led_contratista_multi WHERE contratista = @subcontratista AND tipo_contratista = @p_tipo_contratista) BEGIN
INSERT INTO led_contratista_multi
(contratista, id, tipo_contratista, id_dep, vigencia_desde, vigencia_hasta, tipo_contratista_principal,
contratista_1, cliente, activo, created, created_by)
SELECT @subcontratista AS contratista,
(SELECT ISNULL(MAX(id), 0) + 1 FROM led_contratista_multi WHERE contratista = @subcontratista) AS id,
@p_tipo_contratista AS tipo_contratista, 0 AS id_dep,
convert(date,getdate()) AS vigencia_desde, NULL AS vigencia_hasta,
NULL as tipo_contratista_principal,
@contratista_1 AS contratista_1,
@cliente AS cliente, 1 AS activo, GETDATE() AS created, @p_user_id as created_by
END ELSE BEGIN
UPDATE led_contratista_multi SET
activo = 1,
modified = GETDATE(),
modified_by = @p_user_id,
vigencia_desde = convert(date,getdate()),
vigencia_hasta = NULL
WHERE contratista = @subcontratista
AND tipo_contratista = @p_tipo_contratista
END
UPDATE led_contratista_multi SET
activo = 0,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contratista = @subcontratista
AND tipo_contratista <> @p_tipo_contratista
END
/* fin tabla multi */
/* documentos de alta */
IF (NOT @reafectacion = 1) BEGIN
IF (@p_tipo_alta > 0) BEGIN
DECLARE tipos_doc_alta CURSOR FOR
SELECT led_cliente_contratista.tipo_doc, led_tipos_doc.modalidad,
led_cliente_contratista.dias_tolerancia, led_cliente_contratista.estado_inicial,
led_grupo_tipo_doc.grupo_doc, led_tipos_doc.periodicidad, led_tipos_doc.tipo_doc_lista
FROM led_cliente_contratista inner join led_tipos_doc
on led_cliente_contratista.tipo_doc = led_tipos_doc.tipo_doc
inner join led_grupo_tipo_doc on led_tipos_doc.tipo_doc = led_grupo_tipo_doc.tipo_doc
inner join led_grupos_doc on
(led_grupo_tipo_doc.grupo_doc = led_grupos_doc.grupo_doc
AND led_cliente_contratista.cliente = led_grupos_doc.cliente)
WHERE led_cliente_contratista.cliente = @cliente
AND led_cliente_contratista.tipo_contratista = @p_tipo_contratista
AND led_cliente_contratista.tipo_alta = @p_tipo_alta
AND led_cliente_contratista.activo = 1
OPEN tipos_doc_alta
FETCH NEXT FROM tipos_doc_alta INTO @tipo_doc, @modalidad, @dias_tolerancia,
@estado_inicial, @grupo_doc, @periodicidad, @doc_id_lista
WHILE @@FETCH_STATUS = 0 BEGIN
IF (@modalidad = 'V')
SET @periodo = @periodo_vencido
ELSE
SET @periodo = @periodo_adelantado
IF (@estado_inicial = 'N')
SET @compliance_doc = 'B'
ELSE
IF (@estado_inicial = 'I')
SET @compliance_doc = 'B'
ELSE
IF (@estado_inicial = 'V')
SET @compliance_doc = 'V'
ELSE
SET @compliance_doc = 'N'
IF (@dias_tolerancia > 0)
SET @fecha_tolerancia = DATEADD(SECOND,-1,CONVERT(DATETIME,DATEADD(DAY, @dias_tolerancia+1, CONVERT(DATE, GETDATE()))))
ELSE
SET @fecha_tolerancia = DATEADD(SECOND,-1,CONVERT(DATETIME,DATEADD(DAY, 6, CONVERT(DATE, GETDATE()))))
DECLARE @dias_mes_a INT = datediff(day, getdate(), dateadd(month, 1, getdate()))
DECLARE @dias_mes_v INT = datediff(day, dateadd(month,-1,getdate()), dateadd(month, 1, dateadd(month,-1,getdate())))
DECLARE @mes_a INT = month(getdate())
DECLARE @mes_v INT = month(dateadd(month,-1,getdate()))
DECLARE @ano_a INT = Year(getdate())
DECLARE @ano_v INT = Year(dateadd(month,-1,getdate()))
IF (@periodicidad = 'M') BEGIN
IF (@modalidad = 'V')
SET @fecha_vigencia = DATETIMEFROMPARTS(@ano_v,@mes_v,@dias_mes_v,23,59,59,0)
ELSE
SET @fecha_vigencia = DATETIMEFROMPARTS(@ano_a,@mes_a,@dias_mes_a,23,59,59,0)
END ELSE
IF (@periodicidad = 'A') BEGIN
IF (@modalidad = 'V')
SET @fecha_vigencia = DATETIMEFROMPARTS(@ano_v,12,31,23,59,59,0)
ELSE
SET @fecha_vigencia = DATETIMEFROMPARTS(@ano_a,12,31,23,59,59,0)
END ELSE
SET @fecha_vigencia = NULL
IF NOT EXISTS (SELECT tipo_doc, periodo, led_seccion, contratista, contratista_1
FROM led_docs
WHERE tipo_doc = @tipo_doc
AND periodo = @periodo
AND led_seccion = 'C'
AND contratista_1 = @contratista_1
AND contratista = @subcontratista) BEGIN
SET @doc_log = CONVERT(VARCHAR, GETDATE(), 120) + ' - GENERACION AUTOMATICA DE DOCUMENTO DE ALTA DE SUBCONTRATISTA'
INSERT INTO led_docs
(tipo_doc, cliente, contratista, contratista_1, led_seccion, periodo,
insertado, estado_doc, compliance_doc, grupo_doc, fecha_tolerancia, fecha_vigencia,
doc_id_lista, doc_log)
VALUES
(@tipo_doc, @cliente, @subcontratista, @contratista_1, 'C', @periodo,
GETDATE(), @estado_inicial, @compliance_doc, @grupo_doc, @fecha_tolerancia,
@fecha_vigencia, @doc_id_lista, @doc_log)
END
FETCH NEXT FROM tipos_doc_alta INTO @tipo_doc, @modalidad, @dias_tolerancia,
@estado_inicial, @grupo_doc, @periodicidad, @doc_id_lista
END
CLOSE tipos_doc_alta
DEALLOCATE tipos_doc_alta
END
END
/* fin doc de alta */
/* Locaciones : Viene una lista de ID generada por los checkboxes restringida por las locaciones del contratista principal */
IF (@p_locaciones IS NOT NULL) BEGIN
set @p_locaciones = '0,' + @p_locaciones
DECLARE Locaciones CURSOR FOR
SELECT led_locaciones.locacion
FROM led_locaciones INNER JOIN led_contratista_locaciones
ON led_locaciones.locacion = led_contratista_locaciones.locacion
INNER JOIN dbo.DelimitedSplit8K(@p_locaciones, ',') lista ON led_locaciones.locacion = lista.Item
WHERE led_locaciones.visible = 1
AND led_contratista_locaciones.contratista = @contratista_1
AND led_contratista_locaciones.vigencia_desde <= GETDATE()
AND (led_contratista_locaciones.vigencia_hasta IS NULL
OR led_contratista_locaciones.vigencia_hasta > GETDATE())
AND led_contratista_locaciones.activo = 1
OPEN Locaciones
FETCH NEXT FROM Locaciones INTO @locacion
WHILE @@FETCH_STATUS = 0 BEGIN
IF NOT EXISTS (SELECT locacion FROM led_contratista_locaciones WHERE contratista = @subcontratista AND locacion = @locacion) BEGIN
INSERT INTO led_contratista_locaciones
(contratista, locacion, asignada, asignada_por,
vigencia_desde, vigencia_hasta, activo, created, created_by)
VALUES
(@subcontratista, @locacion, GETDATE(), @p_user_id,
DATETIMEFROMPARTS(year(getdate()),Month(getdate()),day(getdate()),0,0,0,0), NULL, 1, GETDATE(), @p_user_id)
END ELSE BEGIN
UPDATE led_contratista_locaciones SET
vigencia_desde = DATETIMEFROMPARTS(year(getdate()),Month(getdate()),day(getdate()),0,0,0,0),
vigencia_hasta = NULL,
activo = 1,
modified = GETDATE(),
modified_by = @p_user_id
WHERE contratista = @subcontratista
AND locacion = @locacion
END
FETCH NEXT FROM Locaciones INTO @locacion
END
CLOSE Locaciones
DEALLOCATE Locaciones
END
/* fin locaciones */
/* LOG */
DECLARE @logtext VARCHAR(250) = NULL
DECLARE @nombre VARCHAR(200) = NULL
DECLARE @identif VARCHAR(100) = NULL
SELECT @nombre = padrones.nombre_persona,
@identif = identificadores.abreviatura + ' ' + padrones.numero
FROM padrones INNER JOIN led_contratistas ON padrones.id_padron = led_contratistas.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
WHERE led_contratistas.contratista = @subcontratista
IF (@alta = 1) BEGIN
SET @logtext = 'Alta nuevo Subcontratista: ' + @nombre + ' (' + @identif + ')'
INSERT INTO led_log
(led_seccion, contratista, tipo_log, descripcion_log,
horario_log, user_id, cliente, doc_id, contratista_1)
VALUES
('S', @subcontratista, 'A', @logtext, GETDATE(), @p_user_id, @cliente, NULL, @contratista_1)
END ELSE
IF (@reafectacion = 1) BEGIN
SET @logtext = 'Reafectación Subcontratista: ' + @nombre + ' (' + @identif + ')'
INSERT INTO led_log
(led_seccion, contratista, tipo_log, descripcion_log,
horario_log, user_id, cliente, doc_id, contratista_1)
VALUES
('S', @subcontratista, 'R', @logtext, GETDATE(), @p_user_id, @cliente, NULL, @contratista_1)
END ELSE
IF (@reactivacion = 1) BEGIN
SET @logtext = 'Alta Subcontratista (estado anterior NO activo): ' + @nombre + ' (' + @identif + ')'
INSERT INTO led_log
(led_seccion, contratista, tipo_log, descripcion_log,
horario_log, user_id, cliente, doc_id, contratista_1)
VALUES
('S', @subcontratista, 'A', @logtext, GETDATE(), @p_user_id, @cliente, NULL, @contratista_1)
END
/* ejecución de SP para creación de documentos */
EXEC [dbo].[Imperium_Multi_Carga_Docs_Contratista] @cliente, @subcontratista, @periodo_vencido, 'V'
EXEC [dbo].[Imperium_Multi_Carga_Docs_Contratista] @cliente, @subcontratista, @periodo_adelantado, 'A'
END
END
GO
Depends On
14- dbo.Imperium_Multi_Carga_Docs_Contratista
- dbo.identificadores
- dbo.led_cliente_contratista
- dbo.led_contratista_locaciones
- dbo.led_contratista_multi
- dbo.led_contratistas
- dbo.led_docs
- dbo.led_grupo_tipo_doc
- dbo.led_grupos_doc
- dbo.led_locaciones
- dbo.led_subcontratista_periodo
- dbo.led_tipos_doc
- dbo.padrones
- dbo.DelimitedSplit8K
Used By
No items found