support multiple invoice repositories (#1084)
This commit is contained in:
@@ -41,9 +41,9 @@ abstract class AbstractSpreadsheetRenderer extends AbstractRenderer
|
||||
$worksheet = $spreadsheet->getActiveSheet();
|
||||
$entries = $model->getCalculator()->getEntries();
|
||||
$replacer = $this->modelToReplacer($model);
|
||||
$timesheetAmount = count($entries);
|
||||
if ($timesheetAmount > 1) {
|
||||
$this->addTemplateRows($worksheet, $timesheetAmount);
|
||||
$invoiceItemCount = count($entries);
|
||||
if ($invoiceItemCount > 1) {
|
||||
$this->addTemplateRows($worksheet, $invoiceItemCount);
|
||||
}
|
||||
|
||||
$worksheet->setTitle($model->getTemplate()->getTitle());
|
||||
@@ -51,13 +51,13 @@ abstract class AbstractSpreadsheetRenderer extends AbstractRenderer
|
||||
$entryRow = 0;
|
||||
|
||||
foreach ($worksheet->getRowIterator() as $row) {
|
||||
$timesheet = $entries[$entryRow];
|
||||
$invoiceItem = $entries[$entryRow];
|
||||
$sheetValues = false;
|
||||
foreach ($row->getCellIterator() as $cell) {
|
||||
$value = $cell->getValue();
|
||||
if (stripos($value, '${entry.') !== false) {
|
||||
if ($sheetValues === false) {
|
||||
$sheetValues = $this->timesheetToArray($timesheet);
|
||||
$sheetValues = $this->invoiceItemToArray($invoiceItem);
|
||||
}
|
||||
$searcher = str_replace('${', '', $value);
|
||||
$searcher = str_replace('}', '', $searcher);
|
||||
@@ -73,7 +73,7 @@ abstract class AbstractSpreadsheetRenderer extends AbstractRenderer
|
||||
}
|
||||
}
|
||||
|
||||
if ($sheetValues !== false && $entryRow < $timesheetAmount - 1) {
|
||||
if ($sheetValues !== false && $entryRow < $invoiceItemCount - 1) {
|
||||
$entryRow++;
|
||||
}
|
||||
}
|
||||
@@ -85,9 +85,10 @@ abstract class AbstractSpreadsheetRenderer extends AbstractRenderer
|
||||
|
||||
/**
|
||||
* @param Worksheet $worksheet
|
||||
* @param int $timesheets
|
||||
* @param int $invoiceItemCount
|
||||
* @throws \PhpOffice\PhpSpreadsheet\Exception
|
||||
*/
|
||||
protected function addTemplateRows(Worksheet $worksheet, int $timesheets)
|
||||
protected function addTemplateRows(Worksheet $worksheet, int $invoiceItemCount)
|
||||
{
|
||||
$startRow = null;
|
||||
$rowCounter = 0;
|
||||
@@ -98,7 +99,7 @@ abstract class AbstractSpreadsheetRenderer extends AbstractRenderer
|
||||
$value = $cell->getValue();
|
||||
if (stripos($value, '${entry.') !== false) {
|
||||
$startRow = $row->getRowIndex();
|
||||
$worksheet->insertNewRowBefore($row->getRowIndex(), $timesheets - 1);
|
||||
$worksheet->insertNewRowBefore($row->getRowIndex(), $invoiceItemCount - 1);
|
||||
break 2;
|
||||
}
|
||||
|
||||
@@ -117,7 +118,7 @@ abstract class AbstractSpreadsheetRenderer extends AbstractRenderer
|
||||
}
|
||||
|
||||
// fill up all new rows with template values
|
||||
$templateRow = $timesheets + $startRow;
|
||||
$templateRow = $invoiceItemCount + $startRow;
|
||||
$iterator = $worksheet->getRowIterator($templateRow - 1, $templateRow);
|
||||
$templateColumns = [];
|
||||
foreach ($iterator->current()->getCellIterator() as $cell) {
|
||||
|
||||
@@ -50,7 +50,7 @@ class DocxRenderer extends AbstractRenderer implements RendererInterface
|
||||
|
||||
$i = 1;
|
||||
foreach ($model->getCalculator()->getEntries() as $entry) {
|
||||
$values = $this->timesheetToArray($entry);
|
||||
$values = $this->invoiceItemToArray($entry);
|
||||
foreach ($values as $search => $replace) {
|
||||
$replace = $xmlEscaper->escape($replace);
|
||||
$replace = str_replace(PHP_EOL, '</w:t><w:br /><w:t xml:space="preserve">', $replace);
|
||||
|
||||
@@ -176,7 +176,17 @@ trait RendererTrait
|
||||
return $values;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 1.3 - will be removed with 2.0
|
||||
*/
|
||||
protected function timesheetToArray(InvoiceItem $invoiceItem): array
|
||||
{
|
||||
@trigger_error('timesheetToArray() is deprecated and will be removed with 2.0', E_USER_DEPRECATED);
|
||||
|
||||
return $this->invoiceItemToArray($invoiceItem);
|
||||
}
|
||||
|
||||
protected function invoiceItemToArray(InvoiceItem $invoiceItem): array
|
||||
{
|
||||
$rate = $invoiceItem->getRate();
|
||||
$hourlyRate = $invoiceItem->getHourlyRate();
|
||||
|
||||
Reference in New Issue
Block a user