DS Tabela
Documentação em desenvolvimento { .is-warning }
Sobre
Para criar as tabelas no sistema sem que seja necessario a execução do SQL diretamento no banco, iremos inserir a estrutura da tabela nos padrões do NFS na tabela NFS_CORE_DS_TABELA
e assim poderemos vincular os campos através do registros na tabela NFS_CORE_DS_TABELA_CAMPO
Estrutura
NOME
Nome da tabela, exemplo:
- EQP {.grid-list}
NOME REAL
Nome da tabela no banco, geralmente é o prefixo APP
+NOME
, exemplo:
- APP_EQP {.grid-list}
DESCRICAO
Descrição da tabela, exemplo:
- Equipamentos {.grid-list}
UNQ
Campo unico da tabela, exemplo:
- ID {.grid-list}
DISPLAY
Campos da tabela que serão utilizados para exibição dos registros, exemplo:
- DESCRICAO
- CODIGO
- CODIGO,DESCRICAO {.grid-list}
TIPO
1
: Padrão2
: Tabela N3
: Somente Leitura5
: View {.grid-list}
TIPO_MOBILE
1
: Apontamento2
: Boletim {.grid-list}
Opções
ID
As tabelas criadas pelo DS em sua maioria possuem o campo ID por padrão, podemos customizar o comportamento desse campo utilizando passando um json de configuração no campo OPTIONS, seguem algumas dessa configurações:
- id-control: Usado para definir o comportamento do campo IDao inserir registros na tabela, pode ser "fixed"(com um valor statico que não muda) ou caso não seja definido, por padrão, ficará incremental de acordo com empresa/filial/local.
{"id-control":"fixed"}
- id-value:
Usado em conjunto ao id-control = fixed, define o valor padrão que será utilizado como o valor fixo de ID(o valor padrão é
9999
).
{"id-control":"fixed"}
{"id-value":9999}
Campo ID fixo
Adicionando o JSON abaixo aos valores de OPTIONS da TABELA fará com que os comandos de INSERT não façam o "select max(id) + 1" que é executado quando o valor informado do ID está em branco ou 0. Recomenda-se ativar essa opção para TODAS as tabelas MOBILE ganhando desempenho no processo de insert
REMOVER MANUALMENTE DA TABELA A PK de EMPRESA+FILIAL+LOCAL+ID
ALTER TABLE app_XXXXXXXXXX DROP PRIMARY KEY;
{
"id-control": "fixed",
"id-value": 9999
}
ORDER_BY - Controle de ordenção das tabelas
São pré-requisitos para esse módulo:
Por padrão, as telas de CRUD de demais consultas via TabelaBO usam a configuração de NFS_CORE_DS_TABELA.DISPLAY_FIELDS como ordenação.
Para utilizar uma ordenação diferente é possível usar o campo NFS_CORE_DS_TABELA.ORDER_BY informando nesta os campos desejados para ordenação, exemplo: FRENTE ASC,CODIGO ASC
E, pode ir além, caso queira enviar para o XMOVA uma ordenação específica, seja pela chamada via tabela direta (server name no xmova está igual tabela do NFS - exemplo: server name=EQP_CLASSE) ou por entryPoint do tipo SQL (exemplo EqpClasseMobile) basta mudar esse campo para um formato JSON contendo duas chaves: CRUD e MOBILE, conforme abaixo:
{
"CRUD": "DESCRICAO ASC",
"MOBILE": "SEQ_DB ASC"
}
BOTÃO PRÓXIMA PÁGINA - Controle de Navegação entre Registros na Tela de Edição
BOTÃO PRÓXIMA PÁGINA - Controle de Navegação entre Registros na Tela de Edição CRUD Este documento descreve o funcionamento e a configuração do botão "Próxima Página" na tela de edição de CRUD e demais consultas via TabelaBO, utilizando a configuração ORDER_BY para determinar a ordenação dos registros.
Pré-requisitos
Antes de utilizar o botão "Próxima Página", certifique-se de que os seguintes pré-requisitos foram atendidos:
As telas de edição de CRUD e demais consultas via TabelaBO utilizam, por padrão, a configuração de ordenação definida em NFS_CORE_DS_TABELA.DISPLAY_FIELDS.
Para personalizar a ordenação, é possível utilizar o campo NFS_CORE_DS_TABELA.ORDER_BY. Este campo aceita uma lista de campos separados por vírgulas, indicando a ordem desejada. Exemplo: "FRENTE ASC, CODIGO ASC".
Para uma ordenação específica no contexto do XMOVA, seja pela chamada via tabela direta ou pelo entryPoint do tipo SQL, você pode modificar o campo NFS_CORE_DS_TABELA.ORDER_BY para um formato JSON com as chaves "CRUD" e
Configuração do Botão "Próxima Página"
Para ativar o botão "Próxima Página" e permitir a navegação entre registros durante a edição do CRUD, inclua a seguinte configuração na coluna JSON da tabela nfs_core_ds_tabela:
Exemplo de JSON na coluna:
{
"button_next": true
}
Com a configuração acima, o botão "Próxima Página" será habilitado na tela de edição de CRUD e permitirá que o usuário navegue para o próximo registro com base na ordenação definida em NFS_CORE_DS_TABELA.ORDER_BY.
OPTIONS para tabelas MOBILE
Bloqueio de inserções/alterações relacionadas a um boletim
Para isso foi criado uma nova opção que pode ser inserida na tabela de boletim(nfs_core_ds_tabela), que faz que a tabela de boletim não possa receber inserções manuais(via crud ou edição em lote) por um periodo a partir do INI_DH do boletim(por padrão, por 24horas a partir do inicio do boletem), configuração:
- Acessar a tabela nfs_core_ds_tabela;
- Iserir a opção tmpLock nas opção disponíveis na coluna OPTIONS da tabela de boletim:
{
"menu_name":"Boletim Máquina",
"favorite": true,
"ignore_validation_tables": ["APONTAMENTO_MAQUINA_INTERMEDIARIA"],
"tmpLock": {
"enabled": true,
"period": 24
}
}
exemplo de OPTION da tabela BOLETIM_MAQUINA
Campos Herdados da Tabela Master
Campos herdados são campos que podem ser configurados em uma tabela mobile do tipo 1 (APONTAMENTO ) para que tenham seu valor definido com base em sua tabela master(BOLETIM)
Configurações:
As configurações devem ser feitas na coluna OPTIONS da tabela nfs_core_ds_tabela, no exemplo a seguir foi utilizada a tabela APONTAMENTO_MAQUINA:
{
"inherit": {
"override":true,
"fields": {
"EQP_SEQ_DB":"EQP_SEQ_DB"
}
}
}
inherit
: Nome da Configuraçãooverride
: Se os valores dos campos pela tabela de apontamento vão ser sempre sobrescritos pelos valores do BOLETIM - true ou falsefields
: Campos que vão ser herdados, "CAMPO_APT": "CAMPO_BOLETIM"
Mudança do INI_DH do apontamento de acordo com o INI_DH do boletim
Para sincronizar o valor do INI_DH do primeiro APONTAMENTO de acordo com o INI_DH de seu boletim, podemos utilizar o parametro SYNC_FIRST_INI_WITH_END_TABLE na configuração do calculo de data(nfs_core_par_parametros).
{
"calc1":{
"TABLES":[
{
"NAME":"APONTAMENTO_MAQUINA",
"GROUP":"EQUIPAMENTO_SEQ_DB",
"SYNC_FIRST_INI_WITH_END_TABLE":true,
"FILTER":""
}
],
"END_TABLE":"BOLETIM_MAQUINA"
}
}
Campo TIPO PROC_ST
Exemplo de uso do campo do tipo PROC_ST: (usado para controles de processamento ou integração)
Dica de boa prática: Separar cada campo para uma responsabilidade. Por exemplo, se existe algum processo de integração então pode-se criar um campo INTEGRACAO_ST para esse controle.
Criando um campo PROC_ST:
INSERT INTO nfs_core_ds_tabela_campo (TABELA_NOME, NOME, SEQ, SYS, SEND_XMOVA, GRID, GRID_MOBILE, DESCRICAO, DESCRICAO_RESUMIDA, TIPO, OBRIGATORIO, TAMANHO, TAMANHO_DECIMAL, MASCARA, INSERT_UPDATE, DISABLED, HINT, LINK, VALIDACAO, OPCOES, VALOR_DEFAULT, VALIDACAO_VIEW, FILTRO_VIEW, TOOLTIP_MESSAGE, PROPERTIES) VALUES('EQP_BOLETIM', 'TESTE', 100, 0, 1, 1, 1, NULL, NULL, 'PROC_ST', NULL, NULL, NULL, NULL, 'IU', '0', NULL, NULL, NULL, '0:Pendente;1:Liberado Int.;4:Integrado;9:Processado ERP', NULL, NULL, NULL, NULL, NULL);
Quando rodar o DS serão gerados 3 campos:
DDL => ALTER TABLE APP_EQP_BOLETIM ADD COLUMN TESTE_ST CHAR(1) NULL DEFAULT '0';
DDL => ALTER TABLE APP_EQP_BOLETIM ADD COLUMN TESTE_DH TIMESTAMP NULL DEFAULT NULL;
DDL => ALTER TABLE APP_EQP_BOLETIM ADD COLUMN TESTE_DESC VARCHAR(250) NULL DEFAULT NULL;
Veja que no campo OPTIONS foi usada uma declaração de campo do tipo LOV1, que será usada no campo TESTE_ST.
Exemplo: '0:Pendente;1:Liberado Int.;4:Integrado;9:Processado ERP'
O campo Descrição e Descrição Resumida ser usado e será adicionado ao valor padrão.
Se precisar mudar o texto completo ou alguma outra propriedade, pode-se usar o setFields na declaração na nfs_core_ds_tabela.
Usando o setFields para manipular campos e suas propriedades:
Exemplo:
"setFields": {
"PROC_ST": {
"SYS": 0,
"DESCRICAO":"Teste de gravação",
"TIPO":"LOV1",
"LOV":{"0":"Pendente","1":"Liberado Int.","4":"Integrado","9":"Processado ERP"}
},
"PROC_DESC": {
"SYS": 0,
"DISABLED":1
},
"ID": {
"DESCRICAO":"ID DO BOLETIM"
}
}
Vídeo de exemplo: