Files
SGF/docs/GENERAL_LEDGER_STOCK_VALUATION_DELIVERY.md
2026-11-04 09:37:20 +02:00

72 lines
9.8 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.
# Stock físico → valorização → diário QA
**Continuação técnica:** [conferência de dependências anteriores em lotes](STOCK_PREFIX_STREAM_DELIVERY.md),48 verificações e comparação de1.000/5.000/10.000 referências de metadados. A limitação de materialização descrita historicamente no fim deste documento foi tratada na fonte; os pacotes das demonstrações permanecem congelados e a capacidade de implantação continua pendente.
03/11/2026. `COMMON-LEDGER-STOCK-VALUATION-SIM-v1`, autorizado expressamente no [recorte](GENERAL_LEDGER_STOCK_VALUATION_SCOPE.md). **Código funcional, integração, provas e demonstração local entregues.** Nenhuma instalação, política, conta ou operação real foi activada.
## Resultado demonstrado
| Origem efectiva | Quantidade | Valorização a50MZN/UN | Lançamento artificial |
| --- | ---: | ---: | --- |
| Recepção aceite |2UN|100MZN|D QA-STOCK / C QA-COMPENSACAO-STOCK|
| Saída interna autorizada/entregue |−1UN|50MZN|D QA-CONSUMO-STOCK / C QA-STOCK|
| Excedente declarado e recebido distintamente |+0,5UN|25MZN|D QA-STOCK / C QA-CONSUMO-STOCK|
| Final |1,5UN|75MZN de stock|Consumo líquido25MZN|
Três lançamentos/seis linhas; débitos/créditos brutos175MZN. Balancete, razão e fecho QA usam o mesmo núcleo contabilístico anterior. O writer contabilístico não volta a mover quantidades, reconhecer factura/obrigação, consumir orçamento ou criar pagamento.
Recepção, requisição de armazém, submissão, autorização, entrega, reconhecimento de recepção pelo destinatário, declaração de excedente e recepção independente da devolução foram executados pelos serviços efectivos de Compras. Os writers físicos comuns e o seu livro original foram reutilizados. A ordem já emitida e os cadastros anteriores são fixture; **não se repetiu nem se declarou provado todo o procurement anterior à ordem**. A taxa50 é uma decisão de ensaio distinta, não deduzida automaticamente do preço comercial da fixture.
## Integração e controlos
`StockSchema`, `StockValuation` e `StockComposition` acrescentam origens tipadas ao mesmo `PayableJournal`; não criam um motor de lançamentos alternativo. O adaptador explícito QA usa a mesma transacção/base e o mesmo bloqueio da empresa que os serviços físicos. Revalida identidade, função organizacional, pessoa e direitos antes de comandos e repetições. O cenário utiliza os direitos contabilísticos existentes, funções físicas existentes e permissões de leitura apenas nas fixtures novas.
A taxa tem proposta/versionamento e revisão imutáveis por pessoa distinta. Uma sucessora pendente ou ausente torna o valor incompleto; uma sucessora com o mesmo montante invalida a conferência anterior. Alterar a taxa após lançamento é recusado neste recorte. Chave repetida com conteúdo diferente recusa; repetição exacta devolve o comprovativo, sem segundo efeito.
A captura conserva artigo, armazém, unidade, movimento, taxa/revisão, documentos/operadores físicos, saída original da devolução, versões e hashes. A aplicação relê esses factos. **Os movimentos físicos anteriores do livro têm de estar contabilizados primeiro**: não se valoriza saída antes da entrada ou devolução antes da saída. As dependências contabilísticas são identificadas, não lançadas automaticamente. O serviço e a guarda SQL impõem a sequência.
O SQL impede duplicação do movimento mesmo com outra chave de efeito, revista a ligação entre origem/taxa/quantidade/contas e conserva as verificações de equilíbrio/revisão distintas existentes. Foi recusada uma fonte PHP adulterada com um cêntimo adicional e outra com valor correcto mas entrada contabilística em falta. Não se alteraram triggers do livro físico.
## O que o SGF faz nesta entrega
`StockValuationRead` liga explicitamente o contexto SGF ao livro nativo autorizado com uma role SQL SELECT-only. Exige **stock.view e general_ledger.view** na unidade actual, módulo Contabilidade, token actual e identidade física QA. Fontes ausentes/incompatíveis devolvem indisponibilidade, sem inventar zero. Quantidades, lançamentos e linhas são lidos numa captura REPEATABLE READ READ ONLY, com paginação no servidor.
O SGF mostra o valor contabilizado e os movimentos ainda não valorizados, sem copiar um livro ou saldo para a sua base. A navegação só apresenta a ligação quando a composição e os dois direitos estão disponíveis. O mapeamento de tenant/empresa/unidade é explícito: o âmbito nativo0/0 não é equiparado numericamente à empresa/unidade SGF.
**Fronteira explícita:** a confirmação da valorização e a conferência completa das dependências/período correm na composição QA de origem. O SGF é observador autorizado; a sua reconciliação cobre movimentos com lançamento e IDs de taxa, não uma segunda validação independente de todas as dependências actuais. A interface SGF de preparação/confirmação de recepção permanece pendente. Não declarar Compras integralmente instalado no ERP.
## Demonstração preservada para avaliação
- [Composição de origem — preparar, rever e consultar](http://127.0.0.1:8062/qa/stock).
- [SGF — consultar o mesmo livro](http://127.0.0.1:8063/qa/stock-observer/reader?open=1).
Dados físicos iniciais2/−1/+0,5; **zero taxas propostas, zero lançamentos e zero fechos iniciais**. A equipa pode percorrer o ciclo por identidades distintas. A consulta inicial SGF diz «pendente», com três movimentos por valorizar; o valor contabilizado0 não é apresentado como valorização actual do stock.
Pacote comum/adaptador congelados em artefacto privado, manifesto SHA256 `8b3ad1c600b84c8526b2d9f453a1c5c4e174a69d6acc78ace2af4f52a25dd762`. O contrato SQL instalado e a classe de origem coincidem entre a regressão, o ensaio HTTP e a demonstração. Assets SGF compilados numa pasta pública privada desta composição; sem substituir o build ou a cache da instalação principal.
As entradas8060/8061 foram uma preparação anterior desta passagem e permanecem preservadas com o seu pacote; **não são a demonstração final da sequência reforçada**. Usar8062/8063.8059,8039 e anteriores não foram reiniciadas ou reconfiguradas. As decisões iniciais da demonstração final foram conferidas por leitura antes/depois das verificações; não houve reset para a apresentar.
## Provas e limitações
[Manifesto de resultados/fontes/hashes](proofs/common-ledger-stock-valuation-20261103.json): **146 verificações dirigidas**, mais **23 verificações da regressão nativa afectada** pelo núcleo comum. São contagens dos auxiliares aprovados; não constituem169 casos independentes de negócio.
| Prova seleccionada | Verificações | Condição |
| --- | ---: | --- |
| Taxas, origens, versões, sequência e recuperação |31|Casos com rollback e preservação de físico/financeiro/direitos|
| Concorrência |3 + dois trabalhadores|Bloqueador real observado; libertação com repetição200 ou versão de período antiga409, sem duplicação|
| Ciclo/relatórios/fecho |4|Três lançamentos/seis linhas; stock75, consumo25, um fecho|
| Isolamento/pessoa e SQL adversarial |9|Empresa/unidade/tenant, ambos os direitos na mesma pessoa, chave de efeito forjada e montante adulterado|
| SQL da sequência |3|Fonte PHP adulterada não contorna a falta de entrada contabilística|
| Percurso HTTP completo |40|Taxa→revisão→três lançamentos→relatórios→fecho, CSRF, chaves e comprovativos próprios|
| Observação SGF |23 +4|Isolamento, revogação, configuração, origem SELECT-only e alteração de unidade recusada/restaurada|
| JavaScript/React |15 +5|Incerteza sem repetição automática, resposta atrasada descartada, navegação por composição/direitos; sem navegador|
| Demonstração final |9|Leitura, pacote fixado, assets privados e decisões iniciais intactas|
As tentativas de preparação incompletas ficaram preservadas em bases próprias. Corrigiram-se auxiliares de caminho de cache Windows, definição de UN antes da emissão da fixture, normalização da quantidade da devolução e contexto/pertença Financeiro explícitos. Nenhuma guarda foi retirada para os fazer passar. A primeira passagem funcional foi reforçada depois da revisão de dependências; só as provas finais da sequência reforçada são seleccionadas no manifesto. Não somar tentativas anteriores ou suites sobrepostas. A regressão anterior foi reutilizada; repetiu-se apenas o ciclo nativo afectado e as provas que a alteração de sequência mudou.
A taxa fixa de ensaio não valida método de valorização real, fiscalidade, política de custos ou margens. O cenário é exclusivo: **não compõe o mesmo material com custos directos/industriais já lançados**; essa integração continua separada. Não há correcção de valor lançado, reabertura, salário, banco ou pagamento novo. As roles QA são proprietárias das bases novas; não se valida separação owner/runtime de implantação. Paginação foi exercitada funcionalmente, sem ensaio de carga sustentada/throughput.
A conferência de uma origem ainda materializa as referências contabilísticas anteriores do livro. A página exterior25/100 não limita esse prefixo: a memória e o custo podem crescer com o histórico. O recorte provado contém três movimentos; **não se apresenta esta implementação como solução de carga para livros extensos**. A melhoria mínima futura é obter a cobertura anterior por SQL e calcular a evidência por leitura em sequência, evitando carregar todos os IDs/snapshots anteriores. Isto é uma limitação distinta da fila administrativa, cuja leitura conjunta já está implementada e medida.
Revisão visual e capacidade de implantação permanecem pendentes. Seis registos protegidos, cache bloqueada, provas válidas, configurações/direitos reais e trabalho alheio preservados. Sem publicação, instalação no destino, activação de Compras, aceitação ou checkpoint presumidos.