CREATE OR REPLACE
TRIGGER CORRIGE_APURFATUFAS
BEFORE UPDATE ON APURFATUFAS FOR EACH ROW
DECLARE
   V_CDFILIAL APURFATUFAS.CDFILIAL%TYPE;
   V_CDPRODUTO PRODUTO.CDPRODUTO%TYPE;
   V_CDGERENTECOMERC CLIENTE.CDGERENTECOMERC%TYPE;
   V_CDPAIS ENDECLIE.CDPAIS%TYPE;
BEGIN
   IF :NEW.CDEMPRESA <> :OLD.CDEMPRESA THEN
      SELECT MAX(CDFILIAL)
        INTO V_CDFILIAL
        FROM FILIAL
       WHERE CDEMPRESA = :NEW.CDEMPRESA;
      :NEW.CDFILIAL := V_CDFILIAL; 
   END IF;
   
   SELECT MAX(C.CDGERENTECOMERC), MAX(E.CDPAIS)
     INTO V_CDGERENTECOMERC, V_CDPAIS
     FROM CLIENTE C, ENDECLIE E
    WHERE C.CDCLIENTE = :NEW.CDCLIENTE
      AND E.CDCLIENTE = :NEW.CDCLIENTE
      AND E.IDTPENDECLIE = 'P';
      
   -- ####################
   -- ###### CANAIS ######
   -- ####################
   -- Produto 6104010 - Empresas "05 Teknisa Ltda" e "07 Teknisa Processamento de Dados Ltda"
   -- Produto 6102010 - Empresas "01 Teknisa Software Ltda" e "06 AMA Software Ltda EPP"
   IF V_CDGERENTECOMERC IN ('00CANAIS', '000000001923') THEN
      IF :NEW.CDEMPRESA IN ('05', '07', '01', '06') AND :NEW.IDAPURFATFAS = '6' THEN
         SELECT DECODE(:NEW.CDEMPRESA, '05', '6104010', '07', '6104010', '01', '6102010', '06', '6102010') 
           INTO :NEW.CDPRODUTO
           FROM DUAL;
      END IF;         
   ELSE
      -- #######################################
      -- ###### OUTROS CLIENTES NACIONAIS ######
      -- #######################################
      -- Produto 6104001 - Empresas "05 Teknisa Ltda" e "07 Teknisa Processamento de Dados Ltda"
      IF V_CDPAIS = '0055' THEN
         IF :NEW.CDEMPRESA IN ('05', '07') AND :NEW.IDAPURFATFAS = '6' THEN
            :NEW.CDPRODUTO := '6104001';
         END IF;         
      END IF;
   END IF;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('CORRIGE_APURFATUFAS','5.11.002'); END;
/