feat: Enhance DelayedGoodsTable with payment action and improve column formatting

This commit is contained in:
Yoga Pangestu 2026-02-26 08:05:17 +07:00
parent 0210d08477
commit 1e59711070

View File

@ -9,7 +9,9 @@
use App\Filament\Actions\Cheerful\RestoreAction;
use App\Filament\Actions\DefaultBulkActions;
use App\Filament\Columns\TimestampColumns;
use Filament\Actions\Action;
use Filament\Actions\BulkActionGroup;
use Filament\Forms\Components\TextInput;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
@ -89,6 +91,34 @@ public static function configure(Table $table): Table
->visible(fn (): bool => auth()->user()->hasRole(RoleEnum::DEVELOPER)),
])
->recordActions([
Action::make('pelunasan')
->label('Pelunasan')
->icon(Heroicon::CurrencyDollar)
->color('success')
->visible(fn ($record) => ! $record->is_paid)
->schema([
TextInput::make('amount')
->label('Jumlah yang dibayar')
->required()
->default(fn ($record) => max(0, $record->total_amount - $record->paid_amount))
->helperText(fn ($record) => 'sisa: Rp '.number_format(max(0, $record->total_amount - $record->paid_amount), 0, ',', '.'))
->prefix('Rp')
->live()
->currencyMask(thousandSeparator: '.', decimalSeparator: ',', precision: 0)
->dehydrateStateUsing(fn ($state) => (int) str()->replace('.', '', (string) ($state ?? 0))),
])
->requiresConfirmation()
->action(function (array $data, $record) {
$amount = $data['amount'] ?? 0;
$record->paid_amount += $amount;
if ($record->paid_amount >= $record->total_amount) {
$record->paid_amount = $record->total_amount;
$record->is_paid = true;
$record->payment_date = now();
}
$record->save();
}),
EditAction::make()
->label('Ubah'),