entity = $entity; } public function getEntity(): EntityWithBudget { return $this->entity; } public function getStatistic(): ?BudgetStatistic { return $this->statistic; } public function setStatistic(BudgetStatistic $statistic) { $this->statistic = $statistic; } public function getStatisticTotal(): ?BudgetStatistic { return $this->statisticTotal; } public function setStatisticTotal(BudgetStatistic $statistic) { $this->statisticTotal = $statistic; } public function hasTimeBudget(): bool { return $this->entity->hasTimeBudget(); } public function getTimeBudget(): int { return $this->entity->getTimeBudget(); } public function isMonthlyBudget(): bool { return $this->entity->isMonthlyBudget(); } public function getDurationBillable(): int { if ($this->isMonthlyBudget()) { if ($this->statistic === null) { return 0; } return $this->statistic->getDurationBillable(); } if ($this->statisticTotal === null) { return 0; } return $this->statisticTotal->getDurationBillable(); } public function getTimeBudgetOpen(): int { $value = $this->getTimeBudget() - $this->getTimeBudgetSpent(); return $value > 0 ? $value : 0; } public function getTimeBudgetSpent(): int { return $this->getDurationBillable(); } public function hasBudget(): bool { return $this->entity->hasBudget(); } public function getBudget(): float { return $this->entity->getBudget(); } public function getBudgetOpen(): float { $value = $this->getBudget() - $this->getBudgetSpent(); return $value > 0 ? $value : 0; } public function getBudgetSpent(): float { return $this->getRateBillable(); } public function getRateBillable(): float { if ($this->isMonthlyBudget()) { if ($this->statistic === null) { return 0.00; } return $this->statistic->getRateBillable(); } if ($this->statisticTotal === null) { return 0.00; } return $this->statisticTotal->getRateBillable(); } public function getRate(): float { if ($this->isMonthlyBudget()) { if ($this->statistic === null) { return 0.00; } return $this->statistic->getRate(); } if ($this->statisticTotal === null) { return 0.00; } return $this->statisticTotal->getRate(); } public function getDuration(): int { if ($this->isMonthlyBudget()) { if ($this->statistic === null) { return 0; } return $this->statistic->getDuration(); } if ($this->statisticTotal === null) { return 0; } return $this->statisticTotal->getDuration(); } public function getInternalRate(): float { if ($this->isMonthlyBudget()) { if ($this->statistic === null) { return 0.00; } return $this->statistic->getInternalRate(); } if ($this->statisticTotal === null) { return 0.00; } return $this->statisticTotal->getInternalRate(); } }