From 465426847e6af3a4f2c8ea244ea85400e151b31c Mon Sep 17 00:00:00 2001
From: nala
Date: Fri, 30 Oct 2026 08:07:27 +0200
Subject: [PATCH] commit6
---
.../SupplierPaymentsController.php | 13 +++++++
app/Services/SupplierPayables.php | 1 +
docs/orientacoes-continuidade.md | 3 ++
resources/js/components/app-sidebar.tsx | 1 +
resources/js/lib/procurement-navigation.ts | 6 +++
.../js/pages/suppliers/evaluation-proposal.ts | 1 +
resources/js/pages/suppliers/evaluations.tsx | 39 +++++++++++++++++++
routes/web.php | 8 ++++
8 files changed, 72 insertions(+)
create mode 100644 app/Http/Controllers/SupplierPaymentsController.php
create mode 100644 resources/js/pages/suppliers/evaluation-proposal.ts
create mode 100644 resources/js/pages/suppliers/evaluations.tsx
diff --git a/app/Http/Controllers/SupplierPaymentsController.php b/app/Http/Controllers/SupplierPaymentsController.php
new file mode 100644
index 0000000..3493d44
--- /dev/null
+++ b/app/Http/Controllers/SupplierPaymentsController.php
@@ -0,0 +1,13 @@
+engine($u);
$d = $engine->listing(Invoice::query()->where('tenant_id', $u->tenant_id)->pluck('id')->all());
$d['permissions'] = ['prepare' => $this->can($u, 'prepare'), 'validate' => $this->can($u, 'validate')];
+ $d['payments_available'] = app()->environment('payable-testing') && Schema::hasTable('ps_payments') && $this->can($u, 'payments_view');
$d['history_import_available'] = self::historyEnabled();
$d['history_decisions_available'] = self::historyDecisionsEnabled();
diff --git a/docs/orientacoes-continuidade.md b/docs/orientacoes-continuidade.md
index ee929f8..3f10288 100644
--- a/docs/orientacoes-continuidade.md
+++ b/docs/orientacoes-continuidade.md
@@ -1,5 +1,8 @@
# Continuidade do desenvolvimento do SGC
+**Pagamentos e afectações sintéticos, 29/10/2026:** percurso comum disponível apenas nas demonstrações isoladas 8005/8006, com preparação, confirmação independente e afectação explícita. Prova nas duas composições e preservação por hashes aprovadas; revisão visual/manual pendente. Sem migração habitual, utilização real ou novos pagamentos sobre importações históricas. Ver [relatório do núcleo comum](../../sgf-tempo/docs/SUPPLIER_SETTLEMENT_DELIVERY.md).
+
+
**Conferência posterior dos pendentes implementada, 29/10/2026:** confirmação/rejeição ligada ao núcleo comum com decisão imutável, saldo único e escrita original atómica. Provas SQLite e PostgreSQL descartável, incluindo dois pedidos simultâneos e reversão de falha, aprovadas. Ver [entrega](conferencia-pendentes-importados.md). Migração 000023 e opção de conferência preparadas, ainda não aplicadas/activadas em `compras_dev` ou 8005; importação local anterior preservada. Substitui a pendência de desenvolver esta conferência, sem novos pagamentos/transferências.
**Aplicação/activação histórica local concluída, 29/10/2026:** após «continue», 000022 aplicada em `compras_dev`, lote 23, e flag histórica activada, após backup/restauro das 72 tabelas. Registos/restrições preservados, duas tabelas novas vazias e dois triggers verificados. Activação auditada sem novas contas/concessões ou alteração de identidade; zero facturas/pagamentos/obrigações e nenhuma incorporação automática. Ver `historico-migracao-000022.json`, `historico-activacao-local.json` e [relatório](passagem-historico-pagamentos.md). Demo 8005 permanece sem esta migração/activação, confirmada em leitura; restantes demos e público preservados. Substitui apenas as indicações históricas de aplicação/activação pendentes abaixo. Novos pagamentos e decisão de pendentes depois da passagem continuam incremento próprio.
diff --git a/resources/js/components/app-sidebar.tsx b/resources/js/components/app-sidebar.tsx
index 367a776..3291bad 100644
--- a/resources/js/components/app-sidebar.tsx
+++ b/resources/js/components/app-sidebar.tsx
@@ -56,6 +56,7 @@ export function AppSidebar() {
...(canReadPurchases
? [
{ title: 'Fornecedores', href: '/fornecedores', icon: Users },
+ { title: 'Avaliação de fornecedores', href: '/fornecedores/avaliacoes', icon: Users },
{ title: 'Cotações', href: '/cotacoes', icon: Scale },
{
title: 'Ordens de compra',
diff --git a/resources/js/lib/procurement-navigation.ts b/resources/js/lib/procurement-navigation.ts
index 636b77d..d77ba17 100644
--- a/resources/js/lib/procurement-navigation.ts
+++ b/resources/js/lib/procurement-navigation.ts
@@ -113,6 +113,12 @@ export function procurementNavigation(
path: '/fornecedores',
roles: readers,
},
+ {
+ id: 'supplier_evaluations',
+ label: 'Avaliação de fornecedores',
+ path: '/fornecedores/avaliacoes',
+ roles: readers,
+ },
],
},
{
diff --git a/resources/js/pages/suppliers/evaluation-proposal.ts b/resources/js/pages/suppliers/evaluation-proposal.ts
new file mode 100644
index 0000000..5503558
--- /dev/null
+++ b/resources/js/pages/suppliers/evaluation-proposal.ts
@@ -0,0 +1 @@
+export default "Acrescentar Avaliação de fornecedores\r\nProposta funcional complementar ao menu Fornecedores, sujeita à validação da organização. Não representa regras já aprovadas nem resultados de fornecedores reais.\r\nSubmenu proposto\r\nFornecedores → Avaliação de fornecedores: avaliações planeadas; nova avaliação; rascunhos; avaliações em revisão; avaliações aprovadas; histórico por fornecedor; planos de melhoria; relatórios de avaliação. Este complemento não altera a tabela de menu apresentada anteriormente.\r\nCampos e evidências\r\n•\tIdentificação: número automático, fornecedor, categoria de fornecimento, contrato ou ordens de compra abrangidas.\r\n•\tÂmbito: período avaliado, bens ou serviços, locais abrangidos, entregas consideradas e exclusões justificadas.\r\n•\tResponsáveis: avaliador, revisor, data de elaboração, data de aprovação e estado.\r\n•\tCritérios: nota por critério, peso aplicável, justificação, evidência associada e indicação de não aplicável.\r\n•\tResultado: pontuação calculada, classificação, ocorrências críticas, conclusão e próxima data de revisão.\r\n•\tMelhoria: acção acordada, responsável pela acção, prazo, evidência de conclusão e estado de acompanhamento.\r\nUtilizar evidências como registos de recepção, inspecções de qualidade, datas acordadas e efectivas, divergências documentadas e comunicações de resolução. Distinguir incumprimentos atribuíveis ao fornecedor de atrasos provocados pela organização. Não avaliar pessoas individuais; o objecto é a prestação da entidade fornecedora.\r\nAcções e validações\r\n•\tCriar avaliação, guardar rascunho, anexar evidências, submeter para revisão, devolver para correcção, aprovar e consultar histórico.\r\n•\tValidar fornecedor e documentos de referência, período coerente, notas dentro da escala e justificação para cada critério avaliado ou excluído.\r\n•\tExigir evidência para notas baixas e ocorrências críticas; quando faltar informação, registar “Evidência insuficiente”, sem atribuir automaticamente a nota mínima.\r\n•\tSeparar elaboração e aprovação; restringir acesso por perfil e manter registo de alterações.\r\n•\tApós aprovação, preservar a versão publicada; qualquer rectificação deve gerar revisão identificável, sem apagar o histórico.\r\n•\tPermitir registar observações ou contestação do fornecedor e a respectiva decisão documentada.\r\n•\tNão suspender ou excluir automaticamente um fornecedor apenas pela pontuação. Qualquer medida contratual exige revisão humana e aplicação das regras aprovadas.\r\nRelatórios complementares\r\nPrever ficha de avaliação por fornecedor e período, evolução histórica, resultados por critério, ocorrências críticas e planos de melhoria pendentes. Filtros propostos: fornecedor, categoria, período, classificação e estado das acções. Mostrar a cobertura de evidências e identificar avaliações não comparáveis por diferenças de âmbito ou critérios.\r\nDistinguir qualificação de avaliação\r\nAspecto\tQualificação\tAvaliação\r\nObjectivo\tVerificar elegibilidade e capacidade para fornecer.\tAnalisar o cumprimento efectivo durante ou após o fornecimento.\r\nMomento\tAntes da contratação e na renovação de documentos ou condições.\tPor período, contrato, entrega ou ocorrência relevante.\r\nEvidências\tDocumentos legais e fiscais, licenças aplicáveis, capacidade técnica e requisitos internos.\tEntregas, inspecções, cumprimento de prazos, divergências e resolução de ocorrências.\r\nResultado\tQualificado, condicionado ou não qualificado, conforme requisitos aprovados.\tPontuação e conclusão documentadas, com plano de melhoria quando necessário.\r\nRelação\tHabilita a participação no processo, mas não garante boa prestação futura.\tInforma revisões de qualificação e decisões futuras, sem substituir os requisitos de elegibilidade.\r\nEstruturar uma grelha de avaliação\r\nModelos ilustrativos distintos para fornecedores de bens e prestadores de serviços. Os pesos, a escala e os limiares são propostas a aprovar, não normas da organização. Escolher a grelha conforme o objecto contratado e definir condições verificáveis antes do período avaliado.\r\nGrelha para fornecedores de bens\r\nCritério\tPeso proposto\tAvaliação específica\tEvidências\r\nQualidade e conformidade técnica\t35%\tArtigos conformes com as especificações; defeitos, rejeições e retrabalho atribuíveis ao fornecedor.\tRelatórios de inspecção, testes, registos de aceitação e devoluções.\r\nCumprimento dos prazos\t30%\tEntregas nas datas acordadas, considerando entregas parciais e alterações de prazo formalizadas. Excluir atrasos imputáveis à organização.\tDatas da ordem de compra, alterações aprovadas e registos de recepção.\r\nExactidão e condições da entrega\t20%\tQuantidades, referências, embalagem, conservação, documentação e condições comerciais acordadas. Não voltar a penalizar defeitos técnicos já avaliados em Qualidade.\tConferência da recepção, guias, facturas e registos de divergências.\r\nAtendimento e pós-venda\t15%\tResposta a reclamações, substituições, garantia e resolução dentro dos prazos acordados.\tPedidos de assistência, respostas, substituições e confirmação de resolução.\r\n\r\nTotal dos pesos da grelha de bens: 100%. Registar nota, justificação e evidência por critério. Não são atribuídas notas a fornecedores neste modelo.\r\nGrelha para prestadores de serviços\r\nCritério\tPeso proposto\tAvaliação específica\tEvidências\r\nQualidade dos resultados\t35%\tEntregáveis correctos, completos e conformes com o âmbito, requisitos técnicos e critérios de aceitação. Avaliar retrabalho atribuível ao prestador.\tEntregáveis, testes, actas de aceitação e pedidos de correcção.\r\nCumprimento de marcos e prazos\t25%\tConclusão dos marcos nas datas acordadas, considerando alterações de âmbito formalizadas e dependências da organização.\tCronograma aprovado, datas efectivas e registos de alterações.\r\nCumprimento dos níveis de serviço\t25%\tDisponibilidade, continuidade, tempos de resposta e resolução, apenas quando previstos no contrato. Não duplicar ocorrências já pontuadas noutros critérios.\tRelatórios de serviço, registos de incidentes e medições dos níveis contratados.\r\nComunicação e gestão do serviço\t15%\tInformação de progresso, aviso de riscos, tratamento de alterações, documentação e passagem de conhecimento previstas. Avaliar a prestação da empresa, não empregados individuais.\tRelatórios de progresso, comunicações, actas e documentos de passagem de conhecimento.\r\nTotal dos pesos da grelha de serviços: 100%. Registar nota, justificação e evidência por critério. Para serviços sem níveis de serviço contratados, justificar “Não aplicável” e recalcular os pesos conforme as regras abaixo.\r\nAplicação por categoria e contratos mistos\r\n•\tBens: especificar os requisitos relevantes da categoria, como validade e conservação de consumíveis, testes de equipamentos ou documentação técnica, apenas quando exigidos.\r\n•\tServiços: para trabalhos com entregáveis, priorizar aceitação e marcos; para serviços recorrentes, definir as medições dos níveis de serviço contratados. Formalizar qualquer alteração de pesos antes do período avaliado.\r\n•\tContratos mistos: avaliar separadamente a componente de bens e a de serviços. Mostrar ambos os resultados; não calcular uma média simples sem regra de agregação previamente aprovada.\r\n•\tComparabilidade: comparar apenas avaliações de âmbito, grelha e versão equivalentes. Não produzir uma classificação conjunta de bens e serviços sem metodologia validada.\r\n•\tOcorrências: associar cada desvio ao critério principal e evitar dupla penalização. Exigências legais, de segurança e de integridade continuam sujeitas a análise separada.\r\nEscala proposta\r\nNota\tDescrição\r\n1 — Muito abaixo do esperado\tIncumprimento grave ou recorrente, comprovado, com impacto relevante.\r\n2 — Abaixo do esperado\tDesvios comprovados que exigem correcção e acompanhamento.\r\n3 — Conforme o esperado\tCumpre os requisitos acordados, sem desvios materiais.\r\n4 — Acima do esperado\tSupera requisitos em aspectos relevantes e demonstráveis.\r\n5 — Muito acima do esperado\tSupera consistentemente os requisitos, com benefício relevante comprovado.\r\nNão aplicável\tCritério sem relação com o âmbito avaliado; exclusão justificada e validada pelo revisor.\r\nAplicar a escala seguinte a ambas as grelhas. Antes da utilização, definir condições verificáveis por categoria com base em requisitos de aceitação, compromissos contratuais e níveis de serviço. Cumprir integralmente o acordado corresponde à nota 3; notas 4 e 5 exigem benefício adicional comprovado, não apenas ausência de reclamações.\r\nCálculo e classificação\r\nPontuação final = soma de (nota × peso) dos critérios aplicáveis ÷ soma dos pesos aplicáveis. O resultado permanece na escala de 1 a 5. Exibir duas casas decimais e aplicar os limiares ao valor não arredondado.\r\nQuando um critério não se aplicar, recalcular proporcionalmente os restantes pesos. Quando um critério aplicável tiver evidência insuficiente, não tratá-lo como não aplicável: manter a avaliação pendente até completar ou aprovar uma metodologia alternativa documentada. Sem critérios aplicáveis, não calcular pontuação.\r\nPontuação proposta\tClassificação e encaminhamento\r\nDe 4,50 a 5,00\tExcelente — manter acompanhamento e documentar boas práticas.\r\nDe 3,50 até menos de 4,50\tBom — manter acompanhamento e identificar melhorias pontuais.\r\nDe 2,50 até menos de 3,50\tRequer melhoria — acordar acções e prazos de revisão.\r\nDe 1,00 até menos de 2,50\tCrítico — efectuar revisão prioritária e definir medidas justificadas.\r\nOcorrências críticas de segurança, integridade ou incumprimento contratual devem ser analisadas separadamente, mesmo com pontuação elevada. A classificação não autoriza automaticamente exclusão, suspensão ou adjudicação.\r\nAcompanhamento e decisões pendentes\r\nPara cada melhoria, registar ocorrência, acção, responsável, prazo, estado, evidência de conclusão e validação de eficácia. Proposta de periodicidade: revisão no fecho do contrato ou num intervalo definido pela categoria e risco, com avaliação extraordinária após ocorrência relevante.\r\nConfirmar antes da implementação: grelha de bens ou serviços, pesos e limiares, condições verificáveis por categoria, metodologia para contratos mistos, periodicidade, cobertura mínima de evidências, responsabilidades de revisão e aprovação, acesso do fornecedor aos resultados e procedimento de contestação.\r\n\r\n";
diff --git a/resources/js/pages/suppliers/evaluations.tsx b/resources/js/pages/suppliers/evaluations.tsx
new file mode 100644
index 0000000..fdc3ff2
--- /dev/null
+++ b/resources/js/pages/suppliers/evaluations.tsx
@@ -0,0 +1,39 @@
+import { Head } from '@inertiajs/react';
+import { useState } from 'react';
+import { PageTitle, Panel } from '@/components/procurement';
+import proposal from './evaluation-proposal';
+
+const areas = [
+ ['Avaliações planeadas', 'Definir fornecedor, período, âmbito e responsáveis pela avaliação.'],
+ ['Nova avaliação', 'Identificar contratos e ordens abrangidas, escolher a grelha de bens ou serviços e reunir notas, justificações e evidências.'],
+ ['Rascunhos', 'Preparar a avaliação e completar evidências antes de submeter para revisão.'],
+ ['Avaliações em revisão', 'Conferência independente, com devolução para correcção ou aprovação documentada.'],
+ ['Avaliações aprovadas', 'Consultar versões aprovadas; rectificações devem gerar revisão identificável.'],
+ ['Histórico por fornecedor', 'Consultar a evolução, observações e contestações com decisão documentada. Comparar apenas âmbitos e grelhas equivalentes.'],
+ ['Planos de melhoria', 'Acompanhar acções, responsáveis, prazos, evidências de conclusão e validação de eficácia.'],
+ ['Relatórios de avaliação', 'Ficha por fornecedor e período, resultados por critério, ocorrências críticas e cobertura de evidências.'],
+];
+export default function SupplierEvaluations() {
+ const [selected, setSelected] = useState(0);
+ return <>
+
+
+
+
+ Proposta funcional para validação da organização. As áreas abaixo descrevem o circuito previsto; o registo e a aprovação de avaliações ainda não estão disponíveis. Pesos, escala e limiares são ilustrativos.
+
+
+
+
Área prevista na proposta. Não são apresentados resultados de fornecedores reais.