support multiple invoice repositories (#1084)

This commit is contained in:
Kevin Papst
2019-09-04 22:50:53 +02:00
committed by GitHub
parent 3f27ab1e44
commit 3ea05cb705
29 changed files with 323 additions and 144 deletions

View File

@@ -9,16 +9,16 @@
namespace App\Invoice\Calculator;
use App\Entity\Timesheet;
use App\Invoice\CalculatorInterface;
use App\Invoice\InvoiceItem;
use App\Invoice\InvoiceItemInterface;
/**
* An abstract calculator that sums up the timesheet records.
* An abstract calculator that sums up the invoice item records.
*/
abstract class AbstractSumInvoiceCalculator extends AbstractMergedCalculator implements CalculatorInterface
{
abstract protected function calculateSumIdentifier(Timesheet $timesheet): string;
abstract protected function calculateSumIdentifier(InvoiceItemInterface $invoiceItem): string;
/**
* @return InvoiceItem[]
@@ -45,15 +45,15 @@ abstract class AbstractSumInvoiceCalculator extends AbstractMergedCalculator imp
if (!isset($invoiceItems[$id])) {
$invoiceItems[$id] = new InvoiceItem();
}
$timesheet = $invoiceItems[$id];
$this->mergeTimesheets($timesheet, $entry);
$this->mergeSumTimesheet($timesheet, $entry);
$invoiceItem = $invoiceItems[$id];
$this->mergeInvoiceItems($invoiceItem, $entry);
$this->mergeSumTimesheet($invoiceItem, $entry);
}
return array_values($invoiceItems);
}
protected function mergeSumTimesheet(InvoiceItem $invoiceItem, Timesheet $entry)
protected function mergeSumTimesheet(InvoiceItem $invoiceItem, InvoiceItemInterface $entry)
{
// allows to set values per calculator after merging the timesheet
}