CREATE OR REPLACE TRIGGER ATU_ITEMAUTF_COMPRA
BEFORE DELETE
ON ITEMAUTF FOR EACH ROW
DECLARE
   V_CDCENTITMAP ITMAPURPREC.CDCENTITMAP%TYPE;
   V_NRCOMPRA    ITMAPURPREC.NRCOMPRA%TYPE;
   V_CDFILSOLI   ITEMSOLI.CDFILSOLI%TYPE;
BEGIN
   SELECT MAX(ITMAPURPREC.CDCENTITMAP) CDCENTITMAP,
          MAX(ITMAPURPREC.NRCOMPRA) NRCOMPRA
     INTO V_CDCENTITMAP,V_NRCOMPRA
     FROM APURPRECO, ITMAPURPREC
    WHERE APURPRECO.NRAPURPREC    = ITMAPURPREC.NRSEQITMAP
      AND APURPRECO.CDFILCENTCMP  = ITMAPURPREC.CDCENTITMAP
      AND APURPRECO.CDFILLANC     = :OLD.CDFILLANC
      AND ITMAPURPREC.DTENTRAPUT  = :OLD.DTPROGENTAF
      AND ITMAPURPREC.CDFILIAP    = :OLD.CDFILDEST
      AND ITMAPURPREC.CDPRODITMAP = :OLD.CDPRODUTO
      AND ITMAPURPREC.CDMARCITMAP = :OLD.CDMARCA
      AND ITMAPURPREC.NRCOMPRA    IS NOT NULL;   
   IF V_NRCOMPRA IS NOT NULL THEN
      UPDATE ITMAPURPREC
         SET NRCOMPRA     = NULL
       WHERE CDCENTITMAP  = V_CDCENTITMAP
         AND DTENTRAPUT   = :OLD.DTPROGENTAF
         AND CDFILIAP     = :OLD.CDFILDEST
         AND CDPRODITMAP  = :OLD.CDPRODUTO
         AND NRCOMPRA     = V_NRCOMPRA;
      DELETE FROM PRODCOMPRA
       WHERE NRCOMPRA   = V_NRCOMPRA
         AND CDFILSOLI  = :OLD.CDFILDEST
         AND CDPRODUTO  = :OLD.CDPRODUTO
         AND DTPROGENTR = :OLD.DTENTRITMSOL;
      SELECT MAX(CDFILSOLI)
        INTO V_CDFILSOLI
        FROM PRODCOMPRA
       WHERE NRCOMPRA   = V_NRCOMPRA;
      IF V_CDFILSOLI IS NULL THEN
         UPDATE COMPRA
            SET IDSITUCOMPRA = '1'
          WHERE NRCOMPRA = V_NRCOMPRA;
      END IF;
   END IF;
END;
/
-- VERSAO --
BEGIN ATUVEROBJ('ATU_ITEMAUTF_COMPRA','5.45.xxx'); END;
/





