columns([
TextColumn::make('reference_number')
->label('No. Referensi')
->searchable()
->sortable(),
TextColumn::make('purchase_date')
->label('Tanggal Belanja')
->date('l, d F Y')
->sortable(),
TextColumn::make('items_summary')
->label('Item Pakan')
->getStateUsing(function ($record): array {
return $record->items
->map(function ($item) {
$feedName = $item->feed?->name ?? '-';
$feedUnit = $item->feed?->unit?->name ?? '-';
$quantity = number_format($item->quantity, 0, ',', '.');
$subtotal = $item->formatted_subtotal;
return sprintf(
'
',
e($feedName),
$quantity,
$feedUnit,
$subtotal,
);
})
->toArray();
})
->listWithLineBreaks()
->html(),
TextColumn::make('total_price')
->label('Total Harga')
->money('IDR', decimalPlaces: 0)
->sortable(),
TextColumn::make('note')
->label('Catatan')
->wrap(),
...TimestampColumns::make(),
])
->filters([
TrashedFilter::make()
->native(false)
->visible(fn (): bool => auth()->user()->hasRole(RoleEnum::DEVELOPER)),
])
->recordActions([
EditAction::make()
->label('Ubah'),
DeleteAction::make(),
ForceDeleteAction::make(),
RestoreAction::make(),
])
->toolbarActions([
BulkActionGroup::make([
...DefaultBulkActions::make('Belanja Pakan'),
]),
])
->emptyStateIcon(Heroicon::Banknotes)
->emptyStateDescription('Setelah Anda membuat data pertama, maka akan muncul disini.')
->defaultSort('created_at', 'desc')
->deferFilters(false);
}
}