CREATE OR REPLACE TRIGGER QUALIFICA_MARCA_PRODUTO
AFTER DELETE OR INSERT OR UPDATE
ON QFOMARNIVELPROD FOR EACH ROW
DECLARE
   V_COUNT     FLOAT;
   V_CDPRODUTO PRODUTO.CDPRODUTO%TYPE;
   V_CDMARCA   MARCA.CDMARCA%TYPE;
BEGIN
   IF INSERTING THEN
      V_CDPRODUTO := :NEW.CDPRODUTO;
      V_CDMARCA   := :NEW.CDMARCA;
   ELSE
      V_CDPRODUTO := :OLD.CDPRODUTO;
      V_CDMARCA   := :OLD.CDMARCA;
   END IF;

   FOR C_PRODUTO IN ( SELECT CDPRODUTO
                        FROM PRODUTO P
                       WHERE P.CDARVPROD BETWEEN (  SELECT MAX(CDARVPROD)
                                                      FROM PRODUTO
                                                     WHERE INSTR(V_CDPRODUTO, CDARVPROD) = 1)
                                             AND (  SELECT MAX(CDARVPROD)
                                                      FROM PRODUTO
                                                     WHERE INSTR(V_CDPRODUTO, CDARVPROD) = 1) || (SELECT LENGTH(CDPICTPROD) FROM PARAMGERAL)
                                                       AND CDNVPRODUTO = (SELECT MAX(CDNVPRODUTO) FROM PRODUTO))
   LOOP
      SELECT COUNT(1)
        INTO V_COUNT
        FROM QFOMARPROD
       WHERE CDPRODUTO = C_PRODUTO.CDPRODUTO
         AND CDMARCA   = V_CDMARCA;

      IF DELETING THEN
         IF V_COUNT > 0 THEN
            DELETE FROM QFOMARPROD
             WHERE CDPRODUTO = C_PRODUTO.CDPRODUTO
               AND CDMARCA   = V_CDMARCA;
         END IF;
      ELSE
         IF V_COUNT > 0 THEN
            UPDATE QFOMARPROD
               SET IDAPRMARPRO = :NEW.IDAPRMARNIVPROD,
                   IDAUTMARPRO = :NEW.IDAUTMARNIVPROD,
                   DTVALAPROVA = :NEW.DTVALAPRNIVPROD
             WHERE CDPRODUTO = C_PRODUTO.CDPRODUTO
               AND CDMARCA   = V_CDMARCA;
         ELSE
            INSERT INTO QFOMARPROD (CDPRODUTO, CDMARCA, IDAPRMARPRO, IDAUTMARPRO, DTVALAPROVA)
                            VALUES (C_PRODUTO.CDPRODUTO, V_CDMARCA, :NEW.IDAPRMARNIVPROD, :NEW.IDAUTMARNIVPROD, :NEW.DTVALAPRNIVPROD);
         END IF;
      END IF;
   END LOOP;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('QUALIFICA_MARCA_PRODUTO','6.05.000'); END;
/
