query(DashboardShowTrade::getTradeStatsByStatus()) ->striped() ->paginated(false) ->columns([ Tables\Columns\TextColumn::make('commodity_name') ->label('Commodity') ->badge() ->color( fn(string $state): string => CommodityEnum::tryFrom($state)?->getColor() ?? CommodityEnum::DEFAULT->getColor() ) ->searchable() ->sortable(), Tables\Columns\TextColumn::make('total_transit_stock') ->label('Current Stock (Transit)') ->numeric(decimalPlaces: 3) ->summarize([ Tables\Columns\Summarizers\Sum::make() ->label(''), ]), Tables\Columns\TextColumn::make('total_non_transit_stock') ->label('Current Stock (Non-Transit)') ->numeric(decimalPlaces: 3) ->summarize([ Tables\Columns\Summarizers\Sum::make() ->label(''), ]), Tables\Columns\TextColumn::make('total_free_stock') ->label('Free Stock') ->numeric(decimalPlaces: 3) ->summarize([ Tables\Columns\Summarizers\Sum::make() ->label(''), ]), Tables\Columns\TextColumn::make('average_invoice_cif') ->label('Invoice CIF') ->numeric(decimalPlaces: 2) ->money('USD') ->weight(FontWeight::Bold), Tables\Columns\TextColumn::make('average_selfcost') ->label('FCA Selfcost') ->numeric(decimalPlaces: 2) ->money('USD') ->weight(FontWeight::Bold), ]) ->defaultSort('commodity_name', 'asc') ->headerActions([ ExportAction::make('Print') ->label('Export') ->icon('heroicon-c-arrow-down-circle') ->exporter(DashboardCommodity::class) ->modifyQueryUsing(function (Builder $query) { return DashboardShowTrade::getTradeStatsByStatus(); }), ]) ->persistFiltersInSession() ->filtersFormWidth(MaxWidth::FourExtraLarge) ->filtersFormColumns(2); } public function getTableRecordKey(Model $record): string { return $record->commodity_name; } public function render(): View { return view('livewire.dashboard.commodity'); } }