dbo.Imperium_Carga_Docs_Sub_Contratista_Contratista_OD

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

7
Name Data Type Length Description
@periodoA int 4
@periodoV int 4
@periodoVAnt int 4
@Modalidad varchar 1
@MaxFechaTolerancia varchar 19
@IDCliente int 4
@IDContratista int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

/*
 '2017-01-02 23:59:59'

EXEC Imperium_Carga_Docs_Sub_Contratista_Contratista_OD 201705,201704,201703,'A','2017-06-30 23:59:59',7048064,2364


SELECT * FROM LED_DOCS WHERE CONTRATISTA = 2364 AND PERIODO=201705 AND LED_SECCION='C'

674
784
785
788
789


SELECT * FROM LED_SUBCONTRATISTA_PERIODO WHERE SUBCONTRATISTA = 2364


SELECT * FROM LED_DOCS WHERE DOC_ID = 4933308586 OR TIPO_DOC = 786 AND CONTRATISTA = 2364


SELECT * FROM led_cliente_contratista WHERE TIPO_DOC = 786
SELECT * FROM led_grupo_tipo_doc WHERE tipo_doc = 786
SELECT * FROM led_grupos_doc WHERE grupo_doc = 1246

*/



CREATE OR ALTER PROCEDURE dbo.Imperium_Carga_Docs_Sub_Contratista_Contratista_OD
@periodoA int,
@periodoV int,
@periodoVAnt int,
@Modalidad varchar(1),
@MaxFechaTolerancia varchar(19),
@IDCliente int,
@IDContratista int

AS

BEGIN
 SET NOCOUNT ON;

DECLARE @ERRORNUMBER SMALLINT 
declare @periodoAnt int 
DECLARE @PeriodoModalidad int  
DECLARE @periodoFecha date
DECLARE @periodo int = 0
declare @FechaToleranciaCalculada datetime
DECLARE @NombreCliente varchar(200)
DECLARE @periodoYear INT = NULL
DECLARE @periodoMonth INT = NULL


if (@Modalidad = 'A')
 begin
  SET @periodo = @periodoA
 end
if (@Modalidad = 'V')
 begin
  SET @periodo = @periodoV
 end

if (@MaxFechaTolerancia is null)
 begin
  SET @periodo = 0
 end



DECLARE @LastDay_AnyMonth DATETIME
--Last Day of Any Month and Year
DECLARE @dtDate DATETIME, @nextMonth DATETIME, @LastDayNextMonth DATETIME,@FirstDay datetime
SET @dtDate = substring(CONVERT(varchar(6),@periodo),1,4) + '-' + substring(CONVERT(varchar(6),@periodo),5,2) + '-01'
SET @nextMonth = DATEADD(mm, 1, @dtDate)

set @LastDay_AnyMonth = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate)+1,0)) 
set @LastDayNextMonth = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@nextMonth)+1,0)) 
set @FirstDay = DATEADD(month, DATEDIFF(month, 0, @MaxFechaTolerancia), 0)


select @FirstDay as FirstDay, @periodoV as periodoV,@periodoA as periodoA,@periodoVAnt as periodoVANT,@PERIODO AS PERIODO,@periodoYear as periodoYear,@periodoMonth as periodoMonth,@Modalidad AS Modalidad,@PeriodoModalidad AS PeriodoModalidad





DECLARE @tipo_doc INT,@estado_doc VARCHAR(1),@led_seccion VARCHAR(1),@cliente INT,@contratista INT,@empleado INT,@vehiculo INT
DECLARE @contratista_1 INT,@insertado DATETIME,@fecha_tolerancia DATETIME,@compliance_doc VARCHAR(1),@fecha_vigencia DATETIME,@doc_log VARCHAR(150),@grupo_doc INT
DECLARE @doc_id_lista INT

DECLARE LedCargaDocs Cursor
FOR

SELECT distinct led_tipos_doc.tipo_doc,
iif(LDAnt.fecha_vigencia > GETDATE(),LDAnt.estado_doc,led_cliente_contratista.estado_inicial) as estado_doc,
led_tipos_doc.led_seccion,
led_contratistas.cliente,
led_contratistas.contratista,  
null as empleado,
null as vehiculo,
/*
convert(varchar(4),datepart(year,getdate())) + convert(varchar(2),datepart(month,getdate())) as periodo,
*/

@periodo AS periodo,
led_contratistas.contratista_1,
@FirstDay as insertado,
@MaxFechaTolerancia as fecha_tolerancia,
/*
dateadd(ms,-3,Convert(varchar(10),isnull(led_cliente_contratista.dias_tolerancia,0) + getdate(),111)) as fecha_tolerancia,
*/

