Administração do sistema
Referenciamento de entidades nos scripts Velocity
RT.FAQ-72631
Ver Guia de referência Velocity VTL
Ao utilizar scripts Velocity, é muito comum que existam variáveis de contexto que são registros de entidades e que desejamos apresentar os valores dos atributos da entidade e/ou entidades relacionadas a ela.
Para isso, as variáveis das entidades aceitam diversas combinações de macros:
${entidade.NOME_ATRIBUTO}
Usando o nome do atributo em caixa alta, a macro-substituição irá retornar o valor do atributo na forma com que ele é persistido (equivalente ao método toStringValue dos domínios). Uma data, por exemplo, sera apresentada no formato ISO (YYYY-MM-DD) e números serão apresentados com um ponto decimal como separador fracionário e sem nenhuma máscara para formatar casas decimais.
Exemplo:
2017-04-23
1240.12872886
${entidade.nome_atributo}
Usando o nome do atributo em caixa baixa, a macro-substituição irá retornar o valor do atributo no formato texto padrão (equivalente ao método toText dos domínios). Uma data, por exemplo, sera apresentada no formato padrão (DD/MM/YYYY) e números serão apresentados com vírgula como separador fracionário e usando a máscara padrão do respectivo domínio.
Exemplo:
23/04/2017
1.240,13
${entidade.nomeAtributo}
Quando o atributo é informado no formato de nomes do Java (camel case), então a macro retorna o objeto que detém o respectivo campo (classe Field). Este elemento permite o uso das chain methods do domínio que permitem, por exemplo, estabelecer uma máscara de apresentação.
Exemplo:
- ${pedido.dataPrevisaoFaturamento.format("dd/MM").toText()}
${entidade.lookup}
Retorna a entidade relacionada pela lookup. O nome da lookup é formado pelo nome do atributo que define a lookup sem o "_ID" que vai no seu final.
Exemplos:
- ${item_pedido.produto.descricao} - Retorna a descrição do produto do item de pedido
- ${item_pedido.produto.tipo_produto.tipo_produto} - Retorna o nome do tipo de produto do item de pedido
- ${pedido.tipo_pedido.categoria} - Retorna o categoria do pedido
${entidade.OLD_ATRIBUTO}
${entidade.old_atributo}
Caso acrescentar o prefixo "OLD_" no início de um atributo, a substituição retornará o valor antigo do atributo. O formato resultante segue a mesma convenção de caixa alta/baixa utilizada no atributo.
Testes
Para testar se as macros disponíveis estão corretas, sugere-se utilizar a interface Executor de SQL e DML e criar um objeto de teste da entidade desejada através do comando FIND seguido de um comando ECHO para testar as macros. Exemplo:
find titulo titulos where id = 19858916204 ;
echo '${titulo.titulo} ${titulo.destinatario.endereco_principal.cidade.cidade}';