Implementa conferencia de facturas e consumo por empresa

This commit is contained in:
2026-10-28 14:26:18 +02:00
parent f86ecef44d
commit 332cb9f1b7
28 changed files with 1356 additions and 8 deletions
+9 -1
View File
@@ -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 | Ainda não implementados | Conferência, consumo e liquidação |
| Facturas e pagamentos | Registo por empresa, conferência, validação independente e consumo orçamental | Dados bancários, pagamentos, 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,14 @@ Preservar enums, políticas, modelos relacionais, Brick Math e isolamento por em
## Verificação actual
Facturas e consumo entregues: migração 000010 aplicada no lote 11 após backup e
restauro verificados de 39 tabelas. Três cenários concorrentes PostgreSQL e
22 testes de facturas aprovados. Suite completa actual: **298 aprovados,
3 ignorados, 2.449 asserções**. Novas tabelas vazias na base real. Revisão visual,
dados bancários, pagamentos, reforços e regras de investimento continuam pendentes.
### Histórico da aplicação do orçamento
Actualização de orçamento: cadastro e aprovação independente de dotações por
empresa/centro/exercício, com base de IVA explícita, reservas, libertações e
compromissos implementados. Migração 000009 aplicada no lote 10 após backup e
+60
View File
@@ -1,5 +1,65 @@
# Desenvolvimento do SGC
## Facturas, conferência e consumo orçamental
Implementado `/facturas`: Administração consulta; Finanças regista e outra pessoa
de Finanças valida. Número normalizado único por empresa/fornecedor. Conferência
exacta de quantidade, unidade, preço, IVA e totais com a ordem congelada e a
recepção aceite ainda não facturada. Serviços também exigem aceitação.
Diferenças impedem registo/validação, sem correcção automática do documento.
Facturação parcial com arredondamento acumulado por linha para preservar os
centavos e IVA da ordem. Validação revalida quantidades e conflitos dentro da
transacção com bloqueio da empresa; repetição não duplica lançamentos. Sem
compromisso aprovado do exercício actual, a factura permanece pendente. Na
validação, a parcela facturada converte compromisso em consumo. O disponível
desconta reservas, compromisso remanescente e consumo, sem duplicar despesa
ou libertar saldo ao facturar. Falha de auditoria reverte toda a operação.
Cada documento, orçamento e configuração pertence à empresa correspondente.
A base com/sem IVA é a escolhida pela empresa; não existem dotações globais.
Autores de facturas integram os intervenientes auditados do processo. Facturas,
linhas e consumos não admitem reescrita/eliminação pelos modelos.
`/consulta/facturas` apresenta somente exemplos fictícios, sem consultar ou
gravar dados de negócio; os valores não são configurações predefinidas.
### Verificação e aplicação
**22 testes de facturas aprovados, 82 asserções**: independência, isolamento,
valores, duplicação, concorrência lógica de pendentes, auditoria/rollback,
compromisso obrigatório, serviços, consumo e arredondamento parcial de IVA.
Suite completa actual: **298 aprovados, 3 ignorados e 2.449 asserções**.
PHPStan, Pint, TypeScript, compilação e verificação frontend aprovados.
Três cenários concorrentes PostgreSQL aprovados: excesso de facturação, mesma
validação e facturas complementares. Duas ligações em processos PHP independentes,
observadas simultaneamente à espera de bloqueios, por cenário. Saldos, consumo
e número de facturas validadas confirmados. Base temporária eliminada.
São testes de serviço, não HTTP ou carga.
[Evidência](facturas-concorrencia-postgresql.json).
Migração 000010 aplicada no **lote 11** após backup custom PostgreSQL de
**216.008 bytes** e restauro verificado de **39 tabelas** numa base temporária,
depois eliminada. Dump e manifesto partilharam um snapshot consistente.
Registos de negócio, restrições anteriores e `.env` preservados. Novas tabelas
de facturas, linhas e consumos vazias; sem seeds, contas novas ou alteração de
credenciais. Backup e manifesto privados, fora do Git.
[Evidência sem dados privados](facturas-migracao-000010.json).
### Limitações e próximo passo
Pagamentos, dados bancários com dupla validação, reforços, notas de crédito,
anexos de factura, adiantamentos, compras sem ordem e operações cambiais não
estão implementados. Facturas entre exercícios ou sem compromisso ficam
bloqueadas. Conferência alterada por outra factura bloqueia a validação; ainda
não existe correcção/substituição do registo pendente.
Nova tentativa de acesso ao navegador: `The browser access host is unavailable`.
**Revisão visual pública, autenticada e de impressão continua pendente.**
Não constitui validação operacional integral do orçamento nem autorização de
compras/pagamentos reais. Próximo passo: dados bancários com dupla validação,
antes de pagamentos; reforços e regras de investimento configuráveis por empresa.
Equipamento continua bloqueado para adjudicação/emissão sem regra própria.
## Aplicação e validação PostgreSQL do orçamento
- Migração 000009 aplicada à base actual no **lote 10**, sem migrações pendentes.
@@ -0,0 +1,33 @@
{
"tested_at_utc": "2026-10-28T12:19:17+00:00",
"separate_database": true,
"transport": "Independent PHP service transactions and PostgreSQL connections",
"scenarios": [
{
"name": "over_invoice",
"passed": true,
"overlapping_lock_waits": 2,
"consumed_minor": 6000,
"committed_minor": 4000,
"validated_invoices": 1
},
{
"name": "same_validation",
"passed": true,
"overlapping_lock_waits": 2,
"consumed_minor": 6000,
"committed_minor": 4000,
"validated_invoices": 1
},
{
"name": "complementary_invoices",
"passed": true,
"overlapping_lock_waits": 2,
"consumed_minor": 10000,
"committed_minor": 0,
"validated_invoices": 2
}
],
"passed": true,
"test_database_dropped": true
}
+16
View File
@@ -0,0 +1,16 @@
{
"verified_at_utc": "2026-10-28T12:21:41+00:00",
"migration": "2026_10_28_000010_create_invoices",
"batch": 11,
"backup_created": true,
"backup_bytes": 216008,
"restore_verified": true,
"restored_tables": 39,
"restore_database_dropped": true,
"business_records_unchanged": true,
"existing_constraints_preserved": true,
"env_unchanged": true,
"invoices_count": 0,
"budget_consumptions_count": 0,
"operational_validation": false
}
+12
View File
@@ -1,5 +1,17 @@
# Continuidade do desenvolvimento do SGC
## Próximo incremento após facturas
Orçamento e facturas já foram implementados e migrados, incluindo conferência
com recepções e consumo. Não repetir as instruções históricas abaixo.
Prosseguir com dados bancários de fornecedores com dupla validação antes de
pagamentos; reforços e regras de investimento ficam em etapas próprias.
Preservar isolamento por empresa e valores configurados por cada cliente.
Não inventar limites de investimento ou tratar os valores fictícios da
demonstração como configuração. Revisão visual pública, autenticada e de
impressão continua pendente por indisponibilidade do navegador. Consultar
`docs/desenvolvimento.md` para resultados e limitações actuais.
## Estado actual após equipamentos e peças
Recepção, stock, saídas, transferências, contagens, ajustes, equipamentos,
+7
View File
@@ -3,6 +3,13 @@
Estado: proposta para decisão empresarial, ainda sem aprovação nem implementação.
Referência funcional: entrega `75ffdb3`. O orçamento continua sem validação.
Actualização: o utilizador autorizou avançar com a abordagem. Dotações, reservas,
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.
Estado actual em `docs/desenvolvimento.md`.
## Abordagem recomendada
Implementar primeiro orçamento e reservas; depois compromisso de ordens e