Implementa registo e conferencia de pagamentos externos
This commit is contained in:
+12
-2
@@ -6,7 +6,7 @@ Estado actualizado em 28 de Outubro de 2026. Projecto activo: C:\laragon\www\com
|
||||
| ------------------------ | --------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
||||
| Acesso e organização | Fortify, conta, empresa, equipa, departamentos e centros de custo | MFA obrigatório e ciclo completo de acessos |
|
||||
| Requisições e aprovações | Rascunhos, cálculos exactos, etapas, segregação e snapshots | Validação empresarial das regras provisórias |
|
||||
| Fornecedores | Cadastro, anexos privados e versões bancárias com duas validações | Integração futura com pagamentos |
|
||||
| Fornecedores | Cadastro, anexos privados e versões bancárias com duas validações | Múltiplas contas e verificação bancária externa |
|
||||
| Cotações | Propostas, avaliações e matriz comparativa | Multimoeda e revisão das propostas |
|
||||
| RF-AF-01 | Declarações pessoais, histórico e ConflictGuard no servidor | Política de periodicidade, validade e levantamento |
|
||||
| Adjudicação | Escolha fundamentada, revalidação e aprovação do valor final | Excepções, revisão e cancelamento sem política ficam bloqueados |
|
||||
@@ -15,7 +15,7 @@ Estado actualizado em 28 de Outubro de 2026. Projecto activo: C:\laragon\www\com
|
||||
| Stock | Artigos, armazéns, entradas, saídas fundamentadas, transferências atómicas, contagens e ajustes auditados por empresa | Revisão visual, reposição e conversões |
|
||||
| Equipamentos e peças | Cadastro, compatibilidade, mínimos, alertas, validação técnica e rastreabilidade | Regra de investimento; adjudicação/emissão de equipamento bloqueadas |
|
||||
| Orçamento | Dotação por empresa/centro/exercício, aprovação independente, reservas e compromissos | Revisão visual, reforços e validação operacional integral |
|
||||
| Facturas e pagamentos | Registo por empresa, conferência, validação independente e consumo orçamental | Pagamentos, notas de crédito e anexos |
|
||||
| Facturas e pagamentos | Facturas, consumo e registo/conferência de pagamentos externos | Estornos, notas de crédito e anexos |
|
||||
| Início e navegação | Página inicial própria, menus por área/perfil e consulta pública por módulo | Revisão visual |
|
||||
| Auditoria | Histórico das operações implementadas | Exportações, retenção e protecção contra SQL administrativo |
|
||||
|
||||
@@ -23,6 +23,16 @@ Preservar enums, políticas, modelos relacionais, Brick Math e isolamento por em
|
||||
|
||||
## Verificação actual
|
||||
|
||||
Registo e conferência de pagamentos externos entregues, com liquidação parcial,
|
||||
independência, revalidação bancária e consumo orçamental sem duplicação.
|
||||
Suite actual: **347 aprovados, 3 ignorados e 2.630 asserções**.
|
||||
Migração 000012 aplicada no lote 13 após backup e restauro verificados de 44
|
||||
tabelas. Três cenários concorrentes PostgreSQL e 33 testes específicos aprovados.
|
||||
Tabela de pagamentos externos vazia na base real. Não executa transferências.
|
||||
Reforços, estornos, investimento e revisão visual continuam pendentes.
|
||||
|
||||
### Histórico da entrega de dados bancários
|
||||
|
||||
Dados bancários entregues: versões por empresa/fornecedor, duas decisões
|
||||
independentes de Finanças, campos sensíveis cifrados e consultas restritas.
|
||||
Migração 000011 no lote 12 após backup e restauro verificados de 42 tabelas.
|
||||
|
||||
@@ -1,5 +1,77 @@
|
||||
# Desenvolvimento do SGC
|
||||
|
||||
## Registo e conferência de pagamentos externos
|
||||
|
||||
Implementado `/pagamentos`, por empresa. Finanças regista pagamentos já
|
||||
efectuados fora do SGC, com factura validada, montante explícito, data efectiva,
|
||||
referência externa e evidência. Outra pessoa de Finanças confirma ou rejeita a
|
||||
conferência. O sistema **não executa transferências, remessas ou ordens bancárias**.
|
||||
|
||||
- Apenas os registos confirmados abatem a dívida da factura. Liquidação parcial
|
||||
ou total é calculada a partir desse histórico; não reescreve a factura validada.
|
||||
Pendentes/rejeitados não abatem o saldo. A confirmação não lança novamente
|
||||
consumo ou compromisso orçamental: o orçamento foi consumido na factura.
|
||||
- Montante deve ser positivo e caber no saldo confirmado ainda pendente. Duas
|
||||
confirmações concorrentes não podem exceder a factura. Referência normalizada
|
||||
única por empresa; repetição idêntica pelo autor devolve o registo existente,
|
||||
enquanto dados diferentes para a mesma referência são recusados.
|
||||
- Registo e confirmação revalidam factura, fornecedor, conflitos, moeda e
|
||||
versão bancária mais recente com duas validações elegíveis. Versão alterada,
|
||||
fornecedor suspenso, perda de perfil ou conflito posterior bloqueiam confirmação.
|
||||
Registos históricos já confirmados não são reescritos por mudanças posteriores.
|
||||
- Uma operação externa corresponde a uma factura nesta etapa. Datas entre
|
||||
exercícios, câmbio, adiantamentos, estornos, reembolsos, anulação de confirmados
|
||||
e repartição da mesma operação por várias facturas não estão implementados.
|
||||
Uma referência de evidência não é upload de comprovativo nem verificação bancária.
|
||||
- Referência externa, evidência, fundamento e snapshot bancário são cifrados.
|
||||
Snapshot preserva versão, conta e validadores do momento do registo; não é
|
||||
exposto na listagem. Administração consulta metadados; Finanças consulta
|
||||
referências/evidência com auditoria. Outros perfis não acedem ao módulo.
|
||||
Auditoria contém IDs, montantes e estados, sem referências externas nem números
|
||||
bancários. Histórico Inertia cifrado, resposta sem cache e dados sensíveis
|
||||
excluídos de input antigo de sessão. Preservar a chave de aplicação no restauro.
|
||||
- Modelos impedem edição do registo e eliminação. Decisão final é imutável;
|
||||
falha na auditoria reverte registo ou confirmação. Protecção contra SQL
|
||||
administrativo directo continua dependente das permissões da base de dados.
|
||||
- `/consulta/pagamentos` contém apenas exemplos fictícios. Valores operacionais
|
||||
vêm das facturas da própria empresa e do montante introduzido; não há valores
|
||||
financeiros predefinidos para clientes. Moeda suportada nesta etapa: MZN,
|
||||
coincidente com a conta; sem autorização implícita para conversões.
|
||||
|
||||
### Verificação e migração
|
||||
|
||||
Suite completa actual: **347 aprovados, 3 ignorados, 2.630 asserções**.
|
||||
PHPStan, Pint, TypeScript, compilação e formatação/lint frontend aprovados.
|
||||
O serviço recarrega o perfil do operador depois do bloqueio da empresa e
|
||||
bloqueia os registos dos validadores bancários durante a conferência.
|
||||
|
||||
33 testes específicos aprovados, 107 asserções: liquidação parcial/total, limites, idempotência,
|
||||
versões bancárias, perfis, conflitos, moedas, isolamento, cifragem, privacidade,
|
||||
input não guardado, ausência de consumo duplicado, auditoria e rollback.
|
||||
Três cenários concorrentes PostgreSQL aprovados com duas ligações independentes
|
||||
observadas simultaneamente à espera de bloqueios: excesso, mesma confirmação
|
||||
e pagamentos complementares. Saldos e manutenção do consumo orçamental conferidos;
|
||||
base temporária eliminada. São testes de serviço, não de carga ou HTTP.
|
||||
[Evidência](pagamentos-concorrencia-postgresql.json).
|
||||
|
||||
Migração 000012 aplicada no **lote 13**, após backup custom PostgreSQL 17 de
|
||||
**239.843 bytes** e restauro verificado das **44 tabelas** anteriores numa base
|
||||
temporária, depois eliminada. Snapshot consistente para dump e manifesto.
|
||||
Registos de negócio, restrições e `.env` preservados. Tabela de pagamentos
|
||||
externos vazia; sem seeds, contas novas, alterações de credenciais ou pagamentos
|
||||
fictícios na base real. Backup e manifesto privados, fora do Git.
|
||||
[Evidência sem dados privados](pagamentos-migracao-000012.json).
|
||||
|
||||
### Pendências e próximo incremento
|
||||
|
||||
O navegador continua indisponível (`The browser access host is unavailable`).
|
||||
**Revisão visual pública, autenticada e de impressão permanece pendente.**
|
||||
Este incremento não constitui integração bancária, confirmação bancária automática
|
||||
ou validação operacional integral do orçamento. Documentos continuam de desenvolvimento.
|
||||
Próximo incremento: reforços orçamentais auditados, propostos e aprovados por
|
||||
pessoas distintas, com valores definidos por cada empresa. Regras de investimento
|
||||
também continuam por definir por cliente; equipamento permanece bloqueado.
|
||||
|
||||
## Dados bancários de fornecedores com dupla validação
|
||||
|
||||
Implementado no mesmo projecto, com dados isolados por empresa/fornecedor.
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# Continuidade do desenvolvimento do SGC
|
||||
|
||||
## Próxima etapa após pagamentos externos
|
||||
|
||||
Registo e conferência independente de pagamentos externos já implementados,
|
||||
com migração 000012 aplicada. Não repetir as etapas históricas abaixo.
|
||||
Prosseguir com reforços orçamentais por empresa/centro/exercício, sem reescrever
|
||||
a dotação inicial, com proposta e aprovação por pessoas distintas e auditoria.
|
||||
Valores definidos por cada empresa. Não implementar transferências bancárias
|
||||
ou desbloquear investimento sem regra própria aprovada. Revisão visual e
|
||||
validação operacional integral continuam pendentes; consultar o relatório actual.
|
||||
|
||||
## Próxima etapa após dados bancários
|
||||
|
||||
Versões bancárias por empresa/fornecedor, cifragem e duas validações distintas
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"tested_at_utc": "2026-10-28T12:49:13+00:00",
|
||||
"separate_database": true,
|
||||
"transport": "Independent PHP service transactions and PostgreSQL connections",
|
||||
"scenarios": [
|
||||
{
|
||||
"name": "over_payment",
|
||||
"passed": true,
|
||||
"overlapping_lock_waits": 2,
|
||||
"confirmed_minor": 4000,
|
||||
"outstanding_minor": 2000,
|
||||
"budget_consumption_unchanged": true
|
||||
},
|
||||
{
|
||||
"name": "same_confirmation",
|
||||
"passed": true,
|
||||
"overlapping_lock_waits": 2,
|
||||
"confirmed_minor": 4000,
|
||||
"outstanding_minor": 2000,
|
||||
"budget_consumption_unchanged": true
|
||||
},
|
||||
{
|
||||
"name": "complementary_payments",
|
||||
"passed": true,
|
||||
"overlapping_lock_waits": 2,
|
||||
"confirmed_minor": 6000,
|
||||
"outstanding_minor": 0,
|
||||
"budget_consumption_unchanged": true
|
||||
}
|
||||
],
|
||||
"passed": true,
|
||||
"test_database_dropped": true
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"verified_at_utc": "2026-10-28T12:46:38+00:00",
|
||||
"migration": "2026_10_28_000012_create_external_payments",
|
||||
"batch": 13,
|
||||
"backup_created": true,
|
||||
"backup_bytes": 239843,
|
||||
"restore_verified": true,
|
||||
"restored_tables": 44,
|
||||
"restore_database_dropped": true,
|
||||
"business_records_unchanged": true,
|
||||
"existing_constraints_preserved": true,
|
||||
"env_unchanged": true,
|
||||
"external_payments_count": 0,
|
||||
"operational_validation": false
|
||||
}
|
||||
@@ -7,7 +7,9 @@ Actualização: o utilizador autorizou avançar com a abordagem. Dotações, res
|
||||
compromissos e conferência de facturas/consumo foram implementados e migrados.
|
||||
A base de IVA é uma decisão explícita de cada empresa. As secções seguintes
|
||||
conservam a proposta original; não comprovam aprovação de limites monetários,
|
||||
tolerâncias ou regras de investimento. Reforços e pagamentos continuam pendentes.
|
||||
tolerâncias ou regras de investimento. Reforços continuam pendentes. Registo e
|
||||
conferência de pagamentos externos foram acrescentados depois; não executam
|
||||
transferências nem substituem a confirmação humana da evidência.
|
||||
Estado actual em `docs/desenvolvimento.md`.
|
||||
|
||||
## Abordagem recomendada
|
||||
|
||||
Reference in New Issue
Block a user