IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'[dbo].[CP_CD_Controladores_Novedades_Agregar]') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE dbo.CP_CD_Controladores_Novedades_Agregar 
END
GO

CREATE PROCEDURE [dbo].[CP_CD_Controladores_Novedades_Agregar]	@pJson VARCHAR(8000)
AS

/*Variables recibidas por parámetro a traves del JSON*/
DECLARE @pId_Cliente				INT

SET @pId_Cliente					= CONVERT(INT, dbo.CF_JSON_VALUE(@pJson,'Id_Cliente'))
/*FIN Variables recibidas por parámetro a traves del JSON*/

/*Declaracion de Variables*/
DECLARE @Id_Novedad_Max	INT
DECLARE @Id_Controlador	INT
DECLARE @Razon_Social	VARCHAR(100)
DECLARE @Credencial_Nro	VARCHAR(30)
DECLARE @Cant_Huellas	TINYINT
/*FIN Declaracion de Variables*/

/*Si existen novedades pendientes Anteriores las completa para que esta sea la última*/
UPDATE CD_Controladores_Novedades
SET
Estado_Sincr	= 'C',
Id_Usuario		= -1
WHERE
Id_Cliente = @pId_Cliente
AND Estado_Sincr = 'P'
/*FIN Si existen novedades pendientes Anteriores las completa para que esta sea la última*/

SELECT
@Razon_Social	= LTRIM(RTRIM(ISNULL(Razon_Social, ''))),
@Credencial_Nro = LTRIM(RTRIM(ISNULL(Credencial_Nro, '')))
FROM Clientes
WHERE
Id_Cliente = @pId_Cliente

SET @Cant_Huellas = ISNULL((SELECT COUNT(*) FROM Clientes_HD WHERE Id_Cliente = @pId_Cliente),0)

IF(@Credencial_Nro <> '')
BEGIN
	SET @Id_Novedad_Max = ISNULL((SELECT MAX(ISNULL(Id_Novedad, 0)) + 1 FROM CD_Controladores_Novedades), 1)

	DECLARE curControladoresNovedades CURSOR FOR
	SELECT Id_Controlador FROM CD_Controladores
	WHERE
	ISNULL(Tipo_Cont, '') = 'L'
	AND ((SUBSTRING(ISNULL(Nro_Serie, ''), 5, 2) = 'AP') OR (SUBSTRING(ISNULL(Nro_Serie, ''), 5, 2) = 'HP'))



	OPEN curControladoresNovedades
	FETCH NEXT FROM curControladoresNovedades INTO @Id_Controlador
	WHILE @@FETCH_STATUS = 0
	BEGIN

		INSERT INTO CD_Controladores_Novedades 
		(Id_Controlador,			Id_Novedad,				Fecha_Creacion, 
		Estado_Sincr,				Id_Cliente,				Razon_Social, 
		Credencial_Nro,				Flag_Tiene_Huella)
		VALUES
		(@Id_Controlador,			@Id_Novedad_Max,		GETDATE(), 
		'P',						@pId_Cliente,			@Razon_Social, 
		@Credencial_Nro,			@Cant_Huellas)

		FETCH NEXT FROM curControladoresNovedades INTO @Id_Controlador
	END
	CLOSE curControladoresNovedades
	DEALLOCATE curControladoresNovedades
END
