Checa Sobregiro Contratos

Navigation:  KnowledgeBase Programación > Base de Datos > Compras > Triggers >

Checa Sobregiro Contratos

Previous pageReturn to chapter overviewNext page

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