feat: enforce order status checks for item addition in pedidos to prevent modifications in restricted states
This commit is contained in:
@@ -522,6 +522,16 @@ export const acceptOrder = mutation({
|
|||||||
const pedido = await ctx.db.get(args.pedidoId);
|
const pedido = await ctx.db.get(args.pedidoId);
|
||||||
if (!pedido) throw new Error('Pedido não encontrado.');
|
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') {
|
if (pedido.status !== 'aguardando_aceite') {
|
||||||
throw new Error('Este pedido não está 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).
|
// modalidade e a mesma ata (quando houver).
|
||||||
await ensurePedidoModalidadeAtaConsistency(ctx, args.pedidoId, args.modalidade, args.ataId);
|
await ensurePedidoModalidadeAtaConsistency(ctx, args.pedidoId, args.modalidade, args.ataId);
|
||||||
|
|
||||||
// --- CHECK ANALYSIS / ACCEPTANCE MODE ---
|
// --- CHECK ANALYSIS MODE ---
|
||||||
if (pedido.status === 'em_analise' || pedido.status === 'aguardando_aceite') {
|
// 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', {
|
await ctx.db.insert('solicitacoesItens', {
|
||||||
pedidoId: args.pedidoId,
|
pedidoId: args.pedidoId,
|
||||||
tipo: 'adicao',
|
tipo: 'adicao',
|
||||||
|
|||||||
Reference in New Issue
Block a user