@extends('portal.layout') @section('title', 'Financial Pro Forma') @section('content')
@include('portal.partials.report-sidebar', ['report' => $report])
Financial Analysis

Financial Pro Forma

Investment pro forma with IRR, NPV, break-even analysis, unit mix and sensitivity matrix.

@if(session('success'))
{{ session('success') }}
@endif {{-- Generate Form --}}
Generate Pro Forma
@csrf
@if($proforma) @php $summary = $proforma->summary ?? []; $assumptions = $proforma->assumptions ?? []; $totalInvestment = $summary['total_investment'] ?? 0; $totalRevenue = $summary['total_revenue'] ?? 0; $grossProfit = $summary['gross_profit'] ?? 0; $irrPct = $proforma->irr_pct ?? $summary['irr_pct'] ?? 0; $npvVal = $proforma->npv ?? $summary['npv'] ?? 0; $breakEven = $proforma->break_even_months ?? $summary['break_even_month'] ?? null; $profitMargin = $summary['profit_margin_pct'] ?? 0; $roiPct = $summary['roi_pct'] ?? 0; $duration = $summary['project_duration_months'] ?? 0; // Build cost breakdown from assumptions $costBreakdown = []; if (!empty($assumptions['total_land_cost'])) $costBreakdown['Land Cost'] = $assumptions['total_land_cost']; if (!empty($assumptions['total_construction_cost'])) $costBreakdown['Construction'] = $assumptions['total_construction_cost']; $approvalAmt = ($assumptions['total_construction_cost'] ?? 0) * (($assumptions['approval_cost_pct'] ?? 0) / 100); if ($approvalAmt > 0) $costBreakdown['Approvals & Permits'] = $approvalAmt; $marketingAmt = ($assumptions['total_construction_cost'] ?? 0) * (($assumptions['marketing_cost_pct'] ?? 0) / 100); if ($marketingAmt > 0) $costBreakdown['Marketing'] = $marketingAmt; $contingencyAmt = ($assumptions['total_construction_cost'] ?? 0) * (($assumptions['contingency_pct'] ?? 0) / 100); if ($contingencyAmt > 0) $costBreakdown['Contingency'] = $contingencyAmt; @endphp {{-- Key Metrics --}}
@php $metrics = [ ['Total Investment', '₹ ' . number_format($totalInvestment), '#60a5fa', 'wallet'], ['Total Revenue', '₹ ' . number_format($totalRevenue), '#22c55e', 'trending-up'], ['Net Profit', '₹ ' . number_format($grossProfit), $grossProfit >= 0 ? '#22c55e' : '#ef4444', 'banknote'], ['IRR', number_format($irrPct, 1) . '%', $irrPct >= 18 ? '#22c55e' : ($irrPct >= 10 ? '#eab308' : '#ef4444'), 'percent'], ['Break-even', $breakEven ? $breakEven . ' months' : '—', '#f97316', 'clock'], ]; @endphp @foreach($metrics as [$label, $value, $color, $icon])
{{ $label }}
{{ $value }}
@endforeach
{{-- Investment Analysis --}}
Investment Analysis
{{ $proforma->profitability_label ?? 'Unknown' }}
{{-- NPV + Profit Margin + ROI + Duration --}}
Net Present Value
₹ {{ number_format($npvVal) }}
Profit Margin
{{ number_format($profitMargin, 1) }}%
Return on Investment
{{ number_format($roiPct, 1) }}%
Project Duration
{{ $duration }} months
{{-- Cost Breakdown --}} @if(count($costBreakdown) > 0)
Cost Breakdown
@foreach($costBreakdown as $category => $amount)
{{ $category }}
₹ {{ number_format($amount) }}
@if($totalInvestment > 0)
{{ number_format($amount / $totalInvestment * 100, 1) }}%
@endif
@endforeach
@endif {{-- Key Assumptions --}}
Key Assumptions
@php $assumptionDisplay = [ 'Plot Area' => number_format($assumptions['plot_area_sqm'] ?? 0) . ' sqm', 'Buildable Area' => number_format($assumptions['buildable_area_sqm'] ?? 0) . ' sqm', 'Saleable Area' => number_format($assumptions['saleable_area_sqm'] ?? 0) . ' sqm', 'Construction ₹/sqft'=> '₹ ' . number_format($assumptions['construction_cost_per_sqft'] ?? 0), 'Sale Rate ₹/sqft' => '₹ ' . number_format($assumptions['sale_rate_per_sqft'] ?? 0), 'Max Floors' => $assumptions['max_floors'] ?? '—', 'Construction' => ($assumptions['construction_months'] ?? 0) . ' months', 'Absorption' => ($assumptions['absorption_months'] ?? 0) . ' months', ]; @endphp @foreach($assumptionDisplay as $aLabel => $aValue)
{{ $aLabel }}
{{ $aValue }}
@endforeach
{{-- Unit Mix --}} @if(!empty($proforma->unit_mix))
Unit Mix & Pricing
@php $totalUnitRevenue = 0; @endphp @foreach($proforma->unit_mix as $unit) @php $totalUnitRevenue += $unit['total'] ?? 0; @endphp @endforeach
Unit Type Size (sqft) Qty Rate ₹/sqft Unit Price Total Revenue
{{ $unit['type'] ?? '—' }} {{ number_format($unit['size_sqft'] ?? 0) }} {{ $unit['count'] ?? 0 }} ₹ {{ number_format($unit['rate_sqft'] ?? 0) }} ₹ {{ number_format(($unit['size_sqft'] ?? 0) * ($unit['rate_sqft'] ?? 0)) }} ₹ {{ number_format($unit['total'] ?? 0) }}
Total {{ array_sum(array_column($proforma->unit_mix, 'count')) }} ₹ {{ number_format($totalUnitRevenue) }}
@endif {{-- Sensitivity Analysis --}} @if(!empty($proforma->sensitivity))
Sensitivity Analysis
@php $dimLabels = [ 'construction_cost' => ['label' => 'Construction Cost Variation', 'icon' => 'hard-hat', 'color' => '#f97316'], 'sale_rate' => ['label' => 'Sale Rate Variation', 'icon' => 'trending-up', 'color' => '#22c55e'], 'absorption_period' => ['label' => 'Absorption Period Variation', 'icon' => 'clock', 'color' => '#60a5fa'], ]; @endphp @foreach($proforma->sensitivity as $dimension => $scenarios) @php $dimInfo = $dimLabels[$dimension] ?? ['label' => ucwords(str_replace('_', ' ', $dimension)), 'icon' => 'activity', 'color' => '#a78bfa']; @endphp
{{ $dimInfo['label'] }}
@foreach($scenarios as $scenario) @php $changePct = $scenario['change_pct'] ?? 0; $scenarioIrr = $scenario['irr_pct'] ?? 0; $scenarioNpv = $scenario['npv'] ?? 0; $isBase = $changePct === 0; $changeLabel = $changePct === 0 ? 'Base' : ($changePct > 0 ? '+' . $changePct . '%' : $changePct . '%'); @endphp
{{ $changeLabel }}
{{ number_format($scenarioIrr, 1) }}%
IRR
NPV: ₹ {{ number_format($scenarioNpv / 100000, 1) }}L
@endforeach
@endforeach
@endif @else
No Pro Forma Yet
Click "Generate" above to create a detailed financial analysis.
@endif
@endsection