Files
SGF/docs/SGF_STOCK_FINAL_SCOPE.md
2026-11-11 09:00:17 +02:00

54 lines
7.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Fecho dos percursos pendentes de Stock na mesma8085
Estado: **autorizado expressamente em10/11/2026 — «Autorizar este fecho QA de Stock»; implementação em curso**. É uma extensão do âmbito já executado, não outra autorização para a entrada2/saída1/devolução0,5, já concluída e valorizada100/50/25. A aprovação não é uma declaração de testes, instalação ou aceitação concluídos.
## Porque é necessária uma decisão
A matriz de conclusão ainda identifica transferência em trânsito/recepção distinta e contagem por lotes. A transferência actualmente utilizável é imediata e atómica; a contagem integrada é sem lotes. Não apresentar estas variantes como equivalentes.
A autorização anterior discriminou `stock.operations.prepare` e `stock.operations.confirm`. O controlador nativo de lotes exige funções próprias: `InventoryLots::allows`/`canActivate` exigem preparação e revisão distintas; o perfil Armazém actual não tem sequer `inventory_lot_read`/`inventory_lot_prepare`, e o revisor proposto não tem `inventory_lot_review`. Conferência feita sem conceder acessos: `scripts/sgf-stock-remaining-rights-check.php` e resultado privado indexado no relatório desta entrega.
Regra do proprietário: «Se forem necessários novos direitos, apresenta-os antes de conceder acessos.» Não usar `stock.view`, a verificação técnica de Oficina ou uma flag para contornar a falta dessas autoridades.
## Direitos mínimos propostos
Somente nos dois livros QA já existentes, instalação8085 e regressão, tenant1/empresa2/unidade2. Nenhuma conta de aplicação, role PostgreSQL ou acesso real novo.
| Camada | Função existente | Direito/acesso proposto | Limite obrigatório |
|---|---|---|---|
| SGF | QA conferência técnica (`workshop_verify`, actual utilizador12) | **novo** `stock.transfers.receive` | Receber parcelas de transferências destinadas apenas ao armazém QA1; sem emitir saídas genéricas ou receber noutra unidade. |
| SGF | A mesma função QA | **novo** `stock.lots.review` | Activação/libertação e revisão de contagem apenas do novo artigo de lotes no armazém QA integrado3. Não concede `stock.operations.confirm`. |
| Núcleo físico QA | Armazém actual, actor nativo6 | `inventory_lot_read`, `inventory_lot_prepare`, `inventory_lot_hold` | Funções existentes do núcleo, novas concessões sintéticas. Preparar/identificar/reter; não aprovar a própria configuração ou libertação. |
| Núcleo físico QA | Revisor distinto, actor nativo3 | `inventory_lot_read`, `inventory_lot_review`, `inventory_lot_release`, `inventory_adjust_review` | Funções existentes; outra pessoa para activação/libertação e aplicação da diferença do lote seleccionado. Sem função nativa genérica `warehouse`. |
A ligação privada da função12 ao actor nativo3 será explícita, fixada por hash e auditada, preservando os restantes bindings. A recepção do novo protocolo de transferência tem a nova autoridade SGF específica, identidade nativa activa e destino revalidados; não imita uma autorização genérica de armazém que o actor não possui. As permissões nativas de lotes acima são as que o código original efectivamente exige.
Não alargar os SELECTs da conta de leitura física actual: conserva as três tabelas. A consulta específica de lotes/trânsito será servida pelo adaptador autorizado, com filtros por pessoa/empresa/unidade/armazém e campos mínimos, sem expor documentos financeiros ou dados de outras origens.
## Percurso em trânsito a entregar
Transferir1UN do artigo QA já valorizado, do armazém integrado3 para o armazém QA1, mantendo propriedade na mesma empresa/unidade. Antes:1,5UN/75MZN. Após expedição:0,5UN disponíveis na origem e1UN em trânsito. Após recepção:0,5UN na origem e1UN no destino, trânsito0; valor próprio total75MZN conservado. Nenhuma alteração ao artigo original do exemplo de Compras.
Preparação/prévia, expedição e recepção são decisões explícitas. Autoridades de origem/destino e versões voltam a ser conferidas; parcelas não podem ultrapassar o enviado. Uma recusa não inventa uma devolução física: o retorno à origem necessita da sua recepção declarada. Pendências em trânsito ficam visíveis e quantificadas. Header/eventos e movimentos usam a mesma transacção e livro físico, com chave única, autor/data/fundamento/estado anterior e posterior; sem outro saldo persistido.
A transferência interna não cria receita, consumo ou outra dívida. A reconciliação contabilística deve distinguir localização disponível e propriedade em trânsito, mantendo o valor total e a referência à taxa revista. Não omitir movimentos do fecho por serem desconhecidos: a excepção interna precisa de prova de origem, propriedade, parcelas e valor reconciliados. Sem correcção de custos directos/industriais por arrasto.
## Percurso de lotes a entregar
Um terceiro artigo exclusivamente fictício `QA-LOTE-INTEGRADO`, no armazém3, com4UN em dois lotes identificados de2UN. Configuração preparada por Armazém e activada distintamente; identificação, retenção e libertação rastreáveis pelos serviços originais. Sem presumir validade de lotes reais.
Contagem explícita: lote1=1,5UN, lote2=2UN, total3,5UN; diferença−0,5UN. A contagem é observação, não ajuste automático. Outra função revê/aplica a diferença após voltar a conferir versões de lotes e livro. Taxa QA20MZN/UN preparada/revista; entrada80MZN e diferença10MZN pelo mesmo diário, com conta artificial adicional `QA-DIFERENCA-INVENTARIO`. Saldo final deste artigo3,5UN/70MZN; artigo anterior permanece1,5UN/75MZN de propriedade total. Não somar quantidades de artigos diferentes; total monetário desses dois artigos145MZN.
Sem novos tipos de imposto, salários, dinheiro, fiscalidade real ou valorização histórica. Contas/regras novas são apenas QA e têm conferência distinta. As alterações da origem, lote, contagem, taxa ou autoridade recusam a conferência antiga. O período2026 da apresentação conserva-se aberto; o fecho completo será ensaiado com rollback, sem reabertura.
## Provas e condições de entrega
- Ecrãs no mesmo SGF8085, selecção explícita de origem/destino/lotes, impacto antes de confirmar e recuperação do mesmo pedido. Não criar outra demonstração.
- Isolamento de empresa/unidade/armazém, recusa de auto-revisão, revogação, lote expirado/retido, versões antigas e soma incompatível de contagem.
- Duas recepções concorrentes não excedem a parcela restante; mesma chave não duplica eventos, movimentos ou lançamentos; erro após writer reverte também o recibo e permite recuperação.
- Saldo disponível/em trânsito/próprio e quantidades por lote reconciliam com o livro único; transferências não são contabilizadas como consumo. Ajuste e valorização conservam ligação à contagem/lotes e à taxa revista.
- Reutilizar provas válidas; testar apenas as fronteiras alteradas e o percurso novo. Sem índices no destino ou alegação de carga/implantação por inferência.
- Preservar16 lançamentos actuais, percurso C01–C10, seis registos protegidos, cache bloqueada e trabalho alheio. Sem publicação, candidata de Compras, SGC, credenciais públicas, novos servidores/bases/contas ou concessões reais.
A aprovação deste recorte abrange a implementação, as sete concessões de funções nativas acima e os dois direitos SGF apenas nos perfis QA indicados, os novos dados fictícios, regras/conta artificiais e sua disponibilização limitada depois das provas. Não será pedida nova decisão por campo/teste deste mesmo recorte. A revisão visual continua separada: a ferramenta interrompeu o controlo por não conseguir determinar o URL do navegador e não será contornada.