@extends('layouts.dashboard') @section('content') @php /** * Platform Analytics → Earnings: the platform's own income — subscriptions, * sponsored placements and the commission accrued on restaurant sales, reported * both as cash collected and as revenue recognised over the term it buys. * * @var array $total @var array $subCash @var array $adCash @var array $comCash * @var array $recognised @var array $activeSubs @var array $renewalsDue * @var array $renewals @var array $payments * @var array $earnChart @var array $earnMeta @var array $earnRanges @var string $earnSelected @var array $earnRangeOpts @var array $cashChart @var array $cashMeta * @var array $planChart @var array $planMeta @var array $streamChart @var array $streamMeta * @var array $earnerChart @var array $earnerMeta * @var int $rangeDays @var string $rangeMode @var array $rangeLinks */ // Pre-escaped: callers echo the result directly (no e() wrapper), since the '' case // needs to emit the canonical dash() markup rather than a plain escaped string. $methodLabel = static fn (?string $m): string => match ((string) $m) { 'stripe' => 'Stripe', 'paypal' => 'PayPal', 'offline' => e(t_raw('common.payment_card')), 'cod' => e(t_raw('common.cash')), '' => dash(), default => e(ucfirst((string) $m)), }; // The method as its brand/flat SVG icon (consistent with the orders + billing tables), // shown next to the amount actually paid; the text label is the fallback when no icon exists. $methodCell = static function (?string $m) use ($methodLabel, $__env): string { $ico = payment_method_icon((string) $m); return $ico !== '' ? $ico : '' . $methodLabel($m) . ''; }; // Movement pill + caption, the description line every KPI on this page carries. $kpiMeta = static fn (array $m, string $caption): string => kpi_trend((int) $m['pct'], (string) $m['dir']) . '' . $caption . ''; // Franchise brands the platform's per-order take as a royalty billed on franchise sales; the // figures are identical, only the wording changes. Marketplace is the default. $producesInvoices = $producesInvoices ?? false; @endphp @php /* .qm-d2: the dashboard density standard (app.css §35) */ @endphp

{{ t_raw('dashboard.sec.snapshot') }}

{{ t_raw($producesInvoices ? 'admin.analytics.earnings_sub_invoice' : 'admin.analytics.earnings_sub') }}

@foreach ($rangeLinks['options'] as $val => $text) @php $on = ((string) $val === $rangeLinks['selected']); @endphp {{ $text }} @endforeach
@partial('kpi-card', ['variant' => 'panel', 'accent' => 'green', 'icon' => 'fa-coins', 'label' => t_raw('admin.analytics.kpi_platform_earnings'), 'value' => money($total['total']), 'spark' => $total['cur'], 'meta' => $kpiMeta($total, t('admin.analytics.meta_vs_prior'))]) @partial('kpi-card', ['variant' => 'panel', 'accent' => 'teal', 'icon' => 'fa-balance-scale', 'label' => t_raw('admin.analytics.kpi_recognised_revenue'), 'value' => money($recognised['total']), 'spark' => $recognised['cur'], 'meta' => $kpiMeta($recognised, t('admin.analytics.meta_earned_not_billed'))]) @partial('kpi-card', ['variant' => 'panel', 'accent' => 'blue', 'icon' => 'fa-file-invoice-dollar', 'label' => t_raw('common.subscriptions'), 'value' => money($subCash['total']), 'href' => route('admin.subscriptions'), 'spark' => $subCash['cur'], 'meta' => $kpiMeta($subCash, t('admin.analytics.meta_plan_payments'))]) @partial('kpi-card', ['variant' => 'panel', 'accent' => 'violet', 'icon' => 'fa-bullhorn', 'label' => t_raw('common.sponsored_ads'), 'value' => money($adCash['total']), 'href' => route('admin.campaigns'), 'spark' => $adCash['cur'], 'meta' => $kpiMeta($adCash, t('admin.analytics.meta_paid_campaigns'))]) @partial('kpi-card', ['variant' => 'panel', 'accent' => 'amber', 'icon' => 'fa-percentage', 'label' => t_raw($producesInvoices ? 'admin.analytics.kpi_royalty_accrued' : 'admin.analytics.kpi_commission_accrued'), 'value' => money($comCash['total']), 'spark' => $comCash['cur'], 'meta' => $kpiMeta($comCash, t($producesInvoices ? 'admin.analytics.meta_stamped_royalty' : 'admin.analytics.meta_stamped_rate'))]) @partial('kpi-card', ['variant' => 'panel', 'accent' => 'orange', 'icon' => 'fa-sync-alt', 'label' => t_raw('admin.analytics.kpi_active_subs'), 'value' => number_format($activeSubs['total']), 'href' => route('admin.subscriptions'), 'spark' => $activeSubs['cur'], 'meta' => $kpiMeta($activeSubs, t('admin.analytics.meta_currently_running'))]) @partial('kpi-card', ['variant' => 'panel', 'accent' => 'orange', 'icon' => 'fa-hand-holding-usd', 'label' => t_raw('admin.analytics.kpi_renewals_due'), 'value' => number_format($renewalsDue['total']), 'href' => route('admin.subscriptions'), 'spark' => $renewalsDue['cur'], 'meta' => $kpiMeta($renewalsDue, t('admin.analytics.meta_vs_prior'))])

