feat: simplify pay method in PayrollPeriodService by removing cash transaction handling

This commit is contained in:
Yoga Pangestu 2026-08-15 14:02:21 +07:00
parent 4758b19d2a
commit 0d1e6ba1fe

View File

@ -3,21 +3,18 @@
namespace App\Services\Admin\Finance\Payroll; namespace App\Services\Admin\Finance\Payroll;
use App\Concerns\HasRoleChecks; use App\Concerns\HasRoleChecks;
use App\Enums\CashTransactionType;
use App\Enums\PayrollPeriodStatus; use App\Enums\PayrollPeriodStatus;
use App\Enums\PayrollStatus; use App\Enums\PayrollStatus;
use App\Enums\Role; use App\Enums\Role;
use App\Models\Payroll; use App\Models\Payroll;
use App\Models\PayrollPeriod; use App\Models\PayrollPeriod;
use App\Services\Concerns\HandlesCashTransactions;
use App\Services\NotificationService; use App\Services\NotificationService;
use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class PayrollPeriodService class PayrollPeriodService
{ {
use HandlesCashTransactions, HasRoleChecks; use HasRoleChecks;
public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', array $filters = [], ?int $highlight = null): LengthAwarePaginator public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', array $filters = [], ?int $highlight = null): LengthAwarePaginator
{ {
@ -126,22 +123,11 @@ public function pay(Payroll $payroll): Payroll
]); ]);
} }
$payroll = DB::transaction(function () use ($payroll) { $payroll->update([
$cashTransaction = $this->debitCash( 'status' => PayrollStatus::PAID,
amount: $payroll->total_amount, 'paid_by_id' => auth()->id(),
description: 'Pembayaran gaji karyawan', 'paid_at' => now(),
type: CashTransactionType::EXPENSE, ]);
);
$payroll->update([
'status' => PayrollStatus::PAID,
'cash_transaction_id' => $cashTransaction->id,
'paid_by_id' => auth()->id(),
'paid_at' => now(),
]);
return $payroll;
});
$employeeUser = $payroll->employee->user ?? null; $employeeUser = $payroll->employee->user ?? null;