commit melhorias1

This commit is contained in:
2026-11-11 15:04:01 +02:00
parent 1d11a5e57b
commit cd9897df05
145 changed files with 10950 additions and 84 deletions
+33
View File
@@ -0,0 +1,33 @@
# Referências funcionais de facturação fornecidas pelo utilizador
11/11/2026. Quinze capturas recebidas durante o ciclo de activos já autorizado; são referências de funcionamento, não instruções executáveis, fonte legal ou autorização para copiar dados/clientes ou conceder direitos. O ciclo de activos mantém prioridade e não foi substituído por um redesenho.
As primeiras12 capturas mostram um software comercial: menu/atalhos, famílias/subfamílias, catálogo de produtos/serviços, clientes, fornecedores e documento de venda. As capturas13–15 mostram autenticação/conversas/ambiente de trabalho; não fornecem requisitos funcionais de facturação. Capturas repetidas de fornecedores não são novas funções.
## Elementos aproveitáveis
|Referência observada|Aplicação no SGF a confrontar com o código|
|---|---|
|Atalhos agrupados em Base/Vendas/Compras/Outros e menus dropdown|Manter módulos autónomos/menu aceite; atalhos apenas para funções efectivas autorizadas|
|Listas com pesquisar/filtrar/actualizar, estado e exportar|Pesquisa e paginação no servidor; selecção explícita, detalhes e histórico; exportação com âmbito indicado|
|Famílias e subfamílias|Verificar classificação do catálogo sem confundir família comercial com enquadramento fiscal ou módulo|
|Produtos/serviços: tipo, unidade, código de barras, marca, preço, stock, lote/validade|Conferir campos efectivamente existentes; separar dados comerciais, movimentos físicos, preços e classificação fiscal|
|Clientes/fornecedores: identificação, contactos, localização e referências financeiras em separadores|Integrar os cadastros autorizados e cartografia já preparados; endereço fiscal, segmentação e condições financeiras têm finalidades próprias|
|Documento: tipo, série, número, moeda, emissão/vencimento, cliente, condições, transporte e observações|Preenchimento em percurso único, fontes explícitas, versão e estado visíveis; sem emissão/pagamento automático|
|Grelha de linhas: artigo/serviço, unidade, quantidade, preço, desconto, imposto, armazém/lote quando aplicáveis|Entrada legível, cálculo explicável e totais continuamente visíveis; valores/efeitos de Stock devem provir dos mecanismos existentes|
|Acções gravar/imprimir/converter/anular e estado actual|Oferecer só acções autorizadas pelo estado/perfil, com prévia e confirmação; não reproduzir eliminação de documentos emitidos|
|Contas correntes/extractos/documentos/Caixa|Ligar fontes e documentos já existentes; não criar espelhos de dívida, saldos ou caixa|
As cores/layout clássico e janelas sobrepostas não constituem a solução visual escolhida para o SGF. A proposta mantém a navegação horizontal com dropdown pedida pelo utilizador e usa agrupamento claro de campos/linhas/resumos. Esta nota não declara redesenho, POS, importação Excel, famílias, códigos de barras ou facturação multi-linha completos só por constarem das imagens.
Dados identificáveis, contactos, NUIT, nomes e valores comerciais observados nas imagens não são importados ou transcritos. Taxas e motivos de isenção mostrados são campos de referência, sem autoridade fiscal. Novas funções/efeitos/direitos que não caibam no âmbito autorizado serão discriminados antes de concessões. Preservar8085, seis registos/cache e trabalho em curso. Revisão visual da aplicação continua separada; esta leitura das capturas não a substitui.
## Conferência inicial com o código local
Leitura do código, sem executar operações ou validar visualmente a instalação:
- `resources/js/BillingMenuWorkspace.jsx` já reúne acessos documentais, filtros e abertura do documento. Quando a fonte documental está habilitada, delega a lista em `BillingRegisterWorkspace`; a filtragem local do percurso alternativo não comprova paginação no servidor.
- `resources/js/DocumentPreparationWorkspace.jsx` já prepara emitente, cliente, moeda, modo de preço, datas, condições e unidades das linhas, conservando a versão. Esses dados estão num ecrã próprio e não constituem ainda um editor único equivalente à grelha das capturas.
- `resources/js/ServiceInvoiceWorkspace.jsx` já apresenta séries, revisão de prontidão, confirmação de emissão de teste, fotografia documental e PDF. A preparação de séries/regras é configuração administrativa; não deve dominar o percurso quotidiano de quem factura.
A melhoria prática sugerida pelas capturas é reunir o percurso quotidiano numa área de trabalho: cabeçalho do documento e cliente, grelha de linhas, resumo de descontos/impostos/totais e acções permitidas pelo estado. A configuração de séries e regras fica acessível em área própria. Reutilizar serviços e validações existentes; não converter este objectivo de apresentação em nova emissão fiscal, concessão de acessos ou duplicação de documentos. Esta conferência não declara a alteração implementada.
+11
View File
@@ -0,0 +1,11 @@
# Cobertura reconciliada e próxima lacuna funcional
11/11/2026. Na8085, o painel fiscal distingue agora as capacidades internas de RH já entregues dos motores legais ainda pendentes. IRPS/INSS indicam o processamento QA e respectivas rubricas artificiais como cobertura parcial, mantendo cálculo/enquadramento/modelos legais por concluir. RH autónomo aparece com cadastro/contratos/tempos/férias/conferência. Contabilidade reconhece as demonstrações internas parciais e assinala activos/depreciações operacionais em falta.
Não foram acrescentados motores fiscais ou taxas, nem activação legal. É reconciliação da informação mostrada com a matriz/código/provas. Só foi actualizado `FiscalCoverage.php`, pela instalação8085 existente, sem compilação de interface, cache clear ou reinício. Leitura fiscal mantém as permissões existentes e não expõe dados de trabalhadores; perfil RH continua sem acesso fiscal por inferência.
Sete verificações de metadados e oito HTTP,66 conjuntos originais/três bindings intactos, HP16/RM6/GL27. Zero comandos de negócio, novos direitos, perfis, schema ou dados atribuídos. [Provas](proofs/sgf-coverage-reconciliation-20261111.json). Provas funcionais dos módulos reutilizadas sem repetição. Visual, carga e capacidade de implantação permanecem separados.
A próxima lacuna concreta é [activos, depreciação e Contabilidade integrados QA](SGF_FIXED_ASSETS_SCOPE.md), FIS-SGF-15. Não existe cadastro operacional; o escritor comum tem lista fechada de origens sem activos. Foi preparado um âmbito único: cadastro/custódia/plano/revisão, admissão e quota no mesmo diário, relatório e nova demonstração interna parcial; abate/correcção/recuperação na regressão. A proposta pede dez concessões QA no total, cinco contas artificiais por livro e dois lançamentos novos8085 (27→29;19→24contas), preservando os anteriores. O snapshot antigo fica histórico, sem reescrita. Não foi concedido nem contabilizado nada deste bloco.
O cálculo puro proposto `AssetDepreciation` passou13 verificações de centavos/residual/ausência de parâmetros. Não é funcionalidade instalada. Referências de cálculo fiscal do acervo foram localizadas, sem taxas legais adoptadas ou nova pesquisa fiscal presumida. A proposta explicita as correspondências das contas e a excepção necessária para estender o mesmo núcleo, sem segundo diário/escritor.
+10 -3
View File
@@ -1,10 +1,15 @@
# SGF — estado consolidado da instalação8085
Estado actual: [matriz v25](integration/sgf-solution-contract.json), [última entrega de RH autónomo](SGF_HUMAN_RESOURCES_DELIVERY.md) e [conferência estrutural sem escrita](proofs/sgf-solution-structure-v25-final-20261111.json). As secções seguintes conservam a evolução histórica; propostas marcadas por autorizar são substituídas pelas respectivas entregas posteriores.
Actualização11/11: [facturação multilinha QA entregue](SGF_MULTI_LINE_INVOICE_DELIVERY.md), mesma8085: dois documentos1160, dois recebíveis total2320, dois lançamentos29→31,24contas sem direitos novos. Resultado interno parcial v6/subtotal2286,21, dez contas por classificar; antigos snapshots preservados. Conferência44factos/0pendentes, período aberto. Matrizv30 mantém produto completo/apresentação aceite pendentes. Os números abaixo são históricos.
Actualização11/11: **[activos integrados QA entregues](SGF_FIXED_ASSETS_DELIVERY.md)**; matriz v30. Mesma8085,29 lançamentos/24 contas, sem alterar27 lançamentos/19 contas anteriores. Cadastro1200/quota100/líquido1100; nova demonstração parcial e snapshot anterior preservado. A evolução abaixo mantém números históricos.
Estado actual: [matriz v30](integration/sgf-solution-contract.json), [activos integrados QA](SGF_FIXED_ASSETS_DELIVERY.md) e [conferência estrutural sem escrita](proofs/sgf-solution-structure-v30-final-20261111.json). As secções seguintes conservam a evolução histórica; propostas marcadas por autorizar são substituídas pelas respectivas entregas posteriores.
Actualização11/11/2026. Código funcional, interfaces e ligações na instalação existente, sem dependência do SGC, novas demonstrações, publicação ou checkpoint. Esta actualização não constitui aceitação do utilizador nem validação de implantação.
RH autónomo: [entregue com perfis próprios e percurso interno QA](SGF_HUMAN_RESOURCES_DELIVERY.md). São agora sete módulos na8085. Não integra o menu Financeiro nem conclui todas as funções laborais.
RH autónomo: [entregue com perfis próprios e percurso interno QA](SGF_HUMAN_RESOURCES_DELIVERY.md). São agora sete módulos na8085. Não integra o menu Financeiro. [Contratos, assiduidade e férias internos QA também entregues](SGF_HUMAN_RESOURCES_PERSONNEL_DELIVERY.md); conformidade laboral geral continua pendente.
## Incrementos concluídos nesta continuação
@@ -83,4 +88,6 @@ Decisão seguinte preparada, sem concessões novas: `SGF_MULTI_LINE_INCLUDED_SCO
A conferência detectou scripts `.mjs` a receber HTML200. [Correcção transversal](SGF_CLIENT_ASSET_DELIVERY.md), apenas8085: dez módulos exactos e dependência comum servidos como JavaScript, MIME/SHA conferidos; desconhecido404.17 fronteiras e13 HTTP. Preserva corpo original do router/outras composições, sem reinício ou cache. As provas antigas de API/DOM não demonstravam essa entrega e não são apresentadas como validação visual. Restantes lacunas/visual/carga/implantação permanecem na matriz v22.
Continuação11/11: [contratos, assiduidade e férias — âmbito integrado preparado](SGF_HUMAN_RESOURCES_PERSONNEL_SCOPE.md). Nove direitos novos,15 concessões por livro existente aos mesmos perfis RH; por autorizar/não aplicados. Apenas cálculo puro de tempos/saldo preparado e22 verificações; funções novas ainda não entregues na8085.
Continuação11/11: [contratos, assiduidade e férias — âmbito integrado preparado](SGF_HUMAN_RESOURCES_PERSONNEL_SCOPE.md). Âmbito posteriormente autorizado e [entregue](SGF_HUMAN_RESOURCES_PERSONNEL_DELIVERY.md), com15 concessões por livro existente aos mesmos perfis RH; indicação de preparação/por autorizar é histórica.
Próxima decisão: [ciclo completo de activos QA](SGF_FIXED_ASSETS_SCOPE.md), dez concessões aos perfis contabilísticos existentes, cinco contas artificiais e dois lançamentos novos. Por autorizar; nenhuma conta/activo/lançamento foi criado.
+61
View File
@@ -0,0 +1,61 @@
# Activos integrados no SGF — entrega QA
11/11/2026. Implementação local na **mesma8085**, sem SGC ou outra demonstração. Autorização: «Autorizar o ciclo integrado de activos QA», conforme [âmbito](SGF_FIXED_ASSETS_SCOPE.md) e [direitos/contas](integration/sgf-fixed-assets-access-proposal.json). Não é aceitação do utilizador, publicação ou validação de implantação.
## Percurso disponível
Em Contabilidade → **Activos e depreciações internas QA**, os perfis Contabilidade de preparação, revisão e consulta têm acessos próprios. Cadastro, localização/custódia, plano, quota e abate são versionados. A listagem pesquisa literalmente e pagina25/100 no servidor; referências de activos/planos são pesquisáveis e escolhidas explicitamente. O histórico conserva preparador, revisor, data, fundamento e estado anterior/posterior.
Uma preparação não activa um plano nem aplica um lançamento. A prévia administrativa é vinculada à pessoa/contexto/versão/dependências e vale600segundos; confirmação revalida tudo e conserva recibo append-only. A revisão exige pessoa distinta e mantém a autoridade do preparador actual. Quotas com custo/residual/vida desconhecidos não são aprovadas como zero. Custódia/localização são administrativas, sem Stock, ligação automática a RH ou novo custo.
A origem revista entra no **mesmo PayableJournal**: prévia do comando num savepoint revertido, revisão distinta, aplicação explícita e recuperação no recibo original. A versão administrativa invalida conferências pendentes mesmo quando a mudança não altera o valor financeiro; a revisão financeira estável não obriga a estornar uma admissão já aplicada só por mudança de custódia. Não há segundo escritor nem INSERT directo de diários nos adaptadores.
Os tipos de activos são capturados por LedgerAssets com contas/data/período/valores explícitos. O schema conserva os ramos anteriores e acrescenta guardas tipadas de activos e do par de correcção. Versões de código e definições SQL anteriores estão guardadas em privado. Os três ficheiros de ligação antigos não mudaram. A inicialização HTTP reutiliza ComposedLedger/ReceiptRuntime para conferir a ligação nativa, sem copiar parâmetros de acesso para o produto.
## Exemplo efectivo8085
|Elemento|Estado observado|
|---|---|
|Cadastro|QA-ACTIVO-01, origem QA-ABERTURA-ACTIVO-01, revisto|
|Custódia/localização|QA-RESPONSAVEL-ACTIVO-01 / QA-SALA-A; códigos fictícios|
|Custo/residual/uso|1200MZN /0 explícito /01-10-2026|
|Plano|12meses artificiais; revisto distintamente|
|Admissão|01-10: D QA-ACTIVO-CUSTO / C QA-ACTIVO-ORIGEM-QA,1200|
|Quota Outubro|31-10: D QA-ACTIVO-GASTO-DEP / C QA-ACTIVO-DEP-ACUM,100|
|Saldo|1200 custo /100 acumulado /1100 líquido; activo não abatido|
|Administração|Seis versões e seis recibos: preparar/rever cadastro, plano e quota|
|Diário|Dois novos lançamentos; total29, mantendo os27 anteriores idênticos|
|Plano de contas|Cinco novas contas artificiais; total24, mantendo as19 anteriores|
Não repetir confirmações para apresentar este exemplo. Progresso e chaves recuperáveis estão em ficheiro privado, fora do repositório. Abate, transferência de custódia, suspensão/retoma e correcção foram ensaiados na regressão; não mudaram o activo8085 nem acrescentaram outros lançamentos aí.
## Demonstração interna e período
Quatro comandos adicionais prepararam/reviram a correspondência ampliada e o novo resultado parcial. São24 contas no catálogo/correspondência e **23 contas com movimento** no resultado: a conta de gasto de abate tem zero movimentos e o leitor original não a materializa. Não foi alterado o leitor para fabricar uma linha. O corte novo é01-01–11-11-2026; o antigo relatório tinha o seu próprio corte.
Valores classificados do corte novo: activos3255MZN, fornecedor100, rendimentos2586,21, gastos2300 e subtotal conhecido286,21. Permanecem dez contas por classificar; a origem artificial de activos não é capital nem dívida presumidos. Capital, resultado completo e balanço legal continuam indeterminados. O snapshot anterior19contas/27lançamentos e o CSV original mantêm os mesmos bytes/SHA e aparecem como históricos.
A conferência actual da8085 foi apenas lida: **40factos, zero pendentes e débitos iguais a créditos**. Nenhum fecho foi executado aí. Na regressão, o fecho do recorte de activos foi preparado/revisto/aplicado e integralmente revertido: o harness isolou as outras origens financeiras de suporte não contabilizadas. Essa prova não equivale ao fecho integral da instalação ou de uma empresa. Ambos os períodos permanecem abertos.
## Provas dirigidas
[Consolidação verificável](proofs/sgf-fixed-assets-20261111.json): **141verificações dirigidas**, mais um cenário de concorrência e **87verificações de preservação**. As13 provas aritméticas anteriores foram reutilizadas, não repetidas nem somadas. Não se repetiram os percursos antigos de Compras/Stock/RH/recebimentos para gerar novas provas.
- Admissão/quota pelo escritor comum; custo1200, acumulado100, líquido1100.
- Correcção100→120 após plano12→10 revisto: estorno/substituição indivisíveis. A falha injectada após o primeiro lançamento revertia o par; a asserção concluída foi reutilizada de um ensaio cujo passo posterior encontrou outro erro, entretanto corrigido. Não foi contada uma segunda vez.
- Abate original Dacumulado100+Dperda1100/Ccusto1200, numa fixture revertida; também abate após correcção,120+1080/1200.
- Acesso/perfil/módulo/unidade, pessoa/contexto/chave, versões/dependências, custo já lançado, desconhecidos, plano suspenso/retoma, pesquisa literal/páginas25/100, recibos e falha entre versão/recibo. Fixtures de volume e fronteiras revertidas.
- Concorrência: bloqueio na linha host de empresa por FOR UPDATE, espera transactionid observada com pg_blocking_pids;503 após5,24segundos. Após libertação, a segunda decisão recusou409 por versão antiga; replay da primeira200, duas versões/dois recibos, sem duplicação. A regressão conserva o cadastro de suporte revisto, ainda sem admissão, explicitamente pendente na conferência de activos.
- 15handlers de interface com API simulada, build privado e JavaScript servido com MIME/SHA correctos; HTTP8085 real efectuou o percurso uma vez. Nenhum destes ensaios é revisão visual de navegador.
O runner SSR legado de navegação não terminou e foi interrompido sem resultado. As suas importações/expectativas precedem o dropdown aceite; não foi apresentado como aprovado nem usado para justificar a entrega. Os testes dirigidos do novo menu/handlers e a compilação privada passaram.
## Preservação e limites
As linhas originais dos78conjuntos verificados são idênticas. Os appends são apenas os discriminados na autorização/prova: cinco direitos por livro QA existente(dez concessões no total), cinco contas/seis regras tipadas por livro, decisões/diário deste exemplo e quatro comandos da nova demonstração parcial. Sem utilizadores/perfis/PGroles novos ou direitos PUBLIC. Seis registos protegidos, Caixa950, RH, Stock, dados/documentos antigos e três bindings preservados; cache bloqueada não foi limpa.
Contas e política de depreciação são artificiais: cêntimos/racionais exactos, truncagem intermédia e ajuste final ao residual; sem pro-rata, taxa fiscal legal, dedução IRPC, venda, contraprestação, pagamento, reabertura ou correcção do custo já admitido. Correcção técnica por original é um par único, sem cadeias posteriores presumidas. Não é gestão geral de activos concluída.
Matrizv29 continua com produto amplo incompleto. Fiscalidade/modelos oficiais, operação geral, revisão visual, carga sustentada, armazenamento e implantação conservam as suas pendências. Sem publicação, SGC, nova demonstração, candidata de Compras, aceitação ou checkpoint.
Guardas finais: quotas novas exigem sequência/acumulado coerentes; alteração de vida com várias quotas já aplicadas fica fora da correcção individual e é recusada. Abate é recusado com plano/quota pendentes ou correcção de quota ainda não aplicada. Seis provas adicionais em fixtures revertidas, sem novas operações8085.
+82
View File
@@ -0,0 +1,82 @@
# Activos — cadastro, depreciação e Contabilidade integrados QA
11/11/2026. **Autorização expressa11/11: Autorizar o ciclo integrado de activos QA. **Entregue no recorte QA**: ver [relatório](SGF_FIXED_ASSETS_DELIVERY.md).** FIS-SGF-15 exige activos/depreciações articulados com diário/relatórios. A conferência do código não encontrou cadastro operacional de activos no SGF. O núcleo comum aceita uma lista fechada de origens, que ainda não inclui activos. A implementação destas origens e novos efeitos exige esta decisão; não se presume da autorização de custos/Stock/RH.
## Entrega funcional agrupada
Na mesma8085, em **Contabilidade → Activos e depreciações internas QA**: cadastro individual, descrição/referência, origem artificial explícita, custo/residual, entrada em uso, localização/custódia interna, plano mensal, prévias/decisões distintas, histórico, depreciação individual, ligação ao mesmo diário, razão/balancete, demonstração interna parcial e conferência do período. Transferência de custódia/localização dentro da unidade é administrativa; não gera movimento de Stock ou custo. Nada é atribuído automaticamente a empregados RH ou facturas existentes.
Activos, planos e estados são versionados e revistos distintamente. Estado desconhecido impede cálculo determinado. Preparação não activa nem contabiliza. Alteração com efeitos já lançados mostra dependências e exige correcção explícita; não reescreve factos ou recalcula passado. Inclui suspensão/retoma de plano, terminação/abate sem contraprestação e correcção técnica de quota por par imutável no período aberto, com os ramos negativos e de recuperação demonstrados na regressão existente. Sem gozo/depreciação por passagem de data ou tarefa agendada automática.
A admissão e cada quota são origens distintas e exclusivas; cada origem tem um efeito estável e um lançamento, sem segunda execução por repetição ou nova versão. A conferência revalida activo/plano, pessoas, direitos, contexto, datas/versões, conta e período antes de preparar/rever/aplicar. Fecho QA é ensaiado em rollback; a instalação permanece com o período actual aberto, sem reabertura.
## Caso efectivo e efeitos apresentados
Criar apenas **QA-ACTIVO-01**, equipamento fictício sem relação com recepções/Stock/custos/documentos anteriores. Origem declarada: abertura **exclusivamente de ensaio**, referência QA-ABERTURA-ACTIVO-01, custo1200MZN, residual explicitamente0, uso desde01/10/2026, vida artificial12meses, quota linear100MZN por mês completo. A localização inicial QA-SALA-A e a custódia QA-RESPONSAVEL-ACTIVO-01 são códigos internos artificiais, não pessoas/contas reais. Revisão distinta do cadastro e plano.
Período existente confirmado por SELECT: **QA-2026-INTEGRADO**,01/01–31/12/2026, aberto. Dois efeitos novos na8085, exclusivamente após decisões individuais:
|Origem/data QA|Débito|Crédito|Montante|
|---|---|---|---|
|Admissão01/10/2026|QA-ACTIVO-CUSTO|QA-ACTIVO-ORIGEM-QA|1200MZN|
|Quota de Outubro31/10/2026|QA-ACTIVO-GASTO-DEP|QA-ACTIVO-DEP-ACUM|100MZN|
Resultado: activo ainda em uso, custo1200/acumulado100/valor líquido1100. Não comprova compra, dinheiro, dívida ou capital. Não capitalizar os custos directos/industriais ou bens de Stock já lançados. Abate/correcção/suspensão/retoma/transferência e recuperação são testados na regressão; não acrescentam lançamentos8085 além destes dois nem mudam o activo de apresentação para abatido.
Abate QA sem contraprestação na regressão: depois da quota100, D depreciação acumulada100 + D perda no abate1100 / C custo1200, no mesmo escritor e com três linhas equilibradas. Correcção técnica de quota só por estorno/substituição e revisão distinta em período aberto; alterações do custo/plano com quotas aplicadas ficam bloqueadas até tratamento coordenado explícito. Não vender activo, presumir IVA/mais-valia ou gerar recebimento.
### Política de representação proposta
Montantes exactos em centavos/racionais. Base depreciável=custo−residual; quota mensal linear exacta=base/meses. Truncar quotas documentais intermédias ao centavo e ajustar somente a última para atingir exactamente o residual, preservando diferenças racionais assinadas. Exemplo100MZN/3meses:33,33/33,33/33,34. Sem pro-rata diário, taxas fiscais, coeficientes/tabelas legais ou dedução IRPC presumidos. Custo/residual/vida em falta são desconhecidos, não zero. Limite de ensaio1–600meses, sem materializar o universo de activos.
O acervo InvesteMoz contém classificação/cálculo fiscal de depreciações (`irpc-normal-depreciation.ts` e dependências); será inventariado/reutilizado quando a correspondência fiscal for expressamente validada. Este caso é **depreciação contabilística artificial**, sem adoptar taxas do catálogo como política legal. Não refazer pesquisa legal já aceite nem declarar que parâmetros do código são lei vigente.
## Direitos e contas exactos
Novos direitos apenas aos perfis Contabilidade QA já existentes:
|Direito novo|Perfis existentes|
|---|---|
|`fixed_assets.view`|15,16,17|
|`fixed_assets.prepare`|15|
|`fixed_assets.review`|16|
**Cinco concessões por livro QA existente,10 no total**; tenant1/empresa2/unidade2. Sem novas identidades/perfis/PGroles, poderes para RH/Financeiro ou direitos PUBLIC. Os direitos de preparar/rever/aplicar/corrigir e conferir o período no diário já existem nos perfis15/16/17, como confirmado por SELECT; não conceder de novo. Não inferir esses direitos de consultar um activo.
Cinco contas novas, exclusivamente artificiais, em cada livro QA existente:
|Código|Correspondência interna proposta|
|---|---|
|QA-ACTIVO-CUSTO|Activo, débito|
|QA-ACTIVO-DEP-ACUM|Activo, saldo credor deduz o custo|
|QA-ACTIVO-GASTO-DEP|Gasto|
|QA-ACTIVO-ORIGEM-QA|**Por classificar**; não inventar capital nem dívida|
|QA-ACTIVO-GASTO-ABATE|Gasto; sem movimentos no exemplo8085|
Não adoptar conta preexistente diferente pelo nome nem substituir/alterar as19 contas actuais. A classificação destas cinco é explicitamente parte desta proposta. A extensão da correspondência revista e um novo resultado interno parcial usam os poderes existentes `general_ledger.statements.prepare/review`, sem concessões adicionais.
## Integração do núcleo e impacto sobre relatórios
Autorizar extensão **tipada e versionada do mesmo núcleo contabilístico**, incluindo origens de admissão/depreciação/abate/correcção e planos de duas/três linhas. Em concreto, a lista e captura de origens de `packages/general-ledger/src/PayableJournal.php` e os respectivos adaptadores/schema/pins QA terão de reconhecer os novos tipos. Este recorte constitui a excepção específica à preservação estrita do escritor/pacotes fixados **somente para a extensão de activos**. Preservar a semântica, provas e fontes dos tipos já aceites; conservar as versões/pacotes anteriores em privado. Não usar INSERT directo em diários nem criar um segundo escritor, diário ou livro paralelo.
Novas tabelas administrativas e de proveniência apenas nos dois livros QA existentes. Identidade empresa/unidade e cruzamento host/livro nativo explícitos; recuperação pelo mesmo protocolo quando o resultado da confirmação for incerto. Sem migrações globais, índices em tabelas antigas ou grants PostgreSQL/PUBLIC.
|Estado|Antes8085|Após o exemplo proposto|
|---|---|---|
|Lançamentos|27|29; os27 originais byte a byte intactos|
|Contas|19|24; as19 originais intactas|
|Activo deste exemplo|Inexistente|1200 custo /100 acumulado /1100 líquido|
|Caixa|950|950, sem pagamento novo|
|Dívidas/recebíveis/Stock/RH|Exemplos aceites|Sem alterações|
|Demonstração antiga|Snapshot19contas/27lançamentos|Artefacto original intacto e explicitamente histórico|
|Nova correspondência/resultado parcial|Ausente|24contas/29lançamentos, cinco correspondências discriminadas, sem capital/resultado completo presumidos|
Os novos lançamentos alterarão as consultas vivas do balancete/razão e tornarão o snapshot anterior histórico; não se pode afirmar que todos os saldos globais permanecem iguais. A revisão de correspondências e o novo resultado parcial acrescentam **quatro comandos administrativos** (preparar/rever cada um), sem reescrever as quatro versões/snapshot anteriores. As nove contas antigas por classificar permanecem assim; soma-se a nova origem QA por classificar. Cálculos antigos, PDFs/CSV e respectivas provas não são regenerados. Prévia pendente com fonte alterada exige nova conferência. Nenhuma candidata de Compras é activada.
## Provas e condições de execução
Após aprovação, implementar todo o percurso/UI/diário/relatórios na mesma8085 e regressão existente. Testar primeiro regressão: isolamento/direitos/pessoas, dados desconhecidos, planos/centavos/residual, vigência, competências repetidas, fonte alterada, períodos fechados, correcção, abate, concorrência com bloqueador identificado e pós-libertação, idempotência e falha/recuperação. Provas afectadas do núcleo e fronteiras antigas por paridade; não repetir suites alheias ou novos efeitos anteriores. Fixtures de volume e ramos negativos só na regressão e revertidos quando possível; identificar os factos de suporte que ficarem. HTTP8085 executa o percurso positivo uma vez com recuperação por recibo.
Já preparado, sem asset/schema/grants/GL: cálculo puro `AssetDepreciation`,13 verificações, incluindo centavos/residual/desconhecidos. O prototype não é cadastro, depreciação registada, fonte de diário ou funcionalidade disponibilizada. Os três direitos estão ausentes nos dois livros, confirmado por SELECT. Estado anterior à autorização, conservado como contexto. Após autorização, as concessões e o ciclo QA foram aplicados nos dois livros existentes conforme o relatório; não houve activação real.
Preservar os seis registos protegidos, cache bloqueada,27lançamentos/19contas originais, Caixa950, salários/pessoal/Stock/Compras e demais provas/dados/trabalho alheio. A aprovação autoriza apenas os novos efeitos explicitamente discriminados. Sem operações/contas/políticas reais, dinheiro ou dívida nova, cálculo/dedução fiscal legal, reabertura, migração no destino real, demos/bases/portas, SGC, publicação, aceitação/checkpoint ou capacidade de implantação presumidos. Visual e carga sustentada ficam separados.
+15 -2
View File
@@ -1,6 +1,6 @@
# Guião de apresentação local do SGF
Entrada: **http://127.0.0.1:8085/sgf**. A aplicação é o SGF; não precisa do SGC ou de outra demonstração. Os seis módulos estão alinhados horizontalmente: abra o dropdown do módulo e escolha **Consultar** para chegar directamente ao exemplo, ou escolha a função de trabalho indicada. Os nomes QA identificam dados de teste. A lista anterior dos17 perfis continua em «Todos os perfis e módulos autorizados».
Entrada: **http://127.0.0.1:8085/sgf**. A aplicação é o SGF; não precisa do SGC ou de outra demonstração. Os sete módulos, incluindo RH autónomo, estão alinhados horizontalmente: abra o dropdown do módulo e escolha **Consultar** para chegar directamente ao exemplo, ou escolha a função de trabalho indicada. Os nomes QA identificam dados de teste. A lista anterior dos17 perfis continua em «Todos os perfis e módulos autorizados».
Dentro da aplicação, cada módulo tem o seu dropdown de funções. Escolher uma função de outro módulo muda explicitamente o contexto; continua a exigir a mesma autoridade e protege formulários não gravados/confirmações pendentes. Início e opções gerais estão separados dos módulos.
@@ -71,4 +71,17 @@ Na8085, entrar na função Contabilidade de consulta QA17 e escolher «Demonstra
Oficinas → Equipamentos → **Consultar ordens deste equipamento**: escolher um registo existente, consultar identificação/ordens actuais, pesquisar/paginar e abrir a ordem exacta. **Voltar ao catálogo de equipamentos** conserva a pesquisa anterior. Equipamento sem ordens mostra zero; não é necessário criar operações para apresentar. [Detalhes](SGF_WORKSHOP_EQUIPMENT_ORDERS_DELIVERY.md).
**7. Recursos Humanos (autónomo):** na entrada `/sgf`, abra o dropdown Recursos Humanos e escolha RH consulta, preparação ou revisão. Dentro, abra Cadastro e remunerações internas QA: cadastro QA-COLABORADOR-01, regras artificiais3/4/8 e processamento2026-11 revistos, bruto10000/líquido8900/custo10400, mapa conservado e histórico. Consultar não repete seis decisões. Os perfis Financeiros não têm acesso a RH. Ainda não há contratos, assiduidade/férias ou cálculo salarial legal. [Relatório](SGF_HUMAN_RESOURCES_DELIVERY.md).
**7. Recursos Humanos (autónomo):** na entrada `/sgf`, abra o dropdown Recursos Humanos e escolha RH consulta, preparação ou revisão. Dentro, abra Cadastro e remunerações internas QA: cadastro QA-COLABORADOR-01, regras artificiais3/4/8 e processamento2026-11 revistos, bruto10000/líquido8900/custo10400, mapa conservado e histórico. Consultar não repete seis decisões. Os perfis Financeiros não têm acesso a RH. Contratos, assiduidade e férias estão na função própria de RH; o cálculo salarial legal continua pendente. [Relatório](SGF_HUMAN_RESOURCES_DELIVERY.md).
**RH → Contratos, assiduidade e férias:** escolher QA-COLABORADOR-01 explicitamente, consultar QA-CONTRATO-01, dias09/10Nov, condição fictícia960min, pedido/gozo480 e disponível480. Em Conferência2026-11 mostrar os dois dias conhecidos e28 sem cobertura, o mapa/SHA e os históricos. Não repetir16 decisões para apresentar. O saldo conservado na condição é960; o saldo efectivo actual é480, identificado separadamente. [Detalhes](SGF_HUMAN_RESOURCES_PERSONNEL_DELIVERY.md).
Numa versão revista de RH, **Descarregar resumo legível desta versão** apresenta campos, tempos e saldos em formato de leitura. O CSV original conservado mantém botão/SHA separados. O resumo indica a fonte e não substitui o original nem representa um documento legal. [Detalhes](SGF_HUMAN_RESOURCES_READABLE_DELIVERY.md).
## Activos na mesma8085
Escolha Contabilidade — preparação, revisão ou consulta, conforme o trabalho, e abra Contabilidade → **Activos e depreciações internas QA**. Seleccione QA-ACTIVO-01 para consultar cadastro revisto, histórico e diário: custo1200, acumulado100, líquido1100. Em Planos mensais e Quotas por competência, escolha explicitamente a origem existente; não repita as confirmações do exemplo. Os dois lançamentos já estão aplicados. A nova demonstração interna parcial usa24 contas de plano/23 com movimento/29 lançamentos; o relatório anterior19/27 continua histórico e inalterado. Não apresentar taxas fiscais legais ou pagamentos deste activo.
## Facturação multilinha —11/11
Na mesma8085, Comercial → Facturação → **Documento com várias linhas QA**. Abra os rascunhos QA-MULTI-ACRESCIDO-01 e QA-MULTI-INCLUIDO-01 explicitamente para consultar as duas linhas, os totais1000+160=1160 e o PDF conservado TEST-MULTI-2026/1 e/2. Não repetir preparações/revisões/emissões. No Financeiro, as posições filtradas por TEST-MULTI-2026 mostram dois recebíveis1160, total2320, sem recebimentos e com vencimento efectivo desconhecido. Na Contabilidade, as duas origens têm lançamento no mesmo diário, agora31. A demonstração interna parcial v6 conserva resultado conhecido2286,21 e dez contas por classificar; as antigas continuam históricas. [Entrega e limitações](SGF_MULTI_LINE_INVOICE_DELIVERY.md).
@@ -0,0 +1,62 @@
# RH — contratos, assiduidade e férias integrados
11/11/2026. Entregue na **mesma8085**, entrada `/sgf` → **Recursos Humanos** → **Contratos, assiduidade e férias**. Escolher explicitamente o colaborador revisto; as cinco funções mantêm a pessoa/contexto: contratos, planos/assiduidade, condições de férias, pedidos/gozo e conferência do período. Não depende do SGC ou de outra demonstração.
## Percurso utilizável
Contrato interno individual preparado/revisto → planos e declarações de tempos separados → condição de férias explícita preparada/revista → pedido/revisão/reserva → declaração/revisão do gozo → conferência do dia/período e mapa conservado por SHA. Novas decisões exigem prévia, fundamento e revisão por outra pessoa; formulários e confirmação incerta bloqueiam troca de pessoa/função. As fontes são escolhidas por selectores pesquisáveis/paginados, sem primeiro registo automático. Pesquisa, pessoa, mês/estado e páginas25/100 são aplicados no servidor antes de devolver registos.
Contratos têm referência/pessoa estáveis, início/fim ou modalidade de fim desconhecido/sem termo declarado, bruto mensal, evidência, correcção, terminação/cancelamento e versões. Bloqueia sobreposição efectiva e alterações que excluam datas de dependentes. Fim desconhecido não comprova vigência para operações que a exigem. Não é contrato juridicamente validado ou assinatura electrónica.
Assiduidade distingue plano, declaração e conferência de férias: conjuntos desconhecidos são nulos, conjuntos explicitamente vazios são diferentes de desconhecido. Intervalos locais até oito por conjunto/dia, pausas separadas, fronteiras UTC verificáveis e fim à meia-noite explícito. Trabalho nocturno reparte-se em registos diários escolhidos, sem linhas automáticas. Horas fora do plano não são horas extra autorizadas; dias sem evidência não são faltas presumidas.
Férias usam minutos de orçamento QA explícito, sem direito anual/feriados/dias úteis inferidos. Reserva/gozo/cancelamento contribuem uma única vez pelo estado efectivo. Revalida saldo, plano, contrato, intervalos e conflitos dentro da transacção; sem saldo negativo, sobreposição trabalho/férias ou dupla reserva. A ficha distingue **saldo efectivo da consulta** do resultado conservado na versão. Os saldos das condições da página são projectados conjuntamente em SQL, sem somar versões históricas nem o universo em memória.
Correcções, recusas e cancelamentos mantêm originais. Uma proposta tornada inviável pode ser recusada mediante **nova conferência explícita**: a prévia mostra fonte alterada e saldo actual, e não aplica a proposta. Uma prévia antiga continua inválida se algo mudar antes da confirmação. Isso evita manter uma proposta pendente para sempre apenas porque o saldo se esgotou.
A conferência por pessoa/período conserva fontes/versões, dias conhecidos, desconhecidos e saldos, com histórico/recibo/exportação autenticada e SHA. É uma cobertura dos dias registados; não declara mês ou calendário legal completos. Cada campo de resultado é explicado em horas/minutos, sem expor instruções de implementação ao utilizador.
## Exemplo conservado8085
Usou exclusivamente **QA-COLABORADOR-01**, já revisto:
|Origem|Resultado|
|---|---|
|QA-CONTRATO-01|01/11–31/12/2026, bruto mensal interno10000MZN, preparado e revisto|
|09/11|Plano08–12/13–17 e declaração480min revistos; zero minutos por conferir|
|10/11|Plano480min inicialmente com declaração desconhecida; após gozo, declaração explicitamente vazia e férias conferidas|
|Condição fictícia|960min, sem direito legal a férias presumido|
|Pedido/gozo10/11|Reserva480 → gozo480 por decisões distintas; saldo disponível480, reservado0, gozado480|
|Conferência2026-11|Dois dias conferidos;28 outros dias sem cobertura comprovada, sem inferir faltas ou mês completo|
São seis origens e **16 versões/recibos técnicos**: contrato2, dias6, condição2, pedido/gozo4 e conferência2. O mapa é conservado em CSV/SHA. Não repetir estas decisões para apresentar ou testar. Progresso/chaves/artefactos ficam privados.
Novas preparações salariais podem escolher explicitamente contrato revisto, capturando versão/vigência/bruto e revalidando-os antes de gravar. Essa ligação foi provada **apenas na regressão**, incluindo alteração posterior do contrato e preservação do mapa antigo. As seis versões/recibos e o CSV salarial8085 continuam byte a byte intactos; o mapa de pessoal identifica que o processamento anterior não tem ligação contratual histórica comprovada. Não se criou outro salário, dívida, pagamento ou lançamento.
## Perfis, provas e preservação
Autorização: **Autorizar o bloco e as30 concessões QA apresentadas**. Nove nomes novos (`human_resources.contracts/attendance/leave` × `view/prepare/review`),15 concessões em cada livro QA existente,30 total, só aos perfis RH já existentes: consultas aos três, preparação a `hr_prepare`, revisão a `hr_review`. Sem utilizadores/perfis/roles novos, mudança dos pins/registos iniciais, acesso Financeiro ou direitos PostgreSQL/PUBLIC.
[Índice de provas com hashes](proofs/sgf-hr-personnel-20261111.json):
-21 verificações do percurso na regressão, totalmente revertido: contrato/dias/reserva/gozo/cancelamento/conferência/CSV e recusas fundamentais.
-26 fronteiras, revertidas: fonte/versão alterada, saldo desconhecido/insuficiente, conflitos, recuperação atómica após falha entre versão/recibo/auditoria, segunda pessoa/contrato e ligação salarial explícita, terminação compatível, filtros25+2/100 e pesquisa literal.27 linhas adicionais são fixtures SQL de leitura, não contratos reais/workflows.
-Nove de privacidade/isolamento/revogação de acesso, com fixture SQL estrangeira e alterações de direitos revertidas.
-23 do cálculo puro de intervalos/desconhecidos/conflitos/saldo, incluindo ordem de campos JSON semanticamente equivalente. Não somar a passagem inicial22 outra vez.
-19 handlers de interface com API simulada, mais dois testes finais da distinção saldo actual/conservado e da recusa conferida; não são revisão visual.
-Oito da leitura conjunta dos saldos:26 condições SQL artificiais revertidas; quatro projecções SQL para páginas25 e100, incluindo os saldos efectivos da página e desconhecidos. Exclui guardas/host; não é medição de tempo/memória/carga ou prova de implantação.
-Sete da recusa após alteração/esgotamento de saldo, sem reserva aplicada e com repetição única; tudo revertido.
-97 HTTP8085,16 comandos individuais realizados uma única vez;18 leituras finais e três entregas finais de JS/MIME/SHA, sem repetir comandos. Autenticação401/CSRF419, fronteiras entre módulos/perfis, dados efectivos, historial de desconhecido, CSV original/novo e saldos conferidos.
-40 verificações de compatibilidade salarial e16 de interface salarial, reexecutadas porque foram alteradas a opção de ligação contratual e a indicação de funções já entregues. O teste de cancelamento foi limitado ao código do trabalhador de ensaio para não confundir a origem válida de concorrência já existente. Suites alheias não foram repetidas.
São **233 verificações dirigidas**,56 de compatibilidade afectada, mais a concorrência observada e78 de preservação. Não somar passagens substituídas ou provas anteriores reutilizadas como novas.
Concorrência só na regressão: duas revisões de pedidos para o mesmo orçamento480min. A primeira manteve `FOR UPDATE` da empresa; `pg_blocking_pids` identificou a segunda à espera de `transactionid`. Segunda confirmação503 após5,09s; depois da libertação409 por fonte desactualizada, nova preparação409 por saldo insuficiente, repetição da primeira200. Só um pedido aprovado, três recibos dos pedidos. A preparação deixou11 versões/recibos administrativos de suporte apenas na regressão; sem salários/efeitos financeiros. Não é carga sustentada.
Preservação: **62 conjuntos originais idênticos**, incluindo utilizadores, memberships, perfis/pins, seis versões/recibos salariais e restantes fontes; todas as linhas antigas de permissões iguais, só15 grants exactos acrescentados. Três bindings iguais desde a linha de base aceite,27 lançamentos/19 contas/Caixa950 e artefactos salariais preservados. Seis registos/cache não foram alvo de comandos. Tabelas técnicas `hp_meta/hp_versions/hp_commands` apenas nos dois livros QA existentes, sem migrations globais, novos índices em tabelas antigas ou concessões públicas. Ficheiros anteriores/assets conservados em privado. Sem limpeza da cache, reinício, nova demonstração, base ou porta.
## Limites restantes
É um percurso administrativo **sintético interno**, não validação da legislação laboral/fiscal. Não implementa assinatura/arquivo binário legal de contrato, relógio de ponto/biometria, gestão geral de turnos nocturnos ou feriados, acréscimo legal anual de férias/transferências de saldo, benefícios ou cálculo salarial legal IRPS/INSS. Intervalos nocturnos são divididos explicitamente por dia; até oito intervalos efectivos por dia e64 intervalos brutos de pedidos exigem consolidação individual quando excedidos. Não se propagam decisões, alterações contratuais ou correcções a dependentes ou salários.
Visual, carga sustentada, armazenamento e capacidade de implantação continuam pendentes com evidência própria. O novo mapa não declara empresa, mês ou produto completo. Sem SGC, publicação, candidata de Compras, aceitação ou checkpoint presumidos.
+1 -1
View File
@@ -1,6 +1,6 @@
# RH — contratos, assiduidade e férias integrados
11/11/2026. Pedido expresso para concluir estas três áreas no módulo autónomo RH, na mesma8085. **Bloco e30 concessões QA autorizados expressamente11/11: Autorizar o bloco e as30 concessões QA apresentadas. Implementação em curso.** A conferência SELECT-only dos dois livros existentes confirma nove nomes de direito sem nenhuma concessão.
11/11/2026. Pedido expresso para concluir estas três áreas no módulo autónomo RH, na mesma8085. **Bloco e30 concessões QA autorizados expressamente11/11: Autorizar o bloco e as30 concessões QA apresentadas. [Entrega concluída](SGF_HUMAN_RESOURCES_PERSONNEL_DELIVERY.md).** A conferência SELECT-only dos dois livros existentes confirma nove nomes de direito sem nenhuma concessão.
## Entrega única proposta
@@ -0,0 +1,21 @@
# RH — resumo legível das versões revistas
11/11/2026. Disponível na mesma8085: **Recursos Humanos → Contratos, assiduidade e férias → escolher uma versão revista → Descarregar resumo legível desta versão**. Não requer novos direitos. Continua disponível a descarga separada do CSV original conservado.
O resumo apresenta campos com nomes legíveis para contrato, assiduidade do dia, condição/pedido de férias e conferência do período. Inclui colaborador fictício, versão, preparação/revisão, data, fundamento, evidência, valores e limites. O relatório do período separa os dois dias conhecidos dos restantes sem cobertura. Tempo desconhecido permanece desconhecido; declaração explicitamente vazia é identificada. Saldos são os da versão revista, não o estado actual.
É uma **vista derivada**, formato `SGF-HR-READABLE-CSV-v1`, exclusivamente da versão aprovada e imutável; não consulta fontes actuais, não recalcula o resultado nem grava outro documento/decisão. O próprio resumo identifica o SHA do CSV original e o formato de leitura. O SHA do resumo é distinto e calculado sobre os bytes efectivamente enviados. Não apresenta esta derivação como o artefacto original conservado ou como documento legal.
Descarga pela sessão/contexto existentes, sem tokens no URL. Antes de guardar, o cliente confere contexto ainda actual, tipo CSV, formato, SHA do original escolhido e SHA efectivo da resposta. BOM UTF8, separador ponto-e-vírgula, aspas/quebras escapadas e protecção contra fórmulas em texto livre. Uma resposta atrasada, fonte diferente ou erro de acesso não produz um ficheiro aceite.
## Correcção da auditoria futura
As novas decisões de pessoal passam a usar a área correcta (`human_resources.contracts/attendance/leave.prepare/review`), também discriminada nos detalhes permitidos da auditoria comum. A identificação herdada da família de remunerações foi detectada no serviço de pessoal. A correcção aplica-se **apenas a eventos futuros**. Os16 eventos/decisões anteriores da8085 não foram reclassificados ou reescritos: as fontes completas e correctas por tipo/autor/estado continuam em `hp_versions`, como nas provas aceites. O resumo usa essas versões, não tenta deduzir o tipo pela etiqueta histórica da auditoria comum.
## Provas e preservação
[Índice de provas](proofs/sgf-hr-readable-20261111.json):17 verificações da leitura/regressão e classificação de um novo evento de contrato, revertido;11 da descarga (integridade, origem, formato,403 e mudança de contexto); três do handler real de interface com fetch/hooks simulados;27 HTTP sobre versões efectivas8085, cinco tipos, históricos desconhecido/vazio, recusas e JS/MIME/SHA. São58 verificações dirigidas. Não são navegador/revisão visual.
Todos os66 conjuntos originais comparados permanecem idênticos, incluindo16 versões/recibos de pessoal, seis versões/recibos salariais,27 lançamentos, utilizadores, perfis e acessos. Três bindings intactos. Os CSV originais das cinco famílias conservam os seus SHA; o mapa original coincide byte a byte com o ficheiro aceite. Seis registos/cache não foram alvo de comandos. Nenhuma nova decisão de negócio8085, concessão, perfil, schema, base/porta/demo, SGC, limpeza de cache ou reinício. Foram actualizados só seis ficheiros de fonte e os assets compilados, com anteriores conservados em privado.
As233 provas de pessoal e56 de compatibilidade anteriores foram reutilizadas, sem repetir seus comandos ou suites. A nova leitura não declara carga sustentada, conformidade laboral/fiscal, capacidade de implantação, publicação, candidata de Compras, aceitação ou checkpoint. Visual e restantes lacunas de produto continuam separadas.
+68
View File
@@ -0,0 +1,68 @@
# Facturação multilinha integrada — entrega QA na8085
11/11/2026. Âmbito `SGF-MULTI-LINE-INVOICE-INTEGRATED-QA-v1`, expressamente autorizado. Código, interface e percurso efectivo entregues na instalação existente; sem novas demonstrações ou dependência do SGC. [Prova consolidada](proofs/sgf-multi-line-invoice-20261111.json). Não constitui aceitação, checkpoint, publicação ou conformidade fiscal real.
## Resultado utilizável
Em `/sgf`, módulo Comercial → Facturação → **Documento com várias linhas QA**: cabeçalho/cliente e dados documentais,1–25 linhas de serviços, pesquisa paginada, unidade/quantidade/preço e modalidade explícita, totais e diferenças, preparação auditada, cálculo conservado, revisão temporal distinta e emissão de teste/PDF. A configuração das séries permanece separada. O menu horizontal/dropdown aceite é preservado.
|Exemplo existente|Modalidade|Linhas|Base|Imposto QA|Total|Recebível em aberto|
|---|---|---|---:|---:|---:|---:|
|TEST-MULTI-2026/1|Acrescido|400+600|1000|160|1160|1160MZN|
|TEST-MULTI-2026/2|Incluído|464+696|1000|160|1160|1160MZN|
Dois recebíveis explicitamente preparados/revistos; nenhum pagamento, recebimento ou afectação. Duas origens explicitamente preparadas/revistas/aplicadas no mesmo diário em três linhas: D QA-CLIENTES1160 / C QA-VENDAS1000 / C QA-IMPOSTO-TESTE160. **29→31 lançamentos;24 contas intactas.** Não há emissão ou contabilização automática ao guardar/calcular.
Nova preparação/revisão de resultado interno parcial v5/v6, usando a mesma correspondência revista v4:24 contas de plano,23 com movimento,31 lançamentos; activos classificados5575, fornecedor100, rendimentos4586,21, gastos2300, subtotal conhecido2286,21MZN. Dez contas continuam por classificar; capital, resultado completo e balanço completo indeterminados. Os CSV/snapshots19/27 e23/29 mantêm os bytes anteriores. Conferência actual do período somente de leitura:44 factos, zero pendentes, débitos/créditos iguais; período aberto.
## Distribuição de funções sem novas concessões
Os22 nomes de direitos verificados não pertencem todos à mesma pessoa. A implementação conserva a distribuição efectiva:
- Comercial preparação QA8 prepara o rascunho, propõe a regra temporal e emite após revisão; não enumera o catálogo fiscal comum.
- Financeiro preparação QA13, no contexto Comercial explicitamente escolhido, conserva o cálculo com `fiscal_rules.prepare` e consulta a regra com `fiscal_rules.view`. Isto não concede ao Comercial o poder fiscal de13.
- Comercial revisão QA9 decide a versão temporal, com revalidação estritamente vinculada ao cálculo já conservado; não administra regras fiscais.
- Financeiro QA13/14 prepara/revê o recebível no módulo Financeiro.
- Contabilidade QA15/16 prepara/revê/aplica o lançamento no módulo Contabilidade. Consulta conserva os seus direitos existentes.
Nenhum direito, concessão, utilizador, perfil, conta contabilística ou role PostgreSQL novo. Os rascunhos conservam associação **Comercial**. `QualifiedInvoiceSource` permite a leitura qualificada da dependência tipada pelos módulos financeiros autorizados, sem acrescentar associações modulares. A API Comercial directa continua a exigir troca explícita de módulo; a consulta financeira usa o seu próprio percurso. Não introduzir atalhos que contornem essa guarda.
## Mecanismos e protecções
`MultiLineDrafts` compõe atomicamente os escritores originais de prestação, rascunho e preparação. Regista a origem dos novos rascunhos em `mi_drafts`; não adopta ou altera rascunhos antigos. Campos desconhecidos podem permanecer no rascunho; impedem cálculo/emissão em vez de assumir zero. Prévia é revertida; confirmação exige autor/contexto/versões/catálogos actuais e fundamento. Depois de emitida, esta origem não é editável pelo editor novo.
`MultiLineInvoiceCalculation` usa `FiscalRules::invoiceDocument` e o mesmo `FiscalDocumentMath`: truncatura por linha, base incluída=bruto−imposto documental e conservação das diferenças racionais. A captura vincula origem, preparação, unidades, modalidade, regra/vigência, data e identidade/poderes do preparador. Alterações invalidam conferências pendentes; uma recuperação de comando já concluído devolve o comprovativo histórico, sem revalidar uma emissão nova.
`MultiLineInvoiceIssuance` adapta apenas o novo tipo de captura ao **ServiceInvoicing original**, seu contador, eventos, PDF guardado e recibos. O ramo de uma linha mantém o seu contrato. `SalesLedgerSource` confere os totais documentais congelados pelo mesmo cálculo e fornece o mesmo escritor de vendas, sem outro diário. Prévia de emissão não atribui número nem cria dívida. Recibos novos são individuais, isolados e append-only. Catálogos novos têm SQL25/100; decisões da página são lidas conjuntamente. Não se declara que a listagem administrativa antiga passou a ser um registo universal paginado.
Nas operações novas, o bloqueio por empresa serializa confirmações; permissões são novamente conferidas após o bloqueio. O tratamento HTTP traduz espera excedida em503 com indicação para recuperar a mesma chave. A interface conserva pedido/chave quando o resultado é incerto e impede trocar origem/contexto em curso. A recuperação após recarregar a página depende do identificador original/comprovativo; não existe uma caixa de saída persistente nova no navegador.
## Provas dirigidas e reutilizadas
**143 verificações dirigidas,122 de preservação, concorrência separada e conferência de período somente de leitura.** Não somar as passagens iniciais substituídas. As suites alheias de Compras/Stock/RH/activos não foram repetidas.
|Prova final|Verificações|Cobertura|
|---|---:|---|
|Percurso financeiro na regressão|26|Acrescido/incluído,100 incluído86,21+13,79, PDF, recebível, três linhas GL e propriedade Comercial; rollback|
|Controlador|18|Direitos, campos protegidos, SQL25/100, decisões, recibos e unidade estrangeira; rollback|
|Fronteiras|20|Desconhecidos,1/25/26 linhas, identidade/poderes, regra retirada, versões e modalidade; rollback|
|Falha parcial|6|Falha após escritores originais/antes do recibo, rollback integral e recuperação única de rascunho; falha tardia da emissão desfaz contador/factura/PDF/evento/recibo; rollback|
|Interface|21|Handlers com API simulada, escolha explícita, totais, incerteza/mesma operação, revisão distinta/menu; não é navegador|
|HTTP8085|28|Percurso concluído, fotografias/PDF/SHA, permissões e ficheiros efectivamente servidos|
|Resultado interno parcial|12|Duas decisões novas, mesmas correspondências, saldos e exportações históricas|
|Leituras finais HTTP|12|Registo Comercial25/100, posições Financeiras2320, prazo desconhecido e origem/recibos exactos|
|Preservação|122|96 conjuntos originais, appends exactos, três bindings, PDFs anteriores, escritores antigos, contas/diário/período e ficheiros instalados|
Concorrência só na regressão existente: duas emissões com chaves distintas sobre o mesmo documento. A primeira retém a transacção; `pg_blocking_pids`/`pg_stat_activity` identificam a espera Lock/transactionid no bloqueio da empresa. A segunda recebe503 após **5,09s**. Libertada a primeira, a segunda recusa a conferência desactualizada com409; recuperar a primeira devolve200/replayed. Uma factura, um recibo de emissão e último número1. A fixture de concorrência fica identificada exclusivamente na regressão, sem recebível/GL: não é uma pendência da8085 nem deve ser usada para declarar fecho geral da regressão.
Os dois percursos8085 somam22 comandos guardados em progresso privado; mais dois de resultado interno. Não os repetir para apresentação. A retomada do ensaio HTTP reutilizou resultados/chaves conservados após corrigir no harness o endereço de comando GL e a consulta de documento no módulo indevido. Não foram criados documentos suplementares. O teste de período inicialmente procurava uma propriedade `balanced` inexistente: a observação válida foi reutilizada e compararam-se `debit_minor`/`credit_minor`, sem repetir a consulta ou fechar o período.
PDF máximo25linhas: amostra não emitida, cinco páginas renderizadas e inspeccionadas; texto legível, sem corte/colisão observado. O renderizador textual existente pode dividir a descrição de uma linha entre páginas; não é um modelo fiscal oficial nem revisão visual da aplicação. As capturas fornecidas orientaram os campos e percurso, sem importar dados pessoais ou copiar taxas como legislação.
## Preservação e limites
Todas as linhas anteriores dos96 conjuntos conferidos permanecem idênticas. Mantêm-se29 lançamentos originais,24 contas, seis versões/recibos de activos, custo1200/acumulado100/líquido1100, Caixa950, RH, Stock, Compras, permissões/utilizadores e três bindings. Novas escritas limitadas aos dois documentos e suas preparações/decisões/recebíveis/GL e resultado parcial autorizados. Os seis registos protegidos não foram escolhidos ou escritos; nenhum comando de limpeza de cache, migração geral, nova demonstração, publicação, SGC ou candidata de Compras foi executado.
A proposta de vencimento no rascunho não se converte automaticamente em condição do recebível: os dois prazos efectivos permanecem desconhecidos. O livro/mapa IVA anterior conserva quatro versões e não inclui estes documentos. Não presumir que a nova regra artificial16% é taxa legal, que este ciclo valida emissão real ou que foram implementados regimes mistos, isenções, descontos fiscais, artigos/famílias, POS ou Excel.
A instalação continua QA: revisão visual da aplicação, carga sustentada, armazenamento/recuperação operacional, fiscalidade/modelos legais e capacidade de implantação exigem evidência própria. A [matriz v30](integration/sgf-solution-contract.json) mantém `full_product_complete=false` e `client_presentable=false`.
+44
View File
@@ -0,0 +1,44 @@
# Facturação por várias linhas — ciclo integrado QA proposto
11/11/2026. **Autorizado expressamente11/11: «Autorizar a facturação multilinha QA proposta». Implementado e aplicado na mesma8085; ver [entrega](SGF_MULTI_LINE_INVOICE_DELIVERY.md).** Continuação funcional das referências de facturação fornecidas pelo utilizador, na mesma8085 e regressão existente, sem novas demonstrações ou SGC.
## Bloqueio concreto e decisão necessária
O cálculo comum de1–25linhas e de preço com imposto incluído já existe e foi aprovado. Porém, ServiceCalculation::evaluate continua a exigir uma linha/preço acrescido e ServiceInvoicing::reviewInside conserva a mesma restrição. O [âmbito anterior](SGF_MULTI_LINE_INCLUDED_SCOPE.md) diz: «Não emite factura, reconhece dívida, cria pagamento, lançamento ou altera o livro/mapa IVA.» Portanto, não basta retirar uma condição de interface: é preciso autorizar o novo efeito documental/financeiro e a sua ligação ao cálculo revisto.
Proposta agrupada: terminar o percurso de documento por várias linhas no SGF, desde cabeçalho/cliente/linhas até cálculo, revisão, emissão QA/PDF, recebível e contabilização explícita no diário existente. Não propor uma decisão por campo ou etapa.
## Funcionalidade e política
Uma área de trabalho quotidiana reúne cabeçalho, cliente/NUIT reutilizados, moeda/datas/condições, grelha com1–25linhas e resumo de bases/imposto/totais sempre visível. Pesquisa e selecção explícita de serviços existentes; unidade/quantidade/preço por linha; sem importar nomes, contactos ou dados das capturas. Configuração de séries/regras fica em área própria e o menu horizontal/dropdown aceite permanece. Artigos/famílias/POS/importação Excel não são implicitamente implementados por esta grelha.
Reutilizar o núcleo comum e a política já aprovada: imposto documental truncado por linha; preço incluído decompõe base documental como bruto menos imposto documental; conservar exactos e diferenças racionais e somar montantes documentais das linhas. Sem adoptar taxa como lei, perfil real, regimes mistos por linha, isenções presumidas, descontos fiscais novos ou linhas negativas. Campos não suportados não são mostrados como operações disponíveis.
A nova captura é tipada/versionada e vinculada ao rascunho/preparação/perfil/regra/data/modalidade/linhas/unidades/contexto/pessoa. Edição ou mudança de origem invalida a conferência. Prévia não numera nem cria dívida; emissão exige revisão/prontidão e confirmação individual, fixa fotografia/PDF/SHA e número uma única vez pelo writer documental existente. Contabilidade mantém preparação/revisão distinta/aplicação próprias, usando o mesmo escritor de vendas em três linhas; não gerar lançamentos silenciosamente ao guardar.
Os contratos e ramos antigos de uma linha permanecem inalterados. O adaptador novo aplica-se apenas a novas origens deste âmbito QA; nenhum documento/cálculo antigo é recalculado, convertido ou reemitido.
## Exemplos/efeitos pedidos na8085
Reutilizar o cliente fictício autorizado do percurso comercial concluído e os serviços/cadastros QA existentes; escolha por referência exacta, sem usar ou associar os seis registos protegidos. Se for necessário preparar novos rascunhos/prestações, fazê-lo pelos mecanismos actuais, com proveniência Comercial explícita. Preços das linhas são dados de preparação auditados, não alteração automática do catálogo.
Preparar/rever uma série nova **TEST-MULTI-2026**, pela administração já existente. Os números só são atribuídos nas confirmações efectivas; séries e números anteriores ficam intactos. Dois documentos QA de duas linhas:
|Modalidade artificial16%|Linhas|Base documental|Imposto|Total|
|---|---|---:|---:|---:|
|Acrescido|400+600|1000|160|1160MZN|
|Incluído|464+696|1000|160|1160MZN|
A regra QA16% existente é escolhida explicitamente na sua vigência; nenhuma alteração legal de taxa é declarada. O caso100incluído=86,21+13,79, diferenças racionais e limites1/25/26linhas são provas de regressão, sem terceiro documento8085.
Cada documento tem um recebível1160MZN, total novo2320, sem recebimento ou afectação. Cada origem é conferida/aplicada individualmente no mesmo diário: D QA-CLIENTES1160 / C QA-VENDAS1000 / C QA-IMPOSTO-TESTE160. **Dois lançamentos novos,29→31**, preservando os29 originais. Não criar contas: mantém24. Não cria pagamento, Caixa, Stock, compra, custo ou salário.
O relatório interno parcial pode receber uma nova preparação/revisão de resultado sobre as mesmas correspondências aprovadas, sem reescrever snapshots anteriores ou presumir contas por classificar como capital. Mantêm-se as quatro versões do livro/mapa IVA; os dois documentos novos não serão apresentados como incluídos nesse mapa antigo nem como apuramento geral.
## Acessos e execução
**Sem direitos, concessões, utilizadores ou perfis novos.** Conferência SELECT-only nos dois livros encontrou os22 nomes de direitos necessários já distribuídos pelos perfis QA existentes, sem alterar a distribuição. Comercial conserva cadastros/rascunhos; os responsáveis documentais conservam configuração/revisão/emissão que já possuem; Contabilidade conserva preparar/rever/aplicar. Consulta não passa a permitir emissão. Se uma concessão adicional se revelar indispensável, deve ser apresentada antes de a conceder.
Primeiro implementar/provar todo o bloco na regressão existente; depois executar apenas os dois percursos positivos uma vez na8085 com chaves/progresso/recibos privados. Reutilizar as provas válidas de cálculos, emissão original, recebíveis, diário e navegação. Acrescentar apenas fronteiras alteradas: equivalência dos totais/PDF/fotografia/fonte GL, dados desconhecidos, modalidade/linhas divergentes, permissões/empresa/unidade/pessoa, versão/data alteradas, concorrência/numeração/idempotência e recuperação após falhas parciais, sem números/documentos/dívida/diários duplicados.
Preservar os seis registos, cache bloqueada,29 lançamentos/24 contas, activo1200/100/1100, Caixa950, RH, Stock, compras e snapshots/provas aceites. Sem novas demonstrações, SGC, dados/acessos/operações reais, emissão fiscal legal, comunicação/envio à AT/cliente, modelos oficiais, publicação, candidata de Compras, reabertura, checkpoint ou aceitação presumida. Visual, carga sustentada e implantação mantêm pendências separadas.
@@ -0,0 +1,97 @@
{
"version": "SGF-FIXED-ASSETS-INTEGRATED-QA-v1",
"approved": true,
"implemented": true,
"applied": true,
"scope_file": "docs/SGF_FIXED_ASSETS_SCOPE.md",
"module": "accounting",
"books": [
"existing8085",
"existing_regression"
],
"scope": {
"tenant_id": 1,
"company_id": 2,
"unit_id": 2
},
"new_host_rights": [
"fixed_assets.view",
"fixed_assets.prepare",
"fixed_assets.review"
],
"grants_per_book": [
{
"user_id": 15,
"permission": "fixed_assets.view"
},
{
"user_id": 16,
"permission": "fixed_assets.view"
},
{
"user_id": 17,
"permission": "fixed_assets.view"
},
{
"user_id": 15,
"permission": "fixed_assets.prepare"
},
{
"user_id": 16,
"permission": "fixed_assets.review"
}
],
"grant_count_per_book": 5,
"total_grants_both_books": 10,
"new_users": 0,
"new_profiles": 0,
"new_postgres_grants": 0,
"new_public_rights": 0,
"new_demo": false,
"new_accounts_per_book": [
{
"code": "QA-ACTIVO-CUSTO",
"purpose": "Custo bruto do activo fictício",
"statement_group": "assets"
},
{
"code": "QA-ACTIVO-DEP-ACUM",
"purpose": "Depreciação acumulada (saldo credor no activo)",
"statement_group": "assets"
},
{
"code": "QA-ACTIVO-GASTO-DEP",
"purpose": "Gasto de depreciação QA",
"statement_group": "expenses"
},
{
"code": "QA-ACTIVO-ORIGEM-QA",
"purpose": "Contrapartida artificial de abertura, sem capital ou dívida presumidos",
"statement_group": "unclassified"
},
{
"code": "QA-ACTIVO-GASTO-ABATE",
"purpose": "Perda interna no abate sem contraprestação",
"statement_group": "expenses"
}
],
"original_journals_preserved": 27,
"proposed_new_journals_8085": 2,
"journal_count_after_8085": 29,
"original_accounts_preserved": 19,
"account_count_after_8085": 24,
"new_cash_or_debt_effects": false,
"typed_common_writer_extension_required": true,
"new_statement_mapping_and_result_commands_8085": 4,
"evidence": [
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261111-103845-dbdf9215/assets-access-readonly.json",
"C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-103847-36def480/assets-access-readonly.json"
],
"authorization": {
"date": "2026-11-11",
"decision": "Autorizar o ciclo integrado de activos QA"
},
"delivery": "docs/SGF_FIXED_ASSETS_DELIVERY.md",
"proof": "docs/proofs/sgf-fixed-assets-20261111.json",
"application_limits": "Only both existing QA books; no real accesses or production activation."
}
@@ -1,8 +1,8 @@
{
"version": "SGF-HR-CONTRACTS-ATTENDANCE-LEAVE-QA-v1",
"approved": true,
"implemented": false,
"applied": false,
"implemented": true,
"applied": true,
"scope_file": "docs/SGF_HUMAN_RESOURCES_PERSONNEL_SCOPE.md",
"module": "human_resources",
"books": [
@@ -110,5 +110,6 @@
"authorization": {
"date": "2026-11-11",
"decision": "Autorizar o bloco e as30 concessões QA apresentadas"
}
},
"delivery": "docs/SGF_HUMAN_RESOURCES_PERSONNEL_DELIVERY.md"
}
@@ -0,0 +1,39 @@
{
"version": "SGF-MULTI-LINE-INVOICE-INTEGRATED-QA-v1",
"approved": true,
"implemented": true,
"applied": true,
"scope_file": "docs/SGF_MULTI_LINE_INVOICE_SCOPE.md",
"target": "existing8085",
"regression": "existing_book",
"new_demo": false,
"sgc_required": false,
"new_rights": [],
"new_grants": 0,
"new_users": 0,
"new_accounts": 0,
"existing_permission_names_verified": 22,
"new_documents": 2,
"new_receivables_minor": [
116000,
116000
],
"new_journals": 2,
"before_journals": 29,
"after_journals": 31,
"chart_accounts_preserved": 24,
"new_payments": 0,
"cash_preserved_minor": 95000,
"protected_records_preserved": 6,
"cache_cleared": false,
"new_series": "TEST-MULTI-2026",
"policy_reused": "SGF-MULTI-LINE-INCLUDED-QA-v1",
"decision_required": "Autorizar a facturação multilinha QA proposta",
"reason": "Previous calculation scope expressly excludes invoices, debt and journals; current invoicing engine still restricts one line and added price.",
"authorization": {
"date": "2026-11-11",
"decision": "Autorizar a facturação multilinha QA proposta"
},
"delivery": "docs/SGF_MULTI_LINE_INVOICE_DELIVERY.md",
"proof": "docs/proofs/sgf-multi-line-invoice-20261111.json"
}
+92 -20
View File
@@ -1,5 +1,5 @@
{
"version": "SGF-SOLUTION-CLOSURE-v25",
"version": "SGF-SOLUTION-CLOSURE-v30",
"target": "existing8085",
"sgc_required": false,
"new_demonstrations": false,
@@ -16,7 +16,8 @@
"Recibo de afectação efectiva400, crédito nominal100/saldo500 e factura-recibo1000 atómica",
"PDF/SHA, histórico e anulação técnica com reversão explícita e diário único",
"Registo unificado autorizado com seis famílias, filtros/SQL25/100 e projecções limitadas à página",
"Início operacional com percurso, evidências, funções autorizadas e consulta explícita das fontes existentes"
"Início operacional com percurso, evidências, funções autorizadas e consulta explícita das fontes existentes",
"Editor unificado1–25 serviços, imposto acrescido/incluído, cálculo comum revisto, PDF e passagem explícita recebível/diário QA"
],
"required_host_tables": [
"a_clients",
@@ -32,7 +33,12 @@
"sd_versions",
"sd_outputs",
"sd_commands",
"sd_cancellations"
"sd_cancellations",
"mi_meta",
"mi_calculations",
"mi_commands",
"mi_draft_meta",
"mi_drafts"
],
"required_source_files": [
"app/Modules/Services/ServiceWorkflow.php",
@@ -44,14 +50,21 @@
"app/Modules/Services/BillingRegister.php",
"resources/js/BillingRegisterWorkspace.jsx",
"resources/js/WorkspaceHome.jsx",
"resources/js/workspace-overview.js"
"resources/js/workspace-overview.js",
"app/Modules/Services/MultiLineInvoiceCalculation.php",
"app/Modules/Services/MultiLineInvoiceIssuance.php",
"app/Modules/Services/MultiLineDrafts.php",
"app/Modules/Services/QualifiedInvoiceSource.php",
"resources/js/MultiLineInvoiceWorkspace.jsx"
],
"proofs": [
"docs/proofs/invoice-test-results.json",
"docs/proofs/sgf-six-module-functional-review-20261110.json",
"docs/SGF_SERVICE_DOCUMENTS_DELIVERY.md",
"docs/SGF_BILLING_REGISTER_DELIVERY.md",
"docs/SGF_OPERATIONAL_INFORMATION_DELIVERY.md"
"docs/SGF_OPERATIONAL_INFORMATION_DELIVERY.md",
"docs/SGF_MULTI_LINE_INVOICE_DELIVERY.md",
"docs/proofs/sgf-multi-line-invoice-20261111.json"
],
"work_remaining": [
"Revisão visual, aceitação explícita e conformidade real; emissão fiscal real permanece bloqueada",
@@ -309,7 +322,8 @@
"Início operacional com percurso, evidências, funções autorizadas e consulta explícita das fontes existentes",
"Submenus distintos e balancete/razão por datas explícitas, escolha de conta por linha, páginas25/100, detecção de mudança de livro e CSV da página",
"Controlo administrativo QA de obrigação/prazo/responsável do mapa interno revisto, preparação13/revisão14, correcção/cancelamento, entrega apenas simulada com SHA verificado, histórico/recibo/SQL25/100/CSV; sem calendário legal ou submissão",
"Correspondências explícitas revistas15/16 e balanço/resultados internos parciais QA:19contas/nove pendentes, resultado congelado19linhas/SHA, história/recibo/CSV contextual, ligação exacta ao razão; capital e resultado completo não presumidos"
"Correspondências explícitas revistas15/16 e balanço/resultados internos parciais QA:19contas/nove pendentes, resultado congelado19linhas/SHA, história/recibo/CSV contextual, ligação exacta ao razão; capital e resultado completo não presumidos",
"Activos QA: cadastro/custódia/plano/quota revistos, diário único1200/100 e líquido1100; correcção/abate/fecho do recorte na regressão"
],
"required_host_tables": [
"ca_proposals",
@@ -321,7 +335,10 @@
"fr_commands",
"fo_meta",
"fo_versions",
"fo_commands"
"fo_commands",
"fa_meta",
"fa_versions",
"fa_commands"
],
"required_source_files": [
"app/Modules/Accounting/GeneralLedger.php",
@@ -357,7 +374,12 @@
"resources/js/statement-download.js",
"resources/js/FiscalObligationsWorkspace.jsx",
"database/sql/internal_statements.sql",
"config/internal_statements.php"
"config/internal_statements.php",
"app/Modules/Accounting/FixedAssets.php",
"app/Modules/Accounting/FixedAssetLedgerSource.php",
"app/Modules/Accounting/FixedAssetJournalController.php",
"resources/js/FixedAssetsWorkspace.jsx",
"packages/general-ledger/src/LedgerAssets.php"
],
"proofs": [
"docs/proofs/purchasing-completion-matrix-final-20261104.json",
@@ -369,11 +391,14 @@
"docs/SGF_OPERATIONAL_INFORMATION_DELIVERY.md",
"docs/SGF_ACCOUNTING_REPORTS_DELIVERY.md",
"docs/SGF_FISCAL_OBLIGATIONS_DELIVERY.md",
"docs/SGF_FINANCIAL_STATEMENTS_DELIVERY.md"
"docs/SGF_FINANCIAL_STATEMENTS_DELIVERY.md",
"docs/SGF_COVERAGE_RECONCILIATION.md",
"docs/proofs/sgf-fixed-assets-20261111.json"
],
"work_remaining": [
"Conferência visual restante e aceitação explícita do conjunto; ver SGF_SIX_MODULE_CLOSURE_20261110.md",
"Backlog fiscal/financeiro amplo pendente; tabela de cobertura não implementa motores ou modelos"
"Backlog fiscal/financeiro amplo pendente; tabela de cobertura não implementa motores ou modelos",
"Activos gerais e tratamento fiscal/legal, alienação/contraprestação, correcções de custo já admitido e cadeias adicionais fora do recorte QA"
],
"required_native_tables": [
"gl_accounts",
@@ -384,7 +409,9 @@
"fs_versions",
"fs_results",
"fs_result_lines",
"fs_commands"
"fs_commands",
"gl_asset_books",
"gl_asset_extension_versions"
]
},
{
@@ -396,29 +423,46 @@
"Regras artificiais versionadas com vigência e fonte explícitas",
"Processamento exacto por trabalhador/período com escolha de fontes e revisão distinta",
"Correcção/cancelamento versionados, prévia, histórico, recibos e recuperação",
"Mapa individual revisto conservado com SHA e exportação autenticada; filtros SQL25/100"
"Mapa individual revisto conservado com SHA e exportação autenticada; filtros SQL25/100",
"Contratos internos QA revistos com correcção/terminação/cancelamento e dependências",
"Plano e assiduidade por dia com intervalos explícitos, dados desconhecidos e revisão distinta",
"Condição de férias QA, reserva/gozo/cancelamento individuais, saldo efectivo sem duplicação",
"Conferência parcial do período por pessoa, fontes/versões e CSV/SHA conservado",
"Ligação contratual explícita opcional em novas preparações salariais, provada na regressão sem alterar salários8085",
"Resumo CSV legível derivado de versão revista, com SHA próprio/original, sem alterar o artefacto conservado"
],
"required_host_tables": [
"rm_meta",
"rm_versions",
"rm_commands",
"hr_qa_profiles"
"hr_qa_profiles",
"hp_meta",
"hp_versions",
"hp_commands"
],
"required_source_files": [
"app/Modules/HumanResources/Remunerations.php",
"app/Modules/HumanResources/Http/RemunerationsController.php",
"app/Shared/Installation/HumanResourcesProfiles.php",
"resources/js/RemunerationsWorkspace.jsx",
"resources/js/statement-download.js"
"resources/js/statement-download.js",
"app/Modules/HumanResources/Personnel.php",
"app/Modules/HumanResources/PersonnelTime.php",
"app/Modules/HumanResources/Http/PersonnelController.php",
"resources/js/PersonnelWorkspace.jsx",
"app/Modules/HumanResources/PersonnelReadableCsv.php"
],
"proofs": [
"docs/SGF_HUMAN_RESOURCES_DELIVERY.md",
"docs/proofs/sgf-human-resources-20261111.json"
"docs/proofs/sgf-human-resources-20261111.json",
"docs/SGF_HUMAN_RESOURCES_PERSONNEL_DELIVERY.md",
"docs/proofs/sgf-hr-personnel-20261111.json",
"docs/SGF_HUMAN_RESOURCES_READABLE_DELIVERY.md"
],
"work_remaining": [
"Contratos/alterações contratuais, assiduidade, turnos, férias e ausências",
"Regimes, IRPS/INSS/modelos legais e ligação salarial a dívida/pagamentos/Contabilidade",
"Revisão visual, carga sustentada e capacidade de implantação"
"Conformidade e aplicabilidade laboral real: contratos legais, turnos/calendário, férias legais, benefícios e modelos",
"Cálculo legal IRPS/INSS e ligação a dívida/pagamento/Contabilidade sem efeitos implícitos",
"Revisão visual, carga sustentada, armazenamento e capacidade de implantação"
]
}
],
@@ -458,7 +502,7 @@
],
"acceptance_proof": "docs/proofs/sgf-single-solution-acceptance.json",
"scope_policy": "Recorte QA dos seis módulos e requisitos amplos de produto separados explicitamente; nenhum painel de cobertura equivale à implementação dos motores ou modelos pendentes.",
"revision_note": "A prova funcional anterior conserva o contrato v1 histórico; as lacunas agora discriminadas não são aceitação nem capacidade de implantação.",
"revision_note": "11/11: activos QA integrados na8085, origem1200/quota100 no diário único,29 lançamentos/24 contas; demonstração nova parcial23 contas com movimento e snapshot antigo19/27 intacto. Produto amplo não concluído; revisão visual/carga/legal/implantação separadas.",
"proposed_scope_extensions": [
{
"id": "cash",
@@ -529,6 +573,23 @@
"access": "docs/integration/sgf-statements-access-proposal.json",
"approval_required_for_new_qa_rights": false,
"implemented": true
},
{
"id": "fixed_assets_qa",
"scope": "docs/SGF_FIXED_ASSETS_SCOPE.md",
"access": "docs/integration/sgf-fixed-assets-access-proposal.json",
"approval_required_for_new_qa_rights": false,
"implemented": true,
"delivery": "docs/SGF_FIXED_ASSETS_DELIVERY.md"
},
{
"id": "multi_line_invoice_qa",
"scope": "docs/SGF_MULTI_LINE_INVOICE_SCOPE.md",
"decision": "docs/integration/sgf-multi-line-invoice-proposal.json",
"approval_required_for_new_effects": false,
"new_rights": [],
"implemented": true,
"delivery": "docs/SGF_MULTI_LINE_INVOICE_DELIVERY.md"
}
],
"full_product_complete": false,
@@ -545,7 +606,7 @@
"status": "partial",
"implemented": false,
"basis": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md sections10/11",
"description": "Cadastro/regras/processamento interno artificial QA em RH autónomo entregue; operações laborais gerais, cálculo legal IRPS/INSS/modelos e ligação salarial financeira/contabilística pendentes"
"description": "RH autónomo QA com cadastro/contratos/assiduidade/férias e remunerações internas entregue; regimes laborais gerais, IRPS/INSS/modelos legais e ligação financeira/contabilística salarial pendentes"
},
{
"id": "irpc",
@@ -588,6 +649,17 @@
"implemented": false,
"basis": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md sections10/11",
"description": "Dois critérios/indicadores QA com fontes conciliadas entregues; rácios gerais, critérios reais e tendências/séries permanecem pendentes"
},
{
"id": "fixed_assets",
"status": "partial",
"implemented": false,
"basis": "docs/SERVICE_INVOICE_CALCULATION_SPEC.md FIS-SGF-15",
"description": "Ciclo integrado QA entregue na8085: cadastro/plano/quota/diário/relatórios e ramos de correcção/abate/fecho do recorte na regressão. Operação geral/legal de activos e taxas fiscais continuam pendentes.",
"scope": "docs/SGF_FIXED_ASSETS_SCOPE.md",
"access_proposal": "docs/integration/sgf-fixed-assets-access-proposal.json",
"qa_implemented": true,
"delivery": "docs/SGF_FIXED_ASSETS_DELIVERY.md"
}
],
"client_delivery_sources": [
@@ -0,0 +1,33 @@
{
"passed": true,
"date": "2026-11-11",
"directed_checks": 15,
"identical_original_tables": 66,
"new_grants": 0,
"business_commands": 0,
"cache_cleared": false,
"new_demo": false,
"visual_review": false,
"evidence": [
{
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-103843-f515a584/coverage-reconciliation.json",
"sha256": "6154e9b5cc8ba35db480fdb330a33c5857d372cb2ed64ea9e5985eaa12a3c028",
"checks": 7
},
{
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/coverage-reconciliation-http-20261111.json",
"sha256": "78f94a8cc1f758e3ffe06dc23986ab574c5929ac8bacda3f430cc0d4ec9a90cb",
"checks": 8
},
{
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261111-103940-12c6c0e7/coverage-reconciliation-installation.json",
"sha256": "477e55ca47bf452a26d83aac316c8fcd621e5c5f5eecfb658a7281187dd3c358",
"checks": 0
},
{
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261111-104407-f54005b6/coverage-reconciliation-preservation.json",
"sha256": "decb9c3c3c42f78b6826c547a242b9c5e489db22790d89b192da4e55fafb0846",
"checks": 0
}
]
}
+101
View File
@@ -0,0 +1,101 @@
{
"passed": true,
"date": "2026-11-11",
"installation": "existing8085",
"contract": "SGF-FIXED-ASSETS-INTEGRATED-QA-v1",
"checks_by_group": {
"functional": 17,
"correction": 16,
"boundaries": 23,
"journal_boundaries": 9,
"period_sources": 2,
"writeoff_and_close": 5,
"ui_handlers": 15,
"http8085": 25,
"statements_http": 14,
"source_version": 3,
"final_read_and_coverage": 3,
"sequential_quota_writeoff_guards": 6
},
"new_checks_total": 141,
"additional_assertions": {
"atomic_failure_reused_from_completed_assertion_before_later_harness_error": true,
"current_period_facts40_pending0": true,
"current_period_balanced": true
},
"concurrency": {
"during_lock": 503,
"after_release": 409,
"original_replay": 200,
"seconds_waiting": 5.242017030715942,
"blocker": "host company row FOR UPDATE, transactionid wait",
"approved_versions": 2,
"receipts": 2
},
"preservation": {
"checks": 87,
"original_sets": 78,
"original_rows_identical": true,
"bindings_unchanged": 3,
"approved_appends": {
"host.permission_grants": 5,
"native.gl_journals": 2,
"native.audit_logs": 4,
"native.fs_versions": 4,
"native.fs_results": 1,
"native.fs_result_lines": 23,
"native.fs_commands": 4,
"native.gl_accounts": 5,
"native.gl_rules": 6,
"native.gl_proposals": 2,
"native.gl_reviews": 2,
"native.gl_lines": 4,
"native.gl_commands": 6,
"native.gl_events": 6
}
},
"new8085": {
"asset_records": 1,
"administrative_versions": 6,
"administrative_receipts": 6,
"grants": 5,
"new_accounts": 5,
"journals": 2,
"old_journals_preserved": 27,
"total_journals": 29,
"chart_accounts": 24,
"statement_accounts_with_movements": 23,
"statement_new_commands": 4,
"cost_minor": 120000,
"accumulated_minor": 10000,
"carrying_minor": 110000
},
"arithmetic13_reused_not_rerun": true,
"old_snapshot19_accounts27_journals_preserved": true,
"old_suites_reused": true,
"legacy_ssr_navigation_runner": "Terminated without a result; imports/expectations predate accepted dropdown. Not counted as passed. New asset handler/navigation checks and private build passed.",
"period_test_limits": "Asset-only regression harness closed and rolled back. Application8085 period read40facts0pending only; no closure executed.",
"browser_visual_review": false,
"sustained_load_validated": false,
"deployment_validated": false,
"full_product_complete": false,
"new_demo": false,
"sgc_required": false,
"cache_cleared": false,
"published": false,
"installed_final_source_sha256": {
"app/Modules/Accounting/FixedAssets.php": "390051a6bf8d7fc02cad111b707ea4bceba1c8d39986af146370c0191d6de760",
"app/Modules/Accounting/FixedAssetLedgerSource.php": "3facfc05db0636f01fd84f97f76d19cd2efd1599dfe4ab20a53ca4c8fe077f9c",
"app/Modules/Accounting/FixedAssetJournalController.php": "eba98630909ee5f7b5cd18718dbebf599b408eccdb201c3d171ae80b4dfb1502",
"app/Modules/Accounting/ComposedLedger.php": "25e14af7f62dea2f205f9946135fb016580d1ca2446c9303313d76c2ccd99e04",
"packages/general-ledger/src/LedgerAssets.php": "aa5b0e7766c02587d28d55c8566b6f186ffbca60c180401ba0ead31f9a426cfe",
"packages/general-ledger/src/PayableJournal.php": "2c45e2c5635d4ae60577f6261bf749f9ca91bb09435fcbe373d58a265583c1be",
"packages/general-ledger/src/LedgerCycle.php": "4defe64d7c65165c4f4567628b43b387c82c8219ada26dc3119d5d37635ec63b",
"packages/general-ledger/bootstrap.php": "748fd49400440b5d09996f3bad5613053f7094ae5903aa7f6169e7c945e4d26b",
"app/Shared/Context/ModuleNavigation.php": "36d94a8131290d77fb0ae5e5a308e28cbb4c7644455d654c1b979f2324292e4a",
"app/Modules/Identity/Services/IdentityWorkflow.php": "79a2bd9e91a77b4fe4c36efa863e4ca843ae0464e75dc9f54ba21a59beb7020b",
"routes/web.php": "f45e10e0dd7feef43767956d0b46663f46d3845e48c0f40c3980c9e930dda0f2",
"app/Modules/Services/FiscalCoverage.php": "592d56e2e19a21c9955eddf4bd2c83af610f87536bc0d6ed85b034b797bf2791"
},
"last_changes_read_only_verified": true
}
+137
View File
@@ -0,0 +1,137 @@
{
"passed": true,
"date": "2026-11-11",
"installation": "cc50a276c10c",
"port": 8085,
"module": "human_resources",
"directed_checks": 233,
"affected_compatibility_checks": 56,
"preservation_checks": 78,
"new_grants_both_existing_books": 30,
"new_users": 0,
"individual_commands_8085": 16,
"new_salary_versions_8085": 0,
"new_journals": 0,
"new_payments": 0,
"new_demo": false,
"cache_cleared": false,
"protected_six_targeted": false,
"browser_visual_review": false,
"deployment_validated": false,
"evidence": [
{
"name": "core",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-085805-d6985581/hp-result.json",
"sha256": "b5f584c55f1cba6b6cf52066a24f76a32c8d257cec0556cb2bf0a3e7eadaa8dc",
"checks": 21
},
{
"name": "boundaries",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-085910-105a205c/hp-boundaries.json",
"sha256": "1180d1d3750e388ff5f0a05d1edce3faee2ce967f0820121916b5e52088668ed",
"checks": 26
},
{
"name": "privacy",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-090216-f627a6b2/hp-privacy.json",
"sha256": "3039bc3baba6ba1247b2efbc1edf4034f193241246ef856cc3927422c8b72ae9",
"checks": 9
},
{
"name": "time",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-090139-572f98b6/hr-personnel-time-core.json",
"sha256": "bbe501658c5c2b9832772c033dc09e74d823450345f8bd833fb45c126ec8d09b",
"checks": 23
},
{
"name": "ui",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/hp-ui-20261111.json",
"sha256": "7ed05fd4d86a9d39952cd895e0db0d3eccf1fb3606fbf95d7cb1725b12e2523a",
"checks": 19
},
{
"name": "balances",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-090617-cbd50595/hp-current-balances.json",
"sha256": "df7189fdf4cd3bd021c3b25eb20c647163558f84f669efbc868fb38c8a4cabcc",
"checks": 8
},
{
"name": "refusal",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-090954-e38c2dc5/hp-refusal.json",
"sha256": "c5f487a72036f61f1c7bdbaeea152ad240705eabfa3349199340bd23de6117e5",
"checks": 7
},
{
"name": "http",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/hp-http-20261111.json",
"sha256": "b449e88a1bb980ed5f5747e09e7e7893271c247d7774d5f24aa63951f131aa38",
"checks": 97
},
{
"name": "final_http",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/hp-final-http-20261111.json",
"sha256": "00b9d2febacf6bfac8fe2dcc742e5ff7528ccbf268fb6db76e192708201f253f",
"checks": 18
},
{
"name": "final_assets",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/hp-final-assets-20261111.json",
"sha256": "ce63881589643172007f473b632071dcbaf576ed337ffee0c8e45830339ca084",
"checks": 3
},
{
"name": "final_ui",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/hp-final-ui-20261111.json",
"sha256": "3e6bf571464e9f66f843464381bdcf91a856dc7a13cbe9ff79a2dca19c37c040",
"checks": 2
},
{
"name": "compat_salary",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-090053-0013d8b7/remunerations-result.json",
"sha256": "9ac93a64316a4c7d8168e2977ddb2f4364ff9c49f6c80b9b6f070600e6cd2e4f",
"checks": 40
},
{
"name": "compat_salary_ui",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/hp-remunerations-ui-20261111.json",
"sha256": "48480a08f3e06d1851897c206b9eb64209c7f826ad63d5c2647b23d178fe7dff",
"checks": 16
},
{
"name": "concurrency",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/hp-concurrency-1794380380400/result.json",
"sha256": "98343e82d1b47b10e60602fbb81aab31e4cb54e96eb5018d9dd09802535187b5",
"checks": 0
},
{
"name": "preservation",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261111-091110-94c14a72/hp-preservation.json",
"sha256": "59ac15dfe6ce0f8139d9b90a1eb1cbaa1bc315ac1a2b6a81bee1c7be3f32f78e",
"checks": 78
},
{
"name": "installation",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261111-090956-998c70ef/hp-installation.json",
"sha256": "b1634a18931d7e8455c054d4cae91f6fecc6a38e7c6bdc7eed05ea275deab97a",
"checks": 0
},
{
"name": "reg_setup",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-085106-4ec92771/hp-setup.json",
"sha256": "4dc61775465ad1ce91fd5712dd4f9b6a1d6cea94bd1f824027de7c10d5438c3a",
"checks": 0
},
{
"name": "8085_setup",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261111-085107-4f556a85/hp-setup.json",
"sha256": "cb01234621369a924d933e09744e24d475492c46064d3c82f5dfb23c1d28b02b",
"checks": 0
},
{
"name": "finalization",
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261111-091440-125e5a2d/hp-finalization.json",
"sha256": "ec0f3c3c152f5185bd3f6493109ce21fda7d892791d80f405bf3165ec7f5a610",
"checks": 0
}
]
}
+47
View File
@@ -0,0 +1,47 @@
{
"passed": true,
"date": "2026-11-11",
"installation": "cc50a276c10c",
"port": 8085,
"directed_checks": 58,
"identical_original_tables": 66,
"business_commands_8085": 0,
"new_grants": 0,
"new_profiles": 0,
"cache_cleared": false,
"protected_six_targeted": false,
"browser_visual_review": false,
"deployment_validated": false,
"evidence": [
{
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-b4093c6f6707/single-integration/20261111-095512-0ff4f79e/hp-readable-result.json",
"sha256": "d246d5aea13cf9c3fee44e4e9b9198f8ee034967c9f4884983a966a0d86eafd1",
"checks": 17
},
{
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/hp-readable-download-20261111.json",
"sha256": "6e5a4963862cda1a906498454eb3ec6f24ead4599a9a822dbea1ff1b53950cac",
"checks": 11
},
{
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/hp-readable-ui-20261111.json",
"sha256": "ef91bcdd098eee3dd627cf5cfd73df4c6be24ce870ec38e02394fb6718428ec3",
"checks": 3
},
{
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/hp-readable-http-20261111.json",
"sha256": "1613c8edf712e7e04673d424ff6cacde6473e24fbce4e7e75611a429ad9931c6",
"checks": 27
},
{
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261111-095619-e3fff98c/hp-readable-installation.json",
"sha256": "fdc157d3b3a597a9abe7453beb1b742559faae59a2fe8495953b799fc72de3e0",
"checks": 0
},
{
"file": "C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/receipt-composition-cc50a276c10c/single-integration/20261111-095812-c5cef31b/hp-readable-preservation.json",
"sha256": "decb9c3c3c42f78b6826c547a242b9c5e489db22790d89b192da4e55fafb0846",
"checks": 0
}
]
}
@@ -0,0 +1,143 @@
{
"date": "2026-11-11",
"policy": "SGF-MULTI-LINE-INVOICE-INTEGRATED-QA-v1",
"passed": true,
"installation": "cc50a276c10c",
"port": 8085,
"new_demo": false,
"sgc_dependency": false,
"new_rights": 0,
"new_grants": 0,
"new_users": 0,
"new_accounts": 0,
"functional_checks": 143,
"preservation_checks": 122,
"evidence": {
"financial": {
"passed": true,
"sha256": "b4bcc83818e48dab9330e6aa7df9b3d16748e6bc7463515ab215386c53161745",
"checks": 26
},
"controller": {
"passed": true,
"sha256": "9323c91c1435c92adc234bed5efac71244ff4de647f425221b30700964d65235",
"checks": 18
},
"boundaries": {
"passed": true,
"sha256": "86ca6422aedb175dc92b4a3101819ebdf71e64cbd19cb9f3b25e7deaa3892bb1",
"checks": 20
},
"recovery": {
"passed": true,
"sha256": "b8483f0a923bc2fcd4ed11d4f2002b3894b84e39e9ab5c29f9b9f675bb893bcb",
"checks": 6
},
"ui": {
"passed": true,
"sha256": "0b5f0aee35a9cbad21c8d39ec7030a737a26a5f9f1d43852e561c08f70b15375",
"checks": 21
},
"http": {
"passed": true,
"sha256": "313f2fc804fdf6b1caf857efed417555b211aab714880fa92d7769994095c77b",
"checks": 28
},
"statements": {
"passed": true,
"sha256": "49c5149b634a5ea6c7245c159d8662afdd225fd0e4b356bdaf76f94db2d6a8e7",
"checks": 12
},
"final_read": {
"passed": true,
"sha256": "121e57c1a1df92e1851250efe2c10f4d498a0a77a9751f437e4e96a1dd9595c1",
"checks": 12
},
"preservation": {
"passed": true,
"sha256": "5f8eebb052df1f4a4539d6704e926a76a0f0d08eae61eae4ebe6fe6186cebc98",
"checks": 122
},
"concurrency": {
"passed": true,
"sha256": "837f72bdf8e842e4d054a2261135e2d4b9208bd4387b3a868686965d59932502",
"during_lock": 503,
"seconds_waiting": 5.086719036102295,
"after_release": 409,
"original_replay": 200,
"invoices": 1,
"receipts": 1,
"last_number": 1,
"regression_only": true,
"pending_receivable_and_journal": true
},
"period": {
"passed": true,
"sha256": "db4802a351a5b8e46ba9e67dfbe5beb25e19f17d22033d045ed6c7404537e128"
}
},
"actual_effects": {
"series": "TEST-MULTI-2026",
"documents": 2,
"numbers": [
1,
2
],
"documentary_base_each": "1000.00",
"documentary_tax_each": "160.00",
"total_each": "1160.00",
"uncollected_receivables": 2,
"uncollected_total": "2320.00",
"new_payments": 0,
"journals_before": 29,
"journals_after": 31,
"chart_accounts": 24,
"current_period_facts": 44,
"current_period_pending": 0,
"current_period_balanced": true,
"period_closed": false,
"cash_unchanged": "950.00",
"new_statement_versions": [
5,
6
],
"statement_mapping_version_unchanged": 4,
"statement_known_result_subtotal": "2286.21",
"statement_unclassified_accounts": 10,
"statement_complete_result": null,
"iva_old_versions_unchanged": 4
},
"preservation": {
"original_sets": 96,
"original_rows_identical": true,
"bindings_unchanged": 3,
"protected_six_not_written": true,
"cache_cleared": false,
"prior_payroll_stock_asset_documents_unchanged": true
},
"pdf_review": {
"sample_25_lines_not_issued": true,
"rendered_pages": 5,
"pages_inspected": [
1,
2,
3,
4,
5
],
"text_legible_no_clipping_observed": true,
"browser_review": false,
"limitation": "Existing text renderer can split a line section across pages; this is not visual acceptance of the application."
},
"limits": [
"QA only; no legal invoice validity or tax-rate assertion.",
"No mixed regimes, exemptions, discounts, stock-product/POS or Excel import implemented by this block.",
"Dates and validity are revalidated; an unissued old-day calculation requires a new conference.",
"Receivable maturity is unknown until a separate explicit agreement; draft proposed date is not propagated.",
"Old IVA snapshot does not include these two documents.",
"UI recovery keeps the operation in memory; reload recovery uses the original private key/receipt and does not automatically reissue.",
"Existing legacy administrative listing is not converted to a bounded universal register.",
"Regression concurrency leaves one identified synthetic invoice without receivable/journal in regression only; it is not an8085 pending fact.",
"No sustained-load/deployment capability or user acceptance declared."
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff