@php use App\Models\Crm\Partnership; use App\Services\Crm\Partnerships\PartnershipService; $stageColors = \App\Livewire\Crm\Partnerships\Show::STAGE_COLORS; $oppStageColour = fn (string $stage): string => match ($stage) { 'won' => 'emerald', 'lost' => 'rose', 'deferred' => 'amber', 'qualified', 'proposal', 'negotiation' => 'indigo', default => 'sky', }; $proposalColors = \App\Livewire\Crm\Proposals\Show::STATUS_COLORS; $agreementColors = \App\Livewire\Crm\Agreements\Show::STATUS_COLORS; $path = PartnershipService::PATH; $at = array_search($partnership->stage, $path, true); $cards = [ ['label' => __('Referred'), 'value' => number_format($counts['referred']), 'icon' => 'arrow-path', 'accent' => '#0ea5e9', 'sub' => __('Opportunities opened from referrals')], ['label' => __('Open'), 'value' => number_format($counts['open']), 'icon' => 'flag', 'accent' => '#6366f1', 'sub' => __('Still being worked')], ['label' => __('Won'), 'value' => number_format($counts['won']), 'icon' => 'trophy', 'accent' => '#10b981', 'sub' => trans_choice(':count lost|:count lost', $counts['lost'], ['count' => $counts['lost']])], ['label' => __('Confirmed from referrals'), 'value' => $confirmed === null ? __('Not available') : $base.' '.number_format($confirmed, 2), 'icon' => 'banknotes', 'accent' => '#f59e0b', 'sub' => __('Read from the won opportunities')], ]; @endphp
{{ __('Partnerships') }} {{ __(Partnership::STAGES[$partnership->stage] ?? $partnership->stage) }} @if ($canEdit) {{ __('Edit') }} @endif @if ($canRefer) {{ __('Record a referral') }} @endif {{-- Stage strip --}}
    @foreach ($path as $index => $key) @php $state = $at === false ? 'todo' : ($index < $at ? 'done' : ($index === $at ? 'current' : 'todo')); @endphp
  1. @if ($canEdit && $state !== 'current') @else {{ __(Partnership::STAGES[$key]) }} @endif @if (! $loop->last) @endif
  2. @endforeach
@if ($canEdit)
@if ($partnership->stage !== 'paused' && $partnership->stage !== 'ended') {{ __('Pause') }} @endif @if ($partnership->stage !== 'ended') {{ __('End') }} @endif
@endif
@if ($next !== null && $missingForNext !== [])

{{ __('Before :stage: :missing', ['stage' => __(Partnership::STAGES[$next]), 'missing' => implode(' ', $missingForNext)]) }}

@endif @if (in_array($partnership->stage, ['paused', 'ended'], true) && $partnership->status_reason)

{{ $partnership->stage === 'paused' ? __('Paused because') : __('Ended because') }}: {{ $partnership->status_reason }}

@endif
@foreach ($cards as $m)

{{ $m['label'] }}

{{ $m['value'] }}

{{ $m['sub'] }}
@endforeach
{{-- About --}}

{{ __('About') }}

{{ __('Partner organisation') }}
@if ($partnership->customer) {{ $partnership->customer->name }} @else {{ __('Not linked yet') }} @endif
{{ __('Brought in by') }}
{{ $partnership->originator?->name ?? __('Not available') }}
{{ __('Next action') }}
@if ($partnership->next_action) {{ $partnership->next_action }} @if ($partnership->next_action_due) {{ __('Due :date', ['date' => $partnership->next_action_due->format('j M Y')]) }} @endif @else {{ __('None') }} @endif
{{ __('What it is for') }}
{{ $partnership->objective ?: __('Not written yet') }}
{{ __('What each side gains') }}
{{ $partnership->value_proposition ?: __('Not written yet') }}
{{ __('Active since') }}
{{ $partnership->started_on?->format('j M Y') ?? __('Not yet') }}
@if ($partnership->ended_on)
{{ __('Ended') }}
{{ $partnership->ended_on->format('j M Y') }}
@endif
@if ($partnership->notes)
{{ __('Notes') }}
{{ $partnership->notes }}
@endif
{{-- Referrals --}}

