Cadastro de Entidades

Como criar uma entidade que é uma VIEW no banco de dados?

ADS_CORE.CAD_ENT.FAQ-640
Muitas vezes, para fazer uma integração como uma base de dados existente ou para aprimorar uma entidade mais genérica, pode-se criar uma entidade que seja uma visão.

Para criar uma VIEW no Telescope, proceda da seguinte maneira:

1 - Crie uma entidade como qualquer outra - No campo persistência, selecione View.

2 - Cria uma propriedade VIEW_SQL contendo o comando SQL que deverá ser usado para definir a VIEW. Note que deve ser colocado apenas o SQL (SELECT) e não o DDL CREATE VIEW correspondente.
Este SQL deve ter as colunas com aliases de acordo com os nomes definidos na entidade.
Este SQL pode ser customizado em ambiente de produção. Para isso, basta criar uma preferencia com o mesmo nome global que é utilizado para a definição da VIEW no Telescope.
Exemplo:
ERP_PDV.PEDIDOS_PDV.VIEW_SQL

3 - Se quiser incluir a operação de INSERT basta criar uma regra de ação POS_INSERT que execute a operação equivalente nas entidades reais. O único cuidado especial é com o atruibuto ID, pois ele deverá estar corretamente atualizado após a operação. Existem duas estratégias: Ou passar o ID gerado pela VIEW para a entidade que está realmente sendo gerada, ou copiar o ID gerado pela a entidade para a VIEW após a inserção.
Exemplo:
EntPreferencias pref = new EntPreferencias(ads);
pref.setId(valueOfId());
pref.setPreferencia(valueOfNome());
pref.setDescricao("criado pelas visão");
pref.ins();

3 - Se quiser incluir a operação de UPDATE basta criar uma regra de ação POS_UPDATE que execute a operação equivalente nas entidades reais.
Exemplo:
if (isModified()) {
   EntPreferencias pref = new EntPreferencias(ads);
   pref.find(valueOfId());
   pref.setPreferencia(valueOfNome());
   pref.upd();
}

4 - Se quiser incluir a operação de DELETE basta criar uma regra de ação de POS_DELETE que execute a operação equivalente nas entidades reais.
Exemplo:
EntPreferencias pref = new EntPreferencias(ads);
pref.del(valueOfId());