Вывод плана по суткам
This commit is contained in:
@@ -32,11 +32,8 @@ class PlanCalculator extends BaseMetricService implements MetricCalculatorInterf
|
||||
$startCurrentMonth = $endDate->copy()->startOfMonth()->setHours(9);
|
||||
$currentMonth = $endDate->month;
|
||||
|
||||
// Кол-во календарных месяцев, затронутых выбранным диапазоном (для нормы за период)
|
||||
$monthsInRange = max(
|
||||
1,
|
||||
($endDate->year * 12 + $endDate->month) - ($startDate->year * 12 + $startDate->month) + 1
|
||||
);
|
||||
// Кол-во дней в выбранном диапазоне (для нормы за период — пропорционально дням, а не месяцам)
|
||||
$daysInRange = max(1, $startDate->diffInDays($endDate));
|
||||
|
||||
// Получаем фактические выписки с начала года по прошлый месяц
|
||||
$previousOutcomeMonth = DB::table('report_duties as r')
|
||||
@@ -74,6 +71,9 @@ class PlanCalculator extends BaseMetricService implements MetricCalculatorInterf
|
||||
// План на 1 месяц (равномерно)
|
||||
$oneMonthPlan = $annualPlan > 0 ? ceil($annualPlan / 12) : 0;
|
||||
|
||||
// План на 1 день (равномерно, от годового плана)
|
||||
$dailyPlan = $annualPlan > 0 ? $annualPlan / 365 : 0;
|
||||
|
||||
// ===== БЕЗОПАСНОЕ ПОЛУЧЕНИЕ ЗНАЧЕНИЙ =====
|
||||
// Факт за прошлые месяцы (без текущего)
|
||||
$actualToLastMonth = (int) ($previousOutcomeMonth[$departmentId]->total ?? 0);
|
||||
@@ -105,7 +105,7 @@ class PlanCalculator extends BaseMetricService implements MetricCalculatorInterf
|
||||
$results[$departmentId] = [
|
||||
'year_plan' => $annualPlan,
|
||||
'month_plan' => $oneMonthPlan,
|
||||
'period_plan' => $oneMonthPlan * $monthsInRange, // норма за выбранный период (мес. × кол-во месяцев)
|
||||
'period_plan' => (int) round($dailyPlan * $daysInRange), // норма за выбранный период (дневной план × кол-во дней)
|
||||
'total_debt' => $totalDebt,
|
||||
'current_mouth_dept' => $currentMonthPlanOnly,
|
||||
'cumulative_plan' => $cumulativePlan,
|
||||
|
||||
Reference in New Issue
Block a user