5.0 KiB
Stock — produtos sem movimento na instalação existente
Entregue em10/11/2026 na mesma8085: Stock → Relatórios → Produtos sem movimento. Usa o direito existente stock.view, o contexto empresa/unidade/pessoa e a ligação física SELECT-only já instalada. Sem novos direitos, bases, demonstrações, índices ou comandos de Stock. Configuração de origem desligada por omissão; disponibilização limitada à instalação QA autorizada.
Significado e utilização
Escolher explicitamente o dia de corte UTC, dias consecutivos sem registo físico (1–3650), código/nome literal, armazém autorizado e página25/100. O selector de armazéns é paginado e não escolhe o primeiro registo. A opção Existências no mesmo menu abre também a consulta física existente, em vez da indicação antiga de indisponibilidade. Com corte10/11 e30 dias, o intervalo sem registo vai de12/10 às00:00 até10/11 às23:59:59…; um último movimento de11/10 ainda é elegível, um de12/10 não.
Só se conclui sobre pares artigo/armazém com movimento físico conhecido antes do fim do corte. Cada linha tem artigo/unidade, armazém, último registo UTC, dias e quantidade física exacta no corte. Artigos sem história não são atribuídos a armazéns, nem declarados inactivos ou com saldo zero. São considerados todos os tipos de movimento físico da fonte; não se classificam automaticamente causas comerciais. Metadados são actuais. Sem totais entre unidades, valorização, reservas, bloqueios ou disponibilidade. Um corte futuro consulta apenas registos conhecidos, sem prever actividade por registar.
Consulta e guardas
Agrupamento, filtros, contagem e paginação SQL, sem transportar todo o universo para PHP. Cinco SELECTs na projecção: três de revisão existente, contagem e página; exclui autenticação/guardas do host e verificação da fonte. O hash de metadados existente continua agregado na base; não se declara optimização de carga/memória dessa revisão.
Uma transacção própria REPEATABLE READ/READ ONLY e limite SQL3s. Referência cifrada600s ligada à revisão física, pessoa/contexto/filtros/tamanho; mudança exige nova leitura. A página seguinte conserva essa referência, sem a transformar em autorização de escrita. Direitos e mapeamento de armazéns são revalidados pelo controlador existente; falhas não apresentam saldos zero. O cliente descarta respostas de consultas abandonadas.
Provas dirigidas
-23 verificações na regressão existente:128 pares frios, páginas25/100, fronteira UTC30/29 dias, pesquisa literal %_!, história futura/desconhecida excluída, precisão superior ao inteiro seguro JavaScript, cinco SELECTs nos dois tamanhos, armazém fora do mapa, contexto/filtro/referência adulterada/expirada, validações, refusas de actor/unidade, leitura sem escrita e nova revisão após append explícito.
- As fixtures são127 artigos frios e quatro casos de fronteira/recentidade/futuro/sem história,131 artigos no total;131 movimentos iniciais mais um append de revisão apenas na regressão. São metadados SQL de relatório, não recepções/ordens/custos executados pelos workflows. Nenhum livro de valorização foi criado/adoptado. Linhas físicas anteriores conservadas. A regressão usa a ligação nativa existente em transacção READ ONLY para testar a projecção; a prova da role SELECT-only efectiva é HTTP na8085. Não se criou uma role de leitura na regressão.
-15 verificações HTTP reais na8085: origem SELECT-only e opção no contexto, datas/páginas/quantidades, referências inválidas/alteradas, armazém não autorizado e actor de Compras recusados. Zero POSTs de negócio; apenas a escolha normal auditada de contexto. Corte futuro explícito usado para obter história elegível sem alterar datas/movimentos existentes.
-Sete verificações do cliente: renderização estática dos campos, selector e aviso, tamanhos25/100, descarte de resposta atrasada e transporte literal do filtro. Build privado aprovado, componente diferido. Não é revisão visual de navegador nem prova de todas as interacções DOM.
-Comparação dos quatro conjuntos completos na8085 antes/depois:
stock_movements,stock_items,warehouses,gl_journalsidênticos. Diário continua27, incluindo os25 anteriores preservados pelo incremento Caixa. Não se repetiram os comandos válidos dos outros módulos.
Índice verificável: provas. Dados, perfis, credenciais e provas detalhadas ficam fora do repositório. Assets anteriores e alterações alheias retidos; sem limpar a cache, tocar nos seis registos, SGC, publicação, candidata, aceitação ou checkpoint.
Limitações
O relatório mede ausência de registo na história conhecida, não prova ausência de actividade real ou completude histórica. Não inclui produtos sem localização histórica, exportação, classificação por vendas/consumos, alertas ou criação de compras. Carga sustentada, revisão visual, conformidade e capacidade de implantação continuam separadas. Não houve ensaio de carga nem índices neste incremento.