1. ## Revisar o DAF_MODULE e DAF_PACKAGE

<br>

Para incluir uma tela no menu do sistema é necessário que o OBJETO exista na tabela DAF_MODULE e que ele possua o ID_PACKAGE_MAIN preenchido.

O DAF_MODULE.ID_PACKAGE_MAIN é usado para determinar em qual menu a nova tela irá aparecer.

<br>

Exemplo:

<br>

```
update or insert into DAF_MODULO (MODULO, MODULO_PAI, PERMITE_MENU, IS_MENU_CONFIG, ID_PACKAGE_MAIN)
values ('CONDICAO_PAGAMENTO_GRUPO', 'OBJETO', 1, 1, (select DP.ID_DAF_PACKAGE from DAF_PACKAGE DP where DP.IDENTIFICADOR = 'FINANCEIRO'))
matching (MODULO);
```

<br>

O comando acima cria/atualiza o objeto CONDICAO_PAGAMENTO_GRUPO como filho do package FINANCEIRO indicando que pode ter um menu e que deve ficar no submenu Configurações. Este comando confia que existe um package com o identificador FINANCEIRO.

Na unit RegActions existe uma procedure chamada RegisterActions que executa a query para determinar a lista das telas que devem ser inseridas no menu. Ela cria um menu principal para cada package e um menu Outros para os módulos que estão sem package.

<br>

2. ## Decidir se precisa criar um controller específico para o objeto ou se pode usar o default do framework

<br>

Quando uma tela é apenas uma gerência/busca simples, o passo 1 basta e o framework irá criar a tela de busca automaticamente.

Contudo, quando se necessita de uma tela de cadastro específica. É necessário criar uma classe de controller para se fazer override no método FrameClass para definir a tela para a ação akCRUD.

Neste caso, é preciso registrar esta classe específica de controller com a seguinte linha:

<br>

```
ControllerList.Add(TCondicaoPagamentoGrupoController, 'CONDICAO_PAGAMENTO_GRUPO');
```

<br>

3. ## Criar a tela de cadastro específica

<br>

É necessário colocar os componentes na tela e fazer override no método DataBinding para se efetuar a configuração de cada campo.

No caso do grupo de condições de pagamento eu incluí um edit e um detailgrid. E fiz a configuração de ambos neste método.

Como este módulo precisa de um detail, acabei tendo que definir as duas queries para ele. A query principal, que leva o mesmo nome do módulo e a query de detail no cadastro de queries.

Precisa criar a query no banco e configurar o relacionamento pelo valor padrão na objeto campo também.