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

73 lines
2.3 KiB
PHP

<?php
namespace App\Filament\Resources\Finance\Payrolls\Actions;
use App\Enums\SalaryAdjustmentType;
use App\Filament\Support\SystemNotification;
use App\Models\Payroll;
use Filament\Actions\Action;
use Filament\Forms\Components\Hidden;
use Filament\Forms\Components\Radio;
use Filament\Forms\Components\TextInput;
use Filament\Support\Enums\Width;
class AddAdjustmentAction extends Action
{
public static function getDefaultName(): ?string
{
return 'addAdjustment';
}
protected function setUp(): void
{
parent::setUp();
$this->label('Tambah Penyesuaian')
->color('gray')
->button()
->outlined()
->modalWidth(Width::Large)
->extraAttributes([
'class' => 'w-full flex justify-center',
])
->schema([
Hidden::make('payroll_id'),
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))),
])
->action(function (array $data) {
$payroll = Payroll::find($data['payroll_id']);
if ($payroll) {
$payroll->adjustments()->create([
'type' => $data['type'],
'description' => $data['description'],
'amount' => $data['amount'],
]);
}
})
->successNotification(SystemNotification::create());
}
}