5.8 KiB
Relatório físico de Stock por período — 03/11/2026
SGF-STOCK-PERIOD-REPORT-QA-v1 disponibiliza um resumo físico no submenu Stock → Relatórios → Movimentos de stock. Para cada artigo/armazém apresenta abertura, entradas, saídas, fecho e número de movimentos no período. Reutiliza o livro e a conta SELECT-only já ligados à composição QA, sem outra tabela de saldos ou escritor.
Regra do relatório
O período é escolhido explicitamente. As datas correspondem ao registo em UTC (moved_at), convenção da aplicação de origem QA, não à data efectiva da guia. Abertura considera registos anteriores à meia-noite do primeiro dia; o período inclui esse instante e todo o último dia; o fecho exclui a meia-noite do dia seguinte.
Por linha: fecho = abertura + entradas − saídas. Entradas são quantidades positivas; saídas são o valor absoluto das negativas. Transferências/devoluções só contam se tiverem movimentos efectivamente presentes na origem, sem serem inventadas a partir de documentos. Não se somam unidades ou artigos diferentes num total geral. As designações são actuais, não uma fotografia histórica do cadastro.
Um par com saldo de abertura mantém-se visível mesmo sem movimentos no período. Um artigo sem história até ao fecho não é apresentado como existência zero. Disponibilidade, reservas, bloqueios e valorização permanecem indeterminados e fora deste relatório.
Acesso, consulta e paginação
Usa stock.view, empresa/unidade/pessoa/armazéns explicitamente mapeados, identidade física da origem e os bloqueios partilhados de autoridade do adaptador existente. A nova opção QA está desligada por omissão; não há direito novo ou alargamento da conta de leitura. O percurso de consulta anterior mantém-se disponível.
view=period em /api/stock-read exige duas datas válidas e ordenadas. Pesquisa literal por código/nome, armazém e páginas25/100 aplicam-se à mesma projecção de abertura/entradas/saídas/fecho. Os campos de data são recusados nas consultas anteriores. Referências cifradas incluem período, filtros, tamanho, pessoa/contexto e livro observado; alterações ou validade de600s exigem actualização.
O relatório usa REPEATABLE READ/READ ONLY e limite SQL de três segundos, aproveitando a revisão existente do livro/catálogo/armazéns. Agrupamento, contagem e limites são executados no servidor; o PHP recebe apenas a página pedida. A interface descarta respostas de períodos/contextos anteriores e conserva os filtros ao pedir nova referência.
Provas
Consolidação: 52 verificações — 28 API/SQL,12 de interface, duas da forma da consulta, três guardas directas e sete da demonstração. Build Vite e verificações de sintaxe concluídos. Os testes anteriores de recepção/ligação física/rastreabilidade foram reutilizados, sem repetir comandos ou suites.
A nova base de regressão contém105 pares elegíveis e114 movimentos iniciais, exclusivamente fixtures SQL de relatório. Não são recepções ou operações de negócio alegadamente executadas pelo workflow. Incluem dois armazéns autorizados, outro excluído, tenant estrangeiro, entradas/saídas nos limites do período, abertura sem movimentos, artigo apenas futuro, unidades UN/KG e quantidades superiores ao limite exacto do JavaScript. Um append adicional explícito verifica invalidação e recuperação da consulta.
Exemplo conferido: abertura10UN + entradas2,5UN − saídas3UN = fecho9,5UN. A entrada de700UN à meia-noite seguinte fica fora. Outra linha mantém exacto o fecho 9007199254740993 milésimos; SQL numeric/texto e BigInt evitam arredondamento.
Páginas25/100 percorrem o mesmo universo sem duplicações. Passaram pesquisa literal, filtros, datas impossíveis/invertidas, isolamento de módulo/unidade/armazém/permissão, contexto antigo, referência alterada/expirada/futura, alteração da origem e desactivação. Leituras preservaram artigos/armazéns/movimentos/auditoria/concessões antes do append de revisão intencional. Uma falha inicial de bootstrap duplicado no harness das guardas foi corrigida carregando uma única cópia do leitor; não exigiu alterar o pacote ou repetir a API aprovada.
A observação directa da projecção contou cinco SELECTs para25 linhas e cinco para100. O âmbito exclui autenticação, middleware e verificações físicas do host. Não é uma avaliação de carga sustentada ou memória. Os agregados ainda examinam a história elegível no SQL e podem atingir o limite em volumes maiores; não se instalaram índices.
Demonstração e limites
Nova demonstração 8085, inicialmente sem requisições principais ou movimentos: http://127.0.0.1:8085/qa/enter/validator?module=stock&open=1. Abrir Relatórios, escolher Movimentos de stock e indicar o período UTC. As provas HTTP confirmam sessão/capacidade, relatório vazio autorizado, consulta anterior, página/bundle servido e preservação. A demonstração não recebe as fixtures de volume da regressão.
A interface foi verificada por simulação de respostas e renderização React; revisão visual e acessibilidade permanecem separadas. Exportação/impressão documental, nomes históricos, restantes relatórios, carga sustentada e implantação continuam pendentes. As unidades pressupõem um cadastro coerente no livro QA; não se inferem conversões ou histórico de alterações de unidade. Antes de implantação terá de se validar a convenção temporal da origem. Estes ensaios não declaram capacidade operacional ou de implantação.
Preservados os seis registos, cache bloqueada, demonstrações, provas/checkpoints e trabalho alheio. Sem publicação, activação de Compras, migração/índice no destino, concessões reais ou aceitação/checkpoint presumidos.