update revisi
This commit is contained in:
@@ -39,23 +39,21 @@ class FormVehicleController extends Controller
|
||||
$role = auth()->user()->getRoleNames()[0];
|
||||
$startDay = (int) env('STARTING_DATE', 11);
|
||||
$closingDay = (int) env('CLOSING_DATE', 10);
|
||||
|
||||
// Referensi waktu sekarang
|
||||
$now = Carbon::now();
|
||||
|
||||
// Tentukan periode
|
||||
// Tentukan periode aktif
|
||||
if ($now->day >= $startDay) {
|
||||
// Mulai dari tanggal START bulan ini
|
||||
$startDate = Carbon::create($now->year, $now->month, $startDay)->startOfDay();
|
||||
// Sampai tanggal CLOSING bulan depan
|
||||
$closingDate = Carbon::create($now->copy()->addMonth()->year, $now->copy()->addMonth()->month, $closingDay)->endOfDay();
|
||||
} else {
|
||||
// Mulai dari tanggal START bulan lalu
|
||||
$startDate = Carbon::create($now->copy()->subMonth()->year, $now->copy()->subMonth()->month, $startDay)->startOfDay();
|
||||
// Sampai tanggal CLOSING bulan ini
|
||||
$closingDate = Carbon::create($now->year, $now->month, $closingDay)->endOfDay();
|
||||
}
|
||||
|
||||
// Hitung periode untuk keperluan budget
|
||||
$periodeMonth = strtolower($startDate->format('F'));
|
||||
$periodeYear = (int) $startDate->format('Y');
|
||||
|
||||
$forms = FormVehicleRunningCost::whereBetween('tanggal', [$startDate, $closingDate])
|
||||
->orderBy('tanggal', 'desc')
|
||||
->with('user')
|
||||
@@ -63,44 +61,43 @@ class FormVehicleController extends Controller
|
||||
|
||||
$availableBudget = null;
|
||||
|
||||
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
|
||||
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
||||
if ($role === 'Admin Region' || $role === 'Marketing Operational Manager Region') {
|
||||
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
||||
|
||||
if ($region_id) {
|
||||
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
|
||||
$query->where('region_id', $region_id);
|
||||
})->get();
|
||||
if ($region_id) {
|
||||
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
|
||||
$query->where('region_id', $region_id);
|
||||
})->get();
|
||||
|
||||
$userIds = $users->pluck('user_id')->toArray();
|
||||
$forms = $forms->whereIn('user_id', $userIds);
|
||||
}
|
||||
}
|
||||
else if ($role == 'Area Manager Cabang') {
|
||||
$userIds = $users->pluck('user_id')->toArray();
|
||||
$forms = $forms->whereIn('user_id', $userIds);
|
||||
}
|
||||
} elseif ($role === 'Area Manager Cabang') {
|
||||
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
|
||||
|
||||
if ($cabang_id) {
|
||||
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
|
||||
$userIds = $users->pluck('user_id')->toArray();
|
||||
$forms = $forms->whereIn('user_id', $userIds);
|
||||
$availableBudget = BudgetHelper::getAvailableBudget($cabang_id);
|
||||
}
|
||||
}
|
||||
else if ($role == 'Medical Representatif') {
|
||||
$forms = $forms->where('user_id', auth()->user()->id);
|
||||
$cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id;
|
||||
|
||||
$availableBudget = BudgetHelper::getAvailableBudget($cabang_id);
|
||||
}
|
||||
else {
|
||||
$forms = $forms;
|
||||
$availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
|
||||
}
|
||||
} elseif ($role === 'Medical Representatif') {
|
||||
$forms = $forms->where('user_id', auth()->user()->id);
|
||||
$cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()?->cabang_id;
|
||||
|
||||
if ($cabang_id) {
|
||||
$availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
|
||||
}
|
||||
}
|
||||
|
||||
session()->put('redirect_url', route('forms.vehicle'));
|
||||
return view('backend.pages.forms.vehicle.index', [
|
||||
'forms' => $forms,
|
||||
|
||||
return view('backend.pages.forms.vehicle.index', [
|
||||
'forms' => $forms,
|
||||
'availableBudget' => $availableBudget
|
||||
]);
|
||||
}
|
||||
]);
|
||||
}
|
||||
|
||||
public function detail($id)
|
||||
{
|
||||
@@ -134,7 +131,6 @@ class FormVehicleController extends Controller
|
||||
public function store(Request $request)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['forms.vehicle.create']);
|
||||
|
||||
$request->validate([
|
||||
'tanggal' => 'required',
|
||||
'liter' => 'required',
|
||||
@@ -149,27 +145,43 @@ class FormVehicleController extends Controller
|
||||
$tanggal = Carbon::parse($request->tanggal);
|
||||
$startDay = (int) env('STARTING_DATE', 11);
|
||||
$closingDay = (int) env('CLOSING_DATE', 10);
|
||||
|
||||
// Ambil tanggal sekarang untuk tentukan periode berjalan
|
||||
$now = Carbon::now();
|
||||
|
||||
// Tentukan periode input berdasarkan waktu saat ini
|
||||
if ($now->day >= $startDay) {
|
||||
// Periode berjalan dari bulan ini sampai bulan depan
|
||||
$startDate = Carbon::create($now->year, $now->month, $startDay);
|
||||
$closingDate = Carbon::create($now->copy()->addMonth()->year, $now->copy()->addMonth()->month, $closingDay);
|
||||
} else {
|
||||
// Periode berjalan dari bulan lalu sampai bulan ini
|
||||
$startDate = Carbon::create($now->copy()->subMonth()->year, $now->copy()->subMonth()->month, $startDay);
|
||||
$closingDate = Carbon::create($now->year, $now->month, $closingDay);
|
||||
}
|
||||
|
||||
// Validasi apakah tanggal form berada dalam periode input
|
||||
if ($tanggal->lt($startDate) || $tanggal->gt($closingDate)) {
|
||||
session()->flash('error', "Gagal, tanggal tidak berada dalam periode input: {$startDate->format('d M')} - {$closingDate->format('d M')}");
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
$cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang;
|
||||
if($request->total > BudgetHelper::getAvailableBudget($cabang->id)) {
|
||||
// Ambil cabang user
|
||||
$cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()?->cabang;
|
||||
if (!$cabang) {
|
||||
session()->flash('error', 'Data cabang tidak ditemukan.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
// Tentukan periode budget berdasarkan tanggal input (bukan now)
|
||||
if ($tanggal->day >= $startDay) {
|
||||
$periodeDate = Carbon::create($tanggal->year, $tanggal->month, $startDay);
|
||||
} else {
|
||||
$periodeDate = Carbon::create($tanggal->copy()->subMonth()->year, $tanggal->copy()->subMonth()->month, $startDay);
|
||||
}
|
||||
|
||||
$periodeMonth = strtolower($periodeDate->format('F'));
|
||||
$periodeYear = (int) $periodeDate->format('Y');
|
||||
|
||||
// Validasi apakah total nominal melebihi sisa budget
|
||||
$availableBudget = BudgetHelper::getAvailableBudget($cabang->id, $periodeMonth, $periodeYear);
|
||||
if($request->total > $availableBudget) {
|
||||
session()->flash('error', 'Alokasi budget bulanan cabang tidak mencukupi,silahkan ajukan pada periode expense berikutnya');
|
||||
return redirect()->back();
|
||||
}
|
||||
@@ -314,13 +326,36 @@ class FormVehicleController extends Controller
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['forms.vehicle.edit']);
|
||||
$role = auth()->user()->getRoleNames()[0];
|
||||
$form = FormVehicleRunningCost::findOrfail($id);
|
||||
$cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
|
||||
$form = FormVehicleRunningCost::findOrFail($id);
|
||||
|
||||
// Ambil cabang ID dari user yang mengisi form
|
||||
$cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()?->cabang_id;
|
||||
if (!$cabang_id) {
|
||||
session()->flash('error', 'Data cabang tidak ditemukan.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
// Hitung periode berdasarkan tanggal input
|
||||
$tanggal = Carbon::parse($request->tanggal);
|
||||
$startDay = (int) env('STARTING_DATE', 11);
|
||||
|
||||
if ($tanggal->day >= $startDay) {
|
||||
$periodeDate = Carbon::create($tanggal->year, $tanggal->month, $startDay);
|
||||
} else {
|
||||
$periodeDate = Carbon::create($tanggal->copy()->subMonth()->year, $tanggal->copy()->subMonth()->month, $startDay);
|
||||
}
|
||||
|
||||
$periodeMonth = strtolower($periodeDate->format('F'));
|
||||
$periodeYear = (int) $periodeDate->format('Y');
|
||||
|
||||
// Hitung sisa budget
|
||||
$availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
|
||||
|
||||
// Validasi input
|
||||
$request->validate([
|
||||
'tanggal' => 'required',
|
||||
'liter' => 'required',
|
||||
'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget($cabang_id),
|
||||
'total' => 'required|numeric|min:1|max:' . $availableBudget,
|
||||
'jarak' => 'required',
|
||||
'tipe_bensin' => 'required|in:pertalite,pertamax',
|
||||
'nopol' => 'required',
|
||||
@@ -559,16 +594,36 @@ class FormVehicleController extends Controller
|
||||
public function finalApprove($id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['final_approval.approve']);
|
||||
$form = FormVehicleRunningCost::findOrFail($id);
|
||||
|
||||
$form = FormVehicleRunningCost::findOrfail($id);
|
||||
if($form->approved_at == null || $form->approved2_at == null) {
|
||||
if ($form->approved_at === null || $form->approved2_at === null) {
|
||||
session()->flash('error', 'Form must be approved by both approvers before final approval.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
// Check if the total nominal exceeds the available budget
|
||||
$cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
|
||||
if($form->approved_total > BudgetHelper::getAvailableBudget($cabang_id)) {
|
||||
// Ambil cabang_id dari user yang mengisi form
|
||||
$cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()?->cabang_id;
|
||||
if (!$cabang_id) {
|
||||
session()->flash('error', 'Data cabang tidak ditemukan.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
// Hitung periode berdasarkan tanggal form
|
||||
$tanggal = Carbon::parse($form->tanggal);
|
||||
$startDay = (int) env('STARTING_DATE', 11);
|
||||
|
||||
if ($tanggal->day >= $startDay) {
|
||||
$periodeDate = Carbon::create($tanggal->year, $tanggal->month, $startDay);
|
||||
} else {
|
||||
$periodeDate = Carbon::create($tanggal->copy()->subMonth()->year, $tanggal->copy()->subMonth()->month, $startDay);
|
||||
}
|
||||
|
||||
$periodeMonth = strtolower($periodeDate->format('F'));
|
||||
$periodeYear = (int) $periodeDate->format('Y');
|
||||
|
||||
// Hitung sisa budget cabang di periode tersebut
|
||||
$availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
|
||||
if($form->approved_total > $availableBudget) {
|
||||
session()->flash('error', 'Budget cabang untuk periode ini tidak mencukupi, silahkan ajukan pada periode expense berikutnya');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user