record = $this->resolveRecord($record); } public function table(Table $table): Table { return $table ->query( Account::query() ->where('client_id', $this->getRecord()->id) ->with(['accountType', 'latestBalance']) ) ->columns([ TextColumn::make('account') ->label('Account Name') ->sortable() ->searchable(), TextColumn::make('debit') ->label('Debit') ->money('PHP') ->state(function (Account $record) { $balance = $record->latestBalance?->balance ?? 0; $normal = strtolower($record->accountType->normal_balance ?? 'debit'); return ($normal == 'debit' && $balance >= 0) || ($normal == 'credit' && $balance < 0) ? abs($balance) : 0; }) ->summarize(Summarizer::make() ->label('Total Debit') ->money('PHP') ->using(function ($query) { return Account::query() ->whereIn('id', $query->clone()->pluck('accounts.id')) ->with(['accountType', 'latestBalance']) ->get() ->sum(function ($record) { $balance = $record->latestBalance?->balance ?? 0; $normal = strtolower($record->accountType->normal_balance ?? 'debit'); return ($normal == 'debit' && $balance >= 0) || ($normal == 'credit' && $balance < 0) ? abs($balance) : 0; }); }) ), TextColumn::make('credit') ->label('Credit') ->money('PHP') ->state(function (Account $record) { $balance = $record->latestBalance?->balance ?? 0; $normal = strtolower($record->accountType->normal_balance ?? 'debit'); return ($normal == 'credit' && $balance >= 0) || ($normal == 'debit' && $balance < 0) ? abs($balance) : 0; }) ->summarize(Summarizer::make() ->label('Total Credit') ->money('PHP') ->using(function ($query) { return Account::query() ->whereIn('id', $query->clone()->pluck('accounts.id')) ->with(['accountType', 'latestBalance']) ->get() ->sum(function ($record) { $balance = $record->latestBalance?->balance ?? 0; $normal = strtolower($record->accountType->normal_balance ?? 'debit'); return ($normal == 'credit' && $balance >= 0) || ($normal == 'debit' && $balance < 0) ? abs($balance) : 0; }); }) ), ]); } }