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\Cheerful\RestoreAction;
|
||||||
use App\Filament\Actions\DefaultBulkActions;
|
use App\Filament\Actions\DefaultBulkActions;
|
||||||
use App\Filament\Columns\TimestampColumns;
|
use App\Filament\Columns\TimestampColumns;
|
||||||
|
use Filament\Actions\Action;
|
||||||
use Filament\Actions\BulkActionGroup;
|
use Filament\Actions\BulkActionGroup;
|
||||||
|
use Filament\Forms\Components\TextInput;
|
||||||
use Filament\Support\Icons\Heroicon;
|
use Filament\Support\Icons\Heroicon;
|
||||||
use Filament\Tables\Columns\IconColumn;
|
use Filament\Tables\Columns\IconColumn;
|
||||||
use Filament\Tables\Columns\TextColumn;
|
use Filament\Tables\Columns\TextColumn;
|
||||||
@ -89,6 +91,34 @@ public static function configure(Table $table): Table
|
|||||||
->visible(fn (): bool => auth()->user()->hasRole(RoleEnum::DEVELOPER)),
|
->visible(fn (): bool => auth()->user()->hasRole(RoleEnum::DEVELOPER)),
|
||||||
])
|
])
|
||||||
->recordActions([
|
->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()
|
EditAction::make()
|
||||||
->label('Ubah'),
|
->label('Ubah'),
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user