diff --git a/packages/backend/convex/pedidos.ts b/packages/backend/convex/pedidos.ts index 3a0d976..cacf126 100644 --- a/packages/backend/convex/pedidos.ts +++ b/packages/backend/convex/pedidos.ts @@ -522,6 +522,16 @@ export const acceptOrder = mutation({ const pedido = await ctx.db.get(args.pedidoId); if (!pedido) throw new Error('Pedido não encontrado.'); + // Só é permitido adicionar itens em pedidos em rascunho, aguardando aceite ou em análise. + // Nos demais status (ex.: precisa_ajustes, concluído, cancelado etc.) a inclusão é bloqueada. + if ( + pedido.status !== 'em_rascunho' && + pedido.status !== 'aguardando_aceite' && + pedido.status !== 'em_analise' + ) { + throw new Error('Não é possível adicionar itens neste status de pedido.'); + } + if (pedido.status !== 'aguardando_aceite') { throw new Error('Este pedido não está aguardando aceite.'); } @@ -658,8 +668,10 @@ export const addItem = mutation({ // modalidade e a mesma ata (quando houver). await ensurePedidoModalidadeAtaConsistency(ctx, args.pedidoId, args.modalidade, args.ataId); - // --- CHECK ANALYSIS / ACCEPTANCE MODE --- - if (pedido.status === 'em_analise' || pedido.status === 'aguardando_aceite') { + // --- CHECK ANALYSIS MODE --- + // Em pedidos em análise, a inclusão de itens deve passar por fluxo de aprovação. + // Em rascunho ou aguardando aceite, a inclusão é direta, sem necessidade de aprovação. + if (pedido.status === 'em_analise') { await ctx.db.insert('solicitacoesItens', { pedidoId: args.pedidoId, tipo: 'adicao',