create or replace TRIGGER LOG_GOP_PARFILIALROP
AFTER UPDATE OR INSERT
ON PARFILIALROP 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_DESCUPD                     VARCHAR2(500);
   V_CDFILLOGOPER                VARCHAR2(4);
   V_ITPESQ                      VARCHAR2(40);
   V_NMOPERADOR                  VARCHAR2(40);
   V_CDOPERADOR                  VARCHAR2(12);
   V_NMFILIAL                    VARCHAR2(30);
   V_CDFILIAL                    VARCHAR2(30);
   V_MES                         VARCHAR2(30);
   V_MES_NOVO                    VARCHAR2(30);
   V_NMTABELA                    VARCHAR2(50);
   V_NMTELA                      VARCHAR2(50);
   V_UNIDADE                     VARCHAR(100);
   -- Faturamento
   V_CDIMPOSTO                   VARCHAR2(50);
   V_CDIMPOSTO_NOVO              VARCHAR2(50);
   V_SGIMPOSTO                   VARCHAR2(50);
   V_SGIMPOSTO_NOVO              VARCHAR2(50);
   V_NMIMPOSTO                   VARCHAR2(50);
   V_NMIMPOSTO_NOVO              VARCHAR2(50);
   V_IDDETALEFET                 VARCHAR2(30);
   V_IDDETALEFET_NOVO            VARCHAR2(30);
   -- Geral:
   V_IDDTAPURFAT                 VARCHAR2(50);
   V_IDDTAPURFAT_NOVO            VARCHAR2(50);
   V_IDTPAPURACAO                VARCHAR2(30);
   V_IDTPAPURACAO_NOVO           VARCHAR2(30);
   V_CDGRUPPROD                  VARCHAR2(30);
   V_CDGRUPPROD_NOVO             VARCHAR2(30);
   V_CDTIPOOPER                  VARCHAR2(30);
   V_CDTIPOOPER_NOVO             VARCHAR2(30);
   V_NMTIPOOPER                  VARCHAR2(30);
   V_NMTIPOOPER_NOVO             VARCHAR2(30);
   V_IDVISAOROP                  VARCHAR2(30);
   V_IDVISAOROP_NOVO             VARCHAR2(30);
   V_NMGRUPPROD                  VARCHAR2(30);
   V_NMGRUPPROD_NOVO             VARCHAR2(30);
   -- Apuracao Consumo:
   V_IDRETIRADAROP               VARCHAR2(100);
   V_IDRETIRADAROP_NOVO          VARCHAR2(100);
   -- Apuracao Estoque:
   V_IDPERCONSROP                VARCHAR2(50);
   V_IDPERCONSROP_NOVO           VARCHAR2(50);
   -- Apuracao Despesas:
   V_NMGRUPDESP                  VARCHAR2(50);
   V_NMGRUPDESP_NOVO             VARCHAR2(50);
   V_IDDTAPUCTPAGAR              VARCHAR2(50);
   V_IDDTAPUCTPAGAR_NOVO         VARCHAR2(50);
   V_IDEXIBEDESPESAMOBRA         VARCHAR2(50);
   V_IDEXIBEDESPESAMOBRA_NOVO    VARCHAR2(50);
   V_IDTIPODEPRECROP             VARCHAR2(50);
   V_IDTIPODEPRECROP_NOVO        VARCHAR2(50);
   -- Deducoes da Receita:
   V_IDDATADEVOLROP              VARCHAR2(50);
   V_IDDATADEVOLROP_NOVO         VARCHAR2(50);