iif(LDAnt.fecha_vigencia > GETDATE(),LDAnt.compliance_doc,iif(led_cliente_contratista.estado_inicial='N','B',iif(led_cliente_contratista.estado_inicial='R','R',iif(led_cliente_contratista.estado_inicial='V','V',iif(led_cliente_contratista.estado_inicial='I','A','B'))))) as compliance_doc,
iif(LDAnt.fecha_vigencia > getdate() and led_tipos_doc.periodicidad = 'E',LDAnt.fecha_vigencia,NULL) as fecha_vigencia,
convert(varchar(16),@FirstDay,120) + ' GENERACION AUTOMATICA DE DOCUMENTOS' AS doc_log,
led_grupo_tipo_doc.grupo_doc,led_tipos_doc.tipo_doc_lista as doc_id_lista
FROM            led_contratistas INNER JOIN
                         led_cliente_contratista ON led_contratistas.cliente = led_cliente_contratista.cliente 
      AND led_contratistas.tipo_contratista = led_cliente_contratista.tipo_contratista INNER JOIN
                         clientes ON led_contratistas.cliente = clientes.cliente INNER JOIN
                         led_tipos_doc ON led_cliente_contratista.tipo_doc = led_tipos_doc.tipo_doc 
       inner join led_grupo_tipo_doc ON led_cliente_contratista.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 
       INNER JOIN led_subcontratista_periodo on (led_contratistas.contratista = led_subcontratista_periodo.subcontratista and led_subcontratista_periodo.periodo = @periodo)
 left JOIN LED_DOCS LDAnt ON (LDAnt.tipo_doc = led_tipos_doc.tipo_doc AND LDAnt.led_seccion = led_tipos_doc.led_seccion AND LDAnt.contratista = led_contratistas.contratista 
 AND LDAnt.periodo = @periodoVAnt AND LDAnt.grupo_doc = led_grupo_tipo_doc.grupo_doc)
WHERE        (clientes.cliente = @IDCliente) AND (led_cliente_contratista.activo = 1)
and led_contratistas.estado_contratista = 'A'
and led_grupos_doc.cliente = @IDCliente
and ( ISNULL(led_tipos_doc.doc_alta,0) = 0 
  or (led_tipos_doc.doc_alta = 1 ) )

and ISNULL(led_tipos_doc.doc_baja,0) = 0 
and led_tipos_doc.modalidad = @Modalidad
and led_contratistas.contratista = @IDContratista
/*
AND led_tipos_doc.tipo_doc=786
*/


DECLARE @dbDocID BIGINT = 0

Open LedCargaDocs


Fetch NEXT FROM LedCargaDocs INTO @tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista,@empleado,@vehiculo,@periodo,@contratista_1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc,@doc_id_lista

While @@FETCH_STATUS = 0
BEGIN


delete led_docs
where tipo_doc = @tipo_doc
and periodo = @periodo
and led_seccion = @led_seccion
and contratista = @contratista
and estado_doc not in ('N','I','R','V')




SET @dbDocID = 0

select @dbDocID = doc_id from led_docs
where tipo_doc = @tipo_doc
and periodo = @periodo
and led_seccion = @led_seccion
and contratista = @contratista



SELECT  @dbDocID as dbDocID,@tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista as contratista,@empleado,@vehiculo,@periodo as periodo,@contratista_1 as contratista1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc

IF (@dbDocID = 0)


BEGIN

BEGIN TRY

insert into led_docs (
tipo_doc,
estado_doc,
led_seccion,
cliente,
contratista,  
empleado,
vehiculo,
periodo,
contratista_1,
insertado,
fecha_tolerancia,
compliance_doc,
fecha_vigencia,
doc_log,
grupo_doc,
doc_id_lista
)
values
(@tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista,@empleado,@vehiculo,@periodo,@contratista_1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc,@doc_id_lista)

END TRY

BEGIN CATCH
/*
SET @ERRORNUMBER = 1
*/

/*
SELECT @ERRORNUMBER,@tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista,@empleado,@vehiculo,@periodo,@contratista_1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc
*/

/*
select 'insert into led_docs (
tipo_doc,
estado_doc,
led_seccion,
cliente,
contratista,  
empleado,
vehiculo,
periodo,
contratista_1,
insertado,
fecha_tolerancia,
compliance_doc,
fecha_vigencia,
doc_log,
grupo_doc
)
values'

select @tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista,@empleado,@vehiculo,@periodo,@contratista_1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc

*/



END CATCH
END

Fetch NEXT FROM LedCargaDocs INTO @tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista,@empleado,@vehiculo,@periodo,@contratista_1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc,@doc_id_lista

END

CLOSE LedCargaDocs
DEALLOCATE LedCargaDocs


END

GO

Used By

No items found