@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) {{-- section content --}} @section('content') @php $activeTab = str_replace('_', '-', request('tab', 'neraca-lajur')); $currentRole = session('user') ? session('user')->idroles : null; if ($currentRole === 'viewer' && $activeTab === 'periode') { $activeTab = 'neraca-lajur'; } @endphp @include('layouts.navbars.auth.topnav', ['title' => ''])
{{ $title_menu }}
{{-- alert --}} @include('components.alert')

{{-- Tab Navigation --}}
{{-- Export & Search Section --}}
{{-- Export buttons --}} @if ($authorize->excel == '1') @endif @if ($authorize->pdf == '1') @endif @if ($authorize->print == '1') @endif
{{-- Tab Content --}}
{{-- Neraca Lajur Tab --}}
@include('report.rptlpr.partials.neraca_lajur')
{{-- Mutasi Tab --}}
@include('report.rptlpr.partials.mutasi')
{{-- Neraca Tab --}}
@include('report.rptlpr.partials.neraca')
{{-- Neraca Baru Tab --}}
@include('report.rptlpr.partials.neraca_baru')
{{-- Laba / Rugi Tab --}}
@include('report.rptlpr.partials.laba_rugi')
{{-- Periode Tab --}} @if ($currentRole !== 'viewer')
@include('report.rptlpr.partials.periode')
@endif
@php $neracaBalanceNotes = []; $neracaBaruTidakBalance = false; $isNeraca = ($activeTab ?? '') === 'neraca'; $isNeracaBaru = ($activeTab ?? '') === 'neraca-baru'; $sumByPrefix = function ($sections, array $prefixes) { $total = 0.0; $matchesPrefix = function ($value) use ($prefixes) { $value = (string) $value; foreach ($prefixes as $prefix) { if (str_starts_with($value, $prefix)) { return true; } } return false; }; $scanRows = function ($rows) use (&$scanRows, &$total, $matchesPrefix) { foreach ($rows ?? [] as $row) { $kode = (string) ($row->kode ?? ''); if ($matchesPrefix($kode)) { $total += (float) ($row->amount ?? 0); continue; } if (!empty($row->children)) { $scanRows($row->children); } } }; foreach ($sections ?? [] as $section) { $scanRows($section->rows ?? []); } return $total; }; if ($isNeraca && !empty($neraca_result ?? [])) { foreach ($neraca_result as $result) { $assetTotal = $sumByPrefix($result->sections ?? [], ['1']); $liabilityEquityTotal = $sumByPrefix($result->sections ?? [], ['2', '3']); $selisih = abs(abs($assetTotal) - abs($liabilityEquityTotal)); if ($selisih > 0.0001) { $periode = $result->periode ?? null; if ($periode) { try { $periodeLabel = \Carbon\Carbon::createFromFormat('Y-m', $periode) ->locale('id') ->translatedFormat('F Y'); } catch (\Exception $e) { $periodeLabel = $periode; } $neracaBalanceNotes[] = $periodeLabel; } } } $neracaBalanceNotes = array_values(array_unique($neracaBalanceNotes)); } if ($isNeracaBaru && !empty($neraca_baru_result ?? [])) { $assetTotalBaru = 0.0; $liabilityEquityTotalBaru = 0.0; foreach ($neraca_baru_result as $result) { $assetTotalBaru += $sumByPrefix($result->sections ?? [], ['1']); $liabilityEquityTotalBaru += $sumByPrefix($result->sections ?? [], ['2', '3']); } $selisihBaru = abs(abs($assetTotalBaru) - abs($liabilityEquityTotalBaru)); $neracaBaruTidakBalance = $selisihBaru > 0.0001; } @endphp
{{-- NERACA: tampilkan bulan yang tidak balance --}} @if ($isNeraca && !empty($neracaBalanceNotes)) @endif {{-- NERACA BARU: hanya cek total --}} @if ($isNeracaBaru && $neracaBaruTidakBalance) @endif
@endsection @push('js') {{-- xlsx-js-style for styled Excel export --}} {{-- jsPDF + AutoTable for PDF export --}} @endpush