diff --git a/app/Services/MetricCalculators/PlanCalculator.php b/app/Services/MetricCalculators/PlanCalculator.php index d108b73..f0bf6dc 100644 --- a/app/Services/MetricCalculators/PlanCalculator.php +++ b/app/Services/MetricCalculators/PlanCalculator.php @@ -92,6 +92,9 @@ class PlanCalculator extends BaseMetricService implements MetricCalculatorInterf // чтобы % выполнения учитывал непогашенный долг, а не только текущий период $debtAtPeriodStart = max(0, $cumulativePlanAtStart - $actualToRangeStart); + // Индикатор вывода плана с учетом долга (только если дата начала = началу года) + $isCalculateDebt = $startDate->equalTo($startYear); + // Процент выполнения плана с начала года на дату конца периода $cumulativePercent = $cumulativePlan > 0 ? round($actualYearToDate * 100 / $cumulativePlan) @@ -106,6 +109,7 @@ class PlanCalculator extends BaseMetricService implements MetricCalculatorInterf 'debt_from_year' => $debtFromYearStart, 'actual_year_to_date' => $actualYearToDate, 'cumulative_percent' => $cumulativePercent, + 'is_calculate_debt' => $isCalculateDebt, ]; } diff --git a/resources/js/Pages/Statistic/Components/OutcomeColumn.vue b/resources/js/Pages/Statistic/Components/OutcomeColumn.vue index 743bb38..f9bdb67 100644 --- a/resources/js/Pages/Statistic/Components/OutcomeColumn.vue +++ b/resources/js/Pages/Statistic/Components/OutcomeColumn.vue @@ -23,18 +23,23 @@ const props = defineProps({ debt_from_year: 0, actual_year_to_date: 0, cumulative_percent: 0, + is_calculate_debt: false, }) } }) // План за период + непогашенный долг, накопленный до начала периода const planWithDebt = computed(() => { - return Number(props.plan?.period_plan ?? 0) + Number(props.plan?.debt_at_period_start ?? 0) + const periodPlan = Number(props.plan?.period_plan ?? 0) + const periodDebt = Number(props.plan?.debt_from_year ?? 0) + + return props.plan?.is_calculate_debt ? periodPlan + periodDebt : periodPlan }) -// % выполнения плана за период с учётом долга (иначе долг никак не влияет на оценку) +// % выполнения плана за период с учётом долга const periodPercent = computed(() => { if (!planWithDebt.value) return 0 + return Math.round((Number(props.value) * 100) / planWithDebt.value) }) diff --git a/resources/js/Utils/numbers.js b/resources/js/Utils/numbers.js index daf7728..59e40a1 100644 --- a/resources/js/Utils/numbers.js +++ b/resources/js/Utils/numbers.js @@ -6,7 +6,6 @@ export const percentColor = (number) => { } export const percentType = (number) => { - if (!Number(number)) return if (number >= 90) return 'success' // Хорошо if (number >= 80) return 'warning' // Плохо return 'error' // Ужасно