layer-chicken/app/Filament/Resources/Finance/Payrolls/Actions/EditAdjustmentAction.php

74 lines
2.5 KiB
PHP

<?php
namespace App\Filament\Resources\Finance\Payrolls\Actions;
use App\Enums\SalaryAdjustmentType;
use App\Filament\Support\SystemNotification;
use App\Models\PayrollAdjustment;
use Filament\Actions\Action;
use Filament\Forms\Components\Radio;
use Filament\Forms\Components\TextInput;
use Filament\Support\Enums\Width;
class EditAdjustmentAction extends Action
{
public static function getDefaultName(): ?string
{
return 'editAdjustment';
}
protected function setUp(): void
{
parent::setUp();
$this->label('Ubah')
->icon('heroicon-m-pencil-square')
->iconButton()
->color('warning')
->modalWidth(Width::Large)
->schema([
Radio::make('type')
->label('Tipe')
->options(SalaryAdjustmentType::options())
->required()
->inline(),
TextInput::make('description')
->label('Keterangan')
->placeholder('Bonus lembur / Potongan kasbon')
->required()
->maxLength(100)
->autofocus()
->autocomplete(false),
TextInput::make('amount')
->label('Nominal')
->placeholder('0')
->required()
->autocomplete(false)
->currencyMask(thousandSeparator: '.', decimalSeparator: ',', precision: 0)
->prefix('Rp')
->dehydrateStateUsing(fn ($state) => (int) str()->replace('.', '', (string) ($state ?? 0))),
])
->mountUsing(function ($form, $arguments) {
$adjustment = PayrollAdjustment::findOrFail($arguments['adjustment_id']);
$form->fill([
'type' => $adjustment->type->value,
'description' => $adjustment->description,
'amount' => $adjustment->amount,
]);
})
->action(function (array $data, array $arguments) {
$adjustment = PayrollAdjustment::findOrFail($arguments['adjustment_id']);
$adjustment->update([
'type' => $data['type'],
'description' => $data['description'],
'amount' => $data['amount'],
]);
})
->successNotification(SystemNotification::update());
}
}