Sistema de Gestão de Compras (SGC)

Recomendação antes da adjudicação · {{ $requisition->number }}

Adopção {{ $adoption->revision }} · política {{ $adoption->snapshot['policy_revision'] }} · tentativa {{ $attempt->revision }}

@php $states = ['pending' => 'A aguardar conferência', 'confirmed' => 'Recomendação confirmada', 'returned' => 'Tentativa devolvida']; $rows = $attempt->snapshot['basis']['rows']; $candidate = collect($rows)->firstWhere('id', $attempt->quotation_id); @endphp

{{ $states[$state] }} · {{ $current ? 'Base actual na consulta' : 'Histórica ou base desactualizada: não utilizável para adjudicar' }}
Recomendação não autoriza compra, não substitui aprovações do valor final e não constitui assinatura digital ou certificação de evidências.

Consulta por {{ $generatedBy }} em {{ $generatedAt->format('d/m/Y H:i:s') }} · Africa/Johannesburg (UTC+2). A situação actual pode mudar após esta consulta.

Proposta recomendada

{{ $candidate['supplier_name'] ?? 'Fornecedor indisponível' }} · {{ $candidate['reference'] ?? $attempt->quotation_id }}

Proponente: {{ $attempt->snapshot['proponent']['name'] }} · Registo: {{ $attempt->created_at }} UTC

{{ $attempt->reason }}

Política preservada: {{ $adoption->snapshot['required_count'] }} pessoas distintas; {{ implode(', ', array_map(fn ($role) => \App\Enums\PurchasingRole::from($role)->label(), $adoption->snapshot['roles'])) }}.

Base preservada: {{ $attempt->basis_hash }}

Matriz preservada na tentativa

@foreach($rows as $row) @endforeach
Fornecedor e propostaTotalAvaliações elegíveisPontuação / 10Situação na base preservada
{{ $row['supplier_name'] }} · {{ $row['reference'] }}{{ number_format($row['total_minor'] / 100, 2, ',', ' ') }} {{ $row['currency'] }}{{ $row['evaluation_count'] }}{{ $row['score_minor'] === null ? 'Por concluir' : number_format($row['score_minor'] / 100, 2, ',', ' ') }}{{ $row['eligible'] ? 'Elegível, com admissão confirmada' : implode(' ', $row['ineligibility_reasons']) }}{{ in_array($row['id'], $attempt->snapshot['basis']['top_ids'], true) ? ' · Maior pontuação' : '' }}

Referências de admissão preservadas

@foreach($attempt->snapshot['basis']['admissions'] as $admission)

Proposta #{{ $admission['quotation_id'] }} · requisitos #{{ $admission['basis']['set_id'] ?? 'não disponíveis' }} · decisão #{{ $admission['decision']['id'] ?? 'não disponível' }} · conferências {{ implode(', ', array_column($admission['reviews'], 'id')) ?: 'sem registos' }}.

@endforeach

Conferências desta tentativa

@forelse($reviews as $review)
{{ $review->snapshot['name'] }} · {{ \App\Enums\PurchasingRole::from($review->snapshot['purchasing_role'])->label() }} · {{ $review->verdict === 'approved' ? 'Confirmou' : 'Devolveu' }}

{{ $review->created_at }} UTC

{{ $review->reason }}

@empty

Sem conferências registadas.

@endforelse

Histórico desta adopção até à tentativa impressa

@forelse($history as $entry)
Tentativa {{ $entry['attempt']->revision }} · proposta #{{ $entry['attempt']->quotation_id }} · {{ $states[$entry['state']] }} · histórica

{{ $entry['attempt']->reason }}

@foreach($entry['reviews'] as $review)

{{ $review->snapshot['name'] }} · {{ $review->verdict === 'approved' ? 'Confirmou' : 'Devolveu' }} · {{ $review->created_at }} UTC · {{ $review->reason }}

@endforeach
@empty

Sem tentativas anteriores nesta adopção.

@endforelse