added first and last fields for invoices (#3594)

This commit is contained in:
Kevin Papst
2022-10-24 11:46:13 +02:00
committed by GitHub
parent 006de60f66
commit f5b725e32b
4 changed files with 35 additions and 8 deletions

View File

@@ -90,6 +90,27 @@ class InvoiceModelDefaultHydrator implements InvoiceModelHydrator
]);
}
$entries = $model->getEntries();
$min = null;
$max = null;
foreach ($entries as $entry) {
if ($min === null || $min->getBegin()->getTimestamp() > $entry->getBegin()->getTimestamp()) {
$min = $entry;
}
if ($max === null || $max->getBegin()->getTimestamp() < $entry->getBegin()->getTimestamp()) {
$max = $entry;
}
}
if ($min !== null && $max !== null) {
$values = array_merge($values, [
'invoice.first' => $formatter->getFormattedDateTime($min->getBegin()),
'invoice.last' => $formatter->getFormattedDateTime($max->getEnd()),
]);
}
return $values;
}
}

View File

@@ -45,6 +45,8 @@ class InvoiceModelDefaultHydratorTest extends TestCase
'invoice.tax_plain',
'invoice.total_time',
'invoice.duration_decimal',
'invoice.first',
'invoice.last',
'invoice.total',
'invoice.total_nc',
'invoice.total_plain',

View File

@@ -72,6 +72,8 @@ class DebugRendererTest extends TestCase
self::assertEquals($begin->format('m'), $data['model']['query.month_number']);
self::assertEquals($begin->format('d'), $data['model']['query.day']);
// TODO check values or formats?
self::assertEquals('2020.08.12', $data['model']['invoice.first']);
self::assertEquals('2022.10.23', $data['model']['invoice.last']);
}
protected function assertModelStructure(array $model, int $projectCounter = 0, int $activityCounter = 0)
@@ -89,6 +91,8 @@ class DebugRendererTest extends TestCase
'invoice.tax_plain',
'invoice.total_time',
'invoice.duration_decimal',
'invoice.first',
'invoice.last',
'invoice.total',
'invoice.total_nc',
'invoice.total_plain',

View File

@@ -152,8 +152,8 @@ trait RendererTestTrait
->setUser($user2)
->setActivity($activity)
->setProject($project)
->setBegin(new \DateTime())
->setEnd(new \DateTime())
->setBegin(new \DateTime('2020-08-13 14:00:00'))
->setEnd(new \DateTime('2020-08-13 14:06:40'))
->setMetaField((new TimesheetMeta())->setName('foo-timesheet')->setValue('bar-timesheet'))
->setMetaField((new TimesheetMeta())->setName('foo-timesheet2')->setValue('bar-timesheet2')->setIsVisible(true))
;
@@ -166,8 +166,8 @@ trait RendererTestTrait
->setActivity($activity2)
->setDescription('== jhg ljhg ') // make sure that spreadsheets don't render it as formula
->setProject($project2)
->setBegin(new \DateTime())
->setEnd(new \DateTime())
->setBegin(new \DateTime('2020-08-12 18:00:00'))
->setEnd(new \DateTime('2020-08-12 18:30:00'))
->setMetaField((new TimesheetMeta())->setName('foo-timesheet')->setValue('bar-timesheet1')->setIsVisible(true))
;
@@ -198,8 +198,8 @@ trait RendererTestTrait
->setUser((new User())->setUsername('kevin'))
->setActivity($activity)
->setProject($project)
->setBegin(new \DateTime())
->setEnd(new \DateTime())
->setBegin(new \DateTime('2021-03-12 07:13:00'))
->setEnd(new \DateTime('2021-03-12 07:17:40'))
->setDescription(
"foo\n" .
"foo\r\n" .
@@ -291,8 +291,8 @@ trait RendererTestTrait
->setUser($user1)
->setActivity($activity)
->setProject($project)
->setBegin(new \DateTime())
->setEnd(new \DateTime())
->setBegin(new \DateTime('2020-08-12 18:00:00'))
->setEnd(new \DateTime('2022-10-23 18:30:00'))
;
$entries = [$timesheet];