USE [API2012]
GO
/****** Object: Trigger [dbo].[CHECA_SOBREGIRO_CONTRATO] Script Date: 02/25/2014 11:45:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER TRIGGER [dbo].[CHECA_SOBREGIRO_CONTRATO]
ON [dbo].[DetalleCompras]
AFTER INSERT,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @IDContrato varchar(50)
DECLARE @IDDocumento int
DECLARE @ImporteContrato float
DECLARE @ImporteOrdenado float
DECLARE @ERROR NVARCHAR(200)
SELECT @IDDocumento=IDDocumento FROM inserted WHERE IDProducto LIKE 'PAGOESTIMACION%'
if @IDDocumento is null return --SI NO ES PAGOESTIMACION CANCELA
SELECT @IDContrato=Valor1 FROM InfoAdicional WHERE IDDocumento = @IDDocumento AND IDCampo = '82-5000'
if @IDContrato is null return
IF Left(@IDContrato, 16) = 'CONTRATOSMENORES' return
SELECT @ImporteOrdenado = SUM(DetalleCompras.ImporteCosto) FROM DetalleCompras INNER JOIN
dbo.Documentos ON dbo.DetalleCompras.IDDocumento = dbo.Documentos.IDDocumento INNER JOIN
dbo.InfoAdicional ON dbo.Documentos.IDDocumento = dbo.InfoAdicional.IDDocumento
WHERE IDProducto LIKE 'PAGOESTIMACION%' AND IDCampo = '82-5000' AND InfoAdicional.Valor1 = @IDContrato AND Documentos.Estado = 1
SELECT @ImporteContrato = NCampo1 FROM Catalogos1 WHERE IDCatalogo1 = @IDContrato
SET @ImporteOrdenado = ISNULL(@ImporteOrdenado,0)
SET @ImporteContrato = ISNULL(@ImporteContrato,0)
IF ROUND(@ImporteOrdenado,2) > ROUND(@ImporteContrato,2)
BEGIN
SET @ERROR = 'CONTRATO ' + @IDContrato + ' SOBREGIRADO IMPORTE DEL CONTRATO: ' + '$' + convert(varchar(50), CAST(@ImporteContrato as money), -1) + ' IMPORTE ORDENADO A PAGO: ' + '$' + convert(varchar(50), CAST(@ImporteOrdenado as money), -1) + ' SI ES EL ÚLTIMO PAGO DEBE INSERTAR PRIMERO LAS DEDUCCIONES'
RAISERROR 44447 @ERROR
ROLLBACK
END
END