Pular para o conteúdo principal

Problemas e limitações de vendas, clientes e fornecedores

Revisão de 08/11/2026, feita no código e com a aplicação rodando localmente.

SintomaCausa provávelO que fazer
Pedido não aparece no mêsA lista filtra pela data da vendaTroque o mês ou confira a data da venda.
Pedido excluído sumiuFoi para a lixeiraVer lixeira → Restaurar.
Cliente comprou curso e não tem acessoPedido não pago, recusado ou na lixeiraMarque como pago ou use Reprocessar pedido.
Não consigo excluir o clienteCliente com pedidosMantenha o cadastro; a exclusão só vale sem pedidos.
Total faturado diferente do total em vendasValor faturado com desconto ou acréscimoA linha mostra a diferença; confira o valor faturado.
No celular, o título do cabeçalho quebra ("Ven / das")Os botões de lista/grade e "Opções" espremem o título em telas de ~390 pxSó visual; registrado para correção no app-header.
Avatar do cliente com texto quebrado na listaO avatar padrão vem do serviço externo placehold.co, que não carregou (rede bloqueada ou offline)Cadastre uma foto no cliente; registrado para trocar por um avatar local.

Achados técnicos (para o time)​

  • Fornecedores sem escopo por empresa: GET /supplier usa $match: {}, e a policy libera todos os ProfileBusiness e ProfileCollaborator. Cada empresa vê todos os fornecedores da plataforma. Precisa decidir se é um diretório global intencional ou se deve filtrar por empresa.
  • Exclusão de cliente sem autenticação explícita: DELETE /customer/:customerId não tem auth.checkToken. Hoje a checagem de permissão falha sem usuário (falha fechada), mas a rota deveria responder 401.
    • A mesma exclusão apaga o cliente antes de conferir os pedidos e depende do aborto da transação para desfazer. A consulta de pedidos também usa o documento, e não o id.
  • POST /customer/fcm-token: rota sem autenticação. Confirmar se é intencional (registro de token do app antes do login).
  • Filtros repassados direto à consulta: GET /order repassa os parâmetros extras da query direto para o $match. Isso fica limitado à própria empresa pelo withDeclaredBusinessGuard, mas aceita operadores. Convém uma lista branca de filtros.
  • Avatar padrão externo: order-item usa https://placehold.co/400?text=<inicial> como avatar padrão. Isso cria uma dependência externa e envia a inicial do cliente a terceiros. Convém gerar o avatar localmente.
  • Fuso do mês: a régua de meses (ref) calcula o início e o fim do mês no fuso do servidor, e não no de Brasília. Uma venda às 22h do último dia pode cair no mês seguinte num servidor em UTC.