diff --git a/src/Project/ProjectStatisticService.php b/src/Project/ProjectStatisticService.php
index de679650..978c30c8 100644
--- a/src/Project/ProjectStatisticService.php
+++ b/src/Project/ProjectStatisticService.php
@@ -168,7 +168,7 @@ class ProjectStatisticService
$qb->expr()->eq('p.budget', 0.0),
$qb->expr()->eq('p.timeBudget', 0)
);
- } else {
+ } elseif (!$query->isBudgetIndependent()) {
$qb->andWhere(
$qb->expr()->orX(
$qb->expr()->gt('p.budget', 0.0),
diff --git a/src/Reporting/ProjectDateRange/ProjectDateRangeForm.php b/src/Reporting/ProjectDateRange/ProjectDateRangeForm.php
index cbd2d5df..83b0d10d 100644
--- a/src/Reporting/ProjectDateRange/ProjectDateRangeForm.php
+++ b/src/Reporting/ProjectDateRange/ProjectDateRangeForm.php
@@ -56,6 +56,7 @@ class ProjectDateRangeForm extends AbstractType
'multiple' => false,
'expanded' => true,
'choices' => [
+ 'label.budgetIndependent' => null,
'label.includeNoBudget' => 'none',
'label.includeBudgetType_full' => 'full',
'label.includeBudgetType_month' => 'month',
diff --git a/src/Reporting/ProjectDateRange/ProjectDateRangeQuery.php b/src/Reporting/ProjectDateRange/ProjectDateRangeQuery.php
index 0e5d8e73..106f390d 100644
--- a/src/Reporting/ProjectDateRange/ProjectDateRangeQuery.php
+++ b/src/Reporting/ProjectDateRange/ProjectDateRangeQuery.php
@@ -26,9 +26,14 @@ final class ProjectDateRangeQuery
* @var Customer|null
*/
private $customer;
-
- private $includeNoWork = true;
- private $budgetType = 'month';
+ /**
+ * @var bool
+ */
+ private $includeNoWork = false;
+ /**
+ * @var string|null
+ */
+ private $budgetType = null;
public function __construct(\DateTime $month, User $user)
{
@@ -36,6 +41,11 @@ final class ProjectDateRangeQuery
$this->user = $user;
}
+ public function isBudgetIndependent(): bool
+ {
+ return $this->budgetType === null;
+ }
+
public function isIncludeNoBudget(): bool
{
return $this->budgetType === 'none';
diff --git a/tests/Controller/Reporting/ProjectDateRangeControllerTest.php b/tests/Controller/Reporting/ProjectDateRangeControllerTest.php
index 59412849..6098e1a6 100644
--- a/tests/Controller/Reporting/ProjectDateRangeControllerTest.php
+++ b/tests/Controller/Reporting/ProjectDateRangeControllerTest.php
@@ -51,6 +51,7 @@ class ProjectDateRangeControllerTest extends ControllerBaseTest
$activities = $this->importFixture($activities);
$timesheets = new TimesheetFixtures();
+ $timesheets->setStartDate(new \DateTime());
$timesheets->setAmount(50);
$timesheets->setActivities($activities);
$timesheets->setUser($this->getUserByRole(User::ROLE_TEAMLEAD));
diff --git a/tests/Reporting/ProjectDateRange/ProjectDateRangeQueryTest.php b/tests/Reporting/ProjectDateRange/ProjectDateRangeQueryTest.php
index c04b29c4..690b3ac8 100644
--- a/tests/Reporting/ProjectDateRange/ProjectDateRangeQueryTest.php
+++ b/tests/Reporting/ProjectDateRange/ProjectDateRangeQueryTest.php
@@ -28,11 +28,12 @@ class ProjectDateRangeQueryTest extends TestCase
self::assertEquals($date->getTimestamp(), $sut->getMonth()->getTimestamp());
self::assertSame($user, $sut->getUser());
self::assertNull($sut->getCustomer());
- self::assertTrue($sut->isIncludeNoWork());
+ self::assertFalse($sut->isIncludeNoWork());
- self::assertEquals('month', $sut->getBudgetType());
+ self::assertNull($sut->getBudgetType());
self::assertFalse($sut->isIncludeNoBudget());
- self::assertTrue($sut->isBudgetTypeMonthly());
+ self::assertFalse($sut->isBudgetTypeMonthly());
+ self::assertTrue($sut->isBudgetIndependent());
}
public function testSetterGetter()
diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf
index 74d5009f..450d46c3 100644
--- a/translations/messages.de.xlf
+++ b/translations/messages.de.xlf
@@ -1221,6 +1221,10 @@
label.includeBudgetType_month
Einträge mit „Monats-Budget“ anzeigen
+
+ label.budgetIndependent
+ Unabhängig vom „Budget-Typ“ anzeigen
+
label.includeBudgetType_full
Einträge mit „Lebenszyklus“-Budget anzeigen
diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf
index 536af04f..e4d10a41 100644
--- a/translations/messages.en.xlf
+++ b/translations/messages.en.xlf
@@ -1221,6 +1221,10 @@
label.includeBudgetType_month
Show entries with "monthly" budget
+
+ label.budgetIndependent
+ Show regardless of "budget-type"
+
label.includeBudgetType_full
Show entries with "life cycle" budget