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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user