diff --git a/app/Filament/Resources/DelayedGoods/Tables/DelayedGoodsTable.php b/app/Filament/Resources/DelayedGoods/Tables/DelayedGoodsTable.php index ce2b769..7b633d0 100644 --- a/app/Filament/Resources/DelayedGoods/Tables/DelayedGoodsTable.php +++ b/app/Filament/Resources/DelayedGoods/Tables/DelayedGoodsTable.php @@ -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'),