CREATE OR REPLACE TRIGGER LOG_SUP_PRMARCPEDCOL
AFTER DELETE OR INSERT OR UPDATE ON PRMARCPEDCOL FOR EACH ROW
DECLARE
   V_USUARIO    VARCHAR2(40);
   V_TIPO       VARCHAR2(1);
   V_ITPESQ     VARCHAR2(60);
   V_DESC       VARCHAR2(500);
   V_DTOPER     DATE;
   V_DSIP       VARCHAR2(50);
   V_DSUSUARIO  VARCHAR2(50);
   V_DSRDM      VARCHAR2(50);
   V_DSMETODO   VARCHAR2(250);
   V_DSOPERADOR VARCHAR2(12);
BEGIN
   V_TIPO := '0';
   V_DESC := '';
   WEBTUNNING(V_DSIP,
              V_DSUSUARIO,
              V_DSRDM,
              V_DSMETODO,
              V_DSOPERADOR);
   IF DELETING THEN   
      IF :OLD.CDFILIAL IS NOT NULL THEN
         V_DESC := V_DESC || 'CDFILIAL=' || :OLD.CDFILIAL;
      END IF;
      
      IF :OLD.NRPEDIDOCOL IS NOT NULL THEN
         V_DESC := V_DESC || ' NRPEDIDOCOL=' || :OLD.NRPEDIDOCOL;
      END IF;
      
      IF :OLD.CDPRODUTO IS NOT NULL THEN
         V_DESC := V_DESC || ' CDPRODUTO=' || :OLD.CDPRODUTO;
      END IF;
      
      IF :OLD.CDMARCA IS NOT NULL THEN
         V_DESC := V_DESC || ' CDMARCA=' || :OLD.CDMARCA;
      END IF;
      
      IF :OLD.VRPRECUNIPRMARC IS NOT NULL THEN
         V_DESC := V_DESC || ' VRPRECUNIPRMARC=' || :OLD.VRPRECUNIPRMARC;
      END IF;
      
      IF :OLD.QTDISPPRODMARC IS NOT NULL THEN
         V_DESC := V_DESC || ' QTDISPPRODMARC=' || :OLD.QTDISPPRODMARC;
      END IF;
      
      IF :OLD.VRULTPRECPRMARC IS NOT NULL THEN
         V_DESC := V_DESC || ' VRULTPRECPRMARC=' || :OLD.VRULTPRECPRMARC;
      END IF;
      
      IF :OLD.VRPRECOOBJETIVO IS NOT NULL THEN
         V_DESC := V_DESC || ' VRPRECOOBJETIVO=' || :OLD.VRPRECOOBJETIVO;
      END IF;
      
      IF :OLD.VRPRECREN IS NOT NULL THEN
         V_DESC := V_DESC || ' VRPRECREN=' || :OLD.VRPRECREN;
      END IF;
      
      IF :OLD.IDITPEDPRIONEG IS NOT NULL THEN
         V_DESC := V_DESC || ' IDITPEDPRIONEG=' || :OLD.IDITPEDPRIONEG;
      END IF;
      
      IF :OLD.DSOBSRENEGOCIA IS NOT NULL THEN
         V_DESC := V_DESC || ' DSOBSRENEGOCIA=' || :OLD.DSOBSRENEGOCIA;
      END IF;
      
      IF :OLD.IDMELHORPRECO IS NOT NULL THEN
         V_DESC := V_DESC || ' IDMELHORPRECO=' || :OLD.IDMELHORPRECO;
      END IF;
      
      IF :OLD.IDPRODINCLFOR IS NOT NULL THEN
         V_DESC := V_DESC || ' IDPRODINCLFOR=' || :OLD.IDPRODINCLFOR;
      END IF;      
      
      V_TIPO := '3';
      V_ITPESQ := :OLD.CDFILIAL || :OLD.NRPEDIDOCOL || :OLD.CDPRODUTO || :OLD.CDMARCA;
   ELSE
      IF UPDATING THEN      
         IF (:OLD.CDFILIAL    <> :NEW.CDFILIAL) OR
            (:OLD.NRPEDIDOCOL <> :NEW.NRPEDIDOCOL) OR
            (:OLD.CDPRODUTO   <> :NEW.CDPRODUTO) OR
            (:OLD.CDMARCA     <> :NEW.CDMARCA ) OR
            (NVL(:OLD.VRPRECUNIPRMARC, 0)  <> NVL(:NEW.VRPRECUNIPRMARC, 0))  OR
            (NVL(:OLD.QTDISPPRODMARC, 0)   <> NVL(:NEW.QTDISPPRODMARC, 0))  OR
            (NVL(:OLD.VRULTPRECPRMARC, 0)  <> NVL(:NEW.VRULTPRECPRMARC, 0))  OR
            (NVL(:OLD.VRPRECOOBJETIVO, 0)  <> NVL(:NEW.VRPRECOOBJETIVO, 0))  OR
            (NVL(:OLD.VRPRECREN, 0)        <> NVL(:NEW.VRPRECREN, 0))  OR
            (NVL(:OLD.IDITPEDPRIONEG, ' ') <> NVL(:NEW.IDITPEDPRIONEG, ' '))  OR
            (NVL(:OLD.DSOBSRENEGOCIA, ' ') <> NVL(:NEW.DSOBSRENEGOCIA, ' ')) OR
            (NVL(:OLD.IDMELHORPRECO, ' ')  <> NVL(:NEW.IDMELHORPRECO, ' '))  OR
            (NVL(:OLD.IDPRODINCLFOR, ' ')  <> NVL(:NEW.IDPRODINCLFOR, ' ')) THEN
             
            IF NVL(:OLD.CDFILIAL, ' ') <> NVL(:NEW.CDFILIAL, ' ') THEN
               V_DESC := V_DESC || 'CDFILIAL=' || :OLD.CDFILIAL || '|' || :NEW.CDFILIAL;
            END IF;

            IF NVL(:OLD.NRPEDIDOCOL, ' ') <> NVL(:NEW.NRPEDIDOCOL, ' ') THEN
               V_DESC := V_DESC || ' NRPEDIDOCOL=' || :OLD.NRPEDIDOCOL || '|' || :NEW.NRPEDIDOCOL;
            END IF;
            
            IF NVL(:OLD.CDPRODUTO, ' ') <> NVL(:NEW.CDPRODUTO, ' ') THEN
               V_DESC := V_DESC || ' CDPRODUTO=' || :OLD.CDPRODUTO || '|' || :NEW.CDPRODUTO;
            END IF;
            
            IF NVL(:OLD.CDMARCA, ' ') <> NVL(:NEW.CDMARCA, ' ') THEN
               V_DESC := V_DESC || ' CDMARCA=' || :OLD.CDMARCA || '|' || :NEW.CDMARCA;
            END IF;

            IF NVL(:OLD.VRPRECUNIPRMARC, 0) <> NVL(:NEW.VRPRECUNIPRMARC, 0) THEN
               V_DESC := V_DESC || ' VRPRECUNIPRMARC=' || :OLD.VRPRECUNIPRMARC || '|' || :NEW.VRPRECUNIPRMARC;
            END IF;

            IF NVL(:OLD.QTDISPPRODMARC, 0) <> NVL(:NEW.QTDISPPRODMARC, 0) THEN
               V_DESC := V_DESC || ' QTDISPPRODMARC=' || :OLD.QTDISPPRODMARC || '|' || :NEW.QTDISPPRODMARC;
            END IF;

            IF NVL(:OLD.VRULTPRECPRMARC, 0) <> NVL(:NEW.VRULTPRECPRMARC, 0) THEN
               V_DESC := V_DESC || ' VRULTPRECPRMARC=' || :OLD.VRULTPRECPRMARC || '|' || :NEW.VRULTPRECPRMARC;
            END IF;

            IF NVL(:OLD.VRPRECOOBJETIVO, 0) <> NVL(:NEW.VRPRECOOBJETIVO, 0) THEN
               V_DESC := V_DESC || ' VRPRECOOBJETIVO=' || :OLD.VRPRECOOBJETIVO || '|' || :NEW.VRPRECOOBJETIVO;
            END IF;

            IF NVL(:OLD.VRPRECREN, 0) <> NVL(:NEW.VRPRECREN, 0) THEN
               V_DESC := V_DESC || ' VRPRECREN=' || :OLD.VRPRECREN || '|' || :NEW.VRPRECREN;
            END IF;

            IF NVL(:OLD.IDITPEDPRIONEG, ' ') <> NVL(:NEW.IDITPEDPRIONEG, ' ') THEN
               V_DESC := V_DESC || ' IDITPEDPRIONEG=' || :OLD.IDITPEDPRIONEG || '|' || :NEW.IDITPEDPRIONEG;
            END IF;

            IF NVL(:OLD.DSOBSRENEGOCIA, ' ') <> NVL(:NEW.DSOBSRENEGOCIA, ' ') THEN
               V_DESC := V_DESC || ' DSOBSRENEGOCIA=' || :OLD.DSOBSRENEGOCIA || '|' || :NEW.DSOBSRENEGOCIA;
            END IF;            

            IF NVL(:OLD.IDMELHORPRECO, ' ') <> NVL(:NEW.IDMELHORPRECO, ' ') THEN
               V_DESC := V_DESC || ' IDMELHORPRECO=' || :OLD.IDMELHORPRECO || '|' || :NEW.IDMELHORPRECO;
            END IF;

            IF NVL(:OLD.IDPRODINCLFOR, ' ') <> NVL(:NEW.IDPRODINCLFOR, ' ') THEN
               V_DESC := V_DESC || ' IDPRODINCLFOR=' || :OLD.IDPRODINCLFOR || '|' || :NEW.IDPRODINCLFOR;
            END IF;
            
            V_TIPO   := '2';
            V_ITPESQ := :OLD.CDFILIAL || :OLD.NRPEDIDOCOL || :OLD.CDPRODUTO || :OLD.CDMARCA;
         END IF;
      ELSE
         V_DESC := V_DESC || 'CDFILIAL=' || :NEW.CDFILIAL;
         V_DESC := V_DESC || ' NRPEDIDOCOL=' || :NEW.NRPEDIDOCOL;
         V_DESC := V_DESC || ' CDPRODUTO=' || :NEW.CDPRODUTO;
         V_DESC := V_DESC || ' CDMARCA=' || :NEW.CDMARCA;        
         V_DESC := V_DESC || ' VRPRECUNIPRMARC=' || :NEW.VRPRECUNIPRMARC;
         V_DESC := V_DESC || ' QTDISPPRODMARC=' || :NEW.QTDISPPRODMARC;
         V_DESC := V_DESC || ' VRULTPRECPRMARC=' || :NEW.VRULTPRECPRMARC;
         V_DESC := V_DESC || ' VRPRECOOBJETIVO=' || :NEW.VRPRECOOBJETIVO;
         V_DESC := V_DESC || ' VRPRECREN=' || :NEW.VRPRECREN;
         V_DESC := V_DESC || ' IDITPEDPRIONEG=' || :NEW.IDITPEDPRIONEG;
         V_DESC := V_DESC || ' DSOBSRENEGOCIA=' || :NEW.DSOBSRENEGOCIA;
         V_DESC := V_DESC || ' IDMELHORPRECO=' || :NEW.IDMELHORPRECO;
         V_DESC := V_DESC || ' IDPRODINCLFOR=' || :NEW.IDPRODINCLFOR;       
              
         V_TIPO   := '1';
         V_ITPESQ := :NEW.CDFILIAL || :NEW.NRPEDIDOCOL || :NEW.CDPRODUTO || :NEW.CDMARCA;
      END IF;
   END IF;
   IF V_TIPO <> '0' THEN
      NMUSUARIO(V_USUARIO);
      IF NOT V_DESC IS NULL THEN
         IF NOT V_USUARIO IS NULL THEN
            V_DTOPER := SYSDATE;

            INSERT INTO LOGOPERA
               (NMTABELA,   DTOPERACAO, NMRESPOPER, IDTIPOOPER, CDPESQITEM, DSOPERACAO,
                DSRDMUSUOPER, DSENDUSUOPER, DSNMUSUOPER, DSMETUSUOPER, CDORESPOPER, CDFILLOGOPER)
            VALUES
               ('PRMARCPEDCOL', V_DTOPER, V_USUARIO, V_TIPO, V_ITPESQ, SUBSTR(V_DESC, 1, 300),
                V_DSRDM, V_DSIP, V_DSUSUARIO, V_DSMETODO, V_DSOPERADOR, NVL(:NEW.CDFILIAL, :OLD.CDFILIAL));
         END IF;
      END IF;
   END IF;
END;
/
