This commit is contained in:
Jagad R R
2025-06-26 19:47:57 +07:00
parent a286e4c28a
commit c052d8508b
7 changed files with 93 additions and 6 deletions
+87
View File
@@ -276,4 +276,91 @@ class FormHelper
$nominal = $form->sum('approved_total');
return $nominal;
}
public static function getTotalAmount($userIds, $month, $year) {
$monthNumber = date('m', strtotime($month . ' 1'));
$startDate = "$year-$monthNumber-" . env('STARTING_DATE');
$nextMonthTimestamp = strtotime("first day of next month", strtotime("$year-$monthNumber-01"));
$closingDateNextMonth = date('Y-m-', $nextMonthTimestamp) . env('CLOSING_DATE');
$users = Admin::with(['region', 'cabang'])
->whereIn('id', $userIds)
->get();
$formUpCountryQuery = FormUpCountry::select(
'expense_number',
'user_id',
'total',
'approved_total',
'status',
'account_number',
'created_at',
DB::raw("'Up Country' as type")
)->whereIn('user_id', $userIds)
->whereBetween('final_approved_at', [$startDate, $closingDateNextMonth]);
$formVehicleRunningCostQuery = FormVehicleRunningCost::select(
'expense_number',
'user_id',
'total',
'approved_total',
'status',
'account_number',
'created_at',
DB::raw("'Vehicle Running Cost' as type")
)->whereIn('user_id', $userIds)
->whereBetween('final_approved_at', [$startDate, $closingDateNextMonth]);
$formEntertaimentPresentationQuery = FormEntertaimentPresentation::select(
'expense_number',
'user_id',
'total',
'approved_total',
'status',
'account_number',
'created_at',
DB::raw("'Entertainment Presentation' as type")
)->whereIn('user_id', $userIds)
->whereBetween('final_approved_at', [$startDate, $closingDateNextMonth]);
$formMeetingSeminarQuery = FormMeetingSeminar::select(
'expense_number',
'user_id',
'total',
'approved_total',
'status',
'account_number',
'created_at',
DB::raw("'Meeting Seminar' as type")
)->whereIn('user_id', $userIds)
->whereBetween('final_approved_at', [$startDate, $closingDateNextMonth]);
$formOthersQuery = FormOthers::select(
'expense_number',
'user_id',
'total',
'approved_total',
'status',
'account_number',
'created_at',
DB::raw("'Others' as type")
)->whereIn('user_id', $userIds)
->whereBetween('final_approved_at', [$startDate, $closingDateNextMonth]);
// Use union to combine queries
$forms = $formUpCountryQuery
->union($formVehicleRunningCostQuery)
->union($formEntertaimentPresentationQuery)
->union($formMeetingSeminarQuery)
->union($formOthersQuery)
->get();
// Return forms with eager loaded user details
return $forms->map(function ($form) use ($users) {
$user = $users->firstWhere('id', $form->user_id);
$form->user = $user;
return $form;
});
}
}