Project date-range report: allow budget-type independent project-listing (#3430)
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user