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
- Migration da tabela
nfs_crud_all_customaplicada (MigrationsManagerno NFS). - Acesso ao menu admin CRUD All Custom (
/admin/crud-all-custom). MAIN_TABLEexistente no Data Structure.
Manager — lista de configs
URL: /admin/crud-all-custom
| Coluna / ação | Uso |
|---|---|
Filtros MAIN_TABLE, SLUG, ATIVO | Localizar configs |
| Nova config | Abre editor vazio |
| Editar | /admin/crud-all-custom/editor/{SEQ_DB} |
| Ativar / desativar | Registro inativo não resolve no runtime |
| Duplicar | Copia metadados + CONFIG (ajuste SLUG depois) |
| Preview runtime | Abre a tela custom em nova aba |
Lista → filtrar MAIN_TABLE → Nova config ou Editar → metadados + assistente → Validar CONFIG → Salvar → Preview 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)
| Campo | Descrição |
|---|---|
MAIN_TABLE | Tabela principal (ex.: OS) — ao mudar, recarrega campos do DS nos pickers |
SLUG | Segmento da URL; único por escopo EFL + MAIN_TABLE. Opcional: acesso só por SEQ_DB |
TITULO | Título no topo da tela |
DESCRICAO | Subtítulo opcional |
ATIVO | 1 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):
- EFL exato (empresa + filial + local do usuário)
- Filial
9999(local do usuário) - Empresa
9999(filial e local9999) - Wildcard total (
9999/9999/9999)
Abas CONFIG
| Aba | Uso |
|---|---|
| Assistente | Fluxo principal: UI, main, children, replicação |
| JSON (avançado) | Ajuste fino de chaves avançadas, importar de outro ambiente |
Assistente — seções
| Seção | Conteúdo |
|---|---|
| UI | mode (cards / classic), fields_layout, fields_columns (fixo em 2 no compact), botões no topo, cor de destaque, coluna da direita (promotedChildTableKeys) |
| Tabela principal | Título, ícone, cor do card, whitelist de campos |
| Tabelas filhas | Abas por filha: tabela (FK da principal ou avulsa), título, ícone, cor, campos |
| Avançado | Có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 doSLUG, descrição e, se habilitado, meta da tabela principal; - Cor de destaque (
ui.page.accent) em botões e detalhes quandoui.actions_in_header= true; - Cards por seção (
maine cada item dechildren[]); - 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é doNfsCrudFormAll.
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:
NfsCrudFormAllcom 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:
fields | Efeito |
|---|---|
[] (vazio) | Todos os campos do DS naquela tabela |
| Com itens | Só os listados; o serviço oculta o restante |
Tabelas filhas
- Só entram no form as declaradas em
children[]; - Filhas do
FK_DOWNnão listadas →hidden_children; - Filha em
children[]sem FK da principal → tratada comoextra_tables(o save não injeta automaticamente oSEQ_DBda 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:
| Modo | Resumo |
|---|---|
ask | Diá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 |
auto | Copia ao alterar a OS, inclusive FILTRO_VIEW; valor já editado manualmente na filha não é sobrescrito de novo |
on_click | Copia 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étodo | Path | Função |
|---|---|---|
| GET | / | Página lista |
| GET | /editor, /editor/{seqDb} | Página editor |
| POST | /api/list | Lista JSON |
| GET | /api/record/{seqDb} | Registro + CONFIG_DECODED |
| POST | /save | Criar/atualizar |
| POST | /validate | Validar 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_customcriada (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.