CREATE OR REPLACE TRIGGER LOG_FIN_SDOCCORR
AFTER DELETE OR INSERT OR UPDATE
ON SDOCCORR FOR EACH ROW
DECLARE
  V_USUARIO      VARCHAR2(40);
  V_TIPO         VARCHAR2(1);
  V_ITPESQ       VARCHAR2(40);
  V_DESC         VARCHAR2(300);
  V_DTOPER       DATE;
  V_DSREMOTEADDR VARCHAR2(15);
  V_DSREMOTEHOST VARCHAR2(15);
  V_DSSERVERRDM  VARCHAR2(20);
  V_DSSERVMETHOD VARCHAR2(30);
  V_DSREMOTEOPER VARCHAR2(12);
BEGIN   
   IF DELETING THEN
      V_TIPO   := '3';
      V_DESC   := 'Dt Sald. '    || TO_CHAR(:OLD.DTSDOCCORR, 'DD/MM/YYYY') ||
                  ' Valor Imp '  || TO_CHAR(:OLD.VRSDOIMPLA)               ||
                  ' Valor Sald ' || TO_CHAR(:OLD.VRSDOCCORR)               ||
                  ' ContCC '     || :OLD.CDREDUCONT;

      V_ITPESQ  := :OLD.CDREDUCONT;
   ELSE
      IF UPDATING THEN
         V_ITPESQ       := :OLD.CDREDUCONT;

         IF (:NEW.DTSDOCCORR   <> :OLD.DTSDOCCORR)    OR
            (:NEW.VRSDOIMPLA   <> :OLD.VRSDOIMPLA)    OR
            (:NEW.VRSDOCCORR   <> :OLD.VRSDOCCORR)    THEN
            V_TIPO   := '2';
         END IF;
      ELSE
         V_TIPO         := '1';
         V_ITPESQ       := :NEW.CDREDUCONT;
      END IF;

      V_DESC   := 'Dt Sald. '    || TO_CHAR(:NEW.DTSDOCCORR, 'DD/MM/YYYY') ||
                  ' Valor Imp '  || TO_CHAR(:NEW.VRSDOIMPLA)               ||
                  ' Valor Sald ' || TO_CHAR(:NEW.VRSDOCCORR)               ||
                  ' ContCC '     || :NEW.CDREDUCONT;

   END IF;

   IF V_TIPO <> '0' THEN
      NMUSUARIO(V_USUARIO);
      WEBTUNNING(V_DSREMOTEADDR,
                 V_DSREMOTEHOST,
                 V_DSSERVERRDM,
                 V_DSSERVMETHOD,
                 V_DSREMOTEOPER);
      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)
            VALUES
               ('SDOCCORR', V_DTOPER, V_USUARIO,
                V_TIPO,         V_ITPESQ, V_DESC,
                V_DSSERVERRDM, V_DSREMOTEADDR, V_DSREMOTEHOST, V_DSSERVMETHOD, V_DSREMOTEOPER);
         END IF;
      END IF;
   END IF;
END;
/