Actualiza Precio Venta

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

Actualiza Precio Venta

Previous pageReturn to chapter overviewNext page

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