CREATE OR ALTER TRIGGER TTBPDV_CFE_B05I FOR TBPDV_CFE
ACTIVE BEFORE INSERT POSITION 5
AS
DECLARE VARIABLE ESTAB_CEP VARCHAR(10);
DECLARE VARIABLE ESTAB_ENDERECO VARCHAR(200);
DECLARE VARIABLE ESTAB_NUMERO VARCHAR(60);
DECLARE VARIABLE ESTAB_COMPLEMENTO VARCHAR(60);
DECLARE VARIABLE ESTAB_BAIRRO VARCHAR(60);
DECLARE VARIABLE ESTAB_CIDADE_ID INTEGER;
DECLARE VARIABLE ESTAB_UF VARCHAR(2);

BEGIN

  IF(CHAR_LENGTH(COALESCE(NEW.CLIENTE_ENDERECO, '')) = 0) THEN
  BEGIN
        SELECT FIRST 1
            E.CEP,
            E.ENDERECO,
            E.NUMERO,
            E.COMPLEMENTO,
            E.BAIRRO,
            C.ID AS CIDADE_ID,
            E.UF
        FROM TBESTABELECIMENTO E
        INNER JOIN TBCIDADE C ON C.DESCRICAO = E.CIDADE AND C.UF = E.UF
        WHERE E.CODIGO = NEW.ESTABELECIMENTO_ID
        INTO
            :ESTAB_CEP,
            :ESTAB_ENDERECO,
            :ESTAB_NUMERO,
            :ESTAB_COMPLEMENTO,
            :ESTAB_BAIRRO,
            :ESTAB_CIDADE_ID,
            :ESTAB_UF;

        NEW.CLIENTE_CEP         = :ESTAB_CEP;
        NEW.CLIENTE_ENDERECO    = :ESTAB_ENDERECO;
        NEW.CLIENTE_NUMERO      = :ESTAB_NUMERO;
        NEW.CLIENTE_COMPLEMENTO = :ESTAB_COMPLEMENTO;
        NEW.CLIENTE_BAIRRO      = :ESTAB_BAIRRO;
        NEW.CLIENTE_CIDADE      = :ESTAB_CIDADE_ID;
        NEW.CLIENTE_UF          = :ESTAB_UF;
  END
END;