feat(transaction): menambahkan kolom is_paid untuk menandakan transaksi tersebut sudah di bayar atau belum dan penyesuaikan lagi penggajiannya

This commit is contained in:
Yoga Pangestu 2024-11-30 21:01:23 +07:00
parent 5db53dd797
commit 769c813d7b
3 changed files with 59 additions and 11 deletions

View File

@ -11,6 +11,7 @@
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class PayrollController extends Controller class PayrollController extends Controller
{ {
@ -40,11 +41,18 @@ public function create(): View
public function store(PayrollRequest $request): RedirectResponse public function store(PayrollRequest $request): RedirectResponse
{ {
$validatedData = $request->validated(); $validatedData = $request->validated();
Payroll::create(array_merge($validatedData, [
'user_id' => Auth::id(), DB::transaction(function () use ($validatedData) {
'employee_id' => $validatedData['employee'], Payroll::create(array_merge($validatedData, [
'barbershop_id' => Auth::user()->barbershop_id, 'user_id' => Auth::id(),
])); 'employee_id' => $validatedData['employee'],
'barbershop_id' => Auth::user()->barbershop_id,
]));
Transaction::where('user_id', $validatedData['employee'])
->where('is_paid', '0')
->update(['is_paid' => '1']);
});
notify()->success('Data berhasil ditambahkan', 'Berhasil'); notify()->success('Data berhasil ditambahkan', 'Berhasil');
@ -82,11 +90,22 @@ public function delete(Payroll $payroll): RedirectResponse
public function getSalaryEmployee(string $employeeId): JsonResponse public function getSalaryEmployee(string $employeeId): JsonResponse
{ {
$baseSalary = User::find($employeeId)->base_salary; $employee = User::find($employeeId);
$latestPayroll = Payroll::where('user_id', $employeeId)->latest()->first(); $latestPayroll = Payroll::where('employee_id', $employeeId)->latest()->first();
$shavingResults = Transaction::where('user_id', $employeeId)
->when($latestPayroll, function ($query) use ($latestPayroll) { $shavingResults = Transaction::query()
->when($employee->role_id === 4, function ($query) use ($employee) {
return $query->where('barbershop_id', $employee->barbershop_id);
})
->when($employee->role_id === 5, function ($query) use ($employeeId) {
return $query->where('user_id', $employeeId)
->where('is_paid', '0');
})
->when($latestPayroll, function ($query) use ($latestPayroll, $employee) {
$query->whereBetween('created_at', [$latestPayroll->created_at, now()]); $query->whereBetween('created_at', [$latestPayroll->created_at, now()]);
if ($employee->role_id === 4 && $latestPayroll->created_at->isToday()) {
$query->where('is_paid', '0');
}
}) })
->sum('total'); ->sum('total');
@ -94,8 +113,8 @@ public function getSalaryEmployee(string $employeeId): JsonResponse
'status' => true, 'status' => true,
'message' => 'Data retrieved successfully', 'message' => 'Data retrieved successfully',
'data' => [ 'data' => [
'baseSalary' => formatToRupiah($baseSalary), 'baseSalary' => formatToRupiah($employee->base_salary),
'shavingResults' => formatToRupiah($shavingResults), 'shavingResults' => in_array($employee->role_id, [4, 5]) ? formatToRupiah($shavingResults) : 'Rp0',
], ],
]); ]);
} }

View File

@ -24,6 +24,7 @@ class Transaction extends Model
'discount', 'discount',
'total', 'total',
'payment_method', 'payment_method',
'is_paid',
]; ];
public function scopeBarbershop(Builder $query): Builder public function scopeBarbershop(Builder $query): Builder

View File

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('transactions', function (Blueprint $table) {
$table->enum('is_paid', ['0', '1'])->comment('0:belum dibayarkan gaji 1:Sudah dibayarkan gaji')->default('0')->after('payment_method');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('transactions', function (Blueprint $table) {
$table->dropColumn('is_paid');
});
}
};