first commit
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user