CREATE OR REPLACE TRIGGER LOG_FIS_DADOSFISCREGRA
AFTER DELETE OR INSERT OR UPDATE
ON DADOSFISCREGRA 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(3000);
  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
      V_DESC   := 'CST ='                 || :NEW.CDSITUTRIB      ||' '||
                  'Cod. Fiscal ='         || :NEW.CDFISCAL        ||' '||
                  'Tipo Origem = '        || :NEW.IDTIPOORIGFISC  ||' '||
                  'Pais Origem ='         || :NEW.CDPAISORIG      ||' '||
                  'UF   Origem ='         || :NEW.SGESTAORIG      ||' '||
                  'Municipio Orig. = '    || :NEW.CDMUNIORIG      ||' '||
                  'Tipo Destino = '       || :NEW.IDTIPODESTFISC  ||' '||
                  'Pais Destino = '       || :NEW.CDPAISDEST      ||' '||
                  'UF   Destino = '       || :NEW.SGESTADEST      ||' '||
                  'Municipio Dest. = '    || :NEW.CDMUNIDEST      ||' '||
                  'Aliquota = '           || :NEW.VRALIQUOTA      ||' '||
                  'BC ICMS = '            || :NEW.IDMODBCNFE      ||' '||
                  'BC ICMS ST = '         || :NEW.IDMODBCSTNFE    ||' '||
                  'Motivo Desoneracao = ' || :NEW.IDMOTIDESSTNFE  ||' '||
                  'Tipo de Credito = '    || :NEW.CDTPCRPICOSTNFE ||' '||
                  'Natureza BC = '        || :NEW.CDNATUBCPCSTNFE ||' '||
                  'Faixa Inicial = '      || :NEW.VRINIFAIXA      ||' '||
                  'Faixa Final = '        || :NEW.VRFIMFAIXA      ||' '||
                  'Parcela a Deduzir = '  || :NEW.VRPARDEDUZ      ||' '||
                  '1 Red. BC = '         || :NEW.VR1PERREDBC     ||' '||
                  'Red. BC = '            || :NEW.VRPERREDBC      ||' '||
                  'Majoracao ST = '       || :NEW.VRPBCSUBTRIB    ||' '||
                  'Tratamento Doc. = '    || :NEW.IDTRATIMPST     ||' '||
                  'PMC = '                || :NEW.IDPMCBASECA     ||' '||
                  'Interestadual = '      || :NEW.IDCSTINTEREST   ||' '||
                  'Internacional = '      || :NEW.IDCSTINTERNA    ||' '||
                  'Natureza Receita = '   || :NEW.CDNATUREC       ||' '||
                  'Detalhamento = '       || :NEW.CDDETALHEFISC   ||' '||
                  'DesRedBCFECP = '       || :NEW.IDNUTREDBCFECP;
      V_ITPESQ        := :NEW.CDREGRAFISC||:NEW.CDIMPOSTO||:NEW.NRSEQDADOSFISC;
      V_IDTIPOOPER    := '2';
   ELSE
      IF INSERTING THEN
         V_DESC   := 'CST = '                || :NEW.CDSITUTRIB      ||' '||
                     'Cod. Fiscal = '        || :NEW.CDFISCAL        ||' '||
                     'Tipo Origem = '        || :NEW.IDTIPOORIGFISC  ||' '||
                     'Pais Origem = '        || :NEW.CDPAISORIG      ||' '||
                     'UF   Origem = '        || :NEW.SGESTAORIG      ||' '||
                     'Municipio Orig. = '    || :NEW.CDMUNIORIG      ||' '||
                     'Tipo Destino = '       || :NEW.IDTIPODESTFISC  ||' '||
                     'Pais Destino = '       || :NEW.CDPAISDEST      ||' '||
                     'UF   Destino = '       || :NEW.SGESTADEST      ||' '||
                     'Municipio Dest. = '    || :NEW.CDMUNIDEST      ||' '||
                     'Aliquota = '           || :NEW.VRALIQUOTA      ||' '||
                     'BC ICMS = '            || :NEW.IDMODBCNFE      ||' '||
                     'BC ICMS ST = '         || :NEW.IDMODBCSTNFE    ||' '||
                     'Motivo Desoneracao = ' || :NEW.IDMOTIDESSTNFE  ||' '||
                     'Tipo de Credito = '    || :NEW.CDTPCRPICOSTNFE ||' '||
                     'Natureza BC = '        || :NEW.CDNATUBCPCSTNFE ||' '||
                     'Faixa Inicial = '      || :NEW.VRINIFAIXA      ||' '||
                     'Faixa Final = '        || :NEW.VRFIMFAIXA      ||' '||
                     'Parcela a Deduzir = '  || :NEW.VRPARDEDUZ      ||' '||
                     '1 Red. BC = '         || :NEW.VR1PERREDBC     ||' '||
                     'Red. BC = '            || :NEW.VRPERREDBC      ||' '||
                     'Majoracao ST = '       || :NEW.VRPBCSUBTRIB    ||' '||
                     'Tratamento Doc. = '    || :NEW.IDTRATIMPST     ||' '||
                     'PMC = '                || :NEW.IDPMCBASECA     ||' '||
                     'Interestadual = '      || :NEW.IDCSTINTEREST   ||' '||
                     'Internacional = '      || :NEW.IDCSTINTERNA    ||' '||
                     'Natureza Receita = '   || :NEW.CDNATUREC       ||' '||
                     'Detalhamento = '       || :NEW.CDDETALHEFISC   ||' '||
                     'DesRedBCFECP = '       || :NEW.IDNUTREDBCFECP;
         V_ITPESQ        := :NEW.CDREGRAFISC||:NEW.CDIMPOSTO||:NEW.NRSEQDADOSFISC;
         V_IDTIPOOPER   := '1';
      ELSE
         IF DELETING THEN
            V_DESC   := 'CST = '                || :OLD.CDSITUTRIB      ||' '||
                        'Cod. Fiscal = '        || :OLD.CDFISCAL        ||' '||
                        'Tipo Origem = '        || :OLD.IDTIPOORIGFISC  ||' '||
                        'Pais Origem = '        || :OLD.CDPAISORIG      ||' '||
                        'UF   Origem = '        || :OLD.SGESTAORIG      ||' '||
                        'Municipio Orig. = '    || :OLD.CDMUNIORIG      ||' '||
                        'Tipo Destino = '       || :OLD.IDTIPODESTFISC  ||' '||
                        'Pais Destino = '       || :OLD.CDPAISDEST      ||' '||
                        'UF   Destino = '       || :OLD.SGESTADEST      ||' '||
                        'Municipio Dest. = '    || :OLD.CDMUNIDEST      ||' '||
                        'Aliquota = '           || :OLD.VRALIQUOTA      ||' '||
                        'BC ICMS = '            || :OLD.IDMODBCNFE      ||' '||
                        'BC ICMS ST = '         || :OLD.IDMODBCSTNFE    ||' '||
                        'Motivo Desoneracao = ' || :OLD.IDMOTIDESSTNFE  ||' '||
                        'Tipo de Credito = '    || :OLD.CDTPCRPICOSTNFE ||' '||
                        'Natureza BC = '        || :OLD.CDNATUBCPCSTNFE ||' '||
                        'Faixa Inicial = '      || :OLD.VRINIFAIXA      ||' '||
                        'Faixa Final = '        || :OLD.VRFIMFAIXA      ||' '||
                        'Parcela a Deduzir = '  || :OLD.VRPARDEDUZ      ||' '||
                        '1 Red. BC = '         || :OLD.VR1PERREDBC     ||' '||
                        'Red. BC = '            || :OLD.VRPERREDBC      ||' '||
                        'Majoracao ST = '       || :OLD.VRPBCSUBTRIB    ||' '||
                        'Tratamento Doc. = '    || :OLD.IDTRATIMPST     ||' '||
                        'PMC = '                || :OLD.IDPMCBASECA     ||' '||
                        'Interestadual = '      || :OLD.IDCSTINTEREST   ||' '||
                        'Internacional = '      || :OLD.IDCSTINTERNA    ||' '||
                        'Natureza Receita = '   || :OLD.CDNATUREC       ||' '||
                        'Detalhamento = '       || :OLD.CDDETALHEFISC   ||' '||
                        'DesRedBCFECP = '       || :OLD.IDNUTREDBCFECP;
            V_ITPESQ     := :OLD.CDREGRAFISC||:OLD.CDIMPOSTO||:OLD.NRSEQDADOSFISC;
            V_IDTIPOOPER := '3';
         END IF;
      END IF;
   END IF;
   V_DESC := SUBSTR(V_DESC, 1, 3000);
   INSERT INTO LOGREGRAFISCAL
      (NMTABELA,
       DTOPERACAO,
       NMRESPOPER,
       IDTIPOOPER,
       DSOPERACAO,
       CDPESQITEM,
       DSRDMUSUOPER,
       DSENDUSUOPER,
       DSNMUSUOPER,
       DSMETUSUOPER,
       CDORESPOPER)
    VALUES
      ('DADOSFISCREGRA',
       SYSDATE,
       NVL(V_NMOPERADOR,' '),
       V_IDTIPOOPER,
       V_DESC,
       V_ITPESQ,
       V_DSSERVERRDM,
       V_DSREMOTEADDR,
       V_DSREMOTEHOST,
       V_DSSERVMETHOD,
       V_DSREMOTEOPER);
END;
/