Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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ão
  • 2: Tabela N
  • 3: Somente Leitura
  • 5: View {.grid-list}

TIPO_MOBILE

  • 1: Apontamento
  • 2: 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ção
  • override: Se os valores dos campos pela tabela de apontamento vão ser sempre sobrescritos pelos valores do BOLETIM - true ou false
  • fields: 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: