CREATE OR REPLACE TRIGGER LOG_GOP_PERCITEMGOP
AFTER UPDATE OR INSERT
ON PERCITEMGOP 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);

    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 = P_CDOPERADOR;
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
              P_CDOPERADOR := 'VIA BD';
              P_NMOPERADOR := 'VIA BD';
         END;
    END;
BEGIN
/* IDTIPOOPER - '1' - Inclusão, '2' - Alteração, '3' - Exclusão*/
   V_TIPO         := '0';
   V_DESC         := '';
   V_ITPESQ       := '';
   V_NMOPERADOR   := '';
   V_CDOPERADOR   := '';
   V_CDFILLOGOPER := '';
   V_NMTABELA     := 'PERCITEMGOP';

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

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

   IF UPDATING THEN
      V_TIPO := '2';
      V_ITPESQ       := TO_CHAR(:NEW.NRPERCITEMGOP);
      V_CDOPERADOR   := :NEW.CDOPERULTATU;

      NMOPERADOR(V_CDOPERADOR, V_NMOPERADOR);

      IF NVL(:NEW.VRPERCITEMGOP, 0) <> NVL(:OLD.VRPERCITEMGOP, 0)  THEN
         IF :NEW.NRSEQITEMORCA = 1 THEN
            V_DESC := 'Imposto' || chr(10) || chr(10) || 'Percentual (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERCITEMGOP), ' ') || ' para: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 2 THEN
            V_DESC := 'Consumo' || chr(10) || chr(10) || 'Percentual (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERCITEMGOP), ' ') || ' para: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 3 THEN
            V_DESC := 'Mao de Obra' || chr(10) || chr(10) || 'Percentual (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERCITEMGOP), ' ') || ' para: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 5 THEN
            V_DESC := 'Despesas da Matriz' || chr(10) || chr(10) || 'Percentual (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERCITEMGOP), ' ') || ' para: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 6 THEN
            V_DESC := 'Despesas Diversas' || chr(10) || chr(10) || 'Percentual (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERCITEMGOP), ' ') || ' para: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 7 THEN
            V_DESC := 'Despesas Lanc. Entrada' || chr(10) || chr(10) || 'Percentual (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERCITEMGOP), ' ') || ' para: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 8 THEN
            V_DESC := 'Imposto a Recuperar' || chr(10) || chr(10) || 'Percentual (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERCITEMGOP), ' ') || ' para: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 9 THEN
            V_DESC := 'Impostos Sobre o Lucro' || chr(10) || chr(10) || 'Percentual (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERCITEMGOP), ' ') || ' para: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 10 THEN
            V_DESC := 'Investimentos' || chr(10) || chr(10) || 'Percentual (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERCITEMGOP), ' ') || ' para: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 11 THEN
            V_DESC := 'Depreciacao' || chr(10) || chr(10) || 'Percentual (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERCITEMGOP), ' ') || ' para: ' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         END IF;
      END IF;
   ELSIF INSERTING THEN
      V_TIPO         := '1';
      V_ITPESQ       := TO_CHAR(:NEW.NRPERCITEMGOP);
      V_CDOPERADOR   := :NEW.CDOPERINCLUSAO;

      NMOPERADOR(V_CDOPERADOR, V_NMOPERADOR);

      IF NVL(:OLD.VRPERCITEMGOP, 0) <> NVL(:NEW.VRPERCITEMGOP, 0)  THEN
         IF :NEW.NRSEQITEMORCA = 1 THEN
            V_DESC := chr(10) || 'Imposto' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 2 THEN
            V_DESC := chr(10) || 'Consumo' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 3 THEN
            V_DESC := chr(10) || 'Mao de Obra' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 5 THEN
            V_DESC := chr(10) || 'Despesas da Matriz' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 6 THEN
            V_DESC := chr(10) || 'Despesas Diversas' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 7 THEN
            V_DESC := chr(10) || 'Despesas Lanc. Entrada' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 8 THEN
            V_DESC := chr(10) || 'Imposto a Recuperar' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 9 THEN
            V_DESC := chr(10) || 'Impostos Sobre o Lucro' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 10 THEN
            V_DESC := chr(10) || 'Investimentos' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         ELSIF :NEW.NRSEQITEMORCA = 11 THEN
            V_DESC := chr(10) || 'Depreciacao' || NVL(TO_CHAR(:NEW.VRPERCITEMGOP), ' ');

         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
         ('PERCITEMGOP', 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;
/

-- VERSAO --
BEGIN ATUVEROBJ('LOG_GOP_PERCITEMGOP','6.19.xxx'); END;
/