improved invoices with new renderer (#306)

* added docx renderer and demo template
* added csv renderer and demo template
* added xlsx renderer and demo template
* added ods renderer and demo template
* added user calculator
* added invoice documentation
This commit is contained in:
Kevin Papst
2018-09-21 01:27:56 +02:00
committed by GitHub
parent b035fc9ebd
commit 53f82a808b
121 changed files with 4094 additions and 770 deletions

View File

@@ -17,7 +17,8 @@ use App\Invoice\NumberGeneratorInterface;
use App\Repository\Query\InvoiceQuery;
/**
* Class InvoiceModel is the ONLY value that a renderer template receives for generating the invoice.
* InvoiceModel is the ONLY value that a RendererInterface receives for generating the invoice,
* besides the InvoiceDocument which is used as a "template".
*/
class InvoiceModel
{
@@ -51,10 +52,20 @@ class InvoiceModel
*/
protected $generator;
/**
* @var \DateTime
*/
protected $invoiceDate;
public function __construct()
{
$this->invoiceDate = new \DateTime();
}
/**
* @return InvoiceQuery
*/
public function getQuery(): InvoiceQuery
public function getQuery(): ?InvoiceQuery
{
return $this->query;
}
@@ -103,7 +114,7 @@ class InvoiceModel
* @param InvoiceTemplate $template
* @return InvoiceModel
*/
public function setTemplate($template)
public function setTemplate(InvoiceTemplate $template)
{
$this->template = $template;
@@ -132,8 +143,12 @@ class InvoiceModel
/**
* @return \DateTime
*/
public function getDueDate(): \DateTime
public function getDueDate(): ?\DateTime
{
if (null === $this->getTemplate()) {
return null;
}
return new \DateTime('+' . $this->getTemplate()->getDueDays() . ' days');
}
@@ -142,7 +157,7 @@ class InvoiceModel
*/
public function getInvoiceDate(): \DateTime
{
return new \DateTime();
return $this->invoiceDate;
}
/**
@@ -160,7 +175,7 @@ class InvoiceModel
/**
* @return NumberGeneratorInterface
*/
public function getNumberGenerator(): NumberGeneratorInterface
public function getNumberGenerator(): ?NumberGeneratorInterface
{
return $this->generator;
}
@@ -180,7 +195,7 @@ class InvoiceModel
/**
* @return CalculatorInterface
*/
public function getCalculator(): CalculatorInterface
public function getCalculator(): ?CalculatorInterface
{
return $this->calculator;
}

View File

@@ -10,7 +10,7 @@
namespace App\Model\Statistic;
/**
* Yearly statistics
* Monthly statistics
*/
class Month
{
@@ -28,11 +28,14 @@ class Month
protected $totalRate = 0;
/**
* Month constructor.
* @param string $month
*/
public function __construct($month)
public function __construct(string $month)
{
$monthNumber = (int) $month;
if ($monthNumber < 1 || $monthNumber > 12) {
throw new \InvalidArgumentException('Invalid month given, expected 01-12 but given: ' . $monthNumber);
}
$this->month = $month;
}

View File

@@ -21,7 +21,7 @@ class Year
/**
* @var Month[]
*/
protected $months;
protected $months = [];
/**
* Year constructor.
@@ -52,10 +52,10 @@ class Year
}
/**
* @param $month
* @param int $month
* @return null|Month
*/
public function getMonth($month)
public function getMonth(int $month)
{
if (isset($this->months[$month])) {
return $this->months[$month];