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

Crud All Custom — Admin e runtime

Configuração em nfs_crud_all_custom, pelo manager /admin/crud-all-custom (super admin). Runtime:

GET /t/{MAIN_TABLE}/all/{slug} ou GET /t/{MAIN_TABLE}/all/{SEQ_DB}

Salvamento: POST /t/{MAIN_TABLE}/all-custom/save/{identifier}.

O formulário de campos continua sendo o NfsCrudFormAll (validação, save transacional, replicação). O wrapper NfsCrudFormAllCustom aplica título, descrição, layout cards/classic e cabeçalho com ações.


Pré-requisitos

  1. Migration da tabela nfs_crud_all_custom aplicada (MigrationsManager no NFS).
  2. Acesso ao menu admin CRUD All Custom (/admin/crud-all-custom).
  3. MAIN_TABLE existente no Data Structure.

Manager — lista de configs

URL: /admin/crud-all-custom

Coluna / açãoUso
Filtros MAIN_TABLE, SLUG, ATIVOLocalizar configs
Nova configAbre editor vazio
Editar/admin/crud-all-custom/editor/{SEQ_DB}
Ativar / desativarRegistro inativo não resolve no runtime
DuplicarCopia metadados + CONFIG (ajuste SLUG depois)
Preview runtimeAbre a tela custom em nova aba

Lista → filtrar MAIN_TABLENova config ou Editar → metadados + assistente → Validar CONFIGSalvarPreview runtime.


Manager — editor

URL: /admin/crud-all-custom/editor (novo) ou /editor/{seqDb}

Barra superior: Preview runtime, Validar CONFIG, Salvar (habilitado quando há alterações ou registro novo).

Identificação (metadados)

CampoDescrição
MAIN_TABLETabela principal (ex.: OS) — ao mudar, recarrega campos do DS nos pickers
SLUGSegmento da URL; único por escopo EFL + MAIN_TABLE. Opcional: acesso só por SEQ_DB
TITULOTítulo no topo da tela
DESCRICAOSubtítulo opcional
ATIVO1 expõe no runtime; 0 oculta

Escopo EFL

EMPRESA, FILIAL, LOCAL — use 9999 em todos para config global (wildcard).

Prioridade no runtime (mais específico ganha):

  1. EFL exato (empresa + filial + local do usuário)
  2. Filial 9999 (local do usuário)
  3. Empresa 9999 (filial e local 9999)
  4. Wildcard total (9999 / 9999 / 9999)

Abas CONFIG

AbaUso
AssistenteFluxo principal: UI, main, children, replicação
JSON (avançado)Ajuste fino de chaves avançadas, importar de outro ambiente

Assistente — seções

SeçãoConteúdo
UImode (cards / classic), fields_layout, fields_columns (fixo em 2 no compact), botões no topo, cor de destaque, coluna da direita (promotedChildTableKeys)
Tabela principalTítulo, ícone, cor do card, whitelist de campos
Tabelas filhasAbas por filha: tabela (FK da principal ou avulsa), título, ícone, cor, campos
AvançadoCópia OS → filhas: ativar, modo (ask / auto / on_click), pares explícitos replicate_field_pairs (campo principal + tabela filha + campo filha)

Campos de UI ficam bloqueados no assistente quando ui.mode = classic (não aplicam no runtime). O banner abaixo de cada grupo explica o motivo.

JSON (avançado)

  • Formatar JSON — indentação legível.
  • Aplicar esqueleto vazio — template mínimo.
  • Atualizar aba Assistente a partir deste JSON — sincroniza formulários após edição manual.

Monte no Assistente; use JSON para replicate_excluded_fields, replicate_field_map_scope (retrocompat) e ajustes pontuais.


Runtime — layout cards

Quando ui.mode = cards (ou omitido):

  • Cabeçalho com TITULO, badge do SLUG, descrição e, se habilitado, meta da tabela principal;
  • Cor de destaque (ui.page.accent) em botões e detalhes quando ui.actions_in_header = true;
  • Cards por seção (main e cada item de children[]);
  • Layout compact: coluna esquerda com a OS; coluna direita com filhas em promotedChildTableKeys (quando há conteúdo na principal); demais filhas abaixo da OS;
  • Card rascunho (borda tracejada) para filhas ainda sem linha preenchida;
  • Salvar e Limpar tudo no topo se actions_in_header = true; senão, no rodapé do NfsCrudFormAll.

Com fields_layout = grid, os campos usam uma coluna única; fields_columns e promotedChildTableKeys não se aplicam.


Runtime — layout classic

Com ui.mode = classic:

  • NfsCrudFormAll com blocos azuis, rascunho e botões no rodapé;
  • Título e descrição do registro no topo;
  • Cards, coluna direita e cores de seção do assistente não aplicam (crudAllCustomUiRules.js).

Whitelist de campos (em relação ao Entry Point)

No custom, main.fields[] e children[].fields[] definem o que aparece:

fieldsEfeito
[] (vazio)Todos os campos do DS naquela tabela
Com itensSó os listados; o serviço oculta o restante

Tabelas filhas

  • Só entram no form as declaradas em children[];
  • Filhas do FK_DOWN não listadas → hidden_children;
  • Filha em children[] sem FK da principal → tratada como extra_tables (o save não injeta automaticamente o SEQ_DB da OS no FK — use tabelas avulsas com critério).

Ordem dos cards = ordem dos itens em children[].


Replicação no custom

Configurada no assistente (seção Avançado) ou no JSON. Mesma semântica do Entry Point CrudAll (ver replicação), com replicate_mode:

ModoResumo
askDiálogo Sim/Não antes de copiar (pares do CONFIG e campos com FILTRO_VIEW/gatilho). Após Não, não replica até nova mudança na OS ou nova interação no campo da filha
autoCopia ao alterar a OS, inclusive FILTRO_VIEW; valor já editado manualmente na filha não é sobrescrito de novo
on_clickCopia ao focar/clicar o campo pareado na filha; FILTRO_VIEW não sincroniza sozinho

No assistente não há UI para replicate_excluded_fields e replicate_field_map_scope — só na aba JSON (replicação).


Salvamento e PDF

Mesmo motor de save: modal de progresso, erro por tabela, tela de sucesso. PDF: GET /t/{table}/all/report-pdf/{seqDb} com o seqDb da principal após o save.


API admin (referência)

Prefixo: /admin/crud-all-custom

MétodoPathFunção
GET/Página lista
GET/editor, /editor/{seqDb}Página editor
POST/api/listLista JSON
GET/api/record/{seqDb}Registro + CONFIG_DECODED
POST/saveCriar/atualizar
POST/validateValidar CONFIG
POST/duplicate/{seqDb}Duplicar
GET/enable/{seqDb}, /disable/{seqDb}Ativo
GET/api/tables, /api/fields/{table}DS para pickers
GET/api/template/{name}Esqueleto JSON (minimal, etc.)

Checklist

  • Tabela nfs_crud_all_custom criada (migration NFS)
  • MAIN_TABLE + SLUG únicos no escopo EFL (se usar slug)
  • Validar CONFIG sem erros
  • Preview e runtime com usuário do EFL alvo
  • Campos obrigatórios do DS visíveis ou preenchíveis
  • Filhas FK salvam com vínculo da principal
  • Replicação testada no modo escolhido
  • PDF / relatório após save (se usado no processo)

Referência das chaves: CONFIG JSON.