Project date-range report: allow budget-type independent project-listing (#3430)

This commit is contained in:
Kevin Papst
2022-07-22 12:27:53 +02:00
committed by GitHub
parent 0dba83d8e9
commit e2ac6a0b17
7 changed files with 28 additions and 7 deletions

View File

@@ -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),

View File

@@ -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',

View File

@@ -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';

View File

@@ -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));

View File

@@ -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()

View File

@@ -1221,6 +1221,10 @@
<source>label.includeBudgetType_month</source>
<target>Einträge mit „Monats-Budget“ anzeigen</target>
</trans-unit>
<trans-unit id="Wq.h4adsfsdfnD" resname="label.budgetIndependent">
<source>label.budgetIndependent</source>
<target>Unabhängig vom „Budget-Typ“ anzeigen</target>
</trans-unit>
<trans-unit id="nVulc7." resname="label.includeBudgetType_full">
<source>label.includeBudgetType_full</source>
<target>Einträge mit „Lebenszyklus“-Budget anzeigen</target>

View File

@@ -1221,6 +1221,10 @@
<source>label.includeBudgetType_month</source>
<target>Show entries with "monthly" budget</target>
</trans-unit>
<trans-unit id="Wq.h4adsfsdfnD" resname="label.budgetIndependent">
<source>label.budgetIndependent</source>
<target>Show regardless of "budget-type"</target>
</trans-unit>
<trans-unit id="nVulc7." resname="label.includeBudgetType_full">
<source>label.includeBudgetType_full</source>
<target>Show entries with "life cycle" budget</target>