377 lines
13 KiB
JSON
377 lines
13 KiB
JSON
{
|
|
"date": "2026-11-10",
|
|
"contract_sha256": "12a783dd869de795e4cc67e2ce62d538d12f0707492d5b9e66dc18be5d074f52",
|
|
"installation": "cc50a276c10c",
|
|
"port": 8085,
|
|
"sgc_dependency": false,
|
|
"modules": [
|
|
{
|
|
"id": "commercial",
|
|
"label": "Comercial",
|
|
"features": [
|
|
"Clientes e serviços com associação explícita",
|
|
"Rascunho, revisão e cálculo",
|
|
"Documento emitido de teste e PDF",
|
|
"Continuação para recebível sem duplicação"
|
|
],
|
|
"sources": [
|
|
{
|
|
"file": "app/Modules/Services/ServiceWorkflow.php",
|
|
"present": true,
|
|
"sha256": "6f5c8af14412427134f1c40bda9215de68b3a66d46ed2287b59895f68b929179"
|
|
},
|
|
{
|
|
"file": "app/Modules/Services/ServiceInvoicing.php",
|
|
"present": true,
|
|
"sha256": "b5ac9898f2089fad7799b9e62e5ce5db6df7fd64643e8e7e3b52c6a0e2d142a8"
|
|
},
|
|
{
|
|
"file": "resources/js/ServicesWorkspace.jsx",
|
|
"present": true,
|
|
"sha256": "c170b195ccd78aa74f283a91b0b4f4cd93aea4677e3aaefe0b50af46f7e31669"
|
|
},
|
|
{
|
|
"file": "resources/js/ServiceInvoiceWorkspace.jsx",
|
|
"present": true,
|
|
"sha256": "347869a371084ae91bd7d651334f67f16369495263f28b8b8348bc442f7d6534"
|
|
}
|
|
],
|
|
"existing_evidence": [
|
|
{
|
|
"file": "docs/proofs/invoice-test-results.json",
|
|
"present": true,
|
|
"sha256": "fd04a58727ffddf1c62ac184d7834b81228dce2abb5b0c1e397505df6a45237c",
|
|
"not_reexecuted": true
|
|
}
|
|
],
|
|
"missing_host_tables": [
|
|
"b_internal_confirmations",
|
|
"doc_records",
|
|
"document_preview_models",
|
|
"service_calculation_profiles",
|
|
"sf_proposals",
|
|
"si_invoices"
|
|
],
|
|
"client_presentable": false,
|
|
"remaining": [
|
|
"Compor estruturas e guardas sintéticas na instalação única",
|
|
"Conservar o documento e identidade entre Comercial e Financeiro",
|
|
"Provar o percurso por interface na mesma empresa/unidade de apresentação"
|
|
],
|
|
"integrated_release_verified": false
|
|
},
|
|
{
|
|
"id": "purchasing",
|
|
"label": "Compras",
|
|
"features": [
|
|
"Fornecedores e revisão distinta",
|
|
"Requisição até adjudicação e ordem",
|
|
"Recepção, documento e stock único",
|
|
"Factura conferida e obrigação reconhecida"
|
|
],
|
|
"sources": [
|
|
{
|
|
"file": "app/Modules/Purchasing/ReceiptRuntime.php",
|
|
"present": true,
|
|
"sha256": "9b426476b2805094fb317cc753385ef43882fb4964883e880eac287eed89d9e0"
|
|
},
|
|
{
|
|
"file": "app/Modules/Purchasing/RequestController.php",
|
|
"present": true,
|
|
"sha256": "c5c2b78866be7f0e1c8ba09c1af538cefcfbafbea81197833b50821bba0fcbca"
|
|
},
|
|
{
|
|
"file": "app/Modules/Purchasing/InvoiceController.php",
|
|
"present": true,
|
|
"sha256": "85eb46ca7e65c60bed190e592a134eb48db5762c0a90b8cd4c9d6fbd81198ba4"
|
|
},
|
|
{
|
|
"file": "app/Modules/Purchasing/ObligationController.php",
|
|
"present": true,
|
|
"sha256": "347e629306d6c1f4873afac547d13fae8ade7b268906d1312a64e7eb6998e701"
|
|
}
|
|
],
|
|
"existing_evidence": [
|
|
{
|
|
"file": "docs/proofs/purchasing-completion-final-20261104-r2.json",
|
|
"present": true,
|
|
"sha256": "3b63f8653e8dbb089dfdd8f389e271c022a070d5a67a9f9d4585ce84438070cc",
|
|
"not_reexecuted": true
|
|
}
|
|
],
|
|
"missing_host_tables": [],
|
|
"client_presentable": false,
|
|
"remaining": [
|
|
"Reutilizar o percurso aceite sem o reexecutar por rotina",
|
|
"Ligar a continuação financeira e contabilística da mesma origem",
|
|
"Conservar a composição local sem serviço SGC obrigatório"
|
|
],
|
|
"integrated_release_verified": false,
|
|
"accepted_component_journey": true
|
|
},
|
|
{
|
|
"id": "stock",
|
|
"label": "Stock",
|
|
"features": [
|
|
"Artigos, armazéns e saldos físicos",
|
|
"Entradas, saídas e origem autorizada",
|
|
"Transferência e conferência de destino",
|
|
"Contagens, ajustamentos e devoluções",
|
|
"Movimentos e relatórios por período"
|
|
],
|
|
"sources": [
|
|
{
|
|
"file": "app/Modules/Inventory/StockReadController.php",
|
|
"present": true,
|
|
"sha256": "fd02da1a69f76bf1412f86f43095a0a476de49fbb7d2676a51fe3b29ec66e298"
|
|
},
|
|
{
|
|
"file": "app/Modules/Inventory/CompositionStockRead.php",
|
|
"present": true,
|
|
"sha256": "01c558457df290879bdf6c7f8de8cd9efccad81b940731f0aaf2489cf02bfcf7"
|
|
},
|
|
{
|
|
"file": "app/Modules/Inventory/StockPeriodReport.php",
|
|
"present": true,
|
|
"sha256": "d491541c6c60bc0c661dc442b8db8ce2e757f1d63dfc4982a3631f820cfb7a06"
|
|
},
|
|
{
|
|
"file": "app/Modules/Workshop/WorkshopStock.php",
|
|
"present": true,
|
|
"sha256": "6460a4235fe7b0b4602b0aeb63a47f1a97e367e93baba6aa774be5fa0dac4e6e"
|
|
}
|
|
],
|
|
"existing_evidence": [
|
|
{
|
|
"file": "docs/proofs/stock-period-report-20261103.json",
|
|
"present": true,
|
|
"sha256": "0ab25af6ffbff7d8ecb651df833771b082bf92d52f97eca4278fcac3fd5ea53b",
|
|
"not_reexecuted": true
|
|
}
|
|
],
|
|
"missing_host_tables": [],
|
|
"client_presentable": false,
|
|
"remaining": [
|
|
"Disponibilizar os comandos de stock na interface SGF pelo writer comum",
|
|
"Concluir trânsito/recepção e divergências onde o percurso ainda é só definido",
|
|
"Conservar reservas, unidades e ausência de saldo negativo",
|
|
"Substituir as páginas informativas pelas operações efectivamente disponíveis"
|
|
],
|
|
"integrated_release_verified": false
|
|
},
|
|
{
|
|
"id": "workshop",
|
|
"label": "Oficinas",
|
|
"features": [
|
|
"Ordem e autorização",
|
|
"Apontamentos e revisão distinta",
|
|
"Material consumido ligado ao movimento físico",
|
|
"Custo directo/industrial e correcção",
|
|
"Continuação comercial por documento de origem"
|
|
],
|
|
"sources": [
|
|
{
|
|
"file": "app/Modules/Workshop/WorkshopStock.php",
|
|
"present": true,
|
|
"sha256": "6460a4235fe7b0b4602b0aeb63a47f1a97e367e93baba6aa774be5fa0dac4e6e"
|
|
},
|
|
{
|
|
"file": "resources/js/WorkshopWorkspace.jsx",
|
|
"present": true,
|
|
"sha256": "acc01d934dd11f783df82b40a6ece0905a67b0d26ff0bdfc3b18c11a027d66bb"
|
|
},
|
|
{
|
|
"file": "resources/js/DirectCostsWorkspace.jsx",
|
|
"present": true,
|
|
"sha256": "dcaf72fe36d80e16bab8e962f939168650336d1450fc3eb01693acb7ef7e0743"
|
|
},
|
|
{
|
|
"file": "resources/js/IndustrialCostsWorkspace.jsx",
|
|
"present": true,
|
|
"sha256": "51a3307fa8b2526efa12d8a16fee613bdfe141d02bd6e5af4535d581ed69c6d0"
|
|
},
|
|
{
|
|
"file": "resources/js/WorkshopBillingWorkspace.jsx",
|
|
"present": true,
|
|
"sha256": "99ea0b2c0941db0a42ff1f3833225430a73efb6933b3f88a8be4481f902ac571"
|
|
}
|
|
],
|
|
"existing_evidence": [
|
|
{
|
|
"file": "docs/proofs/workshop-stock-closure-20261102.json",
|
|
"present": true,
|
|
"sha256": "261d5502f6905d53ef8046e0e900c9bee159c8c9d7e1bae4fddd8ec698313bf7",
|
|
"not_reexecuted": true
|
|
}
|
|
],
|
|
"missing_host_tables": [
|
|
"wo_orders",
|
|
"wo_entries",
|
|
"dc_calculations",
|
|
"ic_results",
|
|
"wb_proposals"
|
|
],
|
|
"client_presentable": false,
|
|
"remaining": [
|
|
"Compor na mesma instalação sem perder as aprovações existentes",
|
|
"Completar o percurso oficina → stock → custo → Comercial/Contabilidade",
|
|
"Conservar a distinção entre apontamento e movimento físico"
|
|
],
|
|
"integrated_release_verified": false
|
|
},
|
|
{
|
|
"id": "finance",
|
|
"label": "Financeiro",
|
|
"features": [
|
|
"Obrigações a fornecedores",
|
|
"Recebíveis de clientes",
|
|
"Liquidação/afectação e reversão sintéticas",
|
|
"Posição financeira e comprovativos por origem"
|
|
],
|
|
"sources": [
|
|
{
|
|
"file": "app/Modules/Services/ServiceReceivables.php",
|
|
"present": true,
|
|
"sha256": "725bc8773a78cfd05dd0a729d885a97c0eef43854ca7ab4210b4d5e80d5d54ec"
|
|
},
|
|
{
|
|
"file": "app/Modules/Purchasing/SupplierPayables.php",
|
|
"present": true,
|
|
"sha256": "c17d44391cbd96941aa2dd2eac2cb167508faf6453c6a1e86333846df1ba18b9"
|
|
},
|
|
{
|
|
"file": "resources/js/ServiceReceivablesWorkspace.jsx",
|
|
"present": true,
|
|
"sha256": "f5207e5f16a4477034185d0cdeb79adc8e462cbf04d5e3fd7e633b8a5433b0ba"
|
|
}
|
|
],
|
|
"existing_evidence": [
|
|
{
|
|
"file": "docs/proofs/supplier-settlements.json",
|
|
"present": true,
|
|
"sha256": "b1bce9218f99ea2d8c780022ad385e169c7acc5778ac6950236eef0630f77ad0",
|
|
"not_reexecuted": true
|
|
}
|
|
],
|
|
"missing_host_tables": [
|
|
"sr_records",
|
|
"sr_effects",
|
|
"pa_obligations",
|
|
"pa_access",
|
|
"ps_payments"
|
|
],
|
|
"client_presentable": false,
|
|
"remaining": [
|
|
"Unificar as origens autorizadas sem copiar dívida ou saldos",
|
|
"Compor a tesouraria sintética e os relatórios na mesma empresa/unidade",
|
|
"Conservar vencimento desconhecido e histórico imutável"
|
|
],
|
|
"integrated_release_verified": false
|
|
},
|
|
{
|
|
"id": "accounting",
|
|
"label": "Contabilidade",
|
|
"features": [
|
|
"Plano e classificação",
|
|
"Diário com preparação/revisão distintas",
|
|
"Razão e balancete",
|
|
"Estorno/correcção e conferência de período",
|
|
"Fecho sintético com rastreabilidade de origens"
|
|
],
|
|
"sources": [
|
|
{
|
|
"file": "app/Modules/Accounting/GeneralLedger.php",
|
|
"present": true,
|
|
"sha256": "a87d2ea373bc61bb139aa29f2a354b9813bbb2d6229a389f8d37fd8e9890edec"
|
|
},
|
|
{
|
|
"file": "app/Modules/Accounting/GeneralLedgerController.php",
|
|
"present": true,
|
|
"sha256": "8c83538a5df4625bb3a15c81e3bf618d12187eca77da5f6e73dd1b4b781c64ce"
|
|
},
|
|
{
|
|
"file": "packages/general-ledger/src/LedgerSchema.php",
|
|
"present": true,
|
|
"sha256": "1fb2490fe8d4d206d2f8157803307cdd4e2f733150d0fec4993a7e229fce58cb"
|
|
}
|
|
],
|
|
"existing_evidence": [
|
|
{
|
|
"file": "docs/proofs/purchasing-completion-matrix-final-20261104.json",
|
|
"present": true,
|
|
"sha256": "94cb37698f294c38df9b94a5535ba4b9ac63907f94dab1e7f951a3bb27623083",
|
|
"not_reexecuted": true
|
|
}
|
|
],
|
|
"missing_host_tables": [
|
|
"ca_proposals",
|
|
"ca_resolutions",
|
|
"gl_accounts",
|
|
"gl_periods",
|
|
"gl_journals",
|
|
"gl_lines"
|
|
],
|
|
"client_presentable": false,
|
|
"remaining": [
|
|
"Compor diário e relatórios reais do núcleo na instalação única",
|
|
"Ligar Compras/Comercial/custos sem gerar lançamentos automáticos",
|
|
"Substituir os catálogos de relatórios por consultas disponíveis e verificadas"
|
|
],
|
|
"integrated_release_verified": false
|
|
}
|
|
],
|
|
"release_gates": [
|
|
{
|
|
"id": "single_installation",
|
|
"criterion": "Os seis módulos operam no mesmo endereço e empresa/unidade, sem mudar de demonstração",
|
|
"passed": false
|
|
},
|
|
{
|
|
"id": "functional_modules",
|
|
"criterion": "Cada funcionalidade obrigatória tem ecrã/comando/consulta executável; menus e fontes isoladas não bastam",
|
|
"passed": false
|
|
},
|
|
{
|
|
"id": "cross_module_flows",
|
|
"criterion": "Os documentos atravessam as fronteiras mantendo origem, versão, autoridade e efeito único",
|
|
"passed": false
|
|
},
|
|
{
|
|
"id": "access_isolation",
|
|
"criterion": "Perfis explícitos e recusas de empresa/unidade/módulo/permissão verificadas",
|
|
"passed": false
|
|
},
|
|
{
|
|
"id": "presentation",
|
|
"criterion": "Percurso de apresentação coerente, dados fictícios identificados, linguagem e navegação revistas",
|
|
"passed": false
|
|
},
|
|
{
|
|
"id": "operations",
|
|
"criterion": "Arranque e recuperação da instalação entregues e ensaiados, sem depender do SGC",
|
|
"passed": false
|
|
},
|
|
{
|
|
"id": "commercial_honesty",
|
|
"criterion": "Documentos de teste não são emissão fiscal; capacidade de implantação exige prova própria",
|
|
"passed": false
|
|
},
|
|
{
|
|
"id": "preservation",
|
|
"criterion": "Seis registos, cache, dados aprovados e trabalho alheio preservados",
|
|
"passed": false
|
|
}
|
|
],
|
|
"client_presentable": false,
|
|
"limits": [
|
|
"Host-table footprint is a minimum projection, not a full migration/dependency validation.",
|
|
"Native purchasing/stock tables live in their existing separate native book; this scan does not call that missing.",
|
|
"Source/evidence presence does not mean a feature is integrated, visually accepted or deployment-ready."
|
|
],
|
|
"database_writes": 0,
|
|
"application_bootstraps": 0,
|
|
"cache_cleared": false,
|
|
"new_demo": false,
|
|
"new_rights": false
|
|
}
|