Files
SGF/docs/STOCK_MENU_DELIVERY.md
T
2026-11-02 20:29:34 +02:00

60 lines
7.9 KiB
Markdown

# Menu de Stock no SGF
Preparação posterior, 02/11/2026: [fluxo integrado](SGF_MODULE_FLOW_PREPARATION.md) e [consulta comum delimitada](STOCK_READ_SCOPE.md). A inspecção actual encontrou também fontes `InventoryLots`, `InventoryCounts`, `InventoryDispositions`, `InventoryReversals` e `WarehouseReservations` em Compras. As ausências identificadas no inventário histórico abaixo não devem ser usadas para reconstruir essas capacidades sem conferir a fonte actual. Isto não declara a sua integração/activação no SGF: o menu continua informativo.
29/10/2026. Implementada a estrutura de navegação do documento **Menu Stock.docx**, com estado de disponibilidade explícito. **Não está entregue um motor operacional de stock no SGF.** A composição SGF ainda não tem fonte de armazéns/saldos/movimentos ligada. Compras conserva a sua implementação e os seus dados.
## Referência e leitura do existente
Fonte fornecida pelo responsável: `C:/Mac/Home/Documents/TEMPO/Portal Tempo/Servicos Tempo/ERP TEMPO/Menu Stock.docx`, 186 blocos de texto/tabelas lidos, SHA-256 `db4707b137a3083649ff5492c4d82da71402443d5bc11fd5ac13a970aaa6da48`. Original preservado. O documento foi utilizado como referência funcional; as propostas de confirmações, estornos e permissões não foram tratadas como autorização para efectuar movimentos reais ou conceder direitos.
| Capacidade | Compras existente | SGF nesta entrega |
| --- | --- | --- |
| Artigos, armazéns, saldos e movimentos | `app/Http/Controllers/StockController.php`: consulta por artigo/armazém, pesquisa e histórico; criação de cadastros conforme papel. | Menu Existências com estado de fonte indisponível. Nenhum saldo importado ou criado. |
| Entradas de compra | `app/Services/ReceiptWorkflow.php`: recepção parcial da ordem, quantidades recebidas/aceites e movimento de stock da quantidade aceite, quando aplicável. | Identifica o percurso existente e o adaptador em falta. Não cria uma segunda entrada por factura ou obrigação. |
| Saídas | `app/Services/StockWorkflow.php`: actor Armazém, revalidação de contexto/actor, bloqueio da empresa, saldo não negativo, referência única, chave de repetição, fotografia e auditoria. | Menu e campos/etapas previstos, sem comandos ou alteração de quantidades. |
| Transferência | `StockWorkflow.php`: saída e entrada imediatas na mesma transacção, com origem e destino distintos. | Explicita a diferença face à proposta de expedição → trânsito → recepção. Não simula trânsito nem declara esse fluxo entregue. |
| Contagens e ajustes | `StockWorkflow.php`: contagem ligada à versão do livro, sem movimento; ajuste único ligado à contagem e recusado se houver movimentos posteriores/incompatibilidade. | Identificados como percurso a reutilizar futuramente, sem ajuste genérico ou edição de saldo no menu. |
| Devoluções físicas | O fluxo completo do Word não foi identificado nos controladores/serviço de stock existentes. | Indisponível; distingue cliente/fornecedor, devolução física, nota de crédito e devolução de dinheiro. |
| Materiais de oficina | Não foi criada ligação implícita entre aplicações. | `app/Modules/Workshop/WorkshopWorkflow.php` e `WorkshopWorkspace.jsx` mantêm observações de material, sem stock. O menu não converte apontamentos em saldo de armazém. |
| Reservas, bloqueios, mínimos, lotes, séries, validade e valorização | Não presumidos a partir do saldo físico de `quantity_milli`. | Sem configuração/fonte no SGF; não se substituem por zero, custos estimados ou opções operacionais fictícias. |
A futura adaptação tem de preservar a representação de quantidades existente em milésimos, as protecções e as origens. Não foi feita extracção do serviço nesta entrega nem criada uma segunda cópia do motor. Não se equipararam o tenant de Compras e a empresa/unidade/armazém SGF.
## Navegação entregue
Abrir **http://127.0.0.1:8002/avaliar**, escolher **Preparar e gerir** e abrir **Stock — Em preparação**.
- **Painel:** explica a ausência de fonte de indicadores e encaminha para os restantes submenus, sem valores ilustrativos.
- **Existências:** distingue físico, reservado, bloqueado e disponível; consulta indisponível sem lista vazia que sugira ausência de stock; sem edição directa de saldo.
- **Entradas:** apresenta campos, etapas e origem do percurso previsto, capacidade já existente em Compras e adaptação em falta.
- **Saídas:** distingue expedição, consumo e abate; não desconta quantidades observadas na oficina.
- **Transferências:** distingue transferência imediata existente do transporte com recepção separada ainda ausente.
- **Devoluções:** apresenta sentidos, origem, elegibilidade e tratamento previstos, sem movimentos físicos ou financeiros.
- **Relatórios:** Existências por armazém, Movimentos e Stock mínimo mostram fonte indisponível. Não se disponibilizam geração, impressão ou exportação fictícias. Valorização fica sem dados de custos/selector autorizado; os relatórios complementares só serão expostos quando as capacidades correspondentes estiverem activas.
Os atalhos do início e o grupo lateral identificam o estado **Em preparação** antes da entrada. A página Peças e stock da oficina liga ao mesmo menu e conserva a distinção entre observações materiais e armazém. Não foi acrescentada dependência de um servidor SGF/Compras remoto, leitura cruzada de bases ou autenticação implícita noutra aplicação.
`company.view` permite ver apenas este mapa informativo no contexto autorizado. **Não concede stock.view, acesso a armazéns, visualização de custos ou qualquer operação.** A futura integração operacional exige permissões próprias, revalidadas no servidor. Nenhuma concessão foi criada nesta entrega.
## Ficheiros
- `resources/js/stock-menu.js`: entradas, descrições dos percursos e relatórios condicionais, sem cálculo/persistência.
- `resources/js/StockMenuWorkspace.jsx`: páginas de disponibilidade, campos/etapas previstos, distinção Painel/Relatórios e ausência de fonte.
- `resources/js/WorkspaceNavigation.jsx`: grupo Stock e indicação de estado.
- `resources/js/WorkspaceHome.jsx`: estado dos atalhos informativos.
- `resources/js/app.jsx`: montagem das páginas no contexto actual.
- `resources/js/WorkshopMenuWorkspace.jsx`: ligação da oficina ao menu comum de Stock.
- `resources/css/app.css`: disposição responsiva das entradas, cartões e definições.
- `scripts/stock-menu-check.mjs`, `docs/proofs/stock-menu.json`: verificação técnica.
## Provas e limite da entrega
Passaram o check dos sete submenus, consulta sem autorização, contexto de empresa distinto, ausência de valores/saldos fabricados, relatórios condicionais ocultos, ausência de formulários operacionais e ausência de dados de custos. O check de início/navegação anterior continua aprovado. **Compilação Vite aprovada**, sem alterações de dependências.
São verificações de renderização estática e compilação, **não revisão visual/interactiva nem ensaio operacional de stock**. Não foram usados endpoints de stock, executados movimentos, alteradas bases, concedidos acessos ou criadas instâncias/contas. Não se modificou código em Compras. As provas de concorrência/idempotência do seu motor não foram repetidas nem atribuídas a um adaptador SGF inexistente.
Os controlos operacionais do Word permanecem por implementar/adaptar no SGF: fonte comum/adaptadores, permissões por armazém e custos, documentos e confirmação, reservas/bloqueios, trânsito/recepções, devoluções/estornos e relatórios reconciliados. Antes dessa ligação deve ser delimitado o reaproveitamento do `StockWorkflow`/recepção existente e demonstrada a equivalência em testes isolados, sem recálculo ou duplicação de movimentos históricos. Isso é próximo trabalho, não uma capacidade entregue pelo menu.
Sem publicação, push, checkpoint ou aceitação presumidos. O acesso ao domínio público permanece separado desta navegação local.