CREATE OR REPLACE TRIGGER LOG_GOP_PERCITFILGOP
AFTER UPDATE or INSERT
ON PERCITFILGOP 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(4000);
  V_CDFILLOGOPER    VARCHAR2(4);
  V_ITPESQ          VARCHAR2(40);
  V_NMOPERADOR      VARCHAR2(40);
  V_CDOPERADOR      VARCHAR2(12);
  V_NMTABELA        VARCHAR2(20);
  V_DESCUPD         VARCHAR2(4000);
  V_NMFILIAL        VARCHAR2(30);
  V_UNIDADE         VARCHAR2(50);
  V_ITEM            VARCHAR2(25);

  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_CDOPERADOR   := '';
   V_CDFILLOGOPER := '';
   V_NMTABELA     := 'PERCITFILGOP';

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

   V_DSSERVERRDM := 'gop21000_percentual_por_item_operacional';
   V_DESCUPD := 'Percentual por Item Operacional -> Unidade -> ';

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

   IF INSERTING THEN
      V_TIPO         := '1';
      V_ITPESQ       := TO_CHAR(:NEW.CDFILIAL) || '/' || TO_CHAR(:NEW.NRSEQITEMORCA);
      V_CDOPERADOR   := :NEW.CDOPERINCLUSAO;
      NMOPERADOR(V_CDOPERADOR, V_NMOPERADOR);

      V_DESCUPD := 'Unidade: ' || :NEW.CDFILIAL || '-' || V_NMFILIAL;

      IF NVL(TO_CHAR(:OLD.VRPERCITEMGOP), 0) <> NVL(TO_CHAR(:NEW.VRPERCITEMGOP), 0)  THEN
         V_ITEM := CASE TO_CHAR(:NEW.NRSEQITEMORCA) WHEN 1 THEN 'Imposto'
                                                    WHEN 2 THEN 'Consumo'
                                                    WHEN 3 THEN 'Mao de Obra'
                                                    WHEN 5 THEN 'Despesas da Matriz'
                                                    WHEN 6 THEN 'Despesas Diversas'
                                                    WHEN 7 THEN 'Despesas Lanc. Entrada'
                                                    WHEN 8 THEN 'Impostos a Recuperar'
                                                    WHEN 9 THEN 'Impostos sob o Lucro'
                                                    WHEN 10 THEN 'Investimentos'
                                                    WHEN 11 THEN 'Depreciacao'
                                                    ELSE TO_CHAR(:NEW.NRSEQITEMORCA)
                   END; 
         IF :NEW.NRSEQITEMORCA IS NOT NULL THEN
            V_DESCUPD := V_DESCUPD || V_ITEM || chr(10) || chr(10);
            V_DESC := V_UNIDADE || chr(10) || 'Percentual: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), 0);
         END IF;
      END IF;
   ELSIF UPDATING THEN
      V_TIPO := '2';
      V_ITPESQ       := TO_CHAR(:NEW.CDFILIAL) || '/' || TO_CHAR(:NEW.NRSEQITEMORCA);
      V_CDOPERADOR   := :NEW.CDOPERULTATU;

      NMOPERADOR(V_CDOPERADOR, V_NMOPERADOR);

      IF NVL(TO_CHAR(:NEW.VRPERCITEMGOP), 0) <> NVL(TO_CHAR(:OLD.VRPERCITEMGOP), 0)  THEN
         V_ITEM := CASE TO_CHAR(:NEW.NRSEQITEMORCA) WHEN 1 THEN 'Imposto'
                                                    WHEN 2 THEN 'Consumo'
                                                    WHEN 3 THEN 'Mao de Obra'
                                                    WHEN 5 THEN 'Despesas da Matriz'
                                                    WHEN 6 THEN 'Despesas Diversas'
                                                    WHEN 7 THEN 'Despesas Lanc. Entrada'
                                                    WHEN 8 THEN 'Impostos a Recuperar'
                                                    WHEN 9 THEN 'Impostos sob o Lucro'
                                                    WHEN 10 THEN 'Investimentos'
                                                    WHEN 11 THEN 'Depreciacao'
                                                    ELSE TO_CHAR(:NEW.NRSEQITEMORCA)
                   END;

         IF :NEW.NRSEQITEMORCA IS NOT NULL THEN
            V_DESCUPD := V_DESCUPD || V_ITEM || chr(10) || chr(10);
            V_DESC := V_UNIDADE || 'Percentual (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERCITEMGOP), 0) || ' para: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), 0);
         END IF;
      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
        ('PERCITFILGOP', 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;