{{ __('Referrals') }}

{{ __('Each referral is an ordinary opportunity of type Partner Referral, worked through the pipeline') }}

@forelse ($referrals as $opportunity) @empty @endforelse
{{ __('Opportunity') }} {{ __('Stage') }} {{ __('Owner') }} {{ __('Estimated value') }}
{{ $opportunity->title }}

{{ $opportunity->customer?->name }} · {{ $opportunity->created_at?->timezone(config('app.display_timezone'))->format('j M Y') }}

{{ __(\App\Models\Opportunity::STAGES[$opportunity->stage] ?? $opportunity->stage) }} {{ $opportunity->owner?->name ?? __('Not available') }} @if ($opportunity->estimated_value === null) {{ __('Not estimated') }} @else {{ $opportunity->currency_code }} {{ number_format((float) $opportunity->estimated_value, 2) }} @endif
@include('livewire.crm.partials.paginator', ['rows' => $referrals])
{{-- Proposals --}}

{{ __('Proposals') }}

@if ($canPropose) {{ __('Write one') }} @endif
    @forelse ($proposals as $proposal)
  • {{ $proposal->title }}

    {{ __('Version :v · :who', ['v' => $proposal->version, 'who' => $proposal->author?->name ?? __('Not available')]) }}

    {{ __(\App\Models\Crm\Proposal::STATUSES[$proposal->status] ?? $proposal->status) }}
  • @empty
  • {{ __('No proposal yet. One is needed before the Proposal stage.') }}
  • @endforelse
@include('livewire.crm.partials.paginator', ['rows' => $proposals])
{{-- Agreements --}}

{{ __('Agreements') }}

@if ($canAgree) {{ __('Record one') }} @endif
    @forelse ($agreements as $agreement)
  • {{ $agreement->title }}

    @if ($agreement->ends_on) {{ __('Ends :date', ['date' => $agreement->ends_on->format('j M Y')]) }} @else {{ __('No end date') }} @endif

    {{ __(\App\Models\Crm\Agreement::STATUSES[$agreement->status] ?? $agreement->status) }}
  • @empty
  • {{ __('No agreement yet. A signed one is needed before the partnership is active.') }}
  • @endforelse
@include('livewire.crm.partials.paginator', ['rows' => $agreements])
{{-- History --}}

{{ __('Stage history') }}

    @forelse ($history as $row)
  • @if ($row['from']) {{ __(':from to :to', ['from' => __(Partnership::STAGES[$row['from']] ?? $row['from']), 'to' => __(Partnership::STAGES[$row['to']] ?? $row['to'])]) }} @else {{ __('Recorded at :to', ['to' => __(Partnership::STAGES[$row['to']] ?? $row['to'])]) }} @endif

    {{ $row['at']?->timezone(config('app.display_timezone'))->format('j M Y H:i') }} · {{ $row['by'] ?? __('System') }} @if ($row['reason']) · {{ $row['reason'] }} @endif

  • @empty
  • {{ __('No stage changes recorded.') }}
  • @endforelse
@if ($history->hasPages())
{{ $history->links() }}
@endif
@if ($canEdit) {{ __('Edit partnership') }} @include('livewire.crm.partnerships.partials.form') {{ __('Cancel') }} {{ __('Save') }} {{ __('Saving…') }} {{ $moveTo !== '' ? __('Move to :stage', ['stage' => __(Partnership::STAGES[$moveTo] ?? $moveTo)]) : __('Move') }} {{ __('Cancel') }} {{ __('Move') }} {{ __('Moving…') }} @endif @if ($canRefer) {{ __('Record a referral') }}

{{ __('This opens an opportunity of type Partner Referral at Prospect, linked to this partnership. :name is credited as the person who brought it in.', ['name' => $partnership->owner?->name ?? __('The partnership manager')]) }}

@include('livewire.crm.partnerships.partials.organisation-picker', [ 'field' => 'referCustomerId', 'label' => __('Referred organisation'), 'optional' => false, ])
{{ __('Cancel') }} {{ __('Open the opportunity') }} {{ __('Saving…') }}
@endif