Implementa conferencia de facturas e consumo por empresa
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user