Modelos pai-filho para formulários práticos de itens
Aprenda modelos pai-filho para cotações, pedidos, reembolsos e checklists, com padrões simples para formulários editáveis de itens.

Por que um registro não basta\n\nUma cotação, pedido, solicitação de reembolso ou checklist raramente descreve apenas uma coisa. A maioria desses formulários tem um registro principal no topo e várias entradas menores abaixo. Se você tentar forçar tudo em um único registro, o formulário fica difícil de ler, difícil de editar e fácil de quebrar.\n\nUm campo longo de texto pode parecer mais simples a princípio, mas causa problemas quase imediatamente. As pessoas não conseguem adicionar um item de forma limpa, corrigir uma linha sem tocar no resto ou remover informações desatualizadas com confiança. A validação também fica mais fraca, porque o sistema vê um bloco de texto em vez de itens claros e separados.\n\nPense em uma cotação de vendas. Um pedido de cliente pode incluir cinco produtos, e cada um precisa de sua própria quantidade, preço unitário, desconto e observação. Uma solicitação de reembolso funciona da mesma maneira. Uma submissão pertence a um funcionário, mas cada despesa tem sua própria data, categoria, valor e status de recibo.\n\nÉ aí que um modelo pai-filho ajuda. O registro pai armazena os detalhes compartilhados do formulário, como o solicitante, data, departamento ou status de aprovação. Os registros filho armazenam os itens por linha. Cada linha pode ser adicionada, editada ou excluída sozinha sem danificar o registro principal.\n\nEssa separação torna o formulário mais fácil de usar e mais confiável para as equipes. Se uma linha tem o valor errado ou um campo faltando, você pode corrigir apenas essa linha. O restante do registro permanece intacto.\n\nO mesmo padrão funciona para checklists editáveis. O checklist pode ter um dono e um prazo, enquanto cada tarefa tem seu próprio rótulo, responsável, observação e estado de conclusão. Detalhes compartilhados ficam em um lugar; detalhes dos itens ficam onde pertencem.\n\n## Como registros pai e filho funcionam\n\nUm formulário com linhas é mais fácil de gerenciar quando você o divide em duas partes: um registro principal e vários registros de item relacionados.\n\nO registro pai contém informações que devem aparecer apenas uma vez. Em uma cotação, isso pode ser o cliente, data da cotação, dono de vendas e status atual. Em uma solicitação de reembolso, pode ser o nome do funcionário, departamento, data de envio e estágio de aprovação.\n\nCada registro filho armazena um item editável vinculado ao pai. Em uma cotação, um filho pode representar uma linha de produto ou serviço. Em um checklist, um filho pode ser uma tarefa. Em um formulário de reembolso, cada filho geralmente é uma despesa com campos como categoria, valor, data da despesa e observação do recibo.\n\nA maneira mais simples de pensar nisso é: \n\n- Pai: detalhes compartilhados para todo o formulário\n- Filho: uma linha, um item, uma ação\n- Ligação: um campo no filho que aponta para seu pai\n\nEssa estrutura importa porque totais e resumos devem vir das linhas filhas, não de digitação manual no pai. Quando alguém adiciona, remove ou edita um item, o total deve atualizar a partir dos dados reais. Isso reduz erros e torna as aprovações mais confiáveis.\n\nTambém torna a validação mais precisa. Você pode exigir uma quantidade, rejeitar um valor negativo ou sinalizar uma data faltando em uma linha sem travar todo o formulário.\n\n## Usos comuns no dia a dia\n\nVocê vê esse padrão sempre que um registro precisa de muitas linhas editáveis abaixo dele.\n\nCotações são um exemplo claro. Um representante de vendas cria uma cotação e adiciona uma linha para cada produto ou serviço. Cada linha pode precisar de nome do item, quantidade, preço unitário, desconto, imposto ou observação, enquanto o pai mantém o cliente, data e status de aprovação.\n\nPedidos usam a mesma ideia, mas as linhas frequentemente carregam mais detalhes operacionais. Um pedido pode incluir vários produtos, e cada linha pode precisar de status de estoque, notas de armazém, detalhes de envio ou datas de atendimento. Os itens por linha movem o trabalho que acontece depois do pedido.\n\nFluxos de reembolso são outro caso comum. Uma solicitação pertence a um funcionário e a um período de reporte, mas pode conter muitas despesas. Cada linha de despesa normalmente precisa de data, valor, categoria, fornecedor e referência do recibo. Gerentes costumam revisar essas linhas uma a uma em vez de tratar toda a solicitação como um único sim ou não.\n\nChecklists se encaixam no mesmo modelo, mesmo quando parecem mais simples. O registro pai pode ser um plano de integração, inspeção de local ou revisão semanal. Cada linha filha vira uma tarefa com seu próprio estado de conclusão, observação, responsável ou data de vencimento.\n\nUm bom teste é simples: o formulário tem um cabeçalho e muitas linhas que as pessoas precisam adicionar, editar ou remover? Se sim, uma estrutura pai-filho costuma ser a escolha mais limpa.\n\n## Planeje a estrutura antes de construir\n\nBons formulários geralmente começam com uma pergunta: o que pertence ao registro inteiro e o que se repete em cada linha?\n\nResponda isso primeiro e muitos problemas posteriores desaparecem. Você evita campos duplicados, totais confusos e linhas difíceis de gerenciar.\n\nPara o registro pai, mantenha apenas os campos que descrevem o documento completo. Em uma cotação, isso pode ser nome do cliente, data da cotação, moeda, representante de vendas e status geral de aprovação. Em uma solicitação de reembolso, pode ser nome do funcionário, departamento, data de envio e decisão final.\n\nPara os registros filho, mantenha os campos que pertencem a cada linha. Isso pode incluir nome do item, quantidade, preço unitário, data da despesa, categoria, tipo de recibo, rótulo da tarefa ou observações da linha. Se um valor pode ser diferente em cada linha, ele provavelmente pertence ao filho.\n\nUm teste útil é este: se você excluir uma linha, o valor deve desaparecer com ela? Se a resposta for sim, esse campo provavelmente pertence ao registro filho.\n\nCada linha também deve ter um ID único. Não dependa apenas da posição da linha, como primeiro, segundo ou terceiro. Um ID de linha torna muito mais fácil editar uma despesa específica, restaurar um item excluído ou rastrear o que mudou.\n\nAntes de construir, decida como as pessoas vão trabalhar com as linhas. Elas podem adicionar uma nova linha, duplicar uma, remover, reordenar ou filtrar uma lista longa? Decida também quando os totais e estados devem atualizar. Algumas equipes querem que os totais se atualizem assim que uma linha muda. Outras preferem atualizações apenas quando o registro é salvo ou enviado. Qualquer abordagem pode funcionar, mas a regra deve ser consistente.\n\nRegras de status também importam. Se uma despesa é rejeitada, a solicitação inteira volta a rascunho, permanece pendente ou passa para parcialmente aprovada? É muito mais fácil responder essas perguntas cedo do que depois que os usuários começam a depender do formulário.\n\n## Facilite a edição para quem usa o formulário\n\nUm formulário com linhas funciona melhor quando as pessoas conseguem ver os detalhes do pai e as linhas de itens juntos. Coloque o registro principal no topo e mostre a tabela editável logo abaixo. Se alguém está criando uma cotação, deve poder confirmar o cliente, data e status antes de começar a adicionar produtos.\n\nEsse layout simples reduz erros porque as pessoas não precisam pular entre telas só para checar o que estão editando.\n\n### Mantenha toda a tarefa em uma tela\n\nAdicionar uma nova linha deve ser rápido. Um botão claro Adicionar item acima ou abaixo da tabela geralmente é suficiente. Quando alguém clicar, abra uma linha em branco ou um pequeno formulário inline em vez de enviar para outra página.\n\nIsso importa especialmente em formulários longos. Se uma pessoa tem dez despesas para inserir, cada clique extra a deixa mais lenta e aumenta a chance de erro.\n\nAs ações de linha mais úteis costumam ser as mais simples: adicionar, duplicar, excluir e, às vezes, mover. Duplicar é especialmente útil quando várias linhas são semelhantes, como noites de hotel repetidas ou itens de checklist com pequenas diferenças.\n\n### Mostre erros onde eles acontecem\n\nFormulários longos devem salvar o trabalho parcial automaticamente ou pelo menos permitir salvar como rascunho. Perder vinte minutos de edições nas linhas porque uma aba fechou é uma das maneiras mais rápidas de tornar um formulário pouco confiável.\n\nA validação deve ser igualmente clara. Se uma linha tem um valor faltando ou uma quantidade inválida, mostre o erro naquela linha e campo exatos. Não faça as pessoas procurarem o aviso vago pelo formulário todo.\n\nSe sete linhas de despesa estão corretas e uma está sem número de recibo, marque apenas essa linha. Mantenha o resto da solicitação intacto e deixe a pessoa corrigir o problema no lugar.\n\n## Exemplo: uma solicitação de reembolso com várias despesas\n\nUma solicitação de reembolso mostra exatamente por que esse modelo funciona tão bem. Uma solicitação atua como registro pai e cada despesa vira uma linha filha.\n\nO pai contém os detalhes que se aplicam à reivindicação inteira: nome do funcionário, período da solicitação, gerente e status geral. Esse status pode mudar de Rascunho para Enviado, depois para Parcialmente aprovado ou Aprovado.\n\nCada linha de despesa armazena os detalhes que pertencem somente àquele item. Uma linha pode conter comerciante, data da compra, valor, categoria e recibo de um táxi. Outra pode conter os mesmos campos para uma conta de hotel.\n\nUma solicitação simples pode incluir três linhas: \n\n- City Taxi, 3 de maio, $28, Viagem, recibo anexado\n- Grand Hotel, 4 de maio, $180, Hospedagem, recibo anexado\n- Corner Cafe, 4 de maio, $14, Refeições, sem recibo\n\nEssa estrutura importa porque os gerentes frequentemente revisam as linhas de reembolso uma a uma. O táxi e o hotel podem ser aprovados, enquanto a refeição pode ser rejeitada com um motivo curto como "Recibo faltando" ou "Refeição excede o limite diário."\n\nUma linha rejeitada não deve arruinar toda a solicitação. O funcionário ainda deve ser reembolsado pelos itens aprovados, e a linha rejeitada deve permanecer visível com sua razão anexada. Isso torna o processo mais fácil de entender e auditar depois.\n\nOs totais devem vir das linhas filhas, não de um número digitado manualmente no pai. Muitas equipes mantêm dois totais: o total submetido com base em todas as linhas incluídas e o total aprovado apenas com base nas linhas aceitas. Isso deixa claro por que o pagamento pode ser menor que a solicitação original.\n\n## Totais, aprovações e mudanças de status\n\nUm formulário com linhas começa a parecer confiável quando números e status atualizam no momento certo.\n\nSe um usuário muda uma quantidade, preço ou valor da despesa, os totais devem recalcular com base nessa mudança. Esperar até o envio final costuma criar confusão, especialmente quando descontos, impostos ou limites de aprovação estão envolvidos. Na maioria dos casos, o total do pai deve ser calculado, não editável.\n\nRegras de aprovação precisam do mesmo nível de clareza. Depois que um registro é totalmente aprovado, decida se as linhas devem ser bloqueadas. Se linhas aprovadas permanecerem editáveis, os dados podem divergir do que o gerente realmente aprovou.\n\nÀs vezes a aprovação acontece linha a linha em vez de tudo de uma vez. Reembolsos são um bom exemplo. Viagens podem ser aprovadas, refeições parcialmente rejeitadas e outra despesa enviada de volta para esclarecimento. Nesse caso, cada linha filha precisa de seu próprio status enquanto o pai mantém o estado geral.\n\nUm conjunto curto de estados gerais costuma ser suficiente: \n\n- Rascunho\n- Em revisão\n- Parcialmente aprovado\n- Aprovado\n- Rejeitado\n\nEssa separação mantém o formulário honesto. O pai diz em que situação a solicitação está e as linhas filhas explicam o que aconteceu com cada item.\n\nTambém ajuda manter um histórico simples para campos importantes como valor, status, aprovador ou total. Você nem sempre precisa de um sistema de auditoria completo desde o dia um, mas precisa de histórico suficiente para explicar mudanças-chave.\n\nLinhas excluídas também precisam de uma regra. Antes da revisão, uma exclusão definitiva pode ser aceitável. Depois que a revisão começa, arquivar costuma ser mais seguro do que remoção total para que totais passados e decisões de aprovação ainda façam sentido.\n\n## Erros que minam a confiança\n\nA confiança cai rápido quando um formulário parece limpo na tela, mas armazena dados bagunçados por baixo.\n\nUm dos erros mais comuns é misturar campos do pai e campos de item em uma única tabela plana. Uma cotação, pedido ou solicitação de reembolso tem detalhes que pertencem ao todo, como solicitante, data ou status de aprovação. Suas linhas têm detalhes próprios, como nome do item, valor, quantidade ou data do recibo. Quando isso é misturado, edições ficam confusas, relatórios ficam mais difíceis e dados duplicados se espalham rápido.\n\nOutro problema comum é permitir que as pessoas digitem totais manualmente quando o sistema deveria calculá-los. Se alguém insere três linhas de despesa e depois digita um total geral separadamente, os números podem discordar. Depois que isso acontece algumas vezes, os revisores param de confiar no formulário.\n\nUma grande caixa de texto livre causa problema similar. Pode parecer mais rápido pedir que os usuários colem todos os itens em um campo, mas texto não estruturado é difícil de validar, ordenar, filtrar ou aprovar. Linhas estruturadas exigem mais planejamento, mas são muito mais fáceis de gerenciar depois.\n\nVerificações por linha também costumam ser esquecidas. Linhas vazias, datas inválidas, entradas duplicadas, valores negativos e itens meio completos devem ser capturados antes que o formulário avance. A maioria dos erros reais acontece dentro das linhas filhas, não no cabeçalho.\n\nA exclusão é outro ponto fraco. Se os usuários podem remover linhas com um clique e sem confirmação, dados importantes podem desaparecer por acidente. É pior quando não há registro de quem fez a mudança.\n\nUma abordagem mais segura é simples: confirme a exclusão de linha, mantenha campos calculados bloqueados e registre as mudanças-chave que as pessoas fazem.\n\n## Verifique antes do lançamento\n\nAntes de publicar um formulário com linhas repetidas, teste-o da forma como usuários reais vão usar.\n\nComece pelo básico. Garanta que um usuário possa adicionar, editar, duplicar e remover linhas sem perder outros dados. Verifique que o formulário se comporta bem com dez linhas, depois com cinquenta ou cem. Erros devem aparecer na linha exata que precisa de atenção, não apenas no topo da página.\n\nDepois teste o que acontece após mudanças. Atualize uma quantidade, exclua uma linha, duplique um item e mude um status. Depois de cada ação, confirme que o registro pai ainda mostra os totais, contagens e estado resumo corretos.\n\nTeste também os casos extremos que normalmente revelam pontos fracos: todas as linhas removidas, uma linha inválida entre muitas válidas, entradas duplicadas, valores zero, notas longas e edições feitas após o envio.\n\nUm formulário está pronto quando permanece claro em uso normal e ainda se comporta de forma previsível em condições bagunçadas do dia a dia.\n\n## Construa em um app no-code\n\nSe você estiver construindo isso em um app no-code, comece com um fluxo que as pessoas já entendem, como reembolsos ou cotações. Construa a estrutura de dados primeiro, depois adicione as regras que conectam o registro pai às suas linhas filhas e só depois aperfeiçoe o layout.\n\nUsar dados de exemplo reais ajuda muito mais do que dados de teste perfeitos. Insira duplicatas, notas faltando, valores corrigidos e linhas incompletas. Esses casos mostram onde o formulário fica confuso e onde a confiança começa a escorregar.\n\nAppMaster é uma boa escolha para esse tipo de construção porque a estrutura pai-filho mapeia naturalmente para modelos de dados separados, formulários relacionados e lógica de negócio em um só lugar. Se o processo crescer depois, AppMaster também permite transformar o mesmo modelo central em backend, app web e app móvel nativo sem reconstruir o fluxo do zero.\n\nO objetivo principal é o mesmo, não importa a ferramenta: mantenha o registro pai limpo, mantenha cada linha editável separadamente e deixe que totais e estados venham dos dados reais. Quando essa parte está certa, formulários por linha ficam muito mais fáceis de usar e muito mais confiáveis.
FAQ
Porque um único registro normalmente mistura detalhes compartilhados com detalhes repetidos de itens. Um modelo pai-filho mantém o cabeçalho limpo e permite que cada linha seja adicionada, editada, validada ou removida sem quebrar todo o formulário.
Coloque valores no pai se eles descrevem todo o documento, como solicitante, cliente, data, departamento ou status geral. Coloque valores no filho se eles podem variar de linha para linha, como quantidade, valor, categoria, nota ou data de vencimento.
Use quando um formulário tem um cabeçalho e muitas linhas editáveis abaixo dele. Cotações, pedidos, reembolsos e checklists são exemplos comuns porque cada linha precisa de seus próprios campos e ações.
Sim. Dê a cada linha filha seu próprio ID em vez de depender só da posição da linha. Isso facilita editar, rastrear mudanças, restaurar itens excluídos e sincronizar atualizações com segurança.
Geralmente sim. O padrão mais seguro é calcular os totais a partir das linhas filhas e manter o total do pai somente leitura. Isso evita discrepâncias e facilita a confiança nas aprovações.
Mostre o erro exatamente na linha e no campo que o causou. Se um item estiver errado, as pessoas devem poder corrigir aquela linha em seu lugar sem perder o resto do formulário.
Nem sempre. Se os revisores aprovam item por item, cada linha filha deve ter seu próprio status enquanto o pai mantém o estado geral. Isso funciona bem para reembolsos em que alguns gastos são aprovados e outros rejeitados.
Antes da revisão, a exclusão completa pode ser aceitável. Depois que a revisão começa, arquivar costuma ser mais seguro porque os totais e decisões de aprovação anteriores ainda precisam fazer sentido.
Mantenha os detalhes do pai e as linhas editáveis na mesma tela quando possível. Ações como adicionar item, duplicar e excluir devem ser fáceis de encontrar, e salvar rascunhos ou trabalho parcial ajuda a evitar frustração em formulários mais longos.
Comece com modelos de dados separados para pai e filho, depois adicione as regras para ligações, totais e estados. AppMaster se encaixa bem nisso porque você pode modelar dados relacionados, adicionar lógica de negócio e transformar o mesmo fluxo em backend, web e apps móveis nativos.


