/* Tabela CLIENFILIAL: TABELA DE CLIENTES POR FILIAL*/
/* Descri��o: A trigger insere registros na tabela LOGOPERAVND a partir de altera��es na tabela CLIENFILIAL */
/* Objetivo: Gerar um log que vai registrar as altera��es na CLIENFILIAL,
             utilizando a tabela de Logs de Opera��es do VND*/
CREATE OR REPLACE TRIGGER LOG_VND_CLIENFILIAL
AFTER DELETE OR INSERT OR UPDATE
ON CLIENFILIAL 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(1000);
  V_ITPESQ       VARCHAR2(40);
  V_NMOPERADOR   VARCHAR2(40);
  V_IDTIPOOPER   VARCHAR2(1);
BEGIN
/* IDTIPOOPER - '1' - Inclus�o, '2' - Altera��o, '3' - Exclus�o*/
   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
		IF NVL(:NEW.CDFILIAL ,'NULL') <> NVL(:OLD.CDFILIAL ,'NULL') THEN
			V_DESC := 'Filial ' || '' || NVL(:NEW.CDFILIAL,'');
		END IF;
		IF NVL(:NEW.CDCLIENTE ,'NULL') <> NVL(:OLD.CDCLIENTE ,'NULL') THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'Cd Cliente  ' || '' || NVL(:NEW.CDCLIENTE,'');
		END IF;
		IF NVL(:NEW.IDCLIENPRIN ,'NULL') <> NVL(:OLD.IDCLIENPRIN ,'NULL') THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'Id Cliente Principal ' || '' || NVL(:NEW.IDCLIENPRIN,'' ); 
		END IF;
		IF NVL(:NEW.IDUTILADIANT ,'NULL') <> NVL(:OLD.IDUTILADIANT ,'NULL') THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'Id Uti adiantamento ' || '' || NVL(:NEW.IDUTILADIANT,'' );
		END IF;
		IF NVL(:NEW.VRPERATDESP ,999999) <> NVL(:OLD.VRPERATDESP ,999999) THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'Tx Desp por Cliente ' || '' || NVL(:NEW.VRPERATDESP ,'' );
		END IF;
		IF NVL(:NEW.DTULTATUCLIF ,TO_DATE('01/01/0001','DD/MM/YYYY')) <> NVL(:OLD.DTULTATUCLIF ,TO_DATE('01/01/0001','DD/MM/YYYY')) THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'Dt Ult Atu registro' || '' || NVL(:NEW.DTULTATUCLIF,'' );
		END IF;
		IF NVL(:NEW.CDPERIENTR ,'NULL') <> NVL(:OLD.CDPERIENTR ,'NULL') THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'CDPERIENTR ' || '' || NVL(:NEW.CDPERIENTR,'' );
		END IF;
		IF NVL(:NEW.IDUTCONTCLPR ,'NULL') <> NVL(:OLD.IDUTCONTCLPR ,'NULL') THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'Id Contrato Cli ' || '' || NVL(:NEW.IDUTCONTCLPR,'' );
		END IF;
		IF NVL(:NEW.IDPERIODFATC ,'NULL') <> NVL(:OLD.IDPERIODFATC ,'NULL') THEN 
            V_DESC := NVL(V_DESC,'') || ' ' || 'Id Per Faturamento ' || '' || NVL(:NEW.IDPERIODFATC,'' );
		END IF;
		IF NVL(:NEW.CDGRUPOFISC ,'NULL') <> NVL(:OLD.CDGRUPOFISC ,'NULL') THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'CDGRUPOFISC ' || '' || NVL(:NEW.CDGRUPOFISC,'' );
		END IF;
		IF NVL(:NEW.DSTIPFATURCLIE ,'NULL') <> NVL(:OLD.DSTIPFATURCLIE ,'NULL') THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'Tp Fat Cli na Filial ' || '' || NVL(:NEW.DSTIPFATURCLIE,'' );
		END IF;
		IF NVL(:NEW.CDTIPFATURCLIE ,'NULL') <> NVL(:OLD.CDTIPFATURCLIE ,'NULL') THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'Cd Tp Fat Cli na Filial '|| '' || NVL(:NEW.CDTIPFATURCLIE,'' );
		END IF;
		IF NVL(:NEW.DTVENCFORMCLIE ,TO_DATE('01/01/0001','DD/MM/YYYY')) <> NVL(:OLD.DTVENCFORMCLIE ,TO_DATE('01/01/0001','DD/MM/YYYY')) THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'Dt Venc ' || '' || NVL(:NEW.DTVENCFORMCLIE,'' );
		END IF;
		IF NVL(:NEW.IDUTGPFISCSV ,'NULL') <> NVL(:OLD.IDUTGPFISCSV ,'NULL') THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'Id Grupo Fiscal Serv ' || '' || NVL(:NEW.IDUTGPFISCSV,'' );
		END IF;
		IF NVL(:NEW.CDTABEPREC ,'NULL') <> NVL(:OLD.CDTABEPREC ,'NULL') THEN
         	V_DESC := NVL(V_DESC,'') || ' ' || 'CDTABEPREC ' || '' || NVL(:NEW.CDTABEPREC,'' );
		END IF;
		IF NVL(:NEW.CDCFILTABPRE ,'NULL') <> NVL(:OLD.CDCFILTABPRE ,'NULL') THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'CDCFILTABPRE ' || '' || NVL(:NEW.CDCFILTABPRE,'' );
		END IF;
		IF NVL(:NEW.IDPERMVENDAFOS ,'NULL') <> NVL(:OLD.IDPERMVENDAFOS ,'NULL') THEN
            V_DESC := NVL(V_DESC,'') || ' ' || 'IDPERMVENDAFOS ' || '' || NVL(:NEW.IDPERMVENDAFOS,'' );
		END IF;
		IF NVL(:NEW.IDCOREFECLIFILI ,'NULL') <> NVL(:OLD.IDCOREFECLIFILI ,'NULL') THEN
			V_DESC   := NVL(V_DESC,'') || ' ' || 'IDCOREFECLIFILI ' || '' || NVL(:NEW.IDCOREFECLIFILI,'' );
		END IF;
		IF NVL(:NEW.IDCONSMINEFECLI ,'NULL') <> NVL(:OLD.IDCONSMINEFECLI ,'NULL') THEN
            V_DESC   := NVL(V_DESC,'') || ' ' || 'IDCONSMINEFECLI ' || '' || NVL(:NEW.IDCONSMINEFECLI,'');
		END IF;
      IF NVL(:NEW.DSEMAILDANFEBOL ,'NULL') <> NVL(:OLD.DSEMAILDANFEBOL ,'NULL') THEN
            V_DESC   := SUBSTR(NVL(V_DESC,'') || ' ' || 'DSEMAILDANFEBOL ' || '' || NVL(:NEW.DSEMAILDANFEBOL,''), 4000);
		END IF;

      V_ITPESQ := :NEW.CDCLIENTE||:NEW.CDFILIAL;
      V_IDTIPOOPER := '2';
   ELSE
      IF INSERTING THEN
      V_DESC   := 'Filial '                || '' || NVL(:NEW.CDFILIAL,''    )  	 || ' ' ||
                  'Cd Cliente  '           || '' || NVL(:NEW.CDCLIENTE,''  )   	 || ' ' ||
                  'Id Cliente Principal  ' || '' || NVL(:NEW.IDCLIENPRIN,'' )  	 || ' ' ||
                  'Id Uti adiantamento '   || '' || NVL(:NEW.IDUTILADIANT,'' )    || ' ' ||
                  'Tx Desp por Cliente '   || '' || NVL(:NEW.VRPERATDESP ,'' ) 	 || ' ' ||
                  'Dt Ult Atu registro'    || '' || NVL(:NEW.DTULTATUCLIF,'' )    || ' ' ||
                  'CDPERIENTR '            || '' || NVL(:NEW.CDPERIENTR,'' )   	 || ' ' ||
                  'Id Contrato Cli '       || '' || NVL(:NEW.IDUTCONTCLPR,'' ) 	 || ' ' ||
                  'Id Per Faturamento '    || '' || NVL(:NEW.IDPERIODFATC,'' ) 	 || ' ' ||
                  'CDGRUPOFISC '           || '' || NVL(:NEW.CDGRUPOFISC,'' )  	 || ' ' ||
                  'Tp Fat Cli na Filial'   || '' || NVL(:NEW.DSTIPFATURCLIE,'' )  || ' ' ||
                  'Cd Tp Fat Cli na Filial'|| '' || NVL(:NEW.CDTIPFATURCLIE,'' )  || ' ' ||
                  'Dt Venc '               || '' || NVL(:NEW.DTVENCFORMCLIE,'' )  || ' ' ||
                  'Id Grupo Fiscal Serv'   || '' || NVL(:NEW.IDUTGPFISCSV,'' )    || ' ' ||
                  'CDTABEPREC '            || '' || NVL(:NEW.CDTABEPREC,'' )      || ' ' ||
                  'CDCFILTABPRE '          || '' || NVL(:NEW.CDCFILTABPRE,'' )    || ' ' ||
                  'IDPERMVENDAFOS '        || '' || NVL(:NEW.IDPERMVENDAFOS,'' )  || ' ' ||
			         'IDCOREFECLIFILI '       || '' || NVL(:NEW.IDCOREFECLIFILI,'' ) || ' ' ||
                  'IDCONSMINEFECLI '       || '' || NVL(:NEW.IDCONSMINEFECLI,'' ) || ' ' ||
                  'DSEMAILDANFEBOL '       || '' || NVL(:NEW.DSEMAILDANFEBOL,'');
      V_ITPESQ := :NEW.CDCLIENTE||:NEW.CDFILIAL;
         V_IDTIPOOPER := '1';
      ELSE
         IF DELETING THEN
      V_DESC   := 'Filial '                || '' || NVL(:OLD.CDFILIAL,''    )  	 || ' ' ||
                  'Cd Cliente  '           || '' || NVL(:OLD.CDCLIENTE,''  )   	 || ' ' ||
                  'Id Cliente Principal  ' || '' || NVL(:OLD.IDCLIENPRIN,'' )  	 || ' ' ||
                  'Id Uti adiantamento '   || '' || NVL(:OLD.IDUTILADIANT,'' )    || ' ' ||
                  'Tx Desp por Cliente '   || '' || NVL(:OLD.VRPERATDESP ,'' ) 	 || ' ' ||
                  'Dt Ult Atu registro'    || '' || NVL(:OLD.DTULTATUCLIF,'' )    || ' ' ||
                  'CDPERIENTR '            || '' || NVL(:OLD.CDPERIENTR,'' )   	 || ' ' ||
                  'Id Contrato Cli '       || '' || NVL(:OLD.IDUTCONTCLPR,'' ) 	 || ' ' ||
                  'Id Per Faturamento '    || '' || NVL(:OLD.IDPERIODFATC,'' ) 	 || ' ' ||
                  'CDGRUPOFISC '           || '' || NVL(:OLD.CDGRUPOFISC,'' )  	 || ' ' ||
                  'Tp Fat Cli na Filial'   || '' || NVL(:OLD.DSTIPFATURCLIE,'' )  || ' ' ||
                  'Cd Tp Fat Cli na Filial'|| '' || NVL(:OLD.CDTIPFATURCLIE,'' )  || ' ' ||
                  'Dt Venc '               || '' || NVL(:OLD.DTVENCFORMCLIE,'' )  || ' ' ||
                  'Id Grupo Fiscal Serv'   || '' || NVL(:OLD.IDUTGPFISCSV,'' )    || ' ' ||
                  'CDTABEPREC '            || '' || NVL(:OLD.CDTABEPREC,'' )      || ' ' ||
                  'CDCFILTABPRE '          || '' || NVL(:OLD.CDCFILTABPRE,'' )    || ' ' ||
                  'IDPERMVENDAFOS '        || '' || NVL(:OLD.IDPERMVENDAFOS,'' )  || ' ' ||
				      'IDCOREFECLIFILI '       || '' || NVL(:OLD.IDCOREFECLIFILI,'' ) || ' ' ||
                  'IDCONSMINEFECLI '       || '' || NVL(:OLD.IDCONSMINEFECLI,'' ) || ' ' ||
                  'DSEMAILDANFEBOL '       || '' || NVL(:OLD.DSEMAILDANFEBOL,'');
      V_ITPESQ := :OLD.CDCLIENTE||:OLD.CDFILIAL;
            V_IDTIPOOPER := '3';
         END IF;
      END IF;
   END IF;
   V_DESC := SUBSTR(V_DESC, 1, 4000);
   INSERT INTO LOGOPERAVND
      (NMTABELAVND,
       DTOPERACAOVND,
       NMRESPOPERVND,
       IDTIPOOPERVND,
       DSOPERACAOVND,
       CDPESQITEMVND,
       DSRDMUSUOPERVND,
       DSENDUSUOPERVND,
       DSNMUSUOPERVND,
       DSMETUSUOPERVND,
       CDORESPOPERVND,
       CDFILLOGOPERVND)
   VALUES
      ('CLIENFILIAL',
       SYSDATE,
       NVL(V_NMOPERADOR,' '),
       V_IDTIPOOPER,
       NVL(V_DESC,' '),
       V_ITPESQ,
       V_DSSERVERRDM,
       V_DSREMOTEADDR,
       V_DSREMOTEHOST,
       V_DSSERVMETHOD,
       V_DSREMOTEOPER,
       NVL(:NEW.CDFILIAL,:OLD.CDFILIAL));
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('LOG_VND_ALIQIMPFIS','5.60.xxx'); END;
/
