CREATE OR REPLACE TRIGGER LOG_CONFIGALCADA
AFTER DELETE OR INSERT OR UPDATE
ON CONFIGALCADA FOR EACH ROW
DECLARE
  V_DSREMOTEADDR VARCHAR2(15);
  V_DSREMOTEHOST VARCHAR2(15);
  V_DSSERVERRDM  VARCHAR2(20);
  V_DSSERVMETHOD VARCHAR2(30);
  V_DSREMOTEOPER VARCHAR2(12);
  V_DESC         VARCHAR2(500);
  V_ITPESQ       VARCHAR2(40);
  V_NMOPERADOR   VARCHAR2(40);
  V_IDTIPOOPER   VARCHAR2(1);
BEGIN
/* IDTIPOOPER - '1' - Inclusao, '2' - Alteracao, '3' - Exclusao*/
   V_DESC         := '';
   V_ITPESQ       := '';
   V_NMOPERADOR   := '';
   V_IDTIPOOPER   := '';
   NMUSUARIO(V_NMOPERADOR);
   WEBTUNNING(V_DSREMOTEADDR,
              V_DSREMOTEHOST,
              V_DSSERVERRDM,
              V_DSSERVMETHOD,
              V_DSREMOTEOPER);

   IF UPDATING THEN
      IF NVL(:OLD.NMALCADA, '!') <> NVL(:NEW.NMALCADA, '!')    THEN
         V_DESC   := V_DESC || 'Nm Alcada:' || '' || NVL(:NEW.NMALCADA,  '')  || ' ';
      END IF;
      IF NVL(:OLD.IDLANCAFEXTRA, '!')   <> NVL(:NEW.IDLANCAFEXTRA, '!')   THEN
         V_DESC   := V_DESC || 'AF:' || '' || NVL(:NEW.IDLANCAFEXTRA, '')  || ' ';
      END IF;
      IF NVL(:OLD.IDLANCSCEXTRA, '!')   <> NVL(:NEW.IDLANCSCEXTRA, '!')   THEN
         V_DESC   := V_DESC || 'SC:' || '' || NVL(:NEW.IDLANCSCEXTRA, '')  || ' ';
      END IF;
      IF NVL(:OLD.IDTIPOAF, '!')   <> NVL(:NEW.IDTIPOAF, '!')   THEN
         V_DESC   := V_DESC || 'Tipo AF:' || '' || NVL(:NEW.IDTIPOAF, '')  || ' ';
      END IF;
      IF NVL(:OLD.IDTIPOSC, '!') <> NVL(:NEW.IDTIPOSC, '!')      THEN
         V_DESC   := V_DESC || 'Tipo SC:' || '' || :NEW.IDTIPOSC              || ' ';
      END IF;
      IF NVL(:OLD.IDTPLANC, '!')   <> NVL(:NEW.IDTPLANC, '!')   THEN
         V_DESC   := V_DESC || 'Lancamento:'  || '' || :NEW.IDTPLANC           || ' ';
      END IF;
      IF NVL(:OLD.IDCANCEL, '!') <> NVL(:NEW.IDCANCEL, '!') THEN
         V_DESC   := V_DESC || 'Cancelamento:'         || '' || :NEW.IDCANCEL    || ' ';
      END IF;
      IF NVL(:OLD.IDBAIXMANUAL, '!') <> NVL(:NEW.IDBAIXMANUAL, '!') THEN
         V_DESC  := V_DESC || 'Baixa Manual:' || '' || :NEW.IDBAIXMANUAL;
      END IF;
      IF NVL(:OLD.IDFORAORC, '!') <> NVL(:NEW.IDFORAORC, '!') THEN
         V_DESC   := V_DESC || 'Fora Orca.:' || '' || :NEW.IDFORAORC    || ' ';
      END IF;
      IF NVL(:OLD.IDEXCLUSAO, '!') <> NVL(:NEW.IDEXCLUSAO, '!') THEN
         V_DESC   := V_DESC || 'Exclusao:' || '' || :NEW.IDEXCLUSAO    || ' ';
      END IF;
      IF NVL(:OLD.IDIMPGESTFIL , '!') <> NVL(:NEW.IDIMPGESTFIL , '!') THEN
         V_DESC  := V_DESC || 'Imp Gestor:'|| :NEW.IDIMPGESTFIL;
      END IF;
      IF NVL(:OLD.VRPLANEJAMENTO , 0) <> NVL(:NEW.VRPLANEJAMENTO , 0) THEN
         V_DESC  := V_DESC || 'Vr Planeja:'|| :NEW.VRPLANEJAMENTO;
      END IF;
      IF NVL(:OLD.VRSUPERVISOR , 0) <> NVL(:NEW.VRSUPERVISOR , 0) THEN
         V_DESC  := V_DESC || 'Vr Supervisor: '|| :NEW.VRSUPERVISOR;
      END IF;
      IF NVL(:OLD.VRGERREGIONAL , 0) <> NVL(:NEW.VRGERREGIONAL , 0) THEN
         V_DESC  := V_DESC || 'Vr Gerente:'|| :NEW.VRGERREGIONAL;
      END IF;
      IF NVL(:OLD.VRDIRETORIA , 0) <> NVL(:NEW.VRDIRETORIA , 0) THEN
         V_DESC  := V_DESC || 'Vr Diretoria:'|| :NEW.VRDIRETORIA;
      END IF;
      IF NVL(:OLD.IDTIPORCAOP , '!') <> NVL(:NEW.IDTIPORCAOP , '!') THEN
         V_DESC  := V_DESC || 'Tipo Orca:'|| :NEW.IDTIPORCAOP;
      END IF;
      IF NVL(:OLD.CDDESPPREV , '!') <> NVL(:NEW.CDDESPPREV , '!') THEN
         V_DESC  := V_DESC || 'Desp Diversa:'|| :NEW.CDDESPPREV;
      END IF;
      IF NVL(:OLD.IDTPALCADA , '!') <> NVL(:NEW.IDTPALCADA , '!') THEN
         V_DESC  := V_DESC || 'Tipo Alcada:'|| :NEW.IDTPALCADA;
      END IF;
      IF NVL(:OLD.IDEXIGETAPROVE , '!') <> NVL(:NEW.IDEXIGETAPROVE , '!') THEN
         V_DESC  := V_DESC || 'Exige Aprov:'|| :NEW.IDEXIGETAPROVE;
      END IF;
      IF NVL(:OLD.IDALTERACAO , '!') <> NVL(:NEW.IDALTERACAO , '!') THEN
         V_DESC  := V_DESC || 'Alteracao:'|| :NEW.IDALTERACAO;
      END IF;
      IF NVL(:OLD.IDVALIDAALTER , '!') <> NVL(:NEW.IDVALIDAALTER , '!') THEN
         V_DESC  := V_DESC || 'Validar Alteracao:'|| :NEW.IDVALIDAALTER;
      END IF;
      IF NVL(:OLD.CDTPCTPAGAR , '!') <> NVL(:NEW.CDTPCTPAGAR , '!') THEN
         V_DESC  := V_DESC || 'Tp Conta Pagar:'|| :NEW.CDTPCTPAGAR;
      END IF;
      IF NVL(:OLD.CDSETOR , '!') <> NVL(:NEW.CDSETOR , '!') THEN
         V_DESC  := V_DESC || 'Setor:'|| :NEW.CDSETOR;
      END IF;
      IF NVL(:OLD.IDTIPOVRAPROV , '!') <> NVL(:NEW.IDTIPOVRAPROV , '!') THEN
         V_DESC  := V_DESC || 'Tipo Valor Alcada:'|| :NEW.IDTIPOVRAPROV;
      END IF;
      V_ITPESQ       := NVL(:OLD.NRCONFIGALCADA, '');
      V_IDTIPOOPER   := '2';
   ELSE
      IF INSERTING THEN
         V_DESC   := 'Nm Alcada:'        || '' || NVL(:NEW.NMALCADA, '')       || ' ' ||
                     'AF:'               || '' || NVL(:NEW.IDLANCAFEXTRA, '')  || ' ' ||
				     'SC:'               || '' || NVL(:NEW.IDLANCSCEXTRA, '')  || ' ' ||
				     'Tipo AF:'          || '' || NVL(:NEW.IDTIPOAF, '')       || ' ' ||
				     'Tipo SC:'          || '' || NVL(:NEW.IDTIPOSC, '')       || ' ' ||
				     'Lancamento:'       || '' || NVL(:NEW.IDTPLANC, '')       || ' ' ||
				     'Cancelamento:'     || '' || NVL(:NEW.IDCANCEL, '')       || ' ' ||
				     'Baixa Manual:'     || '' || NVL(:NEW.IDBAIXMANUAL, '')   || ' ' ||
				     'Fora Orca.:'       || '' || NVL(:NEW.IDFORAORC, '')      || ' ' ||
				     'Exclusao:'         || '' || NVL(:NEW.IDEXCLUSAO, '')     || ' ' ||
				     'Imp Gestor:'       || '' || NVL(:NEW.IDIMPGESTFIL, '')   || ' ' ||
				     'Vr Planeja:'       || '' || NVL(:NEW.VRPLANEJAMENTO, '') || ' ' ||
				     'Vr Supervisor:'    || '' || NVL(:NEW.VRSUPERVISOR, '')   || ' ' ||
				     'Vr Gerente:'       || '' || NVL(:NEW.VRGERREGIONAL, '')  || ' ' ||
				     'Vr Diretoria:'     || '' || NVL(:NEW.VRDIRETORIA, '')    || ' ' ||
				     'Tipo Orca:'        || '' || NVL(:NEW.IDTIPORCAOP, '')    || ' ' ||
				     'Desp Diversa:'     || '' || NVL(:NEW.CDDESPPREV, '')     || ' ' ||
				     'Tipo Alcada:'      || '' || NVL(:NEW.IDTPALCADA, '')     || ' ' ||
				     'Exige Aprov:'      || '' || NVL(:NEW.IDEXIGETAPROVE, '') || ' ' ||
				     'Alteracao:'        || '' || NVL(:NEW.IDALTERACAO, '')    || ' ' ||
				     'Validar Alteracao:'|| '' || NVL(:NEW.IDVALIDAALTER, '')  || ' ' ||
				     'Tp Conta Pagar:'   || '' || NVL(:NEW.CDTPCTPAGAR, '')    || ' ' ||
                     'Tipo Valor Alcada:'|| '' || NVL(:NEW.IDTIPOVRAPROV, '')  || ' ' ||
				     'Setor:'            || '' || NVL(:NEW.CDSETOR, '');

         V_ITPESQ       := :NEW.NRCONFIGALCADA;
         V_IDTIPOOPER   := '1';
      ELSE
         IF DELETING THEN
            V_DESC   := 'Nm Alcada:'        || '' || NVL(:OLD.NMALCADA, '')       || ' ' ||
	                    'AF:'               || '' || NVL(:OLD.IDLANCAFEXTRA, '')  || ' ' ||
					    'SC:'               || '' || NVL(:OLD.IDLANCSCEXTRA, '')  || ' ' ||
					    'Tipo AF:'          || '' || NVL(:OLD.IDTIPOAF, '')       || ' ' ||
					    'Tipo SC:'          || '' || NVL(:OLD.IDTIPOSC, '')       || ' ' ||
					    'Lancamento:'       || '' || NVL(:OLD.IDTPLANC, '')       || ' ' ||
					    'Cancelamento:'     || '' || NVL(:OLD.IDCANCEL, '')       || ' ' ||
					    'Baixa Manual:'     || '' || NVL(:OLD.IDBAIXMANUAL, '')   || ' ' ||
					    'Fora Orca.:'       || '' || NVL(:OLD.IDFORAORC, '')      || ' ' ||
					    'Exclusao:'         || '' || NVL(:OLD.IDEXCLUSAO, '')     || ' ' ||
					    'Imp Gestor:'       || '' || NVL(:OLD.IDIMPGESTFIL, '')   || ' ' ||
					    'Vr Planeja:'       || '' || NVL(:OLD.VRPLANEJAMENTO, '') || ' ' ||
					    'Vr Supervisor:'    || '' || NVL(:OLD.VRSUPERVISOR, '')   || ' ' ||
					    'Vr Gerente:'       || '' || NVL(:OLD.VRGERREGIONAL, '')  || ' ' ||
					    'Vr Diretoria:'     || '' || NVL(:OLD.VRDIRETORIA, '')    || ' ' ||
					    'Tipo Orca:'        || '' || NVL(:OLD.IDTIPORCAOP, '')    || ' ' ||
					    'Desp Diversa:'     || '' || NVL(:OLD.CDDESPPREV, '')     || ' ' ||
					    'Tipo Alcada:'      || '' || NVL(:OLD.IDTPALCADA, '')     || ' ' ||
					    'Exige Aprov:'      || '' || NVL(:OLD.IDEXIGETAPROVE, '') || ' ' ||
					    'Alteracao:'        || '' || NVL(:OLD.IDALTERACAO, '')    || ' ' ||
					    'Validar Alteracao:'|| '' || NVL(:OLD.IDVALIDAALTER, '')  || ' ' ||
					    'Tp Conta Pagar:'   || '' || NVL(:OLD.CDTPCTPAGAR, '')    || ' ' ||
                        'Tipo Valor Alcada:'|| '' || NVL(:OLD.IDTIPOVRAPROV, '')  || ' ' ||
					    'Setor:'            || '' || NVL(:OLD.CDSETOR, '');
            V_ITPESQ       := NVL(:OLD.NRCONFIGALCADA, '');
            V_IDTIPOOPER   := '3';
         END IF;
      END IF;
   END IF;
   V_DESC := SUBSTR(V_DESC, 1, 700);
   INSERT INTO LOGOPERA
      (NMTABELA,
       DTOPERACAO,
       NMRESPOPER,
       IDTIPOOPER,
       DSOPERACAO,
       CDPESQITEM,
       DSRDMUSUOPER,
       DSENDUSUOPER,
       DSNMUSUOPER,
       DSMETUSUOPER,
       CDORESPOPER)
    VALUES
      ('CONFIGALCADA',
       SYSDATE,
       NVL(V_NMOPERADOR,' '),
       V_IDTIPOOPER,
       V_DESC,
       V_ITPESQ,
       V_DSSERVERRDM,
       V_DSREMOTEADDR,
       V_DSREMOTEHOST,
       V_DSSERVMETHOD,
       V_DSREMOTEOPER);
END;
/