added order-date field to project (#1186)

This commit is contained in:
Kevin Papst
2019-10-24 17:04:21 +02:00
committed by GitHub
parent b4a45afce9
commit 37c6e2c0af
7 changed files with 134 additions and 52 deletions

View File

@@ -36,7 +36,6 @@ class Project implements EntityWithMetaFields
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var Customer
*
@@ -45,7 +44,6 @@ class Project implements EntityWithMetaFields
* @Assert\NotNull()
*/
private $customer;
/**
* @var string
*
@@ -56,7 +54,6 @@ class Project implements EntityWithMetaFields
* @Assert\Length(min=2, max=150)
*/
private $name;
/**
* @var string
*
@@ -64,14 +61,18 @@ class Project implements EntityWithMetaFields
* @Assert\Length(max=20)
*/
private $orderNumber;
/**
* @var \DateTime
*
* @ORM\Column(name="order_date", type="datetime", nullable=true)
*/
private $orderDate;
/**
* @var string
*
* @ORM\Column(name="comment", type="text", nullable=true)
*/
private $comment;
/**
* @var bool
*
@@ -172,32 +173,37 @@ class Project implements EntityWithMetaFields
}
/**
* @deprecated since 1.4
* @deprecated since 1.4, use isVisible() instead
*/
public function getVisible(): bool
{
return $this->visible;
}
/**
* @return string|null
*/
public function getOrderNumber(): ?string
{
return $this->orderNumber;
}
/**
* @param string $orderNumber
* @return Project
*/
public function setOrderNumber($orderNumber): Project
public function setOrderNumber(?string $orderNumber): Project
{
$this->orderNumber = $orderNumber;
return $this;
}
public function getOrderDate(): ?\DateTime
{
return $this->orderDate;
}
public function setOrderDate(?\DateTime $orderDate): Project
{
$this->orderDate = $orderDate;
return $this;
}
/**
* @internal only here for symfony forms
* @return Collection|MetaTableTypeInterface[]

View File

@@ -12,6 +12,7 @@ namespace App\Form;
use App\Entity\Customer;
use App\Entity\Project;
use App\Form\Type\CustomerType;
use App\Form\Type\DateTimePickerType;
use App\Repository\CustomerRepository;
use App\Repository\Query\CustomerFormTypeQuery;
use Symfony\Component\Form\AbstractType;
@@ -58,6 +59,10 @@ class ProjectEditForm extends AbstractType
'label' => 'label.orderNumber',
'required' => false,
])
->add('orderDate', DateTimePickerType::class, [
'label' => 'label.orderDate',
'required' => false,
])
->add('customer', CustomerType::class, [
'query_builder' => function (CustomerRepository $repo) use ($builder, $customer) {
$query = new CustomerFormTypeQuery($customer);

View File

@@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace DoctrineMigrations;
use App\Doctrine\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
/**
* Adds the order_date column to the projects table.
*
* @version 1.5
*/
final class Version20191024100951 extends AbstractMigration
{
public function getDescription(): string
{
return 'Adds the order_date column to the projects table';
}
protected function isSupportingForeignKeys(): bool
{
return false;
}
public function isTransactional(): bool
{
if ($this->isPlatformSqlite()) {
// does fail if we use transactions, as tables are re-created and foreign keys would fail
return false;
}
return true;
}
public function up(Schema $schema): void
{
$projects = $schema->getTable('kimai2_projects');
$projects->addColumn('order_date', 'datetime', ['notnull' => false]);
}
public function down(Schema $schema): void
{
$projects = $schema->getTable('kimai2_projects');
$projects->dropColumn('order_date');
}
}

View File

@@ -24,22 +24,24 @@ class ProjectTest extends TestCase
public function testDefaultValues()
{
$sut = new Project();
$this->assertNull($sut->getId());
$this->assertNull($sut->getCustomer());
$this->assertNull($sut->getName());
$this->assertNull($sut->getOrderNumber());
$this->assertNull($sut->getComment());
$this->assertTrue($sut->getVisible());
$this->assertNull($sut->getFixedRate());
$this->assertNull($sut->getHourlyRate());
$this->assertNull($sut->getColor());
$this->assertEquals(0.0, $sut->getBudget());
$this->assertEquals(0, $sut->getTimeBudget());
$this->assertInstanceOf(Collection::class, $sut->getMetaFields());
$this->assertEquals(0, $sut->getMetaFields()->count());
$this->assertNull($sut->getMetaField('foo'));
$this->assertInstanceOf(Collection::class, $sut->getTeams());
$this->assertEquals(0, $sut->getTeams()->count());
self::assertNull($sut->getId());
self::assertNull($sut->getCustomer());
self::assertNull($sut->getName());
self::assertNull($sut->getOrderNumber());
self::assertNull($sut->getOrderDate());
self::assertNull($sut->getComment());
self::assertTrue($sut->getVisible());
self::assertTrue($sut->isVisible());
self::assertNull($sut->getFixedRate());
self::assertNull($sut->getHourlyRate());
self::assertNull($sut->getColor());
self::assertEquals(0.0, $sut->getBudget());
self::assertEquals(0, $sut->getTimeBudget());
self::assertInstanceOf(Collection::class, $sut->getMetaFields());
self::assertEquals(0, $sut->getMetaFields()->count());
self::assertNull($sut->getMetaField('foo'));
self::assertInstanceOf(Collection::class, $sut->getTeams());
self::assertEquals(0, $sut->getTeams()->count());
}
public function testSetterAndGetter()
@@ -47,35 +49,41 @@ class ProjectTest extends TestCase
$sut = new Project();
$customer = (new Customer())->setName('customer');
$this->assertInstanceOf(Project::class, $sut->setCustomer($customer));
$this->assertSame($customer, $sut->getCustomer());
self::assertInstanceOf(Project::class, $sut->setCustomer($customer));
self::assertSame($customer, $sut->getCustomer());
$this->assertInstanceOf(Project::class, $sut->setName('123456789'));
$this->assertEquals('123456789', (string) $sut);
self::assertInstanceOf(Project::class, $sut->setName('123456789'));
self::assertEquals('123456789', (string) $sut);
$this->assertInstanceOf(Project::class, $sut->setOrderNumber('123456789'));
$this->assertEquals('123456789', $sut->getOrderNumber());
self::assertInstanceOf(Project::class, $sut->setOrderNumber('123456789'));
self::assertEquals('123456789', $sut->getOrderNumber());
$this->assertInstanceOf(Project::class, $sut->setComment('a comment'));
$this->assertEquals('a comment', $sut->getComment());
$dateTime = new \DateTime('-1 year');
self::assertInstanceOf(Project::class, $sut->setOrderDate($dateTime));
self::assertSame($dateTime, $sut->getOrderDate());
self::assertInstanceOf(Project::class, $sut->setOrderDate(null));
self::assertNull($sut->getOrderDate());
$this->assertInstanceOf(Project::class, $sut->setColor('#fffccc'));
$this->assertEquals('#fffccc', $sut->getColor());
self::assertInstanceOf(Project::class, $sut->setComment('a comment'));
self::assertEquals('a comment', $sut->getComment());
$this->assertInstanceOf(Project::class, $sut->setVisible(false));
$this->assertFalse($sut->getVisible());
self::assertInstanceOf(Project::class, $sut->setColor('#fffccc'));
self::assertEquals('#fffccc', $sut->getColor());
$this->assertInstanceOf(Project::class, $sut->setFixedRate(13.47));
$this->assertEquals(13.47, $sut->getFixedRate());
self::assertInstanceOf(Project::class, $sut->setVisible(false));
self::assertFalse($sut->getVisible());
$this->assertInstanceOf(Project::class, $sut->setHourlyRate(99));
$this->assertEquals(99, $sut->getHourlyRate());
self::assertInstanceOf(Project::class, $sut->setFixedRate(13.47));
self::assertEquals(13.47, $sut->getFixedRate());
$this->assertInstanceOf(Project::class, $sut->setBudget(12345.67));
$this->assertEquals(12345.67, $sut->getBudget());
self::assertInstanceOf(Project::class, $sut->setHourlyRate(99));
self::assertEquals(99, $sut->getHourlyRate());
$this->assertInstanceOf(Project::class, $sut->setTimeBudget(937321));
$this->assertEquals(937321, $sut->getTimeBudget());
self::assertInstanceOf(Project::class, $sut->setBudget(12345.67));
self::assertEquals(12345.67, $sut->getBudget());
self::assertInstanceOf(Project::class, $sut->setTimeBudget(937321));
self::assertEquals(937321, $sut->getTimeBudget());
}
public function testMetaFields()
@@ -83,7 +91,7 @@ class ProjectTest extends TestCase
$sut = new Project();
$meta = new ProjectMeta();
$meta->setName('foo')->setValue('bar')->setType('test');
$this->assertInstanceOf(Project::class, $sut->setMetaField($meta));
self::assertInstanceOf(Project::class, $sut->setMetaField($meta));
self::assertEquals(1, $sut->getMetaFields()->count());
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
@@ -91,7 +99,7 @@ class ProjectTest extends TestCase
$meta2 = new ProjectMeta();
$meta2->setName('foo')->setValue('bar')->setType('test2');
$this->assertInstanceOf(Project::class, $sut->setMetaField($meta2));
self::assertInstanceOf(Project::class, $sut->setMetaField($meta2));
self::assertEquals(1, $sut->getMetaFields()->count());
self::assertCount(0, $sut->getVisibleMetaFields());

View File

@@ -868,6 +868,10 @@
<source>label.orderNumber</source>
<target>Bestellnummer</target>
</trans-unit>
<trans-unit id="label.orderDate">
<source>label.orderDate</source>
<target>Bestelldatum</target>
</trans-unit>
<trans-unit id="label.invoice_tax_number">
<source>label.invoice_tax_number</source>
<target>USt-IdNr.:</target>

View File

@@ -868,6 +868,10 @@
<source>label.orderNumber</source>
<target>Order number</target>
</trans-unit>
<trans-unit id="label.orderDate">
<source>label.orderDate</source>
<target>Order date</target>
</trans-unit>
<trans-unit id="label.invoice_tax_number">
<source>label.invoice_tax_number</source>
<target>VAT no.:</target>

Binary file not shown.