6.6 KiB
Oficina → entrega já abatida: ligação sem novo movimento
Continuação posterior: repartição de entregas, devolução não consumida e histórico paginado. As pendências descritas abaixo registam o âmbito inicial; a continuação tem provas e limites próprios.
02/11/2026. WORKSHOP-DELIVERY-LINK-SIM-v1. Continuação da saída individual conferida: um consumo verificado pode agora ser ligado individualmente a uma saída física já existente. O efeito físico da confirmação é zero. A saída anterior e a respectiva fotografia permanecem intactas.
Tratamento entregue
A interface permite escolher explicitamente entre saída nova e ligação de uma entrega já registada. Não há opção escolhida por omissão. A preparação de ligação exige movimento, armazém, origem/versão, fundamento e evidência. A prévia identifica o movimento original, a quantidade ligada, o saldo antes/depois e a nova saída igual a zero. Outra identidade confirma o tratamento no endpoint existente, com novo fundamento.
POST /api/workshop-stock/prepare-delivery reutiliza as propostas imutáveis, os direitos workshop_stock.view/prepare/confirm, o isolamento e o circuito de confirmação. Não cria outro motor de Stock nem altera o pacote escritor ou o circuito nativo de Compras. Não foram necessários direitos novos. Nenhuma concessão real foi aplicada.
A elegibilidade é uma configuração QA explícita de movimento → ordem, além da correspondência de recurso/unidade/armazém e da elegibilidade da ordem já exigidas. Não se inferem vínculos a partir de nomes, referências ou proximidade de datas. Isto não constitui importação de histórico ou reconciliação automática de entregas antigas.
Revalidação e unicidade
Para a ligação, a origem continua a exigir consumo autorizado de material da empresa, versão actual e verificação técnica independente. A entrega deve ser uma saída simples anterior ao consumo, da mesma fonte/artigo/armazém e com a quantidade integral exactamente igual. A fotografia do movimento deve conter o hash íntegro da operação gerada pelo escritor comum. Sem essa evidência, exige-se um percurso histórico próprio.
O livro admitido neste recorte contém entradas receipt_in e saídas issue. Estornos, ajustes e transferências recusam a ligação: não se presume que uma saída revertida continua disponível para consumo. Lotes, reservas, peças e conversões continuam fora do recorte. Não é exigido saldo suficiente para uma nova saída, porque a entrega já foi abatida; foi comprovado o caso de saldo esgotado.
Na confirmação, o servidor volta a conferir direitos/contexto, fonte/versão/verificação, mapa, elegibilidade, operação/movimento e revisão/saldo do livro. A alteração exige nova conferência. Usa a transacção e o bloqueio de empresa existentes; bloqueia também os registos de origem e entrega. A unicidade da origem, movimento, operação e proposta impede uma segunda associação. O replay devolve a associação/movimento original.
Só é inserida a associação append-only, com autor da preparação/confirmação, datas, versão, fundamentos, evidência preservada na proposta, hash e antes/depois iguais. A auditoria distingue delivery_prepared e delivery_linked. Não se inserem operações/movimentos nem se editam os anteriores. Uma falha na associação desfaz a decisão e permite retoma sem duplicação.
Provas e preservação
Resultados e hashes: workshop-delivery-link-20261102.json. A regressão usa apenas novas ordens, identidades e esquemas em sgf_tempo_test, no cluster isolado/porta 55439. Sem reset. A entrega anterior e os ensaios nativos de Compras são provas separadas; não foram repetidas suites nativas porque o pacote e o adaptador nativo não mudaram.
| Casos afectados aprovados | Testes | Asserções |
|---|---|---|
| Saída nova, versões, isolamento e concorrência existentes | 6 | 222 |
| Ligação integral, recusas, saldo zero, retoma e concorrência | 5 | 163 |
| Fotografia original e acesso por outra empresa | 2 | 47 |
| Total seleccionado | 13 | 432 |
Uma passagem intermédia teve três erros de carregamento do pacote na fixture dos casos novos. Esses casos não foram contados como provas aprovadas; corrigiu-se o carregamento explícito, executaram-se os casos de ligação afectados e reutilizaram-se apenas os casos anteriores aprovados. O relatório identifica os XML e os hashes, sem declarar uma suite intermédia integralmente aprovada.
O caso principal usa o escritor comum para criar uma entrega sintética de 2 UN: saldo 10 → 8. A confirmação liga o consumo à entrega e mantém 8 → 8, os dois movimentos totais (entrada e saída), uma operação e uma associação. O mesmo movimento e a sua fotografia permanecem intactos. A consulta de Stock observa 8 no mesmo livro.
Os casos afectados abrangem repetição, autoconfirmação recusada, propostas concorrentes sobre a mesma entrega, quantidade diferente, movimento não elegível, livro alterado, elegibilidade/direitos revogados, falha/retoma e saldo zero. Dois processos PHP foram observados em bloqueio real: após a primeira transacção libertar a linha da empresa, a segunda termina com replay e o mesmo movimento, sem segunda associação. As provas anteriores de versões, isolamento e saída nova foram executadas na passagem afectada e os casos aprovados reutilizados.
O render estático verifica a apresentação de efeito zero e do movimento/quantidade ligados; a verificação de fonte confirma escolha explícita de tratamento. Build aprovado. Isto não demonstra interacção no navegador nem substitui a revisão visual.
O pós-ensaio verifica que os direitos temporários foram removidos, a constraint original foi restaurada e nenhuma fonte operacional ficou configurada. Seis registos protegidos, cache bloqueada, dados/acessos reais, demonstrações e alterações alheias preservados. Sem activação de Compras, publicação ou checkpoint.
Pendências
- Repartição de uma entrega entre vários consumos, consumo parcial e entrega com quantidade diferente: recusados; ainda não entregues.
- Devoluções, compensações físicas e revisão de uma ligação já confirmada: continuam separadas. Corrigir a origem não gera movimento nem desfaz a ligação automaticamente.
- Configuração/instalação operacional das tabelas e fontes, composição única desde procurement/recepção até consumo, outros drivers, carga da escrita e capacidade de implantação: não validados por estes ensaios.
- Revisão visual permanece pendente; não se repetiu a via de navegador bloqueada.