{{-- Part B §3 — Physical / component progress (REVENUE). Independent Single / Unit-wise mode. --}} @php $reportPayload = is_array($report ?? null) ? $report : []; $unitMode = old( 'report.part_b.scheme_progress_revenue.reporting_mode', report_section_reporting_mode($reportPayload, 'part_b.scheme_progress_revenue.reporting_mode') ); if (! in_array((string) $unitMode, ['single', 'unit_wise'], true)) { $unitMode = 'single'; } $defaultRow = [ 'major_unit_component' => '', 'measuring_unit' => '', 'qty_pc_i' => '', 'physical_progress' => '', 'expenditure' => '', 'total_cost' => '', 'pp_pct' => '', 'fp_pct' => '', 'variance_pp_fp' => '', 'remarks' => '', ]; $normalizeRevRow = static function ($row) use ($defaultRow): array { if (! is_array($row)) { return $defaultRow; } $out = []; foreach ($defaultRow as $key => $default) { $val = $row[$key] ?? $default; $out[$key] = $val === null ? '' : (is_scalar($val) ? (string) $val : $default); } if ($out['measuring_unit'] === '' && $out['qty_pc_i'] === '') { $legacy = trim((string) ($row['measuring_unit_qty_pci'] ?? '')); if ($legacy !== '') { $out['qty_pc_i'] = $legacy; } } return $out; }; $rows = old('report.part_b.scheme_progress_revenue.rows'); if (! is_array($rows) || count($rows) === 0) { $rows = data_get($reportPayload, 'part_b.scheme_progress_revenue.rows', []); } if (! is_array($rows) || count($rows) === 0) { $rows = [$defaultRow]; } $rows = array_map($normalizeRevRow, array_values($rows)); $units = old('report.part_b.scheme_progress_revenue.units'); if (! is_array($units) || count($units) === 0) { $units = data_get($reportPayload, 'part_b.scheme_progress_revenue.units', []); } if (! is_array($units) || count($units) === 0) { $units = [['unit_name' => '', 'rows' => [$defaultRow]]]; } foreach ($units as $ui => $unit) { if (! is_array($unit)) { $units[$ui] = ['unit_name' => '', 'rows' => [$defaultRow]]; continue; } $unitRows = $unit['rows'] ?? []; if (! is_array($unitRows) || count($unitRows) === 0) { $unitRows = [$defaultRow]; } $units[$ui]['unit_name'] = (string) ($unit['unit_name'] ?? ''); $units[$ui]['rows'] = array_map($normalizeRevRow, array_values($unitRows)); $unitTotals = is_array($unit['totals'] ?? null) ? $unit['totals'] : []; $units[$ui]['totals'] = [ 'pp_pct' => (string) ($unitTotals['pp_pct'] ?? ''), 'fp_pct' => (string) ($unitTotals['fp_pct'] ?? ''), ]; } $revTotalsRaw = old('report.part_b.scheme_progress_revenue.totals'); if (! is_array($revTotalsRaw)) { $revTotalsRaw = data_get($reportPayload, 'part_b.scheme_progress_revenue.totals', []); } if (! is_array($revTotalsRaw)) { $revTotalsRaw = []; } $revTotalPp = \App\Services\ReportPreviewPresenter::schemeProgressPctInputValue((string) ($revTotalsRaw['pp_pct'] ?? '')); $revTotalFp = \App\Services\ReportPreviewPresenter::schemeProgressPctInputValue((string) ($revTotalsRaw['fp_pct'] ?? '')); @endphp
@include('reports.partials.b2b-scheme-progress-revenue-controls', ['unitMode' => $unitMode])
@include('reports.partials.b2-scheme-progress-sheet-head')
@foreach ($rows as $rIdx => $row) @php $dot = 'report.part_b.scheme_progress_revenue.rows.'.$rIdx.'.'; $major = old($dot.'major_unit_component', $row['major_unit_component'] ?? ''); $measUnit = old($dot.'measuring_unit', $row['measuring_unit'] ?? ''); $qtyPcI = old($dot.'qty_pc_i', $row['qty_pc_i'] ?? ''); $ppv = old($dot.'physical_progress', $row['physical_progress'] ?? ''); $exp = old($dot.'expenditure', $row['expenditure'] ?? ''); $tc = old($dot.'total_cost', $row['total_cost'] ?? ''); $pp = \App\Services\ReportPreviewPresenter::schemeProgressPctInputValue(old($dot.'pp_pct', $row['pp_pct'] ?? '')); $fp = \App\Services\ReportPreviewPresenter::schemeProgressPctInputValue(old($dot.'fp_pct', $row['fp_pct'] ?? '')); $variance = old($dot.'variance_pp_fp', $row['variance_pp_fp'] ?? ''); $rem = old($dot.'remarks', $row['remarks'] ?? ''); @endphp @endforeach
S# {{ __('Major Unit/Components') }} {{ __('Measuring Unit') }} {{ __('Quantity as per PC-I') }} {{ __('Physical Progress') }} {{ __('Expenditure') }} {{ __('Total Cost') }} PP (%) FP (%) {{ __('Variance Between PP & FP') }} {{ __('Remarks') }}
{{ $rIdx + 1 }} @error($dot.'major_unit_component'){{ $message }}@enderror @error($dot.'measuring_unit'){{ $message }}@enderror @error($dot.'qty_pc_i'){{ $message }}@enderror @error($dot.'physical_progress'){{ $message }}@enderror @error($dot.'expenditure'){{ $message }}@enderror @error($dot.'total_cost'){{ $message }}@enderror @error($dot.'pp_pct'){{ $message }}@enderror @error($dot.'fp_pct'){{ $message }}@enderror @error($dot.'variance_pp_fp'){{ $message }}@enderror @error($dot.'remarks'){{ $message }}@enderror
{{ __('TOTAL') }}
@include('reports.partials.b2-scheme-progress-sheet-head')
@foreach ($units as $uIdx => $unit) @php $uRows = is_array($unit['rows'] ?? null) && count($unit['rows']) > 0 ? $unit['rows'] : [$defaultRow]; $uName = old('report.part_b.scheme_progress_revenue.units.'.$uIdx.'.unit_name', $unit['unit_name'] ?? ''); $uTotPp = \App\Services\ReportPreviewPresenter::schemeProgressPctInputValue(old('report.part_b.scheme_progress_revenue.units.'.$uIdx.'.totals.pp_pct', data_get($unit, 'totals.pp_pct', ''))); $uTotFp = \App\Services\ReportPreviewPresenter::schemeProgressPctInputValue(old('report.part_b.scheme_progress_revenue.units.'.$uIdx.'.totals.fp_pct', data_get($unit, 'totals.fp_pct', ''))); @endphp
@foreach ($uRows as $rIdx => $row) @php $dot = 'report.part_b.scheme_progress_revenue.units.'.$uIdx.'.rows.'.$rIdx.'.'; $major = old($dot.'major_unit_component', $row['major_unit_component'] ?? ''); $measUnit = old($dot.'measuring_unit', $row['measuring_unit'] ?? ''); $qtyPcI = old($dot.'qty_pc_i', $row['qty_pc_i'] ?? ''); $ppv = old($dot.'physical_progress', $row['physical_progress'] ?? ''); $exp = old($dot.'expenditure', $row['expenditure'] ?? ''); $tc = old($dot.'total_cost', $row['total_cost'] ?? ''); $pp = \App\Services\ReportPreviewPresenter::schemeProgressPctInputValue(old($dot.'pp_pct', $row['pp_pct'] ?? '')); $fp = \App\Services\ReportPreviewPresenter::schemeProgressPctInputValue(old($dot.'fp_pct', $row['fp_pct'] ?? '')); $variance = old($dot.'variance_pp_fp', $row['variance_pp_fp'] ?? ''); $rem = old($dot.'remarks', $row['remarks'] ?? ''); @endphp @endforeach
S# {{ __('Major unit/components') }} {{ __('Measuring unit') }} {{ __('Qty (PC-I)') }} {{ __('Phys. progress') }} {{ __('Expenditure') }} {{ __('Total cost') }} PP (%) FP (%) {{ __('Variance') }} {{ __('Remarks') }}
{{ $rIdx + 1 }} @error($dot.'major_unit_component'){{ $message }}@enderror @error($dot.'measuring_unit'){{ $message }}@enderror @error($dot.'qty_pc_i'){{ $message }}@enderror @error($dot.'physical_progress'){{ $message }}@enderror @error($dot.'expenditure'){{ $message }}@enderror @error($dot.'total_cost'){{ $message }}@enderror @error($dot.'pp_pct'){{ $message }}@enderror @error($dot.'fp_pct'){{ $message }}@enderror @error($dot.'variance_pp_fp'){{ $message }}@enderror @error($dot.'remarks'){{ $message }}@enderror
{{ __('TOTAL (THIS UNIT)') }}
@endforeach
@push('scripts') @endpush