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.budget', 0.0),
$qb->expr()->eq('p.timeBudget', 0) $qb->expr()->eq('p.timeBudget', 0)
); );
} else { } elseif (!$query->isBudgetIndependent()) {
$qb->andWhere( $qb->andWhere(
$qb->expr()->orX( $qb->expr()->orX(
$qb->expr()->gt('p.budget', 0.0), $qb->expr()->gt('p.budget', 0.0),

View File

@@ -56,6 +56,7 @@ class ProjectDateRangeForm extends AbstractType
'multiple' => false, 'multiple' => false,
'expanded' => true, 'expanded' => true,
'choices' => [ 'choices' => [
'label.budgetIndependent' => null,
'label.includeNoBudget' => 'none', 'label.includeNoBudget' => 'none',
'label.includeBudgetType_full' => 'full', 'label.includeBudgetType_full' => 'full',
'label.includeBudgetType_month' => 'month', 'label.includeBudgetType_month' => 'month',

View File

@@ -26,9 +26,14 @@ final class ProjectDateRangeQuery
* @var Customer|null * @var Customer|null
*/ */
private $customer; private $customer;
/**
private $includeNoWork = true; * @var bool
private $budgetType = 'month'; */
private $includeNoWork = false;
/**
* @var string|null
*/
private $budgetType = null;
public function __construct(\DateTime $month, User $user) public function __construct(\DateTime $month, User $user)
{ {
@@ -36,6 +41,11 @@ final class ProjectDateRangeQuery
$this->user = $user; $this->user = $user;
} }
public function isBudgetIndependent(): bool
{
return $this->budgetType === null;
}
public function isIncludeNoBudget(): bool public function isIncludeNoBudget(): bool
{ {
return $this->budgetType === 'none'; return $this->budgetType === 'none';

View File

@@ -51,6 +51,7 @@ class ProjectDateRangeControllerTest extends ControllerBaseTest
$activities = $this->importFixture($activities); $activities = $this->importFixture($activities);
$timesheets = new TimesheetFixtures(); $timesheets = new TimesheetFixtures();
$timesheets->setStartDate(new \DateTime());
$timesheets->setAmount(50); $timesheets->setAmount(50);
$timesheets->setActivities($activities); $timesheets->setActivities($activities);
$timesheets->setUser($this->getUserByRole(User::ROLE_TEAMLEAD)); $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::assertEquals($date->getTimestamp(), $sut->getMonth()->getTimestamp());
self::assertSame($user, $sut->getUser()); self::assertSame($user, $sut->getUser());
self::assertNull($sut->getCustomer()); 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::assertFalse($sut->isIncludeNoBudget());
self::assertTrue($sut->isBudgetTypeMonthly()); self::assertFalse($sut->isBudgetTypeMonthly());
self::assertTrue($sut->isBudgetIndependent());
} }
public function testSetterGetter() public function testSetterGetter()

View File

@@ -1221,6 +1221,10 @@
<source>label.includeBudgetType_month</source> <source>label.includeBudgetType_month</source>
<target>Einträge mit „Monats-Budget“ anzeigen</target> <target>Einträge mit „Monats-Budget“ anzeigen</target>
</trans-unit> </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"> <trans-unit id="nVulc7." resname="label.includeBudgetType_full">
<source>label.includeBudgetType_full</source> <source>label.includeBudgetType_full</source>
<target>Einträge mit „Lebenszyklus“-Budget anzeigen</target> <target>Einträge mit „Lebenszyklus“-Budget anzeigen</target>

View File

@@ -1221,6 +1221,10 @@
<source>label.includeBudgetType_month</source> <source>label.includeBudgetType_month</source>
<target>Show entries with "monthly" budget</target> <target>Show entries with "monthly" budget</target>
</trans-unit> </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"> <trans-unit id="nVulc7." resname="label.includeBudgetType_full">
<source>label.includeBudgetType_full</source> <source>label.includeBudgetType_full</source>
<target>Show entries with "life cycle" budget</target> <target>Show entries with "life cycle" budget</target>