From f8d57b52aa229176063750f4bd6e9d9328cfdf84 Mon Sep 17 00:00:00 2001 From: nala Date: Mon, 26 Oct 2026 13:47:11 +0200 Subject: [PATCH] Preserva classificacao contabilistica aceite e bases locais Regista aceitacao funcional do primeiro incremento PGC-NIRF e preserva as dependencias documentais e tecnicas existentes. A validacao do calculo fiscal continua separada e pendente. Sem credenciais, bases operacionais ou publicacao. --- AGENTS.md | 9 + README.md | 24 +- app/Modules/Services/CatalogueAccounting.php | 210 ++++++++++++++++ app/Modules/Services/DocumentPreparation.php | 171 +++++++++++++ app/Modules/Services/DocumentPreview.php | 144 +++++++++++ .../Http/CatalogueAccountingController.php | 29 +++ .../Http/DocumentPreparationController.php | 39 +++ .../Http/DocumentPreviewController.php | 37 +++ app/Modules/Services/InternalConfirmation.php | 12 +- app/Modules/Services/ServiceCalculation.php | 118 +++++++++ app/Modules/Services/ServiceWorkflow.php | 1 + ..._26_010000_create_document_preparation.php | 68 ++++++ ..._020000_create_document_preview_models.php | 49 ++++ ..._26_030000_create_service_calculations.php | 40 +++ ..._26_040000_create_catalogue_accounting.php | 96 ++++++++ docs/BILLING_DOCUMENTS_FIELD_SPEC.md | 172 +++++++++++++ ...ATALOGUE_ACCOUNTING_CLASSIFICATION_SPEC.md | 133 ++++++++++ docs/CATALOGUE_ACCOUNTING_DELIVERY.md | 101 ++++++++ docs/DOCUMENT_PREPARATION_DELIVERY.md | 107 ++++++++ docs/DRAFT_INVOICE_PREVIEW_DELIVERY.md | 93 +++++++ docs/DRAFT_INVOICE_PREVIEW_PLAN.md | 122 +++++++++ docs/SERVICES_B_SCOPE.md | 2 + docs/SERVICES_WORKFLOW_SPEC.md | 2 + docs/SERVICE_CALCULATION_DELIVERY.md | 69 ++++++ docs/SERVICE_INVOICE_CALCULATION_SPEC.md | 212 ++++++++++++++++ docs/proofs/accounting-access-results.json | 11 + docs/proofs/accounting-browser-results.json | 21 ++ docs/proofs/accounting-concurrency.json | 10 + docs/proofs/accounting-dev-preservation.json | 13 + docs/proofs/accounting-history.png | Bin 0 -> 63897 bytes docs/proofs/accounting-validation.png | Bin 0 -> 66683 bytes docs/proofs/calculation-100.png | Bin 0 -> 60152 bytes docs/proofs/calculation-1000.png | Bin 0 -> 61509 bytes docs/proofs/calculation-base-pending.png | Bin 0 -> 67171 bytes docs/proofs/calculation-browser-results.json | 46 ++++ docs/proofs/calculation-concurrency.json | 8 + docs/proofs/calculation-dev-preservation.json | 22 ++ docs/proofs/calculation-small.png | Bin 0 -> 60794 bytes docs/proofs/document-01-issuer-profile.png | Bin 0 -> 54148 bytes .../document-02-reused-instructions.png | Bin 0 -> 56894 bytes docs/proofs/document-03-read-only.png | Bin 0 -> 55212 bytes docs/proofs/document-capture.json | 34 +++ docs/proofs/document-http-results.json | 13 + docs/proofs/preview-01-desktop.png | Bin 0 -> 84697 bytes docs/proofs/preview-02-stale.png | Bin 0 -> 91784 bytes docs/proofs/preview-03-small-screen.png | Bin 0 -> 35226 bytes docs/proofs/preview-04-historical.png | Bin 0 -> 86239 bytes docs/proofs/preview-05-history-small.png | Bin 0 -> 41803 bytes .../preview-06-reader-configuration.png | Bin 0 -> 63346 bytes docs/proofs/preview-browser-results.json | 17 ++ docs/proofs/preview-coherence.json | 9 + docs/proofs/preview-http-results.json | 12 + resources/css/app.css | 8 + resources/js/CatalogueAccountingWorkspace.jsx | 47 ++++ resources/js/DocumentPreparationWorkspace.jsx | 54 ++++ resources/js/DocumentPreview.jsx | 68 ++++++ resources/js/ServicesWorkspace.jsx | 4 + resources/js/app.jsx | 10 +- routes/web.php | 16 ++ scripts/accounting-concurrency-worker.php | 8 + scripts/accounting-concurrency.php | 17 ++ scripts/accounting-fixture.php | 32 +++ scripts/accounting-preservation.php | 23 ++ scripts/calculation-concurrency.php | 24 ++ scripts/calculation-fixture.php | 29 +++ scripts/calculation-preservation.php | 18 ++ scripts/calculation-worker.php | 17 ++ scripts/catalogue-accounting-access.php | 29 +++ scripts/document-access.php | 30 +++ scripts/document-http-proof.mjs | 60 +++++ scripts/document-preservation.php | 19 ++ scripts/document-proof-metrics.php | 16 ++ scripts/document-status.php | 10 + scripts/prepare-browser-fixture.php | 2 +- scripts/preview-access.php | 22 ++ scripts/preview-coherence-proof.php | 30 +++ scripts/preview-coherence-worker.php | 18 ++ scripts/preview-http-proof.mjs | 38 +++ scripts/preview-status.php | 9 + tests/Feature/CatalogueAccountingTest.php | 152 ++++++++++++ tests/Feature/DocumentPreparationTest.php | 231 ++++++++++++++++++ tests/Feature/DocumentPreviewTest.php | 167 +++++++++++++ tests/Feature/ServiceCalculationTest.php | 101 ++++++++ tests/Support/CatalogueAccountingFixture.php | 14 ++ tests/Support/DocumentPreparationFixture.php | 17 ++ tests/Support/DocumentPreviewFixture.php | 13 + 86 files changed, 3621 insertions(+), 8 deletions(-) create mode 100644 app/Modules/Services/CatalogueAccounting.php create mode 100644 app/Modules/Services/DocumentPreparation.php create mode 100644 app/Modules/Services/DocumentPreview.php create mode 100644 app/Modules/Services/Http/CatalogueAccountingController.php create mode 100644 app/Modules/Services/Http/DocumentPreparationController.php create mode 100644 app/Modules/Services/Http/DocumentPreviewController.php create mode 100644 app/Modules/Services/ServiceCalculation.php create mode 100644 database/migrations/2026_10_26_010000_create_document_preparation.php create mode 100644 database/migrations/2026_10_26_020000_create_document_preview_models.php create mode 100644 database/migrations/2026_10_26_030000_create_service_calculations.php create mode 100644 database/migrations/2026_10_26_040000_create_catalogue_accounting.php create mode 100644 docs/BILLING_DOCUMENTS_FIELD_SPEC.md create mode 100644 docs/CATALOGUE_ACCOUNTING_CLASSIFICATION_SPEC.md create mode 100644 docs/CATALOGUE_ACCOUNTING_DELIVERY.md create mode 100644 docs/DOCUMENT_PREPARATION_DELIVERY.md create mode 100644 docs/DRAFT_INVOICE_PREVIEW_DELIVERY.md create mode 100644 docs/DRAFT_INVOICE_PREVIEW_PLAN.md create mode 100644 docs/SERVICE_CALCULATION_DELIVERY.md create mode 100644 docs/SERVICE_INVOICE_CALCULATION_SPEC.md create mode 100644 docs/proofs/accounting-access-results.json create mode 100644 docs/proofs/accounting-browser-results.json create mode 100644 docs/proofs/accounting-concurrency.json create mode 100644 docs/proofs/accounting-dev-preservation.json create mode 100644 docs/proofs/accounting-history.png create mode 100644 docs/proofs/accounting-validation.png create mode 100644 docs/proofs/calculation-100.png create mode 100644 docs/proofs/calculation-1000.png create mode 100644 docs/proofs/calculation-base-pending.png create mode 100644 docs/proofs/calculation-browser-results.json create mode 100644 docs/proofs/calculation-concurrency.json create mode 100644 docs/proofs/calculation-dev-preservation.json create mode 100644 docs/proofs/calculation-small.png create mode 100644 docs/proofs/document-01-issuer-profile.png create mode 100644 docs/proofs/document-02-reused-instructions.png create mode 100644 docs/proofs/document-03-read-only.png create mode 100644 docs/proofs/document-capture.json create mode 100644 docs/proofs/document-http-results.json create mode 100644 docs/proofs/preview-01-desktop.png create mode 100644 docs/proofs/preview-02-stale.png create mode 100644 docs/proofs/preview-03-small-screen.png create mode 100644 docs/proofs/preview-04-historical.png create mode 100644 docs/proofs/preview-05-history-small.png create mode 100644 docs/proofs/preview-06-reader-configuration.png create mode 100644 docs/proofs/preview-browser-results.json create mode 100644 docs/proofs/preview-coherence.json create mode 100644 docs/proofs/preview-http-results.json create mode 100644 resources/js/CatalogueAccountingWorkspace.jsx create mode 100644 resources/js/DocumentPreparationWorkspace.jsx create mode 100644 resources/js/DocumentPreview.jsx create mode 100644 scripts/accounting-concurrency-worker.php create mode 100644 scripts/accounting-concurrency.php create mode 100644 scripts/accounting-fixture.php create mode 100644 scripts/accounting-preservation.php create mode 100644 scripts/calculation-concurrency.php create mode 100644 scripts/calculation-fixture.php create mode 100644 scripts/calculation-preservation.php create mode 100644 scripts/calculation-worker.php create mode 100644 scripts/catalogue-accounting-access.php create mode 100644 scripts/document-access.php create mode 100644 scripts/document-http-proof.mjs create mode 100644 scripts/document-preservation.php create mode 100644 scripts/document-proof-metrics.php create mode 100644 scripts/document-status.php create mode 100644 scripts/preview-access.php create mode 100644 scripts/preview-coherence-proof.php create mode 100644 scripts/preview-coherence-worker.php create mode 100644 scripts/preview-http-proof.mjs create mode 100644 scripts/preview-status.php create mode 100644 tests/Feature/CatalogueAccountingTest.php create mode 100644 tests/Feature/DocumentPreparationTest.php create mode 100644 tests/Feature/DocumentPreviewTest.php create mode 100644 tests/Feature/ServiceCalculationTest.php create mode 100644 tests/Support/CatalogueAccountingFixture.php create mode 100644 tests/Support/DocumentPreparationFixture.php create mode 100644 tests/Support/DocumentPreviewFixture.php diff --git a/AGENTS.md b/AGENTS.md index 8295bc8..0ce52fb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,5 +1,12 @@ # SGF Tempo — instruções locais +- Em 26/10/2026, após informar que entrou e verificou, o utilizador confirmou a aceitação funcional do primeiro incremento de classificação contabilística e autorizou o encerramento e checkpoint Git exclusivamente local, sem credenciais ou dados locais. Preservar a entrega e os limites de `docs/CATALOGUE_ACCOUNTING_DELIVERY.md`. Esta aceitação não abrange a validação do cálculo fiscal, que continua separada e pendente; não autoriza lançamentos, publicação ou outro incremento. + +- Autorização posterior: primeiro incremento de classificação contabilística do catálogo, PGC-NIRF, sem lançamentos e sem alterar o cálculo fiscal. Categoria é regra-base; só excepção aprovada, vigente e compatível a substitui. Mudança de categoria que afecte classificação exige nova proposta, vigência e validação; não usar edição de serviços para contornar o circuito. Propostas/submissões/decisões/resoluções são imutáveis; correcção gera nova versão e a substituição de uma versão aprovada é explícita. Data de referência é explícita, não reconhecimento/IVA. Conta agregadora não é conta de movimento; subconjunto documental inicial apenas 7/7.2, sem inventar desdobramentos. Fonte e versão preservadas. +- As quatro concessões contabilísticas iniciais foram especificamente confirmadas e aplicadas em 26/10/2026, após conferência: conta 1, empresa 1, `catalogue_accounting.view/propose`; conta 2, empresa 1, `catalogue_accounting.view/approve`. Osmane prepara; Samira valida/recusa, sem edição/administração implícita. Nenhuma concessão de unidade ou de gestão destes direitos foi acrescentada. Novas concessões exigem confirmação concreta; não associar privilégios a nomes/emails no código. Ver `docs/CATALOGUE_ACCOUNTING_DELIVERY.md`. A validação do cálculo continua separada e pendente. + +- Autorização posterior: primeiro cálculo delimitado sobre preço sem imposto, uma linha, apenas ensaios sintéticos isolados em `sgf_tempo_test`. Política `SGF-SERVICE-NET-VAT-TRUNCATE2-v1`: base/IVA exactos, IVA documental proposto truncado a duas casas e diferença preservada; total proposto apenas se base for exactamente representável a duas casas. É decisão operacional do utilizador, não obrigação fiscal demonstrada. Nenhum perfil real activado, nenhum direito fiscal derivado de configuração visual, nenhuma fotografia B1 alterada. Ver `docs/SERVICE_CALCULATION_DELIVERY.md`; instruções históricas abaixo não revogam este âmbito posterior. + - Projecto exclusivo em `C:\laragon\www\sgf-tempo`; não alterar InvesteMoz, os seus dados, configurações, ferramentas ou serviços. - Base de requisitos: SGF_TEMPO_Roteiro_v0_9.docx. Distinguir decisões acordadas de propostas técnicas e autorização de execução. - Usar `scripts/sgf.ps1` para ferramentas e arranque. Não usar o PHP/Composer do PATH por omissão nem alterar o PATH global. @@ -22,3 +29,5 @@ - Em 25 de Outubro de 2026, o utilizador aceitou a entrega A no âmbito demonstrado e com os limites de docs/SERVICES_A_DELIVERY.md e autorizou um checkpoint Git exclusivamente local, sem credenciais ou dados locais. Preservar esta base aceite. Não avançar para B/C nem publicar. - Autorização posterior delimitada: B1, apenas confirmação interna dos rascunhos de facturação, fotografia imutável e captura transaccional de eventos/pendências. Mostrar «Confirmado internamente — sem validade fiscal». Não emitir documentos comerciais/fiscais, reconhecer receita, produzir lançamentos, receber, reconciliar, fechar ou publicar. A nova concessão billing_drafts.confirm_internal foi especificamente confirmada para a conta existente ID 1, empresa 1/unidade 1; não implica gestão de novas concessões nem altera a consulta da conta ID 2. B1 não conclui B integralmente; ver docs/SERVICES_B1_DELIVERY.md. - Em 25 de Outubro de 2026, o utilizador aceitou B1 no âmbito demonstrado de confirmação interna, sem validade fiscal nem lançamentos contabilísticos, e autorizou um checkpoint Git local sem credenciais ou dados locais. Preservar B1 e os checkpoints anteriores. Não avançar para os restantes incrementos nem publicar. +- Autorização posterior de 26 de Outubro de 2026: preparação documental de emitente/clientes/rascunhos e instruções de pagamento reutilizáveis do emitente, sem emissão, recebimento ou contabilização. Preservar B1 `8fcd52c`; não reinterpretar preços antigos ou modificar fotografias existentes. Esquema 2 apenas em novas confirmações que utilizem preparação documental. Novos direitos issuer_documents/client_documents view/edit na empresa e draft_documents view/edit na unidade são explícitos; as nove concessões para contas existentes 1 (consulta/edição) e 2 (consulta), empresa 1/unidade 1, foram especificamente confirmadas. Não inferir poderes de gestão desses direitos. Nunca incluir valores completos das instruções em logs técnicos, relatórios de provas ou repositório. Ver docs/DOCUMENT_PREPARATION_DELIVERY.md. +- Autorização posterior: primeira pré-visualização apenas no navegador, aviso fixo «RASCUNHO — SEM VALIDADE FISCAL», configuração delimitada e história B1 exclusivamente da fotografia. Não implementar emissão, cálculos fiscais, PDF/exportação/impressão documental ou operações financeiras. Consultas de pré-visualização são coerentes e read-only; mudanças geram aviso e actualização explícita. Novo direito document_preview.configure requer confirmação específica antes de concessão real; a operação para conta 1/empresa 1 foi especificamente confirmada e aplicada em 26 de Outubro de 2026. Samira permanece apenas em consulta. Novas operações não podem ser aplicadas por inferência. Ver docs/DRAFT_INVOICE_PREVIEW_DELIVERY.md. diff --git a/README.md b/README.md index a846973..07b9240 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,25 @@ Primeiro percurso funcional local, sobre a fundação existente e o roteiro v0.9 **Entrega A aceite em 25 de Outubro de 2026:** serviços em rascunho, no âmbito demonstrado e com os limites de [SERVICES_A_DELIVERY.md](docs/SERVICES_A_DELIVERY.md). B/C, operações financeiras confirmadas e publicação continuam sem autorização. O checkpoint aceite `26b80df` permanece preservado. -## Usar a entrega A +## Preparação documental (incremento posterior) + +**Pré-visualização no navegador:** em **Rascunhos de facturação**, abrir um rascunho não confirmado e escolher **Pré-visualizar rascunho**. O aviso de ausência de validade fiscal e as pendências são obrigatórios. Mudanças geram aviso; **Actualizar pré-visualização** carrega explicitamente a nova versão. Para registos confirmados, usar **Abrir confirmação interna histórica**, que não reconstrói dados ausentes. A apresentação consulta-se em **Apresentação do rascunho**; Osmane tem configuração especificamente confirmada e aplicada na Tempo Lda; Samira apenas consulta. Sair e voltar a entrar, se necessário, para carregar o novo direito. [Relatório da pré-visualização](docs/DRAFT_INVOICE_PREVIEW_DELIVERY.md). Sem PDF, impressão documental ou emissão fiscal. + +Depois de entrar e seleccionar a empresa/unidade autorizadas, abrir **Preparação documental** no menu lateral: + +1. **Dados do emitente**: completar NUIT, morada, localidade e país. A denominação é o nome já existente; altera-se no menu Empresa, conforme direitos próprios. +2. **Dados dos clientes**: seleccionar um cliente existente e completar os mesmos campos uma vez. Continua a ser possível criar clientes apenas com nome no menu Clientes. +3. **Instruções de pagamento**: escolher **Novas instruções** ou uma configuração existente. Preparar banco/titular/identificadores/moeda quando aplicáveis e texto. São instruções do emitente para facilitar o pagamento, sem registo de recebimento ou ligação a bancos. Não introduzir credenciais, tokens, PIN ou dados de cartões. +4. **Preparação de prestações** ou **Preparação de facturação**: seleccionar um rascunho já criado nos menus existentes. Preparar moeda, unidades das linhas, data/período, condições, vencimento proposto e modo de preço. Seleccionar instruções configuradas por designação; guardar. +5. Consultar **Completude e validações** e os dados relacionados do emitente/cliente. «Preenchido» não é «validado». Condições/vencimento continuam sujeitos a conferência, sem correcção automática. + +Ao criar um novo rascunho de facturação a partir de uma prestação com preparação actual, os dados documentais e selecções são reutilizados. Preparar uma moeda diferente actualiza explicitamente a moeda do rascunho pela operação existente, mantendo valores exactos; escolher «imposto incluído/acrescido» não recalcula impostos nem reinterpreta preços. Se um rascunho for editado depois, rever e guardar novamente a sua preparação. Documentos B1 confirmados permanecem bloqueados. + +Osmane tem os direitos documentais especificamente confirmados na Tempo Lda/SEGI; Samira apenas consulta. Para carregar as novas concessões, actualizar o navegador e, se necessário, sair e voltar a entrar. Sem rascunhos, as listas de preparação estarão vazias: este ecrã reutiliza os registos existentes, não cria uma factura. + +[Relatório e limites da preparação documental](docs/DOCUMENT_PREPARATION_DELIVERY.md). Não há emissão, numeração fiscal, PDF de factura, recebimentos ou lançamentos. Dados bancários apenas introduzidos pelo utilizador não são apresentados como verificados pelo banco. + +## Usar a entrega A e B1 **Incremento posterior B1:** disponível a confirmação interna do rascunho de facturação para quem possua `billing_drafts.confirm_internal`. Abrir o rascunho, escolher **Rever confirmação interna**, conferir versão/contexto e confirmar. Quantidades/preços e referências devem estar completos e actuais; moeda ou regras desconhecidas permanecem pendentes. A fotografia é imutável e o rascunho confirmado deixa de poder ser editado ou eliminado. A referência `INT-B1-…` não é numeração fiscal. Não há emissão, impressão de factura, reconhecimento ou lançamento contabilístico. [Relatório B1](docs/SERVICES_B1_DELIVERY.md). A mantém-se aceite no checkpoint `ca13acb`; B1 foi aceite em 25 de Outubro de 2026 no âmbito demonstrado, sem validade fiscal nem lançamentos contabilísticos. Não avançar para os restantes incrementos nem publicar. @@ -83,3 +101,7 @@ Os testes destrutivos usam exclusivamente `sgf_tempo_test`, verificada antes da Para Vite, `sgf.ps1 frontend` (porta 5173, estrita). A aplicação continua a ser aberta na porta 8000. As ferramentas usam caminhos explícitos em `C:\laragon\tools\sgf-tempo`; o cluster fica em `C:\laragon\data\sgf-tempo\postgres-17`, porta 55432. Não alterar as versões ou o ambiente do InvesteMoz. [Relatório do incremento e provas](docs/IDENTITY_DELIVERY.md) · [Registo histórico da preparação inicial](docs/LOCAL_ENVIRONMENT.md) + +O primeiro núcleo de cálculo de serviço e a política operacional de truncagem estão documentados em [cálculo de serviço: utilização, provas e limites](docs/SERVICE_CALCULATION_DELIVERY.md). A aplicação normal conserva pendências de aplicabilidade; cálculos de ensaio são exclusivos da instância isolada de testes. Não há activação de perfil fiscal real, emissão, recebimento ou contabilização. + +O menu **Classificação contabilística**, disponível após actualizar a sessão com os acessos especificamente concedidos, permite preparar e submeter versões PGC-NIRF, validar/recusar sem editar e consultar classificação por data. Categoria e excepções são empresariais; operações e respectivos históricos continuam limitados às unidades autorizadas. As tabelas reais começam vazias, sem contas de movimento ou regras aprovadas por omissão. Consultar [utilização, provas e limites da classificação](docs/CATALOGUE_ACCOUNTING_DELIVERY.md). diff --git a/app/Modules/Services/CatalogueAccounting.php b/app/Modules/Services/CatalogueAccounting.php new file mode 100644 index 0000000..a67e446 --- /dev/null +++ b/app/Modules/Services/CatalogueAccounting.php @@ -0,0 +1,210 @@ +'PGC-NIRF','source_version'=>self::SOURCE_VERSION,'sha256'=>self::SOURCE_HASH,'accounts'=>[['code'=>'7','name'=>'Rendimentos e ganhos','movable'=>false],['code'=>'7.2','name'=>'Prestação de serviços','movable'=>false]],'status'=>'Exemplar fornecido; consolidação posterior não comprovada; não é aprovação de conta empresarial.']; + public const NOTICE='CLASSIFICAÇÃO CONTABILÍSTICA — SEM LANÇAMENTOS; IVA E RECONHECIMENTO INDEPENDENTES'; + public function __construct(private CompanyContext $context,private Permissions $permissions,private ServiceWorkflow $workflow) {} + + private function scope(int $actor,string $action='view'): array + { + $ids=$this->context->identifiers(); abort_unless($this->context->userId()===$actor,403); + foreach (array_unique(['view',$action]) as $a) { $this->permissions->require($actor,$ids['tenant_id'],$ids['company_id'],"catalogue_accounting.$a"); } + return $ids; + } + private function query(array $scope) { return DB::table('ca_proposals')->where($scope); } + private function row(int $id,array $scope): object { $row=$this->query($scope)->where('id',$id)->first(); abort_unless($row,403,'Proposta fora da empresa autorizada.'); return $row; } + private function decode(object $row): array + { + $result=(array)$row; $result['data']=json_decode($row->data,true,32,JSON_THROW_ON_ERROR); + $result['submission']=DB::table('ca_submissions')->where('proposal_id',$row->id)->first(); + $result['decision']=DB::table('ca_decisions')->where('proposal_id',$row->id)->first(); + $result['state']=$result['decision']->decision ?? ($result['submission'] ? 'submitted' : 'draft'); + return $result; + } + public function listing(int $actor): array + { + $scope=$this->scope($actor); $rows=$this->query($scope)->orderBy('id')->get()->map(fn($r)=>$this->decode($r))->all(); + $services=$this->permissions->has($actor,$scope['tenant_id'],$scope['company_id'],'services.view') ? DB::table('a_services')->where($scope)->orderBy('name')->get(['id','version','name'])->all() : []; + return ['notice'=>self::NOTICE,'reference'=>self::REFERENCE,'proposals'=>$rows,'services'=>$services]; + } + private function command(int $actor,string $action,array $request,string $key,callable $write): array + { + $scope=$this->scope($actor,$action); $unit=$this->context->unitId(); + abort_unless((bool)preg_match('/^[A-Za-z0-9-]{8,100}$/D',$key),422,'Chave de repetição necessária.'); + $canonical=function($v) use (&$canonical) { if(!is_array($v)) return $v; if(!array_is_list($v))ksort($v); return array_map($canonical,$v); }; + $hash=hash('sha256',json_encode($canonical($request),JSON_THROW_ON_ERROR)); + return DB::transaction(function() use($actor,$action,$request,$key,$write,$scope,$unit,$hash) { + DB::table('companies')->where('id',$scope['company_id'])->where('tenant_id',$scope['tenant_id'])->lockForUpdate()->firstOrFail(); + $this->context->selectFor($actor,$scope['tenant_id'],$scope['company_id'],$unit); $this->scope($actor,$action); + $old=DB::table('ca_commands')->where($scope)->where('command_key',$key)->first(); + if($old) { abort_unless((int)$old->actor_id===$actor && hash_equals($old->request_hash,$hash),409,'Repetição com autor ou conteúdo diferente.'); return json_decode($old->result,true,32,JSON_THROW_ON_ERROR)+['replayed'=>true]; } + $result=$write($scope); + DB::table('ca_commands')->insert($scope+['actor_id'=>$actor,'command_key'=>$key,'request_hash'=>$hash,'result'=>json_encode($result,JSON_THROW_ON_ERROR),'created_at'=>now()]); + return $result+['replayed'=>false]; + }); + } + private function date(string $date): void { Validator::make(['date'=>$date],['date'=>'required|date_format:Y-m-d'])->validate(); } + private function data(string $kind,array $data,array $scope): array + { + $schemas=[ + 'plan'=>['plan'=>'required|in:PGC-NIRF','source_version'=>'required|in:'.self::SOURCE_VERSION], + 'account'=>['plan_id'=>'required|integer|min:1','code'=>'required|string|max:40|regex:/^7\.2(?:\.[0-9A-Za-z_-]+)*$/D','name'=>'required|string|max:255','origin'=>'required|in:reference,enterprise','movable'=>'required|boolean','evidence'=>'required|string|max:2000'], + 'category'=>['name'=>'required|string|max:255','account_id'=>'required|integer|min:1','conditions'=>'required|string|max:2000'], + 'service_link'=>['service_id'=>'required|integer|min:1','category_id'=>'required|integer|min:1'], + 'service_override'=>['service_id'=>'required|integer|min:1','account_id'=>'required|integer|min:1','conditions'=>'required|string|max:2000'], + ]; + abort_unless(isset($schemas[$kind]),422); abort_if(array_diff(array_keys($data),array_keys($schemas[$kind]))!==[],422,'Campo fora do âmbito: sem IVA, reconhecimento ou lançamentos.'); + $data=Validator::make($data,$schemas[$kind])->validate(); + foreach(['plan_id'=>'plan','account_id'=>'account','category_id'=>'category'] as $field=>$type) { + if(isset($data[$field])) { $data[$field]=(int)$data[$field]; abort_unless($this->row($data[$field],$scope)->kind===$type,422,'Tipo de referência incompatível.'); } + } + if(isset($data['service_id'])) { + $data['service_id']=(int)$data['service_id']; + $this->permissions->require($this->context->userId(),$scope['tenant_id'],$scope['company_id'],'services.view'); + abort_unless(DB::table('a_services')->where($scope)->where('id',$data['service_id'])->exists(),403,'Serviço fora da empresa.'); + } + if($kind==='account') { + $data['movable']=(bool)$data['movable']; + if($data['origin']==='reference') { abort_unless($data['code']==='7.2' && !$data['movable'] && $data['name']==='Prestação de serviços',422,'Referência 7.2 não é conta de movimento aprovada.'); } + else { abort_if(in_array($data['code'],['7.2','7.2.1','7.2.6'],true),422,'Código reservado; não usar como desdobramento empresarial.'); } + } + return $data; + } + public function propose(int $actor,array $input,string $key): array + { + return $this->command($actor,'propose',['operation'=>'propose','input'=>$input],$key,function($scope) use($actor,$input) { + $data=$this->data($input['kind'],$input['data'],$scope); $previous=isset($input['previous_id']) ? $this->row((int)$input['previous_id'],$scope) : null; + $entity=match($input['kind']) { 'plan'=>'PGC-NIRF','account'=>$data['code'],'service_link','service_override'=>'service:'.$data['service_id'],default=>$previous?->entity_key ?? (string)Str::uuid() }; + if($previous) { abort_unless($previous->kind===$input['kind'] && $previous->entity_key===$entity,422,'A correcção deve preservar a identidade.'); } + $latest=$this->query($scope)->where('kind',$input['kind'])->where('entity_key',$entity)->orderByDesc('version')->first(); + abort_unless(($latest?->id ?? null)===($previous?->id ?? null),409,'Existe uma versão mais recente; reveja antes de propor.'); + $replaces=$input['replaces_id'] ?? null; + if($replaces) { $r=$this->row((int)$replaces,$scope); abort_unless($r->kind===$input['kind'] && $r->entity_key===$entity && $r->valid_from<=$input['valid_from'] && $this->approved($r),422,'Substituição exige versão aprovada da mesma identidade e data compatível.'); } + $id=DB::table('ca_proposals')->insertGetId($scope+['kind'=>$input['kind'],'entity_key'=>$entity,'version'=>(int)($latest?->version ?? 0)+1,'previous_id'=>$previous?->id,'replaces_id'=>$replaces, + 'valid_from'=>$input['valid_from'],'valid_until'=>$input['valid_until'] ?? null,'data'=>json_encode($data,JSON_THROW_ON_ERROR),'reason'=>$input['reason'],'actor_id'=>$actor,'created_at'=>now()]); + Audit::record('catalogue_accounting.proposed',$actor,$scope['tenant_id'],$scope['company_id'],details:['record_id'=>$id,'version'=>(int)($latest?->version ?? 0)+1]); + return ['id'=>$id]; + }); + } + private function approved(object $row): bool { return DB::table('ca_decisions')->where('proposal_id',$row->id)->where('decision','approved')->exists(); } + private function approvedRows(array $scope,string $kind,?string $entity=null): array + { + $q=$this->query($scope)->where('kind',$kind)->whereExists(fn($q)=>$q->selectRaw('1')->from('ca_decisions')->whereColumn('ca_decisions.proposal_id','ca_proposals.id')->where('decision','approved')); + if($entity!==null)$q->where('entity_key',$entity); return $q->get()->all(); + } + private function active(object $row,string $date,array $scope): bool + { + if($row->valid_from>$date || ($row->valid_until && $row->valid_until<$date))return false; + // Explicit approved replacement ends the replaced interval from its start onward. + return ! $this->query($scope)->where('replaces_id',$row->id)->where('valid_from','<=',$date)->whereExists(fn($q)=>$q->selectRaw('1')->from('ca_decisions')->whereColumn('ca_decisions.proposal_id','ca_proposals.id')->where('decision','approved'))->exists(); + } + private function select(array $scope,string $kind,string $entity,string $date): ?object + { + $rows=array_values(array_filter($this->approvedRows($scope,$kind,$entity),fn($r)=>$this->active($r,$date,$scope))); + abort_if(count($rows)>1,409,'Conflito explícito: várias versões aprovadas vigentes.'); return $rows[0] ?? null; + } + private function reference(int $id,string $kind,string $date,array $scope): object + { + $r=$this->row($id,$scope); abort_unless($r->kind===$kind && $this->approved($r) && $this->active($r,$date,$scope),422,'Referência sem aprovação/vigência compatível.'); return $r; + } + private function dependencies(object $row,string $date,array $scope): array + { + $data=json_decode($row->data,true,32,JSON_THROW_ON_ERROR); + if($row->kind==='plan')return ['plan'=>$row]; + if($row->kind==='account') { return ['account'=>$row,'plan'=>$this->reference($data['plan_id'],'plan',$date,$scope)]; } + if($row->kind==='service_link') { + $categoryRef=$this->row($data['category_id'],$scope); + $category=$this->select($scope,'category',$categoryRef->entity_key,$date); + abort_unless($category,422,'Categoria sem regra-base aprovada vigente.'); + return ['link'=>$row]+$this->dependencies($category,$date,$scope); + } + $account=$this->reference($data['account_id'],'account',$date,$scope); + $accountData=json_decode($account->data,true,32,JSON_THROW_ON_ERROR); + abort_unless($accountData['movable'],422,'Conta agregadora: classificação de movimento pendente.'); + return [$row->kind==='category' ? 'category' : 'override'=>$row]+$this->dependencies($account,$date,$scope); + } + public function submit(int $id,int $actor,string $key): array + { + return $this->command($actor,'propose',['operation'=>'submit','id'=>$id],$key,function($scope) use($actor,$id) { + $r=$this->row($id,$scope); $latest=$this->query($scope)->where('kind',$r->kind)->where('entity_key',$r->entity_key)->max('version'); + abort_unless((int)$latest===(int)$r->version,409,'Submeta a versão mais recente.'); + abort_if(DB::table('ca_submissions')->where('proposal_id',$id)->exists(),409,'Versão já submetida.'); + $this->dependencies($r,$r->valid_from,$scope); + DB::table('ca_submissions')->insert($scope+['proposal_id'=>$id,'actor_id'=>$actor,'created_at'=>now()]); + Audit::record('catalogue_accounting.submitted',$actor,$scope['tenant_id'],$scope['company_id'],details:['record_id'=>$id,'version'=>(int)$r->version]); return ['id'=>$id]; + }); + } + public function decide(int $id,int $actor,array $input,string $key): array + { + return $this->command($actor,'approve',['operation'=>'decide','id'=>$id,'input'=>$input],$key,function($scope) use($id,$actor,$input) { + $r=$this->row($id,$scope); abort_unless(DB::table('ca_submissions')->where('proposal_id',$id)->exists(),409,'Versão não submetida.'); + abort_if(DB::table('ca_decisions')->where('proposal_id',$id)->exists(),409,'Versão já decidida.'); + abort_unless((int)$this->query($scope)->where('kind',$r->kind)->where('entity_key',$r->entity_key)->max('version')===(int)$r->version,409,'Uma nova proposta exige revisão da versão actual.'); + if($input['decision']==='approved') { + $this->dependencies($r,$r->valid_from,$scope); + foreach($this->approvedRows($scope,$r->kind,$r->entity_key) as $other) { + // Conflicting overlapping intervals require an explicit replacement, never latest-wins. + $start=max($r->valid_from,$other->valid_from); $end=min($r->valid_until ?? '9999-12-31',$other->valid_until ?? '9999-12-31'); + if($start<=$end && $this->active($other,$start,$scope)) { abort_unless((int)$r->replaces_id===(int)$other->id,409,'Sobreposição: indique explicitamente a versão aprovada substituída.'); } + } + } + DB::table('ca_decisions')->insert($scope+['proposal_id'=>$id,'actor_id'=>$actor,'decision'=>$input['decision'],'reason'=>$input['reason'],'created_at'=>now()]); + Audit::record('catalogue_accounting.'.$input['decision'],$actor,$scope['tenant_id'],$scope['company_id'],details:['record_id'=>$id,'version'=>(int)$r->version,'reason'=>$input['reason']]); return ['id'=>$id,'decision'=>$input['decision']]; + }); + } + private function resolveInternal(int $service,string $date,array $scope): array + { + $s=DB::table('a_services')->where($scope)->where('id',$service)->first(); abort_unless($s,403,'Serviço fora da empresa.'); + $base=['service'=>['id'=>$service,'version'=>(int)$s->version,'name'=>$s->name],'reference_date'=>$date,'notice'=>self::NOTICE]; + $override=$this->select($scope,'service_override','service:'.$service,$date); + $link=$this->select($scope,'service_link','service:'.$service,$date); + if(!$override && !$link)return $base+['state'=>'pending','pending'=>['Ligação à categoria ou excepção aprovada vigente em falta.']]; + try { $refs=$this->dependencies($override ?? $link,$date,$scope); } + catch(\Symfony\Component\HttpKernel\Exception\HttpException $e) { if($e->getStatusCode()!==422)throw $e; return $base+['state'=>'pending','pending'=>[$e->getMessage()],'conflict'=>true]; } + $plan=$this->select($scope,'plan','PGC-NIRF',$date); + if(!$plan || (int)$plan->id!==(int)$refs['plan']->id)return $base+['state'=>'pending','pending'=>['Versão do plano incompatível; rever associações.'],'conflict'=>true]; + return $base+['state'=>'resolved_classification_only','origin'=>$override ? 'explicit_service_exception' : 'category_base','references'=>array_map(fn($r)=>['id'=>$r->id,'version'=>(int)$r->version,'kind'=>$r->kind,'entity_key'=>$r->entity_key,'valid_from'=>$r->valid_from,'valid_until'=>$r->valid_until,'data'=>json_decode($r->data,true),'approval'=>(array)DB::table('ca_decisions')->where('proposal_id',$r->id)->first()],$refs), + 'source'=>self::REFERENCE,'pending'=>['IVA e reconhecimento continuam independentes; nenhum lançamento produzido.']]; + } + public function resolve(int $service,?string $date,int $actor): array + { + $scope=$this->scope($actor); $this->permissions->require($actor,$scope['tenant_id'],$scope['company_id'],'services.view'); + abort_unless(DB::table('a_services')->where($scope)->where('id',$service)->exists(),403); + if(!$date)return ['state'=>'pending','pending'=>['Data de referência explícita em falta; nenhuma data foi presumida.']]; $this->date($date); + $read=function()use($service,$date,$scope){$result=$this->resolveInternal($service,$date,$scope);return $result+['revision'=>hash_hmac('sha256',json_encode($result,JSON_THROW_ON_ERROR),(string)config('app.key'))];}; + if(DB::transactionLevel())return $read(); + return DB::transaction(function()use($read){DB::statement('SET TRANSACTION ISOLATION LEVEL REPEATABLE READ READ ONLY');return $read();}); + } + public function capture(int $actor,array $input,string $key): array + { + return $this->command($actor,'propose',['operation'=>'capture','input'=>$input],$key,function($scope) use($actor,$input) { + $operationScope=$this->workflow->scope($input['area'],$actor,'view'); + $draft=$this->workflow->show($input['area'],$input['record_id'],$actor); + abort_unless($draft['version']===$input['record_version'],409,'Operação desactualizada.'); + abort_if(($draft['internal_confirmation'] ?? null)!==null,409,'B1 preservado; não capturar classificação retroactiva.'); + abort_unless(in_array($input['service_id'],array_column($draft['data']['lines'],'service_id'),true),422,'Serviço não pertence à operação.'); + $snapshot=$this->resolve($input['service_id'],$input['reference_date'],$actor); + abort_unless(hash_equals($snapshot['revision'],$input['resolution_revision']),409,'A classificação mudou desde a consulta; consulte novamente antes de guardar.'); + abort_unless($snapshot['state']==='resolved_classification_only',422,implode(' ',$snapshot['pending'])); + $id=DB::table('ca_resolutions')->insertGetId($operationScope+['area'=>$input['area'],'record_id'=>$input['record_id'],'record_version'=>$input['record_version'],'service_id'=>$input['service_id'],'reference_date'=>$input['reference_date'],'snapshot'=>json_encode($snapshot,JSON_THROW_ON_ERROR),'actor_id'=>$actor,'created_at'=>now()]); + Audit::record('catalogue_accounting.resolution_captured',$actor,$scope['tenant_id'],$scope['company_id'],$operationScope['unit_id'],details:['record_id'=>$id,'version'=>$input['record_version']]); return ['id'=>$id]; + }); + } + public function history(int $actor,string $area,int $record): array + { + $this->scope($actor); $scope=$this->workflow->scope($area,$actor,'view'); $this->workflow->show($area,$record,$actor); + return DB::table('ca_resolutions')->where($scope)->where('area',$area)->where('record_id',$record)->orderByDesc('id')->get()->map(function($r) { $r->snapshot=json_decode($r->snapshot,true); return $r; })->all(); + } +} diff --git a/app/Modules/Services/DocumentPreparation.php b/app/Modules/Services/DocumentPreparation.php new file mode 100644 index 0000000..ca27478 --- /dev/null +++ b/app/Modules/Services/DocumentPreparation.php @@ -0,0 +1,171 @@ +context->identifiers(); abort_unless($this->context->userId() === $actor, 403); + $unit = str_ends_with($kind, '_drafts') ? $this->context->unitId() : null; + abort_if(str_ends_with($kind, '_drafts') && ! $unit, 403, 'Seleccione uma unidade autorizada.'); + $prefix = $kind === 'client' ? 'client_documents' : ($unit ? 'draft_documents' : 'issuer_documents'); + foreach (array_unique(['view',$action]) as $right) { $this->permissions->require($actor, $ids['tenant_id'], $ids['company_id'], "$prefix.$right", $unit); } + return $ids + ['unit_id' => $unit]; + } + + private function query(string $kind, array $scope) + { + return DB::table('doc_records')->where($scope)->where('kind', $kind); + } + + private function target(string $kind, int $id, array $scope): ?object + { + if ($kind === 'payment') { return $id ? $this->query($kind, $scope)->where('id', $id)->first() : null; } + $table = $kind === 'issuer' ? 'companies' : ($kind === 'client' ? 'a_clients' : 'a_'.$kind); + $query = DB::table($table)->where('tenant_id', $scope['tenant_id'])->where($kind === 'issuer' ? 'id' : 'company_id', $scope['company_id'])->where('id', $id); + if ($scope['unit_id']) { $query->where('unit_id', $scope['unit_id']); } + $target = $query->first(); abort_unless($target, 403, 'Registo fora do âmbito autorizado.'); return $target; + } + + public function index(string $kind, int $actor): array + { + $scope = $this->scope($kind, $actor, 'view'); + if ($kind === 'payment') { return $this->query($kind, $scope)->orderBy('id')->get()->map(fn ($row) => $this->decode($row))->all(); } + if ($kind === 'issuer') { return [['id' => $scope['company_id'], 'name' => DB::table('companies')->where('id', $scope['company_id'])->value('name')]]; } + if ($kind === 'client') { $this->permissions->require($actor, $scope['tenant_id'], $scope['company_id'], 'clients.view'); return DB::table('a_clients')->where('tenant_id', $scope['tenant_id'])->where('company_id', $scope['company_id'])->orderBy('name')->get(['id','name'])->all(); } + return $this->workflow->list($kind, $actor); + } + + public function show(string $kind, int $id, int $actor): array + { + $scope = $this->scope($kind, $actor, 'view'); $target = $this->target($kind, $id, $scope); + abort_if($kind === 'payment' && ! $target, 403); + if ($kind === 'client') { $this->permissions->require($actor, $scope['tenant_id'], $scope['company_id'], 'clients.view'); } + if ($scope['unit_id']) { $this->workflow->scope($kind, $actor, 'view'); } + $row = $kind === 'payment' ? $target : $this->query($kind, $scope)->where('record_id', $id)->first(); + $record = $row ? $this->decode($row) : ['id' => null, 'version' => 0, 'data' => []]; + $record['name'] = $target->name ?? ($record['data']['label'] ?? ''); + $record['origin'] = $kind === 'payment' ? 'Instruções configuradas do emitente' : ($kind === 'issuer' ? 'Nome reutilizado do cadastro da empresa' : ($kind === 'client' ? 'Nome reutilizado do cadastro do cliente' : 'Rascunho existente na unidade seleccionada')); + $record['locked'] = $kind === 'billing_drafts' && DB::table('b_internal_confirmations')->where('billing_draft_id', $id)->exists(); + $record['review'] = $this->review($kind, $record['data'], $target); + if ($scope['unit_id']) { + $data = json_decode($target->data, true, 32, JSON_THROW_ON_ERROR); + $record['draft_version'] = (int) $target->version; $record['currency'] = $data['currency']; $record['lines'] = $data['lines']; + $record['review'][] = $this->check('currency', 'Moeda do rascunho', $data['currency'], 'Rascunho existente', 'Indicar moeda sem a presumir; validar aplicabilidade.'); + $record['review'][] = ['field' => 'terms_due', 'label' => 'Condições e vencimento', 'state' => 'validation_pending', 'origin' => 'Preparação do rascunho', 'next' => 'Conferir prazo e vencimento proposto. Sem emissão efectiva ou convenção de contagem aprovada, a compatibilidade não é validada nem corrigida automaticamente.']; + if ($row && (int) ($record['data']['draft_version'] ?? 0) !== (int) $target->version) { $record['review'][] = ['field' => 'draft_version', 'label' => 'Rascunho alterado', 'state' => 'stale', 'origin' => 'Versão de origem', 'next' => 'Rever linhas, unidades e preparação antes de voltar a guardar.']; } + $record['related_profiles'] = []; + foreach (['issuer' => $scope['company_id'], 'client' => $target->client_id] as $relatedKind => $relatedId) { + $prefix = $relatedKind === 'issuer' ? 'issuer_documents.view' : 'client_documents.view'; + if ($this->permissions->has($actor, $scope['tenant_id'], $scope['company_id'], $prefix)) { $related = $this->show($relatedKind, (int) $relatedId, $actor); $record['related_profiles'][$relatedKind] = ['name' => $related['name'], 'version' => $related['version'], 'review' => $related['review']]; } + } + } + return $record; + } + + public function save(string $kind, int $id, int $actor, array $input): array + { + $scope = $this->scope($kind, $actor, 'edit'); $selected = $this->context->unitId(); + try { + return DB::transaction(function () use ($kind, $id, $actor, $input, $scope, $selected): array { + DB::table('companies')->where('id', $scope['company_id'])->lockForUpdate()->firstOrFail(); + $this->context->selectFor($actor, $scope['tenant_id'], $scope['company_id'], $selected); $this->scope($kind, $actor, 'edit'); + $target = $this->target($kind, $id, $scope); abort_if($kind === 'payment' && $id && ! $target, 403); + if ($kind === 'client') { $this->permissions->require($actor, $scope['tenant_id'], $scope['company_id'], 'clients.view'); } + $old = $kind === 'payment' ? $target : $this->query($kind, $scope)->where('record_id', $id)->first(); + abort_unless((int) ($old->version ?? 0) === $input['version'], 409, 'Os dados mudaram; reabra o formulário.'); + $fields = in_array($kind, ['issuer','client'], true) ? self::PROFILE_FIELDS : ($kind === 'payment' ? self::PAYMENT_FIELDS : self::DRAFT_FIELDS); + $data = array_intersect_key($input, array_flip($fields)); + if ($scope['unit_id']) { + $this->workflow->scope($kind, $actor, 'view'); + abort_if($kind === 'billing_drafts' && DB::table('b_internal_confirmations')->where('billing_draft_id', $id)->exists(), 409, 'A fotografia e o rascunho B1 estão bloqueados.'); + abort_unless((int) $target->version === $input['draft_version'], 409, 'O rascunho mudou; reveja a preparação.'); + $draftData = json_decode($target->data, true, 32, JSON_THROW_ON_ERROR); + abort_unless(count($data['units']) === count($draftData['lines']), 422, 'Indique uma unidade de medida, ou pendência, por linha existente.'); + $data['payment_instruction_ids'] = array_values(array_unique($data['payment_instruction_ids'])); + if ($data['payment_instruction_ids']) { $this->scope('payment', $actor, 'view'); } + foreach ($data['payment_instruction_ids'] as $instruction) { abort_unless($this->query('payment', ['tenant_id' => $scope['tenant_id'], 'company_id' => $scope['company_id'], 'unit_id' => null])->where('id', $instruction)->exists(), 403, 'Instrução fora da empresa autorizada.'); } + if ($input['currency'] !== $draftData['currency']) { + $changes = ['version' => (int) $target->version, 'currency' => $input['currency']]; + if ($kind === 'service_drafts') { $changes += ['client_id' => $target->client_id, 'lines' => $draftData['lines']]; } + $saved = $this->workflow->save($kind, $id, $actor, $changes, (string) \Illuminate\Support\Str::uuid()); + $target->version = $saved['version']; + } + $data['draft_version'] = (int) $target->version; + } + $version = (int) ($old->version ?? 0) + 1; + $values = ['data' => json_encode((object) $data, JSON_THROW_ON_ERROR), 'version' => $version, 'updated_at' => now()]; + if ($old) { $this->query($kind, $scope)->where('id', $old->id)->update($values); $record = $old->id; } + else { $record = DB::table('doc_records')->insertGetId($scope + $values + ['kind' => $kind, 'record_id' => $kind === 'payment' ? 0 : $id, 'created_at' => now()]); } + DB::table('doc_history')->insert(['doc_record_id' => $record, 'version' => $version, 'actor_id' => $actor, 'snapshot' => $values['data'], 'created_at' => now()]); + // Audit contains only identifiers/version; never bank identifiers or instructions. + Audit::record('documents.'.$kind.'.prepared', $actor, $scope['tenant_id'], $scope['company_id'], $scope['unit_id'], details: ['area' => $kind, 'record_id' => $record, 'version' => $version]); + return ['id' => $kind === 'payment' ? $record : $id, 'version' => $version]; + }); + } catch (QueryException) { throw new HttpException(500, 'Não foi possível guardar a preparação. Nenhum valor das instruções foi incluído no erro; reabra e tente novamente.'); } + } + + public function snapshot(int $draft, int $actor): ?array + { + $scope = $this->context->identifiers(); $scope['unit_id'] = $this->context->unitId(); + $billing = DB::table('a_billing_drafts')->where($scope)->where('id', $draft)->firstOrFail(); + $rows = DB::table('doc_records')->where('tenant_id', $scope['tenant_id'])->where('company_id', $scope['company_id'])->where(function ($q) use ($billing, $draft) { + $q->where('kind', 'issuer')->orWhere(fn ($q) => $q->where('kind', 'client')->where('record_id', $billing->client_id))->orWhere(fn ($q) => $q->where('kind', 'billing_drafts')->where('record_id', $draft)); + })->get(); + if ($rows->isEmpty()) { return null; } + foreach (['issuer','client','billing_drafts'] as $kind) { $this->scope($kind, $actor, 'view'); } + $result = ['schema_version' => 2, 'records' => [], 'payment_instructions' => [], 'completeness' => [], 'validation_status' => 'not_fiscally_validated']; + foreach ($rows as $row) { + $decoded = $this->decode($row); $result['records'][] = $decoded; + $result['completeness'][$row->kind] = $this->show($row->kind, (int) $row->record_id, $actor)['review']; + if ($row->kind === 'billing_drafts') { + abort_unless((int) ($decoded['data']['draft_version'] ?? 0) === (int) $billing->version, 409, 'Reveja a preparação documental após a alteração do rascunho.'); + foreach ($decoded['data']['payment_instruction_ids'] as $id) { $result['payment_instructions'][] = $this->show('payment', $id, $actor); } + } + } + return $result; + } + + public function inheritToBilling(int $source, int $billing, int $actor, array $scope): void + { + if (! $this->permissions->has($actor, $scope['tenant_id'], $scope['company_id'], 'draft_documents.view', $scope['unit_id'])) { return; } + $row = $this->query('service_drafts', $scope)->where('record_id', $source)->first(); + if (! $row) { return; } + $data = json_decode($row->data, true, 32, JSON_THROW_ON_ERROR); + if ((int) $data['draft_version'] !== (int) DB::table('a_service_drafts')->where('id', $source)->value('version')) { return; } + $data['draft_version'] = 1; $data['source_preparation'] = ['id' => $row->id, 'version' => $row->version]; + $encoded = json_encode($data, JSON_THROW_ON_ERROR); + $id = DB::table('doc_records')->insertGetId($scope + ['kind' => 'billing_drafts', 'record_id' => $billing, 'version' => 1, 'data' => $encoded, 'created_at' => now(), 'updated_at' => now()]); + DB::table('doc_history')->insert(['doc_record_id' => $id, 'version' => 1, 'actor_id' => $actor, 'snapshot' => $encoded, 'created_at' => now()]); + Audit::record('documents.billing_drafts.reused', $actor, $scope['tenant_id'], $scope['company_id'], $scope['unit_id'], details: ['record_id' => $id, 'version' => 1]); + } + + private function decode(object $row): array { $result = (array) $row; $result['data'] = json_decode($row->data, true, 32, JSON_THROW_ON_ERROR); return $result; } + private function check(string $field, string $label, mixed $value, string $origin, string $next): array { return ['field' => $field, 'label' => $label, 'state' => $value !== null && $value !== '' ? 'filled_not_validated' : 'missing', 'origin' => $origin, 'next' => $next]; } + private function review(string $kind, array $data, ?object $target): array + { + $fields = in_array($kind, ['issuer','client'], true) ? self::PROFILE_FIELDS : ($kind === 'payment' ? ['label','bank','holder','currency','instructions'] : ['service_date','period_start','period_end','payment_terms','proposed_due_date','price_mode']); + $labels = ['nuit' => 'NUIT', 'address' => 'Morada', 'locality' => 'Localidade', 'country' => 'País', 'label' => 'Designação', 'bank' => 'Banco (quando aplicável)', 'holder' => 'Titular (quando aplicável)', 'currency' => 'Moeda (quando aplicável)', 'instructions' => 'Instruções', 'service_date' => 'Data do serviço', 'period_start' => 'Início do período', 'period_end' => 'Fim do período', 'payment_terms' => 'Condições de pagamento', 'proposed_due_date' => 'Vencimento proposto', 'price_mode' => 'Modo de preço']; + $result = []; + if (in_array($kind, ['issuer','client'], true)) { $result[] = $this->check('name','Denominação', $target?->name, 'Cadastro existente (sem duplicação)', 'Editar o nome no cadastro original se necessário; validar denominação legal.'); } + foreach ($fields as $field) { $value = $data[$field] ?? null; if ($field === 'price_mode' && $value === 'undefined') { $value = null; } $result[] = $this->check($field, $labels[$field], $value, 'Preparação introduzida pelo utilizador', 'Completar se aplicável e validar; preenchido não significa fiscalmente validado.'); } + if (str_ends_with($kind, '_drafts')) { foreach ($data['units'] ?? [] as $i => $value) { $result[] = $this->check('unit_'.$i,'Unidade da linha '.($i + 1),$value,'Preparação da linha existente','Indicar unidade de medida se aplicável; nenhuma unidade é presumida.'); } } + $result[] = ['field' => 'legal', 'label' => 'Validação legal/fiscal', 'state' => 'validation_pending', 'origin' => 'Regras ainda por validar', 'next' => 'Validar fontes e regras aplicáveis. Este ecrã não autoriza emissão fiscal nem verifica dados junto de bancos.']; + return $result; + } +} diff --git a/app/Modules/Services/DocumentPreview.php b/app/Modules/Services/DocumentPreview.php new file mode 100644 index 0000000..791e826 --- /dev/null +++ b/app/Modules/Services/DocumentPreview.php @@ -0,0 +1,144 @@ + false, 'show_contacts' => true, 'show_observations' => true, 'show_payment_instructions' => true, 'contact_text' => '', 'observations' => '']; + + public function __construct(private CompanyContext $context, private Permissions $permissions, private DocumentPreparation $preparation, private ServiceWorkflow $workflow) {} + + private function consistent(callable $read): mixed + { + if (DB::transactionLevel() > 0) { + // RefreshDatabase fixtures already use a transaction. Production composition must start its own snapshot. + if (! app()->environment('testing')) { throw new HttpException(409, 'Reabra a consulta numa operação independente.'); } + return $read(); + } + return DB::transaction(function () use ($read) { + DB::statement('SET TRANSACTION ISOLATION LEVEL REPEATABLE READ READ ONLY'); + return $read(); + }); + } + + private function model(): array + { + $ids = $this->context->identifiers(); + $row = DB::table('document_preview_models')->where($ids)->first(); + return ['version' => (int) ($row->version ?? 0), 'data' => $row ? json_decode($row->data, true, 32, JSON_THROW_ON_ERROR) : self::DEFAULT_MODEL]; + } + + public function configuration(int $actor): array + { + return $this->consistent(function () use ($actor) { $this->preparation->scope('issuer', $actor, 'view'); return $this->model() + ['local_logo_available' => $this->logo() !== null]; }); + } + + public function configure(int $actor, array $input): array + { + $scope = $this->preparation->scope('issuer', $actor, 'view'); $unit = $this->context->unitId(); + $this->permissions->require($actor, $scope['tenant_id'], $scope['company_id'], self::CONFIGURE); + try { return DB::transaction(function () use ($scope, $unit, $actor, $input) { + DB::table('companies')->where('id', $scope['company_id'])->lockForUpdate()->firstOrFail(); + $this->context->selectFor($actor, $scope['tenant_id'], $scope['company_id'], $unit); + $this->preparation->scope('issuer', $actor, 'view'); + $this->permissions->require($actor, $scope['tenant_id'], $scope['company_id'], self::CONFIGURE); + $ids = ['tenant_id' => $scope['tenant_id'], 'company_id' => $scope['company_id']]; + $old = DB::table('document_preview_models')->where($ids)->first(); + abort_unless((int) ($old->version ?? 0) === $input['version'], 409, 'A configuração mudou. Reabra-a antes de guardar.'); + $data = array_intersect_key($input, self::DEFAULT_MODEL); $version = (int) ($old->version ?? 0) + 1; + $values = ['version' => $version, 'data' => json_encode($data, JSON_THROW_ON_ERROR), 'updated_at' => now()]; + if ($old) { DB::table('document_preview_models')->where('id', $old->id)->update($values); $id = $old->id; } + else { $id = DB::table('document_preview_models')->insertGetId($ids + $values + ['created_at' => now()]); } + DB::table('document_preview_model_history')->insert(['model_id' => $id, 'version' => $version, 'actor_id' => $actor, 'snapshot' => $values['data'], 'created_at' => now()]); + Audit::record('document_preview.configured', $actor, $scope['tenant_id'], $scope['company_id'], details: ['record_id' => $id, 'version' => $version]); + return ['version' => $version]; + }); } catch (QueryException) { throw new HttpException(500, 'Não foi possível guardar a configuração; nenhum conteúdo foi incluído no erro.'); } + } + + public function read(int $draft, int $actor, bool $historical = false): array + { + return $this->consistent(function () use ($draft, $actor, $historical) { + $scope = $this->workflow->scope('billing_drafts', $actor, 'view'); + $this->context->selectFor($actor, $scope['tenant_id'], $scope['company_id'], $scope['unit_id']); + if ($historical) { $payload = $this->historical($draft, $actor, $scope); } + else { $payload = $this->current($draft, $actor, $scope); } + $payload['notice'] = self::NOTICE; + // Fingerprint is keyed, so a change token cannot be used to guess bank identifiers. + $revision = hash_hmac('sha256', json_encode($payload, JSON_THROW_ON_ERROR), (string) config('app.key')); + return $payload + ['revision' => $revision, 'consulted_at' => now()->toIso8601String()]; + }); + } + + private function current(int $draft, int $actor, array $scope): array + { + foreach (['issuer','client','billing_drafts'] as $kind) { $this->preparation->scope($kind, $actor, 'view'); } + $billing = $this->workflow->show('billing_drafts', $draft, $actor); + abort_if($billing['internal_confirmation'] !== null, 409, 'Este registo tem confirmação interna. Abra a vista histórica separada.'); + $issuer = $this->preparation->show('issuer', $scope['company_id'], $actor); + $client = $this->preparation->show('client', $billing['client_id'], $actor); + $prepared = $this->preparation->show('billing_drafts', $draft, $actor); + $model = $this->model(); $payments = []; $paymentVersions = []; + foreach ($prepared['data']['payment_instruction_ids'] ?? [] as $id) { + $payment = $this->preparation->show('payment', (int) $id, $actor); $paymentVersions[] = [$payment['id'], $payment['version']]; + if ($model['data']['show_payment_instructions']) { $payments[] = ['id' => $payment['id'], 'version' => $payment['version'], 'data' => $payment['data']]; } + } + $pending = $billing['pending']; + foreach (['Emitente' => $issuer, 'Cliente' => $client, 'Preparação' => $prepared] as $section => $row) { + foreach ($row['review'] as $check) { if ($check['state'] !== 'filled_not_validated') { $pending[$section.'.'.$check['field']] = $section.' — '.$check['label'].': '.$check['next']; } } + } + if (! $paymentVersions) { $pending['instructions_missing'] = 'Instruções de pagamento não seleccionadas; preparar apenas as aplicáveis.'; } + if (! $model['data']['contact_text']) { $pending['contacts_missing'] = 'Contactos de apresentação não configurados; completar se aplicável, independentemente da visibilidade do bloco.'; } + $localLogo = $this->logo(); $logo = $model['data']['show_logo'] ? $localLogo : null; + if (! $localLogo) { $pending['logo_missing'] = 'Logótipo opcional não disponível: falta recurso local autorizado da empresa. A escolha de visibilidade não valida este recurso.'; } + return ['mode' => 'draft', 'title' => 'Pré-visualização do rascunho de factura de serviço', 'reference' => 'Rascunho interno #'.$draft, + 'scope' => $scope, 'source_id' => $billing['source_id'], 'draft_version' => $billing['version'], 'preparation_version' => $prepared['version'], 'model_version' => $model['version'], + 'issuer' => ['name' => $issuer['name'], 'data' => $issuer['data']], 'client' => ['name' => $client['name'], 'data' => $client['data']], + 'data' => $billing['data'], 'prepared' => $prepared['data'], 'base_amount' => $billing['base_amount'], 'pending' => $pending, + 'calculation' => app(ServiceCalculation::class)->read($draft, $actor), + 'payments' => $payments, 'logo' => $logo, 'contacts' => $model['data']['show_contacts'] ? $model['data']['contact_text'] : null, + 'observations' => $model['data']['show_observations'] ? $model['data']['observations'] : null, + 'versions' => ['issuer' => $issuer['version'], 'client' => $client['version'], 'company_name' => $issuer['name'], 'client_name' => $client['name'], 'instructions' => $paymentVersions, 'model' => $model['version']]]; + } + + private function historical(int $draft, int $actor, array $scope): array + { + $confirmation = app(InternalConfirmation::class)->show($draft, $actor); + abort_unless($confirmation, 404, 'Não há confirmação interna histórica deste registo.'); + $snapshot = $confirmation['snapshot']; $prepared = []; $issuer = []; $client = []; $payments = []; $pending = $snapshot['pending']; + $document = $snapshot['document_preparation'] ?? []; + foreach ($document['records'] ?? [] as $record) { + if ($record['kind'] === 'issuer') { $issuer = $record['data']; } + if ($record['kind'] === 'client') { $client = $record['data']; } + if ($record['kind'] === 'billing_drafts') { $prepared = $record['data']; } + } + foreach ($document['payment_instructions'] ?? [] as $payment) { $payments[] = ['id' => $payment['id'], 'version' => $payment['version'], 'data' => $payment['data']]; } + foreach ($document['completeness'] ?? [] as $kind => $checks) { foreach ($checks as $check) { if ($check['state'] !== 'filled_not_validated') { $pending[$kind.'.'.$check['field']] = $check['label'].': '.$check['next']; } } } + $pending['historical_limits'] = 'Logótipo, contactos, observações do modelo e denominação do emitente não foram capturados nesta fotografia. Não foram reconstruídos.'; + return ['mode' => 'historical', 'title' => 'Confirmação interna histórica — sem validade fiscal', 'reference' => $confirmation['internal_reference'], 'scope' => $scope, + 'confirmed_at' => $snapshot['confirmed_at'], 'actor_id' => $snapshot['actor_id'], 'snapshot_schema' => $snapshot['schema_version'] ?? 1, 'source_id' => $snapshot['service_draft']['id'], + 'draft_version' => $snapshot['billing_draft']['version'], 'preparation_version' => null, 'model_version' => null, + 'issuer' => ['name' => null, 'data' => $issuer], 'client' => ['name' => $snapshot['client']['name'], 'data' => $client], + 'data' => $snapshot['data'], 'prepared' => $prepared, 'base_amount' => $snapshot['base_amount'], 'pending' => $pending, 'payments' => $payments, + 'logo' => null, 'contacts' => null, 'observations' => null]; + } + + private function logo(): ?string + { + $company = $this->context->identifiers()['company_id']; + $disk = Storage::disk('local'); $path = 'document-logos/company-'.$company.'.png'; + if (! $disk->exists($path) || $disk->size($path) > 524288) { return null; } + $bytes = $disk->get($path); + if (! str_starts_with($bytes, "\x89PNG\r\n\x1a\n") || (new \finfo(FILEINFO_MIME_TYPE))->buffer($bytes) !== 'image/png') { return null; } + return 'data:image/png;base64,'.base64_encode($bytes); + } +} diff --git a/app/Modules/Services/Http/CatalogueAccountingController.php b/app/Modules/Services/Http/CatalogueAccountingController.php new file mode 100644 index 0000000..a4b87e6 --- /dev/null +++ b/app/Modules/Services/Http/CatalogueAccountingController.php @@ -0,0 +1,29 @@ +json($data)->header('Cache-Control','no-store, private'); } + private function only(Request $r,array $keys): void { abort_if(array_diff(array_keys($r->all()),$keys)!==[],422,'Campo protegido ou fora do âmbito.'); } + public function index(Request $r,CatalogueAccounting $c) { return $this->response($c->listing($r->user()->id)); } + public function propose(Request $r,CatalogueAccounting $c) { + $this->only($r,['kind','data','valid_from','valid_until','reason','previous_id','replaces_id']); + $data=$r->validate(['kind'=>'required|in:plan,account,category,service_link,service_override','data'=>'required|array','valid_from'=>'required|date_format:Y-m-d','valid_until'=>'nullable|date_format:Y-m-d|after_or_equal:valid_from','reason'=>'required|string|max:2000','previous_id'=>'nullable|integer|min:1','replaces_id'=>'nullable|integer|min:1']); + return $this->response($c->propose($r->user()->id,$data,(string)$r->header('Idempotency-Key'))); + } + public function submit(Request $r,int $id,CatalogueAccounting $c) { $this->only($r,[]); return $this->response($c->submit($id,$r->user()->id,(string)$r->header('Idempotency-Key'))); } + public function decide(Request $r,int $id,CatalogueAccounting $c) { + $this->only($r,['decision','reason']); return $this->response($c->decide($id,$r->user()->id,$r->validate(['decision'=>'required|in:approved,refused','reason'=>'required|string|max:2000']),(string)$r->header('Idempotency-Key'))); + } + public function resolve(Request $r,int $service,CatalogueAccounting $c) { $this->only($r,['reference_date']); $r->validate(['reference_date'=>'nullable|date_format:Y-m-d']); return $this->response($c->resolve($service,$r->query('reference_date'),$r->user()->id)); } + public function capture(Request $r,CatalogueAccounting $c) { + $this->only($r,['area','record_id','record_version','service_id','reference_date','resolution_revision']); + $data=$r->validate(['area'=>'required|in:service_drafts,billing_drafts','record_id'=>'required|integer|min:1','record_version'=>'required|integer|min:1','service_id'=>'required|integer|min:1','reference_date'=>'required|date_format:Y-m-d','resolution_revision'=>'required|string|regex:/^[a-f0-9]{64}$/D']); + foreach(['record_id','record_version','service_id'] as $field)$data[$field]=(int)$data[$field]; + return $this->response($c->capture($r->user()->id,$data,(string)$r->header('Idempotency-Key'))); + } + public function history(Request $r,string $area,int $record,CatalogueAccounting $c) { abort_unless(in_array($area,['service_drafts','billing_drafts'],true),404); return $this->response(['records'=>$c->history($r->user()->id,$area,$record)]); } +} diff --git a/app/Modules/Services/Http/DocumentPreparationController.php b/app/Modules/Services/Http/DocumentPreparationController.php new file mode 100644 index 0000000..f04610d --- /dev/null +++ b/app/Modules/Services/Http/DocumentPreparationController.php @@ -0,0 +1,39 @@ +json(['records' => $preparation->index($kind, $request->user()->id)]); } + public function show(Request $request, string $kind, int $id, DocumentPreparation $preparation) { return response()->json($preparation->show($kind, $id, $request->user()->id)); } + public function save(Request $request, string $kind, int $id, DocumentPreparation $preparation) + { + $preparation->scope($kind, $request->user()->id, 'edit'); + $fields = in_array($kind, ['issuer','client'], true) ? DocumentPreparation::PROFILE_FIELDS : ($kind === 'payment' ? DocumentPreparation::PAYMENT_FIELDS : DocumentPreparation::DRAFT_FIELDS); + $allowed = array_merge($fields, ['version'], str_ends_with($kind, '_drafts') ? ['draft_version','currency'] : []); + abort_if(array_diff(array_keys($request->all()), $allowed) !== [], 422, 'Campo não suportado; não introduza credenciais, tokens ou dados de cartões.'); + $rules = ['version' => 'required|integer|min:0']; + foreach ($fields as $field) { $rules[$field] = 'nullable|string|max:500'; } + if ($kind === 'payment') { + $rules['label'] = 'required|string|max:120'; $rules['instructions'] = 'nullable|string|max:2000'; $rules['currency'] = 'nullable|string|regex:/^[A-Z]{3}$/'; + } elseif (str_ends_with($kind, '_drafts')) { + foreach (['service_date','period_start','period_end','proposed_due_date'] as $field) { $rules[$field] = 'nullable|date_format:Y-m-d'; } + if ($request->filled('period_start')) { $rules['period_end'] .= '|after_or_equal:period_start'; } + $rules['payment_terms'] = 'nullable|string|max:1000'; + $rules['price_mode'] = 'required|in:undefined,included,added'; + $rules['units'] = 'required|array|min:1|max:100'; $rules['units.*'] = 'nullable|string|max:80'; + $rules['payment_instruction_ids'] = 'present|array|max:20'; $rules['payment_instruction_ids.*'] = 'required|integer|min:1|distinct'; + $rules['draft_version'] = 'required|integer|min:1'; $rules['currency'] = 'nullable|string|regex:/^[A-Z]{3}$/'; + } + $data = $request->validate($rules); $data['version'] = (int) $data['version']; + foreach ($fields as $field) { if (! array_key_exists($field, $data)) { $data[$field] = null; } } + if (isset($data['draft_version'])) { $data['draft_version'] = (int) $data['draft_version']; $data['currency'] ??= null; $data['payment_instruction_ids'] = array_map('intval', $data['payment_instruction_ids']); } + // Refuse obvious secret assignments in free text; no secret fields are supported. + foreach ($data as $value) { if (is_string($value)) { abort_if((bool) preg_match('/(?:password|palavra.passe|token|secret|cvv|cvc|pin)\s*[:=]/iu', $value), 422, 'Não introduza credenciais ou segredos nas instruções.'); } } + return response()->json($preparation->save($kind, $id, $request->user()->id, $data)); + } +} diff --git a/app/Modules/Services/Http/DocumentPreviewController.php b/app/Modules/Services/Http/DocumentPreviewController.php new file mode 100644 index 0000000..c83b1af --- /dev/null +++ b/app/Modules/Services/Http/DocumentPreviewController.php @@ -0,0 +1,37 @@ +all()), ['draft_version','preparation_version','profile_id','profile_version']) !== [], 422); + $data = $request->validate(['draft_version'=>'required|integer|min:1','preparation_version'=>'required|integer|min:0','profile_id'=>'required|integer|min:1','profile_version'=>'required|integer|min:1']); + return $this->response($calculation->calculate($id,$request->user()->id,array_map('intval',$data))); + } + private function response(array $data) { return response()->json($data)->header('Cache-Control', 'no-store, private, max-age=0')->header('Pragma', 'no-cache')->header('Vary', 'Cookie'); } + public function model(Request $request, DocumentPreview $preview) { return $this->response($preview->configuration($request->user()->id)); } + public function configure(Request $request, DocumentPreview $preview) + { + abort_if(array_diff(array_keys($request->all()), ['version', ...array_keys(DocumentPreview::DEFAULT_MODEL)]) !== [], 422, 'Campo não configurável: aviso e pendências são obrigatórios.'); + $rules = ['version' => 'required|integer|min:0', 'contact_text' => 'nullable|string|max:2000', 'observations' => 'nullable|string|max:2000']; + foreach (['show_logo','show_contacts','show_observations','show_payment_instructions'] as $field) { $rules[$field] = 'required|boolean'; } + $data = $request->validate($rules); $data['version'] = (int) $data['version']; + foreach (['show_logo','show_contacts','show_observations','show_payment_instructions'] as $field) { $data[$field] = (bool) $data[$field]; } + $data['contact_text'] ??= ''; $data['observations'] ??= ''; + return $this->response($preview->configure($request->user()->id, $data)); + } + public function draft(Request $request, int $id, DocumentPreview $preview) { return $this->response($preview->read($id, $request->user()->id)); } + public function historical(Request $request, int $id, DocumentPreview $preview) { return $this->response($preview->read($id, $request->user()->id, true)); } + public function revision(Request $request, string $mode, int $id, DocumentPreview $preview) + { + abort_unless(in_array($mode, ['draft','history'], true), 404); + $result = $preview->read($id, $request->user()->id, $mode === 'history'); + return $this->response(['revision' => $result['revision']]); + } +} diff --git a/app/Modules/Services/InternalConfirmation.php b/app/Modules/Services/InternalConfirmation.php index 8fee70d..54b2af5 100644 --- a/app/Modules/Services/InternalConfirmation.php +++ b/app/Modules/Services/InternalConfirmation.php @@ -21,7 +21,9 @@ final class InternalConfirmation if (! $row) { return null; } $history = DB::table('a_history')->where('area', 'internal_confirmations')->where('record_id', $row->id)->value('id'); $event = DB::table('a_events as e')->join('a_outbox as o', 'e.id', '=', 'o.event_id')->where('history_id', $history)->first(['e.id','e.type','o.state']); - return ['id' => $row->id, 'internal_reference' => 'INT-B1-'.$row->id, 'label' => self::LABEL, 'snapshot' => json_decode($row->snapshot, true, 64, JSON_THROW_ON_ERROR), 'event' => $event]; + $snapshot = json_decode($row->snapshot, true, 64, JSON_THROW_ON_ERROR); + if (isset($snapshot['document_preparation'])) { foreach (['issuer','client','billing_drafts'] as $kind) { app(DocumentPreparation::class)->scope($kind, $actor, 'view'); } } + return ['id' => $row->id, 'internal_reference' => 'INT-B1-'.$row->id, 'label' => self::LABEL, 'snapshot' => $snapshot, 'event' => $event]; } public function confirm(int $draft, int $actor, int $version, string $key): array @@ -30,7 +32,7 @@ final class InternalConfirmation $this->permissions->require($actor, $scope['tenant_id'], $scope['company_id'], self::PERMISSION, $scope['unit_id']); abort_unless((bool) preg_match('/^[a-zA-Z0-9-]{8,100}$/D', $key), 422, 'É necessária uma chave de repetição válida.'); $hash = hash('sha256', json_encode(['b1.confirm_internal', $draft, $scope, $version], JSON_THROW_ON_ERROR)); - return DB::transaction(function () use ($scope, $draft, $actor, $version, $key, $hash): array { + try { return DB::transaction(function () use ($scope, $draft, $actor, $version, $key, $hash): array { DB::table('companies')->where('id', $scope['company_id'])->where('tenant_id', $scope['tenant_id'])->lockForUpdate()->firstOrFail(); $this->context->selectFor($actor, $scope['tenant_id'], $scope['company_id'], $scope['unit_id']); $this->workflow->scope('billing_drafts', $actor, 'view'); @@ -64,17 +66,19 @@ final class InternalConfirmation $snapshot = ['label' => self::LABEL, 'scope' => $scope, 'billing_draft' => $this->record($billing), 'service_draft' => $this->record($source), 'client' => $this->record($client), 'services' => $catalogue, 'data' => $data, 'base_amount' => DraftValues::base($data), 'pending' => $pending, 'actor_id' => $actor, 'confirmed_at' => now()->toIso8601String(), 'accounting_status' => 'blocked_pending', 'fiscal_status' => 'not_issued']; + $preparation = app(DocumentPreparation::class)->snapshot($draft, $actor); + if ($preparation !== null) { $snapshot['schema_version'] = 2; $snapshot['document_preparation'] = $preparation; } $id = DB::table('b_internal_confirmations')->insertGetId($scope + ['billing_draft_id' => $draft, 'billing_version' => $version, 'version' => 1, 'actor_id' => $actor, 'snapshot' => json_encode($snapshot, JSON_THROW_ON_ERROR), 'created_at' => now()]); $history = DB::table('a_history')->insertGetId($scope + ['area' => 'internal_confirmations', 'record_id' => $id, 'version' => 1, 'actor_id' => $actor, 'snapshot' => json_encode($snapshot, JSON_THROW_ON_ERROR), 'created_at' => now()]); foreach ($pending as $code => $message) { DB::table('a_pending')->insert(['history_id' => $history, 'code' => $code, 'message' => $message, 'created_at' => now()]); } - $event = DB::table('a_events')->insertGetId(['history_id' => $history, 'type' => 'b1.billing_draft.confirmed_internal', 'schema_version' => 1, 'payload' => json_encode(['confirmation_id' => $id, 'snapshot' => $snapshot], JSON_THROW_ON_ERROR), 'created_at' => now()]); + $event = DB::table('a_events')->insertGetId(['history_id' => $history, 'type' => 'b1.billing_draft.confirmed_internal', 'schema_version' => $preparation !== null ? 2 : 1, 'payload' => json_encode(['confirmation_id' => $id, 'snapshot' => $snapshot], JSON_THROW_ON_ERROR), 'created_at' => now()]); DB::table('a_outbox')->insert(['event_id' => $event, 'state' => 'captured', 'created_at' => now()]); Audit::record('b1.billing_draft.confirmed_internal', $actor, $scope['tenant_id'], $scope['company_id'], $scope['unit_id'], details: ['area' => 'internal_confirmations', 'record_id' => $id, 'version' => 1, 'event_id' => $event]); $result = ['id' => $id, 'billing_draft_id' => $draft, 'version' => $version, 'internal_reference' => 'INT-B1-'.$id, 'event_id' => $event]; } DB::table('a_commands')->insert(['tenant_id' => $scope['tenant_id'], 'company_id' => $scope['company_id'], 'actor_id' => $actor, 'command_key' => $key, 'request_hash' => $hash, 'result' => json_encode($result, JSON_THROW_ON_ERROR), 'created_at' => now()]); return $result + ['replayed' => isset($existing) && $existing !== null]; - }); + }); } catch (\Illuminate\Database\QueryException) { throw new \Symfony\Component\HttpKernel\Exception\HttpException(500, 'Não foi possível capturar a confirmação. Nenhum dado bancário foi incluído no erro.'); } } private function record(object $record): array diff --git a/app/Modules/Services/ServiceCalculation.php b/app/Modules/Services/ServiceCalculation.php new file mode 100644 index 0000000..2691e4c --- /dev/null +++ b/app/Modules/Services/ServiceCalculation.php @@ -0,0 +1,118 @@ +environment(['testing','browser-testing']); } + + public static function evaluate(array $data, array $prepared, ?array $profile): array + { + $pending = []; + if (count($data['lines'] ?? []) !== 1) { $pending[] = 'Apenas uma linha de serviço é suportada.'; } + if (($prepared['price_mode'] ?? null) !== 'added') { $pending[] = 'É necessário preço sem imposto (acrescido); incluído fica fora deste âmbito.'; } + if (!preg_match('/^[A-Z]{3}$/D', $data['currency'] ?? '')) { $pending[] = 'Moeda explícita em falta.'; } + if (!$profile || ($profile['kind'] ?? null) !== 'synthetic' || ($profile['policy'] ?? null) !== self::POLICY) { $pending[] = 'Perfil de ensaio e política identificados em falta ou incompatíveis.'; } + if (!preg_match('/^\d{1,3}(\.\d{1,8})?$/D', $profile['rate_percent'] ?? '') || BigDecimal::of($profile['rate_percent'] ?? '0')->isLessThanOrEqualTo(0)) { $pending[] = 'Taxa positiva identificada em falta.'; } + if (($profile['currency'] ?? null) !== ($data['currency'] ?? null)) { $pending[] = 'Moeda incompatível com o perfil.'; } + $line = $data['lines'][0] ?? []; + foreach (['quantity','unit_price'] as $field) { + if (!is_string($line[$field] ?? null) || !preg_match('/^\d{1,16}(\.\d{1,8})?$/D', $line[$field])) { $pending[] = 'Quantidade/preço ausente ou fora dos limites exactos de A.'; } + } + if (!$pending && BigDecimal::of($line['quantity'])->isLessThanOrEqualTo(0)) { $pending[] = 'Quantidade deve ser positiva.'; } + if ($pending) { return ['state' => 'pending', 'pending' => array_values(array_unique($pending)), 'policy' => self::POLICY]; } + $base = BigDecimal::of($line['quantity'])->multipliedBy($line['unit_price']); + $exact = $base->multipliedBy($profile['rate_percent'])->multipliedBy('0.01'); + $document = $exact->toScale(2, RoundingMode::DOWN); + $representable = $base->stripTrailingZeros()->getScale() <= 2; + return ['state' => $representable ? 'synthetic_proposed' : 'synthetic_base_representation_pending', 'policy' => self::POLICY, + 'base_exact' => (string) $base->stripTrailingZeros(), 'vat_exact' => (string) $exact->stripTrailingZeros(), + 'vat_document_proposed' => (string) $document, 'discarded_difference' => (string) $exact->minus($document)->stripTrailingZeros(), + 'total_document_proposed' => $representable ? (string) $base->plus($document)->toScale(2) : null, + 'currency' => $data['currency'], 'pending' => $representable ? [] : ['Política de representação da base/total pendente; base não truncada.'], + 'fiscally_validated' => false, 'policy_basis' => 'Decisão operacional do utilizador; não obrigação legal comprovada.']; + } + + private function sources(int $draft, int $actor): array + { + $billing = $this->workflow->show('billing_drafts', $draft, $actor); + abort_if($billing['internal_confirmation'], 409, 'Fotografia B1 preservada; cálculo não altera confirmações.'); + $prepared = $this->preparation->show('billing_drafts', $draft, $actor); + return [$billing, $prepared]; + } + + private function input(array $b, array $p, object $profile): array + { + return ['draft_id' => (int) $b['id'], 'draft_version' => $b['version'], 'preparation_version' => $p['version'], + 'data' => $b['data'], 'prepared' => $p['data'], 'profile_id' => (int) $profile->id, + 'profile_version' => (int) $profile->version, 'profile_identifier' => $profile->identifier, + 'profile' => json_decode($profile->definition, true, 32, JSON_THROW_ON_ERROR), 'policy' => self::POLICY, + 'source_current_version' => (int) DB::table('a_service_drafts')->where('id',$b['source_id'])->where('tenant_id',$b['tenant_id'])->where('company_id',$b['company_id'])->where('unit_id',$b['unit_id'])->value('version')]; + } + private function fingerprint(array $input): string { return hash('sha256', json_encode($input, JSON_THROW_ON_ERROR)); } + + public function calculate(int $draft, int $actor, array $command): array + { + // Test-only command is deliberately not a fiscal permission or real profile activation path. + abort_unless(self::isolated(), 403, 'Cálculo de ensaio restrito ao ambiente isolado de testes.'); + TestingDatabaseGuard::assertSafe(); + $scope = $this->workflow->scope('billing_drafts', $actor, 'edit'); + return DB::transaction(function () use ($draft,$actor,$command,$scope) { + DB::table('companies')->where('id', $scope['company_id'])->lockForUpdate()->firstOrFail(); + $this->context->selectFor($actor, $scope['tenant_id'], $scope['company_id'], $scope['unit_id']); + $this->workflow->scope('billing_drafts', $actor, 'edit'); + [$b,$p] = $this->sources($draft,$actor); + abort_unless($b['version'] === $command['draft_version'] && $p['version'] === $command['preparation_version'], 409, 'Versões desactualizadas.'); + abort_unless(($p['data']['draft_version'] ?? null) === $b['version'], 409, 'Reveja a preparação após alterar o rascunho.'); + $profile = DB::table('service_calculation_profiles')->where($scope)->where('id', $command['profile_id'])->first(); + abort_unless($profile, 403, 'Perfil fora do âmbito autorizado.'); + $latest = DB::table('service_calculation_profiles')->where($scope)->where('identifier', $profile->identifier)->max('version'); + abort_unless((int) $latest === (int) $profile->version && (int) $profile->version === $command['profile_version'], 409, 'Perfil desactualizado.'); + $input = $this->input($b,$p,$profile); + abort_unless($input['source_current_version'] === $b['data']['source_version'], 409, 'Prestação de origem desactualizada.'); + $result = self::evaluate($b['data'],$p['data'],$input['profile']); + abort_if($result['state'] === 'pending', 422, implode(' ', $result['pending'])); + $hash = $this->fingerprint($input); + $old = DB::table('service_calculation_results')->where('billing_draft_id',$draft)->where('fingerprint',$hash)->first(); + if ($old) { return ['id' => $old->id, 'replayed' => true]; } + $id = DB::table('service_calculation_results')->insertGetId($scope + ['billing_draft_id'=>$draft, 'profile_id'=>$profile->id, 'actor_id'=>$actor, + 'fingerprint'=>$hash, 'snapshot'=>json_encode(['input'=>$input,'result'=>$result],JSON_THROW_ON_ERROR), 'created_at'=>now()]); + Audit::record('service_calculation.synthetic_created',$actor,$scope['tenant_id'],$scope['company_id'],$scope['unit_id'],details:['result_id'=>$id,'policy'=>self::POLICY]); + return ['id'=>$id,'replayed'=>false]; + }); + } + + public function read(int $draft, int $actor): array + { + $scope = $this->workflow->scope('billing_drafts',$actor,'view'); + if (!self::isolated()) { return ['environment'=>'normal','history'=>[], 'pending'=>['Aplicabilidade à empresa, serviço/localização, base e acontecimento fiscal por demonstrar; nenhum perfil real activado.']]; } + TestingDatabaseGuard::assertSafe(); + [$b,$p] = $this->sources($draft,$actor); + $profiles = DB::table('service_calculation_profiles')->where($scope)->orderByDesc('version')->get(); + $latest = []; foreach ($profiles as $profile) { $latest[$profile->identifier] ??= $profile; } + $history = []; + foreach (DB::table('service_calculation_results')->where($scope)->where('billing_draft_id',$draft)->orderByDesc('id')->get() as $row) { + $snapshot = json_decode($row->snapshot,true,32,JSON_THROW_ON_ERROR); + $profile = $latest[$snapshot['input']['profile_identifier']] ?? null; + $current = $profile && hash_equals($row->fingerprint,$this->fingerprint($this->input($b,$p,$profile))); + $history[] = ['id'=>$row->id,'current'=>(bool)$current,'snapshot'=>$snapshot]; + } + return ['environment'=>'synthetic_test_only','policy'=>self::POLICY,'history'=>$history, + 'can_calculate'=>app(\App\Modules\Identity\Services\Permissions::class)->has($actor,$scope['tenant_id'],$scope['company_id'],'billing_drafts.edit',$scope['unit_id']), + 'profiles'=>array_map(fn ($r)=>['id'=>$r->id,'version'=>(int)$r->version,'identifier'=>$r->identifier],array_values($latest)), + 'draft_version'=>$b['version'],'preparation_version'=>$p['version'], + 'pending'=>['ENSAIO SINTÉTICO — não valida regime, base tributável, data fiscal ou emissão da empresa real.']]; + } +} diff --git a/app/Modules/Services/ServiceWorkflow.php b/app/Modules/Services/ServiceWorkflow.php index 8031acc..cdf92bc 100644 --- a/app/Modules/Services/ServiceWorkflow.php +++ b/app/Modules/Services/ServiceWorkflow.php @@ -94,6 +94,7 @@ final class ServiceWorkflow if ($id) { $this->query($area, $scope)->where('id', $id)->update($values); } else { $id = DB::table('a_'.$area)->insertGetId($scope + $values + ['created_at' => now()]); } $record = $this->query($area, $scope)->where('id', $id)->first(); + if ($area === 'billing_drafts' && ! $old) { app(DocumentPreparation::class)->inheritToBilling((int) $record->source_id, $id, $actor, $scope); } $snapshot = (array) $record; $snapshot['data'] = $data; $pending = ServicePermissions::unitScoped($area) ? DraftValues::pending($data) : []; if ($area === 'billing_drafts') { diff --git a/database/migrations/2026_10_26_010000_create_document_preparation.php b/database/migrations/2026_10_26_010000_create_document_preparation.php new file mode 100644 index 0000000..f3ff5e8 --- /dev/null +++ b/database/migrations/2026_10_26_010000_create_document_preparation.php @@ -0,0 +1,68 @@ +id(); $table->unsignedBigInteger('tenant_id'); $table->unsignedBigInteger('company_id'); $table->unsignedBigInteger('unit_id')->nullable(); + $table->string('kind', 30); $table->unsignedBigInteger('record_id'); $table->unsignedInteger('version'); $table->jsonb('data'); $table->timestampsTz(); + $table->foreign(['tenant_id','company_id'])->references(['tenant_id','id'])->on('companies')->restrictOnDelete(); + $table->foreign(['tenant_id','company_id','unit_id'])->references(['tenant_id','company_id','id'])->on('units')->restrictOnDelete(); + }); + DB::statement("CREATE UNIQUE INDEX doc_record_identity ON doc_records(company_id,kind,record_id) WHERE kind <> 'payment'"); + DB::statement("ALTER TABLE doc_records ADD CHECK (version > 0 AND jsonb_typeof(data) = 'object' AND ((kind IN ('issuer','client','payment') AND unit_id IS NULL) OR (kind IN ('service_drafts','billing_drafts') AND unit_id IS NOT NULL)))"); + Schema::create('doc_history', function (Blueprint $table): void { + $table->id(); $table->foreignId('doc_record_id')->constrained('doc_records')->restrictOnDelete(); $table->unsignedInteger('version'); + $table->foreignId('actor_id')->constrained('users')->restrictOnDelete(); $table->jsonb('snapshot'); $table->timestampTz('created_at'); + $table->unique(['doc_record_id','version']); + }); + DB::unprepared(<<<'SQL' + CREATE OR REPLACE FUNCTION sgf_doc_guard() RETURNS trigger LANGUAGE plpgsql AS $$ + DECLARE item record; target text; instruction jsonb; + BEGIN + IF TG_OP = 'DELETE' THEN RAISE EXCEPTION 'SGF_DOC_NO_DELETE'; END IF; + IF TG_OP = 'INSERT' AND NEW.version <> 1 THEN RAISE EXCEPTION 'SGF_DOC_INITIAL_VERSION'; END IF; + IF TG_OP = 'UPDATE' THEN + IF ROW(NEW.id,NEW.tenant_id,NEW.company_id,NEW.unit_id,NEW.kind,NEW.record_id) IS DISTINCT FROM ROW(OLD.id,OLD.tenant_id,OLD.company_id,OLD.unit_id,OLD.kind,OLD.record_id) THEN RAISE EXCEPTION 'SGF_DOC_IMMUTABLE_SCOPE'; END IF; + IF NEW.version <> OLD.version + 1 THEN RAISE EXCEPTION 'SGF_DOC_VERSION'; END IF; + END IF; + IF NEW.kind = 'issuer' AND NEW.record_id <> NEW.company_id THEN RAISE EXCEPTION 'SGF_DOC_ISSUER'; END IF; + IF NEW.kind = 'client' AND NOT EXISTS (SELECT 1 FROM a_clients WHERE id=NEW.record_id AND tenant_id=NEW.tenant_id AND company_id=NEW.company_id) THEN RAISE EXCEPTION 'SGF_DOC_CLIENT'; END IF; + IF NEW.kind = 'payment' AND NEW.record_id <> 0 THEN RAISE EXCEPTION 'SGF_DOC_PAYMENT'; END IF; + IF NEW.kind IN ('service_drafts','billing_drafts') THEN + target := 'a_' || NEW.kind; + EXECUTE format('SELECT tenant_id,company_id,unit_id,version FROM %I WHERE id=$1',target) INTO item USING NEW.record_id; + IF item IS NULL OR ROW(item.tenant_id,item.company_id,item.unit_id) IS DISTINCT FROM ROW(NEW.tenant_id,NEW.company_id,NEW.unit_id) THEN RAISE EXCEPTION 'SGF_DOC_DRAFT_SCOPE'; END IF; + IF NEW.kind = 'billing_drafts' AND EXISTS (SELECT 1 FROM b_internal_confirmations WHERE billing_draft_id=NEW.record_id) THEN RAISE EXCEPTION 'SGF_DOC_CONFIRMED_IMMUTABLE'; END IF; + IF (NEW.data->>'draft_version')::integer IS DISTINCT FROM item.version THEN RAISE EXCEPTION 'SGF_DOC_STALE_DRAFT'; END IF; + IF NEW.data->>'price_mode' NOT IN ('undefined','included','added') THEN RAISE EXCEPTION 'SGF_DOC_PRICE_MODE'; END IF; + FOR instruction IN SELECT * FROM jsonb_array_elements(NEW.data->'payment_instruction_ids') LOOP + IF NOT EXISTS (SELECT 1 FROM doc_records WHERE id=instruction::text::bigint AND kind='payment' AND tenant_id=NEW.tenant_id AND company_id=NEW.company_id) THEN RAISE EXCEPTION 'SGF_DOC_FOREIGN_PAYMENT'; END IF; + END LOOP; + END IF; + RETURN NEW; + END; $$; + CREATE OR REPLACE FUNCTION sgf_doc_history_guard() RETURNS trigger LANGUAGE plpgsql AS $$ + BEGIN + IF NOT EXISTS (SELECT 1 FROM doc_records WHERE id=NEW.doc_record_id AND version=NEW.version AND data=NEW.snapshot) THEN RAISE EXCEPTION 'SGF_DOC_HISTORY_VERSION'; END IF; + RETURN NEW; + END; $$; + CREATE TRIGGER doc_record_guard BEFORE INSERT OR UPDATE OR DELETE ON doc_records FOR EACH ROW EXECUTE FUNCTION sgf_doc_guard(); + CREATE TRIGGER doc_history_guard BEFORE INSERT ON doc_history FOR EACH ROW EXECUTE FUNCTION sgf_doc_history_guard(); + CREATE TRIGGER doc_history_immutable BEFORE UPDATE OR DELETE ON doc_history FOR EACH ROW EXECUTE FUNCTION sgf_append_only_audit(); + SQL); + $company = ['company.view','company.edit','unit.create','access.manage','issuer_documents.view','issuer_documents.edit','client_documents.view','client_documents.edit']; + $unit = ['unit.view','unit.edit','billing_drafts.confirm_internal','draft_documents.view','draft_documents.edit']; + foreach (['clients','services','service_drafts','billing_drafts'] as $area) { foreach (['view','create','edit','manage'] as $action) { if (in_array($area, ['clients','services'], true)) { $company[] = "$area.$action"; } else { $unit[] = "$area.$action"; } } } + $companySql = "'".implode("','", $company)."'"; $unitSql = "'".implode("','", $unit)."'"; + DB::statement('ALTER TABLE permission_grants DROP CONSTRAINT permission_grants_scope_check'); + DB::statement("ALTER TABLE permission_grants ADD CONSTRAINT permission_grants_scope_check CHECK ((permission IN ($companySql) AND unit_id IS NULL) OR (permission IN ($unitSql) AND unit_id IS NOT NULL))"); + } + public function down(): void { throw new RuntimeException('Document preparation contains historical data; use a separately reviewed preservation procedure.'); } +}; diff --git a/database/migrations/2026_10_26_020000_create_document_preview_models.php b/database/migrations/2026_10_26_020000_create_document_preview_models.php new file mode 100644 index 0000000..4b0b379 --- /dev/null +++ b/database/migrations/2026_10_26_020000_create_document_preview_models.php @@ -0,0 +1,49 @@ +id(); $table->unsignedBigInteger('tenant_id'); $table->unsignedBigInteger('company_id')->unique(); + $table->unsignedInteger('version'); $table->jsonb('data'); $table->timestampsTz(); + $table->foreign(['tenant_id','company_id'])->references(['tenant_id','id'])->on('companies')->restrictOnDelete(); + }); + Schema::create('document_preview_model_history', function (Blueprint $table): void { + $table->id(); $table->foreignId('model_id')->constrained('document_preview_models')->restrictOnDelete(); + $table->unsignedInteger('version'); $table->foreignId('actor_id')->constrained('users')->restrictOnDelete(); + $table->jsonb('snapshot'); $table->timestampTz('created_at'); $table->unique(['model_id','version']); + }); + DB::unprepared(<<<'SQL' + CREATE OR REPLACE FUNCTION sgf_preview_model_guard() RETURNS trigger LANGUAGE plpgsql AS $$ + BEGIN + IF TG_OP = 'DELETE' THEN RAISE EXCEPTION 'SGF_PREVIEW_NO_DELETE'; END IF; + IF TG_OP = 'INSERT' AND NEW.version <> 1 THEN RAISE EXCEPTION 'SGF_PREVIEW_INITIAL_VERSION'; END IF; + IF TG_OP = 'UPDATE' AND (ROW(NEW.id,NEW.tenant_id,NEW.company_id) IS DISTINCT FROM ROW(OLD.id,OLD.tenant_id,OLD.company_id) OR NEW.version <> OLD.version+1) THEN RAISE EXCEPTION 'SGF_PREVIEW_IMMUTABLE_SCOPE_OR_VERSION'; END IF; + IF jsonb_typeof(NEW.data) IS DISTINCT FROM 'object' OR (NEW.data - ARRAY['show_logo','show_contacts','show_observations','show_payment_instructions','contact_text','observations']) <> '{}'::jsonb THEN RAISE EXCEPTION 'SGF_PREVIEW_FIXED_CONTENT'; END IF; + IF jsonb_typeof(NEW.data->'show_logo') IS DISTINCT FROM 'boolean' OR jsonb_typeof(NEW.data->'show_contacts') IS DISTINCT FROM 'boolean' OR jsonb_typeof(NEW.data->'show_observations') IS DISTINCT FROM 'boolean' OR jsonb_typeof(NEW.data->'show_payment_instructions') IS DISTINCT FROM 'boolean' THEN RAISE EXCEPTION 'SGF_PREVIEW_BOOLEAN'; END IF; + RETURN NEW; + END; $$; + CREATE OR REPLACE FUNCTION sgf_preview_history_guard() RETURNS trigger LANGUAGE plpgsql AS $$ + BEGIN + IF NOT EXISTS(SELECT 1 FROM document_preview_models WHERE id=NEW.model_id AND version=NEW.version AND data=NEW.snapshot) THEN RAISE EXCEPTION 'SGF_PREVIEW_HISTORY'; END IF; + RETURN NEW; + END; $$; + CREATE TRIGGER preview_model_guard BEFORE INSERT OR UPDATE OR DELETE ON document_preview_models FOR EACH ROW EXECUTE FUNCTION sgf_preview_model_guard(); + CREATE TRIGGER preview_model_history_guard BEFORE INSERT ON document_preview_model_history FOR EACH ROW EXECUTE FUNCTION sgf_preview_history_guard(); + CREATE TRIGGER preview_model_history_immutable BEFORE UPDATE OR DELETE ON document_preview_model_history FOR EACH ROW EXECUTE FUNCTION sgf_append_only_audit(); + SQL); + $company = ['company.view','company.edit','unit.create','access.manage','issuer_documents.view','issuer_documents.edit','client_documents.view','client_documents.edit','document_preview.configure']; + $unit = ['unit.view','unit.edit','billing_drafts.confirm_internal','draft_documents.view','draft_documents.edit']; + foreach (['clients','services','service_drafts','billing_drafts'] as $area) { foreach (['view','create','edit','manage'] as $action) { if (in_array($area, ['clients','services'], true)) { $company[] = "$area.$action"; } else { $unit[] = "$area.$action"; } } } + $companySql = "'".implode("','", $company)."'"; $unitSql = "'".implode("','", $unit)."'"; + DB::statement('ALTER TABLE permission_grants DROP CONSTRAINT permission_grants_scope_check'); + DB::statement("ALTER TABLE permission_grants ADD CONSTRAINT permission_grants_scope_check CHECK ((permission IN ($companySql) AND unit_id IS NULL) OR (permission IN ($unitSql) AND unit_id IS NOT NULL))"); + } + public function down(): void { throw new RuntimeException('Preview model history requires a separately reviewed preservation procedure.'); } +}; diff --git a/database/migrations/2026_10_26_030000_create_service_calculations.php b/database/migrations/2026_10_26_030000_create_service_calculations.php new file mode 100644 index 0000000..02dbc96 --- /dev/null +++ b/database/migrations/2026_10_26_030000_create_service_calculations.php @@ -0,0 +1,40 @@ +id(); $t->unsignedBigInteger('tenant_id'); $t->unsignedBigInteger('company_id'); $t->unsignedBigInteger('unit_id'); + $t->string('identifier'); $t->unsignedInteger('version'); $t->jsonb('definition'); $t->timestampTz('created_at'); + $t->unique(['unit_id','identifier','version']); + $t->foreign(['tenant_id','company_id','unit_id'])->references(['tenant_id','company_id','id'])->on('units')->restrictOnDelete(); + }); + Schema::create('service_calculation_results', function (Blueprint $t): void { + $t->id(); $t->unsignedBigInteger('tenant_id'); $t->unsignedBigInteger('company_id'); $t->unsignedBigInteger('unit_id'); + $t->foreignId('billing_draft_id')->constrained('a_billing_drafts')->restrictOnDelete(); + $t->foreignId('profile_id')->constrained('service_calculation_profiles')->restrictOnDelete(); + $t->foreignId('actor_id')->constrained('users')->restrictOnDelete(); + $t->string('fingerprint', 64); $t->jsonb('snapshot'); $t->timestampTz('created_at'); + $t->unique(['billing_draft_id','fingerprint']); + $t->foreign(['tenant_id','company_id','unit_id'])->references(['tenant_id','company_id','id'])->on('units')->restrictOnDelete(); + }); + DB::unprepared(<<<'SQL' + CREATE OR REPLACE FUNCTION sgf_calculation_insert_guard() RETURNS trigger LANGUAGE plpgsql AS $$ + BEGIN + IF NOT EXISTS(SELECT 1 FROM a_billing_drafts b WHERE b.id=NEW.billing_draft_id AND b.tenant_id=NEW.tenant_id AND b.company_id=NEW.company_id AND b.unit_id=NEW.unit_id) + OR NOT EXISTS(SELECT 1 FROM service_calculation_profiles p WHERE p.id=NEW.profile_id AND p.tenant_id=NEW.tenant_id AND p.company_id=NEW.company_id AND p.unit_id=NEW.unit_id) + THEN RAISE EXCEPTION 'SGF_CALCULATION_SCOPE'; END IF; + RETURN NEW; + END; $$; + CREATE TRIGGER calculation_scope BEFORE INSERT ON service_calculation_results FOR EACH ROW EXECUTE FUNCTION sgf_calculation_insert_guard(); + CREATE TRIGGER calculation_results_immutable BEFORE UPDATE OR DELETE ON service_calculation_results FOR EACH ROW EXECUTE FUNCTION sgf_append_only_audit(); + CREATE TRIGGER calculation_profiles_immutable BEFORE UPDATE OR DELETE ON service_calculation_profiles FOR EACH ROW EXECUTE FUNCTION sgf_append_only_audit(); + SQL); + } + public function down(): void { throw new RuntimeException('Calculation history requires a reviewed preservation procedure.'); } +}; diff --git a/database/migrations/2026_10_26_040000_create_catalogue_accounting.php b/database/migrations/2026_10_26_040000_create_catalogue_accounting.php new file mode 100644 index 0000000..50365ae --- /dev/null +++ b/database/migrations/2026_10_26_040000_create_catalogue_accounting.php @@ -0,0 +1,96 @@ +id(); $t->unsignedBigInteger('tenant_id'); $t->unsignedBigInteger('company_id'); + $t->string('kind',30); $t->string('entity_key',100); $t->unsignedInteger('version'); + $t->foreignId('previous_id')->nullable()->constrained('ca_proposals')->restrictOnDelete(); + $t->foreignId('replaces_id')->nullable()->constrained('ca_proposals')->restrictOnDelete(); + $t->date('valid_from'); $t->date('valid_until')->nullable(); $t->jsonb('data'); + $t->text('reason'); $t->foreignId('actor_id')->constrained('users')->restrictOnDelete(); $t->timestampTz('created_at'); + $t->unique(['company_id','kind','entity_key','version']); $t->unique(['tenant_id','company_id','id']); + $t->foreign(['tenant_id','company_id'])->references(['tenant_id','id'])->on('companies')->restrictOnDelete(); + }); + foreach (['ca_submissions','ca_decisions'] as $table) { + Schema::create($table,function (Blueprint $t) use ($table): void { + $t->id(); $t->unsignedBigInteger('tenant_id'); $t->unsignedBigInteger('company_id'); $t->unsignedBigInteger('proposal_id')->unique(); + $t->foreignId('actor_id')->constrained('users')->restrictOnDelete(); $t->timestampTz('created_at'); + if ($table==='ca_decisions') { $t->string('decision',15); $t->text('reason'); } + $t->foreign(['tenant_id','company_id','proposal_id'])->references(['tenant_id','company_id','id'])->on('ca_proposals')->restrictOnDelete(); + }); + } + Schema::create('ca_resolutions',function (Blueprint $t): void { + $t->id(); $t->unsignedBigInteger('tenant_id'); $t->unsignedBigInteger('company_id'); $t->unsignedBigInteger('unit_id'); + $t->string('area',30); $t->unsignedBigInteger('record_id'); $t->unsignedInteger('record_version'); $t->unsignedBigInteger('service_id'); + $t->date('reference_date'); $t->jsonb('snapshot'); $t->foreignId('actor_id')->constrained('users')->restrictOnDelete(); $t->timestampTz('created_at'); + $t->foreign(['tenant_id','company_id','unit_id'])->references(['tenant_id','company_id','id'])->on('units')->restrictOnDelete(); + $t->foreign(['tenant_id','company_id','service_id'])->references(['tenant_id','company_id','id'])->on('a_services')->restrictOnDelete(); + }); + Schema::create('ca_commands',function (Blueprint $t): void { + $t->id(); $t->unsignedBigInteger('tenant_id'); $t->unsignedBigInteger('company_id'); $t->foreignId('actor_id')->constrained('users')->restrictOnDelete(); + $t->string('command_key',100); $t->string('request_hash',64); $t->jsonb('result'); $t->timestampTz('created_at'); + $t->unique(['company_id','command_key']); + $t->foreign(['tenant_id','company_id'])->references(['tenant_id','id'])->on('companies')->restrictOnDelete(); + }); + DB::unprepared(<<<'SQL' + ALTER TABLE ca_proposals ADD CHECK (kind IN ('plan','account','category','service_link','service_override')); + ALTER TABLE ca_proposals ADD CHECK (valid_until IS NULL OR valid_until >= valid_from); + ALTER TABLE ca_decisions ADD CHECK (decision IN ('approved','refused')); + CREATE OR REPLACE FUNCTION sgf_ca_proposal_guard() RETURNS trigger LANGUAGE plpgsql AS $$ + DECLARE r record; ref text; keys text[]; + BEGIN + IF NEW.previous_id IS NULL THEN + IF NEW.version<>1 THEN RAISE EXCEPTION 'SGF_CA_INITIAL_VERSION'; END IF; + ELSE + SELECT * INTO r FROM ca_proposals WHERE id=NEW.previous_id; + IF NOT FOUND OR ROW(r.tenant_id,r.company_id,r.kind,r.entity_key,r.version+1) IS DISTINCT FROM ROW(NEW.tenant_id,NEW.company_id,NEW.kind,NEW.entity_key,NEW.version) THEN RAISE EXCEPTION 'SGF_CA_PREVIOUS_SCOPE'; END IF; + END IF; + IF NEW.replaces_id IS NOT NULL AND NOT EXISTS(SELECT 1 FROM ca_proposals p JOIN ca_decisions d ON d.proposal_id=p.id AND d.decision='approved' WHERE p.id=NEW.replaces_id AND p.tenant_id=NEW.tenant_id AND p.company_id=NEW.company_id AND p.kind=NEW.kind AND p.entity_key=NEW.entity_key AND p.valid_from<=NEW.valid_from) THEN RAISE EXCEPTION 'SGF_CA_REPLACEMENT_SCOPE'; END IF; + keys:=CASE NEW.kind WHEN 'plan' THEN ARRAY['plan','source_version'] WHEN 'account' THEN ARRAY['plan_id','code','name','origin','movable','evidence'] WHEN 'category' THEN ARRAY['name','account_id','conditions'] WHEN 'service_link' THEN ARRAY['service_id','category_id'] ELSE ARRAY['service_id','account_id','conditions'] END; + IF jsonb_typeof(NEW.data) IS DISTINCT FROM 'object' OR NEW.data-keys<>'{}'::jsonb THEN RAISE EXCEPTION 'SGF_CA_UNSUPPORTED_DATA'; END IF; + FOREACH ref IN ARRAY ARRAY['plan_id','account_id','category_id'] LOOP + IF NEW.data ? ref AND NOT EXISTS(SELECT 1 FROM ca_proposals p WHERE p.id=(NEW.data->>ref)::bigint AND p.tenant_id=NEW.tenant_id AND p.company_id=NEW.company_id AND p.kind=CASE ref WHEN 'plan_id' THEN 'plan' WHEN 'account_id' THEN 'account' ELSE 'category' END) THEN RAISE EXCEPTION 'SGF_CA_REFERENCE_SCOPE'; END IF; + END LOOP; + IF NEW.data ? 'service_id' AND NOT EXISTS(SELECT 1 FROM a_services s WHERE s.id=(NEW.data->>'service_id')::bigint AND s.tenant_id=NEW.tenant_id AND s.company_id=NEW.company_id) THEN RAISE EXCEPTION 'SGF_CA_SERVICE_SCOPE'; END IF; + IF NEW.kind IN ('service_link','service_override') AND NEW.entity_key<>'service:'||(NEW.data->>'service_id') THEN RAISE EXCEPTION 'SGF_CA_SERVICE_KEY'; END IF; + IF NEW.kind='plan' AND (NEW.entity_key<>'PGC-NIRF' OR NEW.data->>'plan'<>'PGC-NIRF') THEN RAISE EXCEPTION 'SGF_CA_PLAN'; END IF; + RETURN NEW; + END; $$; + CREATE TRIGGER ca_proposal_insert BEFORE INSERT ON ca_proposals FOR EACH ROW EXECUTE FUNCTION sgf_ca_proposal_guard(); + CREATE OR REPLACE FUNCTION sgf_ca_event_guard() RETURNS trigger LANGUAGE plpgsql AS $$ + DECLARE p record; + BEGIN + SELECT * INTO p FROM ca_proposals WHERE id=NEW.proposal_id AND tenant_id=NEW.tenant_id AND company_id=NEW.company_id; + IF NOT FOUND OR EXISTS(SELECT 1 FROM ca_proposals n WHERE n.company_id=p.company_id AND n.kind=p.kind AND n.entity_key=p.entity_key AND n.version>p.version) THEN RAISE EXCEPTION 'SGF_CA_EVENT_VERSION'; END IF; + IF TG_TABLE_NAME='ca_decisions' AND NOT EXISTS(SELECT 1 FROM ca_submissions WHERE proposal_id=p.id) THEN RAISE EXCEPTION 'SGF_CA_NOT_SUBMITTED'; END IF; + RETURN NEW; + END; $$; + CREATE TRIGGER ca_submission_insert BEFORE INSERT ON ca_submissions FOR EACH ROW EXECUTE FUNCTION sgf_ca_event_guard(); + CREATE TRIGGER ca_decision_insert BEFORE INSERT ON ca_decisions FOR EACH ROW EXECUTE FUNCTION sgf_ca_event_guard(); + CREATE OR REPLACE FUNCTION sgf_ca_resolution_guard() RETURNS trigger LANGUAGE plpgsql AS $$ + BEGIN + IF NEW.area='service_drafts' THEN + IF NOT EXISTS(SELECT 1 FROM a_service_drafts r WHERE r.id=NEW.record_id AND r.tenant_id=NEW.tenant_id AND r.company_id=NEW.company_id AND r.unit_id=NEW.unit_id AND r.version=NEW.record_version AND EXISTS(SELECT 1 FROM jsonb_array_elements(r.data->'lines') l WHERE (l->>'service_id')::bigint=NEW.service_id)) THEN RAISE EXCEPTION 'SGF_CA_OPERATION_SCOPE'; END IF; + ELSIF NEW.area='billing_drafts' THEN + IF NOT EXISTS(SELECT 1 FROM a_billing_drafts r WHERE r.id=NEW.record_id AND r.tenant_id=NEW.tenant_id AND r.company_id=NEW.company_id AND r.unit_id=NEW.unit_id AND r.version=NEW.record_version AND EXISTS(SELECT 1 FROM jsonb_array_elements(r.data->'lines') l WHERE (l->>'service_id')::bigint=NEW.service_id)) THEN RAISE EXCEPTION 'SGF_CA_OPERATION_SCOPE'; END IF; + ELSE RAISE EXCEPTION 'SGF_CA_OPERATION_KIND'; END IF; + RETURN NEW; + END; $$; + CREATE TRIGGER ca_resolution_insert BEFORE INSERT ON ca_resolutions FOR EACH ROW EXECUTE FUNCTION sgf_ca_resolution_guard(); + SQL); + foreach (['ca_proposals','ca_submissions','ca_decisions','ca_resolutions','ca_commands'] as $table) { DB::statement("CREATE TRIGGER {$table}_immutable BEFORE UPDATE OR DELETE ON $table FOR EACH ROW EXECUTE FUNCTION sgf_append_only_audit()"); } + $company=['company.view','company.edit','unit.create','access.manage','issuer_documents.view','issuer_documents.edit','client_documents.view','client_documents.edit','document_preview.configure','catalogue_accounting.view','catalogue_accounting.propose','catalogue_accounting.approve']; + $unit=['unit.view','unit.edit','billing_drafts.confirm_internal','draft_documents.view','draft_documents.edit']; + foreach (['clients','services','service_drafts','billing_drafts'] as $area) { foreach (['view','create','edit','manage'] as $action) { if (in_array($area,['clients','services'],true)) { $company[]="$area.$action"; } else { $unit[]="$area.$action"; } } } + DB::statement('ALTER TABLE permission_grants DROP CONSTRAINT permission_grants_scope_check'); + DB::statement("ALTER TABLE permission_grants ADD CONSTRAINT permission_grants_scope_check CHECK ((permission IN ('".implode("','",$company)."') AND unit_id IS NULL) OR (permission IN ('".implode("','",$unit)."') AND unit_id IS NOT NULL))"); + } + public function down(): void { throw new RuntimeException('Accounting classification history requires a preservation procedure.'); } +}; diff --git a/docs/BILLING_DOCUMENTS_FIELD_SPEC.md b/docs/BILLING_DOCUMENTS_FIELD_SPEC.md new file mode 100644 index 0000000..17cb056 --- /dev/null +++ b/docs/BILLING_DOCUMENTS_FIELD_SPEC.md @@ -0,0 +1,172 @@ +# Facturação e recebimentos — matriz de informação para revisão + +Especificação posterior de 26 de Outubro de 2026: [primeiro cálculo de factura de serviço](SERVICE_INVOICE_CALCULATION_SPEC.md), com caso mínimo, fórmulas, precisão, arredondamento/reconciliação, fontes oficiais parcialmente verificadas e lacunas explícitas. Apenas proposta, sem activação de taxa ou autorização de emissão. + +Plano posterior de 26 de Outubro de 2026: [pré-visualização de rascunho de factura de serviço](DRAFT_INVOICE_PREVIEW_PLAN.md), com apresentação provisória, critérios, decisões e fontes ainda necessárias. Apenas proposta; preserva a preparação entregue e as bases aceites, sem autorização de implementação ou emissão. + +Data: 26 de Outubro de 2026 (Africa/Johannesburg). + +Estado: especificação apenas. O utilizador indicou que os três exemplos representam informação a contemplar nas facturas e recibos. Isso define uma referência de conteúdo pretendido, não a obrigatoriedade universal de todos os campos nem a validade fiscal dos modelos. Não autoriza implementação, emissão, recebimentos, contabilização, alterações de permissões ou publicação. + +Actualização posterior: o utilizador autorizou um incremento delimitado de preparação documental, incluindo dados de emitente/clientes, preparação dos rascunhos e instruções de pagamento do emitente reutilizáveis. Banco/titular/identificadores/moeda/instruções facilitam o pagamento; não perguntam como o cliente vai pagar e não criam recebimento. Foram autorizados por prompt de execução próprio, com confirmação específica das novas concessões. A execução está documentada em [DOCUMENT_PREPARATION_DELIVERY.md](DOCUMENT_PREPARATION_DELIVERY.md). As restantes propostas desta matriz continuam sujeitas a validação e autorização, sem emissão fiscal, recebimento ou contabilização. + +Preservar B1 aceite e o checkpoint `8fcd52c`, A (`ca13acb`) e identidade (`26b80df`). As fotografias B1 mantêm o significado «Confirmado internamente — sem validade fiscal». Esta revisão não lhes acrescenta validade, dados ou efeitos retrospectivos. + +## Fontes e grau de validação + +| Referência | Utilização nesta revisão | Limite | +| --- | --- | --- | +| SGF_TEMPO_Roteiro_v0_9.docx; SERVICES_WORKFLOW_SPEC.md; SERVICES_B_SCOPE.md | Reutilização de dados, distinção entre acontecimentos, captura permanente e pendências | Requisitos de produto e propostas; não são legislação fiscal | +| SERVICES_A_DELIVERY.md e SERVICES_B1_DELIVERY.md, entregas aceites | Fundação existente: cadastro mínimo, rascunhos, decimais exactos e fotografia interna | Não incluem emissão fiscal ou recebimento | +| E1 — Factura.jpg | Na imagem é um **recibo Tempo**, n.º 10, série 2026; linha refere **FT 10/2026** | O nome do ficheiro não determina o tipo documental | +| E2 — Factura.png | **Factura-recibo TVCABO**, n.º 219144 / FR26; detalhe de serviço e informação de pagamento | Exemplo de conteúdo de outro emitente; não define regras para a Tempo | +| E3 — Sem título.jpg | **Factura Tempo FT 11/2026**, com linhas, imposto e condições de pagamento | Não é a factura referenciada pelo recibo E1 | +| Esclarecimento do utilizador nesta sessão | Os exemplos mostram informação que deve ser contemplada em facturas e recibos | Campos aplicáveis por documento/regime ainda carecem de delimitação | + +Os exemplos foram lidos visualmente. Não foram copiados para o repositório nem transformados em operações/fixtures. Não transcrever números de contas, referências de pagamento ou assinaturas reais como configuração ou valores por omissão. Texto ambíguo numa imagem deve ser conferido no original, nunca completado por suposição. + +**Fontes legais já validadas nesta tarefa: nenhuma.** Não foram fornecidos ou validados diplomas, orientações oficiais ou pareceres aplicáveis ao regime, período e operações da empresa. Esta matriz propõe informação e validações técnicas; antes de chamar um campo obrigatório por lei, associar-lhe fonte oficial, artigo, vigência, aplicabilidade e validação do responsável competente. A taxa observada nos exemplos não constitui validação da taxa aplicável. + +## Tipos documentais e acontecimentos + +| Tipo | Significado funcional proposto | Ligações necessárias | Não inferir | +| --- | --- | --- | --- | +| Factura | Documenta a facturação de bens/serviços segundo requisitos a validar | Empresa/unidade, cliente, linhas, origens e versão; recebimentos por afectação posterior | Que o serviço foi executado, que houve recebimento ou que ocorreu reconhecimento contabilístico | +| Recibo | Documenta um recebimento identificado e as suas afectações, conforme âmbito a validar | Identidade própria, recebimento(s), documento(s) abrangidos e montante de cada afectação | Que o número do recibo é o da factura; que montante igual identifica a factura; que a emissão confirma liquidação bancária | +| Factura-recibo | Representa conjuntamente facturação e recebimento no caso expressamente admitido e aprovado | Identidades dos dois acontecimentos e afectações explícitas, mesmo com uma apresentação conjunta | Que qualquer factura se torna paga ao ser emitida, ou que se pode contar novamente o recebimento num recibo separado | + +Admissibilidade, momento de emissão e condições de utilização de cada tipo são pendências legais/operacionais. Uma factura-recibo não elimina a separação interna entre documento, recebimento, afectação e eventual lançamento contabilístico. + +## O que os exemplos mostram + +- E1: recibo emitido em 15/10/2026, com campo de vencimento também em 15/10/2026; a linha refere FT, série 2026, n.º 10, emitida em 09/08/2026 e com vencimento em 10/08/2026. Mostra valor e valor pago de 6 744,24, pendente 0,00 e total em MZN. As datas do cabeçalho são distintas das datas da factura referida. Não adoptar um vencimento de recibo por ser um campo existente no modelo. +- E3: FT 11/2026, emitida em 12/10/2026, vencimento em 12/11/2026; condição impressa «Pagamento em 30 dias». Preservar ambos os dados observados e sinalizar a compatibilidade para revisão; não deduzir uma convenção de contagem nem corrigir silenciosamente a data. Descrição «Aluguer de Servidor Novembro», quantidade 1, unidade UN, preço/base 5 814,00, imposto apresentado 930,24 e total 6 744,24 MZN. O mês na descrição não fornece, por si só, um período exacto de serviço ou uma data de reconhecimento. +- E2: preço apresentado 2 380,00, IVA identificado como «16 % Inc.», base apresentada 2 051,72, imposto 328,28 e total 2 380,00. O período de serviço indicado é 25/10/2026–23/11/2026; a emissão é 15/10/2026 às 10:50. Traz contrato, pedido de adesão, morada de instalação, indicação de pagamento VISA e extracto de conta. Estes campos têm funções diferentes e não devem tornar-se requisitos universais. +- E1 e E3 têm o mesmo montante, mas identidades diferentes: **o recibo E1 não liquida FT 11/2026**. FT 10/2026 não foi fornecida como documento autónomo; apenas a sua referência aparece no recibo. A associação de E1 a FT 10/2026 fica registada como referência observada, sem inventar o conteúdo da factura ausente. +- «Original», «Duplicado», carimbos, assinaturas e anotações manuscritas são elementos observados de apresentação/evidência. Não provam, por si só, validade legal, autoria electrónica ou data efectiva do recebimento. Uma anotação de entrega/recepção do papel não substitui a data do recebimento financeiro. + +## Convenções da matriz + +**Base a validar** significa candidato a informação documental, não obrigação legal já aprovada. «Exigir» abaixo refere-se à proposta funcional no momento indicado, sujeita a fechar as decisões. FT = factura; RC = recibo; FR = factura-recibo. «Fotografia: sim» significa conservar o valor utilizado no acontecimento futuro, com origem/versão, sem alterar as fotografias B1 já existentes. Informação desconhecida fica pendente; não vira vazio validado, zero ou valor por omissão. + +### 1. Base de facturação a validar legalmente + +| Campo | Origem / reutilização | Momento em que se propõe exigir | Validação proposta / pendência | Fotografia histórica | +| --- | --- | --- | --- | --- | +| Identidade técnica do documento e tipo | Servidor; catálogo de tipos suportados | Criação do registo documental | ID estável; tipo permitido e âmbito explícito; referência interna B1 nunca vira número fiscal | Sim, identidade e tipo | +| Tenant, empresa emitente e unidade | Contexto e cadastros existentes | Desde o rascunho | Contexto autorizado, unidade da empresa; sem transferência por formulário ou SQL em massa | Sim, IDs e identificação usada | +| Denominação do emitente | Cadastro da empresa | Preparação documental; completude antes de eventual emissão | Reutilizar nome; distinguir designação interna de denominação legal a validar | Sim, nome utilizado e versão | +| Identificação fiscal do emitente (NUIT) | Cadastro futuro da empresa | Antes de eventual emissão, se aplicável | Formato, validade e obrigação dependem do regime/fonte; não inferir do nome ou de exemplos | Sim, se utilizada | +| Morada/localidade/país do emitente | Cadastro da empresa/unidade, conforme papel aprovado | Antes da emissão quando aplicável | Distinguir sede, estabelecimento e local da operação; conteúdo exigível por validar | Sim, dados efectivamente usados | +| Identidade do cliente e nome/denominação | Cadastro de cliente existente | Nome basta para iniciar rascunho; identidade estável desde a associação | Não duplicar por unidade; cadastro mínimo não significa aptidão para emissão | Sim, ID, nome e versão | +| NUIT do cliente / identificação alternativa admitida | Cadastro de contraparte, a especificar | Antes da emissão nos casos aplicáveis | Condições por tipo de cliente/operação, formato e alternativas por validar; não exigir por suposição em todo rascunho | Sim, valor e tipo usados | +| Morada/localidade/país do cliente | Cadastro da contraparte | Antes da emissão quando aplicável | Não confundir morada fiscal, correspondência e instalação; requisitos por validar | Sim, papel e valor usados | +| Série, número e identificação legível | Mecanismo documental futuro, por empresa/tipo e regras aprovadas | No momento de atribuição legal a definir | Unicidade, sequência, exercício/série, concorrência, lacunas e momento de atribuição pendentes; não copiar FT/FR26 como convenção universal | Sim; separado do ID técnico | +| Data/hora de emissão | Operação documental futura | Emissão; não preencher como emissão real no rascunho | Fuso, data admissível e retroactividade por validar; não usar instante B1 como emissão | Sim, data e referência temporal | +| Origem: prestação/rascunho/documento e versão | Relações existentes de A/B1 | Preparação e fixação documental | Mesma empresa/unidade; versão actual, origem válida; múltiplas/parciais dependem de decisão | Sim, IDs e versões | +| Serviço/artigo e código utilizado | Catálogo empresarial existente | Escolha da linha; completude documental | Reutilizar serviço; código do exemplo não é chave universal; não criar stock por haver coluna «Artigo» | Sim, ID, código se usado, nome e versão | +| Descrição da linha | Catálogo, prestação e eventual complemento autorizado | Preparação; completa antes de confirmação/emissão correspondente | Descrição inteligível; preservar complemento sem reescrever cadastro partilhado | Sim | +| Quantidade | Prestação/rascunho | Pode ficar pendente em A; completa na confirmação B1 e preparação documental completa | Decimais exactos; sem coerção/arredondamento; regras para casos negativos/correcções fora deste âmbito | Sim | +| Unidade de medida | Referência parametrizável futura do serviço/linha | Quando necessária à interpretação/emissão da linha | Não presumir UN; vocabulário e obrigatoriedade por operação a validar | Sim, código e significado usados | +| Preço unitário e moeda do preço | Rascunho/acordo de serviço | Preparação dos valores; emissão exige definição aplicável | Precisão de A preservada; moeda desconhecida não é MZN; não apresentar valor definitivo sem moeda definida | Sim | +| Modo de preço: imposto incluído ou acrescido | Escolha/regra aprovada e versionada | Antes de apurar base/imposto/total para emissão | Explícito; não inferir do montante ou do formato da impressão; A/B1 ainda não definem esse modo | Sim, modo e regra | +| Moeda documental | Regra/indicação aprovada para o documento | Pode ser desconhecida em A/B1; definir antes de emissão monetária | Código e aplicabilidade; não inferir moeda funcional, câmbio ou política fiscal | Sim; desconhecimento B1 permanece preservado | +| Base tributável por linha e por tratamento | Cálculo futuro segundo regras aprovadas | Apuramento documental | Separar quantidade × preço, descontos, base e incidência; base aritmética de A não é automaticamente base tributável | Sim, componentes e regra | +| Tratamento fiscal, taxa e fundamento | Regra fiscal versionada, validada para empresa/operação/data | Apuramento/emissão quando aplicável | Distinguir tributado, isento, não sujeito ou outro tratamento aprovado; desconhecido nunca equivale a taxa zero | Sim, classificação, taxa/fundamento e versão | +| Montante de imposto e resumo por tratamento | Cálculo futuro | Apuramento/emissão | Escala, modo e ponto de arredondamento a validar; reconciliar linhas/resumo; não somar moedas distintas | Sim, cálculo e resultados aplicados | +| Total documental | Cálculo das componentes aprovadas | Antes de emissão | Base + imposto e demais componentes apenas conforme regra; explicável pelas linhas; não converter B1 em total fiscal | Sim | +| Autor, instante e versões de dados/regras | Sessão e servidor; referências versionadas | Em cada acto relevante | Autor real e autorização; nenhum privilégio associado ao rótulo impresso «admin» | Sim; sem tokens ou segredos | + +### 2. Requisitos condicionais por documento/operação + +| Campo / condição | Origem | Momento em que se propõe exigir | Validação proposta / pendência | Fotografia histórica | +| --- | --- | --- | --- | --- | +| Vencimento (FT; outros tipos só se houver significado aprovado) | Condições acordadas + data, ou indicação autorizada | Preparação de cobrança/emissão quando aplicável | Distinto da emissão; convenção de dias, excepções e alterações a aprovar. Campo de vencimento do RC E1 não o torna universal | Sim, vencimento original; mudanças futuras rastreáveis | +| Condições/prazo de pagamento (FT) | Acordo/parametrização empresarial versionada | Preparação documental | Coerência com vencimento; não impor «30 dias»; explicitar divergências, sem corrigir silenciosamente | Sim | +| Data/período da prestação | Prestação/acordo de serviço | Quando aplicável ao serviço/documento | Separar início/fim, execução, emissão e competência; não extrair período exacto da palavra «Novembro» | Sim, quando utilizado | +| Desconto comercial/financeiro, em taxa e/ou valor | Acordo e regra aplicável | Se existir desconto | Explicitar por linha/documento, ordem, base e efeito no imposto; zeros dos exemplos não aprovam regra | Sim, componentes e regra | +| Motivo/código de isenção ou outro tratamento | Classificação fiscal validada | Quando esse tratamento for utilizado | Fonte, condições, prova e texto exigível por validar; ausência de imposto não prova isenção | Sim, fundamento e versão | +| Adiantamentos, outras contribuições, encargos/outros serviços | Operação de origem e classificação futura | Apenas se ocorrerem e forem incluídos | Não usar campos genéricos para ajustar total; identidade, sinal, moeda e tratamento próprios; evitar dupla contagem | Sim, se integrarem o documento | +| Identidade do recebimento (RC/FR) | Registo futuro de recebimento, distinto do documento | Antes de documentar um recebimento | Não iniciar transferência; distinguir registo, evidência e verificação; novas regras/permissões por aprovar | Sim, ligação e estado observado | +| Data/hora do recebimento (RC/FR) | Acontecimento e evidência de recebimento | Registo/documentação do recebimento | Separar da emissão do recibo, data bancária, registo no sistema e anotações manuscritas | Sim, datas e proveniência | +| Montante recebido e moeda (RC/FR) | Recebimento identificado | Antes de produzir comprovativo | Positividade/precisão, moeda e evidência conforme regras a aprovar; montante declarado não comprova liquidação externa | Sim | +| Meio de recebimento (RC/FR) | Registo/evidência; catálogo a delimitar | Quando documentado o recebimento e conforme operação | VISA é um exemplo, não fornecedor escolhido; não guardar números completos de cartão ou credenciais | Sim, classificação e referência não secreta necessária | +| Referência/evidência da transacção (RC/FR) | Fonte observada/documento comprovativo | Conforme meio e critérios de verificação aprovados | Identificador contextual, origem, acesso e duplicados; QR/referência para pagar não prova que houve pagamento | Sim, ID da evidência/estado; acesso ao original protegido | +| Documentos afectados: tipo, identidade, série e número (RC/FR) | Referência explícita e documento de origem | Antes de confirmar a afectação | Empresa, contraparte, moeda e documento exactos; FT 10/2026 não é FT 11/2026 | Sim, identidade e referência utilizada | +| Valor de cada afectação (RC/FR) | Relação recebimento ↔ documento | Ao distribuir o recebimento | Uma identidade por afectação; controlar montante disponível, saldo elegível e repetição; casos de excedentes/câmbio dependem de regra | Sim, montante, moeda e origem | +| Valor do documento, pago e pendente à data (RC/FR ou extracto) | Documento e afectações elegíveis no instante | Apresentação do comprovativo/extracto | Não editar livremente; distinguir afectação actual de acumulado; preservar data de corte e não confundir com saldo actual | Sim, se apresentados; valores actuais em consulta separada | +| Conteúdo conjunto de facturação e recebimento (FR) | Documento + recebimento + afectação | Só no caso de uso FR aprovado | Completude de ambos, identidade/correlação, atomicidade e repetição; não contar outra dívida ou outro recebimento pela mesma operação | Sim, ambos e suas relações | +| Original/duplicado, exemplar/página e reimpressão | Política de apresentação/reprodução a aprovar | Representação documental futura | Uma reprodução não cria outra emissão/recebimento; etiquetas e exigências legais por validar | Documento e metadados de reprodução, se aplicáveis | +| Identificação do software/textos legais/certificação | Configuração e requisitos oficialmente validados | Se exigíveis na representação/emissão | Não copiar «processado por computador» ou licença de outro sistema como prova de conformidade | Sim, texto/versão aplicados, se usados | + +### 3. Informação adicional parametrizável para gestão/estatísticas + +Esta classificação é provisória: um campo pode mudar para condicional se um contrato, actividade ou fonte legal validada o exigir. Não construir agora um motor geral de parâmetros nem tornar todas estas colunas obrigatórias. + +| Campo | Origem | Quando exigir | Validação proposta | Fotografia histórica | +| --- | --- | --- | --- | --- | +| Número interno do cliente | Identidade/código do cadastro na empresa | Se usado em pesquisa ou apresentação | Unicidade no âmbito definido; não substituir ID técnico, NUIT ou associação documental | Sim, se impresso/utilizado | +| Contrato e pedido de adesão/encomenda | Referências empresariais futuras | Só para operações que os utilizem | Mesma empresa/contraparte; referência externa com emissor; não implementar contratos recorrentes por causa de E2 | Sim, ligação e referência usadas | +| Morada/local de instalação ou prestação | Cliente/contrato/local da operação | Serviços que precisem dessa distinção | Separar de morada fiscal e de unidade interna; não duplicar o cliente | Sim, se relevante/mostrado | +| Renovação/vigência do contrato/serviço | Acordo e acontecimento próprio | Se houver serviço com vigência | Não derivar automaticamente de emissão ou pagamento sem regra; estado de renovação distinto do recebimento | Sim, informação apresentada | +| Loja/local de atendimento, vendedor e operador | Contexto/identidades e actividade comercial | Conforme necessidade de análise | Loja externa de E2 não corresponde automaticamente à unidade SEGI; operador não significa administrador | Sim, ID/nome usado quando documentado | +| Telefone, email, website e apoio ao cliente | Cadastros/configuração empresarial | Se escolhidos para comunicação/apresentação | Não exigir como dados fiscais por suposição; não copiar contactos de exemplos | Sim, se fizerem parte do documento fixado | +| Logótipo e elementos visuais | Identidade visual configurada | Se usados na representação | Sem alterar significado/tipo; distinguir marca e denominação legal | Versão/activo utilizado, se renderizado | +| Capital social e outros dados institucionais | Cadastro validado do emitente | Se aplicáveis e escolhidos/exigidos | Obrigatoriedade e actualidade por validar; não usar valor de E2 como configuração | Sim, se apresentados | +| Dados bancários, entidade/referência e instruções de pagamento | Configuração própria autorizada | Quando forem apresentadas instruções | Titularidade, moeda, finalidade e controlo de acesso; não importar contas/referências dos exemplos nem pedir credenciais | Sim, dados comunicados naquele documento; segredos excluídos | +| Valor por extenso | Derivado do valor e moeda apresentados | Se adoptado ou exigido após validação | Concordância com montante, moeda, língua e precisão; não é valor independente editável | Sim, se apresentado | +| Observações | Registo autorizado ligado à operação | Se necessário | Não substituir campos estruturados, fundamento fiscal ou decisão; limitar informação pessoal | Sim, texto fixado no documento | +| Extracto: documentos, movimentos, saldo anterior/actual | Consulta derivada de origens e afectações | Se for incluído como informação adicional | Data de corte, sinais, moeda e estados; linhas positivas/negativas de E2 não são prova do plano contabilístico nem novos recebimentos | Sim, se incorporado na representação; não substituir origens | +| Carga/descarga, local e hora | Operação logística, se existir | Só actividade com necessidade identificada | Não impor a serviços por aparecer no template E3; não presumir entrega efectiva | Sim, se utilizados | +| Assinatura, carimbo, recepção do documento e anexos | Evidência específica, não sessão de login | Se existir procedimento aprovado | Distinguir recepção do papel, autorização, recebimento financeiro e assinatura válida; retenção/acesso por aprovar | Referência e metadados da evidência; original protegido | +| QR, portal do cliente, publicidade e rodapé comercial | Configuração de apresentação | Opcional, se autorizado | QR pode ser ligação/instrução, não prova de pagamento; nenhum fornecedor/portal escolhido nesta revisão | Versão do conteúdo/activo, se apresentado | +| Etiquetas analíticas (actividade, centro de custo, projecto, canal) | Referências parametrizadas futuras | Só se houver finalidade de gestão aprovada | Vocabulário e âmbito definidos; não inferir contas nem construir dimensões sem necessidade | Sim se usadas para explicar/classificar a operação; alterações futuras versionadas | + +## Preço, imposto e total: significado a explicitar + +O preço de A/B1 é um preço proposto sem modo fiscal aprovado. Esta revisão não o converte retroactivamente em preço com imposto incluído ou acrescido. + +- **Acrescido:** num exemplo artificial com uma só taxa, sem descontos/encargos, base = quantidade × preço sem imposto; imposto = base × taxa; total = base + imposto, sujeito à política de cálculo ainda por validar. E3 mostra 5 814,00 + 930,24 = 6 744,24, compatível aritmeticamente com 16% acrescido. Isso não determina o regime/taxa aplicáveis a outra operação. +- **Incluído:** no mesmo caso simplificado, preço bruto = base + imposto; para taxa r, base exacta = bruto ÷ (1 + r), antes da política de arredondamento aprovada. E2 apresenta 2 051,72 + 328,28 = 2 380,00 e explicita imposto incluído. A divisão exacta de 2 380 por 1,16 tem mais casas que as impressas; a imagem não revela o algoritmo, ponto ou modo de arredondamento. +- Descontos, múltiplos tratamentos, encargos, adiantamentos, câmbio e eventuais retenções precisam de regras próprias antes de integrar os cálculos. Não inferir a sua aplicabilidade, sinal ou incidência da presença de um campo num modelo. +- Guardar valores de entrada, modo, resultados e versões das regras aplicadas. Escala de armazenamento, precisão de cálculo, arredondamento por linha/documento e apresentação são decisões diferentes. Não inferir «duas casas em todos os cálculos» das duas casas impressas. +- Nunca somar montantes de moedas distintas nem apresentar uma soma de preços sem moeda como total monetário definitivo. Diferenças de arredondamento devem ser explicáveis segundo regra aprovada, sem ajuste silencioso. + +## Identidade, recebimento e afectação + +Modelo conceptual proposto, sem migração ou implementação nesta etapa: + +1. Cada documento tem ID técnico estável e referência legível contextualizada por empresa, tipo, série e número. A série não é presumida como ano em todos os sistemas. A apresentação de E2 não determina como separar a série FR26 de outros identificadores. +2. O recebimento tem identidade própria, moeda, montante, datas, origem/evidência e estado. Um RC/FR liga-se ao acontecimento efectivamente documentado; não cria outro recebimento ao ser impresso, repetido ou importado. +3. A afectação tem ID próprio e liga recebimento a documento exacto com montante/moeda. Suportar conceitualmente pagamentos parciais e distribuição por documentos sem duplicação; a cardinalidade legal/operacional de recibos, recebimentos e adiantamentos deve ser aprovada antes de implementar. +4. Controlar, conforme política aprovada, soma das afectações por recebimento e saldo elegível do documento, concorrência e idempotência. Repetição de importação/referência não identifica automaticamente a operação sem fonte e âmbito. Excedentes, diferenças cambiais e correcções permanecem pendentes. +5. Documento com referência externa ainda não resolvida fica pendente. Em E1, conservar «FT / 2026 / 10» e procurar apenas essa identidade no âmbito certo. Sem FT 10/2026 disponível, não associar FT 11/2026 nem criar uma factura completa fictícia. +6. Em FR, ligar explicitamente o componente documental, o recebimento e sua afectação. Se for aprovado um caso de recebimento integral imediato, garantir atomicidade e repetição segura sem duplicar efeitos num recibo separado. A imagem, por si só, não aprova o caso de uso nem comprova reconciliação externa. +7. Saldo operacional, evidência de recebimento, emissão fiscal e contabilização são estados distintos. Extracto ou total pendente zero não demonstra reconciliação bancária ou conformidade contabilística. + +## Decisões pendentes + +| Decisão | O que é necessário fechar | +| --- | --- | +| Fontes legais e responsável pela validação | Regime da empresa, tipos documentais admitidos, operações/períodos abrangidos, fontes oficiais com vigência/artigos e validação fiscal competente | +| Campos obrigatórios por tipo/caso | Denominação, NUIT, moradas, identificação de cliente particular/empresa, dados do serviço, textos e eventuais excepções; separar mínimo de rascunho e aptidão para emissão | +| Identidade documental e representação | Séries/numeração, atribuição, sequência/lacunas, data/hora, exemplares, duplicados, software/certificação, impressão e arquivo quando aplicáveis | +| Preços e descontos | Modo incluído/acrescido por âmbito aprovado, descontos, encargos, incidência, taxas/fundamentos, moeda e arredondamento; não adoptar valores dos exemplos como regra | +| Datas e condições | Emissão, vencimento, prazo/convenção de dias, período do serviço e datas de recebimento; tratamento da divergência entre prazo e data sem alteração silenciosa | +| Recibo e factura-recibo | Condições de utilização, data, meios/evidências, referência da factura, recebimentos parciais/múltiplos, adiantamentos, excesso e prevenção de dupla documentação | +| Gestão e estatísticas | Quais campos adicionais devem existir no primeiro caso de uso, quais aparecem no documento e quais ficam só em consulta; evitar cadastro obrigatório excessivo | +| Fotografia e protecção de dados | Conteúdo fixado, versões, retenção/acesso às evidências, elementos visuais e tratamento posterior sem alterar origem; nenhum segredo no histórico | +| Permissões futuras | Quem prepara/verifica dados, emite, regista recebimento, afecta ou gere esses poderes; direitos de A/B1 não os concedem; aplicações exigem confirmação própria | +| Contabilidade | Plano de contas, reconhecimento, moeda funcional, câmbio, datas/períodos e regras de processamento continuam pendentes; não são resolvidos pelo layout dos exemplos | + +## Próximo incremento pequeno proposto — preparação e verificação documental + +**Proposta para aprovação, sem execução autorizada:** enriquecer apenas os cadastros e a preparação do rascunho com o subconjunto de campos que vier a ser aprovado, e mostrar uma verificação de completude documental separada da confirmação interna B1. + +Antes do prompt de implementação, aprovar: (a) primeiro tipo/caso de uso, propondo FT de serviço pontual; (b) lista exacta de campos e origem, incluindo denominação/morada/identificação fiscal nos casos validados; (c) datas/período/condições necessários; (d) como registar o modo de preço proposto e as pendências de moeda/imposto, sem motor fiscal; (e) permissões de edição desses novos dados, sem herança presumida. Recibos e FR ficam especificados, mas não implementados nesse pequeno incremento. + +Resultado verificável proposto: reutilizar o cliente criado só com nome, completar os dados aprovados uma vez, seleccionar esse cliente num novo rascunho e mostrar «dados por completar», «dados preenchidos, validação pendente» ou outro rótulo aprovado. **Nenhum estado deve dizer «apto para emissão fiscal» enquanto faltarem regras/fontes validadas.** Não emitir, numerar fiscalmente, produzir PDF de factura, receber, afectar valores ou contabilizar. + +Manter os documentos B1 existentes imutáveis; enriquecimento posterior dos cadastros não lhes acrescenta dados. Se for necessária uma fotografia mais rica em operações futuras, especificar nova versão do esquema, compatibilidade e migração aditiva antes de implementar. Não reconstruir ou promover confirmações B1 aceites a facturas. + +Provas futuras desse incremento: reutilização sem duplicação de clientes; campos condicionais sem bloquear o início do rascunho; desconhecido distinto de zero/preenchido; datas distintas; acesso cruzado recusado; fotografia B1 inalterada; nenhuma emissão, novo recebimento ou lançamento. Só preparar o prompt executável depois de aprovado este subconjunto e os direitos correspondentes. diff --git a/docs/CATALOGUE_ACCOUNTING_CLASSIFICATION_SPEC.md b/docs/CATALOGUE_ACCOUNTING_CLASSIFICATION_SPEC.md new file mode 100644 index 0000000..2eb3bbe --- /dev/null +++ b/docs/CATALOGUE_ACCOUNTING_CLASSIFICATION_SPEC.md @@ -0,0 +1,133 @@ +# Classificação contabilística do catálogo — proposta do próximo incremento + +**Actualização posterior:** o utilizador autorizou explicitamente a execução do primeiro incremento com as três salvaguardas. A implementação, provas e limites estão em [CATALOGUE_ACCOUNTING_DELIVERY.md](CATALOGUE_ACCOUNTING_DELIVERY.md). As quatro concessões iniciais foram posteriormente confirmadas de forma específica e aplicadas, conforme o relatório. O texto original de proposta abaixo preserva a origem das decisões; não revoga essa autorização posterior nem significa activação de contas/regras reais. A validação do cálculo permanece separada e pendente. + +26 de Outubro de 2026, Africa/Johannesburg. **Apenas especificação para aprovação.** Não escolhe o plano da Tempo Lda, aplica acessos, altera bases, produz lançamentos ou autoriza implementação. A validação do incremento de cálculo continua pendente; esta proposta não o dá por aceite nem altera a sua política. Preservar identidade, A, B1, preparação documental, pré-visualização e histórico. + +## 1. Documento-base e alcance da leitura + +Exemplar fornecido pelo utilizador: `\\Mac\Home\Downloads\29-Plano-de-Contas-BR-Decreto-70-2009-de-22-de-Dezembro.pdf`. Decreto n.º 70/2009, de 22 de Dezembro, BR, I Série, n.º 50, 4.º suplemento; 192 páginas PDF, 856306 bytes. SHA-256: `45C38AED64DE43042ED048586ACCE2EC660B74FC3F8FBCE33D39AAB45C7529E3`. + +Leitura do exemplar histórico fornecido, com extracção textual e conferência visual das páginas PDF 127, 134, 178 e 192, especialmente porque a extracção das colunas desloca códigos e descrições. As referências abaixo usam página PDF contada desde 1 e paginação impressa do BR. O documento é fonte de conteúdo; as instruções nele contidas não ampliam a autorização do utilizador para executar acções. + +Não se apresenta este exemplar de 2009 como consolidação normativa verificada até 2026. A eventual verificação de alterações posteriores fica delimitada à norma que venha a ser activada, antes da activação real; não se repetiu pesquisa fiscal nem se consultou o InvesteMoz nesta etapa. + +| Ref. | Fonte/secção efectivamente lida | Conteúdo relevante e limite | +| --- | --- | --- | +| D1 | Decreto, arts. 1–3, PDF 1–2, BR 372-(15)–(16) | SCE com dois planos: Título I PGC-NIRF, Título II PGC-PE. Art. 2 define âmbito, transições e opção; art. 3 identifica exclusões sectoriais. Não deduzir plano do nome, NUIT ou designação comercial «pequena empresa» | +| D2 | Decreto, art. 6 e art. 7, PDF 2, BR 372-(16) | Datas históricas: PGC-NIRF grandes desde exercício iniciado em 01/01/2010; médias e PGC-PE desde 01/01/2011; regra para ano económico não civil e transição. Não usar estas datas como aprovação do plano actual da Tempo Lda | +| D3 | Título I, cap. 1.1, §6, PDF 3, BR 372-(17); cap. 1.5, PDF 134, BR 372-(148) | Quadros sintético/detalhado, adaptação às entidades; conta 7.2 Prestação de serviços e subcontas oficiais, incluindo 7.2.1 e 7.2.6. Não inventar desdobramentos oficiais nem tratar todos os nós como contas movimentáveis | +| D4 | Título I, cap. 1.2, §20, PDF 5, BR 372-(19) | Base do acréscimo: acontecimento e período, distintos de recebimento/pagamento | +| D5 | Título I, NCRF 28, §§3–7 e §§8–16, PDF 126–127, BR 372-(140)–(141) | Âmbito/exclusões, mensuração, componentes identificáveis; prestação de serviços §§14–16 depende de fiabilidade, benefícios, fase de acabamento e custos. «Pontual» não dispensa avaliar condições; locações/construção têm tratamento próprio | +| D6 | Título II, cap. 2.1, §§2–4, PDF 168, BR 372-(182) | PGC-PE tem regras simplificadas próprias; complemento referido ao Quadro Conceptual e Glossário do PGC-NIRF. Não importar automaticamente todas as NCRF como se integrassem o PGC-PE | +| D7 | Título II, cap. 2.2, §16, PDF 169, BR 372-(183) | Base do acréscimo no corpo do texto. O índice da página anterior apresenta numeração diferente; referência aqui é ao parágrafo efectivamente impresso, não apenas ao índice | +| D8 | Título II, cap. 2.4, PDF 178, BR 372-(192); cap. 2.6, PDF 191–192, BR 372-(205)–(206) | 7.2 Prestação de serviços: trabalhos/serviços ligados aos objectivos da empresa; 7.5 rendimentos suplementares e 7.6 outros rendimentos exigem distinguir natureza. 7.2.1 descreve expurgo de IVA de serviços registados com imposto incluído: não fixa taxa nem autoriza esse modo no cálculo actual | + +## 2. Base existente e fronteiras + +Revisão por leitura de `ServiceWorkflow`, `ServicePermissions` e da migração de A: `a_services` é catálogo da empresa, reutilizado entre unidades, com ID, nome, descrição e versão/histórico. Prestações e rascunhos pertencem à unidade autorizada e guardam referências/valores de origem. Categorias contabilísticas, plano empresarial e associações contabilísticas não estão implementados no catálogo actual. Não recriar serviços, clientes, unidades, histórico ou mecanismos de autorização. + +Começar pelo serviço pontual já suportado. O próximo incremento proposto apenas permite preparar, validar e consultar a associação contabilística do catálogo; não implementa reconhecimento ou lançamentos. Mercadorias ficam previstas pelo tipo de item e papéis contabilísticos futuros, sem novos cadastros duplicados, stock, compras, inventário ou custo das vendas nesta entrega. + +Três associações independentes: + +| Dimensão | Pergunta | Saída proposta | O que não determina | +| --- | --- | --- | --- | +| Classificação contabilística | Qual a natureza económica e quais contas/papéis são adequados? | Plano/versão, categoria, regra e conta aprovada para cada papel | Taxa/tratamento de IVA ou data de reconhecimento | +| Enquadramento fiscal | Qual o tratamento da empresa/operação e a taxa aplicável? | Perfil fiscal próprio, fundamento, âmbito e vigência | Conta de rendimentos ou momento de reconhecimento contabilístico | +| Reconhecimento | Que acontecimento e evidência satisfazem as condições do normativo? | Avaliação própria de condições, mensuração e período | Não se conclui pela existência de factura, B1 ou recebimento | + +Não assumir 16% para serviços. Não extrair taxa de conta, categoria contabilística, palavras no nome ou código `7.2.1`. O cálculo exacto e a truncagem operacional permanecem nos seus perfis/políticas já delimitados; este desenho não os altera e não escolhe montante de lançamento a partir de um total documental proposto. + +## 3. Proposta técnica de parametrização + +Estas entidades são conceitos propostos, não tabelas criadas ou migrações autorizadas. + +| Elemento | Informação mínima | Âmbito e regra | +| --- | --- | --- | +| Referência de plano | Identidade PGC-NIRF/PGC-PE, versão documental, hash/fonte, estrutura oficial e estado da verificação | Definição normativa reutilizável, sem partilhar configurações empresariais; códigos sempre qualificados pelo plano/versão, nunca só pelo texto do código | +| Plano adoptado pela empresa | Empresa, plano/versão, fundamento, período de aplicação, responsável, decisão e prova | Uma selecção explícita validada; sem escolha automática. Mudança cria versão e exige revisão das associações, sem converter o passado | +| Conta empresarial | Plano/versão, código oficial ou desdobramento empresarial distinguido, descrição, pai, natureza, papel, possibilidade de movimento e vigência | Conta pertence à configuração da empresa; conta agregadora não se torna movimentável por omissão. Desdobramento novo exige validação de compatibilidade, sem ocupar código reservado | +| Categoria de catálogo | ID, empresa, nome, natureza inicial `service`; previsão de `goods` futura; versão | Reutilizada entre unidades da mesma empresa. Classificação analítica do catálogo não é automaticamente conta nem tratamento de IVA | +| Associação/regra | Serviço existente ou categoria, versão da regra, plano/conta para papel `service_revenue`, condições/exclusões, vigência e prova | Específica da empresa. Regra do serviço pode substituir a categoria apenas por decisão explícita validada; sem preferência silenciosa entre regras concorrentes | +| Decisão de validação | Proponente, responsável autorizado, data, motivo, evidência, versão aprovada e início de aplicação | Rascunho → validada/activável ou recusada; alteração origina nova versão. Aprovação de classificação não aprova fiscalidade ou reconhecimento | +| Resolução por operação futura | ID e versão do serviço/categoria/associação, plano/conta, papel, data de referência, responsável e estado de excepção | Conservar o que foi efectivamente usado, não recalcular pela regra actual; fotografia própria fora de B1 existente | + +Papéis permitem evoluir para rendimentos de mercadorias, inventário e custo, mas nenhuma conta ou regra desses papéis será activada agora. Não criar um motor geral de scripts contabilísticos: condições iniciais são dados delimitados (empresa, tipo serviço, categoria/serviço, papel, intervalo de vigência e exclusões). Fórmulas executáveis, débitos/créditos e contas de contrapartida ficam fora deste incremento. + +### Resolução e vigência propostas + +1. Validar contexto, empresa e acesso; reutilizar ID/versão do serviço. Não permitir associação a categoria/conta/plano de outra empresa. +2. Exigir plano empresarial aprovado e uma data de referência explicitamente definida para a classificação. A data é dado próprio, não a data do reconhecimento, exigibilidade de IVA ou data do computador por omissão. Se faltar, apresentar candidato sem o declarar aplicável. +3. Só uma excepção específica por serviço **aprovada, vigente na data de referência e compatível** pode substituir a regra da categoria. Proposta pendente, recusada ou com vigência futura não substitui a regra actualmente válida. Na ausência de excepção aplicável, resolver pela regra da categoria aprovada e vigente. A herança deve estar aprovada e visível. Duplicidade, sobreposição ou incompatibilidade geram conflito explícito; não escolher silenciosamente nem ocultar o conflito com uma regra alternativa. +4. Validar papel, estado da conta e versão do plano. Conta agregadora ou desdobramento não aprovado não permite resolução como pronta. +5. Mostrar conta/regra/fontes e motivo da sugestão. Guardar a decisão e versões na futura operação por acção autorizada, sem produzir lançamento ou concluir reconhecimento. + +O próximo incremento pequeno propõe um único nível de categorias e associação explícita de cada serviço a uma categoria, com excepção específica versionada por serviço. Hierarquias complexas e regras por unidade só entram mediante necessidade futura demonstrada. A classificação da empresa não concede acesso a operações de unidades não autorizadas. + +**Mudança de categoria com efeito contabilístico:** a ligação do serviço à categoria faz parte da classificação versionada. Se uma mudança afectar a conta herdada ou outra componente da classificação, exige proposta, vigência e validação por Samira antes de produzir efeito. A edição corrente do catálogo não pode activar essa mudança, substituir a ligação aprovada ou contornar a validação. Até à entrada em vigor da nova versão aprovada, preserva-se a classificação aplicável anterior e mostra-se a proposta separadamente. As operações históricas conservam as versões utilizadas. + +**Subconjunto inicial de contas:** importar/configurar apenas as referências PGC-NIRF necessárias ao serviço pontual e ao papel de rendimento aprovado, com fonte, versão e hierarquia necessárias identificadas. Não carregar todo o plano nem criar contas ou desdobramentos por suposição. Categorias e associações pertencem à empresa e são reutilizáveis entre unidades; essa reutilização não amplia permissões sobre operações de outras unidades. + +## 4. Automação após validação e excepções + +| Situação | Preenchimento possível após validação | Intervenção/pendência | +| --- | --- | --- | +| Serviço com regra única vigente aprovada | Reutilizar categoria, papel, conta e versões; explicar origem; conservar a resolução | Não atribuir IVA nem reconhecer rendimento por este preenchimento | +| Novo serviço numa categoria com herança aprovada | Sugerir associação da categoria, indicando que é herança | Se a actividade/natureza não coincidir, exigir revisão; o nome sozinho não comprova adequação | +| Conta/plano em falta, expirado, substituído ou sem fundamento | Mostrar informação já conhecida e motivo do bloqueio | Responsável resolve antes de marcar a classificação aplicável | +| Serviço entre actividade principal, rendimento suplementar, locação, construção ou operação composta | Mostrar alternativas e condições documentais | Rever natureza/âmbito; não escolher 7.2 por ser chamado «serviço» | +| Falta de evidência de execução, fiabilidade ou período | Conservar classificação aprovada do catálogo | Reconhecimento continua pendente, mesmo com factura/B1/pagamento | +| Regra alterada após preparar operação | Assinalar nova versão disponível, sem substituir a consultada | Revisão explícita; versão anterior identificada como histórica, sem reescrever lançamentos ou B1 | +| Operação anterior sem classificação preservada | Mostrar «não capturada» | Eventual classificação posterior será decisão nova datada e auditada, nunca fotografia retrospectiva inventada | +| Perfil fiscal ausente ou diferente entre operações do mesmo serviço | Conservar a classificação contabilística adequada | IVA fica pendente ou usa perfil fiscal independentemente validado; nenhuma taxa herdada da conta | + +## 5. Exemplo sintético, sem lançamentos + +Empresa Exemplo, Unidade de Teste, serviço existente `S-TESTE` — «Apoio administrativo pontual». Categoria analítica proposta «Serviços da actividade normal». Não são dados da Tempo Lda. + +Para comparar alternativas, considerar separadamente um cenário com PGC-NIRF e outro com PGC-PE. Ambos mostram **7.2 — Prestação de serviços** nos quadros lidos, mas são referências distintas: `(PGC-NIRF, versão do exemplar, 7.2)` e `(PGC-PE, versão do exemplar, 7.2)`. Não seleccionar um deles nem declarar 7.2 movimentável sem aprovação do plano e da conta empresarial concreta. Se necessário desdobramento empresarial, código e compatibilidade ficam por validar; não inventar um código oficial. + +Depois de um responsável validar a natureza de actividade normal, plano, conta e regra de categoria `R-SERVICO-v1`, o sistema pode preencher uma **proposta de classificação** para o papel de rendimento. Se depois surgir `R-SERVICO-v2`, a operação que utilizou v1 conserva v1 e mostra a alteração; nova operação só resolve v2 na vigência adequada. Não alterar B1 nem rascunhos antigos automaticamente. + +No cenário PGC-NIRF, a análise de reconhecimento teria de avaliar as condições dos §§14–16 da NCRF 28, incluindo fase e custos, não apenas «concluído» ou «facturado». No cenário PGC-PE, usar as bases próprias (cap. 2.2, §16) e validar o tratamento específico; não aplicar a NCRF 28 por simples identidade de código de conta. + +Mesmo serviço/conta pode surgir com enquadramentos fiscais distintos conforme a operação: o exemplo deixa o perfil IVA por validar. Não inclui taxa, cálculo, valor contabilizado, débitos/créditos ou lançamento. Uma confirmação interna e um eventual recebimento não resolvem as pendências de reconhecimento. + +## 6. Próximo incremento pequeno proposto + +Só após aprovação: preparar configuração empresarial do plano validado, selecção de contas autorizadas para o papel de rendimento do serviço pontual, categorias simples e associações versionadas do catálogo. Reutilizar os serviços existentes e apresentar uma resolução explicável, com pendências e histórico. A captura da versão utilizada numa operação deve ter contrato definido agora, mas a sua implementação concreta exige delta próprio que preserve B1 e os modelos actuais; nenhuma alteração de esquema está autorizada por esta especificação. + +Ecrãs propostos: (1) plano e contas da empresa, com fundamento/versão; (2) categorias e associação do serviço existente, com proposta e validação; (3) consulta da resolução e histórico/excepções. Sem ecrã de diário, lançamentos, stock, compras ou fecho. Não construir todo o plano/motor de reconhecimento nesta entrega. + +Critérios de aceitação futuros: plano não presumido; serviço existente reutilizado; conta e plano da empresa correcta; leitor não altera; proponente não aprova sem direito próprio; herança/excepção visíveis; ambiguidades e falta de dados negadas por omissão; regra alterada não reescreve versões antigas; IVA nunca derivado da conta; factura/B1/pagamento nunca reconhecem automaticamente; B1 intacto; demonstração só sintética em ambiente isolado. Testes não executados nesta etapa documental. + +## 7. Decisões pendentes, reduzidas + +### Confirmações posteriores do utilizador — 26/10/2026 + +- **Plano actualmente utilizado pela Tempo Lda: PGC-NIRF**, confirmado expressamente pelo utilizador. Não foi escolhido por inferência do nome ou dimensão comercial. Esta informação substitui a pendência de identificar qual dos dois planos é utilizado; não comprova, por si só, a edição/consolidação normativa, o período de adopção ou a configuração concreta de contas da empresa. +- **Responsável pela validação dos enquadramentos contabilísticos: Samira**, indicada pelo utilizador. A indicação de responsabilidade não aplica concessões, não altera a conta existente nem aprova automaticamente contas ou associações propostas. A conta exacta e os direitos/âmbitos serão apresentados quando se fechar a matriz de acessos; não se infere identificação por nome. +- **Separação de funções confirmada:** a consulta actualmente concedida a Samira não inclui validação contabilística. O futuro poder de validar será próprio, com acções e âmbito delimitados e confirmação específica antes da aplicação. Não implicará automaticamente edição de propostas, edição do catálogo, administração ou gestão de acessos. A proposta deve permitir validar ou recusar uma versão identificada sem modificar o seu conteúdo; uma correcção exige nova proposta por quem tenha o direito correspondente. +- Mantém-se a proposta de categoria como regra-base, excepção explícita por serviço e vigência versionada, preservando operações históricas. A identificação de quem propõe e de quem apenas consulta continua pendente. A validação do cálculo permanece separada. + +### Desenho fechado pelo utilizador — confirmação posterior + +Esta confirmação substitui as pendências anteriores relativas a proponente, herança e correcções: **Osmane prepara; Samira valida ou recusa uma versão identificada, sem editar o seu conteúdo. A categoria fornece a regra-base, com excepções explícitas por serviço e vigência definida. Correcções geram nova versão, sem reescrever o histórico.** O plano actualmente utilizado é PGC-NIRF, conforme confirmação anterior. + +O desenho está fechado para preparar o prompt de implementação; não é, por si só, autorização de implementação ou de aplicação de acessos. As novas permissões continuam sujeitas a apresentação concreta de acções, contas e âmbitos e confirmação específica antes da aplicação. Validar não concede edição, administração ou gestão de acessos. A consulta actual permanece inalterada. A validação do cálculo mantém-se separada e pendente. + +Salvaguardas posteriores incorporadas ao desenho fechado: apenas excepções aprovadas/vigentes/compatíveis têm precedência; mudança de categoria que afecte classificação exige versionamento, vigência e validação; categorias/associações empresariais não concedem acesso entre unidades; catálogo inicial limitado ao subconjunto necessário do PGC-NIRF com fonte e versão. Estas salvaguardas devem integrar o prompt de execução sem reabrir as decisões anteriores e sem aplicar concessões nesta etapa. + +### O que resta delimitar + +1. **Versão e configuração do PGC-NIRF:** identificar edição/consolidação, período de adopção e contas/desdobramentos efectivamente utilizados. Confirmar apenas fundamentos e alterações relevantes antes da activação; não voltar a pedir a escolha PGC-PE/PGC-NIRF já resolvida. +2. **Procedimento de validação por Samira:** delimitar a evidência e o procedimento para validar contas, desdobramentos e associações. Não voltar a perguntar quem será responsável, nem inventar cargo profissional ou obrigação de revisão por duas pessoas. +3. **Aplicação concreta dos acessos:** funções já definidas — Osmane prepara; Samira valida ou recusa. Direitos separados por empresa para consultar, propor/editar rascunho e validar/recusar uma versão identificada. Identificadores candidatos `catalogue_accounting.view`, `.propose`, `.approve`; apresentar contas existentes, acções e âmbitos concretos para confirmação específica antes de conceder. `.approve` não inclui `.propose`, edição, administração ou gestão de acessos. A consulta actual de Samira permanece inalterada e não concede validação. Não inferir direitos de `services.edit/manage`, de permissões fiscais ou de configuração visual; a consulta contabilística específica também não se presume a partir da consulta actual de outras áreas. +4. **Detalhe de vigência para execução:** herança por categoria, excepção explícita por serviço, vigência definida e novas versões para correcções já estão fechadas. Resta explicitar no prompt os dados/evidências de referência usados para resolver a vigência, sem voltar a submeter esse desenho a decisão. O recorte de catálogo não aprova política de reconhecimento ou geração de lançamentos. + +Já resolvido e não submetido de novo: catálogo da empresa reutilizável entre unidades; tenant/empresa/unidade distintos; classificação contabilística separada de IVA e reconhecimento; valores exactos, desconhecido diferente de zero e histórico preservado. A validação do cálculo entregue permanece independente e pendente. + +## 8. Alterações realizadas nesta etapa + +Criado apenas este documento de proposta e materiais temporários de leitura em `storage/app/`, fora dos ficheiros de aplicação. PDF original preservado. Não se alteraram código, bases, permissões ou entregas aceites; não foram executados testes, migrações, cálculos ou lançamentos. Nenhuma implementação ou publicação foi iniciada. diff --git a/docs/CATALOGUE_ACCOUNTING_DELIVERY.md b/docs/CATALOGUE_ACCOUNTING_DELIVERY.md new file mode 100644 index 0000000..3e7621c --- /dev/null +++ b/docs/CATALOGUE_ACCOUNTING_DELIVERY.md @@ -0,0 +1,101 @@ +# Classificação contabilística do catálogo — entrega local + +## Aceitação funcional e encerramento + +Em 26/10/2026, o utilizador informou que entrou na aplicação e verificou o percurso. À pergunta de confirmação da aceitação funcional para registar o encerramento e criar o checkpoint Git local, respondeu **«sim»**. Fica aceite e encerrado este primeiro incremento, no âmbito entregue e com os limites documentados abaixo. O checkpoint preserva a implementação e as dependências locais necessárias, sem credenciais, bases ou dados operacionais locais. + +A validação do cálculo fiscal permanece **separada e pendente**. A presença do seu código no checkpoint preserva a base técnica existente; não constitui aceitação fiscal, activação de perfil real, autorização de emissão ou de lançamentos. Nenhum avanço para outro incremento ou publicação foi autorizado. + +O texto de entrega seguinte descreve o estado técnico anterior à aceitação; esta secção regista a confirmação posterior, sem alterar as provas. + +26 de Outubro de 2026, Africa/Johannesburg. Implementado apenas o primeiro incremento autorizado, com as três salvaguardas de [CATALOGUE_ACCOUNTING_CLASSIFICATION_SPEC.md](CATALOGUE_ACCOUNTING_CLASSIFICATION_SPEC.md). Não constitui aceitação pelo utilizador; a validação do cálculo permanece separada e pendente. + +## Funcionalidade entregue + +- Propostas imutáveis e versionadas de plano PGC-NIRF, contas empresariais, categorias/regras-base, ligações de serviços a categorias e excepções explícitas por serviço. Reutiliza `a_services`; não criou outro catálogo de serviços. +- Guardar proposta em preparação, submeter uma versão fixa e validar ou recusar com motivo. Validação não edita conteúdo. Correcção gera outra versão, com referência à anterior, e exige nova submissão/decisão; não herda aprovação. Versão ultrapassada não pode ser submetida ou decidida como se fosse a actual. +- Vigência com início explícito e termo opcional inclusivo. Revisão futura ou pendente não substitui regra válida. Intervalos sobrepostos exigem substituição explícita da versão aprovada; conflitos não escolhem automaticamente o maior número de versão. Substituição aprovada termina o intervalo anterior desde o início da nova vigência, sem alterar a linha histórica; a versão substituída não reaparece silenciosamente quando a substituta termina. +- Categoria fornece regra-base. Só excepção aprovada, vigente e compatível a substitui. Uma excepção vigente com dependência incompatível mostra pendência/conflito, sem fallback silencioso. Ausência de excepção aplicável usa a categoria aprovada vigente. Mudança de categoria é proposta do tipo ligação, não campo editável pela API corrente de serviços. +- Consulta por serviço e data explícita, com origem, conta, versões e pendências. Plano ou conta incompatíveis/agregadores não produzem classificação pronta. Não presume data do computador, taxa de IVA ou reconhecimento. +- Resoluções append-only por operação autorizada, com serviço/versão, regra/categoria/conta/plano/decisão e data de referência preservados. A gravação exige a revisão da classificação consultada e a versão da operação; mudança entretanto gera `409`, sem substituir silenciosamente o resultado. Não altera rascunho, fotografia B1 ou cálculo. +- Histórico consultável apenas com consulta contabilística e acesso à operação/unidade actual. Não reconstrói classificação nos registos antigos; histórico vazio significa ausência de captura. Rascunho B1 confirmado recusa captura retroactiva. + +Não há lançamentos, débitos/créditos, reconhecimento automático, contas de contrapartida, stock, compras, inventário ou fecho. Perfil/tratamento de IVA continua separado da classificação contabilística. Não foram alterados o núcleo de cálculo, a sua política ou a pré-visualização fiscal. + +## Fonte e configuração inicial + +Decreto n.º 70/2009, exemplar fornecido, cap. 1.5, PDF 134 / BR 372-(148), com hierarquia 7 — Rendimentos e ganhos → 7.2 — Prestação de serviços. Versão de referência: `Decreto70/2009-PGC-NIRF-PDF134-BR372(148)`; SHA-256 do PDF `45C38AED64DE43042ED048586ACCE2EC660B74FC3F8FBCE33D39AAB45C7529E3`. + +Esse é o subconjunto documental inicial, apresentado como referência agregadora não movimentável. Não se importou o plano inteiro. Desdobramento empresarial só é proposto com código, designação, evidência e aprovação; o sistema não inventa uma conta para a Tempo Lda e recusa usar os códigos reservados 7.2/7.2.1/7.2.6 como novos desdobramentos empresariais. A versão do exemplar de 2009 não é apresentada como consolidação normativa actual verificada. A matriz original identifica também os fundamentos de separação de classificação, reconhecimento e IVA; não se repetiu investigação nem se consultou o portal nesta implementação. + +O plano actualmente utilizado pela empresa foi confirmado como PGC-NIRF, mas datas de adopção, contas empresariais e enquadramentos concretos serão propostos por Osmane e validados/recusados por Samira no circuito. Não foram criadas propostas ou aprovações reais para preencher essas lacunas por suposição. + +## Acessos confirmados e efectivamente aplicados + +Após conferência das contas existentes e confirmação específica do utilizador, aplicadas exactamente quatro concessões na Tempo Lda, tenant 1/empresa 1, sem unidade: + +| Conta existente | Direitos novos | Acções | +| --- | --- | --- | +| ID 1 — Osmane Nala | `catalogue_accounting.view`, `catalogue_accounting.propose` | Consultar, preparar novas versões, submeter e guardar resoluções nas operações de unidades já autorizadas | +| ID 2 — Samira Nal | `catalogue_accounting.view`, `catalogue_accounting.approve` | Consultar e validar/recusar versões submetidas, sem editar/preparar | + +Nenhum `.approve` foi dado a Osmane, nenhum `.propose` a Samira; não se acrescentaram direitos de unidade, gestão de acessos, emissão ou reconhecimento. Todos os direitos anteriores permaneceram iguais. [Verificação posterior das concessões](proofs/accounting-access-results.json). + +O código aplica permissões, não privilégios por nome/email. A ferramenta local de concessão recebe IDs explícitos e requer pertenças/direitos de consulta existentes; não cria contas ou pertenças. Novas concessões continuam a exigir apresentação e confirmação específicas. A gestão geral existente não ganhou automaticamente capacidade de delegar estes novos direitos. + +## Migração e preservação + +Delta apresentado antes de aplicar: `2026_10_26_040000_create_catalogue_accounting.php` cria `ca_proposals`, `ca_submissions`, `ca_decisions`, `ca_resolutions`, `ca_commands`, relações compostas, unicidades, checks e triggers. A restrição de âmbito de `permission_grants` foi alargada para aceitar os três identificadores empresariais, sem os conceder na migração. + +Aplicada primeiro em `sgf_tempo_test`, depois em **sgf_tempo_dev** pelo wrapper e proprietário separados. Verificado que era a única migração pendente. Sem reset/fresh de desenvolvimento. Conteúdos existentes e ficheiros do cálculo foram comparados por hashes; permaneceram iguais. As cinco tabelas novas em desenvolvimento continuam com **zero linhas**, mesmo após os quatro acessos. [Preservação da migração](proofs/accounting-dev-preservation.json); [preservação após concessões](proofs/accounting-access-results.json). + +Relações compostas e guardas de inserção recusam referências de outra empresa e capturas de outra unidade/operação. Triggers append-only impedem actualização, transferência em massa e apagamento de propostas, decisões, comandos e resoluções. Submissões/decisões também verificam versão e transição na base. Não se declara isso como RLS ou protecção contra administrador da base. Auditoria e comandos são transaccionais; alterações autorizadas são serializadas pelo bloqueio da empresa, com revalidação de contexto/permissões. O contexto do navegador não constitui autorização. + +## Testes, compilação e navegador + +Suite dirigida inicial: **61 testes / 783 asserções**, passada, cobrindo classificação, A, B1, identidade, isolamento e guardas. Após a protecção adicional da revisão consultada, repetidos apenas os testes afectados de classificação: **9 testes / 397 asserções**, passados. Compilação final Vite 8.3.5 passou. Não se alteraram ferramentas ou dependências, não se repetiu o cálculo fiscal como nova validação. + +Cobertura nova inclui separação de funções; recusa e nova versão; submissão/decisão antigas; repetição de comandos com conflito de conteúdo; herança e excepções pendentes/recusadas/futuras; início de vigência; sobreposição e substituição explícita; mudança de categoria sem bypass pela edição do catálogo; conta agregadora; conta/plano incompatível; referências alheias; revogação no pedido seguinte; isolamento de unidades; transferência em massa e inserção directa cruzada; B1 preservado; data em falta; captura de classificação diferente da consultada recusada. Não houve implementação ou geração de lançamentos. + +Prova concorrente adicional: **dois processos PHP sobrepostos**, um aprova e outro recusa a mesma versão. Um recebeu 200 e o outro 409; existe uma única decisão. [Recibo da concorrência](proofs/accounting-concurrency.json). + +No Edge, instância `http://127.0.0.1:8001`, ligada apenas a `sgf_tempo_test`, sessão/cache isolados e CSRF activo. **Login real com duas identidades sintéticas distintas**, não actingAs como substituto da demonstração. Não se usaram contas reais ou operações fictícias na Tempo Lda. [Registo da observação](proofs/accounting-browser-results.json). + +Percurso observado: + +1. Login do preparador sintético → Empresa Horizonte — Demonstração → Unidade Central — Demonstração → **Classificação contabilística**. +2. Na categoria sintética aprovada, **Preparar nova versão** → alterar designação/condições → indicar início 01/11/2026 → seleccionar explicitamente a versão aprovada substituída → indicar fundamento → **Guardar proposta em preparação** → **Submeter versão**. Não havia controlos de validação para esse utilizador. +3. Consultar o serviço para 01/11/2026 enquanto a nova proposta aguardava validação: continuou a resolver a categoria v1 aprovada. +4. Sair; login da identidade sintética validadora → mesma empresa/unidade → consultar conteúdo fixo → motivo → **Validar esta versão**. Recusar outra proposta submetida com motivo. Não havia formulário de preparação, botão de correcção ou captura para a validadora. [Prova visual](proofs/accounting-validation.png). +5. Consultar o serviço em 31/10/2026: categoria v1. Em 01/11/2026: categoria v2 aprovada. Na secção de operações autorizadas, carregar a prestação sintética → **Consultar histórico preservado**: conservava a categoria v1 e referências originais, mesmo após a aprovação de v2. [Histórico preservado](proofs/accounting-history.png). +6. Sair. A instância de prova foi encerrada; os testes seguintes só recriaram `sgf_tempo_test`. A aplicação normal manteve a sua ligação. + +A guarda final de revisão foi validada por testes HTTP de aplicação: consultar, aprovar outra regra, tentar guardar a revisão antiga → 409; consultar novamente e guardar → sucesso; repetir o comando → mesmo resultado sem duplicação. A prova visual anterior continua a documentar preparação/decisão/vigência/histórico; não se atribui ao navegador uma demonstração posterior de gravação com o novo token de revisão. + +## Utilização normal + +Actualizar a página/sessão após as concessões e seleccionar Tempo Lda. O menu **Classificação contabilística** aparece para ambos. Não é necessário seleccionar unidade para preparar/validar classificações empresariais; é necessária unidade autorizada para consultar ou guardar resoluções de operações. + +Osmane prepara primeiro a versão documental/período do plano e submete; Samira confere e decide. Depois podem ser propostos e validados a conta empresarial documentada, categoria e ligação ao serviço. O sistema não resolve uma classificação por omissão enquanto faltarem aprovações compatíveis. Se a conta de movimento ou a aplicabilidade estiverem por confirmar, conservar pendência; não usar a referência 7.2 como substituto automático. + +Para operação autorizada, escolher serviço e data → **Consultar classificação**. Para preservar a resolução, carregar operações da unidade, seleccionar a operação e **Guardar resolução na operação**. Se versão ou regras mudaram, consultar/rever antes de guardar; não tentar sobrescrever a história. Samira consulta resoluções sem receber poder de captura ou edição pela validação. + +Ferramentas mantidas por caminhos explícitos no wrapper: + +```powershell +powershell -NoProfile -ExecutionPolicy Bypass -File scripts/sgf.ps1 test --stop-on-failure --filter=CatalogueAccountingTest +powershell -NoProfile -ExecutionPolicy Bypass -File scripts/sgf.ps1 npm run build +``` + +Repetir a demonstração apenas por fluxo de testes: parar `scripts/browser-proof.ps1 stop` antes de recriar testes; partir de base de testes vazia produzida pelos testes; `scripts/browser-proof.ps1 start`, seguido de `sgf.ps1 php scripts/accounting-fixture.php --env=testing`. Preparadores recusam dados existentes e não os apagam para prosseguir. `sgf.ps1 php scripts/accounting-concurrency.php --env=testing` demonstra decisões concorrentes. As credenciais sintéticas ficam no ficheiro local protegido já usado pelo preparador e não são publicadas. A verificação de portas não termina processos de outro projecto. O uso de Bypass é apenas no processo PowerShell, sem alteração global. + +## Ficheiros deste incremento e limites + +- Núcleo: `app/Modules/Services/CatalogueAccounting.php`, `Http/CatalogueAccountingController.php` e rotas. +- Interface: `resources/js/CatalogueAccountingWorkspace.jsx`, integração/legendas em `app.jsx` e estilos próprios em `app.css`. +- Migração: `2026_10_26_040000_create_catalogue_accounting.php`. +- Testes: `tests/Feature/CatalogueAccountingTest.php`, `tests/Support/CatalogueAccountingFixture.php`. +- Ferramentas/provas: `scripts/accounting-fixture.php`, `accounting-concurrency.php`, `accounting-concurrency-worker.php`, `accounting-preservation.php`, `catalogue-accounting-access.php` e `docs/proofs/accounting-*`. +- Documentação: especificação, este relatório, AGENTS e README. Alterações preexistentes foram preservadas; nenhum checkpoint Git foi criado sem pedido. + +Limites: referência histórica fornecida não comprova consolidação normativa actual; contas, datas e regras reais ainda precisam de propostas e validação de Samira. Apenas PGC-NIRF e o papel inicial de rendimento de serviço; sem motor de reconhecimento, diários, contrapartidas, stock/compras ou gestão geral de novas concessões. Sem lançamentos, alteração fiscal, publicação ou avanço para outro incremento. Este relatório não aceita entregas em nome do utilizador. diff --git a/docs/DOCUMENT_PREPARATION_DELIVERY.md b/docs/DOCUMENT_PREPARATION_DELIVERY.md new file mode 100644 index 0000000..e5914fc --- /dev/null +++ b/docs/DOCUMENT_PREPARATION_DELIVERY.md @@ -0,0 +1,107 @@ +# Preparação documental — entrega local + +Data: 26 de Outubro de 2026 (Africa/Johannesburg). Estado: implementado no âmbito autorizado e pronto para validação própria. B1 aceite em `8fcd52c`, A em `ca13acb` e identidade em `26b80df` permanecem preservados. Não houve reinstalação, mudança de versões, acesso ao InvesteMoz ou publicação. + +## Resultado funcional + +Novo menu **Preparação documental**, com cinco áreas: Dados do emitente, Dados dos clientes, Instruções de pagamento, Preparação de prestações e Preparação de facturação. Os nomes são reutilizados dos cadastros originais como denominação, sem segundo campo redundante. Se a denominação tiver de mudar, edita-se o nome no menu original, segundo os direitos existentes. Não se presume que esse nome já seja uma denominação legal validada. + +Emitente e clientes podem preparar NUIT, morada, localidade e país. Clientes continuam a ser criados apenas com nome no percurso de A; os campos documentais podem ficar por completar. Os cadastros são da empresa e reutilizados entre unidades. + +Nos rascunhos existentes da unidade autorizada podem preparar-se moeda, unidade de medida de cada linha, data/período do serviço, condições de pagamento, vencimento proposto e modo de preço: **Por definir / Imposto incluído / Imposto acrescido**. Datas são validadas como datas e fim de período anterior ao início é recusado. Não há data efectiva de emissão. + +O modo de preço regista uma intenção para preparação futura: não altera os preços ou cálculos existentes, não calcula impostos nem reinterpreta valores históricos. Moeda vazia continua desconhecida. Se o utilizador alterar explicitamente a moeda, o workflow existente do rascunho cria nova versão e captura essa alteração, conservando a precisão e os valores. Essa operação continua a exigir o direito de edição do rascunho em A, além da edição documental; não é um direito implícito novo. + +Condições e vencimento ficam sujeitos a conferência explícita. Sem data de emissão e convenção de contagem aprovadas, não há base para validar automaticamente um prazo contra a data proposta: aparece uma pendência de compatibilidade, sem declarar coerência nem corrigir datas silenciosamente. A indicação livre de «30 dias» não activa uma regra universal. + +## Instruções do emitente para facilitar o pagamento + +Podem configurar-se várias instruções identificadas por designação, com banco, titular, identificador de conta, NIB, IBAN, SWIFT, código bancário e moeda quando aplicáveis, mais texto. A designação é necessária para seleccionar a configuração; os restantes campos não são impostos a instruções que não sejam bancárias. Não existe uma pergunta ao cliente sobre como pagará. + +Cada rascunho pode seleccionar instruções do emitente por identidade, sem redigitar identificadores. O ecrã de selecção mostra designação/versão e explicita que não houve verificação pelo banco. Não inicia operação bancária, não contacta fornecedores, não cria recebimento nem afecta valores. + +Não se importaram contas dos exemplos nem foram definidos valores reais por omissão. O esquema/API não aceita campos de palavras-passe, tokens ou cartões; atribuições óbvias de segredos em texto são recusadas. O formulário informa que não se introduzem credenciais, PIN ou dados de cartões. Isso não constitui um serviço geral de detecção/verificação de dados bancários. + +Alterações têm versão, histórico append-only e auditoria com identificadores/versão, sem valores das instruções. As respostas de erro de escrita e captura não transportam a consulta SQL com dados bancários nem a remetem para os logs da aplicação. Valores necessários ficam apenas nos registos/histórico autorizados e fotografias futuras correspondentes; não entram nos relatórios de prova ou repositório. + +## Reutilização, completude e histórico + +Ao criar um novo rascunho de facturação de uma prestação com preparação documental actual e consulta documental autorizada, reutilizam-se datas, condições, unidades, modo proposto e selecções de instruções. A origem/versão dessa preparação fica registada. Uma preparação de origem desactualizada não é copiada como actual; cadastros/preparações acrescentados depois não são injectados retrospectivamente nos rascunhos ou documentos anteriores. + +O painel **Completude e validações** distingue «Por completar / confirmar aplicabilidade», «Preenchido — não validado», «Validação pendente» e «Origem alterada — rever». Mostra origem e próxima acção, incluindo consulta dos dados relacionados de emitente/cliente. Não há estado «apto para emissão fiscal». Não se construíram campos estatísticos, contratos ou motor geral de parâmetros. + +Editar um rascunho após preparar os dados torna a preparação desactualizada. A confirmação interna exige revisão/actualização dessa preparação. Unidades de medida devem corresponder às linhas actuais; moeda é reutilizada do registo original, não mantida numa segunda fonte independente. + +As fotografias B1 antigas não são actualizadas, reconstruídas ou promovidas a facturas. Para novas confirmações que utilizem preparação documental, o JSON da fotografia e o evento passam ao **esquema 2**, acrescentando `document_preparation`, versões dos registos, completude e cópias das instruções seleccionadas. Sem preparação aplicável mantém-se o formato anterior. O tipo de evento continua a significar confirmação interna, sem validade fiscal. + +Alterações posteriores das instruções/cadastros não alteram fotografias v1 ou v2. A leitura de uma nova fotografia que contenha esses dados exige também consulta documental de emitente, cliente e unidade; apenas consultar facturação em A não passa a expor dados bancários. Rascunhos B1 confirmados continuam bloqueados por API e SQL, incluindo a preparação documental associada. + +## Delta aplicado e preservação + +O delta e destino foram apresentados antes da aplicação. Migração aditiva `2026_10_26_010000_create_document_preparation`, testada em `sgf_tempo_test` e aplicada em `sgf_tempo_dev` pelo wrapper/proprietário separado: + +- `doc_records`: dados de emitente, cliente, instruções e preparação de rascunhos, com tipo, referência ao cadastro original, empresa/unidade e versão. +- `doc_history`: versões preservadas, autor e instante; protecção append-only. +- Constraints/triggers: fronteira de âmbito e referências, proibição de transferências por operações em massa, versões, selecção de instruções da mesma empresa e bloqueio da preparação de rascunhos confirmados. +- Catálogo SQL ampliado apenas para os direitos documentais definidos abaixo; sem concessão automática pela migração. + +Não houve reset/fresh/limpeza destrutiva em desenvolvimento. `document-preservation.php` comparou contagens e resumos criptográficos dos registos existentes antes/depois da migração/concessões: identidade, registos e captura de A e fotografias B1 permaneceram exactamente iguais. Os resumos ficam no directório operacional local, sem valores dos registos no relatório. + +Na verificação final havia duas contas, uma empresa, uma unidade, um cliente e um serviço previamente existentes, sem prestações/rascunhos/confirmações em desenvolvimento; `doc_records` e `doc_history` estavam vazias. Não se criaram dados de demonstração na Tempo Lda/SEGI. A aplicação continua a usar `sgf_dev_app`, sem administração PostgreSQL, e a ligação normal não mudou. + +O rollback automático desta migração é recusado para preservar história; qualquer reversão requer procedimento revisto de preservação. Não foram criadas tabelas de emissão fiscal, recebimentos ou lançamentos. + +## Concessões especificamente confirmadas e aplicadas + +As contas existentes foram conferidas, apresentadas e confirmadas antes da aplicação; nenhuma foi criada ou associada por suposição. + +| Conta | Empresa Tempo Lda, ID 1 | Unidade SEGI, ID 1 | +| --- | --- | --- | +| ID 1 — Osmane Nala | `issuer_documents.view/edit` (inclui instruções); `client_documents.view/edit` | `draft_documents.view/edit` | +| ID 2 — Samira Nal | `issuer_documents.view`; `client_documents.view` | `draft_documents.view` | + +Aplicadas nove concessões, auditadas como `documents.access.initial_grant`; os direitos anteriores foram preservados. Não incluem gestão dos novos direitos, emissão, recebimento ou contabilização. Nomes/emails não determinam privilégios durante a execução. A API revalida contexto, pertenças, permissões e versão; revogação de consulta impede o pedido seguinte, inclusive a leitura de fotografias v2 com instruções. + +`scripts/document-access.php` é procedimento local de pré-visualização/aplicação; não executar `--apply` como seed ou sem confirmação específica de nova operação. O procedimento usado recebeu os IDs explicitamente confirmados. `scripts/document-status.php` mostra contagens e direitos, sem valores das instruções. + +## Verificações e provas + +- **76 testes / 683 asserções aprovados** na suite completa, incluindo identidade, A e B1. As aceitações anteriores não foram reabertas. +- Compilação Vite aprovada: 15 módulos, sem alteração de dependências, versões ou lockfiles. +- Testes de cliente só com nome, denominação reutilizada, cadastros partilhados, instruções seleccionadas, herança da preparação, moeda desconhecida, precisão exacta, preenchido distinto de validado, períodos inválidos, pendência de condições/vencimento, versão/contexto antigos, origem alterada, acesso cruzado, leitura sem edição, ausência de direitos implícitos, revogação, SQL em massa, histórico append-only e rollback integral com falha injectada. +- Compatibilidade: fotografia antiga sem esquema 2 preservada byte a byte pela resposta; nova fotografia v2 conserva instrução/versão seleccionada após alteração da configuração; consulta sem direito ao emitente é recusada. Eventos novos com conteúdo documental declaram esquema 2. +- Falha de escrita com identificador sintético aleatório: nenhum valor incluído no erro, auditoria ou log técnico. Os relatórios de prova omitem os identificadores. +- Prova HTTP com login real sintético: reutilização, fotografias v1/v2, recusas 403/409, selecção sem recebimento e ausência de reinterpretação monetária. [Resultado](proofs/document-http-results.json). +- Prova no navegador, com CSRF e sessões/cache isolados: gestor actualizou emitente/cliente, consultou dados herdados, seleccionou instruções e guardou o modo proposto. Conta de consulta entrou pelo formulário, viu os dados e instruções seleccionadas, sem botão Guardar e com edição desactivada. A mudança entre separadores revelou uma falha de transição React, corrigida e novamente verificada. + +Provas: [emitente e completude](proofs/document-01-issuer-profile.png), [instruções reutilizadas sem recebimento](proofs/document-02-reused-instructions.png), [consulta com contexto sintético](proofs/document-03-read-only.png), [métricas sem valores das instruções](proofs/document-capture.json). + +A instância isolada usou apenas `sgf_tempo_test` na porta 8001. Foi parada antes da suite final que limpa os dados de teste. A aplicação normal permaneceu em `sgf_tempo_dev` na porta 8000; não se terminaram processos de outros projectos. + +## Navegação exacta + +1. Actualizar o navegador e entrar como utilizador autorizado; seleccionar Tempo Lda / SEGI. Se os novos direitos não aparecerem, sair e voltar a entrar. +2. Abrir **Preparação documental → Dados do emitente**, completar e guardar. O nome é alterado em **Empresa**, segundo o direito existente. +3. Abrir **Dados dos clientes**, seleccionar um cliente já criado em **Clientes**, completar os dados e guardar. Não duplicar o cadastro. +4. Abrir **Instruções de pagamento → Novas instruções**, preencher apenas os dados aplicáveis, dar uma designação e guardar. Sem segredos ou dados de cartões. +5. Criar uma prestação no menu **Prestações em rascunho**, se ainda não existir. Voltar a **Preparação documental → Preparação de prestações**, seleccioná-la, completar campos e seleccionar as instruções aplicáveis; guardar. +6. Abrir a prestação em **Prestações em rascunho → Preparar rascunho de facturação**. Em **Preparação documental → Preparação de facturação**, seleccionar o rascunho e conferir os dados reutilizados e pendências. Pode também preparar directamente um rascunho existente ainda não confirmado. +7. A confirmação interna B1 continua em **Rascunhos de facturação → abrir registo → Rever confirmação interna**; não é emissão. Nenhuma preparação pode editar um rascunho já confirmado. + +## Ficheiros e comandos + +Novos: `DocumentPreparation.php`, `Http/DocumentPreparationController.php`, `DocumentPreparationWorkspace.jsx`, migração indicada, `DocumentPreparationTest.php`, fixture documental e scripts `document-access.php`, `document-status.php`, `document-preservation.php`, `document-http-proof.mjs`, `document-proof-metrics.php`. Integração em rotas, navegação, CSS, criação de rascunho de facturação e captura/leitura de confirmações internas. A preparação de fixtures do navegador passou a conceder os novos direitos apenas a identidades sintéticas. + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\sgf.ps1 test +powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\sgf.ps1 npm run build +powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\sgf.ps1 php scripts/document-status.php +``` + +Testes destrutivos permanecem exclusivos de `sgf_tempo_test`. Scripts de métricas verificam esse destino. Parar a instância de navegador de testes antes da suite. Nenhum exemplo real deve ser usado como fixture, configuração ou referência bancária por omissão. + +## Pendências e limites + +Nenhuma fonte legal/fiscal nova foi validada neste incremento. Obrigatoriedade por regime/tipo, validade de NUIT/moradas, numeração, emissão, taxas, incidência e arredondamento fiscal permanecem pendentes. Contas, reconhecimento, moeda funcional e processamento contabilístico também. A preparação não se apresenta como validada pelo banco ou apta para emissão fiscal. + +Não há emissão de factura, recibo ou factura-recibo, data efectiva de emissão, número fiscal, PDF de factura, recebimento, afectação ou lançamento. Descontos, contratos, estatísticas e dimensões analíticas não foram implementados. Não existe eliminação de configurações ou gestão das novas concessões pela interface. Restantes incrementos e publicação continuam sem autorização; esta entrega aguarda validação do utilizador. diff --git a/docs/DRAFT_INVOICE_PREVIEW_DELIVERY.md b/docs/DRAFT_INVOICE_PREVIEW_DELIVERY.md new file mode 100644 index 0000000..c53c89e --- /dev/null +++ b/docs/DRAFT_INVOICE_PREVIEW_DELIVERY.md @@ -0,0 +1,93 @@ +# Primeira pré-visualização documental — entrega técnica + +Data: 26 de Outubro de 2026 (Africa/Johannesburg). Implementação e provas concluídas; **concessão real de configuração especificamente confirmada e aplicada**. Entrega pronta para validação do utilizador, sem a declarar aceite, nem à preparação documental anterior. Preservar identidade `26b80df`, A `ca13acb`, B1 `8fcd52c` e as alterações posteriores ainda não incluídas num novo checkpoint. + +## Funcional + +Em **Rascunhos de facturação → abrir rascunho → Pré-visualizar rascunho**, a aplicação apresenta dados reutilizados do emitente, cliente, linhas, preparação de datas/condições/moeda/unidades e instruções seleccionadas. Não se redigitam cadastros ou identificadores bancários. A apresentação configura-se separadamente em **Apresentação do rascunho**, no âmbito da empresa. + +O aviso exacto **RASCUNHO — SEM VALIDADE FISCAL** fica fixo no topo da janela, em desktop e ecrã pequeno, e repete-se na folha visual. A configuração não dispõe de campos para alterar/ocultar aviso ou pendências; a API e o trigger SQL recusam campos fora do catálogo. As regras de estilo para a impressão normal do navegador mantêm aviso e pendências. Não existe função de impressão, exportação ou PDF no SGF neste incremento. + +Os rótulos são **Preço proposto**, **Valor aritmético provisório**, **Imposto por apurar** e **Total definitivo por apurar**. O valor aritmético reutiliza a operação decimal exacta já existente. Falta de quantidade/preço mantém valor desconhecido, enquanto zero explicitamente guardado continua zero. Imposto e total definitivo mostram «Não apurado». Moeda ausente mostra «Moeda por definir»; não se presume MZN, não se somam moedas diferentes e não se decompõe preço com imposto incluído desconhecido. Nenhuma base aritmética é promovida a base tributável. + +Campos em falta e pendências mantêm rótulos próprios, incluindo validação legal/fiscal, moeda, modo de preço, condições/vencimento e origem alterada. Dados preenchidos não passam a fiscalmente validados. O instante de consulta é rotulado como consulta, distinto de data/período do serviço e vencimento proposto. Não há data efectiva de emissão, número fiscal ou estado emitido. + +## Configuração delimitada e recursos + +O modelo por empresa tem versão e histórico append-only. Permite apresentar/omitir os blocos opcionais de logótipo, contactos, observações e instruções seleccionadas. Omitir blocos não elimina as pendências de negócio/documentais. Contactos e observações são texto de apresentação configurado uma vez por empresa; não havia campos de contacto empresarial nesses cadastros, e não se usa automaticamente o email privado do utilizador. + +As instruções aplicáveis são as selecções já guardadas na preparação de cada rascunho; não se criam novas escolhas de meio de recebimento, cobranças ou ligações bancárias. A configuração só controla a apresentação desse bloco. A leitura de valores completos exige os direitos existentes e não os envia para logs, URLs ou relatórios de prova. + +**Limitação identificada antes da implementação:** não havia logótipo empresarial nos recursos existentes. A opção de apresentação funciona, mas sem recurso surge «Logótipo opcional não disponível». Não se extraiu uma marca das imagens nem se criou/importou uma identidade visual. O resolvedor aceita apenas PNG local autorizado, até 512 KiB, do disco privado local no caminho fixo `document-logos/company-.png`; valida assinatura/MIME e inclui os bytes na resposta, sem pedido externo. Não há upload, URL configurável ou escolha arbitrária de ficheiro. Qualquer colocação futura de imagem deve ter autorização própria; não copiar os exemplos como recurso por omissão. + +Contactos, observações, descrições e instruções são renderizados como texto escapado por React, sem HTML executável, links automáticos ou recursos externos. O modelo não permite HTML/CSS livre, regras de cálculo ou campos personalizados. O conteúdo não sai para serviços de renderização de terceiros. + +## Consulta coerente e actualização explícita + +Cada composição HTTP inicia uma transacção PostgreSQL **REPEATABLE READ READ ONLY** antes de ler dados e permissões. Configuração, cadastros, linhas, pendências e instruções vêm da mesma fotografia de leitura. A consulta não cria registos, resolve pendências, audita uma alteração de negócio, confirma ou emite documentos. A configuração é uma operação de escrita distinta, autorizada e auditada. + +A resposta inclui uma revisão HMAC e metadados de versão; o instante da consulta fica fora dessa revisão. O endpoint de verificação devolve só a revisão. No navegador, verifica-se a cada dez segundos enquanto visível e ao regressar à janela. Uma mudança mostra **Pré-visualização desactualizada**, mantendo os valores já apresentados; só **Actualizar pré-visualização** substitui o conteúdo. Falha/recusa de nova consulta remove o conteúdo. A verificação é periódica, não uma notificação instantânea por push. + +As consultas e revisões revalidam contexto, pertenças, empresa/unidade e permissões no servidor; respostas têm `Cache-Control: no-store`. A mudança de contexto desmonta a vista e elimina o estado anterior da interface. Não há cache partilhada nem reutilização de dados entre empresas/unidades. A revisão é autenticada com chave do servidor, sem permitir adivinhar identificadores bancários a partir de um hash simples. + +## Histórico B1 separado + +Em registos confirmados, a acção é **Abrir confirmação interna histórica**. O endpoint de rascunho recusa esse registo com 409 e indica a vista histórica. A nova vista usa exclusivamente a fotografia B1 preservada para o conteúdo, incluindo linhas, valores e dados documentais/instruções que tenham sido capturados no esquema 2. Não lê a configuração actual para enriquecer a história. + +Campos não capturados mostram **Não capturado nesta confirmação**. As fotografias existentes não contêm logótipo/contactos/observações do modelo nem a denominação do emitente: não se completa essa informação a partir da empresa actual. A denominação actual no cabeçalho geral da aplicação indica apenas o contexto autorizado; não é inserida no documento histórico. A vista distingue autor/instante de confirmação, instante desta consulta, esquema da fotografia e ausência de modelo histórico capturado. + +Nenhuma fotografia foi alterada ou reconstruída. As vistas antigas/esquema 2 continuam distintas de uma factura emitida. O mesmo aviso de ausência de validade fiscal acompanha a consulta histórica. + +## Migração e preservação + +Delta aditivo apresentado antes da aplicação: `2026_10_26_020000_create_document_preview_models`, testado em `sgf_tempo_test` e aplicado em `sgf_tempo_dev` pelo wrapper/proprietário separado. + +- Cria `document_preview_models` (empresa, configuração, versão) e `document_preview_model_history` (versão preservada, autor, instante). +- Acrescenta constraints/triggers para pertença imutável, versão, campos configuráveis fixos e histórico append-only. +- Permite `document_preview.configure` apenas no âmbito da empresa; a migração não concede o direito. +- Não cria emissão, numeração, datas fiscais, impostos, recebimentos ou lançamentos. Rollback automático recusado para preservar o histórico; eventual reversão exige procedimento revisto. + +`document-preservation.php` foi alargado para comparar também `doc_records/doc_history`. A comparação antes/depois da migração confirmou conteúdo e contagens exactamente iguais em identidade, A, B1 e preparação documental. Não houve reset/fresh/limpeza destrutiva de desenvolvimento. Após a aplicação, as duas tabelas de modelo estavam vazias em desenvolvimento; não se criaram configurações de demonstração na Tempo Lda. A aplicação normal manteve a ligação a `sgf_tempo_dev` e o papel `sgf_dev_app` sem administração PostgreSQL. + +## Acessos confirmados e aplicados + +Consulta de rascunho reutiliza os direitos explícitos existentes: consulta da empresa/unidade, facturação, clientes e dados documentais de emitente/cliente/unidade. Consulta de configuração usa `issuer_documents.view`. Histórico v1 conserva a fronteira de consulta B1; conteúdo v2 com dados documentais exige também esses direitos de consulta. Nenhuma acção de leitura concede configuração ou emissão. + +Contas existentes conferidas: ID 1 — Osmane Nala; ID 2 — Samira Nal. Operação concreta apresentada para confirmação: **conceder apenas `document_preview.configure` ao ID 1 na Tempo Lda, empresa ID 1, unidade nula**. Samira mantém os direitos de consulta existentes, sem novo direito de configuração. Não há gestão desse novo direito pela interface ou poder financeiro derivado. + +**Estado efectivo:** o utilizador respondeu «Confirmar exactamente esta concessão». A conta e a empresa foram novamente conferidas; `preview-access.php 1 1 --apply` aplicou apenas `document_preview.configure` à conta 1 na empresa 1, com auditoria `document_preview.access.initial_grant`. A verificação posterior confirmou exactamente essa concessão, com unidade nula. Samira não recebeu configuração, os restantes direitos foram preservados e nenhuma configuração de demonstração foi criada em desenvolvimento. Não repetir a aplicação sem confirmação específica de uma nova operação. + +## Verificação + +- Suite completa: **89 testes / 893 asserções aprovados**, incluindo regressões da fundação e entregas anteriores. Aceitações não foram reabertas. +- Compilação final Vite aprovada: 16 módulos, sem mudança de versões, manifests ou lockfiles. +- Execução final apenas dos 13 testes novos: **13 testes / 210 asserções aprovados**. A prova de navegador foi parada antes dessa execução, que também limpa as fixtures de teste. +- Testes de reutilização, consulta sem escritas, desconhecido distinto de zero, aritmética exacta, direitos explícitos, recusa de configuração para consulta, versões antigas, aviso/pendências não configuráveis, recurso externo recusado, revisão alterada, campos históricos não reconstruídos, acesso cruzado/revogação, PNG local, imutabilidade SQL e rollback de configuração. +- Prova concorrente com processos PHP/PostgreSQL: isolamento `repeatable read` verificado; uma consulta em curso manteve ambas as versões antigas enquanto outra transacção alterava emitente/cliente; nova consulta viu ambas as versões novas, sem mistura. [Resultado](proofs/preview-coherence.json). +- HTTP com login real sintético, CSRF e sessões distintas: configuração autorizada, leitor 403, campos proibidos 422, versão/contexto antigos 409, revisão sem conteúdo sensível e história independente do modelo actual. [Resultado](proofs/preview-http-results.json). +- Navegador: configuração pelo gestor sintético, leitura de rascunho, mudança em segundo separador com aviso sem substituir o texto antigo, actualização explícita, consulta histórica, leitor sem botão Guardar e remoção da vista após mudar unidade. Ecrã real de 390 × 844, sem transbordo horizontal, aviso visível no topo durante a rolagem. [Registo sem valores bancários](proofs/preview-browser-results.json). + +Provas visuais: [desktop](proofs/preview-01-desktop.png), [desactualização](proofs/preview-02-stale.png), [ecrã pequeno](proofs/preview-03-small-screen.png), [histórico](proofs/preview-04-historical.png), [histórico em ecrã pequeno](proofs/preview-05-history-small.png), [configuração em consulta](proofs/preview-06-reader-configuration.png). As provas omitem valores completos das instruções; o bloco foi desactivado apenas na configuração sintética, mantendo as pendências. O comportamento de apresentação de instruções seleccionadas foi verificado por testes e HTTP. + +As provas usaram exclusivamente a instância na porta 8001 e `sgf_tempo_test`, sem mudar a ligação normal ou introduzir demonstrações na Tempo Lda. A dimensão temporária do navegador foi reposta; os separadores de prova foram fechados. Sem publicação ou processos alheios terminados. + +## Ficheiros e navegação + +Novos: `app/Modules/Services/DocumentPreview.php`, `Http/DocumentPreviewController.php`, `resources/js/DocumentPreview.jsx`, migração indicada, `DocumentPreviewTest.php`, fixture própria e scripts `preview-access.php`, `preview-status.php`, `preview-http-proof.mjs`, `preview-coherence-proof.php`, `preview-coherence-worker.php`. Integração em rotas, navegação, ServicesWorkspace e CSS; fixture de navegador e verificação de preservação adaptadas. + +1. Actualizar o navegador e entrar; seleccionar **Tempo Lda / SEGI**. +2. Se ainda não houver rascunho, usar o percurso existente: **Clientes → Serviços → Prestações em rascunho → abrir prestação → Preparar rascunho de facturação**; completar os dados em **Preparação documental**, conforme necessário. +3. **Rascunhos de facturação → seleccionar um rascunho não confirmado → Pré-visualizar rascunho**. +4. Se houver aviso de alteração, usar **Actualizar pré-visualização**. A abertura/actualização não confirma nem emite. +5. **Apresentação do rascunho** permite consultar a configuração. Osmane pode guardar a apresentação; Samira permanece em consulta. Actualizar a sessão, saindo e entrando novamente se necessário, para carregar a concessão aplicada. +6. Para história: **Rascunhos de facturação → seleccionar registo confirmado → Abrir confirmação interna histórica**. Não completar campos históricos com dados actuais. + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\sgf.ps1 php scripts/preview-status.php +powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\sgf.ps1 test --filter DocumentPreviewTest +powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\sgf.ps1 npm run build +``` + +## Limites + +Apenas navegador. Sem PDF/exportação/impressão documental, emissão fiscal, data efectiva de emissão, número fiscal, novo cálculo de impostos, recibos, recebimentos, afectações, reconciliação ou lançamentos. Não se validaram novas fontes legais/fiscais ou regras de arredondamento. O modelo não é editor geral nem prova de conformidade. Não há recurso empresarial de logótipo instalado, carregamento externo ou upload. O restante âmbito e publicação continuam sem autorização. Esta entrega aguarda validação do utilizador. diff --git a/docs/DRAFT_INVOICE_PREVIEW_PLAN.md b/docs/DRAFT_INVOICE_PREVIEW_PLAN.md new file mode 100644 index 0000000..0ee9169 --- /dev/null +++ b/docs/DRAFT_INVOICE_PREVIEW_PLAN.md @@ -0,0 +1,122 @@ +# Pré-visualização de factura de serviço — plano para aprovação + +Data: 26 de Outubro de 2026 (Africa/Johannesburg). Apenas plano, critérios e decisões; não autoriza implementação ou publicação. + +Actualização posterior: o utilizador fechou as decisões de configuração limitada, rótulos, actualização explícita e história B1 separada e autorizou a primeira implementação por prompt próprio. A execução está em [DRAFT_INVOICE_PREVIEW_DELIVERY.md](DRAFT_INVOICE_PREVIEW_DELIVERY.md). A concessão efectiva de configuração é uma confirmação específica separada; o restante âmbito fiscal/contabilístico continua sem autorização. + +Preservar a preparação documental entregue e o trabalho posterior ainda não incluído num novo checkpoint. Preservar identidade `26b80df`, A `ca13acb` e B1 `8fcd52c`, com as respectivas aceitações. A preparação documental tem relatório próprio e não é declarada aceite por este plano. Não alterar código, bases, permissões, fotografias ou versões nesta etapa. Não foram repetidos testes. + +Referências: SGF_TEMPO_Roteiro_v0_9.docx, BILLING_DOCUMENTS_FIELD_SPEC.md, DOCUMENT_PREPARATION_DELIVERY.md e SERVICES_B1_DELIVERY.md. Os três exemplos informam a organização do conteúdo, sem limitar o modelo ou validar obrigações legais. + +## Próximo incremento proposto + +Acrescentar uma pré-visualização de leitura do **rascunho de facturação de serviço**, dentro da aplicação. Reutilizar dados existentes, sem duplicar cadastros, recolher novamente instruções de pagamento ou criar um novo documento emitido. Proposta inicial: um modelo comum, configurável de forma limitada e com versão identificada, apresentado no navegador. Sem PDF, exportação ou função de impressão neste incremento. + +Mostrar permanentemente **RASCUNHO — SEM VALIDADE FISCAL** no cabeçalho e num aviso visível durante a navegação/rolagem. Repetir a indicação nas páginas visuais do documento. O aviso não pode ser removido por configuração. Uma eventual impressão pelo próprio navegador não é uma capacidade fiscal do SGF; a folha de impressão deve conservar o aviso. Não há número fiscal, data efectiva de emissão, assinatura fiscal ou estado de factura emitida. + +Percurso proposto: **Rascunhos de facturação → abrir registo → Pré-visualizar rascunho**. A pré-visualização permite voltar aos menus de preparação autorizados; não edita silenciosamente os dados nem oferece botões de emissão, recebimento ou contabilização. + +## Conteúdo e origem + +| Bloco | Origem | Apresentação proposta / informação em falta | +| --- | --- | --- | +| Identificação | Rascunho e contexto autorizado | Referência interna claramente rotulada, empresa/unidade, versão do rascunho e da preparação. Sem converter INT-B1 ou ID técnico em número de factura | +| Emitente | Nome da empresa e preparação documental | Denominação reutilizada, NUIT, morada, localidade e país quando preenchidos. Campo relevante vazio: «Por completar», sem inventar identificação | +| Cliente | Cliente seleccionado e preparação documental da empresa | Mesmo cadastro e versões, sem cópia por unidade. Nome basta para começar; restantes dados em falta permanecem visíveis | +| Serviço e origem | Prestação/rascunho existentes | Descrição, origem e versões. Não afirmar execução confirmada do serviço | +| Linhas | Linhas guardadas e unidades de medida preparadas | Serviço, descrição, quantidade, unidade e preço proposto. Desconhecido é «Por completar»; zero explicitamente guardado continua zero | +| Datas | Preparação documental | Data/período do serviço e vencimento **proposto**, separados. Condições e vencimento com pendência de compatibilidade; não inferir emissão ou competência contabilística | +| Moeda | Moeda guardada no rascunho | Código indicado, com validação pendente, ou «Moeda por definir». Nenhuma moeda por omissão | +| Modo de preço | Preparação guardada | «Por definir», «Imposto incluído — indicação proposta» ou «Imposto acrescido — indicação proposta». Não altera os preços existentes | +| Valores | Valores exactos já existentes | Preços propostos e, se disponível, valor aritmético já calculado pelo percurso existente, com rótulo provisório. Não chamar base tributável à base aritmética de A/B1 | +| Impostos e total | Pendências existentes; sem motor fiscal | «Impostos não apurados» e «Total fiscal / montante definitivo: não apurado». Não mostrar imposto zero ou fabricar um total pela ausência de regra | +| Instruções para pagamento | Configurações do emitente explicitamente seleccionadas | Dados aplicáveis reutilizados, sem redigitação; designação/versão e indicação de introdução pelo utilizador, sem verificação bancária. Sem selecção: «Instruções não seleccionadas», nunca «pagamento pendente/recebido» | +| Completude | Verificações documentais existentes | Separar «Por completar», «Preenchido — não validado», «Validação pendente» e «Origem alterada». Mostrar origem e próxima acção | + +Sem moeda definida, qualquer expressão aritmética existente deve ser identificada como valor sem unidade monetária validada, sem símbolo monetário ou total definitivo. Não agregar moedas distintas. A escolha de imposto incluído/acrescido não autoriza decompor o preço, aplicar taxa, arredondar ou relançar valores anteriores. Não introduzir novos cálculos de impostos, descontos, câmbio ou totais fiscais. + +Dados adicionais de gestão/estatísticas, extractos de conta, publicidade, contratos, descontos e logística ficam fora deste incremento. Dados bancários seleccionados são instruções do emitente para facilitar pagamento, não uma pergunta sobre como o cliente pagará. + +## Modelo configurável proposto + +Usar um núcleo de conteúdo comum e configuração limitada de apresentação, sem motor geral de campos personalizados. Não reproduzir obrigatoriamente as colunas, marcas, bancos ou rodapés das imagens fornecidas. + +Proposta mínima de configuração: ordem dos blocos opcionais, visibilidade de dados opcionais já autorizados e rótulos de apresentação não fiscais. Modelo base por empresa, com versão; eventual logótipo só se houver activo autorizado disponível. Não criar agora um editor livre de HTML, uploads ou integrações. A leitura/configuração do modelo não altera regras de negócio ou permissões sobre o conteúdo. + +Não configuráveis: aviso de rascunho, ausência de emissão, distinção entre provisório e definitivo, indicação de impostos não apurados, identificação das origens/versões e pendências relevantes. Ocultar um campo opcional do desenho não resolve nem elimina uma pendência no painel de completude. Dados em falta não devem ser ocultados para produzir aparência de documento completo. + +Propor um desenho sóbrio com identificação das partes, linhas, datas e condições, secção de valores provisórios, instruções e pendências. O painel de trabalho pode apresentar metadados de contexto e versões separado da folha visual. A configuração não é um mecanismo de autorização nem prova de conformidade fiscal. + +## Actualidade e preservação histórica + +- **Rascunho editável:** proposta de leitura conjunta coerente das versões actuais autorizadas, com indicação das versões de empresa/cliente/preparação/linhas/instruções e instante de consulta rotulado como tal, nunca emissão. A confirmação de geração não deve gravar nova fotografia B1 nem alterar estados. +- Se os dados mudarem enquanto a pré-visualização estiver aberta, indicar «Pré-visualização desactualizada — actualizar». A actualização é explícita; não substituir silenciosamente valores ou instruções já visíveis. A estratégia de detecção (ao regressar/recarregar, sem actualização automática contínua) deve ser aprovada antes de implementar. +- **Registo já confirmado B1:** não montar um documento aparentemente histórico com cadastros actuais. Proposta: manter a consulta histórica B1 separada e usar exclusivamente a fotografia guardada. Formato antigo sem determinado campo mostra «Não capturado nesta confirmação», sem o ir buscar ao cadastro actual. Esquema 2 mostra apenas os dados capturados na sua versão. +- Não chamar à consulta B1 uma factura ou emissão. Manter «Confirmado internamente — sem validade fiscal» e, se adoptar a mesma representação visual, conservar também o aviso de rascunho. Não alterar fotografias antigas para acomodar o modelo. +- O modelo de apresentação pode evoluir sem modificar os dados de origem. Uma representação histórica não é prova de que essa versão do modelo já existia na confirmação: mostrar separadamente versão da fotografia e versão do modelo usado na consulta. + +## Acessos e protecção + +Proposta: reutilizar **apenas consulta** já explicitamente concedida, sem criar poder de emissão: consulta de facturação no âmbito da unidade, `draft_documents.view` nessa unidade, `issuer_documents.view` e `client_documents.view` na empresa. Confirmar a matriz exacta antes da implementação; editar preparação ou configurar um modelo não resulta desta acção de consulta. + +O servidor revalida utilizador, pertenças, contexto, unidade e referências em cada pedido. Identificadores enviados pelo navegador não autorizam dados. Revogação impede a consulta no pedido seguinte; não misturar dados de empresas do mesmo tenant ou de outra unidade. + +Valores completos das instruções de pagamento só aparecem na apresentação autorizada quando seleccionados; não entram em URLs, logs, erros, telemetria, relatórios de testes ou repositório. Evitar cache partilhada e dados de um contexto anterior ao mudar empresa/unidade ou sair. Escapar texto e impedir HTML/script introduzido em instruções ou descrições. Provas futuras com dados sintéticos em instância isolada, mantendo valores de instruções fora das capturas de prova a versionar. + +## Plano de implementação futuro, sujeito a aprovação + +1. Fechar decisões abaixo e aprovar um exemplo de organização visual com campos fictícios/sem identificadores bancários reais, sem avançar para emissão. +2. Compor uma resposta de leitura com conteúdo e proveniência/versões, reutilizando workflows existentes. Definir a política de actualidade e acesso; não persistir um novo documento fiscal. +3. Renderizar o modelo base e painel de pendências, com configuração limitada e aviso obrigatório; separar consulta de rascunho actual e fotografia B1. +4. Testar a composição, a confidencialidade e a apresentação; demonstrar no navegador isolado o percurso com dados sintéticos. Executar apenas regressões justificadas pelas alterações, quando a implementação for autorizada. +5. Entregar ficheiros, provas, limitações e instruções de navegação. Não aplicar novas concessões, migrações ou criação de configuração sem apresentar o delta/âmbito correspondente. Não publicar. + +## Critérios de aceitação propostos + +1. Um rascunho de serviço existente é apresentado sem redigitar emitente, cliente, linhas, datas, moeda ou instruções seleccionadas e sem criar outro cliente/documento/recebimento. +2. O aviso exacto **RASCUNHO — SEM VALIDADE FISCAL** mantém-se visível durante a leitura, em páginas visuais e no estilo de impressão; nenhuma configuração o remove. +3. Campos em falta, dados preenchidos sem validação e regras pendentes têm estados/rótulos distintos; zero explícito não é confundido com desconhecido. Nenhum estado afirma aptidão fiscal. +4. Datas de serviço/período, vencimento proposto e instante de consulta aparecem distintos; não existe data efectiva de emissão, número fiscal ou estado emitido. +5. Valores mantêm as cadeias decimais exactas de origem. Moeda/mode desconhecidos não são presumidos; modos incluído/acrescido não geram taxa, imposto, base tributável ou total fictícios. Impostos/total definitivo ficam não apurados. +6. Só as instruções seleccionadas da empresa autorizada aparecem. Reabrir/actualizar não cria pagamento nem apresenta verificação bancária. Valores completos não surgem em artefactos de prova ou logs. +7. Mudança de cadastros/rascunho/instruções detectável segundo a política aprovada gera sinalização de desactualização e actualização explícita; não há mistura silenciosa de versões/contextos. +8. B1 v1/v2 mantém dados e metadados imutáveis. Campo não capturado na versão antiga não é completado a partir do presente. Consulta histórica permanece distinta da factura emitida. +9. Acesso directo, identificadores manipulados, outra empresa do mesmo tenant, outra unidade e revogação de direitos são tratados no servidor; utilizador de consulta não edita dados ou modelo. +10. Textos longos, linhas múltiplas e campos ausentes têm apresentação legível sem esconder aviso ou pendências. A configuração permitida varia o desenho sem limitar o conteúdo aos três exemplos ou alterar regras. +11. Não há gravação de emissão, imposto, recebimento, afectação ou lançamento, nem promoção de confirmações B1. Código/bases aceites preservados e nenhuma publicação. + +## Decisões para fechar antes de implementar + +| Decisão | Proposta para revisão | +| --- | --- | +| Saída inicial | Pré-visualização dentro da aplicação; sem PDF, exportação ou botão de impressão | +| Acesso ao rascunho | Reutilizar a conjunção dos direitos de consulta acima; sem concessões novas por inferência | +| Acesso/configuração do modelo | Definir quem configura e quais opções. Se exigir direito novo, matriz e concessão confirmadas separadamente; não derivar gestão de modelo de consulta/edição de dados | +| Configuração inicial | Um modelo base comum, configuração limitada por empresa; decidir quais blocos opcionais/rótulos podem variar e se essa edição entra já no incremento | +| Valores mostrados | Proposta: preços exactos propostos e valor aritmético já existente com rótulo inequívoco; imposto e total definitivo não apurados. Aprovar a nomenclatura antes de desenhar | +| Actualidade | Proposta: composição coerente ao abrir e verificação ao regressar/actualizar; aviso de mudança, sem substituir dados automaticamente. Definir tratamento de mudança durante a consulta | +| B1 | Proposta: ligação separada para a fotografia histórica, sem reconstrução; decidir se reutiliza o desenho com rótulo histórico explícito ou mantém o detalhe actual | +| Instruções de pagamento | Mostrar apenas as seleccionadas e aplicáveis, sem as mascarar no documento autorizado; não fotografar valores completos para relatórios/repositório | + +Estas decisões são de produto/segurança/apresentação. Podem ser fechadas sem aprovar taxas, plano de contas ou emissão. Não se pede uma nova aceitação de identidade, A ou B1. + +## Fontes e decisões ainda necessárias para cálculo e emissão reais + +**Estado das fontes:** a documentação local regista que nenhuma fonte legal/fiscal foi validada nesta tarefa. A v0.9 e as entregas aceites são referências de produto; os exemplos são referências de conteúdo. Esta revisão não realizou pesquisa legislativa nem atribui vigência/conformidade a diplomas não consultados. + +| Tema | Fonte/evidência a obter e validar | Decisão dependente | +| --- | --- | --- | +| Âmbito fiscal | Enquadramento efectivo da empresa, operações e período; documentação oficial aplicável e responsável competente identificado | Quais tipos/casos de emissão devem ser suportados e em que regime | +| Identificação e conteúdo | Textos oficiais sobre elementos documentais aplicáveis, com artigo, vigência, alterações e casos especiais | Obrigatoriedade de NUIT/moradas/identificação do cliente, descrições, datas e textos por tipo de documento | +| Impostos | Normas/tabelas oficiais aplicáveis à operação/data, fundamentos de isenção/não sujeição e validação do enquadramento | Tratamento, taxas, incidência, descontos/encargos, adiantamentos e eventuais retenções; desconhecido continua pendente | +| Preço e cálculo | Política aprovada compatível com as fontes aplicáveis e exemplos de cálculo conferidos | Incluído/acrescido, precisão, sequência e ponto/método de arredondamento por linha/documento e explicação de diferenças | +| Moeda e câmbio | Regras oficiais aplicáveis e política da empresa validada; fontes de câmbio só se necessárias e autorizadas | Moeda documental/funcional, fonte/data/taxa de conversão, exposição de impostos e tratamento de diferenças | +| Emissão e identidade | Regras oficiais aplicáveis a numeração/séries, datas, emissão, rectificação e reprodução; requisitos do software/autoridade se exigíveis | Atribuição de número, unicidade, concorrência, lacunas, momento de emissão, exemplares e controlo de alterações | +| Arquivo e representação | Requisitos aplicáveis de arquivo, conservação, autenticidade, comunicação e acesso | Formato definitivo, conteúdo legal, evidências, retenção e eventuais integrações; nenhuma presumida neste desenho | +| Factura-recibo e recibo | Regras aplicáveis e casos operacionais aprovados, critérios de evidência do recebimento | Quando se usam, identidades, afectações, parciais, excedentes, duplicados e prevenção de dupla documentação | +| Responsabilidade e permissões | Matriz aprovada pelo utilizador e responsabilidades fiscal/contabilística identificadas | Quem verifica, emite, documenta recebimentos, corrige ou autoriza; sem herdar esses poderes da pré-visualização | +| Contabilidade | Política/plano de contas, reconhecimento, períodos e classificação validados por responsável competente | Quais acontecimentos geram efeitos, quando e com que regras. Desenho ou emissão não aprovam lançamentos | + +Para cada fonte futura registar identificação oficial/URL, versão, artigo, datas de vigência, âmbito de aplicação, responsável e estado da validação. Um parecer deve ser distinguido da norma que interpreta; um exemplo impresso não substitui nenhuma dessas fontes. Este levantamento documental é uma frente de requisitos, não implementação em paralelo de fiscalidade/contabilidade. + +O próximo prompt de execução deverá seleccionar apenas a pré-visualização aprovada. Cálculo fiscal, emissão e demais operações continuarão bloqueados até âmbito, regras, fontes e acessos próprios estarem definidos e autorizados. diff --git a/docs/SERVICES_B_SCOPE.md b/docs/SERVICES_B_SCOPE.md index 16bdc36..208eac9 100644 --- a/docs/SERVICES_B_SCOPE.md +++ b/docs/SERVICES_B_SCOPE.md @@ -1,5 +1,7 @@ # Entrega B — delimitação para revisão +Complemento documental de 26 de Outubro de 2026: [matriz de facturação e recebimentos](BILLING_DOCUMENTS_FIELD_SPEC.md), com campos, origens, momentos, validações e fotografia histórica. B1 mantém-se aceite no checkpoint `8fcd52c`. O complemento apenas especifica informação com base em exemplos; não autoriza o restante B/C ou publicação. + Data: 25 de Outubro de 2026 (Africa/Johannesburg). Estado: proposta de âmbito; não autoriza implementação, migrações, novas concessões, emissão fiscal ou publicação. Base: SERVICES_WORKFLOW_SPEC.md e entrega A aceite em SERVICES_A_DELIVERY.md, checkpoint local `ca13acb`, antecedido por `26b80df`. A permanece encerrada e não é reaberta nesta revisão. Este documento não constitui validação jurídica, fiscal ou contabilística. diff --git a/docs/SERVICES_WORKFLOW_SPEC.md b/docs/SERVICES_WORKFLOW_SPEC.md index 34021a6..b271bd0 100644 --- a/docs/SERVICES_WORKFLOW_SPEC.md +++ b/docs/SERVICES_WORKFLOW_SPEC.md @@ -4,6 +4,8 @@ Data: 25 de Outubro de 2026. Referência: SGF_TEMPO_Roteiro_v0_9.docx, particularmente secções 5, 14 a 19 e 20 a 24. Este documento especifica um percurso para revisão; não autoriza emissão fiscal, operações reais, movimentação de fundos ou implementação integral. +Revisão documental de 26 de Outubro de 2026: [BILLING_DOCUMENTS_FIELD_SPEC.md](BILLING_DOCUMENTS_FIELD_SPEC.md) contém a matriz de informação para factura, recibo e factura-recibo, baseada nos três exemplos fornecidos. Distingue conteúdo pretendido, propostas técnicas e requisitos legais ainda por validar. O recibo Tempo refere FT 10/2026, não FT 11/2026. Preserva B1 aceite em `8fcd52c`; esta revisão não autoriza implementação ou emissão. + ## Decisões já tomadas - Começar pelo sector de prestação de serviços, com um serviço pontual como cenário de desenvolvimento. diff --git a/docs/SERVICE_CALCULATION_DELIVERY.md b/docs/SERVICE_CALCULATION_DELIVERY.md new file mode 100644 index 0000000..b26edfc --- /dev/null +++ b/docs/SERVICE_CALCULATION_DELIVERY.md @@ -0,0 +1,69 @@ +# Primeiro cálculo de serviço — entrega local delimitada + +26/10/2026. Preservadas identidade, A, B1 (`8fcd52c`), preparação documental, pré-visualização e alterações posteriores existentes. Não constitui aceitação pelo utilizador nem autorização de emissão. + +## Comportamento entregue + +Uma linha, quantidade positiva, preço não negativo, moeda explícita e modo imposto acrescido (`added`). Aritmética Brick\Math já existente, sem dependências novas nem alterações de versões. Base e IVA exactos sem float ou truncagem intermédia. A política **`SGF-SERVICE-NET-VAT-TRUNCATE2-v1`** trunca apenas o IVA documental proposto a duas casas, conserva a diferença e calcula total proposto apenas quando a base é exactamente representável a duas casas. Caso contrário o total fica pendente, sem ajustar ou truncar a base. + +Truncagem: decisão operacional expressa do utilizador, **não obrigação legal comprovada**. Fontes reutilizadas: ficha InvesteMoz `IVA-GERAL-BASE-LIQUIDA` v1.2, cadeia da Lei 22/2022 republicada/art. 17(1), CIVA art. 15 e acontecimentos arts. 7/8/17(2). A matriz e limites constam de [SERVICE_INVOICE_CALCULATION_SPEC.md](SERVICE_INVOICE_CALCULATION_SPEC.md). Não se repetiu investigação nem se copiou código do portal. + +Separação confirmada: a classificação contabilística orienta contas; o enquadramento fiscal da operação determina tratamento e taxa de IVA. Nenhuma taxa é inferida da conta/classificação contabilística ou aplicada universalmente a serviços. Os 16% são exclusivamente parâmetro identificado dos ensaios deste incremento. Associações contabilísticas e lançamentos não foram implementados. + +Perfis e resultados são imutáveis. Cada resultado conserva entradas, moeda, base exacta, IVA exacto, IVA proposto, diferença, total/pendência, política, perfil/versão/fontes e versões de rascunho, preparação e origem. Mudanças tornam o resultado anterior desactualizado na nova consulta; o histórico mantém os valores originais. A leitura não recalcula nem grava. A pré-visualização já aberta conserva a versão consultada e avisa de alterações pelo mecanismo existente, exigindo actualização explícita. + +Execução por `POST /api/service-calculations/{id}` com contexto validado, sessão, CSRF e versões de rascunho/preparação/perfil. Sem campos arbitrários de taxa ou resultados enviados pelo navegador. Bloqueio fora de `testing`/`browser-testing`, seguido da guarda do destino efectivo `sgf_tempo_test`. O ensaio requer consulta e edição de rascunho já concedidas à identidade sintética; consulta não permite executar. Configurar aparência não dá esse acesso. Nenhuma concessão nova foi aplicada às contas reais e não existe via de activação de perfil real neste incremento. + +Bloqueio transaccional da empresa serializa comandos com as alterações existentes. Revalida contexto/permissões, rejeita versões antigas e origem/preparação por rever, e garante uma única inserção por entrada/versionamento, com repetição devolvendo o mesmo resultado. Auditoria da criação na mesma transacção. Chaves compostas e trigger de inserção recusam associações cruzadas; triggers append-only impedem actualizações/transferências em massa e apagamentos de perfis/resultados. Não se apresenta isto como prova de RLS. + +## Migração e preservação + +Delta previamente apresentado: `2026_10_26_030000_create_service_calculations.php` cria `service_calculation_profiles`, `service_calculation_results`, índices, relações e triggers. Não altera B1, cadastros, permissões ou dados existentes; não tem rollback destrutivo automático. + +Aplicada primeiro em `sgf_tempo_test` nas provas; depois em **`sgf_tempo_dev`**, por `scripts/sgf.ps1 migrate`, com proprietário separado. Antes de aplicar em desenvolvimento, o estado das migrações confirmou que apenas esta estava pendente. Verificação posterior: contagens e hashes do conteúdo das 14 tabelas existentes comparadas ficaram idênticos. Tabelas novas em desenvolvimento: **zero perfis, zero resultados**. [Prova de preservação](proofs/calculation-dev-preservation.json). Nenhum reset/fresh em desenvolvimento foi aplicado por este incremento. + +## Provas + +Regressões dirigidas: **53 testes, 743 asserções**, todos passados, abrangendo `ServiceCalculationTest`, `DocumentPreviewTest`, `InternalConfirmationTest`, `DocumentPreparationTest` e `DatabaseSafetyTest`. Execução exclusivamente em `sgf_tempo_test`. Compilação `npm run build` passou (Vite 8.3.5). Verificação de whitespace passou; nenhuma versão de ferramenta foi alterada. + +Cobertura nova: três casos pedidos, zero explícito, fronteiras imediatamente abaixo/na/acima da truncagem, base com fracções adicionais, perfil/taxa/moeda ausentes ou incompatíveis, modo incluído recusado, repetição, versões antigas de rascunho/perfil, histórico desactualizado, leitor sem edição, revogação no pedido seguinte, unidade de perfil alheia, empresa irmã, tentativa de transferência em massa, bloqueio no ambiente normal e fotografia B1 preservada. Guardas existentes continuam a recusar desenvolvimento e sobreposição por URL e a verificar privilégios do papel de testes. + +Concorrência separada, em dois processos PHP realmente sobrepostos: primeiro mantém bloqueio enquanto segundo entra; um resultado criado e um replay com o mesmo ID, sem duplicação. [Prova concorrente](proofs/calculation-concurrency.json). + +Navegador Edge, **login real sintético**, com CSRF/sessão activos em `http://127.0.0.1:8001`, base `sgf_tempo_test`, sessões/cache isolados. Não se usou `actingAs` como demonstração de login. Taxa 16% apenas no perfil identificado `ENSAIO-MZN-16 v1`, moeda MZN explicitamente indicada: + +| Base | IVA exacto | IVA truncado | Diferença | Total proposto | Prova | +| --- | --- | --- | --- | --- | --- | +| 100 | 16 | 16,00 | 0 | 116,00 | [Imagem](proofs/calculation-100.png) | +| 1000,03 | 160,0048 | 160,00 | 0,0048 | 1160,03 | [Imagem](proofs/calculation-1000.png) | +| 0,03 | 0,0048 | 0,00 | 0,0048 | 0,03 | [Imagem](proofs/calculation-small.png) | +| 0,0001 | 0,000016 | 0,00 | 0,000016 | Pendente | [Imagem](proofs/calculation-base-pending.png) | + +Repetição do segundo caso no navegador conservou o mesmo resultado. Em todos: aviso permanente **RASCUNHO — SEM VALIDADE FISCAL**, identificação de ensaio, diferença preservada e pendências visíveis. [Registo da observação](proofs/calculation-browser-results.json). Separador decimal dos valores na interface é actualmente ponto; os valores são strings exactas, sem conversão de apresentação para float. + +### Percurso exacto e repetição local da prova + +1. Entrar como identidade sintética existente da fixture, com a credencial local criada aleatoriamente; nunca publicar a credencial. Seleccionar **Empresa Horizonte — Demonstração → Unidade Central — Demonstração**. +2. **Rascunhos de facturação → Ensaio base 100 → Pré-visualizar rascunho → Calcular ensaio · ENSAIO-MZN-16 v1**. Consultar os quatro valores e o total proposto. +3. **Voltar ao registo**, seleccionar os casos **Ensaio base 1000.03**, **Ensaio base 0.03** e **Ensaio base 0.0001**, repetir pré-visualização/cálculo. O segundo caso também foi calculado pela prova concorrente e a execução no navegador reutilizou o mesmo resultado. +4. Sair da sessão. A instância de prova é encerrada após a entrega; a aplicação normal não muda de ligação. + +Para preparar outra prova, parar primeiro a instância com `scripts/browser-proof.ps1 stop`; executar apenas os testes dirigidos abaixo (recriam a base de testes, nunca desenvolvimento); arrancar novamente `scripts/browser-proof.ps1 start` e preparar os quatro rascunhos por `sgf.ps1 php scripts/calculation-fixture.php --env=testing`. O preparador de fixtures recusa uma base não vazia; não apaga dados para conseguir prosseguir. Depois, `sgf.ps1 php scripts/calculation-concurrency.php --env=testing` demonstra a concorrência antes do percurso no navegador. Não repetir o preparador de cálculo sobre a mesma fixture. + +```powershell +powershell -NoProfile -ExecutionPolicy Bypass -File scripts/sgf.ps1 test --stop-on-failure --filter="ServiceCalculationTest|DocumentPreviewTest|InternalConfirmationTest|DocumentPreparationTest|DatabaseSafetyTest" +powershell -NoProfile -ExecutionPolicy Bypass -File scripts/sgf.ps1 npm run build +``` + +Os scripts PowerShell existentes podem precisar de `-ExecutionPolicy Bypass` apenas nesse processo; não se alterou política global. A execução recusa portas ocupadas, sem terminar processos de outro projecto. + +## Ficheiros deste incremento + +- Núcleo novo: `app/Modules/Services/ServiceCalculation.php`; migração nova acima; `tests/Feature/ServiceCalculationTest.php`. +- Integração: `DocumentPreview.php`, `Http/DocumentPreviewController.php`, `routes/web.php`, `resources/js/DocumentPreview.jsx`. +- Provas: `scripts/calculation-fixture.php`, `calculation-worker.php`, `calculation-concurrency.php`, `calculation-preservation.php` e ficheiros `docs/proofs/calculation-*`. +- Documentação: esta entrega, especificação de cálculo, README e AGENTS. Restantes alterações preexistentes foram preservadas; nenhum commit/checkpoint foi criado sem pedido. + +## Condições para activação real + +Continua por demonstrar a aplicabilidade concreta: regime, serviço/localização, tratamento, base tributável e acontecimento/exigibilidade. Activação requer incremento próprio com perfil real fundamentado/versionado e direitos fiscais especificamente aprovados, sem herdar poderes visuais. A decisão operacional de truncagem não comprova conformidade fiscal do montante documental. Representação de base/total com fracções adicionais fica pendente. Incluído e demais casos continuam excluídos. Não há número/data de emissão fiscal, emissão, PDF, recebimentos ou lançamentos; nenhum documento foi publicado. diff --git a/docs/SERVICE_INVOICE_CALCULATION_SPEC.md b/docs/SERVICE_INVOICE_CALCULATION_SPEC.md new file mode 100644 index 0000000..99fbd19 --- /dev/null +++ b/docs/SERVICE_INVOICE_CALCULATION_SPEC.md @@ -0,0 +1,212 @@ +# Primeiro cálculo de factura de serviço — especificação e incremento delimitado + +Data da revisão e consulta das fontes: 26 de Outubro de 2026 (Africa/Johannesburg). + +**Actualização posterior autorizada pelo utilizador:** implementação delimitada do cálculo sobre preço sem imposto, com provas sintéticas isoladas. Não autoriza configuração fiscal real, novas concessões ou operações fictícias da Tempo Lda. Preservar preparação documental, pré-visualização, B1 e checkpoints `8fcd52c`, `ca13acb`, `26b80df`, incluindo alterações posteriores. Não reabrir aceitações. + +## Política operacional aprovada para este incremento + +**Separação expressamente confirmada pelo utilizador:** classificação contabilística da mercadoria/serviço orienta as contas; enquadramento fiscal da operação determina o tratamento de IVA e a taxa aplicável, incluindo taxas diferentes em serviços abrangidos. São associações distintas. Não deduzir a taxa da conta contabilística, da classificação contabilística ou do simples facto de se tratar de serviço; não presumir 16% para tudo. Este incremento não implementa contas/lançamentos nem automatiza a classificação fiscal. A taxa de ensaio provém exclusivamente do perfil sintético identificado. + +Versão imutável **`SGF-SERVICE-NET-VAT-TRUNCATE2-v1`**. Esta orientação posterior prevalece sobre as propostas anteriores de âmbito/reconciliação desta especificação. A matriz abaixo continua a distinguir conhecimento fiscal documentado de política de produto. + +- Uma linha, quantidade positiva, preço não negativo, moeda explícita e modo `added`. Incluído, múltiplas linhas, negativos, descontos, retenções, câmbio, adiantamentos e correcções ficam excluídos. +- `B = q × p`; `IVA_exacto = B × taxa_percent × 0,01`, em aritmética exacta, sem float ou truncagem intermédia. +- `IVA_documental_proposto = truncate(IVA_exacto, 2)` para valores não negativos; `diferença_descartada = IVA_exacto − IVA_documental_proposto`. Todas as grandezas ficam preservadas, incluindo quando o IVA proposto é `0,00`. +- Se B for exactamente representável a duas casas, `total_documental_proposto = B + IVA_documental_proposto`, apresentado a duas casas. Caso contrário, conservar B, IVA exacto, IVA truncado e diferença; total proposto fica nulo e a representação da base/total pendente. Não truncar B nem criar ajustes. +- A truncagem é **decisão operacional expressa do utilizador**, não obrigação legal comprovada. Não altera a regra exacta reutilizada do portal nem fotografias B1. HALF_UP/HALF_EVEN permanecem apenas ensaios históricos de comparação. +- Perfil de ensaio identificado por unidade, nome e versão imutável; definição conserva moeda, taxa, natureza sintética, política e fontes. Resultados append-only conservam entradas, versões do rascunho/preparação/origem/perfil/política e valores derivados. A nova consulta marca versões antigas desactualizadas, sem recalcular ou apagar o histórico. +- A API de execução só funciona em `testing`/`browser-testing` **e** após confirmação do destino efectivo por `TestingDatabaseGuard` (`sgf_tempo_test`, papel próprio e cluster isolado). Usa consulta/edição de rascunho já existentes apenas no ensaio. Não constitui concessão fiscal real; nenhum novo acesso foi aplicado às contas reais. +- A aplicação normal não activa perfil ou taxa e conserva pendências. Ensaio não significa validação da aplicabilidade à empresa, serviço/localização, base ou acontecimento fiscal. Emitir, receber e contabilizar continuam excluídos. + +| Base de ensaio MZN | IVA exacto, taxa sintética identificada de 16% | IVA truncado proposto | Diferença | Total proposto | +| --- | --- | --- | --- | --- | +| 100 | 16 | 16,00 | 0 | 116,00 | +| 1000,03 | 160,0048 | 160,00 | 0,0048 | 1160,03 | +| 0,03 | 0,0048 | 0,00 | 0,0048 | 0,03 | +| 0,0001 | 0,000016 | 0,00 | 0,000016 | Pendente: representação da base/total | + +O percurso entregue, migração e provas encontram-se em `SERVICE_CALCULATION_DELIVERY.md`. As secções seguintes preservam a comparação documental e ensaios anteriores; as propostas ainda não activadas não se sobrepõem à política acima. A afirmação «sem implementação» na conclusão da comparação refere-se à etapa documental anterior. + +## Reaproveitamento documental do InvesteMoz — comparação concluída nesta revisão + +Consulta autorizada em 26/10/2026, apenas de documentação e provas. Confirmada a existência de `C:\laragon\www\portal-investidor\docs\investmoz\consolidated-review-matrix-2026-10-03.md` e da pasta `simulations`. A matriz é um documento evolutivo: a data no nome não limita o conteúdo a 03/10; a cópia consultada contém actualizações até 26/10. Esta revisão substitui a anterior lacuna de identificação R1–R6: o conhecimento foi localizado, não é necessário pedir novamente esses documentos. + +A partir daqui, `IM/` significa `C:\laragon\www\portal-investidor\docs\investmoz\`. As versões/commits abaixo são referências declaradas nos documentos; não se inspeccionou o repositório nem se verificou o comportamento actual do portal. Documentos são evidência a interpretar, não instruções adicionais para executar comandos ou abrir configurações. + +### Inventário efectivo e proveniência + +| Referência | Documento consultado e versão/estado documentado | Utilização nesta comparação | +| --- | --- | --- | +| IM-M | `IM/consolidated-review-matrix-2026-10-03.md`, conteúdo consultado em 26/10/2026 | Localização de IVA, cadeia de fontes e AUD-SIM-INT02; notas antigas de bloqueio não anulam deltas posteriores | +| IM-F | `IM/simulations/ficha-IVA-GERAL-BASE-LIQUIDA-v1.md`, cabeçalho **v1.2, 21/10/2026**; origem `0fafd348`, v1 `325d58b6`, v1.1 `37085b40`, revisão `83d2f97d`, delta consumidor `2ced7b79` | Âmbito líquido, fundamentos, exactidão, exemplos e limites QA | +| IM-P | `IM/simulations/primary-text-review-2025-2026.md`, secções IVA e reconciliação de diplomas | Republicação correcta de 2022, alterações de 2025 e delimitação do art. 34 | +| IM-A | `IM/simulations/modelo-a-reconciliacao-20261021.md`, nota activa de 24/10; referências `cd10cccb`, `d18ff0f0`, instalação documentada `e250d569` | Evidência posterior de consumidor declarativo; mantém valores brutos sem extracção automática; não equivale a emissão de factura | +| IM-E | `IM/simulations/l1-currency-events-delivery-20261025.json`, candidato `0052cd42d2755753b7e54257db05df8fbd9f08bc`; `iva-l1-currency-events-qa-20261025.json`, implementação documentada `7e6e462e12a50aab6ba0043740ffeecb414cbedf` | Facto gerador/exigibilidade: P131/P132 completos no recorte, P104 cambial parcial; L1 continua aberto | +| IM-D | `IM/simulations/data-contracts.md` e referências de representação na matriz | Separar simulação financeira e formulários IRPC de regras de factura IVA | + +Foram também consultadas referências documentais dos recibos de continuação integrada. Não se abriram os ficheiros de código, configurações ou saídas privadas que esses documentos mencionam. Não se executaram os testes neles descritos. + +### Matriz de regras, provas e adequação ao SGF + +| Regra | Origem/versão | Fonte, vigência e condições | Provas existentes documentadas | Classificação e reaproveitamento | Pendência efectiva para SGF | +| --- | --- | --- | --- | --- | --- | +| Base tributável | IM-F v1.2, IM-P | CIVA republicado pela Lei 13/2016, art. 15(1), especiais 15(2), inclusões 15(5), exclusões condicionais 15(6), PDF 13–14; início 01/01/2017, alterações confrontadas com 2022/2025 | Base 100 → imposto 16; base 105 após componentes condicionais → 16,8 | **Fundamentada, adaptação de caso pendente.** Reutilizar contraprestação e condições; orçamento, rótulo de serviço ou `q×p` não provam base legal | Confirmar que o serviço pontual SGF corresponde à base líquida proposta, sem componentes especiais | +| Taxa geral e vigência | IM-F/IM-P; decisão de proveniência documentada em 08/10 | Lei 22/2022 **republicada**, art. 17(1), PDF 3, BR 2252-(27); art. 6 da lei, PDF 4: 01/01/2023. Lei 10/2025, vigente desde 01/01/2026, não inclui arts. 15/17 na lista de alterações | Perfil QA `IVA-GERAL-BASE-LIQUIDA`: 16 percent, moeda MZN, contexto declarado `internal_general_net`, cobertura técnica 2026 | **Regra geral fundamentada; simulação demonstrada.** Reutilizar cadeia documental e taxa exacta sob o âmbito aplicável, não as imagens como fonte | Confirmar regime, incidência, localização e tratamento da operação/empresa; não presumir taxa geral para toda operação | +| Âmbito do serviço | IM-F | CIVA arts. 1(1)a, 2(1)a, 4(1), 6(3) e excepções; não generalizar art. 6(1), relativo a bens, aos serviços | Exclusões expressas: isenções, taxas reduzidas, importações, digital/não residentes, dedução/reembolso | **Fundamentada com classificação pendente.** Reutilizar perguntas e fronteiras, não classificação automática pelo perfil do cliente | Identificar serviço e localização concretos; dimensão, nome e NUIT não demonstram regime | +| Data fiscal | IM-F + IM-E de 25/10 | CIVA art. 17(2); facto gerador art. 7, PDF 8; exigibilidade art. 8, PDF 9. Cadeia 2022/2025 documentada sem alteração destes artigos | IM-E: 9 ramos P131 e 5 tratamentos P132; serviço concluído e cobrança antecipada distinguidos; factura pontual/tardia/ausente, pagamentos e resto pendente. 19 testes frontend, 1 teste API/65 asserções, prova Edge de recuperação, reportados no recibo | **Fundamentada e ensaiada no recorte.** Reutilizar distinção acontecimento/exigibilidade e casos, não data da consulta, vencimento ou B1 como substituto | Aplicar ramo ao serviço SGF e identificar os dados que o comprovam; não implementar todos os 14 ramos neste primeiro incremento | +| Precisão | IM-F v1.2 e provas QA | Decimal/racional exacto; taxa em percent distinta de fracção; `not_applied`, sem arredondamento automático | `0,03×16%=0,0048`; `9007199254740993,0003×16%=1441151880758558,880048`; zero explícito distinto de ausente | **Orientação técnica já estabelecida e demonstrada.** Reutilizar os casos e representação exacta, sem copiar código nem reabrir este princípio | Limites técnicos do SGF e tratamento de capacidade; o caso grande é prova do portal e não alarga os limites de entrada de A | +| Arredondamento do cálculo líquido | IM-F v1.2 | Nenhuma quantização é aplicada nesse percurso; duas casas monetárias não obrigam a arredondar o resultado exacto | `0,0048` preservado, não convertido em `0,00`; persistência/relatório conservam resultado | **Reutilizável no mesmo âmbito.** Retirar a ausência de política genérica como bloqueio ao cálculo exacto líquido; não escolher HALF_UP/HALF_EVEN | Uma exigência futura de formato/consumidor requer fundamento próprio, sem alterar o valor exacto | +| Preço com imposto incluído | IM-F/IM-P/IM-A | CIVA art. 34, Lei 10/2025, PDF 14: extracção com divisor 116 e arredondamento à unidade mais próxima **nesse contexto** | O percurso líquido exclui extracção; Modelo A preserva bruto sem calcular a base; não foi demonstrada emissão SGF | **Regra identificada, adequação pendente.** Reutilizar fonte e delimitação, não transpor genericamente o arredondamento para toda factura | Conferir âmbito do art. 34 no consumidor de factura pretendido, unidade, sequência e empates aplicáveis; identidade algébrica não resolve isso | +| Apresentação e reconciliação | IM-F, IM-A, IM-D e matriz | CIVA art. 27(5)c/d distingue preço líquido/base, taxa e imposto. RIVA art. 9(1)b do exemplar de 2008 trata cheque/vale, não arredondamento universal. M20/M22 são representações IRPC | QA preserva valor/moeda/contexto e fotografia; exemplos artificiais de centésimos mostram conflitos, não normas | **Princípios reutilizáveis; adaptações declarativas não aplicáveis à factura.** Separar cálculo, apresentação e emissão | Determinar apenas a representação exigida para o consumidor futuro; não arredondar para imitar formulário fiscal | +| Historial e limites das provas | IM-F revisões e IM-E | Regra/entradas/contexto versionados, relatório preservado; simulação sobre enquadramento declarado | IM-F: 6 testes/86 asserções de governação; delta 8 testes/75 asserções e 2 frontend; rota QA 1 teste/17 asserções; exemplo Edge 1000,03 → 160,0048 recuperado com hash igual | **Evidência técnica reportada, não homologação jurídica.** Reutilizar requisitos de rastreabilidade e casos sintéticos, preservando B1 do SGF | Não transferir papéis, bypass RLS de QA, credenciais, contas ou estado de activação do portal. Testes de política não provam isolamento RLS | + +A aceitação documental de uma fonte no portal não é parecer jurídico nem aprovação automática para emitir no SGF. As provas acima são as reportadas nas versões identificadas, não uma nova execução nem conferência independente do estado actual. A cobertura QA de 01/01–31/12/2026 não é caducidade legal da taxa em 31/12/2026. O trabalho recente de IRPC e os formatos M20/M22 não constituem fundamento de arredondamento IVA. + +### Exemplares e integridade + +Verificados por leitura os SHA-256 das cópias em `IM/simulations/source-archive/`; coincidem com os registados na ficha. O cotejo de artigos/páginas acima é reaproveitado da leitura documental do portal: não se apresenta como nova leitura jurídica integral dos PDFs nesta revisão. + +| Exemplar | SHA-256 confirmado | +| --- | --- | +| `Lei-13-2016-CIVA-BR-156-10-suplemento.pdf` | `B90DC7C14ECEA2E378C4A62E8E5A47D54A5644C457BAEB8B8053B92FD2A5710B` | +| `Lei-22-2022-IVA-republicada-BR-250-2-suplemento.pdf` | `EA1B0DC6F5CF6E595F6D9A19E7042F398999E0087CAEF1785F6E8FAC571B5F53` | +| `BR-248-I-Suplemento-1-2025.pdf` | `CCF2A8DEECA820F2DD076B4B2141B1EFE3F6A806568C3A587CA59A8E92F4C251` | + +Não houve nova pesquisa na Internet: as fontes e provas disponíveis permitem reduzir as lacunas antes de qualquer pesquisa adicional. + +## 1. Caso mínimo proposto + +Um serviço pontual, **uma linha**, uma moeda documental explicitamente escolhida, uma quantidade positiva, preço não negativo, um tratamento tributado e uma taxa positiva aplicável à data fiscal de referência aprovada. A especificação contempla os dois modos existentes: imposto incluído e acrescido. A proposta pequena da secção 8 começa pelo acrescido sobre base líquida; incluído permanece pendente até à adequação específica do art. 34, sem eliminar o modo existente. «Por definir» mantém pendência. + +Sem descontos, adiantamentos, retenções, encargos adicionais, câmbio, múltiplas taxas, facturação parcial, correcções ou cálculos de recebimentos. Isenção, não sujeição e taxa zero não serão representadas como uma taxa positiva em falta: precisam de tratamento/fundamento próprios e ficam fora desta primeira implementação proposta. O enquadramento real ainda não está aprovado. + +Uma linha reduz o primeiro incremento, mas não dispensa escolher e registar uma política por linha ou por documento. Nessa situação os resultados coincidem; não inferir daí equivalência quando se acrescentarem linhas. O exemplo de três linhas abaixo serve só para fechar essa decisão e impedir uma expansão silenciosa. + +Continuar a mostrar **RASCUNHO — SEM VALIDADE FISCAL**. Um cálculo matematicamente completo não cria número fiscal, emissão, recebimento ou lançamento, nem altera a confirmação interna B1. + +## 2. O que está confirmado e o que não está + +| Estado | Conteúdo | +| --- | --- | +| Base existente a preservar | Quantidades/preços como cadeias decimais, até 16 algarismos inteiros/8 decimais; aritmética exacta; modos por definir/incluído/acrescido; moeda não presumida; contexto, permissões, versões e fotografias imutáveis | +| Decisão expressa para esta especificação | Caso simples, distinção entre cálculo/arredondamento/apresentação, exemplos sintéticos, bloqueio por regras em falta e separação de numeração/emissão | +| Proposta técnica a aprovar | Uma linha e uma taxa positiva; cálculo racional exacto; percurso líquido sem arredondamento; ensaios de quantização separados do perfil real; cálculo derivado de rascunho sem actualização retroactiva | +| Informação em falta | Regime da empresa, natureza/localização da operação, tratamento, taxa/vigência aplicáveis, data fiscal de referência, moeda e responsável pela validação; regra específica de extracção/apresentação apenas quando o respectivo consumidor a exigir | +| Não aprovado | Aplicar automaticamente 16% à Tempo Lda ou a qualquer serviço; presumir isenção/taxa zero; considerar verificada fiscalmente uma fórmula só porque fecha aritmeticamente | + +## 3. Fontes oficiais: reconciliação com a documentação do portal + +A pesquisa pública anterior encontrou a primeira publicação de 2022. **Correcção desta revisão:** não a usar como exemplar normativo; IM-P identifica que foi dada sem efeito e substituída pela republicação no **2.º suplemento do BR 250**, de 28/12/2022, 18 páginas. A cópia arquivada e o hash acima substituem aquela referência como fundamento. Não é necessário voltar a pedir o articulado de 2025: está identificado e cotejado em IM-P/IM-F. + +| Fonte oficial / exemplar reutilizado | Regra documentada e vigência | Limite / acção restante | +| --- | --- | --- | +| [INM — Lei 13/2016, republicação CIVA](https://www.inm.gov.mz/pt-br/content/suplemento-n%C2%BA-10-de-301216-pag-1426-259-290-br-n%C2%BA-156-boletim-da-rep%C3%BAblica-i-serie), arquivo identificado acima | Arts. 1/2/4/6 incidência e serviços; 7/8 acontecimentos; 15 base; 17(2) taxa na exigibilidade; 27(5)c/d componentes documentais. Início 01/01/2017, ler com alterações posteriores | Aplicabilidade à operação concreta, não nova descoberta dos artigos | +| [INM — Lei 22/2022 republicada, suplemento 2](https://www.inm.gov.mz/pt-br/content/assembleia-da-rep%C3%BAblica-suplemento-n%C2%BA-2-de-281222-pag-2252-25-42-br-n%C2%BA-250-boletim-da), arquivo identificado acima | Art. 17(1): 16%; art. 6 da lei: início 01/01/2023 | Taxa geral fundamentada; não configura automaticamente a Tempo Lda | +| BR 248, suplemento 1, 29/12/2025, exemplar arquivado acima; IM-P/IM-F | Lei 10/2025, PDF 12–15, início 01/01/2026; art. 34 PDF 14 sobre extracção; arts. 15/17 não incluídos na lista de alterações | Confirmar adequação do art. 34 ao consumidor incluído pretendido; não presumir vigência única de todas as leis do mesmo boletim | +| Decreto 7/2008, `BR-16-I-Serie-2008-04-16.pdf`, referenciado em IM-F | RIVA arts. 4/5: base/operação versus imposto devido após deduções; art. 9(1)b: meio de pagamento por cheque/vale, exemplar histórico | Não transpor esse arredondamento para cálculo líquido ou para toda factura | +| Comunicação governamental de 30/09/2026, já registada em IM-F | Anúncio de alterações regulamentares; articulado publicado/eficácia por disposição não demonstrados nessa evidência | Pesquisar só quando uma disposição puder afectar o consumidor delimitado; não bloquear genericamente o cálculo líquido exacto | + +As rectificações de 2017 e a referência a Decreto 8/2017/BR 50 de 30/03/2017 estão já sinalizadas no dossier; não repetir a busca no BR 54 incorrectamente associado. Correspondência de disposição e consolidação regulamentar permanecem pontuais quando relevantes, não prova de inexistência de conhecimento. Não se afirma consolidação integral de toda a legislação até hoje. + +## 4. Entradas e perfil de cálculo proposto + +Reutilizar IDs/versões de empresa, unidade, cliente, prestação e rascunho, linhas/preparação e moeda. Não duplicar cadastros ou alterar preços guardados. O perfil de regra, se futuramente aprovado, identifica: + +- Regime e tratamento da operação, com prova de aplicabilidade. +- Taxa exacta e unidade explícita: percentagem e fracção são distintas; 10% corresponde exactamente a 0,10, sem float. +- Data fiscal de referência, regra que a determina e intervalo de vigência sem sobreposição/ambiguidade. +- Moeda e modo incluído/acrescido. Para o percurso líquido, arredondamento `not_applied` e reconciliação exacta `B* + I* = T*`. Escala/pontos/método de quantização só para o consumidor específico fundamentado. +- Identidade/versão do perfil, fontes, responsável/estado de validação e âmbito da empresa/operação. + +Os exemplos usam **UT, unidade monetária fictícia de ensaio**, não um código ISO nem a moeda da Tempo Lda. Duas casas e taxas de 10%/20% são parâmetros artificiais do ensaio, não configuração real. Uma taxa de 16% observada nas imagens não activa qualquer perfil. + +## 5. Fórmulas exactas, anteriores a qualquer arredondamento + +Definir `q` quantidade, `p` preço unitário proposto e `r` taxa em fracção exacta. `B*`, `I*`, `T*` são valores matemáticos anteriores à quantização, não montantes emitidos. + +| Modo | Fórmulas | +| --- | --- | +| Imposto acrescido | `B* = q × p`; `I* = B* × r`; `T* = B* + I*` | +| Imposto incluído | `T* = q × p`; `B* = T* / (1 + r)`; `I* = T* − B*` (equivalente a `T* × r / (1 + r)`) | +| Por definir / tratamento desconhecido | Não escolher fórmula fiscal. Conservar apenas a aritmética provisória já existente e pendências | + +Estas identidades matemáticas não provam que `q × p` seja a base legal da operação. Só se usam quando o perfil fiscal aprovado confirmar que esse caso simples corresponde ao valor relevante, sem componentes adicionais. Um preço incluído desconhecido não é «base sem imposto». + +### Precisão de cálculo + +Princípio existente, reforçado pelas provas do portal: multiplicação decimal exacta e **fracções racionais exactas** quando a divisão não terminar, reutilizando Brick\Math já instalado, sem novas dependências. Não truncar uma divisão a 8/12 casas e voltar a usá-la como valor exacto. Os limites de entrada de A não são uma regra de arredondamento monetário; produtos/divisões podem exigir mais casas. + +Conservar entradas canónicas e, se necessário para rastreio, numerador/denominador dos resultados exactos. Decimal de uma fracção periódica mostrado ao utilizador deve ser marcado como aproximação e nunca realimentar o cálculo. Definir limites técnicos de tamanho/execução antes da implementação, sem transformar um erro de capacidade em arredondamento silencioso. + +### Arredondamento / quantização + +Definir explicitamente `Q(s,m,x)`: escala monetária `s`, método `m`, valor exacto `x`. Aplicar apenas nos pontos aprovados. A apresentação com duas casas não autoriza quantizar todos os passos a duas casas. + +Parâmetro exclusivo de ensaio, **não norma fiscal nem preferência de produto**: `s=2`, `m=HALF_UP` para valores não negativos. HALF_EVEN e políticas por linha/documento servem para demonstrar diferenças; a regra real exige fundamento fiscal aplicável, começando pela comparação com o material do portal. Não suportar valores negativos neste incremento; correcções exigem âmbito próprio. + +### Ensaios de reconciliação para uma linha — não adoptar como perfil fiscal + +As duas políticas seguintes ficam preservadas apenas como hipóteses de ensaio que expõem diferenças. Não são a proposta actual para o percurso líquido, que conserva B*, I* e T* exactos com `not_applied`; não se pede aprovação por preferência entre métodos: + +- **Acrescido:** `B = Q(B*)`; `I = Q(I*)`; `T = B + I`. A diferença `T − Q(T*)`, se existir, deve ser registada/explicada; não substituir silenciosamente o total por outro cálculo. +- **Incluído:** preservar a âncora bruta `T = Q(T*)`; calcular `I = Q(I*)`; obter `B = T − I`. Registar explicitamente `delta_base = B − Q(B*)`. Esta política de base por diferença evita inventar um desconto, mas precisa de aprovação fiscal; não a apresentar como simples arredondamento independente da base. + +Invariantes a verificar no perfil aprovado: mesma moeda, `B + I = T`, reprodutibilidade e explicação das diferenças face aos valores exactos. Se a norma exigir outra âncora/sequência, substituir o perfil proposto por essa regra antes de implementar. Não exigir simultaneamente invariantes incompatíveis nem esconder o conflito. + +Para múltiplas linhas, somar resultados quantizados por linha pode diferir de quantizar uma soma exacta. Se a política for por documento, falta definir a afectação dos resíduos às linhas e o critério determinístico. Isso não entra implicitamente no primeiro caso de uma linha. Nenhum «ajuste» sem identidade/regra, alteração de taxa ou conta transitória para fazer coincidir totais. + +### Apresentação + +Separar valores exactos, componentes quantizadas e formatação (casas/separadores/língua/moeda). Não analisar novamente texto formatado para calcular. Continuar a distinguir cálculo matemático, validação fiscal e emissão. Mesmo com perfil aprovado, nesta fase o documento é rascunho; total calculado sob perfil não significa dívida emitida ou autorização de emissão. + +## 6. Exemplos sintéticos e resultados esperados + +Perfil fictício `ENSAIO-UT-HU2`, não activável na Tempo Lda; escalas/taxas/âmbitos temporais abaixo são apenas dados de teste. Nenhuma inserção nas bases foi realizada. + +| Caso | Entradas | Resultado exacto | Resultado esperado sob o perfil de ensaio | +| --- | --- | --- | --- | +| A — acrescido | `q=2,5`, `p=80`, `r=10%` | `B*=200`, `I*=20`, `T*=220` | `B=200,00`, `I=20,00`, `T=220,00 UT` | +| B — incluído | `q=2`, `p=55`, `r=10%` | `T*=110`, `B*=100`, `I*=10` | `B=100,00`, `I=10,00`, `T=110,00 UT` | +| C — empate de arredondamento, acrescido | `q=1`, `p=0,05`, `r=10%` | `B*=0,05`, `I*=0,005`, `T*=0,055` | HALF_UP: `B=0,05`, `I=0,01`, `T=0,06`. HALF_EVEN, como alternativa de comparação: `I=0,00`, `T=0,05`. Não intercambiáveis | +| D — incluído com reconciliação | `q=1`, `p=0,03`, `r=20%` | `T*=0,03`, `B*=0,025=1/40`, `I*=0,005=1/200` | Hipótese incluído de ensaio: `T=0,03`, `I=0,01`, `B=0,02 UT`; `delta_base=-0,01`. Arredondar B* e I* independentemente daria `0,03+0,01=0,04`, incompatível com o bruto de `0,03`; não ocultar a diferença | +| E — quantidade fraccionada e preço muito pequeno | `q=1,25`, `p=0,00000001`, acrescido, `r=10%` | `B*=0,0000000125`, `I*=0,00000000125`, `T*=0,00000001375` | À escala fictícia 2, todos quantizam para `0,00`. Preservar os positivos exactos; decidir se a política real permite ou bloqueia essa situação, sem elevar artificialmente preço/total | +| F — preço explicitamente zero | `q=1`, `p=0`, acrescido, perfil e taxa conhecidos | `B*=I*=T*=0` | `0,00` sob regra completa; não demonstra que qualquer serviço gratuito tenha esse tratamento fiscal | +| G — taxa/tratamento em falta, mesmo com preço zero | `q=1`, `p=0` ou `80`, sem perfil fiscal completo | Apenas a aritmética provisória é conhecida | Imposto/total fiscal não apurados; pendência e cálculo não validado. Não usar zero para suprir informação fiscal | + +**Comparação por linha/documento, fora do caso mínimo:** três linhas de base exacta `0,05`, cada uma com taxa artificial de 10%. HALF_UP por linha: imposto `0,01 × 3 = 0,03`, base `0,15`, total `0,18`. Por documento: imposto `Q(0,015)=0,02`, total `0,17`. Diferença `0,01`; bloquear a extensão a múltiplas linhas enquanto a política e a distribuição não estiverem aprovadas. + +**Vigência fictícia:** perfil A válido de 01/01/2030 a 30/06/2030, perfil B desde 01/07/2030, para a mesma operação artificial. Na data fiscal de referência 30/06 seleccionar A; em 01/07 seleccionar B. Data desconhecida, lacuna ou sobreposição ⇒ pendência, sem escolher «a taxa mais recente». Estas datas não representam alteração legal real. + +**Casos recusados/pendentes adicionais:** moeda ausente ou diferente no mesmo cálculo; preço com precisão excedente; quantidade não positiva; modo por definir; regra expirada/sem fonte ou sem validação; rascunho/contexto desactualizados; discrepância de reconciliação; leitura de empresa/unidade alheia. Manter a recusa e o motivo sem gravar resultados parciais como válidos. + +## 7. Estados e comportamento quando faltar regra + +Proposta de distinção, sem novos estados de emissão: + +1. **Pendente de dados/regra:** lista precisa do que falta; imposto/base fiscal/total não apurados conforme dependências. A aritmética provisória existente pode continuar visível, claramente separada. +2. **Simulação sintética:** fórmula/perfil de ensaio explícitos e isolados em testes; nunca valida a empresa real. +3. **Calculado sob perfil aprovado:** só depois de entradas, aplicabilidade, vigência, moeda e política completas, com resultado reconciliado. Ainda não significa documento emitido nem validação automática de todas as obrigações fiscais. +4. **Conflito/fora do âmbito/falha técnica:** não há resultado validado; preservar entradas e última versão identificada sem a apresentar como actual. Falha técnica não é isenção, pendência resolvida ou taxa zero. + +Sem regime, tratamento, taxa, data/vigência ou moeda aplicáveis: **não calcular imposto por omissão e não marcar validado**. No percurso de base líquida exacta, `not_applied` é explícito: a ausência de política genérica de arredondamento não impede esse cálculo. Se faltar uma regra específica exigida para extracção do incluído ou para o consumidor monetário, manter pendente esse resultado/consumidor, sem invalidar silenciosamente valores exactos já determinados. Dar origem e próxima acção: completar dados, obter fonte vigente, confirmar enquadramento ou aprovar a política. Alterar dados/regra invalida a actualidade do cálculo, sem mudar silenciosamente resultados já consultados. + +## 8. Pequena proposta de implementação futura + +Depois da aprovação do incremento, começar pelo percurso de base líquida, uma linha e moeda explícita, sem arredondamento automático. Acrescentar um calculador determinístico do caso de uma linha, reutilizando o rascunho e uma versão explícita de perfil. Não construir já um motor fiscal geral ou editor de taxas arbitrárias. Se faltar validação real, só poderá existir ensaio sintético isolado autorizado; não activar regras incompletas na Tempo Lda. + +Resultado derivado proposto: IDs/versões de origem, modo, perfil/fontes/vigência, data de referência, moeda/escala, entradas exactas, resultados exactos, política/pontos de quantização, componentes reconciliadas, resíduos explícitos e estado/pendências. Definir conservação/versionamento desse resultado no delta futuro; não o inserir no JSON de uma fotografia B1 existente. + +Integração mínima na pré-visualização: manter aviso de rascunho, mostrar o perfil e distinção entre valores exactos/calculados/por validar, sem número ou emissão. A leitura continua sem resolver pendências por si só. Os antigos rascunhos com modo desconhecido não são reinterpretados automaticamente; a activação futura deve ser explícita e versionada. Configurar apresentação não concede gerir regras fiscais ou aprovar cálculos; acessos concretos terão aprovação própria se necessários. + +Provas a exigir futuramente no recorte aprovado: casos exactos reutilizados IM-F, casos A/F/G, moeda desconhecida, datas de vigência, perfil sem validação, versão/contexto, isolamento, reprodutibilidade, reconciliação e permanência das fotografias B1/preparação histórica. Prova visual só em instância isolada com `sgf_tempo_test`; nenhuma operação real ou fixture na Tempo Lda. Nesta etapa não foram implementados ou executados testes do sistema. + +## 9. Decisões realmente restantes + +**Escolhas de produto:** aprovar o primeiro incremento pequeno de cálculo exacto sobre base líquida, uma linha, mantendo incluído visível mas pendente de adequação normativa; indicar a moeda concreta (MZN é a cobertura documentada do portal, não um valor a presumir no SGF) e os actores autorizados. Se o objectivo exigir incluído já no primeiro incremento, resolver antes o ponto fiscal específico abaixo. Nenhuma concessão é inferida dos direitos de pré-visualização. + +**Validação fiscal da operação:** identificar regime, serviço/localização e tratamento aplicáveis à empresa, confirmar que a contraprestação simples constitui a base do art. 15 e determinar o acontecimento/exigibilidade pelos arts. 7/8. A cadeia documental da taxa geral de 16% desde 2023 já foi encontrada; resta a sua aplicabilidade ao caso, não escolher de novo uma taxa por preferência. + +**Incluído e consumidores futuros:** verificar a adequação do art. 34 à factura pretendida e, se aplicável, unidade, sequência e tratamento de empates com fundamento. Só depois definir extracção/reconciliação/apresentação. HALF_UP/HALF_EVEN e formatos M20/M22 não substituem essa validação. Procurar alterações regulamentares apenas para a disposição/consumidor que possa ser afectado, reutilizando o dossier e os exemplares já identificados. + +Não voltam a aprovação valores exactos, ausência de truncagem silenciosa, desconhecido diferente de zero ou história preservada. Não é necessário pedir de novo R1–R6. Nenhuma regra é activada nesta revisão. Não se alteraram código, bases, permissões, fotografias ou portal; não se copiaram implementações nem se executaram testes. Numeração, emissão, PDF, recebimentos, contabilização e publicação permanecem fora do âmbito. diff --git a/docs/proofs/accounting-access-results.json b/docs/proofs/accounting-access-results.json new file mode 100644 index 0000000..efcaa59 --- /dev/null +++ b/docs/proofs/accounting-access-results.json @@ -0,0 +1,11 @@ +{ + "database": "sgf_tempo_dev", + "confirmed_grants_applied": 4, + "company_id": 1, + "proposer_id": 1, + "validator_id": 2, + "no_unit_grants": true, + "prior_grants_unchanged": true, + "business_records_and_calculation_files_unchanged": true, + "real_classification_rows": 0 +} \ No newline at end of file diff --git a/docs/proofs/accounting-browser-results.json b/docs/proofs/accounting-browser-results.json new file mode 100644 index 0000000..d45308d --- /dev/null +++ b/docs/proofs/accounting-browser-results.json @@ -0,0 +1,21 @@ +{ + "database": "sgf_tempo_test", + "url": "http://127.0.0.1:8001", + "real_session_login": true, + "synthetic_distinct_users": true, + "csrf_active": true, + "observed": [ + "Preparer created and submitted category v2 with explicit replacement and start 2026-11-01.", + "Before approval, consultation for 2026-11-01 still resolved category v1.", + "Validator had decision controls without preparation, correction or capture controls.", + "Validator approved v2 with reason and refused another submitted category with reason.", + "Consultation for 2026-10-31 returned category v1; 2026-11-01 returned v2.", + "Operation historical resolution retained category v1, service/plan/account versions and original reference date." + ], + "new_real_grants_applied": false, + "screenshots": [ + "accounting-validation.png", + "accounting-history.png" + ], + "credentials": "omitted" +} \ No newline at end of file diff --git a/docs/proofs/accounting-concurrency.json b/docs/proofs/accounting-concurrency.json new file mode 100644 index 0000000..564b66e --- /dev/null +++ b/docs/proofs/accounting-concurrency.json @@ -0,0 +1,10 @@ +{ + "database": "sgf_tempo_test", + "parallel_processes": true, + "lock_overlap_observed": true, + "statuses": [ + 200, + 409 + ], + "decisions": 1 +} \ No newline at end of file diff --git a/docs/proofs/accounting-dev-preservation.json b/docs/proofs/accounting-dev-preservation.json new file mode 100644 index 0000000..9b62775 --- /dev/null +++ b/docs/proofs/accounting-dev-preservation.json @@ -0,0 +1,13 @@ +{ + "database": "sgf_tempo_dev", + "existing_data_hashes_unchanged": true, + "existing_grants_unchanged": true, + "calculation_files_unchanged": true, + "new_table_counts": { + "ca_proposals": 0, + "ca_submissions": 0, + "ca_decisions": 0, + "ca_resolutions": 0, + "ca_commands": 0 + } +} \ No newline at end of file diff --git a/docs/proofs/accounting-history.png b/docs/proofs/accounting-history.png new file mode 100644 index 0000000000000000000000000000000000000000..a3453dff885a65c91ca20151dca3a493eb9c171d GIT binary patch literal 63897 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 RV5nmo7vfyi$@=lmj3j000QjKfoV2KpKF8 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 literal 0 HcmV?d00001 diff --git a/docs/proofs/calculation-100.png b/docs/proofs/calculation-100.png new file mode 100644 index 0000000000000000000000000000000000000000..47db986e66a35406e2e87bcdc791819ab9c75314 GIT binary patch literal 60152 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 literal 0 HcmV?d00001 diff --git a/docs/proofs/calculation-base-pending.png b/docs/proofs/calculation-base-pending.png new file mode 100644 index 0000000000000000000000000000000000000000..be845951b4e1fa3303d47c9349a8f553a0bcbb3d GIT binary patch literal 67171 zcmeFZcT|&0yEh#B77#_6G*Li$kuKdrubYyDj&uo40|e=cTa<1pRaM&pPY8&-&JS?yOnso@*voyRZ4p+%s2lGI%lpxTdSA zqX{^31^_s7`T?9!0FM9{&tJHB;rzvm7cO49bn!QuYcw>MFVis5U!}Xo%5>ufD-#O~ zJJ%g@3EsUUC?xoc$(c)+F46o(!$?EJD9FyjF8EJh zCtm;zznwife|+u?58y1rnR5(hPU-<%ztp^N=9j+zd7VFV?o`p=&R#xk244f5Ie+Ht z*^3u1T{yMi(xnT4GiT48n!|AYHY1bd1LJ3xc%)41KeEc0y@X@1zcKU5`?1J9G)<6p zfco+Q!^^*R-FXCZ^vPM{PkjIR+mCfw^;g|Jr;OQ8MgDpHr_@t_oxO1G{KeBY35GL( zvw#a{&tE)y?zGRZ9%mTNp1XeAm`RdZ>cQH1`)4oVA9=bMF<*aNSU(vC(49N|0>e25 zfEs|BhU3^)O8Cv}B|d2&{wAk}rcPHjA<0Iu)ZO0|P zv`-X~V;jJQDoNPA#5Z}MC1hsHt^jZ8A>o^EEwYoeDUtmDBJ$`#jmifA!-xMf3H(!c z7n?q8p=0ecj|NQYfz-K72~NT?*7L`VtE@n-QfkTh{U{6NP?IG8r-nFNB&PJI�=P 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�|+tTHXbQ_|wg`?Zno=q&(5+ey#{^J!3R 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 Qt;(`umQjIkX@Btl0SDSaYybcN literal 0 HcmV?d00001 diff --git a/docs/proofs/calculation-browser-results.json b/docs/proofs/calculation-browser-results.json new file mode 100644 index 0000000..1ea6004 --- /dev/null +++ b/docs/proofs/calculation-browser-results.json @@ -0,0 +1,46 @@ +{ + "database": "sgf_tempo_test", + "url": "http://127.0.0.1:8001", + "real_synthetic_login": true, + "context": "Empresa Horizonte — Demonstração / Unidade Central — Demonstração", + "policy": "SGF-SERVICE-NET-VAT-TRUNCATE2-v1", + "observed": [ + { + "base": "100", + "vat_exact": "16", + "vat_proposed": "16.00", + "difference": "0", + "total": "116.00", + "screenshot": "calculation-100.png" + }, + { + "base": "1000.03", + "vat_exact": "160.0048", + "vat_proposed": "160.00", + "difference": "0.0048", + "total": "1160.03", + "repeat_same_result": true, + "screenshot": "calculation-1000.png" + }, + { + "base": "0.03", + "vat_exact": "0.0048", + "vat_proposed": "0.00", + "difference": "0.0048", + "total": "0.03", + "screenshot": "calculation-small.png" + }, + { + "base": "0.0001", + "vat_exact": "0.000016", + "vat_proposed": "0.00", + "difference": "0.000016", + "total": null, + "base_representation_pending": true, + "screenshot": "calculation-base-pending.png" + } + ], + "permanent_notice_observed": true, + "synthetic_label_observed": true, + "credentials": "omitted" +} \ No newline at end of file diff --git a/docs/proofs/calculation-concurrency.json b/docs/proofs/calculation-concurrency.json new file mode 100644 index 0000000..a4e601b --- /dev/null +++ b/docs/proofs/calculation-concurrency.json @@ -0,0 +1,8 @@ +{ + "database": "sgf_tempo_test", + "two_php_processes": true, + "lock_overlap_observed": true, + "same_result_id": true, + "one_insert_one_replay": true, + "result_count": 1 +} \ No newline at end of file diff --git a/docs/proofs/calculation-dev-preservation.json b/docs/proofs/calculation-dev-preservation.json new file mode 100644 index 0000000..8212ad5 --- /dev/null +++ b/docs/proofs/calculation-dev-preservation.json @@ -0,0 +1,22 @@ +{ + "database": "sgf_tempo_dev", + "existing_tables_compared": [ + "a_clients", + "a_services", + "a_service_drafts", + "a_billing_drafts", + "a_history", + "a_events", + "a_outbox", + "a_pending", + "b_internal_confirmations", + "doc_records", + "doc_history", + "document_preview_models", + "document_preview_model_history", + "permission_grants" + ], + "identical_counts_and_content_hashes": true, + "new_profiles": 0, + "new_results": 0 +} \ No newline at end of file diff --git a/docs/proofs/calculation-small.png b/docs/proofs/calculation-small.png new file mode 100644 index 0000000000000000000000000000000000000000..ede9e688e76c064f327c7012eca2c55373c8fe4d GIT binary patch literal 60794 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/proofs/document-01-issuer-profile.png b/docs/proofs/document-01-issuer-profile.png new file mode 100644 index 0000000000000000000000000000000000000000..9eccbfdd38f8587ca72fd55c02f648c06f57e670 GIT binary patch literal 54148 zcmeFZbx>U0vM4?TO|X#Q46ea~Gk6FN0RjXYEa(7(4=xFk;7*X>F2RBfJ_!UF2<|Yr zyIX*e{K%K@y!)MZ?>VP#{p!7Q|9G3KUA0&5)!nOCPw&;n k_fcwhwO7Z|SGynkY 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 literal 0 HcmV?d00001 diff --git a/docs/proofs/document-03-read-only.png b/docs/proofs/document-03-read-only.png new file mode 100644 index 0000000000000000000000000000000000000000..849a398b5bc72394acf5c5d8d40a89e6bbca9aa3 GIT binary patch literal 55212 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ƌ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