added internal rates (#1591)

This commit is contained in:
Kevin Papst
2020-04-08 14:50:15 +02:00
committed by GitHub
parent 82c713031e
commit 68d703d1e3
128 changed files with 4044 additions and 1571 deletions

View File

@@ -70,6 +70,7 @@ abstract class AbstractSpreadsheetRenderer
'end' => [],
'duration' => [],
'rate' => [],
'rate_internal' => [],
'user' => [],
'customer' => [],
'project' => [],
@@ -226,6 +227,20 @@ abstract class AbstractSpreadsheetRenderer
};
}
if ($showRates && isset($columns['rate_internal']) && !isset($columns['rate_internal']['render'])) {
$columns['rate_internal']['render'] = function (Worksheet $sheet, int $row, int $column, ExportItemInterface $entity) {
$currency = '';
if (null !== $entity->getProject()) {
$currency = $entity->getProject()->getCustomer()->getCurrency();
}
$rate = $entity->getRate();
if (method_exists($entity, 'getInternalRate')) {
$rate = $entity->getInternalRate();
}
$this->setRate($sheet, $column, $row, $rate, $currency);
};
}
if (isset($columns['user']) && !isset($columns['user']['render'])) {
$columns['user']['render'] = function (Worksheet $sheet, int $row, int $column, ExportItemInterface $entity) {
$user = '';
@@ -468,7 +483,7 @@ abstract class AbstractSpreadsheetRenderer
}
if (!$showRates) {
$removes = ['rate', 'fixedRate', 'hourlyRate'];
$removes = ['rate', 'fixedRate', 'hourlyRate', 'rate_internal'];
foreach ($removes as $removeMe) {
if (array_key_exists($removeMe, $columns)) {
unset($columns[$removeMe]);
@@ -514,6 +529,7 @@ abstract class AbstractSpreadsheetRenderer
$durationColumn = null;
$rateColumn = null;
$internalRateColumn = null;
foreach ($exportItems as $exportItem) {
$entryHeaderColumn = 1;
@@ -523,6 +539,8 @@ abstract class AbstractSpreadsheetRenderer
$durationColumn = $entryHeaderColumn;
} elseif ($label === 'rate') {
$rateColumn = $entryHeaderColumn;
} elseif ($label === 'rate_internal') {
$internalRateColumn = $entryHeaderColumn;
}
if (!array_key_exists('render', $settings) || !is_callable($settings['render'])) {
@@ -554,6 +572,15 @@ abstract class AbstractSpreadsheetRenderer
$style->getFont()->setBold(true);
}
if (null !== $internalRateColumn) {
$startCoordinate = $sheet->getCellByColumnAndRow($internalRateColumn, 2)->getCoordinate();
$endCoordinate = $sheet->getCellByColumnAndRow($internalRateColumn, $entryHeaderRow - 1)->getCoordinate();
$this->setRateTotal($sheet, $internalRateColumn, $entryHeaderRow, $startCoordinate, $endCoordinate);
$style = $sheet->getStyleByColumnAndRow($internalRateColumn, $entryHeaderRow);
$style->getBorders()->getTop()->setBorderStyle(Border::BORDER_THIN);
$style->getFont()->setBold(true);
}
return $spreadsheet;
}