create or replace TRIGGER LOG_GOP_TIPOOPERACROP
AFTER INSERT OR UPDATE
ON TIPOOPERACROP FOR EACH ROW
DECLARE
  V_TIPO                VARCHAR2(1);
  V_DSREMOTEADDR        VARCHAR2(15);
  V_DSREMOTEHOST        VARCHAR2(15);
  V_DSSERVERRDM         VARCHAR2(100);
  V_DSSERVMETHOD        VARCHAR2(4000);
  V_DSREMOTEOPER        VARCHAR2(12);
  V_DESC                VARCHAR2(500);
  V_DESCUPD             VARCHAR2(200);
  V_CDFILLOGOPER        VARCHAR2(4);
  V_ITPESQ              VARCHAR2(40);
  V_NMOPERADOR          VARCHAR2(40);
  V_CDOPERADOR          VARCHAR2(12);
  V_NMFILIAL            VARCHAR2(50);
  V_NMTIPOOPER          VARCHAR2(100);
  V_UNIDADE             VARCHAR2(100);

BEGIN
/* IDTIPOOPER - '1' - Inclusao, '2' - Alteracao, '3' - Exclusao*/
   V_TIPO         := '0';
   V_DESC         := '';
   V_ITPESQ       := '';
   V_NMOPERADOR   := '';
   V_CDOPERADOR   := :NEW.CDOPERULTATU;
   V_CDFILLOGOPER := '';
   V_ITPESQ       := TO_CHAR(:NEW.CDTIPOOPER);

   WEBTUNNING(V_DSREMOTEADDR,
              V_DSREMOTEHOST,
              V_DSSERVERRDM,
              V_DSSERVMETHOD,
              V_DSREMOTEOPER);

    V_DSSERVERRDM := 'ger80200_parametros_resultado_operacional';
    V_DESCUPD := 'Parametros para Resultado Operacional' || chr(10);

    NMOPERADOR(V_CDOPERADOR, V_NMOPERADOR);

    IF TO_CHAR(:NEW.CDFILIAL) = 'T' OR TO_CHAR(:NEW.CDFILIAL) =  'P' THEN
        V_UNIDADE   := 'Unidade: Padrao' || chr(10);
    ELSE
       SELECT MAX(NMFILIAL) INTO V_NMFILIAL FROM FILIAL WHERE CDFILIAL = :NEW.CDFILIAL;
        V_UNIDADE   := 'Unidade: '|| :NEW.CDFILIAL || '-' || V_NMFILIAL || chr(10);
    END IF;
    SELECT MAX(NMTIPOOPER) INTO V_NMTIPOOPER FROM TIPOOPERAC WHERE CDTIPOOPER = :NEW.CDTIPOOPER AND IDENTRSAIDOP = :NEW.IDENTRSAIDOP;


    IF INSERTING THEN

        V_TIPO := '1';
        
        IF :NEW.IDENTRSAIDOP = 'E' THEN
            IF :NEW.IDTPOPERACROP = 'CC' THEN
                V_DESC := 'Apuracao Estoque -> Lancamentos -> Entrada por Compras ';
                
            ELSIF :NEW.IDTPOPERACROP = 'DE' THEN
                V_DESC := 'Apuracao Despesas -> Lancamentos de Entrada -> Despesas -> Tipo de Operacao ';
            
            ELSIF :NEW.IDTPOPERACROP = 'MO' THEN
                V_DESC := 'Apuracao Despesas -> Lancamentos de Entrada -> Mao de Obra -> Tipo de Operacao';
            END IF;

        ELSIF :NEW.IDENTRSAIDOP = 'S' THEN
            IF :NEW.IDTPOPERACROP = 'FS' THEN
                V_DESC := 'Faturamento -> Faturamento Bruto -> Tipo Operacao';
                
            ELSIF :NEW.IDTPOPERACROP = 'CS' THEN
                V_DESC := 'Apuracao Estoque -> Lancamentos -> Saida por Devolucao' ;
            END IF;

        END IF;
        
        IF :NEW.IDENTRSAIDOP IS NOT NULL THEN 
           V_DESC := V_DESC || chr(10) || chr(10) || V_UNIDADE || 'Tipo de Operacao: ' || :NEW.CDTIPOOPER || ' - ' || V_NMTIPOOPER;
        END IF;
        
    END IF;

    IF NOT V_DESC IS NULL THEN

      V_DESC := V_DESCUPD || V_DESC;

      INSERT INTO LOGOPERAGES
        (NMTABELA,     DTOPERACAO,   NMRESPOPER,  IDTIPOOPER,   DSOPERACAO,  CDPESQITEM,
         DSRDMUSUOPER, DSENDUSUOPER, DSNMUSUOPER, DSMETUSUOPER, CDORESPOPER, CDFILLOGOPER)
      VALUES
        ('TIPOOPERACROP', SYSDATE, NVL(V_NMOPERADOR,' '), V_TIPO, V_DESC, V_ITPESQ, NVL(V_DSSERVERRDM, ' '), 
          NVL(V_DSREMOTEADDR, ' '), NVL(V_DSREMOTEHOST, ' '), NVL(V_DSSERVMETHOD, ' '), NVL(V_CDOPERADOR, ' '),
          NVL(V_CDFILLOGOPER, ' '));
    END IF;
END;