PMCORE-530

This commit is contained in:
Andrea Adamczyk
2020-09-16 14:54:29 -04:00
parent ea071649d8
commit 6d507bdbe9
3 changed files with 66 additions and 2 deletions

View File

@@ -396,6 +396,7 @@ class AdditionalTables extends BaseAdditionalTables
public function getAllData($sUID, $start = null, $limit = null, $keyOrderUppercase = true, $filter = '', $appUid = false, $search = '')
{
$conf = Bootstrap::getSystemConfiguration();
$addTab = new AdditionalTables();
$aData = $addTab->load($sUID, true);
if (!isset($_SESSION['PROCESS'])) {
@@ -429,7 +430,17 @@ class AdditionalTables extends BaseAdditionalTables
foreach ($aData['FIELDS'] as $aField) {
$field = '$oCriteria->addSelectColumn(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ');';
if (in_array($aField['FLD_TYPE'], $types)) {
$field = '$oCriteria->addAsColumn("' . $aField['FLD_NAME'] . '", "round(" . ' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ' . ", ' . ($aField['FLD_TYPE'] == 'DOUBLE' ? '8' : '2') . ')");';
if ($aField['FLD_TYPE'] == 'DECIMAL' || $aField['FLD_TYPE'] == 'REAL') {
$round = '", "" . ' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ' . "");';
} else {
$double = $this->validateParameter($conf['report_table_double_number'], 1, 8, 4);
$float = $this->validateParameter($conf['report_table_floating_number'], 1, 5, 4);
$round = '", "round(" . ' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ' . ", ' . ($aField['FLD_TYPE'] == 'DOUBLE' ? $double : $float) . ')");';
}
$field = '$oCriteria->addAsColumn("' . $aField['FLD_NAME'] . $round;
}
eval($field);
}
@@ -540,6 +551,29 @@ class AdditionalTables extends BaseAdditionalTables
return array('rows' => $rows, 'count' => $count);
}
/**
* Validate report table double and float configuration values
*
* @param int $number
* @param int $min
* @param int $max
* @param int $default
*
* @return int
*/
public function validateParameter($number, $min, $max, $default) {
if (!is_numeric($number)) {
$result = $default;
} elseif ($number > $max) {
$result = $max;
} elseif ($number < $min) {
$result = $min;
} else {
$result = $number;
}
return $result;
}
public function checkClassNotExist($sUID)
{
try {