BEGIN
/* IDTIPOOPER - '1' - Inclusao, '2' - Alteracao, '3' - Exclusao*/
   V_TIPO         := '0';
   V_DESC         := '';
   V_ITPESQ       := '';
   V_NMOPERADOR   := '';
   V_CDOPERADOR   := '';
   V_CDFILLOGOPER := '';
   V_NMTABELA     := 'PARFILIALROP';
   V_UNIDADE      := '';

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

   V_DSSERVERRDM := 'ger80200_parametros_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 := chr(10) || 'Unidade: Padrao';
   ELSE
      SELECT MAX(CDFILIAL), MAX(NMFILIAL) INTO V_CDFILIAL, V_NMFILIAL FROM FILIAL WHERE CDFILIAL = :NEW.CDFILIAL;
      V_UNIDADE := chr(10) || 'Unidade: '|| V_CDFILIAL || ' - ' || V_NMFILIAL;
      END IF;

   IF UPDATING THEN

      V_TIPO         := '2';
      V_ITPESQ       := TO_CHAR(:OLD.CDFILIAL);
      V_CDOPERADOR   := :NEW.CDOPERULTATU;

      NMOPERADOR(V_CDOPERADOR, V_NMOPERADOR);

      /*
          - LOOP dividido em blocos, cada um com os campos de sua respectiva tela.                    
          - Nao e possivel alterar duas telas ao mesmo tempo.                                         
          - Se houver alteracao em um bloco, os outros seguintes nao precisam ser verificados.        
          - Fora do loop e realizado a insercao na LOGOPERAGES, dos dados modificados.                
      */

      LOOP    
      
        -- Inicio Geral

        IF NVL(:OLD.IDUTPADRROPFIL, '!') <> NVL (:NEW.IDUTPADRROPFIL, '!') THEN
            V_DESC := V_DESC || chr(10) || 'Utiliza parametrizacao padrao alterado de: ' || :OLD.IDUTPADRROPFIL || ' para: ' || :NEW.IDUTPADRROPFIL;
            END IF;

        IF NVL(:OLD.IDFECHDIAROP, '!') <> NVL (:NEW.IDFECHDIAROP, '!') THEN
            V_DESC := V_DESC || chr(10) || 'Apura resultado operacional da unidade no fechamento do dia/mes alterado de: ' || :OLD.IDFECHDIAROP || ' para: ' || :NEW.IDFECHDIAROP;
            END IF;

        IF NVL(:OLD.IDFILIALAGRROP, '!') <> NVL (:NEW.IDFILIALAGRROP, '!') THEN
            V_DESC := V_DESC || chr(10) || 'Considera unidades agregadas na apuracao da central alterado de: ' || :OLD.IDFILIALAGRROP || ' para: ' || :NEW.IDFILIALAGRROP;
            END IF;

        IF NVL(:OLD.IDTPAPURACAO, '!') <> NVL (:NEW.IDTPAPURACAO, '!') THEN
           V_IDTPAPURACAO := CASE :OLD.IDTPAPURACAO WHEN '1' THEN 'Apuracao do DRO'
                                                    WHEN '2' THEN 'Apuracao do DRF'
                                                    WHEN '3' THEN 'Ambos (DRO e DRF)'
                                                    ELSE :OLD.IDTPAPURACAO
                              END;
           V_IDTPAPURACAO_NOVO := CASE :NEW.IDTPAPURACAO WHEN '1' THEN 'Apuracao do DRO'
                                                         WHEN '2' THEN 'Apuracao do DRF'
                                                         WHEN '3' THEN 'Ambos (DRO e DRF)'
                                                         ELSE :NEW.IDTPAPURACAO
                                   END;
           V_DESC := V_DESC || chr(10) || 'Tipo de apuracao alterado de: ' || V_IDTPAPURACAO || ' para: ' || V_IDTPAPURACAO_NOVO;
           END IF;

        IF NVL(:OLD.CDGRUPPROD, 0) <> NVL (:NEW.CDGRUPPROD, 0) THEN
            SELECT MAX(CDGRUPPROD), MAX(NMGRUPPROD) INTO V_CDGRUPPROD, V_NMGRUPPROD FROM GRUPPROD WHERE CDGRUPPROD = :OLD.CDGRUPPROD;
            SELECT MAX(CDGRUPPROD), MAX(NMGRUPPROD) INTO V_CDGRUPPROD_NOVO, V_NMGRUPPROD_NOVO FROM GRUPPROD WHERE CDGRUPPROD = :NEW.CDGRUPPROD;
            V_DESC := V_DESC || chr(10) || 'Agrupamento de produto alterado de: ' || V_CDGRUPPROD || '-' || V_NMGRUPPROD || ' para: ' || V_CDGRUPPROD_NOVO || '-' ||  V_NMGRUPPROD_NOVO;
            END IF;

        IF (NVL(:OLD.CDTPOPTRANSFIL, 0) <> NVL (:NEW.CDTPOPTRANSFIL, 0)) OR (NVL(:OLD.IDENTRSAIDROP, 0) <> NVL (:NEW.IDENTRSAIDROP, 0)) THEN
            SELECT MAX(CDTIPOOPER), MAX(NMTIPOOPER) INTO V_CDTIPOOPER, V_NMTIPOOPER FROM TIPOOPERAC WHERE CDTIPOOPER = :OLD.CDTPOPTRANSFIL AND IDENTRSAIDOP = :OLD.IDENTRSAIDROP;
            SELECT MAX(CDTIPOOPER), MAX(NMTIPOOPER) INTO V_CDTIPOOPER_NOVO, V_NMTIPOOPER_NOVO FROM TIPOOPERAC WHERE CDTIPOOPER = :NEW.CDTPOPTRANSFIL AND IDENTRSAIDOP = :NEW.IDENTRSAIDROP;
            V_DESC := V_DESC || chr(10) || 'Tipo de Operacao utilizado para transferencia de produtos entre unidades alterado de: ' || V_NMTIPOOPER || ' para: ' || V_NMTIPOOPER_NOVO ;
            END IF;

        IF NVL(:OLD.IDVOLUNEGOCIO, '!') <> NVL (:NEW.IDVOLUNEGOCIO, '!') THEN
            V_DESC := V_DESC || chr(10) || 'Projecao Manual alterado de: ' || :OLD.IDVOLUNEGOCIO || ' para: ' || :NEW.IDVOLUNEGOCIO;
            END IF;

        IF NVL(:OLD.IDPROJECMANU, '!') <> NVL (:NEW.IDPROJECMANU, '!') THEN
            V_DESC := V_DESC || chr(10) || 'Volume de Negocios alterado de: ' || :OLD.IDPROJECMANU || ' para: ' || :NEW.IDPROJECMANU;
            END IF;

        IF NVL(:OLD.IDVISAOROP, '!') <> NVL (:NEW.IDVISAOROP, '!') THEN
           V_IDVISAOROP := CASE :OLD.IDVISAOROP WHEN 'PADRAO' THEN 'Padrao'
                                                WHEN 'PERSONALIZADO' THEN 'Personalizado'
                                                ELSE :OLD.IDVISAOROP
                            END;
           V_IDVISAOROP_NOVO := CASE :NEW.IDVISAOROP WHEN 'PADRAO' THEN 'Padrao'
                                                     WHEN 'PERSONALIZADO' THEN 'Personalizado'
                                                     ELSE :NEW.IDVISAOROP
                                 END;
            V_DESC := V_DESC || chr(10) || 'Demonstrativo de Resultado alterado de: ' || V_IDVISAOROP || ' para: ' || V_IDVISAOROP_NOVO;
            END IF;

        -- Fim Geral
        IF V_DESC IS NOT NULL THEN
            V_DESCUPD := V_DESCUPD || '-> Geral' || chr(10) || V_UNIDADE;
            EXIT;
        END IF;

      -- Inicio Faturamento
      IF NVL(:OLD.IDDTAPURFAT, 0) <> NVL (:NEW.IDDTAPURFAT, 0) THEN
         V_IDDTAPURFAT := CASE :OLD.IDDTAPURFAT WHEN 'R' THEN 'Data de Referencia'
                                                WHEN 'S' THEN 'Data de Saida'
                                                ELSE :OLD.IDDTAPURFAT
                           END;
         V_IDDTAPURFAT_NOVO := CASE :NEW.IDDTAPURFAT WHEN 'R' THEN 'Data de Referencia'
                                                     WHEN 'S' THEN 'Data de Saida'
                                                     ELSE :NEW.IDDTAPURFAT
                                END;
         V_DESC := V_DESC || chr(10) || 'Apuracao do Faturamento por alterado de: ' || V_IDDTAPURFAT || ' para: ' || V_IDDTAPURFAT_NOVO;

      END IF;

        IF NVL(:OLD.IDGERROPFOS, 0) <> NVL (:NEW.IDGERROPFOS, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Apura Vendas ForSale (Reducao Z) alterado de: ' || :OLD.IDGERROPFOS || ' para: ' || :NEW.IDGERROPFOS;
        END IF;

        IF NVL(:OLD.IDCONSFATUDIV, 0) <> NVL (:NEW.IDCONSFATUDIV, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Considera Faturamento Diversos para a unidade alterado de: ' || :OLD.IDCONSFATUDIV || ' para: ' || :NEW.IDCONSFATUDIV;
        END IF;

        IF NVL(:OLD.IDTIPOCALCTAXAADM, 0) <> NVL (:NEW.IDTIPOCALCTAXAADM, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Calculo % de Taxa Administrativa por alterado de: ' || :OLD.IDTIPOCALCTAXAADM || ' para: ' || :NEW.IDTIPOCALCTAXAADM;
        END IF;

        IF NVL(:OLD.IDCALCPERCENTFAT, 0) <> NVL (:NEW.IDCALCPERCENTFAT, 0) THEN
            V_DESC := V_DESC || chr(10) || '% Faturamento sobre alterado de: ' || :OLD.IDCALCPERCENTFAT || ' para: ' || :NEW.IDCALCPERCENTFAT;
        END IF;

        IF NVL(:OLD.IDFATUROP, 0) <> NVL (:NEW.IDFATUROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Composicao do Faturamento alterado de: ' || :OLD.IDFATUROP || ' para: ' || :NEW.IDFATUROP;
        END IF;

        IF NVL(:OLD.IDCONSNFEAUTORIZA, 0) <> NVL (:NEW.IDCONSNFEAUTORIZA, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Considera NF Autorizada pela Sefaz quando Modelo Eletronico alterado de: ' || :OLD.IDCONSNFEAUTORIZA || ' para: ' || :NEW.IDCONSNFEAUTORIZA;
        END IF;

        IF NVL(:OLD.IDLANCIMPPAG, 0) <> NVL (:NEW.IDLANCIMPPAG, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Lancamentos de Impostos no Contas a Pagar alterado de: ' || :OLD.IDLANCIMPPAG || ' para: ' || :NEW.IDLANCIMPPAG;
        END IF;

        IF NVL(:OLD.IDCALCIMPFAT, 0) <> NVL (:NEW.IDCALCIMPFAT, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Realizar a parametrizacao por alterado de: ' || :OLD.IDCALCIMPFAT || ' para: ' || :NEW.IDCALCIMPFAT;
        END IF;

        IF NVL(:OLD.IDPERCFIXIMPREC, 0) <> NVL (:NEW.IDPERCFIXIMPREC, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Considera % Fixo para Imposto a Recuperar alterado de: ' || :OLD.IDPERCFIXIMPREC || ' para: ' || :NEW.IDPERCFIXIMPREC;
        END IF;

        IF NVL(:OLD.VRPERIMPRECUROP, 0) <> NVL (:NEW.VRPERIMPRECUROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Imposto a Recuperar (%) alterado de: ' || NVL(TO_CHAR(:OLD.VRPERIMPRECUROP), '" "') || ' para: ' || NVL(TO_CHAR(:NEW.VRPERIMPRECUROP), '" "');
        END IF;

        IF NVL(:OLD.VRCREDICMSROP, 0) <> NVL (:NEW.VRCREDICMSROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Credito de ICMS(%) alterado de: ' || :OLD.VRCREDICMSROP || ' para: ' || :NEW.VRCREDICMSROP;
        END IF;

        IF NVL(:OLD.CDIMPOSTOROP, 0) <> NVL (:NEW.CDIMPOSTOROP, 0) THEN
            SELECT MAX(CDIMPOSTO), MAX(SGIMPOSTO), MAX(NMIMPOSTO) INTO V_CDIMPOSTO, V_SGIMPOSTO, V_NMIMPOSTO FROM IMPOSTO WHERE CDIMPOSTO = :OLD.CDIMPOSTOROP;
            SELECT MAX(CDIMPOSTO), MAX(SGIMPOSTO), MAX(NMIMPOSTO) INTO V_CDIMPOSTO_NOVO, V_SGIMPOSTO_NOVO, V_NMIMPOSTO_NOVO FROM IMPOSTO WHERE CDIMPOSTO = :NEW.CDIMPOSTOROP;
            V_DESC := V_DESC || chr(10) || 'Imposto alterado de: ' || V_SGIMPOSTO || '-' || V_NMIMPOSTO || ' para: ' || V_SGIMPOSTO_NOVO || '-' || V_NMIMPOSTO_NOVO;
        END IF;

        IF NVL(:OLD.IDPERFIXCALCIMP, 0) <> NVL (:NEW.IDPERFIXCALCIMP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Considera percentual fixo para calculo do imposto alterado de: ' || :OLD.IDPERFIXCALCIMP || ' para: ' || :NEW.IDPERFIXCALCIMP;
        END IF;

        IF NVL(:OLD.IDSERVFATROP, '!') <> NVL (:NEW.IDSERVFATROP, '!') THEN
            V_NMTELA := '-> Faturamento -> Medicao de Efetivo -> Geral';
            V_DESC := V_DESC || chr(10) || 'Considera todos os servicos da unidade alterado de: ' || :OLD.IDSERVFATROP || ' para: ' || :NEW.IDSERVFATROP;
        END IF;

        IF NVL(:OLD.IDDETALEFET, '!') <> NVL (:NEW.IDDETALEFET, '!') THEN
            V_NMTELA := '-> Faturamento -> Medicao de Efetivo -> Geral';
            V_IDDETALEFET := CASE :OLD.IDDETALEFET WHEN 'Q' THEN 'Volume'
                                                   WHEN 'V' THEN 'Valor'
                                                   ELSE :OLD.IDDETALEFET
                              END;
            V_IDDETALEFET_NOVO := CASE :NEW.IDDETALEFET WHEN 'Q' THEN 'Volume'
                                                        WHEN 'V' THEN 'Valor'
                                                        ELSE :NEW.IDDETALEFET
                              END;
            V_DESC := V_DESC || chr(10) || 'Tipo de destaque alterado de: ' || V_IDDETALEFET || ' para: ' || V_IDDETALEFET_NOVO;
        END IF;

        -- Fim Faturamento

        /*
            se existir alteracao na tela faturamento, as outras telas nao foram modificadas, logo,
            a verificacao de alteracao delas nao e necessaria. O mesmo vale para para os outros blocos.
        */
        IF V_DESC IS NOT NULL THEN
            V_DESCUPD :=  V_DESCUPD || NVL(V_NMTELA, '-> Faturamento -> Geral') || chr(10) || V_UNIDADE;
            EXIT;
        END IF;
        -- Inicio Apuracao Consumo

        IF NVL(:OLD.IDRETIRADAROP, '!') <> NVL (:NEW.IDRETIRADAROP, '!') THEN
           V_IDRETIRADAROP := CASE :OLD.IDRETIRADAROP WHEN 'C' THEN 'Compras N'
                                                     WHEN 'E' THEN 'Retirada de Estoque'
                                                     WHEN 'P' THEN 'Retirada do Planejamento'
                                                     WHEN 'A' THEN 'Retirada de Estoque + Retirada do Planejamento'
                                                     WHEN 'R' THEN 'Estoque Inicial + Compras NF - Saidas NF - Estoque Final'
                                                     ELSE :OLD.IDRETIRADAROP
                                 END;
           V_IDRETIRADAROP_NOVO := CASE :NEW.IDRETIRADAROP WHEN 'C' THEN 'Compras N'
                                                           WHEN 'E' THEN 'Retirada de Estoque'
                                                           WHEN 'P' THEN 'Retirada do Planejamento'
                                                           WHEN 'A' THEN 'Retirada de Estoque + Retirada do Planejamento'
                                                           WHEN 'R' THEN 'Estoque Inicial + Compras NF - Saidas NF - Estoque Final'
                                                           ELSE :NEW.IDRETIRADAROP
                                    END;
            V_DESC := V_DESC || chr(10) || 'Consumo com base em: ' || '"' ||V_IDRETIRADAROP || '"' || ' para: ' || '"' || V_IDRETIRADAROP_NOVO || '"';
            END IF;

        IF NVL(:OLD.IDSERVRETROP, '!') <> NVL (:NEW.IDSERVRETROP, '!') THEN
            V_DESC := V_DESC || chr(10) || 'Considera todos os servicos da unidade: ' || :OLD.IDSERVRETROP || ' para: ' || :NEW.IDSERVRETROP;
            END IF;

        -- Fim Apuracao Consumo

        IF V_DESC IS NOT NULL THEN
            V_DESCUPD := 'Apuracao Consumo -> Geral' || chr(10) || V_DESCUPD;
            EXIT;
        END IF;

        -- Inicio Apuracao Estoque


        IF NVL(:OLD.IDINVINICROP, 0) <> NVL(:NEW.IDINVINICROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Inventario Inicial alterado de: ' || :OLD.IDINVINICROP || ' para: ' || :NEW.IDINVINICROP;
            END IF;

        IF NVL(:OLD.IDIMPLANTROP, 0) <> NVL(:NEW.IDIMPLANTROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Implantacao alterado de: ' || :OLD.IDIMPLANTROP || ' para: ' || :NEW.IDIMPLANTROP;
            END IF;

        IF NVL(:OLD.IDINVFINAROP, 0) <> NVL(:NEW.IDINVFINAROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Inventario Final alterado de: ' || :OLD.IDINVFINAROP || ' para: ' || :NEW.IDINVFINAROP;
            END IF;

        IF NVL(:OLD.IDAJUSTEROP, 0) <> NVL(:NEW.IDAJUSTEROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Destacar ajuste de estoque no relatorio alterado de: ' || :OLD.IDAJUSTEROP || ' para: ' || :NEW.IDAJUSTEROP;
            END IF;

        IF NVL(:OLD.IDPERCONSROP, '!') <> NVL(:NEW.IDPERCONSROP, '!') THEN
           V_IDPERCONSROP := CASE :OLD.IDPERCONSROP WHEN 'A' THEN 'Considera consumo atual'
                                                WHEN 'P' THEN 'Considera consumo anterior'
                                                ELSE :OLD.IDPERCONSROP
                           END;
           V_IDPERCONSROP_NOVO := CASE :NEW.IDPERCONSROP WHEN 'A' THEN 'Considera consumo atual'
                                                     WHEN 'P' THEN 'Considera consumo anterior'
                                                     ELSE :NEW.IDPERCONSROP
                                END;
            V_DESC := V_DESC || chr(10) || 'Periodo Consumo alterado de: ' || V_IDPERCONSROP || ' para: ' || V_IDPERCONSROP_NOVO;
            END IF;
        IF NVL(:OLD.NRMESCONSROP, 0) <> NVL(:NEW.NRMESCONSROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Numero de Meses de Consumo alterado de: ' || :OLD.NRMESCONSROP || ' para: ' || :NEW.NRMESCONSROP;
            END IF;

        IF NVL(:OLD.IDNRDIASUTEST, 0) <> NVL(:NEW.IDNRDIASUTEST, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Calcula Dias de Estoque sobre Dias Realizados alterado de: ' || :OLD.IDNRDIASUTEST || ' para: ' || :NEW.IDNRDIASUTEST;
            END IF;

        IF NVL(:OLD.IDCOMPRAROP, 0) <> NVL(:NEW.IDCOMPRAROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Entradas por Compras alterado de: ' || :OLD.IDCOMPRAROP || ' para: ' || :NEW.IDCOMPRAROP;
            END IF;

        IF NVL(:OLD.IDNFSAIDAROP, 0) <> NVL(:NEW.IDNFSAIDAROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Saida por Devolucao alterado de: ' || :OLD.IDNFSAIDAROP || ' para: ' || :NEW.IDNFSAIDAROP;
            END IF;

        -- Fim Apuracao Estoque

        IF V_DESC IS NOT NULL THEN
            V_DESCUPD := 'Apuracao Estoque -> Lancamentos -> Geral' || chr(10) || V_DESCUPD;
            EXIT;
        END IF;

        -- Inicio Apuracao Despesas

        IF NVL(:OLD.IDDTAPUCTPAGAR, 0) <> NVL(:NEW.IDDTAPUCTPAGAR, 0) THEN
            V_IDDTAPUCTPAGAR := CASE :OLD.IDDTAPUCTPAGAR WHEN 'ENTRADA' THEN 'Entrada'
                                                         WHEN 'VENCIMENTO' THEN 'Vencimento'
                                                         WHEN 'BAIXA' THEN 'Baixa'
                                                         ELSE :OLD.IDDTAPUCTPAGAR
                                 END;                                     
            V_IDDTAPUCTPAGAR_NOVO := CASE :NEW.IDDTAPUCTPAGAR WHEN 'ENTRADA' THEN 'Entrada'
                                                         WHEN 'VENCIMENTO' THEN 'Vencimento'
                                                         WHEN 'BAIXA' THEN 'Baixa'
                                                         ELSE :NEW.IDDTAPUCTPAGAR
                                 END;
            V_DESC := V_DESC || chr(10) || 'Apuracao de Despesas no Contas a Pagar por data alterado de: ' || V_IDDTAPUCTPAGAR || ' para: ' || V_IDDTAPUCTPAGAR_NOVO;
            END IF;

        IF NVL(:OLD.IDEXIBEDESPESAMOBRA, 0) <> NVL(:NEW.IDEXIBEDESPESAMOBRA, 0) THEN
            V_IDEXIBEDESPESAMOBRA := CASE :OLD.IDEXIBEDESPESAMOBRA WHEN 'TOTAL_PERIODO' THEN 'Total do Periodo'
                                                                   WHEN 'PROPORCIONAL_DIAS' THEN 'Proporcional aos dias do Periodo'
                                                                   ELSE :OLD.IDEXIBEDESPESAMOBRA
                                      END;
            V_IDEXIBEDESPESAMOBRA_NOVO := CASE :NEW.IDEXIBEDESPESAMOBRA WHEN 'TOTAL_PERIODO' THEN 'Total do Periodo'
                                                                        WHEN 'PROPORCIONAL_DIAS' THEN 'Proporcional aos dias do Periodo'
                                                                        ELSE :NEW.IDEXIBEDESPESAMOBRA
                                           END;
            V_DESC := V_DESC || chr(10) || 'Despesas / Mao de Obra no Resumo alterado de: ' || V_IDEXIBEDESPESAMOBRA || ' para: ' || V_IDEXIBEDESPESAMOBRA_NOVO;
            END IF;

        IF NVL(:OLD.IDAPURDEPRECROP, 0) <> NVL(:NEW.IDAPURDEPRECROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Apura Depreciacao de Bem (Ativos) alterado de: ' || :OLD.IDAPURDEPRECROP || ' para: ' || :NEW.IDAPURDEPRECROP;
            END IF;

        IF NVL(:OLD.IDTIPODEPRECROP, 0) <> NVL(:NEW.IDTIPODEPRECROP, 0) THEN
            V_IDTIPODEPRECROP := CASE :OLD.IDTIPODEPRECROP WHEN 'C' THEN 'Contabil'
                                                                    WHEN 'F' THEN 'Fiscal'
                                                                    ELSE :OLD.IDTIPODEPRECROP
                                           END;
            V_IDTIPODEPRECROP_NOVO := CASE :NEW.IDTIPODEPRECROP WHEN 'C' THEN 'Contabil'
                                                                    WHEN 'F' THEN 'Fiscal'
                                                                    ELSE :NEW.IDTIPODEPRECROP
                                           END;
            V_DESC := V_DESC || chr(10) || 'Tipo de Depreciacao alterado de: ' || V_IDTIPODEPRECROP || ' para: ' || V_IDTIPODEPRECROP_NOVO;
            END IF;

        IF NVL(:OLD.IDDESPMOBROP, 0) <> NVL(:NEW.IDDESPMOBROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Lancamentos de Despesas com Mao de Obra (Manual) alterado de: ' || :OLD.IDDESPMOBROP || ' para: ' || :NEW.IDDESPMOBROP;
            END IF;

        IF NVL(:OLD.IDDESPDIVROP, 0) <> NVL(:NEW.IDDESPDIVROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Lancamentos de Despesa Diversas (Manual) alterado de: ' || :OLD.IDDESPDIVROP || ' para: ' || :NEW.IDDESPDIVROP;
            END IF;

        IF NVL(:OLD.IDAPUINVFILROP, 0) <> NVL(:NEW.IDAPUINVFILROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Lancamentos de Investimento (Manual) alterado de: ' || :OLD.IDAPUINVFILROP || ' para: ' || :NEW.IDAPUINVFILROP;
            END IF;

        IF NVL(:OLD.CDGRUPDESP, 0) <> NVL(:NEW.CDGRUPDESP, 0) THEN
          BEGIN
            SELECT MAX(NMGRUPDESP) INTO V_NMGRUPDESP FROM GRUPDESP WHERE CDGRUPDESP = :OLD.CDGRUPDESP;
            SELECT MAX(NMGRUPDESP) INTO V_NMGRUPDESP_NOVO FROM GRUPDESP WHERE CDGRUPDESP = :NEW.CDGRUPDESP;
         EXCEPTION
           WHEN NO_DATA_FOUND THEN 
            V_NMGRUPDESP      :=NULL;
            V_NMGRUPDESP_NOVO :=NULL;
            END;
            V_DESC := V_DESC || chr(10) || 'Agrupamento de Despesas Diversas alterado de: ' || :OLD.CDGRUPDESP || '-' || V_NMGRUPDESP || ' para: ' || :NEW.CDGRUPDESP || '-' || V_NMGRUPDESP_NOVO;
            END IF;

        IF NVL(:OLD.IDDESPENTROP, 0) <> NVL(:NEW.IDDESPENTROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Despesas com Lancamentos de Entrada alterado de: ' || :OLD.IDDESPENTROP || ' para: ' || :NEW.IDDESPENTROP;
            END IF;

        IF NVL(:OLD.IDCONSPERRATFIL, 0) <> NVL(:NEW.IDCONSPERRATFIL, 0) THEN

        IF NVL(:OLD.IDAPURDESPENTRMO, 0) <> NVL(:NEW.IDAPURDESPENTRMO, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Considera Rateio Despesas de Entrada por Unidade alterado de: ' || :OLD.IDCONSPERRATFIL || ' para: ' || :NEW.IDCONSPERRATFIL;
            END IF;
            V_DESC := V_DESC || chr(10) || 'Mao de Obra com Lancamento de Entrada alterado de: ' || :OLD.IDAPURDESPENTRMO || ' para: ' || :NEW.IDAPURDESPENTRMO;
            END IF;

        IF NVL(:OLD.IDCONSRATENTRMO, 0) <> NVL(:NEW.IDCONSRATENTRMO, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Considera Rateio Mao de Obra por Unidade alterado de: ' || :OLD.IDCONSRATENTRMO || ' para: ' || :NEW.IDCONSRATENTRMO;
            END IF;

        IF NVL(:OLD.IDAPUCTPGROP, 0) <> NVL(:NEW.IDAPUCTPGROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Lancamentos de Despesas diversas no Contas a Pagar alterado de: ' || :OLD.IDAPUCTPGROP || ' para: ' || :NEW.IDAPUCTPGROP;
            END IF;

        IF NVL(:OLD.IDDESPMOBROPCTB, 0) <> NVL(:NEW.IDDESPMOBROPCTB, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Lancamentos de Mao de Obra no Contabilidade alterado de: ' || :OLD.IDDESPMOBROPCTB || ' para: ' || :NEW.IDDESPMOBROPCTB;
            END IF;

        IF NVL(:OLD.IDAPUMOCTPGROP, 0) <> NVL(:NEW.IDAPUMOCTPGROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Lancamentos de Mao de Obra no Contas a Pagar alterado de: ' || :OLD.IDAPUMOCTPGROP || ' para: ' || :NEW.IDAPUMOCTPGROP;
            END IF;

        IF NVL(:OLD.IDAPURAINVCTPAGROP, 0) <> NVL(:NEW.IDAPURAINVCTPAGROP, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Lancamentos de Investimentos no Contas a Pagar alterado de: ' || :OLD.IDAPURAINVCTPAGROP || ' para: ' || :NEW.IDAPURAINVCTPAGROP;
            END IF;

        IF NVL(:OLD.IDCONSLANCAJUSPAG, 0) <> NVL(:NEW.IDCONSLANCAJUSPAG, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Contas a Pagar alterado de: ' || :OLD.IDCONSLANCAJUSPAG || ' para: ' || :NEW.IDCONSLANCAJUSPAG;
            END IF;

        IF NVL(:OLD.IDCONSLANCAJUSREC, 0) <> NVL(:NEW.IDCONSLANCAJUSREC, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Contas a Receber alterado de: ' || :OLD.IDCONSLANCAJUSREC || ' para: ' || :NEW.IDCONSLANCAJUSREC;
            END IF;

        IF NVL(:OLD.IDCONSCREDBCO, 0) <> NVL(:NEW.IDCONSCREDBCO, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Credito alterado de: ' || :OLD.IDCONSCREDBCO || ' para: ' || :NEW.IDCONSCREDBCO;
            END IF;

        -- Fim Apuracao Despesas

        IF V_DESC IS NOT NULL THEN
            V_DESCUPD := 'Apuracao Despesa -> Geral' || chr(10) || V_DESCUPD;
            EXIT;
        END IF;

        -- Inicio Deducoes da Receita

        IF NVL(:OLD.IDEXIBEBENEFDEDU, 0) <> NVL(:NEW.IDEXIBEBENEFDEDU, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Exibir Beneficiario / Cliente alterado de: ' || :OLD.IDEXIBEBENEFDEDU || ' para: ' || :NEW.IDEXIBEBENEFDEDU;
            END IF;
        IF NVL(:OLD.IDEXIBENUMNFDEDU, 0) <> NVL(:NEW.IDEXIBENUMNFDEDU, 0) THEN
            V_DESC := V_DESC || chr(10) || 'Exibir Numero da Nota Fiscal alterado de: ' || :OLD.IDEXIBENUMNFDEDU || ' para: ' || :NEW.IDEXIBENUMNFDEDU;
            END IF;
        IF NVL(:OLD.IDDATADEVOLROP, 0) <> NVL(:NEW.IDDATADEVOLROP, 0) THEN
            V_IDDATADEVOLROP := CASE :OLD.IDDATADEVOLROP WHEN 'SAIDA_NF_ORIGEM' THEN 'Data da Saida NF Origem'
                                                         WHEN 'SAIDA_NF' THEN 'Data de Saida NF'
                                                         ELSE :OLD.IDDATADEVOLROP
                                 END;
            V_IDDATADEVOLROP_NOVO := CASE :NEW.IDDATADEVOLROP WHEN 'SAIDA_NF_ORIGEM' THEN 'Data da Saida NF Origem'
                                                              WHEN 'SAIDA_NF' THEN 'Data de Saida NF'
                                                              ELSE :NEW.IDDATADEVOLROP
                                      END;
            V_DESC := V_DESC || chr(10) || 'Data de Devolucao alterado de: ' || V_IDDATADEVOLROP || ' para: ' || V_IDDATADEVOLROP_NOVO;
            END IF;

        -- Fim Deducoes da Receita

        IF V_DESC IS NOT NULL THEN
            V_DESCUPD := 'Deducoes da Receita -> Geral' || chr(10) || V_DESCUPD;
        END IF;

        EXIT;
    END LOOP;

        -- INSERT FINAL
        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
                (V_NMTABELA, 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 IF;

END;