USE [REA9001276E1]
GO
/****** Object: Trigger [dbo].[ACTUALIZA_PRECIOVENTA] Script Date: 02/25/2014 11:42:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[ACTUALIZA_PRECIOVENTA]
ON [dbo].[DetalleCompras]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @LOTE VARCHAR(50)
DECLARE @LoteRef VARCHAR(50)
DECLARE @ID INT
DECLARE @NumSuc INT
DECLARE @IDProducto varchar(50)
DECLARE @IDDocumento int
DECLARE @Fecha datetime
DECLARE @TipoMovimiento INT
DECLARE @Cantidad FLOAT
DECLARE @CantidadOriginal FLOAT
DECLARE @PrecioCosto FLOAT
DECLARE @EstadoMovimiento int
DECLARE @ERROR NVARCHAR(200)
DECLARE @Action as char(1);
SET @Action = 'I'
IF EXISTS(SELECT * FROM DELETED)
BEGIN
SET @Action =
CASE
WHEN EXISTS(SELECT * FROM INSERTED) THEN 'U' -- Set Action to Updated.
ELSE 'D' -- Set Action to Deleted.
END
END
SET @LOTE = ''
if @Action = 'D'
BEGIN
SELECT @NumSuc = (SELECT NumSuc FROM DOCUMENTOS WHERE DOCUMENTOS.IDDOCUMENTO=deleted.IDDocumento), @ID = ID, @TipoMovimiento = TipoMovimiento, @LOTE = IsNull(Lote,''), @IDProducto = IDProducto, @IDDocumento = IDDocumento, @Cantidad=Cantidad, @LoteRef=LoteRef, @EstadoMovimiento=Estado, @PrecioCosto=ISNULL(PrecioCosto,0) from deleted
END
if UPDATE(IDProducto) OR UPDATE(Cantidad) OR UPDATE(Estado) OR UPDATE(PrecioCosto)
BEGIN
SELECT @NumSuc = (SELECT NumSuc FROM DOCUMENTOS WHERE DOCUMENTOS.IDDOCUMENTO=inserted.IDDocumento), @ID = ID, @TipoMovimiento = TipoMovimiento, @LOTE = IsNull(Lote,''), @IDProducto = IDProducto, @IDDocumento = IDDocumento, @Cantidad=Cantidad, @LoteRef=LoteRef, @EstadoMovimiento=Estado, @PrecioCosto=ISNULL(PrecioCosto,0) from inserted
SELECT @CantidadOriginal=Cantidad from deleted
END
--SI NO ESTA CONFIRMADO NO SE HACE NADA PUES NO DEBE EXISTIR
IF @EstadoMovimiento > 1 RETURN
----------------------------
--ENTRADAS
----------------------------
IF @TipoMovimiento = 102 OR @TipoMovimiento = 105
BEGIN
DECLARE @PorcGanacia float
--SET @ERROR = @PrecioCosto
--RAISERROR 44447 @ERROR
--ROLLBACK
SELECT @PorcGanacia = Productos.PorcGanancia from Productos where IDProducto = @IDProducto
UPDATE Productos SET
PPrecioCosto = @PrecioCosto,
PPrecioVenta1 = (1+isnull(@PorcGanacia,0)) * @PrecioCosto ,
PPrecioVenta2 = CASE WHEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto > PPrecioVenta1 THEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto ELSE PPrecioVenta1 END ,
PPrecioVenta3 = CASE WHEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto > PPrecioVenta3 THEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto ELSE PPrecioVenta3 END ,
PPrecioVenta4 = CASE WHEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto > PPrecioVenta4 THEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto ELSE PPrecioVenta4 END ,
PPrecioVenta5 = CASE WHEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto > PPrecioVenta5 THEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto ELSE PPrecioVenta5 END ,
PPrecioVenta6 = CASE WHEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto > PPrecioVenta6 THEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto ELSE PPrecioVenta6 END ,
PPrecioVenta7 = CASE WHEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto > PPrecioVenta7 THEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto ELSE PPrecioVenta7 END ,
PPrecioVenta8 = CASE WHEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto > PPrecioVenta8 THEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto ELSE PPrecioVenta8 END ,
PPrecioVenta9 = CASE WHEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto > PPrecioVenta9 THEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto ELSE PPrecioVenta9 END ,
PPrecioVenta10 = CASE WHEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto > PPrecioVenta10 THEN (1+isnull(@PorcGanacia,0)) * @PrecioCosto ELSE PPrecioVenta10 END
WHERE IDProducto = @IDProducto
END
END