@extends('layouts.app') @section('title', $proposal->title) @section('content')
{{ $proposal->client->name }} · {{ $proposal->project?->title }}
Scope of work
{{ $proposal->scope }}
Notes
{{ $proposal->notes }}
Client & project
Client
{{ $proposal->client->name }}
{{ $proposal->client->email }}
Project
{{ $proposal->project?->title }}
@if($pSv) {{ ucfirst(str_replace('_', ' ', $pSv)) }} @endifUpdate status
Current status
{{ ucfirst($sv) }}Invoice
{{ $invSymbol }} {{ number_format((float) $inv->amount, 2) }}
Due {{ $inv->due_date->format('d M Y') }}
View Invoice →Invoice
Invoice appears once the proposal is approved
Client Deck
"{{ Str::limit($proposal->deck_rejection_reason, 60) }}"
@endifShare a professional proposal page with your client — no login required.
No deck link generated yet.
@endcan @endifDetails
Payment Milestones
@if ($proposal->milestones->count()) @php $milestoneTotal = $proposal->milestones->reduce(fn($carry, $m) => bcadd($carry, (string) $m->amount, 2), '0.00'); $proposalAmount = number_format((float) $proposal->amount, 2, '.', ''); $milestoneMismatch = bccomp($milestoneTotal, $proposalAmount, 2) !== 0; @endphp {{ $currencySymbol }}{{ number_format((float) $milestoneTotal, 2) }} / {{ $currencySymbol }}{{ number_format((float) $proposal->amount, 2) }} @endif{{ $milestone->title }}
@if ($milestone->description){{ $milestone->description }}
@endif{{ $mTriggerLabel }}
{{ $currencySymbol }}{{ number_format((float) $milestone->amount, 2) }}
@if ($milestone->percentage){{ number_format((float) $milestone->percentage, 1) }}%
@endif {{ ucfirst($mStatus) }}No milestones added yet.
@endforelse {{-- Add Milestone form --}} @can('proposals.edit')Signature
{{ $proposal->signature->signatory_name }}
{{ $proposal->signature->signatory_email }}
{{ $proposal->signature->signed_at->format('d M Y, H:i') }}
{{ substr(hash('sha256', $proposal->signature->signatory_email . '|' . $proposal->signature->signed_at), 0, 8) }}...