feat: Enhance DelayedGoodsTable with payment action and improve column formatting
This commit is contained in:
parent
0210d08477
commit
1e59711070
@ -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'),
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user