TextColumn::make('payments_sum_converted_net') ->sum([ 'payments' => fn(Builder $query) => $query->whereNull('statement_id') ->whereNotNull('received_at') ->whereNotNull('converted_net'), ], 'converted_net') ->default(0) ->money(fn(Project $record) => $record->currency->iso_code_3, divideBy: 100) ->label('Payments') ->sortable(query: function (Builder $query, string $direction): Builder { // Create a simple expression for the sum and use it for sorting $sumExpression = "(SELECT COALESCE(SUM(converted_net), 0) FROM payments WHERE projects.id = payments.project_id AND statement_id IS NULL AND received_at IS NOT NULL AND converted_net IS NOT NULL)"; return $query->orderByRaw("{$sumExpression} {$direction}"); }),
ToggleColumn::make('users.id') ->label('Volgen') ->onIcon('gmdi-star') ->offIcon('gmdi-star-border') ->onColor('success') ->beforeStateUpdated(function ($record, $state, SeriesService $service) { $state == true ? $service->follow($record) : $service->unfollow($record); }) ->afterStateUpdated(function ($record, $state) { // Runs after the state is saved to the database. }),