CREATE TRIGGER [dbo].[Tri_Contratos_Hist_Upd] 
ON [dbo].[Contratos]
AFTER UPDATE
AS 

SET NOCOUNT ON
DECLARE @Id_Cliente					INT
DECLARE @Id_Tarjeta					VARCHAR(10)
DECLARE @Tar_Nro					VARCHAR(25)
DECLARE @Id_Contrato				INT
DECLARE @Item						SMALLINT

DECLARE @Id_Tarjeta_Ant				VARCHAR(10)
DECLARE @Tar_Nro_Ant				VARCHAR(25)
DECLARE @Item_Ant					SMALLINT


DECLARE [Cur_Contratos_Hist_Upd] CURSOR FOR
SELECT	Id_contrato, Id_Cliente,	 Id_Tarjeta, Tar_Nro FROM Inserted 

	

OPEN [Cur_Contratos_Hist_Upd]
FETCH NEXT FROM [Cur_Contratos_Hist_Upd] INTO @Id_Contrato,@Id_Cliente,@Id_Tarjeta,@Tar_Nro
WHILE (@@FETCH_STATUS = 0)
BEGIN
	SET @Item = ISNULL((SELECT MAX(Item) FROM  [dbo].[Clientes_Hist] WHERE Id_Cliente = @Id_Cliente),0) + 1

	SELECT TOP 1 @Id_Tarjeta_Ant = Id_Tarjeta , @Tar_Nro_Ant = Tar_Nro, @Item_Ant = Item
		FROM Clientes_Hist WHERE Id_Cliente = @Id_Cliente AND Id_Contrato = @Id_Contrato
		ORDER BY Item DESC


	IF ISNULL(@Item_Ant,0) = 0  AND  @Id_Tarjeta <> '' AND  @Tar_Nro <> ''            --no tiene nada
	BEGIN
		INSERT INTO [dbo].[Clientes_Hist] 
			([Id_Cliente],[Item],[Fecha],[Id_Tipo_Cli],[Id_Cobrador],[Fecha_Alta],[Id_Motivo_Est],[Fecha_Baja]
			,[Id_Usuario],[Id_Cliente_Externo],[Id_Tarjeta],[Tar_Nro],[Tar_Fecha_Alta],[Tar_Fecha_Baja],[Id_Cliente_Ref],Id_Contrato)
		SELECT @Id_Cliente,@Item,GETDATE(),Id_Tipo_Cli,Id_Cobrador,Fecha_Alta,[Id_Motivo_Est],[Fecha_Baja]
			,0,[Id_Cliente_Externo],@Id_Tarjeta,@Tar_Nro,GETDATE(),NULL,[Id_Cliente_Ref],@Id_Contrato
		FROM Clientes	
		WHERE Id_Cliente = @Id_Cliente
	END
	ELSE
	BEGIN
		IF  ISNULL(@Id_Tarjeta,'') <> ISNULL(@Id_Tarjeta_Ant,'') OR  ISNULL(@Tar_Nro,'') <> ISNULL(@Tar_Nro_Ant,'')
		BEGIN
			INSERT INTO [dbo].[Clientes_Hist] 
				([Id_Cliente],[Item],[Fecha],[Id_Tipo_Cli],[Id_Cobrador],[Fecha_Alta],[Id_Motivo_Est],[Fecha_Baja]
				,[Id_Usuario],[Id_Cliente_Externo],[Id_Tarjeta],[Tar_Nro],[Tar_Fecha_Alta],[Tar_Fecha_Baja],[Id_Cliente_Ref],Id_Contrato)
			SELECT @Id_Cliente,@Item,GETDATE(),Id_Tipo_Cli,Id_Cobrador,Fecha_Alta,[Id_Motivo_Est],[Fecha_Baja]
				,0,[Id_Cliente_Externo],@Id_Tarjeta,@Tar_Nro,GETDATE(),NULL,[Id_Cliente_Ref],@Id_Contrato
			FROM Clientes	
			WHERE Id_Cliente = @Id_Cliente

			UPDATE Clientes_Hist SET [Tar_Fecha_Baja] = GETDATE() 
					WHERE Id_Cliente = @Id_Cliente AND Id_Contrato = @Id_Contrato AND Item = @Item_Ant

		END
	END
	FETCH NEXT FROM [Cur_Contratos_Hist_Upd] INTO @Id_Contrato,@Id_Cliente,@Id_Tarjeta,@Tar_Nro
END
CLOSE [Cur_Contratos_Hist_Upd]
DEALLOCATE [Cur_Contratos_Hist_Upd]




