CREATE OR REPLACE TRIGGER LOG_VERSAOPRODANA
AFTER DELETE OR INSERT OR UPDATE
ON VERSAOPRODANA FOR EACH ROW
DECLARE
  V_USUARIO      VARCHAR2(40);
  V_TIPO         VARCHAR2(1);
  V_ITPESQ       VARCHAR2(40);
  V_DESC         VARCHAR2(300);
  V_CDFILLOGOPER VARCHAR2(4);
  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   := ' Codigo '     || :OLD.CDVERSAO                       		||
                  ' Desc '       || :OLD.DSVERSAO                             ||
                  ' Dt. Inicio ' || TO_CHAR(:OLD.DTVIGINICIO, 'DD/MM/YYYY')   ||
                  ' Dt. Fim '    || TO_CHAR(:OLD.DTVIFGFINAL, 'DD/MM/YYYY')   ||
                  ' Produto '    || :OLD.CDPRODUTO                            ||
                  ' Processo '   || :OLD.IDPROCPROD                           ||
                  ' Operador '   || :OLD.CDOPERADOR                           ||
                  ' Status '     || :OLD.IDSTATUSVER                          ||
   					' Ativo '      || :OLD.IDVERATIVA;
      V_ITPESQ := :OLD.CDPRODUTO||:OLD.CDVERSAO||:OLD.IDPROCPROD;		
   ELSE
      IF UPDATING THEN
			V_ITPESQ := :OLD.CDPRODUTO||:OLD.CDVERSAO||:NEW.IDPROCPROD; 
         IF (:NEW.DSVERSAO     <> :OLD.DSVERSAO  )   OR
			   (:NEW.IDPROCPROD   <> :OLD.IDPROCPROD)   OR
            (:NEW.DTVIGINICIO  <> :OLD.DTVIGINICIO)  OR
            (:NEW.DTVIGINICIO  <> :OLD.DTVIGINICIO)  OR
            (:NEW.CDOPERADOR   <> :OLD.CDOPERADOR)   OR
            (:NEW.IDSTATUSVER  <> :OLD.IDSTATUSVER)  OR
            (:NEW.IDVERATIVA   <> :OLD.IDVERATIVA) THEN
            V_TIPO   := '2';
         END IF;
      ELSE
         V_TIPO   := '1';
         V_ITPESQ := :NEW.CDPRODUTO||:NEW.CDVERSAO||:NEW.IDPROCPROD; 
      END IF;

		V_DESC   := ' Codigo '     || :NEW.CDVERSAO                             ||
						' Desc '       || :NEW.DSVERSAO                             ||
						' Dt. Inicio ' || TO_CHAR(:NEW.DTVIGINICIO, 'DD/MM/YYYY')   ||
						' Dt. Fim '    || TO_CHAR(:NEW.DTVIFGFINAL, 'DD/MM/YYYY')   ||
						' Produto '    || :NEW.CDPRODUTO                            ||
						' Processo '   || :NEW.IDPROCPROD                           ||
						' Operador '   || :NEW.CDOPERADOR                           ||
						' Status '     || :NEW.IDSTATUSVER                          ||
						' Ativo '      || :NEW.IDVERATIVA;
   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,
                CDFILLOGOPER, DSRDMUSUOPER, DSENDUSUOPER, DSNMUSUOPER, DSMETUSUOPER, CDORESPOPER)
            VALUES
               ('VERSAOPRODANA', V_DTOPER, V_USUARIO,
                V_TIPO,         V_ITPESQ, V_DESC, V_CDFILLOGOPER,
                V_DSSERVERRDM, V_DSREMOTEADDR, V_DSREMOTEHOST, V_DSSERVMETHOD, V_DSREMOTEOPER);
         END IF;
      END IF;
   END IF;
END;
/