CREATE OR REPLACE TRIGGER LOG_VND_TURCAIXA
AFTER INSERT OR DELETE OR UPDATE
ON TURCAIXA 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' - 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.CDCAIXA,'NULL') <> NVL(:OLD.CDCAIXA,'NULL') THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'Caixa ' || ' ' || NVL(:NEW.CDCAIXA,'');
		END IF;
		IF NVL(:NEW.DTABERCAIX,TO_DATE('01/01/0001','DD/MM/YYYY')) <> NVL(:OLD.DTABERCAIX,TO_DATE('01/01/0001','DD/MM/YYYY')) THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'Dt Aber ' || ' ' || TO_CHAR(NVL(:NEW.DTABERCAIX,''),'DD/MM/YYYY HH24:MI:SS');
		END IF;
		IF NVL(:NEW.CDOPERADOR,'NULL') <> NVL(:OLD.CDOPERADOR,'NULL') THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'Operador ' || ' ' || NVL(:NEW.CDOPERADOR,'');
		END IF;
		IF NVL(:NEW.DTFECHCAIX,TO_DATE('01/01/0001','DD/MM/YYYY')) <> NVL(:OLD.DTFECHCAIX,TO_DATE('01/01/0001','DD/MM/YYYY')) THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'Dt Fech ' || ' ' || TO_CHAR(NVL(:NEW.DTFECHCAIX,''),'DD/MM/YYYY HH24:MI:SS');
		END IF;
		IF NVL(:NEW.CDOPERABER,'NULL') <> NVL(:OLD.CDOPERABER,'NULL') THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'Oper Aber ' || ' ' || NVL(:NEW.CDOPERABER,'');
		END IF;
		IF NVL(:NEW.CDOPERFECH,'NULL') <> NVL(:OLD.CDOPERFECH,'NULL') THEN
			V_DESC := NVL(V_DESC, '') || ' ' || 'Oper Fech ' || ' ' || NVL(:NEW.CDOPERFECH,'');
		END IF;
		
		V_ITPESQ := :NEW.CDFILIAL||:NEW.CDCAIXA||TO_CHAR(:NEW.DTABERCAIX,'DD/MM/YYYY HH24:MI:SS');
		V_IDTIPOOPER := '2';
	ELSE
		IF INSERTING THEN
			IF :NEW.CDFILIAL IS NOT NULL THEN 
				V_DESC := 'Filial ' || ' ' || NVL(:NEW.CDFILIAL,'');
			END IF;
			IF :NEW.CDCAIXA IS NOT NULL THEN
				V_DESC := NVL(V_DESC, '') || ' ' || 'Caixa ' || ' ' || NVL(:NEW.CDCAIXA,'');
			END IF;
			IF :NEW.DTABERCAIX IS NOT NULL THEN
				V_DESC := NVL(V_DESC, '') || ' ' || 'Dt Aber ' || ' ' || TO_CHAR(NVL(:NEW.DTABERCAIX,''),'DD/MM/YYYY HH24:MI:SS');
			END IF;
			IF :NEW.CDOPERADOR IS NOT NULL THEN
				V_DESC := NVL(V_DESC, '') || ' ' || 'Operador ' || ' ' || NVL(:NEW.CDOPERADOR,'');
			END IF;
			IF :NEW.DTFECHCAIX IS NOT NULL THEN
				V_DESC := NVL(V_DESC, '') || ' ' || 'Dt Fech ' || ' ' || TO_CHAR(NVL(:NEW.DTFECHCAIX,''),'DD/MM/YYYY HH24:MI:SS');
			END IF;
			IF :NEW.CDOPERABER IS NOT NULL THEN
				V_DESC := NVL(V_DESC, '') || ' ' || 'Oper Aber ' || ' ' || NVL(:NEW.CDOPERABER,'');
			END IF;
			IF :NEW.CDOPERFECH IS NOT NULL THEN
				V_DESC := NVL(V_DESC, '') || ' ' || 'Oper Fech ' || ' ' || NVL(:NEW.CDOPERFECH,'');
			END IF;
			
			V_ITPESQ := :NEW.CDFILIAL||:NEW.CDCAIXA||TO_CHAR(:NEW.DTABERCAIX,'DD/MM/YYYY HH24:MI:SS');
			V_IDTIPOOPER := '1';
		ELSE
			IF DELETING THEN
				IF :OLD.CDFILIAL IS NOT NULL THEN 
					V_DESC := 'Filial ' || ' ' || NVL(:OLD.CDFILIAL,'');
				END IF;
				IF :OLD.CDCAIXA IS NOT NULL THEN
					V_DESC := NVL(V_DESC, '') || ' ' || 'Caixa ' || ' ' || NVL(:OLD.CDCAIXA,'');
				END IF;
				IF :OLD.DTABERCAIX IS NOT NULL THEN
					V_DESC := NVL(V_DESC, '') || ' ' || 'Dt Aber ' || ' ' || TO_CHAR(NVL(:OLD.DTABERCAIX,''),'DD/MM/YYYY HH24:MI:SS');
				END IF;
				IF :OLD.CDOPERADOR IS NOT NULL THEN
					V_DESC := NVL(V_DESC, '') || ' ' || 'Operador ' || ' ' || NVL(:OLD.CDOPERADOR,'');
				END IF;
				IF :OLD.DTFECHCAIX IS NOT NULL THEN
					V_DESC := NVL(V_DESC, '') || ' ' || 'Dt Fech ' || ' ' || TO_CHAR(NVL(:OLD.DTFECHCAIX,''),'DD/MM/YYYY HH24:MI:SS');
				END IF;
				IF :OLD.CDOPERABER IS NOT NULL THEN
					V_DESC := NVL(V_DESC, '') || ' ' || 'Oper Aber ' || ' ' || NVL(:OLD.CDOPERABER,'');
				END IF;
				IF :OLD.CDOPERFECH IS NOT NULL THEN
					V_DESC := NVL(V_DESC, '') || ' ' || 'Oper Fech ' || ' ' || NVL(:OLD.CDOPERFECH,'');
				END IF;
		
				V_ITPESQ := :OLD.CDFILIAL||:OLD.CDCAIXA||TO_CHAR(:OLD.DTABERCAIX,'DD/MM/YYYY HH24:MI:SS');
				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
		('TURCAIXA',
		 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_TURCAIXA','6.06.000'); END;
/