@extends('layouts.app') @php $isUpah = ($type === 'upah'); $titleLabel = $isUpah ? 'RAB Upah' : 'RAB Material'; $harsatLabel = $isUpah ? 'Harsat Upah (Rp)' : 'Harga Satuan (Rp)'; $itemColHeader = $isUpah ? 'Uraian Pekerjaan' : 'Nama Material'; @endphp @section('title', $titleLabel . ' — ' . $project->nama_proyek) @section('page-style') @endsection @section('content') @include('admin.projects.tabs', ['activeTab' => $isUpah ? 'rab_upah' : 'rab_material']) {{-- Flash messages --}} @if(session('import_success')) @endif @if(session('import_error')) @endif
@if($isUpah) Ekspor PDF @else Ekspor PDF @endif
{{-- Budget Summary Bar --}}

TOTAL ANGGARAN {{ strtoupper($titleLabel) }} PROYEK

Rp {{ number_format($grandTotal, 0, ',', '.') }}

RINGKASAN ITEM & {{ $isUpah ? 'KATEGORI' : 'BLOK' }}

{{ $details->flatten()->count() }} item | {{ $details->count() }} {{ $isUpah ? 'kategori' : 'blok' }}
@if($isUpah) {{-- ==================== FORM TAMBAH ITEM RAB UPAH ==================== --}}
Tambah Item Pekerjaan (RAB Upah)
Pilih kategori untuk memuat Uraian Pekerjaan & Satuan otomatis
@csrf
@else {{-- ==================== FORM TAMBAH ITEM RAB MATERIAL (BERBASIS BLOK) ==================== --}}
Tambah Item Material (RAB Material)
Input Per Blok (Kode, Kategori, Nama Material, Spesifikasi, Satuan, Vol, Harsat)
@csrf {{-- Blok Selection --}}
Total Tambahan: Rp 0
@endif {{-- TABEL DETAIL RAB (UPAH ATAU MATERIAL) --}}
Rincian {{ $titleLabel }}
@if($isUpah) {{-- TABEL RAB UPAH (7 KOLOM) --}} @php $rowNum = 1; @endphp @forelse($details as $catName => $items) @foreach($items as $d) @php $rowFiles = $rabDetailFiles->get($d->id, collect()); $harsatVal = $d->harga_satuan_upah ?: $d->harga_satuan; $totalVal = $d->total_harga_upah ?: $d->total_harga; @endphp @endforeach @empty @endforelse @if($details->isEmpty()) @endif
No Uraian Pekerjaan Sat. Volume Harsat Upah (Rp) Jumlah Upah (Rp) Aksi
{{ $catName }}
{{ $rowNum++ }} {{ $d->uraian_pekerjaan }} @if($rowFiles->isNotEmpty()) {{ $rowFiles->count() }} @endif {{ $d->satuan }} {{ ((float)$d->volume == (int)(float)$d->volume) ? number_format((float)$d->volume, 0, ',', '.') : rtrim(rtrim(number_format((float)$d->volume, 2, ',', '.'), '0'), ',') }} {{ number_format($harsatVal, 0, ',', '.') }} {{ number_format($totalVal, 0, ',', '.') }}
@csrf @method('DELETE')
Sub Total {{ $catName }} Rp {{ number_format($subTotalsTotal[$catName] ?? 0, 0, ',', '.') }}

Belum ada item RAB Upah.

@else {{-- TABEL RAB MATERIAL (9 KOLOM PRESISI SESUAI ACUAN KLIEN) --}} @php $rowNum = 1; @endphp @forelse($details as $blokName => $items) @foreach($items as $d) @php $rowFiles = $rabDetailFiles->get($d->id, collect()); $harsatVal = $d->harga_satuan_material ?: $d->harga_satuan; $totalVal = $d->total_harga_material ?: $d->total_harga; @endphp @endforeach @empty @endforelse @if($details->isEmpty()) @endif
No Kode Material Kategori Nama Material Spesifikasi Satuan Volume Harga Satuan (Rp) Jumlah (Rp) Aksi
{{ strtoupper($blokName) }}
{{ $rowNum++ }} {{ $d->kode_material ?: '-' }} {{ $d->kategori_material ?: ($d->kategori_nama ?: '-') }} {{ $d->uraian_pekerjaan }} @if($rowFiles->isNotEmpty()) {{ $rowFiles->count() }} @endif {{ $d->spesifikasi ?: '-' }} {{ $d->satuan }} {{ ((float)$d->volume == (int)(float)$d->volume) ? number_format((float)$d->volume, 0, ',', '.') : rtrim(rtrim(number_format((float)$d->volume, 2, ',', '.'), '0'), ',') }} {{ number_format($harsatVal, 0, ',', '.') }} {{ number_format($totalVal, 0, ',', '.') }}
@csrf @method('DELETE')
Sub Total {{ $blokName }} Rp {{ number_format($subTotalsTotal[$blokName] ?? 0, 0, ',', '.') }}

Belum ada item RAB Material.

@endif
{{-- File Lampiran Level Modul / Tempat Penyimpanan File Rekap --}} @include('admin.partials.project_files_section', [ 'project' => $project, 'files' => $files, 'modul' => 'rab_' . $type, 'sectionTitle' => 'Tempat Penyimpanan File Rekapan ' . $titleLabel, ]) {{-- Modal Edit Item RAB --}} {{-- Modal Lampiran per Baris RAB --}} {{-- Modal Import Excel RAB --}} @endsection @section('page-script') @endsection