diff --git a/application/Espo/Core/Export/Xlsx.php b/application/Espo/Core/Export/Xlsx.php index b23da6b3a7..4c9c59a06b 100644 --- a/application/Espo/Core/Export/Xlsx.php +++ b/application/Espo/Core/Export/Xlsx.php @@ -90,6 +90,7 @@ class Xlsx extends \Espo\Core\Injectable $linkDefs = $this->getMetadata()->get(['entityDefs', $entityType, 'links']); if (is_array($linkDefs)) { foreach ($linkDefs as $link => $defs) { + if (empty($defs['type'])) continue; if ($defs['type'] === 'belongsToParent') { $linkList[] = $link; } else if ($defs['type'] === 'belongsTo' && !empty($defs['noJoin'])) { @@ -104,6 +105,15 @@ class Xlsx extends \Espo\Core\Injectable $attributeList[] = $item . 'Name'; } } + + foreach ($fieldList as $field) { + $type = $this->getMetadata()->get(['entityDefs', $entityType, 'fields', $field, 'type']); + if ($type === 'currencyConverted') { + if (!in_array($field, $attributeList)) { + $attributeList[] = $field; + } + } + } } public function process($entityType, $params, $dataList) @@ -221,6 +231,7 @@ class Xlsx extends \Espo\Core\Injectable $defs = $this->getInjection('metadata')->get(['entityDefs', $entityType, 'fields', $name]); if (!$defs) { + $defs = array(); $defs['type'] = 'base'; } $link = null; @@ -244,6 +255,17 @@ class Xlsx extends \Espo\Core\Injectable ->getNumberFormat() ->setFormatCode('[$'.$currencySymbol.'-409]#,##0.00;-[$'.$currencySymbol.'-409]#,##0.00'); } + } else if ($defs['type'] == 'currencyConverted') { + if (array_key_exists($name, $row)) { + $currency = $this->getConfig()->get('baseCurrency'); + $currencySymbol = $this->getMetadata()->get(['app', 'currency', 'symbolMap', $currency], ''); + + $sheet->getStyle("$col$rowNumber") + ->getNumberFormat() + ->setFormatCode('[$'.$currencySymbol.'-409]#,##0.00;-[$'.$currencySymbol.'-409]#,##0.00'); + + $sheet->setCellValue("$col$rowNumber", $row[$name] ? $row[$name] : ''); + } } else if ($defs['type'] == 'personName') { if (!empty($row['name'])) { $sheet->setCellValue("$col$rowNumber", $row['name']); @@ -359,7 +381,8 @@ class Xlsx extends \Espo\Core\Injectable ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT); } else { switch($defs['type']) { - case 'currency': { + case 'currency': + case 'currencyConverted': { } break; case 'int': {