CREATE OR REPLACE TRIGGER LOG_GOP_TIPOCTPAGROP
AFTER INSERT OR UPDATE
ON TIPOCTPAGROP FOR EACH ROW
DECLARE
  V_TIPO                VARCHAR2(1);
  V_DSREMOTEADDR        VARCHAR2(15);
  V_DSREMOTEHOST        VARCHAR2(15);
  V_DSSERVERRDM         VARCHAR2(100);
  V_DSSERVMETHOD        VARCHAR2(4000);
  V_DSREMOTEOPER        VARCHAR2(12);
  V_DESC                VARCHAR2(500);
  V_DESCUPD             VARCHAR2(200);
  V_CDFILLOGOPER        VARCHAR2(4);
  V_ITPESQ              VARCHAR2(40);
  V_NMOPERADOR          VARCHAR2(40);
  V_CDOPERADOR          VARCHAR2(12);
  V_NMFILIAL            VARCHAR2(50);
  V_DSTPCTPAGAR         VARCHAR2(100);
  V_UNIDADE             VARCHAR2(50);

  PROCEDURE NMOPERADOR (P_CDOPERADOR IN OUT VARCHAR2,
                        P_NMOPERADOR OUT VARCHAR2) AS
  BEGIN
     P_NMOPERADOR := NULL;

     BEGIN
        SELECT CDOPERADOR, NMOPERADOR
          INTO P_CDOPERADOR, P_NMOPERADOR
          FROM OPERADOR
         WHERE CDOPERADOR = TO_CHAR(P_CDOPERADOR);
     EXCEPTION
        WHEN NO_DATA_FOUND THEN
          P_CDOPERADOR := 'VIA BD';
          P_NMOPERADOR := 'VIA BD';
     END;
  END;
BEGIN
/* IDTIPOOPER - '1' - Inclusao, '2' - Alteracao, '3' - Exclusao*/
   V_TIPO         := '0';
   V_DESC         := '';
   V_ITPESQ       := '';
   V_NMOPERADOR   := '';
   V_DESCUPD      := '';
   V_CDOPERADOR   := :NEW.CDOPERINCLUSAO;
   V_CDFILLOGOPER := '';

   
   WEBTUNNING(V_DSREMOTEADDR,
              V_DSREMOTEHOST,
              V_DSSERVERRDM,
              V_DSSERVMETHOD,
              V_DSREMOTEOPER);

   V_DSSERVERRDM := 'ger80200_resultado_operacional';
   V_DESCUPD := 'Parametros para Resultado Operacional' || chr(10);

   IF TO_CHAR(:NEW.CDFILIAL) = 'T' OR TO_CHAR(:NEW.CDFILIAL) =  'P' THEN
      V_UNIDADE   := 'Unidade: Padrao' || chr(10);
   ELSE
      SELECT MAX(NMFILIAL) INTO V_NMFILIAL FROM FILIAL WHERE CDFILIAL = :NEW.CDFILIAL;
      V_UNIDADE   := 'Unidade: '|| :NEW.CDFILIAL || '-' || V_NMFILIAL || chr(10);
   END IF;
      
   V_ITPESQ       := TO_CHAR(:NEW.CDFILIAL) || '|' || TO_CHAR(:NEW.CDTPCTPAGAR);
   V_CDOPERADOR   := :NEW.CDOPERULTATU;

   NMOPERADOR(V_CDOPERADOR, V_NMOPERADOR);
      
   IF :NEW.IDTPCTPAGROP = 'DSP' THEN
      V_DESC := V_DESC || 'Apuracao Despesa -> Contas a Pagar -> Despesas Diversas';
   ELSIF :NEW.IDTPCTPAGROP = 'MAO' THEN
      V_DESC := V_DESC || 'Apuracao Despesa -> Contas a Pagar -> Mao de Obra';
   ELSIF :NEW.IDTPCTPAGROP = 'INV' THEN
      V_DESC := V_DESC || 'Apuracao Despesa -> Contas a Pagar ->  Investimentos';
   END IF;

   IF INSERTING THEN
      V_TIPO         := '1';
      
      SELECT MAX(DSTPCTPAGAR)
        INTO V_DSTPCTPAGAR
        FROM TIPOCTPAGAR
       WHERE CDTPCTPAGAR = :NEW.CDTPCTPAGAR;     

      IF :NEW.IDTPCTPAGROP IS NOT NULL THEN
         V_DESC := V_DESC || chr(10) || chr(10) || V_UNIDADE || 'Conta a pagar: ' || :NEW.CDTPCTPAGAR || '-' || V_DSTPCTPAGAR || ' Apuracao por: ' || :NEW.IDDTAPUCTPAGAR || ' Valor a considerar: ' || :NEW.IDTPVRCTPAGAR ;
      END IF; 
 
   ELSIF UPDATING THEN
      V_TIPO := '2';

      IF NVL(:OLD.IDDTAPUCTPAGAR, 0) <> NVL(:NEW.IDDTAPUCTPAGAR, 0) THEN
         V_DESC := V_DESC || chr(10) || 'Apuracao por alterado de: ' || :OLD.IDDTAPUCTPAGAR || ' para ' || :NEW.IDDTAPUCTPAGAR || '"';
      END IF;
         
      IF NVL(:OLD.IDTPVRCTPAGAR, 0) <> NVL(:NEW.IDTPVRCTPAGAR, 0) THEN
         V_DESC := V_DESC || chr(10) || 'Valor a considerar alterado de: ' || :OLD.IDTPVRCTPAGAR || ' para ' || :NEW.IDTPVRCTPAGAR || '"';
      END IF;
    
   END IF;
 
   IF NOT V_DESC IS NULL THEN
      V_DESC := V_DESCUPD || V_DESC;
      INSERT INTO LOGOPERAGES
         (NMTABELA,     DTOPERACAO,   NMRESPOPER,  IDTIPOOPER,   DSOPERACAO,  CDPESQITEM,
          DSRDMUSUOPER, DSENDUSUOPER, DSNMUSUOPER, DSMETUSUOPER, CDORESPOPER, CDFILLOGOPER)
      VALUES
         ('TIPOCTPAGROP', SYSDATE, NVL(V_NMOPERADOR,' '), V_TIPO, V_DESC, V_ITPESQ, NVL(V_DSSERVERRDM, ' '),
          NVL(V_DSREMOTEADDR, ' '), NVL(V_DSREMOTEHOST, ' '), NVL(V_DSSERVMETHOD, ' '), NVL(V_CDOPERADOR, ' '),
          NVL(V_CDFILLOGOPER, ' '));
   END IF;
END;
/