first commit

This commit is contained in:
2026-10-27 12:26:52 +02:00
parent 7628645fb6
commit ea9dcb3314
19 changed files with 701 additions and 1 deletions
+30
View File
@@ -220,3 +220,33 @@ Em 27/10/2026, o utilizador propôs começar pela ordem de oficina, com materiai
O custeio posterior ligará quantidade/tempo **já registados e verificados**, por ID e versão, a uma valorização e destino de custo próprios. Não voltará a registar consumo, tempo, devolução ou produção para conseguir calcular. O primeiro incremento não calcula custos nem exige que se escolha um método industrial. Uma ordem de oficina continua a ser ordem técnica; não nasce automaticamente uma ordem/lote de produção.
Assim, as fases 1/2 da secção 12 ficam inicialmente reduzidas à ordem, apontamentos e base de origem estritamente necessária; a proposta mais ampla `WORKSHOP-ASSISTANCE-DRAFT-v1` fica para evolução posterior. `INDUSTRIAL-COST-SIM-v1`, critérios CIF, custos e margens permanecem em especificação. Preservar bloqueios reais e a aceitação independente de `SGF-RECEIVABLES-SIM-v1`.
## 14. Decisões confirmadas — primeiro custo directo da ordem
Em 27/10/2026, o utilizador confirmou as três decisões seguintes. Este recorte antecede o lote industrial e a imputação de custos indirectos das secções anteriores; não converte a ordem de oficina em ordem de produção. Oficinas e recebimentos já têm aceitação própria e instalação técnica documentada; não se reabrem essas aprovações. As referências anteriores a componentes ainda não entregues são históricas e devem ser confrontadas com as respectivas entregas actuais.
### Ensaio e variante
Uma ordem sintética, empresa/unidade autorizadas, moeda MZN explícita, apenas origens técnicas verificadas e versões exactas:
| Componente | Origem reutilizada | Taxa sintética | Custo conhecido |
| --- | --- | --- | ---: |
| Material | 2 UN efectivamente consumidas e verificadas | 50,00 MZN/UN | 100,00 MZN |
| Mão-de-obra | 105 MIN efectivos e verificados; 105/60 = 1,75 H | 100,00 MZN/H | 175,00 MZN |
| **Soma do perímetro directo conhecido** | Mesma ordem e corte | Sem custos indirectos | **275,00 MZN** |
O resultado é **custo directo conhecido**, nunca custo completo, custo industrial unitário, margem ou lucro. As taxas são pressupostos identificados de ensaio, não valorização real de inventário ou política salarial.
Na variante sem taxa do material: **175,00 MZN conhecidos**, material pendente, total incompleto. Não usar zero, taxa anterior, preço de venda ou taxa de outra origem por omissão. Não apresentar 175,00 como total completo.
### Origem única e preservação
Ligar valorização e cálculo aos IDs e versões dos apontamentos existentes da oficina, sem recapturar quantidades ou criar segundo consumo/tempo. Material entregue/devolvido não substitui consumo; não descontar devolução novamente do consumo já líquido. Usar apenas apontamentos verificados elegíveis, preservando excepções e decisões técnicas. A validação de custos não altera nem valida automaticamente esses apontamentos.
Guardar a origem e versão da taxa, a unidade, moeda, composição e pendências. Alteração da origem ou taxa exige nova versão/revisão de custos; não reescrever cálculo histórico ou utilizar aprovação antiga para dependências novas. Reutilizar aritmética exacta; nenhuma regra de truncagem de IVA é transferida aos custos.
### Responsabilidades confirmadas e limites
**Osmane prepara; Samira valida a versão dos custos e das taxas.** Samira pode validar/recusar a proposta de custos, sem editar os apontamentos técnicos ou receber supervisão técnica por consequência. Testes futuros com identidades sintéticas distintas entre preparação e validação. Nenhuma nova concessão real é autorizada por estas decisões.
Lote industrial e custos indirectos ficam para incremento seguinte. Sem stock, compras, salários reais, facturação, IVA, recebimentos, lançamentos, fecho ou publicação. Manter bloqueios operacionais/fiscais e isolamento em `sgf_tempo_test` nas futuras provas. Esta confirmação fecha as decisões do recorte; não constitui ordem de implementação, migração, concessão ou activação operacional.
+19
View File
@@ -103,6 +103,25 @@ Exigem confirmação específica antes da aplicação, separada da migração. S
Entrega isolada encerrada por aceitação do utilizador, registada em [SERVICE_RECEIVABLES_ACCEPTANCE.md](SERVICE_RECEIVABLES_ACCEPTANCE.md), com checkpoint exclusivamente local. As referências anteriores a aceitação pendente descrevem o estado da entrega técnica antes deste encerramento. `070000` e as oito concessões permanecem por aplicar; os bloqueios operacionais e fiscais mantêm-se. Oficinas não exige nova aprovação e custos industriais não foram implementados.
## Instalação técnica especificamente autorizada — 27/10/2026
Após autorização expressa, foi aplicada **apenas** `2026_10_27_070000_create_simulated_receivables` em `sgf_tempo_dev`, por caminho explícito, com o proprietário separado `sgf_dev_owner`. Acrescentou-se exactamente essa entrada no registo de migrações. Não se reaplicou ou alterou a instalação de oficinas `080000`. As referências anteriores a migração/concessões pendentes descrevem o estado anterior a esta autorização.
Aplicadas exactamente oito concessões, todas tenant #1 / Tempo Lda #1 / SEGI #1:
| Conta existente | Direitos, prefixo `service_receivables.` |
| --- | --- |
| Osmane #1 | `view`, `prepare`, `allocate`, `correction_request` |
| Samira #2 | `view`, `confirm`, `reconcile`, `correction_approve` |
Cada concessão tem evento de auditoria. Não se criaram contas, direitos de gestão ou concessões para técnico/verificador. Impressões comparadas apenas em memória confirmaram a preservação dos registos das **54 tabelas preexistentes**, incluindo acessos, auditoria e oficinas. Os únicos novos registos são uma entrada de migração, oito concessões e oito eventos de auditoria; as seis tabelas novas estão vazias.
Procedimento: `scripts/receivables-dev-install.php`, dirigido à operação exacta e deliberadamente recusado se já instalada ou se contas/âmbitos/estado diferirem. Resumo local em `storage/app/private/receivables-dev-install-proof.json`, excluído do Git, sem conteúdos dos registos ou credenciais. A aplicação continua ligada como `sgf_dev_app`, sem privilégios de proprietário/administração.
Conferências no ambiente normal: listagens de recebimentos de ambas as contas bloqueadas/vazias; guarda, proposta, decisão, afectação e consumidor de eventos recusados com 403; listagem/guarda de oficinas e guarda de emissão real igualmente bloqueadas. As funções SQL de ambiente de recebimentos e oficinas recusaram `sgf_tempo_dev`. Código funcional/guardas inalterados. Não se criaram operações reais ou demonstrações na base normal. Não se repetiram testes destrutivos, compilação ou demonstração aceite por uma instalação sem alteração funcional.
Checkpoint aceite `7628645` preservado. Esta instalação técnica não activa recebimentos reais, reconciliação bancária, emissão fiscal, lançamentos, fecho ou publicação, nem altera as aprovações existentes.
## Ficheiros e limites
Código novo: `app/Modules/Services/ServiceReceivables.php`, `Http/ServiceReceivablesController.php`, `resources/js/ServiceReceivablesWorkspace.jsx`; integração em `routes/web.php` e `resources/js/app.jsx`. Migração/SQL acima. Testes e fixtures: `tests/Feature/ServiceReceivablesTest.php`, `tests/Support/ReceivablesFixture.php`; `InvoiceFixture` ganhou parâmetro de preço com valor anterior preservado por omissão. Scripts: `receivables-fixture.php`, `receivables-worker.php`, `receivables-concurrency.php`, `receivables-proof.php`, `receivables-grants-preview.php`. Documentação e provas referidas neste relatório.
@@ -0,0 +1,26 @@
{
"database": "sgf_tempo_dev",
"preexisting_tables_checked": 31,
"preexisting_records_unchanged": true,
"prior_grants_and_audit_unchanged": true,
"new_tables": {
"si_proposals": 0,
"si_decisions": 0,
"si_counters": 0,
"si_invoices": 0,
"si_events": 0,
"si_outbox": 0,
"si_commands": 0,
"si_correction_requests": 0
},
"confirmed_grants_verified": 8,
"guard_code_unchanged": true,
"real_entry_denials": {
"guard": 403,
"issue": 403,
"propose": 403
},
"real_issuance_blocked": true,
"real_series_created": false,
"documents_issued": false
}
+26
View File
@@ -0,0 +1,26 @@
{
"database": "sgf_tempo_dev",
"preexisting_tables_checked": 31,
"preexisting_records_unchanged": true,
"prior_grants_and_audit_unchanged": true,
"new_tables": {
"si_proposals": 0,
"si_decisions": 0,
"si_counters": 0,
"si_invoices": 0,
"si_events": 0,
"si_outbox": 0,
"si_commands": 0,
"si_correction_requests": 0
},
"confirmed_grants_verified": 0,
"guard_code_unchanged": true,
"real_entry_denials": {
"guard": 403,
"issue": 403,
"propose": 403
},
"real_issuance_blocked": true,
"real_series_created": false,
"documents_issued": false
}