CREATE OR REPLACE TRIGGER LOG_VND_ITEMPRECOGER
AFTER DELETE OR INSERT OR UPDATE
ON ITEMPRECOGER 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(500);
  V_ITPESQ       VARCHAR2(60);
  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
		IF NVL(:NEW.CDTABEPREC ,'NULL') <> NVL(:OLD.CDTABEPREC ,'NULL') THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Tab Preco ' || '' || NVL(:NEW.CDTABEPREC,'');
		END IF;
		IF NVL(:NEW.DTINIVGPREC ,TO_DATE('01/01/0001','DD/MM/YYYY')) <> NVL(:OLD.DTINIVGPREC ,TO_DATE('01/01/0001','DD/MM/YYYY')) THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Dt Ini Vg Preco ' || '' || NVL(:NEW.DTINIVGPREC,'');
		END IF;
		IF NVL(:NEW.CDPRODUTO ,'NULL') <> NVL(:OLD.CDPRODUTO ,'NULL') THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Produto ' || '' || NVL(:NEW.CDPRODUTO,'');
		END IF;
		IF NVL(:NEW.CDPRPAITABPR ,'NULL') <> NVL(:OLD.CDPRPAITABPR ,'NULL') THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Cd Pai TAB Preco ' || '' || NVL(:NEW.CDPRPAITABPR,'');
		END IF;
		IF NVL(:NEW.VRPRECITEM ,999999) <> NVL(:OLD.VRPRECITEM ,999999) THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Vr Preco Item ' || '' || NVL(:NEW.VRPRECITEM,'');
		END IF;
		IF NVL(:NEW.VRPRECITEMCL ,999999) <> NVL(:OLD.VRPRECITEMCL ,999999) THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Vr Preco Item Cli ' || '' || NVL(:NEW.VRPRECITEMCL,'');
		END IF;
		IF NVL(:NEW.IDPRECVARIA ,'NULL') <> NVL(:OLD.IDPRECVARIA ,'NULL') THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Id Preco Variado ' || '' || NVL(:NEW.IDPRECVARIA,'');
		END IF;
		IF NVL(:NEW.VRPRESUGITEM ,999999) <> NVL(:OLD.VRPRESUGITEM ,999999) THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Vr Preco Sug Item ' || '' || NVL(:NEW.VRPRESUGITEM,'');
		END IF;
		IF NVL(:NEW.VRCUSTITEM ,999999) <> NVL(:OLD.VRCUSTITEM ,999999) THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Vr Custo Item ' || '' || NVL(:NEW.VRCUSTITEM,'');
		END IF;
		IF NVL(:NEW.VRMKUPITEM ,999999) <> NVL(:OLD.VRMKUPITEM ,999999) THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Vr Mkup Item ' || '' || NVL(:NEW.VRMKUPITEM,'');
		END IF;
		IF NVL(:NEW.IDPRODPROMOC ,'NULL') <> NVL(:OLD.IDPRODPROMOC ,'NULL') THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Id Prod Promocao ' || '' || NVL(:NEW.IDPRODPROMOC,'');
		END IF;
		IF NVL(:NEW.DTULTATU ,TO_DATE('01/01/0001','DD/MM/YYYY')) <> NVL(:OLD.DTULTATU ,TO_DATE('01/01/0001','DD/MM/YYYY')) THEN
			V_DESC := NVL(V_DESC,'') || ' ' || 'Dt Ult Atu Item Prod ' || '' || NVL(:NEW.DTULTATU,'');
		END IF;
      V_ITPESQ := :NEW.CDTABEPREC||:NEW.DTINIVGPREC||:NEW.CDPRODUTO||:NEW.CDPRPAITABPR;
      V_IDTIPOOPER := '2';
   ELSE
      IF INSERTING THEN
      V_DESC   := 'Tab Preco '            || '' || NVL(:NEW.CDTABEPREC,''  )  || ' ' ||
                  'Dt Ini Vg Preco '      || '' || NVL(:NEW.DTINIVGPREC,'' )  || ' ' ||
                  'Produto  '             || '' || NVL(:NEW.CDPRODUTO,''   )  || ' ' ||
                  'Cd Pai TAB Preco  '    || '' || NVL(:NEW.CDPRPAITABPR,'')  || ' ' ||
                  'Vr Preco Item  '       || '' || NVL(:NEW.VRPRECITEM,''  )  || ' ' ||
                  'Vr Preco Item Cli '    || '' || NVL(:NEW.VRPRECITEMCL,'')  || ' ' ||
                  'Id Preco Variado '     || '' || NVL(:NEW.IDPRECVARIA,'' )  || ' ' ||
                  'Vr Preco Sug Item '    || '' || NVL(:NEW.VRPRESUGITEM,'')  || ' ' ||
                  'Vr Custo Item  '       || '' || NVL(:NEW.VRCUSTITEM,''  )  || ' ' ||
                  'Vr Mkup Item  '        || '' || NVL(:NEW.VRMKUPITEM,''  )  || ' ' ||
                  'Id Prod Promocao  '    || '' || NVL(:NEW.IDPRODPROMOC,'')  || ' ' ||
                  'Dt Ult Atu Item Prod ' || '' || NVL(:NEW.DTULTATU,'');
         V_ITPESQ := :NEW.CDTABEPREC||:NEW.DTINIVGPREC||:NEW.CDPRODUTO||:NEW.CDPRPAITABPR;
         V_IDTIPOOPER := '1';
      ELSE
         IF DELETING THEN
      V_DESC   := 'Tab Preco '            || '' || NVL(:OLD.CDTABEPREC,''  )  || ' ' ||
                  'Dt Ini Vg Preco '      || '' || NVL(:OLD.DTINIVGPREC,'' )  || ' ' ||
                  'Produto  '             || '' || NVL(:OLD.CDPRODUTO,''   )  || ' ' ||
                  'Cd Pai TAB Preco  '    || '' || NVL(:OLD.CDPRPAITABPR,'')  || ' ' ||
                  'Vr Preco Item  '       || '' || NVL(:OLD.VRPRECITEM,''  )  || ' ' ||
                  'Vr Preco Item Cli '    || '' || NVL(:OLD.VRPRECITEMCL,'')  || ' ' ||
                  'Id Preco Variado '     || '' || NVL(:OLD.IDPRECVARIA,'' )  || ' ' ||
                  'Vr Preco Sug Item '    || '' || NVL(:OLD.VRPRESUGITEM,'')  || ' ' ||
                  'Vr Custo Item  '       || '' || NVL(:OLD.VRCUSTITEM,''  )  || ' ' ||
                  'Vr Mkup Item  '        || '' || NVL(:OLD.VRMKUPITEM,''  )  || ' ' ||
                  'Id Prod Promocao  '    || '' || NVL(:OLD.IDPRODPROMOC,'')  || ' ' ||
                  'Dt Ult Atu Item Prod ' || '' || NVL(:OLD.DTULTATU,'');
            V_ITPESQ := :OLD.CDTABEPREC||:OLD.DTINIVGPREC||:OLD.CDPRODUTO||:OLD.CDPRPAITABPR;
            V_IDTIPOOPER := '3';
         END IF;
      END IF;
   END IF;
   V_DESC := SUBSTR(V_DESC, 1, 300);
   V_ITPESQ := SUBSTR(V_ITPESQ, 1, 40);
   INSERT INTO LOGOPERAVND
      (NMTABELAVND,
       DTOPERACAOVND,
       NMRESPOPERVND,
       IDTIPOOPERVND,
       DSOPERACAOVND,
       CDPESQITEMVND,
       DSRDMUSUOPERVND,
       DSENDUSUOPERVND,
       DSNMUSUOPERVND,
       DSMETUSUOPERVND,
       CDORESPOPERVND,
       CDFILLOGOPERVND)
   VALUES
      ('ITEMPRECOGER',
       SYSDATE,
       NVL(V_NMOPERADOR,' '),
       V_IDTIPOOPER,
       NVL(V_DESC,' '),
       V_ITPESQ,
       V_DSSERVERRDM,
       V_DSREMOTEADDR,
       V_DSREMOTEHOST,
       V_DSSERVMETHOD,
       V_DSREMOTEOPER,
       NULL);
END;
/