{{ t_raw('dashboard.sec.trends') }}

@partial('chart-card', ['heading' => t_raw('admin.analytics.chart_earnings_over_time'), 'sub' => t_raw('admin.analytics.chart_by_income_stream'), 'cfg' => $earnChart, 'meta' => $earnMeta, 'accent' => 'green', 'opts' => ['id' => 'earnTimeChart', 'url' => route('admin.chart-series', ['chart' => 'earnStreams']), 'selected' => $rangeLinks['selected'], 'options' => $rangeLinks['options'], 'control' => 'compact']])
@partial('chart-card', ['heading' => t_raw('admin.analytics.chart_cash_vs_recognised'), 'sub' => t_raw('admin.analytics.chart_cash_vs_recognised_caption'), 'cfg' => $cashChart, 'meta' => $cashMeta, 'icon' => 'fa-balance-scale', 'accent' => 'teal', 'opts' => ['id' => 'cashChart', 'url' => route('admin.chart-series', ['chart' => 'earnCash']), 'selected' => $rangeLinks['selected'], 'options' => $rangeLinks['options'], 'control' => 'compact']])

{{ t_raw('dashboard.sec.breakdown') }}

@partial('chart-card', ['heading' => t_raw('admin.analytics.chart_active_plan_mix'), 'sub' => t_raw('admin.analytics.chart_subs_by_plan'), 'cfg' => $planChart, 'meta' => $planMeta, 'icon' => 'fa-chart-pie', 'accent' => 'blue'])
@partial('chart-card', ['heading' => t_raw('admin.analytics.chart_income_mix'), 'sub' => t_raw('admin.analytics.chart_income_mix_caption'), 'cfg' => $streamChart, 'meta' => $streamMeta, 'icon' => 'fa-chart-pie', 'accent' => 'violet'])
@partial('chart-card', ['heading' => t_raw($producesInvoices ? 'admin.analytics.chart_royalty_by_partner' : 'admin.analytics.chart_top_earners'), 'sub' => t_raw($producesInvoices ? 'admin.analytics.chart_royalty_by_partner_caption' : 'admin.analytics.chart_top_earners_caption'), 'cfg' => $earnerChart, 'meta' => $earnerMeta, 'icon' => 'fa-chart-bar', 'accent' => 'amber', 'opts' => ['id' => 'admEarnTopChart', 'url' => route('admin.chart-series', ['chart' => 'earnTop']), 'selected' => $rangeLinks['selected'], 'options' => $rangeLinks['options'], 'control' => 'compact']])

{{ t_raw('admin.analytics.h_upcoming_renewals') }}

{{ t_raw('nav.subscriptions') }}
@if ($renewals) @foreach ($renewals as $rw) @php $dl = (int) ($rw['days_left'] ?? 0); @endphp @endforeach @else @partial('table-empty', ['colspan' => 4, 'icon' => 'fa-file-invoice-dollar', 'msg' => t('admin.analytics.empty_no_renewals')]) @endif
{{ t_raw('admin.analytics.caption_active_subs_by_renewal') }}
{{ t_raw('common.restaurant') }}{{ t_raw('common.plan') }}{{ t_raw('admin.analytics.col_renews') }}{{ t_raw('common.value') }}
{!! restaurant_logo_html(['logo' => $rw['logo'] ?? '', 'name' => $rw['restaurant'] ?? ''], 'md') !!}
{{ $rw['restaurant'] }}
{!! plan_tag((string) ($rw['plan_slug'] ?? ''), (string) $rw['plan']) !!} @if ($dl <= 0){{ t_raw('common.today') }} @elseif ($dl <= 7){!! $dl === 1 ? t('admin.analytics.in_n_days_one') : t('admin.analytics.in_n_days_many', [':n' => $dl]) !!} @else{!! fmt_day($rw['ends_at']) !!}@endif {{ money($rw['price']) }}
@partial('table-toolbar', ['pager' => $renewalsPager, 'base' => '/admin/analytics/earnings'])

{{ t_raw('admin.analytics.h_latest_plan_payments') }}

{{ t_raw('nav.plans') }}
@if ($payments) @foreach ($payments as $pm) @endforeach @else @partial('table-empty', ['colspan' => 4, 'icon' => 'fa-coins', 'msg' => t('admin.analytics.empty_no_payments')]) @endif
{{ t_raw('admin.analytics.caption_latest_payments') }}
{{ t_raw('common.restaurant') }}{{ t_raw('common.plan') }}{{ t_raw('common.paid') }}{{ t_raw('common.when') }}
{!! restaurant_logo_html(['logo' => $pm['logo'] ?? '', 'name' => $pm['restaurant'] ?? ''], 'md') !!}
{{ $pm['restaurant'] }}
{!! plan_tag((string) ($pm['plan_slug'] ?? ''), (string) $pm['plan']) !!} {{ money($pm['amount_paid']) }}{!! $methodCell($pm['payment_method'] ?? null) !!} {!! fmt_day($pm['created_at']) !!}
@partial('table-toolbar', ['pager' => $paymentsPager, 'base' => '/admin/analytics/earnings'])
@php /* /.qm-d2 */ @endphp @endsection