Ver Mensaje Individual
  #3  
Antiguo 20-03-2016
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Reputación: 0
subzero Va por buen camino
Gracias, casimiro y si tienes razón olvide algunos detalles.. el trigger se encuentra en el before insert, pués realmente no he podido colocarlo en el after insert, pués me muestra error de que NEW no es permitido... el código es el siguiente.

Código SQL [-]
BEGIN
  IF NEW.UNIDAD = 'UND' THEN  SET NEW.TOTAL_UM = NEW.CONVERSION * NEW.CANTIDAD; END IF;
    IF NEW.UNIDAD = 'UM' THEN  SET NEW.TOTAL_UM = NEW.CANTIDAD; END IF;
  
  SET NEW.COSTO_SUBTOTAL = CAST(ROUND(NEW.COSTO * NEW.CANTIDAD) AS DECIMAL(18,4));
    SET NEW.COSTO_IVA = CAST((ROUND((NEW.COSTO * (NEW.PCJ_IVA/100))) * NEW.CANTIDAD) AS DECIMAL(18,4));
    SET NEW.COSTO_DTO1 = CAST(ROUND(CAST(CAST((NEW.COSTO * (NEW.PCJ_DTO1/100)) AS DECIMAL(18,4)) * NEW.CANTIDAD AS DECIMAL(18,4))  )AS DECIMAL(18,4));  
    SET NEW.COSTO_DTO2 = CAST(ROUND(CAST( CAST(((NEW.COSTO - CAST((NEW.COSTO * (NEW.PCJ_DTO1/100)) AS DECIMAL(18,4)))* CAST((NEW.PCJ_DTO2/100) AS DECIMAL(18,4))) AS DECIMAL(18,4)) * NEW.CANTIDAD AS DECIMAL(18,4))) AS DECIMAL(18,4));
    SET NEW.COSTO_DTO3 = CAST(ROUND(CAST( CAST(((NEW.COSTO - CAST((NEW.COSTO * (NEW.PCJ_DTO1/100)) AS DECIMAL(18,4))-((NEW.COSTO - CAST((NEW.COSTO * (NEW.PCJ_DTO1/100)) AS DECIMAL(18,4)))* CAST((NEW.PCJ_DTO2/100) AS DECIMAL(18,4)))) * CAST((NEW.PCJ_DTO3/100) AS DECIMAL(18,4))) AS DECIMAL(18,4)) * NEW.CANTIDAD AS DECIMAL(18,4))) AS DECIMAL(18,4));
    SET NEW.COSTO_TOTAL = CAST((NEW.COSTO_SUBTOTAL + NEW.COSTO_IVA - NEW.COSTO_DTO1 - NEW.COSTO_DTO2 - NEW.COSTO_DTO3) AS DECIMAL(18,4));
  
  SET NEW.PRECIO_SUBTOTAL = CAST(ROUND(NEW.PRECIO * NEW.CANTIDAD) AS DECIMAL(18,4));
    SET NEW.PRECIO_IVA = CAST((ROUND((NEW.PRECIO * (NEW.PCJ_IVA/100))) * NEW.CANTIDAD) AS DECIMAL(18,4));
    SET NEW.PRECIO_DTO1 = CAST(ROUND(CAST(CAST((NEW.PRECIO * (NEW.PCJ_DTO1/100)) AS DECIMAL(18,4)) * NEW.CANTIDAD AS DECIMAL(18,4))  )AS DECIMAL(18,4));
    SET NEW.PRECIO_DTO2 = CAST(ROUND(CAST( CAST(((NEW.PRECIO - CAST((NEW.PRECIO * (NEW.PCJ_DTO1/100)) AS DECIMAL(18,4)))* CAST((NEW.PCJ_DTO2/100) AS DECIMAL(18,4))) AS DECIMAL(18,4)) * NEW.CANTIDAD AS DECIMAL(18,4))) AS DECIMAL(18,4));
    SET NEW.PRECIO_DTO3 = CAST(ROUND(CAST( CAST(((NEW.PRECIO - CAST((NEW.PRECIO * (NEW.PCJ_DTO1/100)) AS DECIMAL(18,4))-((NEW.PRECIO - CAST((NEW.PRECIO * (NEW.PCJ_DTO1/100)) AS DECIMAL(18,4)))* CAST((NEW.PCJ_DTO2/100) AS DECIMAL(18,4)))) * CAST((NEW.PCJ_DTO3/100) AS DECIMAL(18,4))) AS DECIMAL(18,4)) * NEW.CANTIDAD AS DECIMAL(18,4))) AS DECIMAL(18,4));
    SET NEW.PRECIO_TOTAL = CAST((NEW.PRECIO_SUBTOTAL + NEW.PRECIO_IVA - NEW.PRECIO_DTO1 - NEW.PRECIO_DTO2 - NEW.PRECIO_DTO3) AS DECIMAL(18,4));
END

Como pueden observar se encarga de realizar algunos cálculos e incrustarlo en el campo correspondiente... quizás sea algo que no tengo en cuenta puesto que soy nuevo en MYSQL... Gracias.
Responder Con Cita