create or replace TRIGGER LOG_VND_PRODGRUPROMOC
AFTER INSERT OR DELETE OR UPDATE
ON PRODGRUPROMOC FOR EACH ROW
DECLARE
	V_NMOPERADOR   VARCHAR2(40);
	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_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
		IF NVL(:NEW.CDGRUPROMOC,'NULL') <> NVL(:OLD.CDGRUPROMOC,'NULL') THEN
			V_DESC := 'CDGRUPROMOC ' || ' ' || NVL(:NEW.CDGRUPROMOC,'');
		END IF;
		IF NVL(:NEW.CDPRODUTO,'NULL') <> NVL(:OLD.CDPRODUTO,'NULL') THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'CDPRODUTO ' || ' ' || NVL(:NEW.CDPRODUTO,'');
		END IF;
		IF NVL(:NEW.DTULTATUPRPRC,TO_DATE('01/01/0001','DD/MM/YYYY')) <> NVL(:OLD.DTULTATUPRPRC,TO_DATE('01/01/0001','DD/MM/YYYY')) THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'DTULTATUPRPRC ' || ' ' || NVL(:NEW.DTULTATUPRPRC,'');
		END IF;
		IF NVL(:NEW.DSENDEIMGPROMO,'NULL') <> NVL(:OLD.DSENDEIMGPROMO,'NULL') THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'DSENDEIMGPROMO ' || ' ' || NVL(:NEW.DSENDEIMGPROMO,'');
		END IF;
		IF NVL(:NEW.DSAPELIDOMOB,'NULL') <> NVL(:OLD.DSAPELIDOMOB,'NULL') THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'DSAPELIDOMOB ' || ' ' || NVL(:NEW.DSAPELIDOMOB,'');
		END IF;
		IF NVL(:NEW.NRORDPROMOPR,999999) <> NVL(:OLD.NRORDPROMOPR,999999) THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'NRORDPROMOPR ' || ' ' || NVL(:NEW.NRORDPROMOPR,'');
		END IF;
		IF NVL(:NEW.DSAPELIDOPROD,'NULL') <> NVL(:OLD.DSAPELIDOPROD,'NULL') THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'DSAPELIDOPROD ' || ' ' || NVL(:NEW.DSAPELIDOPROD,'');
		END IF;        
		IF NVL(:NEW.IDPRINCPROD,'NULL') <> NVL(:OLD.IDPRINCPROD,'NULL') THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'IDPRINCPROD ' || ' ' || NVL(:NEW.IDPRINCPROD,'');
		END IF;                

		V_ITPESQ := :NEW.CDGRUPROMOC||:NEW.CDPRODUTO;
		V_IDTIPOOPER := '2';
	
    ELSE IF INSERTING THEN
        V_DESC   := 'CDGRUPROMOC '   || '' || NVL(:NEW.CDGRUPROMOC,'' )    || ' ' ||
                    'CDPRODUTO '     || '' || NVL(:NEW.CDPRODUTO,''  )     || ' ' ||
                    'DTULTATUPRPRC ' || '' || NVL(:NEW.DTULTATUPRPRC,'' )  || ' ' ||
                    'DSENDEIMGPROMO '|| '' || NVL(:NEW.DSENDEIMGPROMO,'' ) || ' ' ||
                    'DSAPELIDOMOB '  || '' || NVL(:NEW.DSAPELIDOMOB,''  )  || ' ' ||
                    'NRORDPROMOPR '  || '' || NVL(:NEW.NRORDPROMOPR,''  )  || ' ' ||
                    'DSAPELIDOPROD ' || '' || NVL(:NEW.DSAPELIDOPROD,'')   || ' ' ||
                    'IDPRINCPROD '   || '' || NVL(:NEW.IDPRINCPROD,'');

        V_ITPESQ := :NEW.CDGRUPROMOC||:NEW.CDPRODUTO;
        V_IDTIPOOPER := '1';
    
        ELSE IF DELETING THEN
            V_DESC   := 'CDGRUPROMOC '   || '' || NVL(:OLD.CDGRUPROMOC,'' )   || ' ' ||
                        'CDPRODUTO '     || '' || NVL(:OLD.CDPRODUTO,''  )    || ' ' ||
                        'DTULTATUPRPRC ' || '' || NVL(:OLD.DTULTATUPRPRC,'' ) || ' ' ||
                        'DSENDEIMGPROMO '|| '' || NVL(:OLD.DSENDEIMGPROMO,'' )|| ' ' ||
                        'DSAPELIDOMOB '  || '' || NVL(:OLD.DSAPELIDOMOB,''  ) || ' ' ||
                        'NRORDPROMOPR '  || '' || NVL(:OLD.NRORDPROMOPR,''  ) || ' ' ||
                        'DSAPELIDOPROD ' || '' || NVL(:OLD.DSAPELIDOPROD,'')  || ' ' ||
                        'IDPRINCPROD '   || '' || NVL(:OLD.IDPRINCPROD,'');
                        
            V_ITPESQ := :OLD.CDGRUPROMOC||:OLD.CDPRODUTO;
            V_IDTIPOOPER := '3';
        END IF;
    END IF;
END IF;
	V_DESC := SUBSTR(V_DESC, 1, 300);

	INSERT INTO LOGOPERAVND
		(NMTABELAVND,
		 DTOPERACAOVND,
		 NMRESPOPERVND,
		 IDTIPOOPERVND,
		 DSOPERACAOVND,
		 CDPESQITEMVND,
		 DSRDMUSUOPERVND,
		 DSENDUSUOPERVND,
		 DSNMUSUOPERVND,
		 DSMETUSUOPERVND,
		 CDORESPOPERVND,
		 CDFILLOGOPERVND)
	VALUES
		('PRODGRUPROMOC',
		 SYSDATE,
		 NVL(V_NMOPERADOR,' '),
		 V_IDTIPOOPER,
		 NVL(V_DESC,' '),
		 V_ITPESQ,
		 V_DSSERVERRDM,
		 V_DSREMOTEADDR,
		 V_DSREMOTEHOST,
		 V_DSSERVMETHOD,
		 V_DSREMOTEOPER,
		 NULL);
END;
/